- run.c: Llama 2의 Transformer 추론(Inference)을 C 언어로 구현한 프로그램
- 주요 기능: 모델 초기화, 토큰화, Transformer 연산, 텍스트 생성 및 메모리 관리
- 실행 방식: 학습된 가중치를 불러와 다음 토큰을 반복적으로 예측하여 텍스트 생성
Index
- Main and Arguments
- 프로그램 진입점
main() 및 명령행 인자 처리
- Transformer Structures
- 모델 설정(
Config), 가중치(Weights), 추론 상태(RunState) 구조 정의
- Checkpoint Loading
- Memory Management
- Tokenizer
- 입력 텍스트를 Token ID로 변환 및 토크나이저 관리
- Sampler
- Text Generation
generate() / chat()을 통한 토큰 생성 반복 제어
- Transformer Forward Pass
- Embedding, Attention, FFN 등 Transformer 순전파 연산
- Output and Decoding
- 생성된 Token ID를 텍스트로 변환 및 출력
- Cleanup
Execution Flow
main()
│
├── Parse Arguments // 실행 옵션 설정
│
├── Model Initialization // 모델 초기화
│ └── build_transformer()
│ ├── read_checkpoint() // 모델 파일 읽기
│ │ └── memory_map_weights()
│ └── malloc_run_state() // 추론용 메모리 할당
│
├── Tokenizer / Sampler Initialization
│ ├── build_tokenizer() // 토크나이저 초기화
│ └── build_sampler() // 샘플러 초기화
│
├── Text Generation // 텍스트 생성
│ └── generate() / chat()
│ ├── encode() // 텍스트 → Token ID
│ │
│ └── Generation Loop // 토큰 생성 반복
│ ├── forward() // Transformer 추론
│ ├── sample() // 다음 토큰 선택
│ └── decode() // Token ID → 텍스트
│
└── Memory Cleanup // 자원 해제
├── free_sampler()
├── free_tokenizer()
└── free_transformer()
3 items under this folder.