
[제1단원] 국내 AI 모델 탐색 및 나에게 맞는 모델 찾기
허깅페이스(Hugging Face)는 AI 업계의 '깃허브'입니다. 수만 개의 모델 중 우리나라 언어와 문화에 특화된 모델을 선별하는 것이 첫걸음입니다.
1. 한국어 특화 모델을 찾는 3가지 검색 팁
무작정 검색하기보다 허깅페이스의 필터와 키워드를 전략적으로 활용해야 합니다.
- 키워드 조합: 검색창에 korean, ko-llm, polyglot, kogpt 등을 입력하세요.
- 언어 필터 사용: 왼쪽 사이드바의 Languages 설정에서 Korean을 체크하면 한국어로 학습된 모델만 골라볼 수 있습니다.
- 태그 활용: Text Generation (글쓰기/대화), Translation (번역), Summarization (요약) 등 목적에 맞는 태그를 병행 선택하세요.
2. 현재 가장 주목받는 국내 대표 모델 라인업
실제 프로젝트나 로컬 테스트 시 가장 먼저 고려해볼 만한 모델들입니다.
| 모델 이름 | 제작처 | 특징 및 장점 |
| Polyglot-ko | EleutherAI | 한국어 데이터 비중이 압도적으로 높아 문장이 매우 자연스러움. (오픈소스의 표준) |
| SOLAR | Upstage | 작은 크기 대비 강력한 성능. 한국어와 영어를 모두 잘하며 튜닝이 쉬움. |
| KoGPT2 | SKT | 모델이 가벼워(약 500MB) 저사양 PC나 모바일에서도 빠르게 돌아감. |
| Bllossom | Bllossom팀 | Llama 3 기반으로 한국어 능력을 극대화한 최신 트렌드 모델. |
3. 실패 없는 선택을 위한 'Open Ko-LLM 리더보드'
모델 설명만 보고는 성능을 알기 어렵습니다. 이때는 Upstage와 한국지능정보사회진흥원(NIA)이 운영하는 [Open Ko-LLM Leaderboard]를 참고하세요.
- 확인 방법: 허깅페이스 검색창에 Upstage/open-ko-llm-leaderboard를 검색해 Spaces로 들어갑니다.
- 활용법: 상위권에 있는 모델들의 이름을 복사해 허깅페이스에서 검색하면, 현재 가장 '똑똑한' 한국어 모델이 무엇인지 실시간으로 파악할 수 있습니다.
4. 나에게 맞는 모델 결정하기 (체크리스트)
- 대화나 창작이 목적인가? $\rightarrow$ Polyglot-ko-12.8B 혹은 Llama-3-Korean-Bllossom
- 문장 분류나 가벼운 챗봇인가? $\rightarrow$ KoGPT2 혹은 KoBERT
- 내 컴퓨터 사양이 낮은가? $\rightarrow$ 파라미터 수가 적은 모델(예: 1.3B, 3B)이나 양자화(GGUF 형식) 모델 선택
[제2단원] 허깅페이스 기초: 온라인 환경에서 모델 로드하기
모델을 골랐다면 이제 내 개발 환경으로 불러올 차례입니다. 복잡한 설치 과정 없이 파이썬 라이브러리 몇 개만으로 전 세계의 AI 모델을 내 코드 안으로 가져올 수 있습니다.
1. 필수 라이브러리 설치
가장 먼저 허깅페이스 모델을 다루기 위한 핵심 라이브러리인 transformers와 수치 계산을 위한 torch(PyTorch)를 설치해야 합니다.
# 터미널이나 CMD에서 아래 명령어를 입력하세요.
pip install transformers torch sentencepiece
2. 코드의 핵심: 토크나이저(Tokenizer)와 모델(Model)
허깅페이스의 모든 모델은 크게 두 부분으로 나뉩니다. 이 개념만 이해하면 절반은 성공입니다.
- Tokenizer: 우리가 입력한 '문장'을 컴퓨터가 이해할 수 있는 '숫자'로 쪼개주는 도구입니다.
- Model: 숫자로 변환된 데이터를 입력받아 다음에 올 가장 적절한 답변(숫자)을 계산해내는 뇌 역할을 합니다.
3. 실전! 한국어 모델 로드 및 추론 코드
가장 대중적인 한국어 모델인 Polyglot-ko를 활용하여 첫 번째 답변을 받아보는 표준 코드를 작성해 보겠습니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# 1. 사용할 모델의 식별자(ID) 지정
model_id = "EleutherAI/polyglot-ko-1.3b"
# 2. 토크나이저와 모델 로드 (인터넷에서 자동으로 다운로드됨)
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16, # 메모리 절약을 위해 절반 정밀도 사용
device_map="auto" # 내 컴퓨터의 GPU/CPU를 알아서 배정
)
# 3. 질문 준비 및 토큰화
prompt = "인공지능이란 무엇인가요?"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
# 4. 답변 생성 (추론)
with torch.no_grad():
output_tokens = model.generate(
inputs,
max_new_tokens=100,
temperature=0.7,
do_sample=True
)
# 5. 숫자 결과를 다시 문장으로 변환하여 출력
response = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
print(f"AI 답변: {response}")
4. 코드 실행 시 발생하는 일들
- Downloading...: 처음 실행하면 수 GB에 달하는 모델 파일을 허깅페이스 서버에서 내 컴퓨터로 가져옵니다. (한 번 받으면 다음부터는 생략됩니다.)
- Device Mapping: device_map="auto"를 설정하면, 모델이 내 컴퓨터의 그래픽카드(GPU)를 우선적으로 사용하도록 세팅됩니다. GPU가 없다면 자동으로 CPU를 사용하여 느리지만 실행은 됩니다.
5. 초보자가 자주 겪는 문제 (Tips)
- 메모리 부족(OOM): torch.cuda.OutOfMemoryError가 뜬다면 모델 크기를 줄여야 합니다. 12.8b 모델 대신 1.3b나 3b 모델로 시도해 보세요.
- 버전 충돌: 라이브러리 버전이 꼬였다면 pip install -U transformers 명령어로 최신 버전 업데이트를 권장합니다.
[제3단원] 보안과 속도를 위한 오프라인(로컬) 실행 가이드
실제 서비스 환경이나 보안이 중요한 프로젝트에서는 모델을 매번 새로 로드하거나 외부 서버와 통신하는 것이 부담스러울 수 있습니다. 이번 단원에서는 한 번 다운로드한 모델을 내 컴퓨터에 완전히 고립시켜 인터넷 연결 없이 실행하는 법을 다룹니다.
1. 모델 파일을 내 폴더에 영구 저장하기
허깅페이스의 from_pretrained 함수는 기본적으로 모델을 시스템 캐시 폴더(~/.cache/huggingface)에 저장합니다. 이를 내가 관리하기 쉬운 특정 프로젝트 디렉토리로 옮기는 법입니다.
- 방법 A (코드로 저장):
# 최초 1회 실행 (인터넷 연결 필요) model_id = "EleutherAI/polyglot-ko-1.3b" save_path = "./my_local_model" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id) # 내 로컬 디렉토리에 저장 tokenizer.save_pretrained(save_path) model.save_pretrained(save_path) - 방법 B (수동 다운로드): 허깅페이스 웹사이트의 Files and versions 탭에서 모든 파일을 다운로드하여 ./my_local_model 폴더에 넣어도 동일하게 작동합니다.
2. 인터넷 연결 차단하기 (오프라인 모드)
모델 파일을 확보했다면, 이제 파이썬에게 "인터넷을 보지 말고 내 컴퓨터 파일만 봐!"라고 명령해야 합니다.
- 환경 변수 설정: 코드 최상단이나 OS 환경 변수에 아래 내용을 추가합니다.이 설정을 하면 transformers 라이브러리가 외부 서버에 업데이트 확인을 요청하지 않아 실행 속도가 비약적으로 빨라집니다.
import os os.environ['TRANSFORMERS_OFFLINE'] = '1' os.environ['HF_DATASETS_OFFLINE'] = '1'
3. 로컬 경로로 모델 로드하기
이제 모델 이름 대신 폴더 경로를 사용하여 호출합니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
# 허깅페이스 이름 대신 '내 폴더 경로' 입력
local_path = "./my_local_model"
# 인터넷 연결 없이 즉시 로드
tokenizer = AutoTokenizer.from_pretrained(local_path)
model = AutoModelForCausalLM.from_pretrained(local_path, device_map="auto")
print("오프라인 로드 완료!")
4. 오프라인 실행의 장점
- 보안: 데이터가 외부 서버로 나가지 않아 기업 내부 문서 처리에 안전합니다.
- 속도: 실행할 때마다 서버와 통신하여 버전 체크를 하지 않으므로 로딩 시간이 단축됩니다.
- 안정성: 허깅페이스 서버 점검이나 인터넷 장애와 상관없이 24시간 서비스가 가능합니다.
5. 주의사항
- 종속성 파일: 로컬 폴더로 옮길 때 config.json, generation_config.json, tokenizer.json 같은 설정 파일들이 누락되지 않도록 주의해야 합니다.
- 라이브러리: 모델 파일은 오프라인이어도 파이썬 라이브러리(transformers, torch 등)는 미리 설치되어 있어야 합니다.
[제4단원] 내 데이터와 디렉토리 통째로 참조하기
모델이 내 컴퓨터에 준비되었다면, 이제는 모델이 '내 문서'나 '내 데이터'를 읽고 답변하게 만들 차례입니다. 수백 개의 텍스트 파일이나 JSON 데이터가 담긴 폴더를 통째로 AI에게 학습시키거나 참조시키는 핵심 기법을 다룹니다.
1. 데이터셋 디렉토리 통째로 불러오기 (datasets 라이브러리)
허깅페이스의 datasets 라이브러리를 사용하면 폴더 안에 흩어져 있는 수많은 파일을 단 한 줄의 코드로 통합하여 관리할 수 있습니다.
- 특정 폴더의 모든 파일 읽기:
from datasets import load_dataset # 'my_docs' 폴더 내의 모든 CSV 파일을 하나의 데이터셋으로 로드 dataset = load_dataset("csv", data_dir="./my_docs") # JSON이나 텍스트 파일도 동일한 방식으로 가능합니다. # dataset = load_dataset("text", data_dir="./my_texts")
이 방식은 모델을 특정 데이터에 맞춰 미세 조정(Fine-tuning)하거나, 대규모 데이터를 분석할 때 필수적입니다.
2. 로컬 디렉토리 참조 시 필수 체크리스트
로컬 디렉토리를 모델이 '정상적인 모델 폴더'로 인식하게 하려면 폴더 내에 다음 파일들이 반드시 세트로 들어있어야 합니다.
- config.json: 모델의 구조(레이어 수, 헤드 수 등) 정보
- pytorch_model.bin (또는 model.safetensors): 실제 학습된 가중치 값
- tokenizer.json / tokenizer_config.json: 문장을 숫자로 바꾸는 규칙
Tip: 파일명이 하나라도 틀리면 로드 에러가 발생하므로, save_pretrained() 함수를 사용하여 생성된 파일 목록을 그대로 유지하는 것이 좋습니다.
3. 응용: RAG(검색 증강 생성)를 위한 디렉토리 참조
만약 모델을 새로 학습시키는 것이 아니라, "내가 가진 문서 폴더에서 답을 찾아줘"라고 시키고 싶다면 LangChain 같은 도구와 연결하여 디렉토리를 참조합니다.
from langchain_community.document_loaders import DirectoryLoader
# 폴더 내의 모든 .txt 파일을 읽어오는 로더 설정
loader = DirectoryLoader('./my_knowledge_base', glob="/*.txt")
docs = loader.load()
print(f"{len(docs)}개의 문서를 성공적으로 참조했습니다.")
이 방식을 활용하면 모델의 용량을 키우지 않고도 내 최신 데이터(예: 어제 작성한 업무 일지, 프로젝트 문서 등)를 AI가 즉시 참고하게 할 수 있습니다.
4. 캐시 디렉토리 관리 (HF_HOME)
모델이나 데이터셋을 불러올 때 기본 저장 경로가 C드라이브라면 금방 용량이 부족해집니다. 디렉토리 참조 경로를 외부 하드나 다른 드라이브로 고정하는 법입니다.
- OS 환경 변수 설정: HF_HOME 변수에 새로운 경로(예: D:\AI_Storage)를 지정하면, 이후 모든 모델 참조 및 다운로드가 해당 디렉토리를 기준으로 일어납니다.
[제5단원] 하드웨어 최적화 및 양자화(Quantization) 적용
마지막 단원에서는 성능이 좋은 거대 모델을 일반 가정용 PC나 노트북에서도 쌩쌩 돌릴 수 있게 만드는 최적화의 마법을 다룹니다. 아무리 좋은 한국어 모델이라도 내 컴퓨터에서 돌아가지 않으면 소용없으니까요.
1. 내 하드웨어 사양 파악하기 (VRAM이 핵심)
LLM(거대 언어 모델)을 돌릴 때 가장 중요한 것은 그래픽카드의 메모리인 VRAM입니다. 모델의 파라미터(Parameter) 수에 따라 필요한 최소 사양은 대략 다음과 같습니다.
| 모델 크기 | 권장 VRAM (기본) | 권장 VRAM (양자화 적용 시) |
| 7B (약 70억 개) | 28GB 이상 | 8GB ~ 12GB |
| 13B (약 130억 개) | 52GB 이상 | 16GB ~ 24GB |
2. 양자화(Quantization)란 무엇인가?
양자화는 쉽게 말해 "모델의 다이어트"입니다. 모델이 사용하는 숫자의 정밀도를 낮추어(예: 16비트 $\rightarrow$ 4비트) 용량을 1/4 수준으로 줄이는 기술입니다. 약간의 지능 저하가 있을 수 있지만, 일반적인 대화에서는 체감하기 힘들 정도로 효율적입니다.
3. 실전! 4비트 양자화로 모델 로드하기
bitsandbytes 라이브러리를 사용하면 코드 몇 줄로 거대 모델을 내 그래픽카드 메모리에 쏙 들어가게 만들 수 있습니다.
# 필수 라이브러리 설치
# pip install bitsandbytes accelerate
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
# 양자화 설정 (4비트 사용)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_quant_type="nf4"
)
# 모델 로드 (양자화 설정 적용)
model_id = "Upstage/SOLAR-10.7B-v1.0"
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=bnb_config,
device_map="auto"
)
이 설정을 사용하면 원래 20GB 이상의 VRAM이 필요한 모델도 8GB~10GB 내외에서 구동이 가능해집니다.
4. GGUF와 EXL2: 더 쉬운 대안들
파이썬 코딩이 복잡하다면, 이미 양자화가 완료된 파일 형식인 GGUF를 활용해 보세요.
- TheBloke 같은 유명 유저가 허깅페이스에 배포한 GGUF 파일을 다운로드하면, LM Studio나 Ollama 같은 프로그램에서 클릭 몇 번으로 오프라인 AI를 실행할 수 있습니다.
- 이는 특히 Mac (Apple Silicon) 환경에서 GPU 가속을 활용할 때 매우 강력한 성능을 발휘합니다.
5. 시리즈를 마치며: 나만의 로컬 AI 생태계 구축
이제 여러분은 모델을 찾고(1단원), 실행하고(2단원), 오프라인으로 구축하며(3단원), 내 데이터를 연결하고(4단원), 최적화하는(5단원) 모든 과정을 알게 되었습니다.
이 지식을 바탕으로 여러분의 Next.js 웹 서비스나 MySQL 데이터베이스와 연동된 강력한 '나만의 한국어 AI 서비스'를 구축해 보세요. 보안 걱정 없는 로컬 AI의 세계에 오신 것을 환영합니다!
'Python을 배워보자' 카테고리의 다른 글
| CUDA란 무엇일까? CPU와 GPU, 식당 주방 이야기 (0) | 2026.01.09 |
|---|---|
| 파이썬으로 웹 콘텐츠 자동 추출하고 이메일 보내기: 간단한 스크립트 튜토리얼 (0) | 2025.10.11 |
| Playwright를 활용한 네이버 증권 크롤링 예제 (3) | 2025.07.26 |
| Playwright: 현대적인 웹 테스트 자동화의 강자 (3) | 2025.07.26 |
| 국가별 월별 기온 데이터를 FastAPI로 백엔드 구축 및 Dash로 테이블 출력하기 (3) | 2025.07.24 |