세바스찬 라쉬카(Sebastian Raschka)가 쓴 아마존 베스트셀러 <Build a Large Language Model (from Scratch)>의 번역서 <밑바닥부터 만들면서 배우는 LLM>이 출간되었습니다!
이 책은 오픈AI의 GPT-2 모델을 파이토치를 사용해 밑바닥에서부터 하나씩 모두 만들어 완성하는 과정을 담고 있습니다. 어텐션 메커니즘은 물론이고 위치 인코딩, 단어 임베딩, 토크나이저의 원리를 터득할 수 있습니다. 여기에서 그치지 않고 분류를 위한 미세 튜닝과 지시를 따르도록 미세 튜닝하는 기법까지 담고 있습니다.
독자와 함께 이 책을 완독하는 인프런 챌린치를 준비하고 있습니다. 각 장의 내용을 단계별로 함께 배우면서 LLM이 어떻게 만들어지는지, 핵심 구성 요소와 성능 평가까지 배워보겠습니다. 기대해 주세요!
- 온라인 서점에서 판매중입니다. [교보문고] [Yes24] [알라딘]
- 560페이지,
40,000원 –> 36,000원, 전자책: 28,800원 - 이 책에 실린 코드는 깃허브에 있습니다.
- 동영상 강의: 유튜브
- 인프런 강의: <밑바닥부터 만들면서 배우는 LLM> 강의
- 도서 소개 영상:
이 페이지에서 책의 에러타와 라이브러리 버전 변경에 따른 바뀐 점들을 계속 업데이트 하겠습니다. 이 책에 대해 궁금한 점이나 오류가 있으면 이 페이지 맨 아래 ‘Your Inputs’에 자유롭게 글을 써 주세요. 또 제 이메일을 통해서 알려 주셔도 되고 구글 그룹스 머신러닝/딥러닝 도서 Q&A에 글을 올려 주셔도 좋습니다. 또 카카오톡 오픈 채팅(참여코드: flow)에 오셔서 문의해 주셔도 좋습니다.
감사합니다! 🙂
Outputs
- ~4: 2쇄에 반영되었습니다.
- (p340) 코드 A-11에서
model = model.to(device)를model.to(device)로 수정합니다. - (p402) 코드 E-5에서
__init__메서드 맨 아래에self.rank = rank를 추가하고, forward 메서드의 첫 번째 줄을x = (self.alpha / self.rank) * (x @ self.A @ self.B)로 바꿉니다. - (p408) 코드 E-7에서
AdamW클래스의lr매개변수 값을5e-5에서8e-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] - (p174) 페이지 중간의
print()명령과 그 아래 샐행 결과에서 “두 번째 샘플의 출력”을 “첫 번째 샘플의 출력”으로 수정합니다.(임*현 님) - (p249) 아래에서 두 번째 줄에
torch.load("review_classifier.pth, map_location=device")를torch.load("review_classifier.pth", map_location=device)로 수정합니다. - (p261) 그림 7-7의 두 번째 JSON 예시에서
"input": "Ocassion"을"input": ""로 수정합니다.(임*현 님) - (p130) 위에서 5번째 줄, (p131) 마지막 글머리 기호의 4번째 줄, (p155) 아래에서 7번째 줄, (p160) 연습문제 4.1 위 2번째 줄, (p203) 위에서 6번째 줄에서 “6장“을 “5장“으로 수정합니다.
- (p136) 그림 4-5에서 ‘분산 = 0.39‘를 ‘분산 = 0.02‘로 수정합니다.
- (p54) 페이지 중간에 “출력 결과는 다음과 같습니다” 끝에 아래 주석을 추가합니다.
“역주 사실 이 토크나이저 클래스는 원본 문자열을 완벽하게 복원하지 못하지만 대략적인 작동 방식을 설명하기에는 충분합니다. 실제 GPT-2 모델을 구현할 때는tiktoken라이브러리에서 제공하는 토크나이저를 사용합니다.”
Your Inputs
