AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

AirLLM – 초대형 LLM을 작은 GPU 메모리로 실행하는 레이어 오프로딩 라이브러리

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 airllm
from 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 사용법과 비슷하다. 첫 실행 때 원본 모델을 레이어 단위로 분해해 캐시에 저장하므로 디스크 여유 공간은 충분히 잡아야 한다.

지원 범위와 설정

항목설명
compression4bit·8bit 블록 단위 압축을 선택해 로딩 크기와 추론 시간을 줄인다
prefetching다음 레이어 로딩과 계산을 겹쳐 지연을 줄인다
layer_shards_saving_path레이어 shard 저장 위치를 별도 지정한다
hf_tokengated 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

관련 문서

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)