프로젝트 소개

tiny-llm은 LLM 추론을 처음부터 끝까지 이해하고자 하는 시스템 엔지니어를 위한 실습 과정입니다. CMU의 Needle 프로젝트에 대응하는 LLM 서빙 버전으로 자리매김하며, 학습자는 Qwen3 모델을 로드하고 토큰을 logits으로 변환한 뒤 텍스트를 생성하는 경로를 직접 구축합니다. 이 과정은 배열과 행렬 연산으로 시작해, 실행 중인 모델이 필요로 할 때 커널과 서빙 기계장치를 도입합니다. 구현은 처음부터 끝까지 읽을 수 있을 만큼 작게 유지되며, 방정식을 메모리 트래픽, 커널 점유율, KV-cache 증가, 배칭, 요청 스케줄링과 연결합니다. 고수준 신경망 레이어 없이 MLX 배열과 MLX 확장 런타임 위에 구축됩니다. 어떤 장에서 연산자를 가르칠 때, 학습자는 해당하는 최적화된 MLX 연산을 호출하는 대신 그 연산자를 Python, C++, 또는 Metal로 구현합니다. MLX는 정확성 기준이자 성능 기준선 역할을 합니다. 4주 학습 경로는 다음을 다룹니다: - 1주차: attention, RoPE, GQA, RMSNorm, MLP, 샘플링, 자기회귀 루프를 포함해 mlx.core 배열 연산으로 Qwen3 모델 구축. - 2주차: kv-cache, capacity-cache, packed W4 가중치, SIMD 행렬 prefill, 융합 프리미티브, 타일드 prefill로 단일 요청을 더 빠르게 만들기. - 3주차: 연속 배칭, 청크 단위 수용, 페이징 KV 캐시, 직접 페이징 attention, 페이징 FlashAttention으로 미니 vLLM 구축. - 4주차: 검증된 에이전트 루프, 워크스페이스 검사, 승인된 편집, 검증 명령, 체크포인트 및 재개, 컨텍스트 압축, 검사 및 조정 일시정지, 결과 평가, 분기된 조정 브랜치, 제한된 도구 증거로 코딩 에이전트 구축. 이 프로젝트는 하나의 공유 메모리 공간과 Metal 커널에 대한 직접 접근을 제공하는 실용적인 로컬 환경을 제공하기 때문에 Apple Silicon을 대상으로 합니다. Qwen3-4B는 실제 가중치 대역폭, attention, 캐시 비용을 드러낼 만큼 크면서도 로컬 반복 작업에 충분할 만큼 작습니다. 이 책은 skyzh.github.io/tiny-llm에 게시되어 있습니다. 저장소에는 학생 구현용 tiny_llm 패키지와 참조 솔루션이 있는 tiny_llm_ref가 포함되어 있습니다. 로드맵 표는 각 장의 구현, 테스트, 문서, 편집 감사 상태를 추적합니다.