- Authors

- Name
- Youngju Kim
- @fjvbn20031
오픈소스 LLM 완전 정리 (2024-2026)
2024년과 2025년은 오픈소스 LLM 역사에서 가장 격동적인 시기였습니다. Meta의 Llama 3가 GPT-3.5를 넘어서고, DeepSeek이 GPT-4급 성능을 오픈소스로 공개하며 AI 업계를 뒤흔들었습니다. 이 가이드에서는 주요 오픈소스 LLM을 아키텍처, 성능, 라이선스, 활용법까지 총정리합니다.
1. 오픈소스 LLM 생태계 개요
클로즈드 소스 vs 오픈소스 트렌드
2023년 초까지는 GPT-4, Claude 같은 클로즈드 소스 모델이 성능에서 압도적이었습니다. 그러나 오픈소스 진영이 빠르게 따라잡으면서 2024년 하반기에는 여러 오픈소스 모델이 GPT-4 수준에 도달했습니다.
오픈소스 LLM의 장점:
- 비용: API 호출 비용 없이 로컬 실행 가능
- 프라이버시: 데이터가 외부 서버로 전송되지 않음
- 커스터마이징: 파인튜닝, 양자화, 배포 방식 자유롭게 선택
- 오프라인 사용: 인터넷 없이도 동작
오픈소스 LLM의 한계:
- 최고 성능 모델은 여전히 클로즈드 소스
- 대형 모델 실행을 위한 고사양 하드웨어 필요
- 안전성 필터링이 약할 수 있음
주요 발전 타임라인
- 2023년 2월: Meta Llama 1 공개 (7B~65B)
- 2023년 7월: Meta Llama 2 공개 (상업적 이용 가능)
- 2023년 9월: Mistral 7B 공개 (같은 크기 최강)
- 2024년 4월: Meta Llama 3 공개 (8B, 70B)
- 2024년 6월: Qwen2 공개 (0.5B~72B)
- 2024년 7월: Llama 3.1 405B 공개
- 2024년 12월: DeepSeek V3 공개 (671B MoE)
- 2025년 1월: DeepSeek R1 공개 (추론 특화)
- 2025년 7월: Llama 3.3 / Llama 4 공개
라이선스 분류
| 라이선스 | 대표 모델 | 상업적 사용 | 수정 배포 |
|---|---|---|---|
| Apache 2.0 | Mistral, Gemma, Phi | 가능 | 가능 |
| Meta Llama License | Llama 시리즈 | 조건부 가능 | 조건부 |
| MIT | 일부 Phi 모델 | 가능 | 가능 |
| 자체 라이선스 | DeepSeek | 조건부 | 제한적 |
Llama 라이선스의 주요 제약: 월간 활성 사용자 7억 명 이상인 서비스는 별도 계약 필요.
2. Meta Llama 시리즈
Llama 발전 과정
Llama 1 (2023.02): 7B, 13B, 33B, 65B 파라미터. 학술 연구용으로 공개되었으나 빠르게 유출되어 커뮤니티에 퍼졌습니다.
Llama 2 (2023.07): 7B, 13B, 70B. 상업적 이용 허용. Chat 버전과 Code 버전 포함.
Llama 3 (2024.04): 8B, 70B. 128K 어휘 사전, GQA 적용. 이전 세대 대비 성능 크게 향상.
Llama 3.1 (2024.07): 8B, 70B, 405B. 128K 컨텍스트 윈도우, 다국어 지원 강화, 함수 호출 네이티브 지원.
Llama 3.2 (2024.09): 1B, 3B (소형), 11B, 90B (멀티모달). 비전 모델 포함.
Llama 3.3 (2024.12): 70B. 405B 수준 성능을 70B에서 달성.
Llama 3 아키텍처 혁신
# Llama 3 아키텍처 주요 특징
architecture_features = {
"어휘 사전 크기": "128,256 토큰 (Llama 2의 4배)",
"포지셔널 인코딩": "RoPE (Rotary Position Embedding)",
"어텐션 메커니즘": "GQA (Grouped Query Attention)",
"활성화 함수": "SwiGLU",
"컨텍스트 윈도우": "8K (Llama 3) / 128K (Llama 3.1+)",
"학습 데이터": "15T+ 토큰",
}
RoPE (Rotary Position Embedding)
절대 위치 인코딩 대신 상대적 위치를 회전 행렬로 표현합니다. 긴 컨텍스트 일반화에 유리합니다.
GQA (Grouped Query Attention)
Multi-Head Attention(MHA)의 변형으로, 여러 쿼리 헤드가 하나의 키/밸류 헤드를 공유합니다. 추론 속도와 메모리 효율이 크게 향상됩니다.
# Multi-Head Attention vs GQA 비교
mha_params = {
"query_heads": 32,
"key_heads": 32, # 쿼리와 동일
"value_heads": 32, # 쿼리와 동일
}
gqa_params = {
"query_heads": 32,
"key_heads": 8, # 그룹당 1개
"value_heads": 8, # 그룹당 1개
"메모리 절약": "4배"
}
Llama 3 실전 사용
# HuggingFace를 통한 Llama 3 사용
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
# 4비트 양자화 (메모리 절약)
from transformers import BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
)
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=quantization_config,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 파이프라인 생성
text_generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "머신러닝과 딥러닝의 차이점을 설명해주세요."},
]
output = text_generator(
messages,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.9,
)
print(output[0]['generated_text'][-1]['content'])
3. Mistral AI
Mistral 7B
2023년 9월 공개된 7B 모델로, 당시 동일 크기 모델 중 최강 성능을 기록했습니다.
핵심 기술 혁신:
Sliding Window Attention (SWA): 각 토큰이 이전 W개 토큰만 어텐션합니다. 고정 크기 캐시로 무제한 길이 처리가 가능합니다.
Rolling Buffer Cache: KV 캐시를 순환 버퍼로 구현해 메모리를 절약합니다.
Pre-fill and Chunking: 긴 프롬프트를 청크로 나눠 처리합니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "mistralai/Mistral-7B-Instruct-v0.3"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
# Mistral 인스트럭션 형식
messages = [
{"role": "user", "content": "Python으로 퀵소트를 구현해주세요."}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024,
do_sample=True,
temperature=0.7
)
response = tokenizer.decode(generated_ids[0][len(model_inputs.input_ids[0]):], skip_special_tokens=True)
print(response)
Mixtral 8x7B (MoE)
Mixtral은 Mixture of Experts(MoE) 아키텍처를 사용합니다. 총 46.7B 파라미터이지만, 추론 시 12.9B만 활성화됩니다.
# MoE 아키텍처 설명
moe_params = {
"총 전문가 수": 8,
"활성화되는 전문가": 2,
"총 파라미터": "46.7B",
"활성 파라미터": "12.9B",
"추론 속도": "12.9B 모델과 유사",
"성능": "70B 모델과 경쟁",
}
4. DeepSeek 시리즈
DeepSeek V3
2024년 12월 중국의 DeepSeek이 공개한 671B MoE 모델입니다. GPT-4o, Claude 3.5 Sonnet과 경쟁하는 성능을 오픈소스로 공개해 업계에 충격을 줬습니다.
Multi-Head Latent Attention (MLA): 핵심 혁신으로, KV 캐시를 저차원 공간으로 압축합니다.
# MLA의 핵심 아이디어 (개념적 코드)
class MultiHeadLatentAttention:
"""
기존 MHA: K, V 캐시가 토큰 수에 비례해 증가
MLA: K, V를 저차원 잠재 벡터로 압축 저장
- 메모리 사용량: 5~13배 감소
- 성능: MHA와 동등
"""
def __init__(self, hidden_dim=7168, num_heads=128, kv_lora_rank=512):
self.hidden_dim = hidden_dim
self.num_heads = num_heads
self.kv_lora_rank = kv_lora_rank # 압축된 KV 차원
# 기존 KV 캐시: num_heads * head_dim * 2
# MLA KV 캐시: kv_lora_rank (훨씬 작음)
DeepSeek MoE 혁신:
- 표준 MoE: 각 레이어에 8개 전문가, 2개 활성화
- DeepSeek MoE: 공유 전문가 + 라우팅 전문가 구분
- 세밀한 전문가 분화로 지식 중복 최소화
# DeepSeek V3 API 사용 (OpenAI 호환)
from openai import OpenAI
client = OpenAI(
api_key="<DEEPSEEK_API_KEY>",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Python으로 이진 탐색 알고리즘을 구현해주세요."}
],
stream=False
)
print(response.choices[0].message.content)
DeepSeek R1
2025년 1월 공개된 추론 특화 모델입니다. OpenAI o1과 경쟁하는 수학/코딩 성능을 보여줬습니다.
핵심 특징:
- Chain-of-Thought 강화학습: 추론 과정을 RL로 학습
- 소형 모델 증류: 1.5B~70B 증류 모델 공개
- 오픈소스: 학습 방법론과 모델 가중치 모두 공개
# DeepSeek R1 사용 예시
client = OpenAI(
api_key="<DEEPSEEK_API_KEY>",
base_url="https://api.deepseek.com"
)
# R1은 추론 모델이므로 reasoning_content 포함
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "user", "content": "1부터 100까지 소수의 합을 구해주세요."}
]
)
# 추론 과정
reasoning = response.choices[0].message.reasoning_content
# 최종 답변
answer = response.choices[0].message.content
print("추론 과정 (요약):", reasoning[:200], "...")
print("최종 답변:", answer)
한국 기업 활용 시 고려사항
DeepSeek은 중국 기업이 개발했으므로 기업에서 사용할 때 다음을 고려해야 합니다:
- 데이터 주권: API 사용 시 데이터가 중국 서버로 전송됨
- 오픈소스 로컬 실행: 모델 가중치를 자체 서버에 배포하면 데이터 유출 없음
- 라이선스: 상업적 사용 가능하나 일부 제약 확인 필요
- 규제 리스크: 특정 산업(금융, 의료, 국방)에서는 사용 전 법적 검토 필요
5. Alibaba Qwen 시리즈
Qwen2 / Qwen2.5
알리바바 클라우드가 개발한 모델 시리즈입니다. 아시아권 언어(중국어, 한국어, 일본어)에서 강점을 보입니다.
# Qwen2.5 사용 예시
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
messages = [
{"role": "system", "content": "You are Qwen, a helpful assistant."},
{"role": "user", "content": "한국어로 인공지능 트렌드를 설명해주세요."}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024,
temperature=0.7,
top_p=0.8,
repetition_penalty=1.05,
)
response_ids = [
output_ids[len(input_ids):]
for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(response_ids, skip_special_tokens=True)[0]
print(response)
Qwen2-VL (멀티모달)
이미지, 비디오, 문서를 처리할 수 있는 멀티모달 버전입니다.
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info
import torch
model = Qwen2VLForConditionalGeneration.from_pretrained(
"Qwen/Qwen2-VL-7B-Instruct",
torch_dtype=torch.bfloat16,
device_map="auto"
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-7B-Instruct")
# 이미지 분석
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "https://example.com/chart.png"},
{"type": "text", "text": "이 차트에서 보이는 트렌드를 한국어로 설명해주세요."},
],
}
]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
return_tensors="pt",
).to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=512)
response = processor.batch_decode(
[out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)],
skip_special_tokens=True
)[0]
print(response)
Qwen 모델 라인업 비교
| 모델 | 파라미터 | 특화 | 컨텍스트 |
|---|---|---|---|
| Qwen2.5-0.5B | 0.5B | 경량 | 128K |
| Qwen2.5-7B | 7B | 범용 | 128K |
| Qwen2.5-72B | 72B | 고성능 | 128K |
| Qwen2.5-Coder-7B | 7B | 코딩 | 128K |
| Qwen2.5-Math-7B | 7B | 수학 | 4K |
| Qwen2-VL-7B | 7B | 멀티모달 | 128K |
6. Google Gemma
Gemma 2 아키텍처
Google DeepMind가 개발한 소형 오픈소스 모델입니다. Gemini 기술을 기반으로 만들었습니다.
핵심 기술:
- Interleaved Local/Global Attention: 짝수 레이어는 슬라이딩 윈도우, 홀수 레이어는 글로벌 어텐션
- Logit Soft-Capping: 로짓 발산을 막아 학습 안정성 향상
- Knowledge Distillation: 대형 Gemma로부터 소형 모델 증류
# Gemma 2 사용
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-9b-it",
device_map="auto",
torch_dtype=torch.bfloat16,
)
# Gemma 채팅 형식
chat = [
{"role": "user", "content": "파이썬의 제너레이터와 이터레이터의 차이점을 설명해주세요."},
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(
inputs.to(model.device),
max_new_tokens=1024,
do_sample=True,
temperature=1,
top_k=50,
top_p=0.95,
)
response = tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True)
print(response)
모바일/엣지 배포
Gemma는 소형 모델(2B, 9B)이 뛰어난 성능을 보여 모바일 배포에 적합합니다.
# MediaPipe를 통한 온디바이스 실행 (개념)
# Google AI Edge SDK 사용
# Android/iOS에서 Gemma 실행
from mediapipe.tasks.python.genai import bundler, llm_inference
# 모델 번들링
bundler.bundle_model(
model_path="gemma-2-2b-it-q4_k_m.gguf",
tokenizer_path="tokenizer.model",
start_token="<start_of_turn>",
stop_tokens=["<end_of_turn>"],
output_path="gemma_bundled.task",
)
7. Microsoft Phi 시리즈
Phi-3 / Phi-4
Microsoft Research가 개발한 소형 고성능 모델 시리즈입니다. "교과서 수준"의 고품질 합성 데이터로 학습된 것이 특징입니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "microsoft/Phi-4"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.bfloat16,
trust_remote_code=True
)
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "Explain quantum computing in simple terms."}
]
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
output = pipe(messages, max_new_tokens=512, return_full_text=False)
print(output[0]['generated_text'])
소형 고성능의 비결: 데이터 품질
Phi 시리즈의 핵심은 데이터 품질입니다.
학습 데이터 구성 (Phi-3-mini):
- "교과서 수준" 합성 데이터: 약 1T 토큰
- 교과서, 위키피디아, 코드: 고품질 필터링
- 크롤링 데이터: 품질 필터 통과한 것만 사용
"Less is More" 철학:
- 3.8B 파라미터로 7B 모델 성능 달성
- 데이터 효율: 3.3T 토큰으로 학습 (Llama 3의 1/4)
8. 오픈소스 LLM 선택 가이드
태스크별 최적 모델 (2025년 기준)
| 태스크 | 권장 모델 | 이유 |
|---|---|---|
| 일반 대화 (한국어) | EXAONE 3.5 7.8B | 한국어 특화 |
| 코드 생성 | Qwen2.5-Coder-32B | 코드 성능 최고 |
| 수학/추론 | DeepSeek-R1 (증류) | 추론 특화 |
| 멀티모달 | Qwen2-VL / LLaVA | 이미지 이해 |
| 엣지/모바일 | Gemma 2 2B | 소형 고성능 |
| 범용 고성능 | Llama 3.3 70B | 균형적 성능 |
| 비용 효율 | Mistral 7B | 빠른 추론 |
크기별 추천
3B 이하 (GPU 없이 실행 가능):
- Phi-3.5-mini (3.8B): 추론 능력 우수
- Gemma 2 2B: 다국어 지원
- Qwen2.5-1.5B: 경량 모델 중 최강
7B~8B (8GB VRAM):
- Llama 3.1 8B: 범용 최고 성능
- Mistral 7B: 빠른 추론, Apache 2.0
- EXAONE 3.5 7.8B: 한국어 특화
13B~14B (16GB VRAM):
- Qwen2.5-14B: 균형적 성능
- Phi-4 (14B): 소형 클래스 최강
30B~34B (24GB VRAM):
- Qwen2.5-32B: 매우 뛰어난 성능
- Mistral-Small
70B+ (80GB VRAM 또는 멀티 GPU):
- Llama 3.3 70B: 현재 오픈소스 최강급
- Qwen2.5-72B: 다국어 지원 우수
- DeepSeek-V3 (671B, MoE): 클라우드 배포 추천
한국어 지원 수준 비교
| 모델 | 한국어 이해 | 한국어 생성 | 한국 문화 이해 |
|---|---|---|---|
| EXAONE 3.5 | ★★★★★ | ★★★★★ | ★★★★★ |
| HyperCLOVA X | ★★★★★ | ★★★★★ | ★★★★★ |
| Qwen2.5-72B | ★★★★ | ★★★★ | ★★★ |
| Llama 3.3 70B | ★★★ | ★★★ | ★★ |
| DeepSeek V3 | ★★★ | ★★★ | ★★ |
| Mistral 7B | ★★ | ★★ | ★ |
9. Ollama로 로컬 실행
Ollama 설치와 사용
Ollama는 오픈소스 LLM을 로컬에서 쉽게 실행할 수 있는 도구입니다.
# macOS/Linux 설치
curl -fsSL https://ollama.com/install.sh | sh
# 모델 다운로드 및 실행
ollama run llama3.2
# 다른 모델 예시
ollama run mistral
ollama run qwen2.5:7b
ollama run deepseek-r1:8b
ollama run gemma2:9b
Python에서 Ollama 사용
import ollama
# 간단한 채팅
response = ollama.chat(model='llama3.2', messages=[
{
'role': 'user',
'content': '한국의 전통 음식을 5가지 알려주세요.',
},
])
print(response['message']['content'])
스트리밍 응답
import ollama
def stream_response(model: str, prompt: str):
print(f"모델: {model}")
print(f"프롬프트: {prompt}")
print("응답: ", end="", flush=True)
stream = ollama.chat(
model=model,
messages=[{'role': 'user', 'content': prompt}],
stream=True,
)
full_response = ""
for chunk in stream:
text = chunk['message']['content']
print(text, end='', flush=True)
full_response += text
print()
return full_response
response = stream_response('mistral', '파이썬으로 피보나치 수열을 구현해주세요.')
FastAPI + Ollama 서버
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import ollama
import json
app = FastAPI()
@app.post("/chat")
async def chat(request: dict):
model = request.get("model", "llama3.2")
message = request.get("message", "")
async def generate():
stream = ollama.chat(
model=model,
messages=[{"role": "user", "content": message}],
stream=True,
)
for chunk in stream:
data = {
"content": chunk["message"]["content"],
"done": chunk.get("done", False)
}
yield f"data: {json.dumps(data, ensure_ascii=False)}\n\n"
return StreamingResponse(generate(), media_type="text/event-stream")
@app.get("/models")
async def list_models():
models = ollama.list()
return {"models": [m["name"] for m in models["models"]]}
Ollama 모델별 성능 vs 메모리 요구량
# 모델별 요구 메모리 (FP16 기준)
model_requirements = {
"llama3.2:3b": {"vram_gb": 2, "speed": "매우 빠름", "quality": "보통"},
"llama3.2:8b": {"vram_gb": 5, "speed": "빠름", "quality": "좋음"},
"mistral:7b": {"vram_gb": 5, "speed": "빠름", "quality": "좋음"},
"qwen2.5:7b": {"vram_gb": 5, "speed": "빠름", "quality": "좋음"},
"gemma2:9b": {"vram_gb": 6, "speed": "보통", "quality": "좋음"},
"llama3.3:70b": {"vram_gb": 40, "speed": "느림", "quality": "매우 좋음"},
"qwen2.5:72b": {"vram_gb": 43, "speed": "느림", "quality": "매우 좋음"},
"deepseek-r1:8b": {"vram_gb": 5, "speed": "보통", "quality": "추론 특화"},
}
# 양자화 버전 (Q4 기준)
quantized_requirements = {
"llama3.2:8b-q4": {"vram_gb": 3, "speed": "매우 빠름"},
"llama3.3:70b-q4": {"vram_gb": 20, "speed": "보통"},
"qwen2.5:72b-q4": {"vram_gb": 22, "speed": "보통"},
}
10. 오픈소스 LLM 서빙 스택
vLLM (고성능 추론 서버)
pip install vllm
from vllm import LLM, SamplingParams
# 모델 로드
llm = LLM(
model="meta-llama/Meta-Llama-3-8B-Instruct",
tensor_parallel_size=2, # GPU 2개 사용
gpu_memory_utilization=0.9,
max_model_len=8192,
)
# 배치 추론
prompts = [
"한국어 NLP의 특징을 설명해주세요.",
"딥러닝과 머신러닝의 차이점은?",
"트랜스포머 아키텍처란?",
]
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=512,
)
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(f"프롬프트: {output.prompt[:50]}...")
print(f"응답: {output.outputs[0].text[:200]}")
print()
vLLM OpenAI 호환 서버
# 서버 실행
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 2
# OpenAI 클라이언트로 vLLM 서버 사용
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:8000/v1"
)
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3-8B-Instruct",
messages=[{"role": "user", "content": "안녕하세요!"}],
max_tokens=256,
)
print(response.choices[0].message.content)
마무리
오픈소스 LLM 생태계는 2024~2026년을 거치면서 놀라운 속도로 발전했습니다. 핵심 정리:
성능:
- Llama 3.3 70B / Qwen2.5 72B: 오픈소스 최고 성능
- DeepSeek V3/R1: 클로즈드 소스 모델과 경쟁
- Phi-4 14B: 소형 모델 중 최강
한국어:
- EXAONE 3.5: 한국어 오픈소스 최고
- HyperCLOVA X: 한국어 전용 API
배포:
- 로컬 개발: Ollama
- 프로덕션: vLLM + OpenAI 호환 API
- 모바일: Gemma 2 2B + GGUF 양자화
올바른 모델 선택은 태스크, 한국어 지원 수준, 하드웨어 가용성, 라이선스를 종합적으로 고려해야 합니다. 한국어 서비스를 개발한다면 EXAONE이나 HyperCLOVA X를 1순위로 검토하고, 범용성이 필요하다면 Llama 3.3 70B나 Qwen2.5 72B를 고려하세요.