FareedKhan-dev/train-llm-from-scratch

A straightforward method for training your LLM, from downloading data to generating text.

해결하는 문제

이 프로젝트는 PyTorch를 사용하여 완전히 처음부터 구현된 대규모 언어 모델(LLM)의 엔드투엔드 구현을 제공합니다. transformers, trl, peft와 같은 고수준 라이브러리에 의존하지 않아, 사용자가 원시 텍스트 처리부터 조정된 추론 능력을 갖춘 모델에 이르기까지 LLM 라이프사이클의 모든 단계를 순수 PyTorch 코드로 이해하고 구현할 수 있도록 합니다.

작동 방식

이 프로젝트는 원시 데이터를 기능적인 어시스턴트로 변환하는 선형 파이프라인을 따릅니다:

  1. 데이터 준비: 원시 텍스트는 tiktoken 또는 사용자 정의 BPE 토크나이저를 사용해 토큰화되어 HDF5 파일에 저장됩니다. 사전학습용 텍스트, SFT용 지시 데이터, 보상 모델용 선호 쌍, RL 프롬프트를 처리합니다.
  2. 모델 아키텍처: "Attention is All You Need" 기반의 전통적인 Transformer와 RoPE, RMSNorm, SwiGLU, 그룹 쿼리 어텐션(GQA), 전문가 혼합(MoE), KV 캐시를 갖춘 현대적인 디코더 전용 아키텍처를 구현합니다.
  3. 사전학습: 다음 토큰 예측 손실을 기반으로 기반 모델을 학습시킵니다.
  4. 후처리 학습: 기반 모델은 순차적으로 감독 미세조정(SFT), 보상 모델링, 강화학습 기법(PPO, DPO, ORPO, KTO, GRPO 등)을 통해 개선됩니다.
  5. 추론: top-k, top-p, min-p 샘플링 기법, 사전 추론, int8 가중치를 구현하여 효율적인 생성을 지원합니다.

대상 사용자

  • 학생: 간단한 설명과 단계별 코드를 통해 LLM의 내부 구조를 배우고 싶은 사람.
  • 개발자: 랩톱 CPU에서부터 A100 GPU까지 다양한 하드웨어에서 369K에서 수십억 파라미터까지의 모델을 실행 가능한 스크립트를 찾는 사람.
  • 연구자: 단일 Transformer 아키텍처에서 GRPO 및 PPO와 같은 후처리 알고리즘의 수작업 구현에 관심이 있는 사람.

주요 특징

  • 의존성 없는 핵심: transformers 또는 peft에 의존하지 않고, 모든 알고리즘을 PyTorch로 직접 구현.
  • 하드웨어 유연성: CPU에서 수분 내에 작은 모델을 학습할 수 있는 "노트북 트랙" 포함.
  • 현대적 기능: RoPE, MoE, Muon 최적화기와 같은 고급 아키텍처 구성 요소를 구현.
  • 포괄적인 강화학습 세트: DPO, PPO, GRPO 등 다양한 조정 알고리즘을 처음부터 구현.
  • 내장 도구: Streamlit 제어판, 문서 사이트, 벤치마킹 스크립트를 제공.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트