オープンソース 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": "Python のジェネレータとイテレータの違いを説明してください。"},
]
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 トークン
- 教科書、Wikipedia、コード: 高品質なフィルタリング
- クロールデータ: 品質フィルタを通過したものだけを使用
"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', 'Python でフィボナッチ数列を実装してください。')
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 を検討してほしい。