FareedKhan-dev/train-llm-from-scratch

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

해결하는 문제

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

작동 방식

이 프로젝트는 원시 텍스트를 기능적인 어시스턴트로 변환하는 순차적 파이프라인을 따릅니다:

  1. 데이터 준비: OpenAI의 tiktoken을 사용하여 원시 텍스트를 토큰화하고 HDF5 파일에 저장합니다. 이에는 사전학습 데이터, SFT용 지시 데이터, 보상 모델링을 위한 선호 쌍, RL 프롬프트가 포함됩니다.
  2. 모델 아키텍처: 기본적인 PyTorch 모듈로 구성된 Transformer 모델로, 다층 퍼셉트론(MLP), 인과 마스킹이 있는 싱글 헤드 어텐션, 멀티 헤드 어텐션, 프리-노멀 잔여 연결이 있는 Transformer 블록을 포함합니다.
  3. 사전학습: The Pile과 같은 데이터셋을 사용하여 다음 토큰 예측 손실 기반으로 베이스 모델을 훈련합니다.
  4. 후처리: 베이스 모델을 여러 단계를 거쳐 어시스턴트로 전환합니다:
    • SFT (지도형 미세조정): 손실 마스크를 사용하여 지시 데이터에서 어시스턴트 응답에만 집중하여 훈련합니다.
    • 보상 모델링: 선호 쌍을 기반으로 브래들리-테리 보상 모델을 훈련합니다.
    • 정렬: PPO(근접 정책 최적화), DPO(직접 선호 최적화), ORPO, KTO, GRPO(그룹 상대 정책 최적화)와 같은 기법을 적용하여 모델을 인간의 선호와 추론 능력에 맞춥니다.

대상 사용자

  • 학생: 각 코드 블록에 대한 간단한 설명과 예상 출력이 포함된 단계별 가이드를 원하는 사람.
  • 개발자: 실행 가능한 스크립트와 명확한 파일 경로를 통해 자신의 LLM을 구현하고자 하는 사람.
  • 연구자: PPO, DPO, GRPO와 같은 후처리 알고리즘을 작은 Transformer에서 처음부터 구현하는 데 관심이 있는 사람.

주요 특징

  • 제로 종속 코어: transformerspeft 라이브러리를 사용하지 않고 순수한 PyTorch로 구현되었습니다.
  • 완전한 파이프라인: 원시 텍스트 → 토큰 → 베이스 모델 → SFT → 보상 모델 → RLHF/정렬 → 평가까지 전체 과정을 커버합니다.
  • 확장성: 사용 가능한 GPU 메모리에 따라 1,300만에서 수십억 파라미터의 모델 훈련을 지원합니다.
  • 통합 도구: 관리용 Streamlit 컨트롤 패널과 이론 및 다이어그램을 제공하는 전용 문서 사이트를 포함합니다.

관련

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