GitHub - Leonheart0910/airllm: AirLLM 70B inference with single 4GB GPU : 걍 존나 효율적인 서빙 추론 엔진
Service

GitHub - Leonheart0910/airllm: AirLLM 70B inference with single 4GB GPU : 걍 존나 효율적인 서빙 추론 엔진

Leonheart0910
2026.02.17
·GitHub·by 배레온/부산/개발자
#GPU Optimization#Inference Engine#LLM#Model Compression#Serving

핵심 포인트

  • 1AirLLM은 quantization, distillation, pruning 없이 4GB GPU에서 70B 대규모 언어 모델을 실행하고, 8GB VRAM으로 405B Llama3.1을 구동할 수 있도록 메모리 사용량을 최적화하는 추론 엔진입니다.
  • 2이 시스템은 모델을 layer-wise로 분할하여 로딩 오버헤드를 줄이고, 4bit/8bit block-wise compression을 통해 최대 3배 빠른 추론 속도를 제공하며, CPU 및 MacOS에서도 지원됩니다.
  • 3`AutoModel`을 통해 다양한 Hugging Face 모델(Llama, Qwen, ChatGLM 등)을 쉽게 로드하여 사용할 수 있으며, `hf_token` 및 `profiling_mode`와 같은 다양한 설정 옵션을 제공합니다.

AirLLM은 저사양 하드웨어 환경에서 대규모 언어 모델(LLM)의 추론 메모리 사용량을 최적화하는 데 중점을 둔 엔진입니다. 이 프로젝트의 핵심 목표는 단일 4GB GPU에서 양자화(quantization), 증류(distillation), 가지치기(pruning)와 같은 기술 없이 70B 파라미터 LLM을 구동하고, 더 나아가 8GB VRAM에서 Llama3.1 405B 모델을 실행하는 것입니다.

핵심 방법론:

  1. 계층별 모델 분해 및 로딩 (Layer-wise Model Decomposition and Loading):
AirLLM의 근본적인 접근 방식은 추론 시 원본 모델을 계층별(layer-wise)로 분해하여 저장하는 것입니다. 이는 전체 모델을 GPU VRAM에 한 번에 로드하는 대신, 각 계층을 필요할 때마다 동적으로 로드하고 처리함으로써 메모리 사용량을 크게 줄입니다. 이 과정은 디스크 공간을 많이 요구하며, 메모리 제약이 있는 환경에서 대규모 모델 추론을 가능하게 합니다.

  1. 모델 압축 (Model Compression) - 블록 단위 양자화(Block-wise Quantization):
AirLLM은 추론 속도를 최대 3배까지 향상시키기 위해 블록 단위 양자화 기반 모델 압축을 지원합니다. 이 방식은 4bit 또는 8bit 압축을 통해 구현됩니다.
  • 가중치(Weights)만 양자화: 일반적인 양자화는 가중치와 활성화(activations) 모두를 양자화하여 속도를 높이지만, AirLLM은 병목 현상이 주로 디스크 로딩에서 발생한다고 판단하여 가중치만(weights only) 양자화합니다. 이 접근 방식은 모든 종류의 입력에서 아웃라이어(outliers)의 영향을 최소화하고 정확도를 더 쉽게 유지할 수 있도록 합니다.
  • 공식적인 설명 (간접적 추론): 가중치의 양자화는 모델 로딩 크기를 줄여 디스크 I/O 병목 현상을 완화하는 데 기여합니다. 이를 통해 GPU에 필요한 데이터 전송량이 줄어들어 전체 추론 속도가 향상됩니다.
이러한 블록 단위 양자화는 pip install -U bitsandbytes를 통해 설치된 bitsandbytes 라이브러리를 활용합니다.

  1. 프리페칭 (Prefetching):
모델 로딩과 연산(compute)이 겹치도록 프리페칭 기법을 적용하여 추론 속도를 10% 향상시킵니다. 이는 다음 계층이 처리될 동안 현재 계층의 연산을 수행함으로써 유휴 시간을 줄이고 효율성을 극대화합니다. 현재는 AirLLMLlama2 모델에만 지원됩니다.

  1. AutoModel 및 범용성:
airllm.AutoModel 클래스는 모델 유형을 자동으로 감지하여 사용자가 특정 모델 클래스(예: AirLLMLlama2)를 명시할 필요 없이 다양한 Hugging Face 모델(Llama, Qwen, ChatGLM, Baichuan, Mistral, InternLM 등)을 쉽게 로드하고 사용할 수 있게 합니다. 이는 safetensors 형식의 모델도 지원합니다.

추가 기능 및 지원:

  • CPU 추론: v2.10.1 업데이트부터 CPU 추론 및 분할되지 않은(non-sharded) 모델을 지원합니다.
  • MacOS 지원: Apple Silicon 칩셋이 탑재된 Mac 장치에서 mlxtorch를 사용하여 네이티브 Python 환경에서 실행 가능합니다.
  • 구성 옵션:
    • compression: '4bit', '8bit', None (기본값)으로 압축 수준을 설정합니다.
    • profiling_mode: True 설정 시 시간 소비량을 출력합니다.
    • layer_shards_saving_path: 분할된 모델을 저장할 경로를 지정합니다.
    • hf_token: 게이트(gated) 모델 다운로드를 위한 Hugging Face API 토큰을 제공합니다.
    • delete_original: 원본 Hugging Face 모델을 삭제하여 디스크 공간을 절약합니다.

AirLLM은 저사양 환경에서 대규모 LLM 추론의 접근성을 높여, 제한된 리소스를 가진 사용자도 최신 LLM을 활용할 수 있도록 돕습니다.