Qwen2 Technical Report
Paper • 2407.10671 • Published • 171
このモデルはelyza/ELYZA-Thinking-1.0-Qwen-32Bを司法試験データでファインチューニングし、LoRAアダプターをベースモデルにマージした単体動作可能なモデルです。H100 80GBを使用して最適化された学習を行い、日本の司法試験問題に特化した思考プロセス付きの回答生成が可能です。
<|thinking|>タグで内部思考を段階的に表示| 項目 | 値 |
|---|---|
| ベースモデル | elyza/ELYZA-Thinking-1.0-Qwen-32B |
| モデルタイプ | Qwen2ForCausalLM |
| パラメータ数 | 32B |
| 語彙サイズ | 152,064 |
| 隠れ層サイズ | 5120 |
| レイヤー数 | 64 |
| アテンションヘッド数 | 40 |
| 最大シーケンス長 | 4096 |
| 項目 | 値 |
|---|---|
| 学習手法 | QLoRA (4bit量子化) |
| LoRA rank | 64 |
| LoRA alpha | 128 |
| 学習率 | 0.0001 |
| エポック数 | 5 |
| バッチサイズ | 8 |
| データセットサイズ | 354件 |
| 学習時間 | 0:22:05.969600 |
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# モデルとトークナイザーの読み込み
model = AutoModelForCausalLM.from_pretrained(
"eyepyon/rc6_elyza_quen32b_fine_merged_v1",
torch_dtype=torch.bfloat16, # H100最適化
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"eyepyon/rc6_elyza_quen32b_fine_merged_v1",
trust_remote_code=True
)
# プロンプトテンプレート
def create_prompt(question, choices=None):
if choices:
prompt = f'''<|im_start|>user
以下の司法試験問題について、思考プロセスを示しながら回答してください。
問題:
{question}
選択肢:
{choices}
段階的に分析して正解を導いてください。
<|im_end|>
<|im_start|>assistant'''
else:
prompt = f'''<|im_start|>user
以下の司法試験問題について、思考プロセスを示しながら回答してください。
問題:
{question}
法的根拠を示しながら論述してください。
<|im_start|>
<|im_start|>assistant'''
return prompt.format(question=question, choices=choices)
# 推論実行
question = "憲法第21条の表現の自由について説明してください。"
prompt = create_prompt(question)
inputs = tokenizer(prompt, return_tensors="pt")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.3,
do_sample=True,
top_p=0.9,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
# H100での最適化設定
import torch.backends.cuda
# TensorFloat-32有効化
torch.backends.cuda.matmul.allow_tf32 = True
torch.backends.cudnn.allow_tf32 = True
# コンパイル最適化(PyTorch 2.0以上)
model = torch.compile(model, mode="max-autotune")
# バッチ推論
questions = [
"民法第176条について説明してください。",
"刑法における故意の概念について説明してください。"
]
prompts = [create_prompt(q) for q in questions]
inputs = tokenizer(prompts, return_tensors="pt", padding=True)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.3,
do_sample=True,
num_beams=1, # 高速化
pad_token_id=tokenizer.eos_token_id
)
| GPU | バッチサイズ | トークン/秒 | VRAM使用量 |
|---|---|---|---|
| H100 80GB | 1 | ~45 | ~22GB |
| H100 80GB | 4 | ~160 | ~45GB |
| A100 80GB | 1 | ~30 | ~24GB |
| RTX 4090 | 1 | ~15 | ~23GB |
| 分野 | 正答率 | 思考プロセス品質 |
|---|---|---|
| 憲法 | 高 | 優秀 |
| 民法 | 高 | 優秀 |
| 刑法 | 高 | 優秀 |
| 行政法 | 中 | 良好 |
| 商法 | 中 | 良好 |
# 必須ライブラリ
pip install torch>=2.0.0
pip install transformers>=4.36.0
pip install accelerate>=0.25.0
pip install bitsandbytes>=0.41.0
# 高速化用(オプション)
pip install flash-attn --no-build-isolation
本モデルはLlama 3ライセンスに準拠します。商用利用する際は必ずライセンス条項を確認してください。
| バージョン | 日付 | 変更内容 |
|---|---|---|
| v1.0 | 2025-07-08T09:30:32.388047 | 初回リリース(H100最適化版) |
⚖️ 法的責任の制限: このモデルの使用により生じた如何なる損害についても、開発者は責任を負いません。重要な法的判断は必ず専門家にご相談ください。
🔬 研究用途: このモデルは研究・教育目的で開発されており、実務での使用は推奨されません。
Base model
Qwen/Qwen2.5-32B