skyzh/tiny-llm
learn LLM inference system on Apple Silicon for systems engineers: build a tiny vLLM + Qwen
해결하는 문제
대부분의 LLM 과정은 모델을 블랙박스로 취급하거나 훈련에 초점을 맞춥니다. tiny-llm은 LLM 추론이 내부에서 실제로 어떻게 작동하는지 이해하려는 시스템 엔지니어를 위한 실용적이고 실습 중심의 과정입니다. 모델 로드부터 텍스트 생성까지, 토큰을 로짓으로 변환하고 메모리를 관리하며 요청을 처리하는 전체 경로를 보여줍니다. 이 과정은 전체 구현을 읽고 방정식을 메모리 트래픽, 커널 점유율, KV 캐시 증가, 배치 처리 및 요청 스케줄링과 같은 실제 문제와 연결할 수 있도록 설계되었습니다.
작동 방식
이 과정은 MLX(Apple의 기계 학습 프레임워크)를 기반으로 하며 Apple 실리콘에서 실행됩니다. MLX 배열과 MLX 확장 런타임을 사용하지만 고급 신경망 레이어는 의도적으로 피합니다. 각 장에서는 최적화된 내장 버전을 호출하는 대신 Python, C++ 또는 Metal로 연산자를 직접 구현합니다. MLX는 참조로 남아 정확성을 확인하고 성능 기준을 제공합니다.
학습 경로는 4주입니다:
- 1주차: Matmul에서 텍스트까지. 기본 배열 연산을 사용하여 Qwen3 모델을 처음부터 구축하고 어텐션, RoPE, GQA, RMSNorm, MLP, 샘플링 및 자기회귀 루프를 다룹니다.
- 2주차: 더 빠른 단일 요청. KV 캐시, 양자화된 가중치, SIMD 행렬 곱셈, 융합 프리미티브 및 타일링된 프리필과 같은 최적화를 추가합니다.
- 3주차: 미니 vLLM. 연속 배치, 청크 프리필, 페이징된 KV 캐시 및 페이지를 직접 읽는 FlashAttention을 구현합니다.
- 4주차: 코딩 에이전트. 작업 공간을 검사하고 승인된 편집을 수행하고 명령을 실행하고 체크포인트 및 재개하고 결과를 평가할 수 있는 검증된 에이전트를 구축합니다. 모두 제한된 루프를 통해 수행됩니다.
동반 서적은 skyzh.github.io/tiny-llm에 있으며, 저장소에는 참조 솔루션(tiny_llm_ref)과 테스트가 포함되어 있습니다.
대상 독자
프로그래밍과 저수준 성능을 이미 이해하고 있지만 LLM 추론이 종단 간 어떻게 작동하는지 파악하려는 시스템 엔지니어. Apple Silicon Mac이 있고 값비싼 GPU 서버 없이 학습하려는 경우에 적합합니다. 이 과정은 코드를 읽을 수 있고 행렬, 메모리 및 동시성과 같은 개념에 익숙하다고 가정하지만 깊은 ML 배경은 가정하지 않습니다.
하이라이트
- 종단 간 이해: 조각이 아닌 전체 추론 경로를 구축하고 수학을 실제 하드웨어 동작과 연결합니다.
- Apple 실리콘에서 로컬로 실행: GPU 클러스터가 필요 없습니다. 공유 메모리와 Metal 액세스가 있는 단일 머신이면 충분합니다.
- 실제 최신 모델(Qwen3-4B) 사용: 그룹 쿼리 어텐션, QK 정규화, BF16 활성화 및 4비트 가중치를 갖추고 있습니다.
- 실습으로 배우기: Python, C++ 또는 Metal로 연산자를 직접 구현하고 MLX를 오라클로 사용합니다.
- 4주 구조화된 경로: 기본 행렬 연산에서 미니 vLLM 및 코딩 에이전트로 확장됩니다.
- 자가 확인을 위한 참조 솔루션 및 테스트 포함.
- Discord를 통한 커뮤니티 지원.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트