25P by neo 2일전 | favorite | 댓글과 토론

이 문서는 누구를 위한 것인가?

  • Post-Trained LLM의 프롬프트 작성 능력을 향상시키고자 하는 사람들을 위한 문서
  • 기술적 배경이 부족하더라도, 기본적인 LLM 사용 경험이 있는 사람을 대상으로 함
  • 전반부: 사후 학습과 프롬프트에 대한 직관적 이해를 제공
  • 후반부: 구체적인 프롬프트 작성 절차 및 팁 제공

왜 튜닝 가이드가 필요한가?

  • LLM 프롬프트 작성은 경험적이고 지속적으로 학습과 수정이 필요한 작업
  • 이 문서는 효과적인 프롬프트 작성 전략을 체계적으로 공유하고자 함
  • Gemini와 같은 후교육 모델을 중심으로 작성되었으나 다른 모델에도 적용 가능

Pre-Training vs. Post-Training

사전학습 (Pre-training)

  • 사전학습의 개념
    • 사전학습은 딥러닝에서 오래된 개념으로, 작은 데이터셋(A)과 비슷하지만 훨씬 더 큰 데이터셋(B)을 활용해 일반적인 특징을 먼저 학습한 후, A 데이터셋에서 세부 조정을 하는 방법임.
    • 예시로는 소량의 유방촬영 데이터셋(A)과 인터넷에서 수집된 대규모 자연 이미지 데이터셋(B)을 생각할 수 있음.
  • 사전학습의 절차
    1. 큰 데이터셋(B)에서 모델을 학습해 일반적인 유용한 특징을 학습함.
    2. 이후, 모델을 A 데이터셋에 맞게 미세 조정하여 A에서 더 나은 성능을 얻음.
    3. 구체적으로, B 데이터셋에서 물체 분할이나 이미지 내 위치에 관계없이 개념을 인식하는 기본 기술을 학습한 후, 이를 기반으로 A 데이터셋의 특정 기술을 추가 학습하는 방식임.
  • 사전학습의 필요성
    • B 데이터셋을 통해 학습하지 않으면, A 데이터셋만으로는 일반적인 기술을 학습하기에 데이터가 부족하여 성능이 떨어질 수 있음.
    • B 데이터셋에서 일반적인 기술을 학습한 모델은 A 데이터셋에서 제한된 데이터를 사용해 전문화된 기술만 추가로 학습하면 됨.
  • LLM(대규모 언어 모델)의 사례
    • LLM의 사전학습은 인터넷 텍스트의 "다음 단어를 예측하는 작업"을 수행함으로써 이루어짐.
    • 이 과정에서 모델은 웹에 반영된 세상의 구조를 암묵적으로 학습함.
  • 인터넷과 세상의 반영
    • 인터넷이 어떤 세상을 반영하는지에 대한 질문은 중요하며, 이를 이해하기 위해 '시네마틱 유니버스'라는 비유를 사용할 수 있음.

사전학습의 '시네마틱 유니버스' 직관

  • 텍스트와 세상의 묘사
    • 대규모 언어 모델(LLM)은 텍스트를 통해 세상을 학습함.
    • 텍스트는 반드시 "진실"만을 반영해야 하는 제약을 가지지 않음.
    • 허위정보나 잘못된 진술 외에도, 텍스트가 단일한 객관적 현실만을 반영하지 않는 이유는 다양함.
  • 예시: 아라고른과 곤도르
    • "아라고른은 결국 곤도르의 왕이 된다"는 문장이 진실인지 여부는 문맥과 전제에 따라 달라짐.
      • "반지의 제왕" 시네마틱 유니버스: 진실로 간주될 수 있음.
      • "마블 시네마틱 유니버스" 또는 현실: 아라고른과 곤도르는 허구적 존재이므로 진실이 아님.
  • 진실의 기준
    • 진술이 진실인지 여부는 "어떤 세계"를 전제로 하느냐에 따라 달라짐.
    • 이는 철학적·언어학적 논의의 오랜 주제이며, 진리에 대한 자세한 개요는 이 링크에서 확인 가능함.
    • 실용적으로는, "진술이 진실인지 아닌지는 그 진술이 배경으로 삼는 시네마틱 유니버스에 따라 달라진다"는 개념으로 단순화 가능함.
  • 사전학습 데이터와 시네마틱 유니버스
    • 사전학습 코퍼스는 인간 문화가 만든 다양한 시네마틱 유니버스의 합집합에 가까움.
    • 정확히는, 사전학습 데이터 소스(예: 웹)에 크게 기여한 문화들의 집합임.

중요
사전학습 코퍼스는 인간 문화가 만든 시네마틱 유니버스의 합집합으로 간주 가능하며, 특히 웹과 같은 데이터 소스에 크게 기여한 문화를 반영함.

  • 모델의 맥락 이해
    • LLM은 주어진 맥락(즉, 프리픽스)을 기반으로 어떤 "유니버스"에 있는지 추론함.
    • 이후 해당 유니버스의 규칙, 관습, 사실에 따라 행동함.
    • 강한 맥락 신호가 있는 프롬프트는 모델이 "스크립트"를 이해하기 쉽게 함.
      • 예: 뉴욕에 대한 블로그 글의 시작 ("꿈이 이루어지는 콘크리트 정글은 단순한 가사가 아니라 뉴욕의 전기 같은 진실이다...")
    • 반면, "Hi, how are you?"처럼 맥락이 약한 프롬프트는 모델이 어떤 유니버스에 있는지 판단하기 어려움.
      • 이와 같은 일반적인 표현은 다양한 코퍼스에 걸쳐 등장하므로 여러 가능성을 열어둠.
  • 사후학습(Post-training)의 역할
    • 맥락이 부족한 경우, 모델이 보다 구체적이고 일관된 출력을 생성할 수 있도록 사후학습이 중요하게 작용함.

사후학습 (Post-training)

  • 사후학습의 역할
    • 사후학습은 LLM이 기본적으로 작동하는 "디폴트 유니버스"에 대한 지침을 제공함.
    • 프롬프트만으로 유니버스를 추론하는 대신, 사후학습을 통해 특정 가정을 고정하거나 모호성을 일관되게 해결하도록 제약을 설정함.
    • 이는 모델의 유용성을 높이는 데 필요하며, 예를 들어 LLM에게 기본적으로 "사용자 지시를 따르는 것"을 가르치는 데 유용함.
  • 사후학습의 중요성
    • 사후학습이 없으면, "조지 워싱턴에 대한 보고서를 작성하라"라는 지시가 단순히 그 지시를 이어가는 텍스트를 생성하는 식으로 오작동할 수 있음.
    • 사후학습은 모델의 기본 동작을 사회적 규범과 일치시키는 데 도움을 줄 수 있음.
    • 이를 통해 모델이 더 안전하고 생산적인 도구가 되도록 지원함.

중요
사후학습은 다양한 배포 환경에서 모델이 일관되고 기본적인 역할을 수행하도록 가르침.

  • 사후학습에서 학습할 수 있는 내용
    • 사후학습 중 모델이 학습할 수 있는 내용은 실용적이고 구체적인 것부터 주관적이고 개인적인 것까지 다양함.
  • 사후학습에서 가르칠 수 있는 주요 내용
    • 특정 형식을 따르는 방법
      • 예: Gemma's Formatter에서는 모델이 항상 사용자와 대화를 나누는 시네마틱 유니버스에서 동작한다고 가정함.
      • 이 시나리오에서 모델은 시스템 지시에 따라 행동하며, 대화는 항상 인간 사용자의 턴으로 시작됨.
    • 사용자의 지시를 따르는 방법
      • 예: "강아지에 대한 에세이를 작성하라"는 요청에 대해 실제로 에세이를 작성해야 함.
      • 사용자의 요청을 무시하고 다른 방식으로 응답하지 않도록 사후학습을 통해 학습 가능.
    • “현실 세계”와의 일치
      • 모델의 디폴트 시네마틱 유니버스를 사용자들이 주로 관심을 가질 "현실 세계"로 맞추는 데 활용됨.
      • 예: "유명인 $CELEBRITY는 어디에서 태어났나?"라는 질문에 대해, 팬 픽션 세계가 아닌 현실 세계의 정보를 기본으로 가정함.
    • 안전성 강화
      • 인터넷은 다양한 규범적 기준을 포함하며, 일부 콘텐츠는 상업적 배포 환경에서 부적합할 수 있음.
      • 사후학습은 모델이 특정 안전 정책에 맞춰 조정되도록 도움을 주며, 생성 내용에 대한 규범적 기준을 설정함.
      • 이는 모델이 복잡한 텍스트를 생성할 때 필수적인 규범적 가정을 내포하도록 함.
  • 결론
    • 사후학습은 모델이 다양한 사용 환경에서 기대에 부합하는 동작을 일관되게 수행하도록 지원함.
    • 모델의 유용성과 안전성을 극대화하는 데 필수적인 과정임.

사후학습 데이터 수집

  • 핵심 요약
    • 사후학습 중 LLM은 인간 평가자들이 만든 데이터를 기반으로 학습되고 평가됨.
    • 사후학습 중 모델은 "디지털 역할 연기자"로서 데이터를 생성한 인간 평가자를 역할 모델로 삼음.
  • 사후학습 데이터 수집 과정
    • 다양한 입력 예제 데이터셋 생성
      • LLM이 수행할 수 있는 작업을 묘사한 프롬프트 모음 생성 (예: JSON으로 데이터 재구성, 결혼식 계획 지원 등).
      • 이 데이터는 개발자의 직관이나 인간 평가자가 제안한 아이디어를 기반으로 생성될 수 있음.
    • 인간 평가자 모집
      • 평가자의 역할: 입력 예제에 대해 "정답" 작성 또는 모델의 응답을 순위별로 평가.
      • 모델 학습 단계에 따라 평가자는 다른 유형의 데이터를 생성함.
    • 평가 지침 작성
      • 평가자가 작업을 잘 이해할 수 있도록 예제와 세부 지침 제공.
    • 데이터 수집 및 사후학습 수행
      • 수집된 데이터를 사전학습 모델에 활용하여 사후학습 진행.
    • 모델 배포
      • 사후학습 완료 후 모델을 실제 환경에 배포.
  • 사후학습의 영향
    • LLM이 인간처럼 행동할 수 있는 이유 중 하나는 신중하게 수집된 인간 행동 데이터셋을 학습했기 때문임.
    • 사전학습은 모델의 핵심 역량을 구축하며, 사후학습은 모델의 행동 방향을 인간 시연을 통해 조정함.

중요
LLM이 인간처럼 행동할 수 있는 이유는 신중하게 수집된 인간 행동 데이터를 학습했기 때문임.

  • 사후학습 데이터 수집의 도전 과제
    • 반복적인 작업의 단조로움
      • 평가 작업은 지루할 수 있음. 예를 들어, 뛰어난 파이썬 프로그래머는 자신의 프로젝트를 진행하는 것이 더 흥미로울 수 있음.
      • 시인은 자신의 시를 쓰는 것을 선호하며, AI가 생성한 시를 평가하는 데 흥미를 느끼지 않을 가능성이 큼.
      • 평가자는 작업 반복성, 데이터 소유권에 대한 부족한 통제, 작업의 사회적 의미 결여 등으로 동기 저하를 경험할 수 있음.
    • "좋은" 응답 정의의 어려움
      • 작업의 "좋은" 응답을 정의하는 것은 복잡함.
      • 좋은 작문, 사실성, 사회적 현실의 복잡성을 반영하는 작업의 기준을 명확히 하기 어려움.
      • 법 체계에서 판례를 통해 에지 케이스를 해결하듯, 이러한 문제는 주관성과 맥락에 크게 의존함.
    • 평가자의 작업 이해 부족
      • 평가자가 작업을 제대로 이해하지 못할 가능성이 있음.
      • 잘못된 기술 수준의 평가자를 채용하거나 평가자가 자신의 한계를 인지하지 못하는 경우 발생.
      • 예: 생물학 질문에 대해 오래된 대학 지식을 바탕으로 잘못된 응답 작성.
    • 인간의 실수
      • 인간은 실수를 함. 교수는 잘못된 답안을 포함한 시험 문제를 낼 수 있고, 의사는 피로 상태에서 오진 가능성이 높음.
      • 인간 평가 데이터의 품질이 완벽하지 않기 때문에 AI 시스템도 종종 잘못된 데이터를 학습할 가능성이 있음.
  • 결론
    • 사후학습 데이터 수집은 모델 품질에 중요한 역할을 하지만, 데이터 품질 보장을 위한 많은 노력이 필요함.
    • 정확하고 신뢰할 수 있는 데이터를 얻기 위해 평가자와 작업 간의 적합성을 보장하는 것이 중요함.

프롬프트 작성

  • 핵심 요약
    • 시스템 지시문과 프롬프트를 작성할 때, 이는 사후학습 팀의 평가자 집단의 "집합적 정신"을 염두에 두고 작성해야 함.
    • 평가자들이 이해하고 충실히 따를 수 있는 지시를 작성하면 모델도 이를 더 잘 따를 가능성이 높음.

중요
시스템 지시문과 프롬프트는 사후학습 팀의 평가자 집단의 집합적 정신을 반영하여 작성해야 함.

프롬프트 작성시 주요 고려사항

  • 명확하고 간결하며 명시적인 지시인지 확인

    • 예: 파이썬 코드를 생성하는 지시라면, 무작위로 선택된 숙련된 파이썬 프로그래머가 지시를 읽고 바로 이해할 수 있어야 함.
      • 나쁨: "Write a Python function that computes prime numbers."
      • 좋음: "Write a Python function that computes prime numbers from 1 to 100. Include pytype annotations for the function and use 2-space indentation."
  • 지시가 모순되거나 따르기 어려운지 확인

    • 사람이 피곤하거나 배고플 때도 지시를 충실히 따를 수 있도록 간결하고 직관적으로 작성해야 함.
      • 나쁨: "Don’t write a story about a mean dog, unless it's friendly, and also sad..."
      • 좋음: "Write a short story (200-300 words) about a loyal golden retriever named Buddy..."
  • 지시가 너무 많은가?

    • 모델은 길고 복잡한 지시를 모두 따르기 어려울 수 있음. 가능한 경우 작업을 하위 작업으로 나누는 것이 좋음.
      • 나쁨: "Read each article and, for each key idea, rate it on a scale of 1-10..."
      • 좋음: 하위 작업으로 나눔: 1) 주요 아이디어 목록 생성, 2) 각 아이디어 평가, 3) 상위 아이디어 번역, 4) 소셜 미디어용 게시물 생성.
  • 긍정적 지시 사용

    • "하지 말아야 할 것"을 지시하기보다 "해야 할 것"을 명시하는 것이 효과적임.
      • 나쁨: "Don’t ever end your response with a full stop."
      • 좋음: "Your response should always end with an exclamation mark or a question mark."
  • 모델에 대한 "리마인더" 역할의 지시

    • 다양한 입력 예제를 고려하여 명확하지 않은 경우에 대한 추가적인 지침을 제공함.
    • 예: "추가 고려사항" 또는 "추가 가정" 섹션에 에지 케이스를 명확히 설명.
  • 프롬프트는 새로운 하이퍼파라미터

    • 프롬프트의 품질은 시스템 성능에 큰 영향을 미침. "최적의" 프롬프트를 찾는 것은 불가능하지만, 점진적으로 더 나은 프롬프트를 찾기 위한 실험은 중요함.
  • "모르겠다"는 응답 지시

    • "알 수 없음" 또는 "모호한 경우"에 대한 명시적 지침을 제공하여 모델이 잘못된 응답 대신 명확히 모호함을 표시하도록 유도.
  • 프롬프트와 체크포인트의 밀접한 연계

    • 프롬프트는 특정 모델 체크포인트와 깊이 연계됨. 새로운 모델 버전에서는 동일한 프롬프트가 다르게 작동할 수 있음.

프롬프트 스타일 가이드(기초)

  • 마크다운 사용 고려 : 각 프롬프트를 별도의 마크다운 파일에 저장하고, 제목 및 섹션을 잘 구성하여 가독성을 높임.
  • 다른 사용자에 대한 고려 : 프롬프트는 모델뿐만 아니라 유지보수 담당자를 위해 작성되어야 함.
  • 단순성 유지 : 프롬프트가 길거나 복잡하면 모델 변경 시 유지보수 부담이 증가할 수 있음. 간결하고 명확하게 작성할 것.
  • 제로샷 지시 선호 : 제로샷 지시는 간단하고 디버깅 및 이해가 용이함. 몇 샷(few-shot)은 마지막 수단으로 사용.
  • 예제 통합 : "For example"과 같은 방식으로 지시문에 예제를 자연스럽게 포함시키는 것이 좋음.
    • 예: "Always start your response to the user with something passive aggressive. For example, start with something like 'Oh that’s what you want? ...'"

새로운 시스템 지시문 반복 개선 절차

  • 프롬프트 개발은 반복적 과정
    • 프롬프트 작성은 검증 데이터셋을 사용해 모델을 훈련하는 과정과 유사함.
    • 명확하고 간결한 문장 작성이 핵심이며, 생성과 편집 단계를 분리하여 접근하는 것이 효과적임.
  • 검증 데이터셋 없이 시작 가능
    • 초기에는 간단한 MVP(Minimum Viable Product)를 빠르게 구축하며, 나중에 정량적 평가를 통해 성능을 추적해야 함.
    • 예상치 못한 모델 동작에도 제품이 안정적으로 작동하도록 설계가 중요함.

시스템 지시문 반복 절차

  1. 다양한 입력 예제 준비
  • 문제를 잘 나타내는 약 10~50개의 다양한 입력 예제를 수집.
  • 원하는 출력 행동에 대한 직관을 형성.
  1. 간단한 지시문으로 시작
  • 가능한 한 간단하고 명확한 지시문을 작성.
  • 예산이 적은 모델(예: Gemini Flash 8B)을 먼저 사용.
  1. 첫 번째 입력 예제에 실행
  • 모델이 적절한 응답을 생성하도록 테스트.
  1. 첫 번째 예제에 과적합
  • 모델의 응답에서 발견된 특정 결함을 해결하기 위해 지시문에 "리마인더" 추가.
  • 예: 사람 이름만 추출해야 하는데 건물 이름도 포함될 경우, 지시문에 이를 명시적으로 언급.
  1. 다음 예제로 이동
  • 다른 입력 예제에서도 지시문이 효과적인지 테스트.
  • 첫 번째 예제에 과도하게 맞춘 지시가 있다면 이를 조정하여 보다 일반화.
  1. 지시문 정리
  • 모든 입력 예제에서 작동하는 지시문을 만든 후, 문장을 정리하고 철자 오류 수정.
  • 정리된 지시문이 여전히 모든 예제에서 작동하는지 확인.
  1. 자동화 가능성
  • 미래에는 메타 최적화 도구가 지시문 생성을 자동화할 수 있을 것.
  • 하지만 정성적 분석과 품질 보증 작업은 여전히 필요함.

중요
정성적 분석은 모델 개발에서 필수적이며 이를 회피할 수는 없음.

LLM이 유용한 상황

  1. 검증이 쉬운 문제
    • LLM은 "답을 만드는 것은 어렵지만, 검증은 쉬운" 문제에 가장 적합.
    • 예: 생성적 AI의 "스위트 스팟"에 대한 Chris Gorgolewski의 게시글 참조.
  2. 문제를 하위 문제로 분해
    • 복잡한 프롬프트 대신 문제를 잘 정의된 하위 문제로 나눠 모델의 추론 체인을 구성.
  3. 미래를 염두에 둔 접근
    • 하드웨어, 비즈니스 모델의 혁신으로 추론 용량이 증가할 가능성을 고려.
    • 현재 비용이 아닌 가치 중심으로 기능을 설계.
  4. 추론 비용의 감소
    • 추론 비용이 점차 감소할 것으로 예상되며, "가치" 중심의 의사결정이 필요.
    • 더 가치 있는 기능 구현을 위해 현재 경제적 한계를 감안한 점진적 롤아웃 고려.

예상
LLM 추론 비용에 대해 무어의 법칙에 준하는 가격 하락이 나타날 가능성.


추가 자료