AirLLM은 거대한 언어 모델을 한 번에 GPU에 올리지 않고 레이어 단위로 분할해 필요한 시점에 불러오는 로컬 추론 라이브러리다. 양자화(quantization), 증류(distillation), 프루닝(pruning) 없이도 70B 모델을 4GB GPU에서 실행하는 것을 목표로 한다.
왜 필요한가
일반적인 로컬 LLM 추론은 모델 가중치 전체 또는 큰 일부를 GPU 메모리에 올려야 한다. 이 방식은 빠르지만, 70B 이상 모델을 다루려면 고가 GPU나 대용량 Apple Silicon 공유 메모리가 필요하다.
AirLLM은 속도보다 메모리 장벽 낮추기에 초점을 둔다. 모델을 Hugging Face에서 받은 뒤 레이어별 shard로 바꾸고, 추론 중 필요한 레이어만 GPU로 옮긴다. 특히 희소 MoE(sparse mixture-of-experts) 모델은 토큰이 실제로 라우팅되는 expert만 스트리밍할 수 있어 메모리 사용량을 더 줄일 수 있다.
기본 사용법
pip install airllmfrom airllm import AutoModel
model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
tokens = model.tokenizer(
["What is the capital of United States?"],
return_tensors="pt",
return_attention_mask=False,
truncation=True,
max_length=128,
)
output = model.generate(
tokens["input_ids"].cuda(),
max_new_tokens=20,
use_cache=True,
return_dict_in_generate=True,
)
print(model.tokenizer.decode(output.sequences[0]))AutoModel.from_pretrained()에 Hugging Face repo ID나 로컬 경로를 넘기는 방식이라, 코드 표면은 일반 Transformers 사용법과 비슷하다. 첫 실행 때 원본 모델을 레이어 단위로 분해해 캐시에 저장하므로 디스크 여유 공간은 충분히 잡아야 한다.
지원 범위와 설정
| 항목 | 설명 |
|---|---|
compression | 4bit·8bit 블록 단위 압축을 선택해 로딩 크기와 추론 시간을 줄인다 |
prefetching | 다음 레이어 로딩과 계산을 겹쳐 지연을 줄인다 |
layer_shards_saving_path | 레이어 shard 저장 위치를 별도 지정한다 |
hf_token | gated model 다운로드에 Hugging Face 토큰을 쓴다 |
delete_original | 원본 모델을 지워 디스크 사용량을 줄인다 |
README 기준으로 Qwen, Llama 3.x/4, DeepSeek V2/V3, Phi, Gemma, ChatGLM, Baichuan, Mistral 계열을 지원한다. macOS 실행도 지원하지만 Apple Silicon과 MLX·torch 설치가 전제다.
언제 쓰면 좋은가
- 대형 모델의 품질을 확인하고 싶은데 GPU 메모리가 부족하다.
- 속도보다 “일단 내 장비에서 돌아가는가”가 더 중요하다.
- llama-cpp나 Ollama용 GGUF가 아직 준비되지 않은 모델을 Transformers 계열 인터페이스로 시험해야 한다.
- 희소 MoE 모델처럼 전체 파라미터 수는 크지만 활성 expert는 일부인 모델을 낮은 VRAM에서 실험하고 싶다.
반대로 높은 처리량, 낮은 지연, 장시간 서비스 운영이 목적이면 llama-cpp, vLLM, SGLang 같은 추론 서버가 더 현실적이다. AirLLM은 프로덕션 서빙 엔진이라기보다 메모리 제약을 우회하는 실험·검증 도구에 가깝다.
라이선스
Apache 2.0
관련 문서
- llama-cpp — GGUF 기반 로컬 LLM 추론 런타임
- local-llm-tips-ollama-lm-studio-llama-cpp — 로컬 LLM 실행 도구 선택 기준
- unified-memory — Apple Silicon 공유 메모리 기반 로컬 LLM 운용
참고 자료
- lyogavin/airllm — GitHub 공식 저장소