내가 직접 만든 언어로 7B Mixture-of-Experts LLM을 실행했다 — fp32와 토큰 단위로 일치함
요약
직접 개발한 머신 퍼스트 언어(machin)를 사용하여 외부 의존성 없이 7B MoE 모델을 실행하는 추론 엔진을 구현했습니다. MoE 구조를 활용해 디스크 스트리밍 방식으로 메모리 한계를 극복하며, fp32 레퍼런스와 토큰 단위로 일치하는 높은 정확도를 달성했습니다.
핵심 포인트
- 의존성 제로(Zero-dependency)의 정적 바이너리 추론 엔진 구축
- MoE 모델을 활용해 전체 파라미터가 아닌 활성 파라미터만 사용하여 속도 최적화
- OS 페이지 캐시를 통한 디스크 기반 전문가(Expert) 스트리밍 구현
- int8/int4 양자화 적용 시에도 fp32와 동일한 토큰 출력 정확도 검증
저는 머신 퍼스트 언어(machine-first language)인 machin (MFL)을 구축해 왔으며, 이를 사용하여 의존성 제로 (zero dependencies) — PyTorch, llama.cpp, BLAS, 런타임 시 Python 없이 — LLM 추론 엔진을 작성하는 데 사용하고 있습니다. 오직 정적 바이너리(static binary)만 존재합니다.
장벽 (The wall)
밀집형(dense) 1B 모델을 노트북 CPU에서 실행했을 때 약 20 tok/s가 나왔습니다. 이것이 한계이며, 이는 근본적인 문제입니다. 디코딩 속도는 **토큰당 이동하는 바이트 수 (bytes moved per token)**에 의해 결정되며, 성능이 낮은 하드웨어에서는 메모리 버스(memory bus)에 묶이게 됩니다. 저는 추측적 디코딩 (speculative decoding), int4, 문맥적 희소성 (contextual sparsity), 조기 종료 (early-exit), 연속 배칭 (continuous batching) 등 모든 기법을 구축하고 측정했습니다. 모든 기법이 약 1.35배의 성능 향상에 그쳤는데, 이는 시스템이 균형을 이루고 있기 때문입니다. 대역폭을 아끼면 연산 제한 (compute-bound)에 걸리고, 그 반대도 마찬가지입니다.
혁신은 엔진에 있는 것이 아닙니다. 모델에 있습니다.
Mixture-of-Experts (MoE)
밀집형 (dense) 모델은 모든 토큰에 대해 전체 파라미터(params) 비용을 지불합니다. MoE는 품질과 속도를 분리합니다. 토큰당 오직 몇 개의 전문가(experts)만 활성화되기 때문입니다. OLMoE-1B-7B는 전체 6.9B이지만 활성 파라미터는 1.3B입니다 (레이어당 64개 전문가 중 상위 8개).
그리고 오직 소수만이 활성화되므로, 체크포인트를 mmap 하고 운영체제(OS)의 페이지 캐시(page cache)가 디스크에서 콜드 전문가(cold experts)를 스트리밍하도록 할 수 있습니다. 즉, 전체 크기는 RAM이 아닌 디스크에 의해 제한됩니다.
작동하며, 정확합니다
저는 원본 가중치를 읽는 fp32 numpy 레퍼런스를 작성했고, 순수 MFL로 만든 int8 엔진을 토큰 단위로 대조하여 확인했습니다:
numpy fp32 : The capital of France is Paris. The capital of the United States is Washington
pure MFL : The capital of France is Paris. The capital of the United States is Washington
12/12 토큰이 일치합니다. 양자화 (Quantization)로 인해 값이 뒤집힌 것이 단 하나도 없었습니다.
| experts | lm_head | size | tok/s |
|---|---|---|---|
| int8 | int8 | 7.65 GB | 14.5 |
| int4 | int8 | 4.43 GB | 11.2 |
int8 lm_head는 속도(메모리 제한 상황)를 확보해주고, int4 experts는 점유 공간(footprint)을 확보해줍니다. 그 후 저는 토크나이저(tokenizer)를 포함한 모든 것을 순수 MFL로 구현하여 OpenAI 호환 서버로 감쌌고, 공식 openai 클라이언트를 그곳으로 연결했습니다. 잘 작동합니다.
7B급 품질을 ~1B급 속도로, 수치 라이브러리가 전혀 없는 여러분이 소유한 하드웨어에서 구현했습니다.
전체 글: https://blog.intrane.fr/a-7b-moe-llm-at-1b-speed-in-pure-machin
코드 (엔진, 컨버터, 토크나이저, 모든 막다른 길): https://github.com/javimosch/machin-colibri
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기