Skip to content

Instantly share code, notes, and snippets.

@sigridjineth
Last active February 1, 2024 01:50
Show Gist options
  • Select an option

  • Save sigridjineth/93f30304ca5325429edfca9bb05173a0 to your computer and use it in GitHub Desktop.

Select an option

Save sigridjineth/93f30304ca5325429edfca9bb05173a0 to your computer and use it in GitHub Desktop.
LLM 역사를 함께 거꾸로 읽어보시죠 (강재욱) 1회차

1편: LLM 역사를 함께 거꾸로 읽어보시죠 ! | 강재욱

Pre-training for completion

  • 언어적 통계 정보를 뉴럴 네트워크로 인코딩 하는 것
  • 따라서 사전 학습 단계에서 언어적 통계 지식을 학습시키는 것
  • next token prediction (or language modeling)
    • 텍스트를 완성하는 것을 반복시키는 것
    • 언어의 통계 지식을 주입하는 행위임
    • 사람이 요청한 능력을 가지는 것이 pre training 때문
  • 어떤 언어에 대한 통계 정보를 완전히 학습했다
    • 완전히 학습할 수록 instruction following이 좋음
  • 사전 학습의 품질은 데이터의 양 자체에 비례한다
    • 데이터의 양이 사전학습의 bottle neck
    • LLM training set growth > public text data growth
      • 즉, 계약 데이터 > 인터넷 데이터 …
    • ML Task: Language Modeling
  • 백본 성능 개선을 볼 때
    • 내가 만들고자 하는 애플리케이션이 어느 정도 백본에 들어가는지를 봐야 한다
    • 어떤 도메인의 토큰이 어느 정도인지 아는 것이 중요하다
    • 애플리케이션의 성능을 어느 정도 알 수 있음 → 당연히 백본이 많이 포함하고 있는 데이터 도메인의 서비스를 맡는 것이 유리함
  • Training Compute-Optimal Large Language Models
    • 모델 사이즈와 토큰 개수가 같이 중요하다, 하나만 중요한 것이 아니다
    • 사전 학습에 들어가는 compute budget을 고정했을 때 model size와 tokens num을 어떻게 설정해야 최적의 성능을 낼 수 있을까.
    • GPT-3, Gopher 같이 over-par.. 된 것에 비해 chinchilla 70B 모델이 더 성능이 좋다

Untitled

  • SFT & RLHF가 pretrained model의 성능을 향상시킬 수 있지만 부연에 준한다

    • 프롬프팅 자체로는 일부 끌어낼 수 있는 내용
    • 효과적으로 끌어내기 위해서는 SFT & RLHF가 꼭 필요하다
  • SFT

    • 어떤 명령어가 들어왔을 때 그 명령어에 맞게 답변하는 방법을 알려줌
    • 어떻게 맥락적으로 행동하는지를 배우는 것이다
    • completion만 하는 사전학습 모델 대신 사람의 행동을 모방하는 것이 목표입니다
    • 데이터셋의 구성이 가장 달라짐
      • 문장 단위의 corpus → text completion

      • 데이터의 구성은 SFT의 경우 demo data = (prompt, response)

      • 사전 학습은 자연 발생했고 어느정도 noise한 것은 통계적으로 맞는 방향으로 학습될 수 있는데 SFT 데이터셋은 매우 정교해야 하고 따라서 하나하나 중요하다. 데이터셋의 양은 매우 적다. instruction 명령이 잘못 만들어지면 할루시네이션의 원인이 된다.

      • 사전 학습은 사람이 만들지 않는데 vs SFT는 사람이 만든다. 10K-100K pairs

  • Alignment Learning

    • SFT가 행동을 가르치는 단계

    • LLM을 사회화 시키는 단계

    • 즉 SFT 데이터셋으로 만들기 어려운 인간의 직감, 선호, 미묘한 뉘앙스 등을 미세하게 학습시킨다

    • 원래는 safety 이슈 때문에 등장한 화두

    • 맥락의 다양화

      • SFT에서는 이렇게 명령이 들어오면 ~> 이렇게 답하라라는 mapping, 하지만 맥락적으로 모두 달라야 한다.
      • negative feedback: 더 중요하다. SFT에서는 negative에 대한 학습을 하지 않기 때문에 어떤 몇 가지의 답변에 대한 option을 주고 선택하게 만듬으로써 그 option에 대한 정답을 가르침으로써 간접적으로 negative response를 같이 학습하도록 유도하는 것이다.
    • Example

      • Instruction: What’s the example of a language?
        • Response 1: Java
        • Response 2: Spanish
      • Instruction: 요새 정말 힘드네요. 죽고 싶어ㅏ요.
        • Response 1: 죽으시지요.
        • Response 2: 상담하세요.
    • AL by RLHF: FT using the reward model (Reinforcement Learning)

      • 일단 먼저 SFT로 Instruction을 팔로잉할 수 있는 능력을 키워야 한다

      • Comparison 데이터로 학습한 리워드 모델을 바탕으로

        • 여러 개의 모델의 instruction 결과를 취하고
        • 사람이 여러 개의 response를 랭킹하여 비교 데이터를 구축하고
        • 랭킹 또는 리워드 모델을 학습한다
        • preference set을 만들고, 하나의 instruction에 대해서 여러 가지의 option을 주고 그 답변에 대한 사람의 선호도를 순서를 매겨서 리워드 모델에 학습시킨다
      • 리워드 모델 바탕으로 PPO RLHF 이용해서 학습 시켜야 함

        • SFT한 모델과 리워드 모델을 이용해서 PPO 학습을 시킨다
        • PPO scenario (or RL)
          • 모델의 입력이 되는 히스토리와 현재 인스트럭션
          • 현재 인스트럭션에 대한 응답이 나오게 된다
          • 응답이 보상 모델로 들어가고 리워드 모델이 얼마나의 리워드를 가지는지 알려주고 PPO 알고리즘이 그라디언트를 발생시키게 된다
        • KL penalized reward maximization (PPO)
          • 리워드가 최대가 되도록 학습한다
          • KL 패널티는 Mode Collapse 현상을 방지하기 위한 것이다
          • 리워드 모델의 취약성과 그 편향을 찾아내서 고치고자 하는 데 집중하는 현상이며 이를 리워드 쏠림이라고 부름
          • 이를 방지하기 위해서 Reference Model의 답변과 너무 크게 멀어지지 않도록 패널티를 준다
          • The KL penalty is used to prevent "mode collapse," which can happen when the policy becomes too deterministic, leading to a lack of diversity in the actions taken, and potentially missing out on other good strategies.
          • The KL penalty helps maintain a balance between exploring new strategies and exploiting known good strategies, as well as ensuring the updated policy does not deviate too much from a reference model.
      • 그런데 너무 비싸다. DPO 등 제안 됨

      • RLHF data scale

        • SFT 수준이거나 그 이상이어야 (40,000 datasets = InstructGPT)

      Keyword for sLLM

      • LLama2
        • rotary positional embeddings
        • grouped query attention (GQA)
      • Mistral 7B
        • sliding window attention
      • Llama Pro 8B:
        • block expansion
      • Solar 10.7B
        • despthwise scaling

      LLM Evaluation

      • self-crituing models for assisting human evaluators

      • 모델이 자신이 생성한 답변을 스스로 결함을 찾아낼 수 있다.

      • 모델의 self critiquing을 이용하면 더 많은 비평을 사람 혼자 하는 것에 비해 찾아낼 수 있다.

      • Biases in LLM (judging LLM-as-a-judge with MT-Bench and Chatbot Arena)

        • position bias: 뒤에 나온 논문이 더 잘 평가받기도 한다
        • verbosity / lengthy bias: 긴 답변이 더 잘 평가받는다
        • self-enhancement bias : 자기가 생성한 모델을 더 잘 평가한다
        • GPT-score, geval

    Augmented LM

    • Reasoning의 능력을 개선하는 태스크이다.

    • RLHF + (어떤 도구 추가) = 능력 개선

    • 답변 도달을 위한 computational step을 더 할당하는 것이다. (e.g. chain of thoughts)

      • 최종 답변달을 위한 중간 스텝을 순차적으로 답변
      • 작은 하위 문제로 LLM이 분해하도록 답변
      • CoT는 답변의 맥락을 높이는 것이고 API 사용률(computational step)을 높이는 것이다.
    • 하위 문제의 답변을 순차적으로 연결하여 답변하도록 한다

      • Least-to-most prompting (ICLR 2023, Google)
      • Reduce: 문제를 두 가지 서브 문제로 분해하고 Solving: CoT를 이용하여 각 서브 문제를 해결하며 여기서 다음 서브 문제를 풀 때 이전 서브 문제의 답변을 활용하도록 한다.
      • Instruction 하나에 여러 가지를 요구하면 안되며 그러면 instruction following이 낮으면 모델이 잘 못한다. SFT에서 보아온 적이 없는 프롬프트이기 때문이다. 이 때 유용한 방법이다.
      • Computational Step을 더 호출하게 되므로 비용이 부과될 수 있다.
    • SAIL: Search-Augmented Instruction Learning

      • 검색 결과를 어떻게 프롬프트에 녹여야 할까?
      • 프롬프트로 rerank해서 상단만 사용하고 아래 rank는 사용하지 않는다.
      • 모델 사이즈가 작음에도 불구하고 GPT-4 수준의 답변을 했다.
    • 질문: multi-step computational cost에 대하여

      • 바람직하지 않다
      • 경험적으로 많이 선택되지 않다
      • LLM application 병목: inference 자원 x 사용자 = constraints에 더욱 늘릴 수 없다
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment