[간단 정리]

Karpathy ChatGPT 강의 메모

hskimim 2025. 2. 9. 02:57

강의를 들으면서 실시간으로 들으면서 쓰는 메모.

섹션은 유튜브에 맞춰져 있습니다. (앞에 몇 개 섹션은 듣기만 했습니다)

 

다 쓰고 나서..

들으면서 생각나는데로 쓴거라 해당 글만 가지고는 충분히 도움이 안될 수도 있을 것 같다. 영상을 들으면서 참고용으로만 보시길..


Inference

  • generating new data from model
  • 주어진 초기값 이후에 draw 되는 많은 토큰들의 확률 분포, 그 중에 하나가 뽑힘, (one token at time)

gpt2

  • modern stack 이 처음 나온 형태
    • 지금 모델들은 이게 커진 것
  • 1.6 billion parameters
    • 지금은 trillion or serveral hundreds of billions
  • max context length is 1,024 tokens
    • never taking more than 1024 tokens
    • when you are trying to predict the next token in a sequence you will enver have more than 1024 toekns in your context in order to make that prediction
    • 지금은 거의 millions 까지 옴
  • trained on about 100 billion tokens
  • llm.c 
    • 자기가 직접 c 로 구현한 llm
    • 본인이 직접 만들고 느끼고 하는 것이 중요함
    • 자기는 h100 한개를 사용해서 학습을 시켰음
      • lambda 에서 rent 서비스를 해서 그걸 사용해서 학습시켰음

Base model

  • internet text token simulator
  • vague recollection of internet documents
  • ex) llama 3 : 
    • 405 billion parameters trained on 15 trillion tokens
    • vague recollection of internet documents
  • to get a release of base model : 
    • sequence of operations
    • parameters
  • instruct 가 붙은거면, assistant 의 역할을 하게끔 추가 학습이 된 것
  • wikipedia 의 초반 문장을 넣어주면, 그 다음에 생성되는 문장들을 보면 parameter 안에 data memorization 이 있음을 알 수 있음
  • 학습 과정에서 본 적이 없는 데이터를 넣는다면? 그럴 듯한 문장을 만들어내지만 non-factual 한 문장을 만들어낼 수 있음  -> hallucination, (ex. 시기적으로 본 적이 없는 위키 데이터를 넣는 경우)
  • in-context learning 의 특성을 살려, 앞선 문장들의 algorithmic pattern을 보고 답변을 할 수 있음
    • ex) "{butterfly : 나비, ocean : 바다, teacher : " -> "선생님, morning : ...."
  • post training
    • is computationally much less expensive than pre-training stage
    • base model to assistant

LLM psychology

  • hallucinations
    • how do we fix it?
      • llama3 에선 factual qa dataset 을 만들고, (정답 데이터셋), llama에게 no-context 로 factual question 을 해서, 정답을 맞추는지 본다. (여러 번 sampling 해서) 맞췄으면 패스 틀리면, 해당 qa dataset 을 answer 을 "sorry I don't know" 같은걸로 바꿔서 post-training 시킨다.
        • 원문) Use model interrogation to discovert models' knowledge, and programmatically augment its training dadtaset with knowledge-based refusals in cases where the model doesn't know 
        • 질문에 대한 불확실함이 있으면, 특정 뉴런이 light-up 할꺼고, 그걸 "I don't know" 랑 matching 시키는 것
      • SEARCH 하게 한다.
        • 모델은 앞서 말했든 애초에 vague recollection of data 임. 많이 본 데이터는 그나마 잘 기억하겠지만, 그렇지 않은 데이터는 거의 희미할꺼다. 우리처럼
        • search 를 하게 해서, 그거랑 관련있는 데이터를 집어넣어주면, 기억 속에서 그거랑 관련있는 희미한 기억에 불이 켜져서 끄집어낼 수 있을꺼다. refreshing the working memory 라는 표현이 쓰임
        • 검색 결과가 model inference 과정에서 feed 가 되는 순간, 더 이상 vague recollection이 아니다. 직접 참조를 해서 그걸 대답으로 re-frame 할 수도 있고, 관련 기억이 발현될 수도 있다
      • stress one more time
        • knowledge in the parameters == vague recollection
        • knowledge in the tokens of the context window == working memory
    • knowledge of self
      • 자의식같은건 없고, "who are you" 와 같은 것에 대답하는 것은 학습의 결과
      • 이에 대한 별도의 학습을 하지 않을 경우, 이에 대한 데이터가 인터넷에 가장 많은 "I'm openai gpt" 가 나오게 . 될 것

Model needs token to think

  • 하나의 output token 별로 모델 전체를 거치는 feedforward 가 필요
  • 토큰이 길어질 수록 필요한 computation 은 증가하지만, 결국 token 당 적용되는 computation 은 finite 하다고 할 수 있다. model 의 layer과 dimension 등이 고정되어 있기 때문에.
  • 그 말은 token 하나당 사용할 수 있는 계산량에 한계가 있다고 할 수 있음. 즉, 한 마디 한 마디 할 때마다 고민할 수 있는 정도가 같다는 것.
  • 그래서, token 별로 사용해야 할 총 required computation 을 분배해야 함. 많은 computation 이 필요하면 많은 token 을 반환해서 앞선 token 에 필요한 computation 을 분배하고, 그 뒤에 결과를 반환해야 한다.
  • 그러면 token 별로 고민할 수 있는 정도는 같아도 (finite computation) 앞의 context 를 받아오기 때문에, 출발점이 더욱 좋아지기에 더 요구 계산량이 높은 질문에 더 잘 대답할 수 있게 된다.
    • auto-regressive model 은 폭이 동일한 step 을 걸어나가지만, 이번에 모델이 갈 스텝은 이전 스텝이 나아간 그 스텝부터다.
    • reasoning model 의 intermediate token들은 user를 위한 것이기도 하지만, 사실은 무엇보다 model 을 위한 것이다.
  • leans on tools instead of allows the models to do all of the stuff in their memory
    • llm 은 token단위로 text 를 이해하기 때문에, 글자 수를 세거나, 숫자를 비교하는 것에 태생적으로 약함

Pre-training vs SFT vs RL (in LLM)

  • 어떤 전공 서적이 있을 때, 
    • pre-training with NTP : background knowledge 를 학습하는 것, 책을 쭉 훑으면서 읽는 것
    • SFT : 전공 서적 중간에 있는 어떤 문제와 이에 대한 해설지 읽는 것.
      • 이런 질문에 이렇게 대답해야 하는 거구나.
    • RL : 전공 서적의 각 토픽 말미에 있는 질문 리스트가 있고, 해답만 있을 때 (해설지 X) 해설지를 써가면서 해답을 맞춰가는 과정. 
      • 이 질문에 이렇게 저렇게 하면... 이 답이 나오는데 맞나? 아니네.. 그러면 이렇게 저렇게 하면.. 오 맞다! 이렇게 푸는거였네.

RL

  • 수학 증명같은걸 할 때, 2가지 objective 가 있다고 할 수 있음
    • correct final answer
    • presentation to the human
  • correct final answer : 어떤 prompt 가 정답을 맞추는 최선일까?
    • human labeler 는 알 수가 없다. human 한테 좋고 쉬운거랑 llm 한데 그런 거랑 뭐가 다른지 모르니깐. 즉 prompt crafted by human 은 한계가 있음. 우리껄 주입하면 오히려 llm 이 혼란스럽고 이는 inefficient 를 발생시킴
    • Our knowledge is not llm knowledge, we're not in a good position to create these token sequences for LLM
    • LLM 이 찾게 하는게 좋다. -> with trial or error -> 여기서 RL 등장
      • 많은 대답을 병렬로 만들고, 그 대답들로부터 final answer들을 이끌어낸다.
      • 만약 15개를 만들고, 4개만 맞는다고 하자. 그 4개 중에 최고의 solution 을 뽑는다. 이걸로 학습시킨다. 이러면 이거랑 출력이 유사해질 것이다.
      • 이걸 많이 반복한다.
    • 위 과정은 기본적으로 guess & check 
    • what kind of token sequences 가 final answer 을 잘 맞춰가는지를 "발견"할 것이다.
      • in principle, the behavior of the system is lot less defined. open to do whatever it works
    • SFT 가 RL 전에 적용되는 것 또한 도움이 되긴 한다. 수학 증명의 경우에 human labeler 가 만든 데이터셋들을 넣어 학습시키게 되면 "vicinity of correct solution" 을 얻게 됨. 즉, 좋은 initialization 을 얻음
    • 위 단계가 굉장히 간단해보이지만 어떻게 top solution 을 뽑을 것인지, 얼마나 학습시킬 것인지 등등 디테일이 굉장히 깊다고 함 (detail is not trivial)

DeepSeek R-1

  • 학습량이 많을 수록 accuracy (correct of final answer) 이 높아짐
  • optimization 을 많이 할 수록, the avg length of response becomes long
  • aha moment 발생, llm discovers how to think
  • 그들이 문제를 더 잘 풀기 위한 언어를 사용할 수도, 그들만의 언어를 사용할 수도 있음

AlphaGo

  • 알파고의 사례에서도 supervised learning 은 super-human 을 능가하지 못하지만, rl 의 경우에는 가능했다

RLHF

  •  정답이 자명한 도메인에서는 scoring 이 쉬움. ex) 3이 정답이면 3말고는 다 오답임 -> concrete answer
  • 그렇지 않은 경우는 어떻게 할 것인가? ex) "write a joke about pelicans"
  • 여기서 RLHF가 나옴. RLHF = RL + HF 인만큼 HF = Human Feedback 이 들어감. 즉, 이전에 얘기한 RL이라는 맥락이 다름
  • How to RLHF
    • Naive approach : 
      • 1000개의 prompt (질문) 에 대해 1000개의 응답을 받아, human labeler 에게 줌, 그리고 이걸 1000번 반복
        • 1,000,000,000 번의 scoring 이 필요
    • RLHF approach : 
      • 1000개의 prompt 에 대해 5개의 응답을 받아, human labeler 에게 순위를 매기라고 함
        • 5,000 번의 scoring 필요
      • 5,000 개를 갖고 human preferences 를 모방한 reward model 학습
      • 그 후로는, RL 학습 가능 with human preference simulator
        • reward 가 높은 (human rank, preference 가 높은) 응답의 출력 확률이 높아짐
    • Upside : 
      • arbirary domain 에 대한 RL 가능 -> discrimnator - generator gap 을 줄임에 따라
      • 많은 경우 generation 보다는 discrimination 이 쉬움
      • 이게 SFT 뿐만 아니라, RLHF 를 하는 이유 -> SFT 는 응답을 우리가 만들어야 함 (generation)
      • RLHF 에서는 just ordering
    • Downside : 
      • lossy simulation of humans. It might be misleading
        • not perfectly reflect the human brain
      • RL discovers ways to "game" the model
        • reward 는 높지만 결과는 이상한게 나올 수 있음. ex) "the the the the ..."
          • 일종의 adversarial outputs
        • RL은 늘 그렇듯 찾아내니깐..
      • 그래서 RLHF는 몇 백번만 올리고 멈춘다. 너무 많이 하면, 늘 RL이 뭔가 이상한 방법을 찾아냄
        • little improvement 로 접근해야 함. fundamentally improvement 가 아님
      • 그래서 RLHF는 RL인데, RL이 아님. 항상 더 많은 학습이 더 높은 reinforcement 를 주지 않음