밑바닥부터 만들면서 배우는 LLM

세바스찬 라쉬카(Sebastian Raschka)가 쓴 아마존 베스트셀러 <Build a Large Language Model (from Scratch)>의 번역서 <밑바닥부터 만들면서 배우는 LLM>이 출간되었습니다!

이 책은 오픈AI의 GPT-2 모델을 파이토치를 사용해 밑바닥에서부터 하나씩 모두 만들어 완성하는 과정을 담고 있습니다. 어텐션 메커니즘은 물론이고 위치 인코딩, 단어 임베딩, 토크나이저의 원리를 터득할 수 있습니다. 여기에서 그치지 않고 분류를 위한 미세 튜닝과 지시를 따르도록 미세 튜닝하는 기법까지 담고 있습니다.

독자와 함께 이 책을 완독하는 인프런 챌린치를 준비하고 있습니다. 각 장의 내용을 단계별로 함께 배우면서 LLM이 어떻게 만들어지는지, 핵심 구성 요소와 성능 평가까지 배워보겠습니다. 기대해 주세요!

이 페이지에서 책의 에러타와 라이브러리 버전 변경에 따른 바뀐 점들을 계속 업데이트 하겠습니다. 이 책에 대해 궁금한 점이나 오류가 있으면 이 페이지 맨 아래 ‘Your Inputs’에 자유롭게 글을 써 주세요. 또 제 이메일을 통해서 알려 주셔도 되고 구글 그룹스 머신러닝/딥러닝 도서 Q&A에 글을 올려 주셔도 좋습니다. 또 카카오톡 오픈 채팅(참여코드: flow)에 오셔서 문의해 주셔도 좋습니다.

감사합니다! 🙂


Outputs

  • ~4: 2쇄에 반영되었습니다.
  1. (p340) 코드 A-11에서 model = model.to(device)model.to(device)로 수정합니다.
  2. (p402) 코드 E-5에서 __init__ 메서드 맨 아래에 self.rank = rank를 추가하고, forward 메서드의 첫 번째 줄을 x = (self.alpha / self.rank) * (x @ self.A @ self.B)로 바꿉니다.
  3. (p408) 코드 E-7에서 AdamW 클래스의 lr 매개변수 값을 5e-5에서 8e-4로 수정합니다.
  4. (p248) 코드 6-12에서
    input_ids = input_ids[:min(
    max_length, supported_context_length
    )]

    아래에 다음 코드를 추가합니다.
    assert max_length is not None, (
    "max_length가 지정되지 않았습니다. 모델의 최대 문맥 길이를 사용하려면"
    "max_length=model.pos_emb.weight.shape[0]로 지정하세요."
    )
    assert max_length <= supported_context_length, (
    f"max_length({max_length})가 모델이 지원하는 문맥 길이({supported_context_length})를 초과했습니다."
    )
    # 또는 max_length=None인 경우를 안정적으로 처리하는 방법은 다음과 같습니다.
    # max_len = min(max_length, supported_context_length) if max_length else supported_context_length
    # input_ids = input_ids[:max_len]
  5. (p174) 페이지 중간의 print() 명령과 그 아래 샐행 결과에서 “두 번째 샘플의 출력”을 “첫 번째 샘플의 출력”으로 수정합니다.(임*현 님)
  6. (p249) 아래에서 두 번째 줄에 torch.load("review_classifier.pth, map_location=device")torch.load("review_classifier.pth", map_location=device)로 수정합니다.
  7. (p261) 그림 7-7의 두 번째 JSON 예시에서 "input": "Ocassion""input": ""로 수정합니다.(임*현 님)
  8. (p130) 위에서 5번째 줄, (p131) 마지막 글머리 기호의 4번째 줄, (p155) 아래에서 7번째 줄, (p160) 연습문제 4.1 위 2번째 줄, (p203) 위에서 6번째 줄에서 “6장“을 “5장“으로 수정합니다.
  9. (p136) 그림 4-5에서 ‘분산 = 0.39‘를 ‘분산 = 0.02‘로 수정합니다.
  10. (p54) 페이지 중간에 “출력 결과는 다음과 같습니다” 끝에 아래 주석을 추가합니다.
    역주 사실 이 토크나이저 클래스는 원본 문자열을 완벽하게 복원하지 못하지만 대략적인 작동 방식을 설명하기에는 충분합니다. 실제 GPT-2 모델을 구현할 때는 tiktoken 라이브러리에서 제공하는 토크나이저를 사용합니다.”

Your Inputs

← 뒤로

답변해 주셔서 감사합니다. ✨