🙆

QwQ-32B公式ブログ日本語まとめ

2025/03/06に公開

本記事は以下の公式ブログを参考にしています。
QwQ-32B: Embracing the Power of Reinforcement Learning

強化学習のスケーリングとモデル性能の向上

強化学習(RL)のスケーリングは、従来の事前学習やポストトレーニングの手法を超えて、モデル性能を向上させる可能性を秘めています。近年の研究では、RLがモデルの推論能力を大幅に向上させることが示されています。例えば、DeepSeek R1は、コールドスタートデータとマルチステージトレーニングを統合することで、深い思考と複雑な推論を可能にし、最先端の性能を達成しました。

私たちは、強化学習(RL)のスケーラビリティと、大規模言語モデルの知能向上への影響を探求しています。本研究では、QwQ-32Bという320億パラメータを持つモデルを発表します。このモデルは、6710億パラメータ(アクティブなパラメータは370億)を持つDeepSeek-R1と同等の性能を達成しています。この結果は、大規模な世界知識で事前学習された強力な基盤モデルにRLを適用することで、顕著な成果が得られることを示しています。

さらに、私たちはこの推論モデルにエージェント関連の機能を統合しました。これにより、ツールを活用し、環境からのフィードバックに基づいて適応的に推論する「批判的思考」が可能になりました。これらの進展は、RLの変革的な可能性を示すだけでなく、人工汎用知能(AGI)の実現に向けたさらなるイノベーションへの道を切り開くものです。

QwQ-32BはApache 2.0ライセンスのもとでHugging FaceおよびModelScopeにてオープンウェイトとして公開されており、Qwen Chatを通じて利用可能です。


パフォーマンス評価

QwQ-32Bは、数学的推論、コーディング能力、一般的な問題解決能力を評価するさまざまなベンチマークでテストされました。以下の結果は、DeepSeek-R1-Distilled-Qwen-32B、DeepSeek-R1-Distilled-Llama-70B、o1-mini、元のDeepSeek-R1など、他の主要モデルと比較したQwQ-32Bの性能を示しています。


強化学習の適用

QwQ-32Bのトレーニングは、コールドスタートのチェックポイントから始まり、**成果に基づく報酬(Outcome-based rewards)**を活用したRLのスケーリングを実施しました。

  1. 第一段階:

    • 数学とコーディングタスクに特化したRLのスケーリングを実施
    • 従来の報酬モデルではなく、数学問題の正解を保証する精度検証システムと、コードのテストケース合格率を評価するコード実行サーバーを活用
    • トレーニングの進行とともに、数学とコーディング能力の継続的な向上を確認
  2. 第二段階:

    • 一般的な能力向上のためのRLトレーニングを追加
    • 汎用報酬モデルとルールベースの検証システムを利用
    • 比較的少ない学習ステップで、数学やコーディングの性能を損なうことなく、指示の理解、ヒューマンアライメント(人間の意図との整合性)、エージェント性能の向上を実現

QwQ-32Bの利用方法

以下に、Hugging Face TransformersおよびAlibaba Cloud DashScope APIを使用してQwQ-32Bを利用する簡単なサンプルコードを紹介します。

Hugging Face Transformersを使用する場合

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/QwQ-32B"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "How many r's are in the word \"strawberry\""
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 = [
    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)

DashScope APIを使用する場合

from openai import OpenAI
import os

# OpenAIクライアントの初期化
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

reasoning_content = ""
content = ""

is_answering = False

completion = client.chat.completions.create(
    model="qwq-32b",
    messages=[
        {"role": "user", "content": "Which is larger, 9.9 or 9.11?"}
    ],
    stream=True
)

print("\n" + "=" * 20 + " 推論内容 " + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content is not None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            if delta.content != "" and is_answering is False:
                print("\n" + "=" * 20 + " 生成結果 " + "=" * 20 + "\n")
                is_answering = True
            print(delta.content, end='', flush=True)
            content += delta.content

今後の展望

今回の研究は、強化学習(RL)をスケールアップして推論能力を向上させるというQwenの新たな試みの第一歩です。この過程で、大規模RLの持つ計り知れない可能性を目の当たりにしました。また、事前学習済みの言語モデルが持つ未開拓の能力をさらに引き出せる可能性も確認できました。

今後のQwenの進化に向け、より強力な基盤モデル大規模計算リソースを活用したRLを組み合わせることで、人工汎用知能(AGI)に一歩近づくことができると確信しています。さらに、RLとエージェントの統合による長期的な推論能力の向上を目指し、推論時のスケーリングによってさらなる知能の解放を実現していきます。

Discussion