본문으로 건너뛰기

© 2026 Molayo

Lobste.rs헤드라인2026. 05. 22. 10:39

sectorllm: 1500 바이트 미만의 x86 어셈블리로 구현한 llama2 추론

요약

1189 바이트의 x86 어셈블리 코드로 구현된 초소형 Llama2 추론 엔진 sectorllm을 소개합니다. OS 없이 부팅하여 양자화된 모델을 직접 실행하며, 코드 크기 최소화(golfing)를 목표로 설계되었습니다.

핵심 포인트

  • 1189 바이트의 x86 리얼 모드 어셈블리로 구현된 초소형 엔진
  • int8 양자화 및 룩업 테이블을 활용한 디코딩 오버헤드 최소화
  • OS 로드 전 디스크에서 직접 부팅하여 모델 실행 가능
  • 코드 크기 극대화를 위해 성능과 정밀도를 일부 타협한 설계

sectorllm

세계에서 가장 작은 llama2 추론 엔진

1189 바이트의 x86 리얼 모드 (real mode) 어셈블리로 구성된 완전한 Llama2 추론 엔진입니다.
운영체제(OS)가 로드되기 전에 디스크에서 직접 부팅하여, 양자화된 (quantized) 모델을 로드하고 텍스트를 생성합니다.

image

이 엔진은 5개의 레이어 (layers), 8개의 어텐션 헤드 (attention heads), 512개의 토큰 어휘집 (vocabulary)을 가진 260K 파라미터 규모의 어린이 동화 학습용 초소형 모델인 stories260K를 실행할 수 있습니다.

실행 방법 (Running)

./download.sh && python3 quantize.py && make run

작동 원리 (How it works)

부트 섹터 (boot sector)가 디스크에서 모델 데이터를 고메모리 (high memory)로 로드한 다음, 각 토큰에 대해 전체 트랜스포머 (transformer) 순전파 (forward pass)를 실행합니다.

파이썬 스크립트(quantize.py)는 디코딩 오버헤드 (decoding overhead)를 최소화하도록 설계된 커스텀 바이너리 형식으로 모델을 패킹합니다. 가중치 (Weights)는 전역 절대값 최대치 스케일 (global absmax scale)을 사용하여 int8로 양자화되며, expsilu를 위한 룩업 테이블 (lookup tables)은 미리 계산되어 직접 임베드됩니다. 또한 Q/K/V 및 gate/up 가중치 행렬 (weight matrices)이 융합 (fused)되어 있어, 어셈블리에서 세 번의 호출 대신 단 한 번의 행렬 곱셈 (matmul) 호출을 수행할 수 있습니다.

KV 캐시 (KV cache)가 메모리에 들어갈 수 있도록 CPU를 언리얼 모드 (unreal mode)로 전환합니다. 이전에는 메모리 사용량을 최소화하기 위해 int8로 양자화했으나, 코드 골핑 (golfing, 코드 크기 최소화)을 극대화하기 위해 이 부분은 제거되었습니다.

샘플링 (Sampling)은 현재 탐욕적 아규맥스 (greedy argmax) 방식으로만 수행됩니다. 더 정교한 샘플링 기술을 위한 공간은 충분히 있을 수 있으나, 목표는 공간을 최소화하는 것이었습니다.

한계점 (Limitations)

  1. 코드가 최대한 골핑 (golfed)되도록 작성되었으므로, 성능과 정밀도가 최적은 아닙니다.
  2. 모델 아키텍처 (architecture)와 프롬프트 (prompt)가 하드코딩되어 있습니다.

기술적으로는 더 큰 모델 (예: stories15M)을 로드하도록 수정하는 것이 가능할 수 있지만, 이를 위해서는 보호 모드 (protected mode) 또는 언리얼 모드 (unreal mode)로의 전환이 필요할 것입니다.

기여하기 (Contributing)

만약 당신이 어셈블리 마법사이며 바이너리 크기 (binary size)를 줄일 방법을 찾을 수 있다면, 기여해 주세요!
이 프로젝트의 목표는 속임수 없이 가능한 최소한의 바이트 (bytes)로 무엇이 가능한지를 보여주는 것입니다.
코드에 당신의 이름을 추가하는 것을 잊지 마세요 ;)

속임수 (Cheating)에는 다음이 포함됩니다:

  • 자기 압축 (self-decompression) 트릭
  • 추론 로직 (inference logic)을 Python 스크립트로 이동하는 것

AI 자동 생성 콘텐츠

본 콘텐츠는 Lobste.rs AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0