---
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

(*)アルファベット順