
2조8000억 매개변수 AI를 4GB 카드로 돌리는 법
한 줄 요약: AirLLM은 실행할 층 하나만 GPU에 올렸다가 해제하는 방식으로, 2조8000억 개짜리 오픈 모델 Kimi K3를 3.72GB 그래픽 메모리에서 구동합니다.
최근 SNS에서 ’4GB 그래픽카드로 2조8000억 매개변수짜리 오픈 모델을 돌린다’는 소개가 화제였어요. 스펙이 거꾸로 간 것처럼 들리는 이야기라, AirLLM 리포와 저자의 기술 블로그를 직접 확인해 봤습니다. 결론을 먼저 말하면, 릴스의 주장은 README와 저자 글에서 그대로 확인됩니다. 대신 받아야 하는 대가도 뚜렷해요.
AirLLM은 어떤 라이브러리인가
AirLLM은 개발자 Gavin Li가 2023년 11월에 공개한 오픈소스 추론 라이브러리예요. Apache 2.0 라이선스로 풀려 있고, GitHub 스타는 3.9만을 넘겼습니다. 출발점은 Kaggle 대회에서 상위권을 기록한 커뮤니티 코드예요. 저자가 이 아이디어를 ‘pip 한 줄로 쓰는 라이브러리’ 형태로 다듬었어요.
쓰는 방법도 일반 transformers 라이브러리와 거의 같습니다.
from airllm import AutoModel
model = AutoModel.from_pretrained("moonshotai/Kimi-K3")
output = model.generate(input_tokens['input_ids'].cuda(), max_new_tokens=128)

README 기준으로 Llama·Qwen·DeepSeek·Mixtral·Kimi K3 등 주요 오픈 모델 대부분을 지원해요. 2026년에는 소형 VRAM에서의 파인튜닝 지원(v4)이 붙었고, Windows 통합 그래픽 지원도 풀 리퀘스트로 진행 중입니다.
한 번에 한 층만 올리는 원리
정답부터 말하면, 모델 전체가 아니라 층 하나만 메모리에 올리면 되기 때문이에요.
거대 언어 모델은 임베딩 층에서 시작해, 70B 모델 기준 80개쯤 되는 똑같이 생긴 트랜스포머 층을 통과하고, 출력층으로 끝나요. 추론에서 이 층들은 차례로 실행됩니다. 앞 층의 출력이 다음 층의 입력이 되는 구조라, 80개 중 지금 계산 중인 층 하나만 GPU에 있으면 진행할 수 있어요.
숫자로 확인해 보겠습니다. 70B 모델은 16비트 정밀도로 매개변수 데이터가 약 130GB인데, 80개 층으로 쪼개면 층당 약 1.6GB예요. 여기에 이전 문맥의 계산 결과를 쌓아 두는 KV 캐시(자주 쓰는 단어집)가 더해지는데, 입력 100 토큰 기준 약 30MB 수준입니다. 합계가 4GB 안에 들어가는 이유입니다.
층별 파일로 쪼개는 전처리
매번 디스크를 읽는 방식에서는 무엇을 얼마나 읽느냐가 곧 속도예요. 원본 가중치 파일은 보통 10GB 단위 청크로 저장되는데, 계산할 층마다 그 덩어리 전부를 읽으면 필요한 1.6GB를 위해 10GB를 읽는 낭비가 생깁니다. 그래서 AirLLM은 모델을 받은 뒤 전처리 과정에서 층 단위 샤드(조각 파일)로 재분할하고, 메모리 매핑으로 빠르게 읽히는 safetensors 형식으로 저장해요.
실행 단계에서는 Hugging Face accelerate의 meta device를 씁니다. 가중치 없이 코드 구조만 먼저 메모리에 만들어 두는 가상 장치로, 실제 텐서는 필요해진 시점에 CPU나 GPU 같은 실행 장치로 옮겨져요. 덕분에 모델을 불러오는 과정 자체는 메모리를 거의 쓰지 않습니다.
MoE 모델에서는 조건이 더 낫다
Kimi K3처럼 MoE(Mixture of Experts, 전문가 여럿을 골라 쓰는 구조) 모델은 토큰마다 일부 전문가만 켜져요. K3는 896개 라우팅 전문가 중 토큰당 16개를 활성화합니다. AirLLM은 이 경우 토큰이 선택한 전문가 가중치만 스트리밍(per-expert streaming)하므로, 매개변수 전체를 옮기던 방식보다 데이터 이동량이 훨씬 작아져요.
Kimi K3를 3.72GB에서 돌린 사례
README의 2026년 7월 항목에 따르면, AirLLM은 Moonshot AI의 Kimi K3를 RTX 6000 Ada 한 장에서 엔드투엔드 3.72GB로 구동했어요. K3는 2026년 7월 공개된 최초의 3T급 오픈 모델로, 2조8000억 개 매개변수의 MoE입니다. 토큰당 활성 파라미터는 1040억이고, 컨텍스트 창은 100만 토큰입니다(Kimi 팀 기술 리포트 기준).

단, K3를 돌릴 때는 조건이 붙어요. 모델 코드가 flash attention을 필수로 요구해서 compressed-tensors와 flash-attn 설치가 필요하고, PyTorch는 CUDA 12 빌드를 써야 해요(아직 CUDA 13용 휠이 없음). transformers도 4.56.x 버전에 머물러야 합니다(모델의 원격 코드가 5.x에서 로드되지 않아요).
지원 모델별 GPU 메모리를 README 표에서 옮기면 아래와 같아요.
| 모델 | 매개변수 | GPU 메모리 |
|---|---|---|
| Qwen3·Mistral·Phi급 8B | 80억 | 약 1~2GB |
| Qwen3-235B (MoE) | 2350억 | 약 3GB |
| Qwen3.8-27B | 270억 | 3.33GB |
| Kimi K3 (MoE) | 2조8000억(활성 1040억) | 3.72GB |
| Llama 3.x 70B | 700억 | 약 4GB |
| Qwen3.8-Flash-Next (MoE) | 약 1800억 | 5.95GB |
| Llama 3.1 405B | 4050억 | 약 8GB |
| DeepSeek-V3 | 6710억 | 약 12GB |
표를 세로로 읽으면 규칙이 보여요. 매개변수 크기와 GPU 메모리가 정비례하지 않습니다. 2350억짜리가 700억짜리보다 메모리가 적고, 2조8000억짜리 K3의 3.72GB는 700억짜리 70B(약 4GB)와 비슷한 수준이에요. 층·전문가 단위 스트리밍과 MoE 라우팅이 만드는 결과예요.
받는 대가: 느림과 디스크
대가의 첫째는 속도입니다. 새 토큰을 하나 만들 때마다 80개 층 모두가 디스크에서 GPU로 흘러야 해요. 저자도 디스크 읽기가 추론 전체의 가장 느린 병목이라고 적어 뒀습니다. 예를 들어 초당 7GB 수준의 NVMe라면 토큰 하나에 대략 20초 가량이 드는 계산이 나옵니다(130GB 기준의 간단한 임의 계산). 다만 README에는 초당 토큰 수 같은 공식 속도 수치가 아직 없어요.
저자의 실사용 판단도 명시적입니다. T4 같은 저가 GPU에서는 상당히 느려서 챗봇 같은 대화형 용도에는 맞지 않고, RAG·PDF 분석 같은 오프라인 데이터 작업이 더 알맞다고 썼어요.
둘째는 디스크 공간입니다. 전처리가 층별 분할본을 새로 만들기 때문에, 일단 원본과 분할본 둘 다 자리를 차지해요. 공간 부담은 최대 2배라서, Qwen3.8-Flash-Next는 분할본 마련에 약 360GB의 디스크가 필요합니다(README). delete_original=True 옵션으로 원본을 지워 절반으로 줄일 수 있고, 공간이 부족하면 safetensors 헤더 오류가 나니 이 오류가 보이면 디스크부터 점검하는 게 순서예요(FAQ).
셋째는 환경입니다. 지원 조합은 NVIDIA CUDA GPU 또는 Apple silicon Mac(mlx 빌드 사용)이고, 2024년부터 CPU 추론도 가능해요. Windows 통합 그래픽은 아직 병합되지 않은 풀 리퀘스트 단계입니다.
속도를 높이는 두 가지 옵션
첫째는 블록별 양자화 압축입니다. 4비트 또는 8비트로 가중치만 눌러 로딩량을 줄이는 방식으로, 최대 3배 속도 향상을 README가 제시해요. 활성값은 원래 정밀도를 유지하기 때문에 일반 양자화보다 정확도 관리가 쉽다는 근거(arXiv 2212.09720)를 함께 봤습니다. 단, ’무양자화’가 이 라이브러리의 강점인 만큼, 속도를 위해 이 옵션을 켜면 그 강점은 조금 희석돼요.
둘째는 프리페치입니다. 지금 계산 중인 층을 도는 동안 다음 층을 미리 읽어 로딩과 계산을 겹치는 방식이고, README 기준 약 10% 향상이에요.
그래서 어디에 쓸 만한가
정리하면 두 용도가 실전적입니다. 첫째는 파인튜닝이에요. 2026년 9월 v4에서 이 방법이 학습으로 확장됐는데, 동결된 기반 가중치는 디스크에서 스트리밍하고 학습 대상인 LoRA 어댑터(모델 위에 얹는 작은 학습 조각)만 GPU에 상주시켜요. 덕분에 125B급 Qwen3.8-Flash-Next를 RTX 3060 Ti 6GB에서 훈련할 수 있게 됐습니다. 고사양 카드가 없는 개인이 거대 모델 커스텀 학습을 시도하는 현실적인 통로예요.
둘째는 오프라인 배치 작업입니다. 문서 묶음 정리와 RAG 인덱스 구축처럼 오래 걸려도 되는 작업이 부합해요. 속도 대신 ’메모리 벽’을 없앤 점이 값어치라서, 밤에 돌려 두고 아침에 결과를 받는 방식으로 쓰면 됩니다.
반대로 대화형 용도라면 llama.cpp 같은 양자화 실행 도구나 API를 쓰는 편이 여전히 기본값입니다. 사용은 단순합니다. pip install airllm 한 줄, 그리고 AutoModel.from_pretrained("<모델 ID>") 한 줄이면 준비가 끝나니, 필요할 때 한 번 돌려 보세요.
이 글의 내용은 아래 자료를 기준으로 확인했어요. 화면 캡처는 정리 시점(2026-10-19)에 직접 접속해 찍은 것이에요.