🚀 EXAONE-4.0-32B GGUFモデル
EXAONE-4.0-32B GGUFモデルは、新しい量子化アプローチを用いたテキスト生成モデルです。非推論モードと推論モードを統合し、多言語対応やエージェントツールの使用が可能です。
🚀 クイックスタート
transformers
ライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install git+https://github.com/lgai-exaone/transformers@add-exaone4
非推論モード
一般的な使用には、以下の例のようにEXAONE 4.0モデルを使用できます。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "LGAI-EXAONE/EXAONE-4.0-32B"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="bfloat16",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Explain how wonderful you are"
prompt = "Explica lo increíble que eres"
prompt = "너가 얼마나 대단한지 설명해 봐"
messages = [
{"role": "user", "content": prompt}
]
input_ids = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
)
output = model.generate(
input_ids.to(model.device),
max_new_tokens=128,
do_sample=False,
)
print(tokenizer.decode(output[0]))
推論モード
EXAONE 4.0モデルは、複雑な問題を処理するための推論能力を備えています。トークナイザーで enable_thinking=True
引数を使用することで、推論モードをアクティブにできます。
messages = [
{"role": "user", "content": "Which one is bigger, 3.12 vs 3.9?"}
]
input_ids = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
enable_thinking=True,
)
output = model.generate(
input_ids.to(model.device),
max_new_tokens=128,
do_sample=True,
temperature=0.6,
top_p=0.95
)
print(tokenizer.decode(output[0]))
⚠️ 重要提示
推論モードでのモデル生成はサンプリングパラメータに敏感に影響を受ける可能性があります。より良い品質を得るためには、使用ガイドラインを参照してください。
エージェントツールの使用
EXAONE 4.0モデルは、ツール呼び出し機能を備えたエージェントとして使用できます。モデルにツールスキーマを提供することで、効果的なツール呼び出しが可能です。
import random
def roll_dice(max_num: int):
return random.randint(1, max_num)
tools = [
{
"type": "function",
"function": {
"name": "roll_dice",
"description": "Roll a dice with the number 1 to N. User can select the number N.",
"parameters": {
"type": "object",
"required": ["max_num"],
"properties": {
"max_num": {
"type": "int",
"description": "Max number of the dice"
}
}
}
}
}
]
messages = [
{"role": "user", "content": "Roll D6 dice twice!"}
]
input_ids = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
tools=tools,
)
output = model.generate(
input_ids.to(model.device),
max_new_tokens=1024,
do_sample=True,
temperature=0.6,
top_p=0.95,
)
print(tokenizer.decode(output[0]))
✨ 主な機能
- 非推論モードと推論モードの統合:一般的な使用と複雑な問題の解決に対応。
- 多言語対応:英語、韓語、スペイン語をサポート。
- エージェントツールの使用:ツール呼び出し機能を備えたエージェントとして使用可能。
- 新しい量子化アプローチ:特定のレイヤーの精度を向上させる。
📦 インストール
transformers
ライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install git+https://github.com/lgai-exaone/transformers@add-exaone4
📚 ドキュメント
モデル生成の詳細
このモデルは、llama.cpp を使用して生成されました。コミットハッシュは bf9087f5
です。
量子化の詳細
標準のIMatrix量子化は、低ビット深度では性能が低下することがあります。この問題を解決するために、llama.cpp
の --tensor-type
オプションを使用して、重要なレイヤーの精度を手動で上げています。
👉 Layer bumping with llama.cpp
モデル構成
属性 |
详情 |
パラメータ数(埋め込みなし) |
30.95B |
レイヤー数 |
64 |
アテンションヘッド数 |
GQA with 40-heads and 8-KV heads |
語彙サイズ |
102,400 |
コンテキスト長 |
131,072 tokens |
デプロイメント
TensorRT-LLM
TensorRT-LLMは、最新のコミットでEXAONE 4.0モデルを公式にサポートしています。リリース前には、TensorRT-LLMリポジトリをクローンしてソースからビルドする必要があります。
git clone https://github.com/NVIDIA/TensorRT-LLM.git
リポジトリをクローンした後、ソースをビルドしてインストールします。詳細は、公式ドキュメント を参照してください。
サーバーを起動するには、以下の手順に従います。
- 追加の設定YAMLファイルを作成します。
kv_cache_config:
enable_block_reuse: false
- 設定を使用してサーバーを起動します。
trtllm-serve serve [MODEL_PATH] --backend pytorch --extra_llm_api_options extra_llm_api_config.yaml
詳細は、TensorRT-LLMのEXAONEドキュメント を参照してください。
💡 使用建议
他の推論エンジン(vllm
や sglang
)は、現在EXAONE 4.0を公式にサポートしていません。これらのライブラリが更新され次第、情報を更新します。
🔧 技術詳細
ハイブリッドアテンション
32Bモデルでは、ハイブリッドアテンション方式を採用しています。ローカルアテンション(スライディングウィンドウアテンション)とグローバルアテンション(フルアテンション)を3:1の比率で組み合わせています。グローバルアテンションにはRoPE(Rotary Positional Embedding)を使用していません。
QK-Reorder-Norm
LayerNormの位置を従来のPre-LN方式から変更し、アテンションとMLPの出力に直接LayerNormを適用しています。また、QとKの投影の直後にRMS正規化を追加しています。これにより、計算量は増えますが、下流タスクでの性能が向上します。
詳細は、技術レポート、HuggingFace論文、ブログ、およびGitHubを参照してください。
📄 ライセンス
このモデルは、exaone ライセンスの下で提供されています。