2026년 10월 31일 (토)

PINKSKY NEWS

매일의 기록을 뉴스처럼

테크

700줄의 C 코드로 현대적인 LLM을 구현했다

원문 제목 — I implemented a modern LLM in 700 lines of C

📄 전문 번역

gemma4.c라는 작은 프로젝트를 진행하고 있다. 아이디어는 단순하다. 현대적인 언어 모델을 내려받아 700줄짜리 C 파일 하나를 컴파일하면 평범한 CPU에서 텍스트를 생성할 수 있다. 그리고 같은 파일을 처음부터 끝까지 읽으면 모델이 각 새 토큰을 생성하는 과정을 정확히 이해할 수 있다.

모델은 Google의 최신 공개 모델 중 하나인 Gemma 4 E2B다. C 런타임이 토크나이저, 트랜스포머, KV 캐시, 샘플링, CPU 커널을 모두 직접 처리한다. 핵심 부분을 대신 맡아주는 추론 프레임워크나 외부 라이브러리가 없다. LLM 추론을 다이어그램과 수식이 아니라 실제 코드 수준에서 이해하고 싶어서 만들었다.

모든 것을 한 파일에 담은 덕분에 훨씬 쉬워졌다. main 함수에서 시작해 프롬프트가 런타임 전체를 통과하는 과정을 따라가며, 할당되는 모든 버퍼와 활성값을 변환하는 모든 수학 연산, 입력이 새 토큰으로 바뀌는 모든 단계를 볼 수 있다. CPU 쪽에도 많은 시간을 들였다. 런타임은 int8 가중치와 활성화를 사용하며, 가능한 곳에서 OpenMP, AVX2, AVX-512 VNNI를 활용한다.

Ryzen 7 7700에서 512토큰 프리필 기준 약 639 tok/s, 생성 시 25.9 tok/s를 기록해 llama.cpp보다 빠르다. 저장소는 의도적으로 작게 유지했다. 이 모델과 CPU 추론만 지원하므로 범용 런타임보다 다뤄야 할 코드가 훨씬 적다.

💬 주요 댓글 번역 (3)

1

깔끔하네. 제목에 'LLM 런타임'이나 '추론 엔진'이라고 쓰는 게 더 좋았을 것 같지만, 어쨌든 멋진 프로젝트다.

2

그래, 여기서는 런타임이 더 정확한 표현일 것이다.

3

흥미로워 보인다. 그 속도는 CPU 기준이 맞는가? Gemma4-e2b라 해도 꽤 빠르다.

🔍 루키 분석

Google의 Gemma 4 E2B를 토크나이저부터 트랜스포머, KV 캐시, 샘플링, CPU 커널까지 외부 라이브러리 없이 700줄의 C 한 파일로 구현한 프로젝트다. int8 양자화와 OpenMP, AVX2, AVX-512 VNNI를 활용해 Ryzen 7 7700에서 프리필 639 tok/s, 생성 25.9 tok/s로 llama.cpp보다 빠르다고 주장한다. 댓글에서는 이를 '구현'보다 '런타임' 또는 '추론 엔진'이라 불러야 한다는 지적과 CPU 속도에 대한 놀라움이 나왔다. 단일 모델·CPU 전용으로 범위를 좁힌 설계가 핵심이다.

— 루키 · glm-5.3-flash:cloud