AI Neo Lab
스킬

3.6만 개 스타 AirLLM, 4GB GPU 하나로 70B 모델 돌리기

고사양 GPU 없이 대형 언어 모델을 로컬에서 돌리려니 VRAM 부족으로 번번이 막힙니다. AirLLM은 레이어 단위 스트리밍과 블록 단위 양자화로 4GB VRAM만으로 70B, 6GB로 125B, 12GB로 671B 모델까지 추론·학습하게 만듭니다. 이 글은 설치부터 추론·학습·압축 가속까지 실전 단계를 정리합니다.

엔비디아 RTX 3060(12GB)조차 버거운 70B·125B·671B 모델을 4~12GB VRAM만으로 돌려보고 싶다면 AirLLM이 답입니다. 3.6만 개 스타를 받은 이 라이브러리는 양자화·증류·가지치기 없이 레이어를 디스크에서 GPU로 한 장씩 스트리밍하는 방식으로 메모리 장벽을 허물었습니다.

왜 쓰나요 — 4GB·6GB·12GB 실사례

보통 거대 언어 모델을 다루려면 고가의 엔터프라이즈 GPU 장비가 필요하다고 생각하기 쉬워요. 하지만 AirLLM을 활용하면 양자화, 지식 증류, 가지치기 없이도 단일 4GB GPU 카드 환경에서 70B 크기의 대규모 모델을 직접 구동할 수 있어요.

모델파라미터 크기필요 VRAM지원 작업
기본 70B 모델70B4GB추론
Kimi K32.8T4GB 미만추론
Qwen3.8-Flash-Next125B6GB추론 및 학습
Qwen3.8-27B27B약 2GB (seq 512 기준)학습
DeepSeek-V3671B약 12GB추론

특히 학습 기능의 경우 동결된 가중치를 한 번에 한 레이어씩 스트리밍하고 어댑터만 GPU에 유지하는 방식을 써요. 덕분에 RTX 3060 Ti 같은 6GB VRAM 환경에서도 Qwen3.8-Flash-Next (125B) 같은 초대형 모델을 원활하게 학습할 수 있답니다.

설치·추론 3단계 실습

이제 AirLLM을 직접 설치하고 70B 모델을 4GB GPU에서 돌려볼 차례예요. 전체 과정은 파이썬 패키지 설치 → 모델 로드·레이어 분할 저장 → 첫 추론 실행, 딱 3단계로 끝납니다.

  1. 1. 패키지 설치

    터미널에서 pip install airllm 명령으로 최신 버전을 받습니다. PyPI에 올라온 패키지라 별도 빌드 없이 바로 쓸 수 있어요.

  2. 2. 모델 초기화 및 레이어 분할 저장

    AirLLMLlama2 클래스를 import한 뒤, 허깅페이스 리포지터리 ID(meta-llama/Llama-2-70b-hf 등)나 로컬 경로를 넘겨 인스턴스를 만듭니다. 이때 layer_shards_saving_path 인자로 분할된 레이어 가중치를 저장할 폴더를 지정하면, 첫 실행 시 모델이 레이어 단위로 쪼개져 디스크에 캐시됩니다. 허깅페이스 캐시 디렉터리에 충분한 디스크 여유 공간이 있어야 합니다.

  3. 3. 첫 추론 실행

    일반 트랜스포머 모델처럼 generate() 메서드를 호출하면 됩니다. AirLLM이 자동으로 GPU 메모리에 필요한 레이어만 올려가며 70B 파라미터 전체를 4GB VRAM 안에서 추론합니다.

최소 실습 코드
pip install airllm

from airllm import AirLLMLlama2

model = AirLLMLlama2(
    model_name_or_path="meta-llama/Llama-2-70b-hf",
    layer_shards_saving_path="./llama2_70b_shards"
)

output = model.generate(
    input_ids=input_ids,
    max_new_tokens=128
)

이 세 줄이면 3.6만 개 스타를 받은 AirLLM의 핵심 흐름을 바로 확인할 수 있습니다. 다음 섹션에서는 실제 벤치마크 수치와 메모리 사용량 변화를 자세히 다뤄볼게요.

학습 파이프라인 — 6GB로 125B 파인튜닝

GitHub 저장소 lyogavin/airllm은 3.6만 개 스타와 3,796개의 포크를 보유하고 있어요. 주 언어는 Jupyter Notebook이며, Apache-2.0 라이선스를 사용합니다. 처음 만들어진 시점은 3년 4개월 전(2023년 6월)이고, 마지막 업데이트는 이번 달(2026년 10월)입니다. 주요 태그는 chinese-llm, finetune, generative-ai, llama, lora 등으로, 오픈소스 대형 언어 모델을 다루는 개발자에게 유용합니다.

AirLLM은 양자화·증류·프루닝 없이도 70B 규모 모델을 4GB GPU에서 바로 추론할 수 있게 메모리 사용량을 크게 줄여줍니다. 특히 Qwen3.8‑Flash‑Next(125B)를 6GB, DeepSeek‑V3(671B)를 약 12GB에서 실행할 수 있어요. 2026년 9월 업데이트로는 가중치를 레이어 단위로 스트리밍하고 어댑터만 GPU에 올리는 학습 방식도 지원해, 125B 모델을 6GB 환경에서 파인튜닝할 수 있게 되었습니다. 블록‑와이즈 양자화 기반 압축으로 추론 속도가 최대 3배 빨라지고 정확도 손실은 거의 없어요.

터미널에서 실행
pip install airllm
  1. 설치

    위 명령어로 AirLLM 패키지를 설치합니다.

  2. 추론

    AirLLMLlama2 를 초기화하고 HuggingFace 모델 ID 를 전달하면 4GB GPU에서도 70B 모델을 바로 실행할 수 있어요.

  3. 학습

    가중치를 레이어별로 스트리밍하고 어댑터만 GPU에 올려 Qwen3.8‑Flash‑Next(125B)를 6GB 환경에서 파인튜닝합니다.

GPU VRAM지원 모델
4GB70B (예: Kimi K3)
6GB125B Qwen3.8‑Flash‑Next
~12GB671B DeepSeek‑V3

모델 압축으로 3배 빠르게

AirLLM에 새로 추가된 모델 압축 기능은 블록 단위 양자화를 기반으로 합니다. 이 옵션을 켜면 기존 추론 과정을 그대로 유지하면서도 메모리 사용량은 그대로이며, 추론 속도가 최대 3배까지 빨라집니다. 특히 정확도 손실은 거의 무시할 수준으로, 대규모 언어 모델을 4GB GPU에서 실행할 때도 성능 저하를 크게 느끼지 못합니다.

압축 옵션을 활용하려면 최신 버전의 AirLLM을 설치한 뒤, 추론 단계에서 block‑wise quantization을 활성화하면 됩니다. 이 과정은 모델을 레이어 단위로 분할해 저장하고, 실행 시 압축된 레이어를 바로 불러오는 방식으로 동작합니다. 따라서 기존 워크플로와 크게 다르지 않으며, 별도의 추가 하드웨어 없이도 70B 모델을 손쉽게 가속화할 수 있습니다.

압축 전압축 후
추론 속도기존 대비 3배 빠름
정확도 손실거의 무시 수준

주의할 점·디스크·캐시 관리

AirLLM으로 70B 모델을 4GB GPU에서 돌릴 때 가장 먼저 챙겨야 할 건 허깅페이스 캐시 디렉터리의 디스크 여유 공간이에요. 추론을 시작하면 원본 모델이 레이어 단위로 분해돼 캐시 폴더에 저장되는데, 70B 모델 기준 수십 기가바이트가 순식간에 차지하기 때문이죠. layer_shards_saving_path 인자로 저장 경로를 따로 지정하지 않으면 기본 캐시 위치(~/.cache/huggingface)에 쌓이므로, 루트 파티션 용량이 부족하면 프로세스가 중단될 수 있습니다.

맥OS 환경에서 피해야 할 함정

맥OS는 통합 메모리 구조라 GPU·CPU 메모리 경계가 모호하지만, AirLLM의 레이어 분할 로직은 CUDA 전용 커널을 가정하고 작성돼 있어요. 따라서 MPS 백엔드로 돌리면 레이어 오프로드 시 torch.mps 미지원 연산 에러가 나거나, 메모리 매핑 파일 핸들이 초과돼 OSError: Too many open files가 뜹니다. 맥에서 테스트해야 한다면 Docker로 리눅스 컨테이너를 띄우거나, 애플 실리콘 네이티브 지원이 추가될 때까지 기다리는 게 안전해요.

멀티 GPU 구성 시 주의사항

캐시 용량 확인·정리
du -sh ~/.cache/huggingface
# 필요 시 삭제
huggingface-cli delete-cache
자주 묻는 질문 — 캐시·디스크·맥OS

Q. layer_shards_saving_path를 외부 SSD로 지정하면 속도가 느려지나요? A. NVMe SSD면 순차 읽기 대역폭이 충분해 병목이 거의 없어요. SATA SSD나 HDD는 레이어 로드 지연이 체감될 수 있습니다.

Q. 맥OS에서 torch.mps로 강제 실행하면 안 되나요? A. 레이어 분할 저장이 cuda: 디바이스를 전제로 파일 매핑을 생성하므로, MPS로 우회해도 중간 텐서가 CPU 메모리로 내려가면서 결국 OOM이 납니다.

Q. 멀티 GPU로 125B 모델을 나눠서 돌릴 수 없나요? A. 현재 버전은 단일 GPU 순차 오프로드만 지원해요. 멀티 GPU 파이프라인 병렬은 로드맵에 있지만 아직 실험 단계입니다.


이런 글도 있어요