lyogavin/airllm — AirLLM 70B inference with single 4GB GPU
AirLLM — 4GB GPU 한 장에서 70B 모델 추론
AirLLM은 모델 가중치를 레이어 단위로 디스크에서 불러와 GPU 메모리 사용량을 줄이는 오픈소스 라이브러리입니다. 저장소는 70B 모델을 4GB GPU에서 실행하는 사례와 대형 모델의 LoRA 학습 지원을 소개합니다.
- 주제
AI 요약
AirLLM은 대형 언어 모델의 전체 가중치를 GPU에 올리는 대신, 레이어를 하나씩 불러와 추론하는 라이브러리입니다. 저장소 설명에 따르면 GPU 메모리 요구량은 모델 전체 크기보다 한 번에 올리는 레이어 크기에 좌우됩니다. 양자화·증류·가지치기 없이 Llama 3 70B를 4GB GPU에서 실행하는 사례를 제시합니다.
메모리 사용 방식
모델을 처음 불러올 때 원본 가중치를 레이어별 파일로 분리해 저장합니다. 추론 과정에서는 레이어를 디스크에서 차례로 읽어 GPU에서 계산합니다. 예제 코드는 AutoModel.from_pretrained()에 Hugging Face 모델 ID를 전달한 뒤, 일반적인 Transformers 모델처럼 토크나이저와 generate()를 사용합니다. 저장소 표에는 Qwen3-235B가 약 3GB, DeepSeek-V3 671B가 약 12GB, Qwen3.8-27B가 3.33GB의 GPU 메모리를 사용한다고 적혀 있습니다. 이 수치는 저장소가 제시한 실행 사례입니다.
속도와 디스크 요구량
AirLLM은 레이어별 가중치 로딩이 병목이라고 설명합니다. 따라서 4비트 또는 8비트 블록 단위 양자화로 가중치 파일 크기를 줄이는 방식을 제공합니다. 저장소는 이 압축으로 추론 속도가 최대 3배 빨라지고 정확도 손실은 거의 없다고 안내합니다. 프리페칭(prefetching)으로 다음 레이어를 미리 읽어 계산과 로딩을 겹치는 기능도 있으며, 초기 릴리스 기록에는 이 기능으로 10% 속도 향상을 달성했다고 적혀 있습니다.
대신 모델을 레이어별로 변환해 저장하는 과정에서 디스크 공간이 많이 필요합니다. 원본 모델과 변환된 파일을 함께 보관할 여유 공간을 확인해야 합니다. delete_original=True를 설정하면 변환 후 원본 파일을 삭제해 저장 공간을 줄일 수 있습니다. 저장소는 디스크 부족이 MetadataIncompleteBuffer 오류의 주요 원인이라고 안내합니다.
대형 모델 LoRA 학습
저장소는 추론뿐 아니라 일부 대형 모델의 미세 조정도 지원한다고 설명합니다. 고정된 기본 가중치는 디스크에서 디코더 레이어 단위로 불러오고, 어댑터만 GPU에 둡니다. 예시로 Qwen3.8-Flash-Next 125B는 6GB 미만, Qwen3.8-27B는 시퀀스 길이 512에서 약 2GB로 학습한다고 제시합니다. JSONL 파일에 text를 넣는 다음 토큰 예측 방식과 prompt·completion을 넣는 지시 학습 형식을 지원합니다. 실행 스크립트에서 데이터 파일, 시퀀스 길이, 에폭 수, 어댑터 저장 경로를 지정합니다.
이 학습 경로는 Hugging Face Trainer나 bitsandbytes QLoRA와 다릅니다. Flash-Next를 사용하려면 저장소 안내에 따라 qwen4_exp가 포함된 Transformers 빌드가 필요합니다. 모델별로 Transformers 버전이나 추가 패키지 요구 사항도 다릅니다. 예를 들어 저장소는 Kimi K3에 compressed-tensors, flash-attn, CUDA 12 빌드의 PyTorch, Transformers 4.56.x를 요구한다고 적었습니다.
사용 전 확인할 점
기본 설치는 pip install airllm이며, 여러 모델 계열을 AutoModel로 불러오도록 구성했습니다. 다만 GPU 메모리 사용량만으로 실제 실행 부담을 판단하기는 어렵습니다. README의 안내에 따르면 원본 체크포인트를 내려받고 레이어별 파일을 만드는 데 큰 디스크 공간이 들며, 모델마다 라이브러리 버전과 실행 의존성이 다릅니다. macOS에서는 Apple Silicon만 지원한다고 안내합니다.
원문: GitHub / 번역·요약: Trawling