An LLM inside an LLM - Same guy who put a RISK-V CPU inside Qwen has now made Karpathy's stories260k run on an NPU compiled inside Qwen 3.5-4B's weights
QwenPU, 전용 벡터 유닛으로 Qwen 내부 Llama의 실행 흔적 토큰을 Qwenputer NPU 대비 76% 줄여
QwenPU는 Qwen3.5-4B 가중치에 컴파일한 CPU와 벡터 유닛으로 26만 매개변수 Llama 프로그램 stories260K를 실행합니다. 작성자 비교에서 이야기 토큰당 실행 흔적은 이전 Qwenputer NPU 방식의 22만5천 개에서 5만3천 개로 줄었습니다. 전체 체크포인트를 올리려면 40GB 이상 메모리를 갖춘 GPU가 필요하며, 시연은 컴퓨터 층만 실행합니다.
- 주제
본문
QwenPU는 Qwenputer의 NPU가 CPU에 도트곱 명령을 하나씩 전달하던 방식에서 벡터 연산을 전용 유닛으로 옮겼습니다. 작성자가 비교한 stories260K 실행 흔적 토큰은 이야기 토큰당 22만5천 개에서 5만3천 개로 줄었습니다.
QwenPU는 Qwen3.5-4B의 원래 가중치를 유지하면서 앞에 컴파일 층 13개를 더해 32비트 RISC-V CPU와 벡터 유닛을 구현했습니다. 새 가중치는 학습하지 않고 컴파일러가 계산합니다. 이 장치로 26만 매개변수 Llama인 stories260K를 C 프로그램으로 실행합니다. Llama의 int4 가중치는 체크포인트에 넣지 않고 프로그램에서 벡터 유닛 메모리로 불러옵니다.
Qwenputer에서는 NPU가 제공하는 도트곱 명령마다 실행 흔적 토큰 하나가 필요했습니다. QwenPU는 벡터 유닛에 별도 메모리를 두고, 64개 값으로 이뤄진 행의 연산 결과를 몇 개 토큰에 걸쳐 내보냅니다. 메모리는 Qwen의 Gated DeltaNet 상태에 둡니다. 실행 흔적 토큰은 컴파일된 회로의 계산 단계를 나타냅니다. 작성자의 표에 따르면 이야기 토큰당 실행 흔적은 일반 C int8 방식에서 243만 개, Qwenputer의 VDOT·SMAQA 방식에서 22만5천 개, QwenPU에서 5만3천 개입니다.
작성자는 L4 GPU 실행기가 초당 약 3,300개 실행 흔적 토큰을 처리해 이야기 토큰 하나를 만드는 데 약 16초가 걸렸다고 밝혔습니다. Qwenputer NPU에서는 같은 지표가 약 41초였습니다. 전체 bf16 체크포인트는 26.7GB로, 통째로 올리려면 40GB 이상 메모리를 갖춘 GPU가 필요합니다. 이야기 시연과 일부 검사는 컴퓨터 층만 실행해 24GB GPU에서도 작동합니다.
검증 범위는 실행 경로에 따라 다릅니다. GPU 실행기에서는 이야기 프로그램 전체 3,184,920단계를 기준 모델과 매 단계 대조해 일치했습니다. QwenPU 체크포인트 자체 층에서는 같은 테스트 프로그램과 이야기 프로그램의 첫 30,000단계까지 일치했습니다.
자료: GitHub / 정리·해설: Trawling