見出し画像

DeepSeek-R1-Distill-Qwen-7B-Japanese を試してみた

1. はじめに

Hugging Face に公開されている lightblue/DeepSeek-R1-Distill-Qwen-7B-Japanese を試しました。本モデルは、DeepSeek 社の R1 モデルを日本語向けに最適化したもので、日本語のプロンプトに対して一貫して日本語で応答するように調整されています。

これまでの R1 モデルは英語と中国語のバイリンガル対応でしたが、日本語のプロンプトに対して英語や中国語で応答することがありました。本モデルはその問題を解決するため、日本語データセットで微調整されています。

2. モデルのトレーニングと特長

本モデルは lightblue/distilabel-reasoning-R1-Llama-70B データセットを使用してトレーニングされ、 Alibaba Cloud の 8 x L20 インスタンス(ecs.gn8is-8x.32xlarge) で約 10 分間の学習が行われました。

使用時には、

  • サンプリング温度(temperature)0.5~0.7 に設定

  • repetition_penalty(繰り返し抑制)1.1以上 に設定 することで、より自然な応答が得られるとされています。

また、元の R1 モデルと比較して、日本語のプロンプトに対する 正確性一貫性 が向上していることが評価されています。

3. 実装と実験

3.1 環境設定

本実験では、Google Colab の ランタイム L4 を使用しました。

3.2 vLLM のインストール

まず、vLLM をインストールします。

!pip install vllm

3.3 モデルのロード

次に、vLLM の LLM クラスを使ってモデルをロードします。

from vllm import LLM, SamplingParams

# モデルを読み込み
llm = LLM(
    model="lightblue/DeepSeek-R1-Distill-Qwen-7B-Japanese",
    max_model_len=8_000
)

3.4 サンプリングパラメータの設定

サンプリングの際に使用するパラメータを設定します。

sampling_params = SamplingParams(
    temperature=0.5, 
    max_tokens=8_000,
    repetition_penalty=1.1
)

3.5 プロンプトの準備

prompts = [
    """学校には1クラスにつき20人の生徒がおり、クラスは合計3つあります。
    学校全体では男子と女子がそれぞれ50%ずついます。
    1つ目のクラスには女子が15人、2つ目のクラスには女子が12人います。
    3つ目のクラスには何人の男子がいますか?"""
]

3.6 チャット形式の入力データ作成

conversations = [
    [{"role": "user", "content": prompt}] for prompt in prompts
]

3.7 推論の実行

outputs = llm.chat(conversations, sampling_params=sampling_params)

3.8 結果の出力

for output in outputs:
    print(output.outputs[0].text)

4. 実験結果と考察

今回の実験では、日本語プロンプトに対して 一貫して日本語での回答 が得られました。

<think>
まず、学校の総生徒数を算出します。各クラスに20人の生徒があり、クラスは3つあるため、総生徒数は60人です。

次に、学校全体で男子と女子は同じ人数に分布しています。したがって、男子と女子は各30人ずついます。

1つ目のクラスでは女子が15人、2つ目のクラスでは女子が12人います。したがって、女子の総数は15 + 12 = 27人と求められます。

学校全体の女子が30人であることを考慮すると、3つ目のクラスでの女子数は30 - 27 = 3人と求められます。

3つ目のクラスの生徒総数は20人で、女子が3人いるため、男子の数は20 - 3 = 17人と求められます。
</think>

解答:

学校の生徒構成を分析して3つ目のクラスの男子数を求めます。

  1. 学校の総生徒数:

    • 各クラスに20人の生徒があり、クラスは3つある。
      [
      20 \text{人/クラス} \times 3 \text{クラス} = 60 \text{人}
      ]

  2. 男女の分布:

    • 学校全体で男子と女子はそれぞれ50%ずつ。
      [
      \frac{60}{2} = 30 \text{人(男子)},\quad 30 \text{人(女子)}
      ]

  3. 各クラスの女子数:

    • 1つ目のクラス:15人(女子)

    • 2つ目のクラス:12人(女子)

  4. 3つ目のクラスの女子数:
    [
    30 \text{人(全体女子)} - (15 + 12) \text{人(1,2クラス女子)} = 3 \text{人(3クラス女子)}
    ]

  5. 3つ目のクラスの男子数:
    [
    20 \text{人(3クラス合計)} - 3 \text{人(3クラス女子)} = 17 \text{人(男子)}
    ]

最終的な答え:
[
\boxed{17}
]



良かった点

  • 日本語のプロンプトに対して 自然な日本語 で応答

  • 繰り返し抑制(repetition_penalty)の調整が効果的

  • 最大 8,000 トークンまでの長文対応が可能

課題点

  • 応答の正確性にはまだ多少の改善余地あり

  • 長文の一貫性が時々崩れることがある

  • 環境によって推論速度が変動する

5. まとめ

lightblue/DeepSeek-R1-Distill-Qwen-7B-Japanese は、日本語対応の LLM モデルとして非常に有用です。特に、R1 モデルの日本語対応の課題を克服し、より一貫性のある応答を生成できる点が強みだと思います。


いいなと思ったら応援しよう!