1P by GN⁺ | ★ favorite | 댓글 1개
  • 주말에 몇 시간을 투자해 LLM의 작동 방식을 코드로 따라가며 구현·학습·사용 흐름을 한 번에 살펴볼 수 있는 워크숍임
  • 실습은 LLM 소개에서 출발해 입력 데이터, 토크나이저, 모델 아키텍처 구현으로 단계적으로 이어짐
  • 아키텍처 구현 뒤에는 GPT-2와 Llama 2, 사전학습, 사전학습된 가중치 로딩을 다루며 실제 모델 사용 흐름까지 연결함
  • LitGPT를 활용한 가중치 사용과 명령어 파인튜닝, 벤치마크 평가, 대화 성능 평가까지 포함되어 있음
  • 책, GitHub 저장소, 워크숍 코드, Lightning Studio, LitGPT 저장소가 함께 제공되어 직접 따라 해보기 쉬움

3시간 워크숍 영상 흐름

  • LLM을 구현하고 학습시키고 사용하는 과정을 하나의 코딩 워크숍으로 다룸
  • 클릭 가능한 챕터 표시가 있어 필요한 주제로 바로 이동할 수 있음
  • 기초와 입력 처리

    • 0:00 워크숍 개요
    • 2:17 LLM 소개
    • 9:14 워크숍 자료
    • 10:48 LLM 입력 데이터 이해
    • 23:25 간단한 토크나이저 클래스
  • 모델 구현과 학습

    • 41:03 LLM 아키텍처 코딩
    • 45:01 GPT-2와 Llama 2
    • 1:07:11 사전학습
    • 1:29:37 사전학습된 가중치 로딩
    • 1:45:12 LitGPT를 통한 사전학습 가중치 사용
  • 파인튜닝과 평가

    • 1:53:09 명령어 파인튜닝
    • 2:08:21 LitGPT를 통한 명령어 파인튜닝
    • 2:26:45 벤치마크 평가
    • 2:36:55 대화 성능 평가
    • 2:42:40 마무리

따라 해볼 때 필요한 자료

댓글과 토론

Hacker News 의견들
  • 무식한 질문일 수 있지만, 이게 Andrej Karpathy의 https://www.youtube.com/watch?v=kCc8FmEb1nY와 다른 내용인지 궁금함
    • Andrej의 시리즈도 훌륭하고, Sebastian의 책과 이 영상도 훌륭함
      겹치는 부분은 많지만 서로 다른 주제를 더 자세히 다루거나 초점이 다름. Andrej의 전체 시리즈는 볼 가치가 충분하고, 앞으로 나올 Eureka Labs 작업도 매우 좋아 보임. Sebastian의 블로그와 책도 시간과 돈을 들일 만하다고 봄
  • Sebastian의 글이 좋고 책도 기대됨. LLM 구성 방식에 대한 세부 내용이 많은데, 장기적으로는 전장이 그쪽으로 가는 것 같으니 Llama와 OpenAI가 학습 데이터를 어떻게 정제하고 구조화할 수 있는지도 더 다뤄주면 좋겠음
  • PyTorch를 쓰는 건 바닥부터 만드는 LLM이 아님
    좋은 PyTorch 튜토리얼이긴 하지만, 저수준이라고 pretend하지는 말자는 뜻임
    • 사과파이를 처음부터 만들려면 먼저 우주를 발명해야 함
    • Sebastian의 콘텐츠는 정말 좋아하지만 이 부분은 동의함. Karpathy 시리즈처럼 자동 미분 엔진을 처음부터 만들면서 시작하기 전까지는 딥러닝에 제대로 들어가지 못했음
      그 전에는 fast.ai로 배우려 했는데, 바로 Pytorch로 네트워크를 만들기 시작해서 금방 빠져나왔음. 고등학교 때 Java 배우는 것만큼 재미없게 느껴졌고, 내가 다루는 대상이 뭔지 이해해야 했음
    • Bach 연주 배우기: 직접 피아노 만들기부터 시작하기
    • 어떤 기준에서 저수준이 아닌가? Python에서 socket API만 써서 IRC 클라이언트를 작성하는 것도 처음부터가 아닌가?
    • LLM 맥락에서는 pytorch.nn도 저수준임. 교육에서는 너무 많은 추상화 계층을 한꺼번에 다루지 않는 게 중요함
  • 예전에 Azure에서 nanoGPT를 처음부터 학습시키는 실전 가이드를 썼음. 손으로 따라 하기 쉽고 실용적인 편임
    https://16x.engineer/2023/12/29/nanoGPT-azure-T4-ubuntu-guid...
    • 정말 비용이 200달러밖에 안 들었는지 궁금함
      그렇게 만든 걸로 어떤 일을 할 수 있었는지, 최신 사건은 어떻게 학습시키는지도 궁금함
  • 비합리적일 수는 있지만, programming이나 development 대신 coding이라는 단어를 쓰는 것에는 기본적으로 부정적인 느낌이 듦
    • 이 커뮤니티에서 언어에 가장 집착하는 축에 드는 사람이 올린 글에서 그런 반응이 나오는 게 꽤 요란하게 느껴짐
      이제 따져보면, "code"는 codex라는 매체의 내용으로 세우는 것임. 역사적 배경은 https://en.wikipedia.org/wiki/Codex를 보면 되고, 법 분야의 규칙 집합에서 출발해 영어에서는 적어도 16세기 중반부터 다른 영역으로 쓰임이 확장됐음
      "program"은 의도의 집합을 담아 공개하는 것에 가깝고, 예컨대 "먼저 Bach를 연주하고 그다음 Mozart를 연주한다" 같은 의미가 따라옴. 이런 쓰임은 "규칙 집합"으로서의 code보다 몇 세기 뒤에 나옴
      "develop"은 펼쳐내는 것이라는 뜻이라 좋지만, 앞의 두 단어처럼 규칙이나 순차적 절차를 함의하지는 않음
    • 브라질 출신인데 이게 재미있는 이유는, 내 친구나 동료들 사이에서는 영어로 말할 때 보통 coding을 쓰고, 브라질 사람끼리는 포르투갈어 동사처럼 codar를 많이 씀
      정확한 이유는 모르겠지만, 브라질 포르투갈어에서 "program"이 매춘과 강하게 연결되어 있어서 그런 것 같음
    • 완전히 동의함. 1년 전에도 이 주제로 논의했음: https://news.ycombinator.com/item?id=36924239
    • 이제는 아마 인기 없는 견해일 것 같지만, 그런 판단이 판단질이나 문지기질로 받아들여지는 분위기 속에서도 동의함
    • 이건 좀 더 유럽식 감각에 가까움
  • 내가 찾던 정확한 세부 수준임. 딥러닝과 pytorch 경험은 꽤 있어서 그걸 처음부터 구현하는 장면은 보고 싶지 않음
    Andrej의 자료는 내겐 너무 저수준이라 세부에 빠져 길을 잃는 편임. 비판이라기보다는 나와 비슷한 상황인 사람에게 도움이 될 만한 코멘트임
  • 훌륭함. 바로 어제 트랜스포머/어텐션과 LLM이 정확히 어떻게 동작하는지 궁금해하고 있었음
    오래전에 깊은 RNN에서 역전파가 어떻게 동작하는지는 따라가 본 적이 있어서, 나머지도 보면 재미있겠다고 생각했음
    • 직관을 얻고 싶다면 3b1b 영상들이 꽤 잘 설명해 줌. 다만 아주 세세한 부분까지 들어가지는 않음
  • 좋음. Windows 11에서도 동작하면 좋겠음
    Windows가 명시적으로 언급되지 않으면 보통 그 환경에서 테스트되지 않았고, 임의의 문제로 잘 안 돌아가는 경우를 자주 봄
    • WSL2에서는 GPU에 접근할 수 있으니 문제없이 잘 돌아갈 것 같음. Cuda toolkit 설치는 잊지 말아야 하고, NVidia가 WSL2 전용으로 제공하는 것도 있음
      https://developer.nvidia.com/cuda-downloads?target_os=Linux&...
    • Windows 11에서 안 된다면 WSL(Windows Subsystem for Linux)에서 시도해보는 것도 방법임
  • 이 페이지는 사실상 YouTube 영상을 담은 컨테이너일 뿐임. 페이지 설명에 같은 링크들이 들어 있으니, HN 링크를 영상으로 직접 연결하도록 바꾸는 게 좋겠음
    • 오히려 Sebastian Raschka의 글 저장소를 찾아보는 추가 단계를 줄여준 셈임
    • 그는 영상과 코드를 많이 공유하고, 자료 가치가 정말 큼. 그냥 창작자를 지원하면 되지 않나?
    • 저자 본인 웹사이트를 지원하지 않을 이유가 있나? 사이트도 좋아 보임