97 lines
3.0 KiB
Markdown
97 lines
3.0 KiB
Markdown
---
|
||
library_name: transformers
|
||
license: apache-2.0
|
||
language:
|
||
- ja
|
||
base_model:
|
||
- Qwen/Qwen2.5-32B-Instruct
|
||
- abeja/ABEJA-Qwen2.5-32b-Japanese-v0.1
|
||
- Qwen/QwQ-32B
|
||
pipeline_tag: text-generation
|
||
---
|
||
## ABEJA-QwQ32b-Reasoning-Japanese-v1.0
|
||
|
||
ABEJA-QwQ32b-Reasoning-Japanese-v1.0はabeja/ABEJA-Qwen2.5-32b-Japanese-v0.1(*)をベースとしたReasoningモデルです。
|
||
|
||
ABEJA-Qwen2.5-32b-Japanese-v0.1に対してQwen/QwQ-32BのChatVectorをマージしたあと、追加学習をすることでReasoningモデルとして日本語性能を確保しています。
|
||
|
||
(*)Qwen/Qwen2.5-32B-Instructをベースに日本語中心とした継続事前学習を実施したモデル
|
||
|
||
|
||
`<think></think>`で囲まれた思考過程の後に最終的な出力をします。
|
||
|
||
|
||
## 使用上の注意
|
||
|
||
モデルマージで利用している [QwQ-32B](https://huggingface.co/Qwen/QwQ-32B) の特性を引き継いでおり、QwQ-32BのUsage-Gidelineに従った利用を推奨します。
|
||
|
||
https://huggingface.co/Qwen/QwQ-32B#usage-guidelines
|
||
|
||
特に
|
||
|
||
- 強制的に思考過程を経るために `<think>\n` の後から出力を開始してください。apply_chat_templateを使いadd_generation_prompt=Trueとすると、自動的に適用されます。
|
||
- Temperature=0.6, TopP=0.95, MinP=0, TopKを20から40の間、といったパラメータを推奨します。(ここの値を大きく変えると精度が落ちることを確認しています)
|
||
- multi-turnでの会話では、会話履歴の中には最終的な出力のみで`<think></think>`で囲まれた思考過程は含めないでください。この機能もすでにapply_chat_templateに含んでいます。
|
||
- Systemプロンプトは不要です。最初にrole:userから始めてください。
|
||
|
||
といった点はご注意ください。
|
||
|
||
## 使い方
|
||
|
||
```Python
|
||
import torch
|
||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
|
||
model_name = "abeja/ABEJA-QwQ32b-Reasoning-Japanese-v1.0"
|
||
|
||
model = AutoModelForCausalLM.from_pretrained(
|
||
model_name,
|
||
torch_dtype="auto",
|
||
device_map="auto"
|
||
)
|
||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||
|
||
prompt = "人とAIが協調するためには?"
|
||
messages = [
|
||
{"role": "user", "content": prompt}
|
||
]
|
||
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=32768
|
||
)
|
||
generated_ids = model.generate(
|
||
**model_inputs,
|
||
max_new_tokens=32768,
|
||
do_sample=True,
|
||
temperature=0.6,
|
||
top_k=40,
|
||
top_p=0.95,
|
||
)
|
||
generated_ids = [
|
||
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
||
]
|
||
|
||
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
|
||
|
||
print(response)
|
||
```
|
||
|
||
## 開発者
|
||
|
||
- Hiroshi Kiyota
|
||
- Keisuke Fujimoto
|
||
- Kentaro Nakanishi
|
||
- Kyo Hattori
|
||
- Shinya Otani
|
||
- Shogo Muranushi
|
||
- Takuma Kume
|
||
- Tomoki Manabe
|
||
|
||
(*)アルファベット順 |