1. 들어가며: 왜 로컬 LLM인가?
ChatGPT나 Claude도 좋지만, 보안이 중요한 프로젝트 코드를 외부 서버에 보내는 것은 꺼려진다. 내 컴퓨터(Local)에서 돌아가는 AI가 필요했다. 하지만 내 GPU는 RTX 4070 Ti (VRAM 12GB). 과연 이 사양으로 현업 수준의 코딩 AI를 돌릴 수 있을까? 오늘 그 가능성을 테스트해보았다.
참고 한 사이트
Hugging Face – The AI community building the future.
The Home of Machine Learning Create, discover and collaborate on ML better. We provide paid Compute and Enterprise solutions. We are building the foundation of ML tooling with the community.
huggingface.co
2. 핵심 개념 정리 (Theory)
2-1 파라미터(Parameter)와 VRAM의 관계
LLM의 이름 뒤에 붙는 7B, 3B는 파라미터(매개변수)의 개수를 의미한다.
- 7B (70억 개): 보통 성능의 마지노선. 똑똑하지만 무겁다.
- FP16 (16비트) 기준: 7B 모델 로딩 시 약 14~15GB VRAM이 필요하다.
- 내 상황: 4070 Ti는 12GB다. 7B를 그냥 돌리면 OOM(Out Of Memory) 에러가 난다.
2-2 양자화 (Quantization)
이를 해결하는 기술이 양자화(Quantization)다.
- 개념: 숫자의 정밀도를 16비트에서 4비트로 줄여 용량을 압축하는 기술.
- 효과: 화질을 약간 낮춘 4K 영상처럼, 지능 저하는 최소화하면서 메모리 사용량을 1/4로 줄임.
- 결과: 7B 모델이 약 5GB 메모리만 차지하게 되어 12GB 그래픽카드에서도 쌩쌩 돌아간다!
3. 트러블 슈팅 (Troubleshooting) - 오늘의 삽질
로컬 LLM을 돌리면서 마주친 3대 에러와 해결책을 정리한다.
에러 1: 버전 대충돌 (CPU vs GPU)
- 증상: torch가 설치되어 있는데 GPU를 못 잡거나 torchvision 에러 발생.
- 원인: pip install torch를 그냥 하면 가끔 CPU 버전이 깔리거나, 서로 다른 CUDA 버전을 요구하는 라이브러리가 꼬임.
- 해결: 기존 버전을 싹 지우고, 내 그래픽카드에 맞는 CUDA 버전을 명시해서 재설치.
pip uninstall torch torchvision torchaudio pip install torch --index-url https://download.pytorch.org/whl/cu124
에러 2: 윈도우 호환성 (flash_attn, seen_tokens)
- 증상: AttributeError: 'DynamicCache' object has no attribute 'seen_tokens' 또는 flash_attn 설치 요구.
- 원인: 최신 모델들은 리눅스 환경에 최적화된 가속 기능(Flash Attention)을 기본으로 쓰려는데, 윈도우에선 설치가 까다롭다.
- 해결: 모델 로딩 시 attn_implementation="eager" 옵션을 추가하여 가속 기능을 끄고 표준 방식으로 돌린다. (속도 차이 거의 없음)
에러 3: 환각 (Hallucination)
- 증상: 내 코드는 MongoDB(Mongoose) 를 쓰는데, AI가 자꾸 MySQL 쿼리(SELECT * FROM...)를 짬.
- 원인: AI는 학습 데이터의 통계적 확률(백엔드=SQL)을 따라가려는 경향이 있음.
- 해결: 시스템 프롬프트(System Prompt)에 "절대 SQL 쓰지 마. Mongoose 문법만 써"라고 명시적 규칙(Critical Rules)을 박아줌.
4. 모델 비교 및 최종 선택 (2025년 12월 기준)
12GB VRAM 환경에서 테스트해본 모델들의 주관적 평가는 다음과 같다.
| 모델명 | 체급 | 특징 | 평가 |
| DeepSeek R1 1.5B | 1.5B | 추론 능력은 좋은데 설정 버그(device-side assert)가 있음. | ⚠️ 보류 |
| Phi-3.5-mini | 3.8B | 똑똑하지만 특정 환경에서 로딩이 느리거나 멈춤. | 쏘쏘 |
| Qwen 2.5 Coder 3B | 3B | 속도 빠름, 버그 없음, 코딩 실력 준수함. | 👑 Best |
| Qwen 2.5 Coder 7B | 7B | 4비트로 돌리면 가장 똑똑함. 복잡한 분석용. | 👍 추천 |
결론: 데일리 코딩 보조용으로는 Qwen 2.5 Coder 3B, 깊은 아키텍처 분석용으로는 7B (4비트)가 최적이다.
5. 최종 완성 코드 (Python Snippet)
아래는 RTX 4070 Ti에서 3B 모델을 4비트로 에러 없이 로딩하는 최종 코드다.
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
MODEL_ID = "Qwen/Qwen2.5-Coder-3B-Instruct"
# 1. 4비트 양자화 설정 (메모리 절약의 핵심)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4"
)
# 2. 모델 로딩 (에러 방지 옵션 포함)
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
quantization_config=bnb_config, # 4비트 적용
device_map="auto",
trust_remote_code=True,
attn_implementation="eager" # 4비트 에러 방지
)
# 3. 토크나이저 패딩 설정
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
print(f"{MODEL_ID} 로딩 완료!")
6. 마무리
처음엔 온갖 에러 메시지(CUDA error, DLL load failed...) 때문에 멘탈이 나갈 뻔했지만, 하나씩 해결하며 내 PC에 맞는 최적의 세팅을 찾았다.
이제 내 로컬 PC에는 인터넷이 끊겨도 작동하고, 내 코드를 유출하지 않는 나만의 AI 사수가 생겼다.
Next Step: 이제 이 모델을 이용해 전체 프로젝트의 API 호출 구조도(Call Graph)를 자동으로 그려주는 기능을 완성할 예정이다.
'3. 자습 & 메모(실전, 실습, 프로젝트) > 3-2 메모(실전, 프로젝트)' 카테고리의 다른 글
| [파인 튜닝] PaddleOCR Detection 모델 학습 가이드 (1) | 2025.12.30 |
|---|---|
| PaddleOCR Detection 파인튜닝 실전 기록 (중간 점검) (0) | 2025.12.28 |
| [Memo] PaddleOCR + AIHub 데이터셋 (0) | 2025.12.26 |
| [AI/Python] 프롬프트 엔지니어링 기초 & Gradio로 나만의 번역 앱 만들기 (1) | 2025.12.11 |
| [Memo] Google Colab에서 작성한 코드 GitHub로 업로드하기 (0) | 2025.12.09 |