로컬 LLM 파인튜닝, 24GB 그래픽카드로 어디까지 되나

로컬 LLM 파인튜닝에 쓸 24GB·32GB 그래픽카드 히어로 컷

로컬 LLM 파인튜닝은 24GB 그래픽카드 한 장으로 시작할 수 있습니다. 조건은 4비트 QLoRA입니다. 같은 7B 모델도 QLoRA는 최소 5GB, 16비트 LoRA는 19GB를 요구해 24GB 카드에서 쓸 수 있는 모델 크기가 갈립니다.

이 글은 학습 도구가 공개한 VRAM 요구량 표와 공식 문서를 근거로 카드 메모리별 가능 범위를 정리했습니다. 표의 숫자는 학습 도구가 밝힌 절대 최소값입니다. 실제 학습에서는 시퀀스 길이와 배치가 여기에 더해집니다.

로컬 LLM 파인튜닝, 4비트와 16비트가 메모리를 3~4배 가른다

QLoRA는 원본 모델을 4비트로 얼려 두고 작은 어댑터만 학습합니다. LoRA는 원본을 16비트 그대로 두고 어댑터를 학습합니다. 어댑터는 전체 가중치의 1% 남짓이라, 원본을 몇 비트로 들고 있느냐가 메모리를 거의 전부 결정합니다. 4비트로 얼리면 가중치 메모리가 4분의 3 줄어듭니다.

공개된 최소 요구량은 아래와 같습니다. 4비트와 16비트의 차이는 7B와 70B에서 약 4배, 27B와 32B에서는 약 3배입니다.

모델QLoRA 4비트LoRA 16비트24GB 카드
7B5GB19GB둘 다 가능
14B8.5GB33GBQLoRA만
27B22GB64GBQLoRA만
32B26GB76GB불가
70B41GB164GB불가

표에 없는 중간 크기도 확인해 두면 좋습니다. QLoRA는 8B 6GB, 9B 6.5GB, 11B 7.5GB이고, 16비트 LoRA는 9B 24GB, 11B 29GB로 한 단계씩 올라갑니다.

표에서 두 가지가 바로 보입니다. 24GB 카드는 QLoRA로 27B까지 들어가고, 16비트 LoRA는 9B가 표상 최소 24GB로 상한입니다. 27B QLoRA는 22GB라 24GB 카드는 상한에 붙습니다.

QLoRA가 메모리를 줄이는 방식은 세 가지입니다. 가중치를 4비트 NormalFloat(NF4)로 담고, 양자화 상수를 한 번 더 압축하는 이중 양자화를 쓰고, 메모리가 튀는 순간을 CPU로 넘기는 페이징 옵티마이저를 둡니다. 16비트 원본을 그대로 두는 LoRA와 갈리는 지점이 여기입니다.

4비트라고 해서 정확도가 무조건 떨어지는 것도 아닙니다. 도구 문서는 동적 4비트 양자화로 QLoRA와 LoRA의 차이가 상당 부분 회복됐고, 학습과 서빙의 정밀도를 같게 맞추는 편이 정확도에 유리하다고 설명합니다. 집에서 4비트로 돌릴 모델이라면 학습도 4비트로 맞추는 편이 낫습니다.

결과물의 크기도 다릅니다. LoRA 계열은 100MB 수준의 어댑터 파일로 저장되어 모델마다 여러 개를 보관할 수 있습니다. 전체 파인튜닝은 모델 전체 가중치를 다시 저장합니다.

같은 4비트라도 모델 이름의 접미사가 다르면 메모리가 조금 달라집니다. 동적 4비트 양자화 모델은 표준 4비트보다 메모리를 조금 더 쓰지만 정확도가 높습니다.

7B 파인튜닝, 최소 5GB지만 실제로는 7~10GB

최소값에는 학습 중간에 생기는 활성화 값이 빠져 있습니다. 공개된 재현 노트북에서 7B QLoRA는 이론상 4.5GB로 계산됐지만, 시퀀스 길이 512에서 약 7GB, 1024에서 약 10GB를 실제로 썼습니다. 배치 4로 돌린 실험에서도 약 10GB였습니다.

같은 문서는 메모리 부족이 나면 배치를 1~3으로 낮추라고 안내합니다. 최소값에 활성화분 여유를 얹어 계산하는 편이 안전합니다. 5GB로 적힌 7B도 8GB 카드에서는 시퀀스 512 기준 7GB라 여유가 거의 없습니다.

그래픽카드 후면 12핀 전원 커넥터와 방열판 핀 접사

32B와 70B로 갈 때 필요한 카드 메모리

한 단계 위 모델을 노리면 카드도 한 장 위로 올라갑니다. 32B QLoRA는 26GB, 40B는 30GB입니다. 40B는 30GB라 32GB 카드에서도 활성화분을 감안하면 여유가 거의 없습니다.

70B QLoRA는 41GB입니다. 24GB 카드로는 불가능하고 48GB 한 장이 필요합니다. QLoRA 논문도 65B 모델을 48GB GPU 한 장에서 학습해 Vicuna 벤치마크에서 ChatGPT 성능의 99.3% 수준을 기록했습니다.

확장 카드의 금빛 PCIe 접점을 접사로 본 사진

전체 파인튜닝은 7B만 해도 112GB다

모든 가중치를 학습하는 전체 파인튜닝은 계산이 다릅니다. 파라미터당 가중치 2바이트, 그래디언트 2바이트, Adam 옵티마이저 상태 12바이트로 16바이트가 필요합니다. 7B 모델이면 112GB이고, 중간 활성화는 이 숫자에 들어 있지 않습니다.

그래서 개인 작업은 QLoRA로 시작하고, 정확도가 아쉬울 때 16비트 LoRA로 올리는 순서가 됩니다. 16비트 LoRA 14B는 33GB라 32GB 카드 한 장으로는 부족하고 48GB 카드가 필요합니다.

전체 파인튜닝이 꼭 필요한 경우는 드뭅니다. 학습 도구 문서도 전체 파인튜닝은 자원을 많이 쓰고 보통 불필요하며, 제대로 하면 LoRA가 전체 파인튜닝을 따라갈 수 있다고 안내합니다. QLoRA부터 시작하고, LoRA 단계에서 되지 않으면 전체 파인튜닝에서도 될 가능성이 낮다는 설명도 함께 둡니다.

밤에 어두운 모니터 앞에 앉은 사람의 어깨 너머와 켜진 데스크톱 본체
밤늦게 켜 둔 스탠드 아래 놓인 책상과 데스크톱 본체

카드 고를 때 확인할 네 가지

카드를 고르기 전에 확인할 것이 하나 있습니다. 학습 도구가 밝힌 지원 범위는 CUDA 컴퓨트 7.0 이상입니다. V100, T4, RTX 20 시리즈와 RTX 50 시리즈, A100, H100이 여기 들어갑니다.

1. 정밀도를 먼저 정합니다. 4비트로 학습할 계획이면 24GB, 16비트로 갈 계획이면 14B 이상부터 48GB가 기준선입니다. 같은 모델을 같은 카드에 넣어도 여기서 3~4배가 갈립니다.

2. 최소값에 여유를 둡니다. 27B QLoRA 22GB처럼 상한에 붙은 조합은 배치를 1로 낮추고 시퀀스를 줄일 각오가 필요합니다.

3. 시퀀스 길이를 봅니다. 7B가 512에서 7GB, 1024에서 10GB를 썼습니다. 긴 문맥으로 학습하려면 표보다 한 단계 위 카드를 잡아야 합니다. 도구 문서는 처음에는 문맥 길이 2048로 테스트하라고 권합니다.

4. 표에 없는 모델은 더 듭니다. 요구량 표를 공개한 쪽도 모델 구조에 따라 표보다 더 필요할 수 있다고 밝힙니다.

원문 보기: Unsloth 학습 요구량 표 · 7B QLoRA 재현 노트북

QLoRA 4비트 기준으로 카드 메모리를 줄이면 이렇습니다. 16GB는 14B까지, 24GB는 27B까지, 32GB는 27B를 여유 있게, 32B는 최소 26GB지만 활성화까지 고려하면 사실상 어렵습니다. 48GB는 70B까지입니다. 16비트 LoRA 기준이면 48GB로 14B까지입니다. 모두 표의 최소값 기준입니다.

아래 두 카드는 32GB와 16GB로, 각각 27B와 14B를 노리는 선택지입니다.

지포스 RTX 5090 WINDFORCE OC D7 32GB 제이씨현

지포스 RTX 5090 WINDFORCE OC D7 32GB 제이씨현

로켓배송으로 바로 받기
지포스 RTX 5080 OC D7 16GB Triple Fan STCOM

지포스 RTX 5080 OC D7 16GB Triple Fan STCOM

로켓배송으로 바로 받기

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.