Skip to content
Published on

Complete Guide to Open Source LLMs: Llama 3, Mistral, DeepSeek, Qwen, and Gemma

Authors

오픈소스 LLM 완전 정리 (2024-2026)

2024년과 2025년은 오픈소스 LLM 역사에서 가장 격동적인 시기였. Meta의 Llama 3가 GPT-3.5를 넘어서고, DeepSeek이 GPT-4급 성능을 오픈소스로 공개하며 AI 업계를 뒤흔들었. In this guide, 주요 오픈소스 LLM을 아키텍처, 성능, 라이선스, 활용법까지 총정리.


1. 오픈소스 LLM 생태계 Overview

클로즈드 소스 vs 오픈소스 트렌드

2023년 초까지는 GPT-4, Claude 같은 클로즈드 소스 모델이 성능에서 압도적이었. However, 오픈소스 진영이 빠르게 따라잡으면서 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.0Mistral, Gemma, Phi가능가능
Meta Llama LicenseLlama 시리즈조건부 가능조건부
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은 중국 기업이 개발했으므로 기업에서 사용할 때 다음을 고려해야 합니다:

  1. 데이터 주권: API 사용 시 데이터가 중국 서버로 전송됨
  2. 오픈소스 로컬 실행: 모델 가중치를 자체 서버에 배포하면 데이터 유출 없음
  3. 라이선스: 상업적 사용 가능하나 일부 제약 확인 필요
  4. 규제 리스크: 특정 산업(금융, 의료, 국방)에서는 사용 전 법적 검토 필요

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.5B0.5B경량128K
Qwen2.5-7B7B범용128K
Qwen2.5-72B72B고성능128K
Qwen2.5-Coder-7B7B코딩128K
Qwen2.5-Math-7B7B수학4K
Qwen2-VL-7B7B멀티모달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 시리즈의 The key is 데이터 품질.

학습 데이터 구성 (Phi-3-mini):
- "교과서 수준" 합성 데이터: 약 1T 토큰
- 교과서, 위키피디아, 코드: 고품질 필터링
- 크롤링 데이터: 품질 필터 통과한 것만 사용

"Less is More" 철학:
- 3.8B 파라미터로 7B 모델 성능 달성
- 데이터 효율: 3.3T 토큰으로 학습 (Llama 31/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 양자화

올바른 모델 선택은 태스크, 한국어 지원 수준, 하드웨어 가용성, 라이선스를 종합적으로 고려해야 . 한국어 서비스를 개발does면 EXAONE이나 HyperCLOVA X를 1순위로 검토하고, 범용성이 필요하다면 Llama 3.3 70B나 Qwen2.5 72B를 고려하세요.