Lightblue社のDeepSeek-R1-Distill-Qwen-7B-JapaneseをDatabricks上で試してみる

# 導入

最近、DeepSeek R1の出力結果を使った蒸留モデルが様々な形で登場しています。
例えばCyberAgent社がリリースしたDeepSeek-R1-Distill-Qwen-32B-Japanesenがあります。

https://www.itmedia.co.jp/aiplus/articles/2501/27/news163.html

以下のようにDatabricksで動かしてみた記事ももう書かれています。早い。

https://qiita.com/taka_yayoi/items/31668d2555ca7568a30a

また、より少ないパラメータサイズの蒸留モデルがLightblue社から公開されていました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Lightblueは日本語版のDeepseek R1を公開しました！<br><br>このモデルは：<br>🇯🇵 日本語が得意 → 日本語で思考するので、日本人が使いやすい<br>🪶 軽い → R1の7B Qwen Distilから学習したので、自分のパソコンでも回せる<br>🧠 賢い → 実験によると、R1の7B Qwen Distilより日本語の数学問題を解決するのが得意… <a href="https://t.co/KP7JpXkDLc">pic.twitter.com/KP7JpXkDLc</a></p>&mdash; 園田亜斗夢 株式会社Lightblue代表 (@tegetegeyashi) <a href="https://twitter.com/tegetegeyashi/status/1884417788800033268?ref_src=twsrc%5Etfw">January 29, 2025</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Lightblue社のモデルは[以前使ってみた記事](https://qiita.com/isanakamishiro2/items/db0525a4b15db45113ff)を書きましたが、今回のモデルも面白そうなのでDatabricks上で試してみます。

環境はDatabricks on AWS、DBRは16.2 ML(Beta)、インスタンスタイプはg5.xlargeのGPUクラスタを利用します。
＊DBR16.2だとtorch2.5.1が最初から入っているので、まだBeta版ですがこちらを利用しました。

# 動かしてみる

モデルは以下のhuggingfaceリポジトリで公開されています。
＊使用方法・作成方法がしっかり書かれていてわかりやすい。

https://huggingface.co/lightblue/DeepSeek-R1-Distill-Qwen-7B-Japanese

ただ、今回は量子化&GGUFフォーマットに変換された以下リポジトリのモデルを利用させてもらいます。

https://huggingface.co/mmnga/lightblue-DeepSeek-R1-Distill-Qwen-7B-Japanese-gguf

また、推論用パッケージも公式だと[vLLM](https://github.com/vllm-project/vllm)を使ったサンプルでしたが、今回は[SGLang](https://github.com/sgl-project/sglang)を利用して推論することにします。

まずは必要なパッケージをインストール。

```python
%pip install flashinfer==0.1.6 --no-deps -i https://flashinfer.ai/whl/cu124/torch2.4/ --trusted-host flashinfer.ai
%pip install sgl-kernel --force-reinstall --no-deps
%pip install "sglang[srt]==0.4.2.post1"

dbutils.library.restartPython()
```

SGLangを使ってモデルをロード。
＊GGUF形式のモデルは事前に```model_path```変数の場所にダウンロードしておきました。

```python
import sglang as sgl
import asyncio

model_path = "/Volumes/training/llm/model_snapshots/models--mmnga--lightblue-DeepSeek-R1-Distill-Qwen-7B-Japanese-gguf/lightblue-DeepSeek-R1-Distill-Qwen-7B-Japanese-Q4_K_M.gguf"
llm = sgl.Engine(model_path=model_path, mem_fraction_static=0.6)
```

これで準備完了です。
では、試しに推論させてみます。
（量子化の影響かストップトークンがうまく働かなかったため、少し変なストップワードを設定しています）

```python
sampling_params = {
    "temperature": 0.6,
    "top_p": 0.95,
    "max_new_tokens": 500,
    "repetition_penalty": 1.1,
    "stop": "<｜end▁of▁sentence｜>"
}
result = llm.generate("9.9と9.11、どっちの数字が大きい？", sampling_params)

print(result["text"])
```

```txt:出力結果
（小学4年生の数学の比較問題）

<think>
まず、9.9と9.11の数字を比較します。

1. **小数点の位置を確認します。**
   - 9.9は1位小数です。
   - 9.11は2位小数です。

2. **小数点を揃えるために、9.9に0.01を加えます。**
   - 9.9 + 0.01 = 9.91

3. **比較します。**
   - 9.91 > 9.11

したがって、9.9が大きいと判断します。
</think>

**解答：**

9.9と9.11の大小を比較するには、以下の手順に従います。

1. **小数点を揃えるために、9.9に0.01を加えます。**
   \[
   9.9 + 0.01 = 9.91
   \]

2. **比較します。**
   \[
   9.91 > 9.11
   \]

したがって、**9.9が大きい**と判断します。

\[
\boxed{9.9}
\]が大きい。
```

推論過程含めて正しい答えを回答してくれますね。

もう少し複雑な推論をさせてみます。

```python
sampling_params = {
    "temperature": 0.6,
    "top_p": 0.95,
    "max_new_tokens": 2000,
    "repetition_penalty": 1.1,
    "stop": "<｜end▁of▁sentence｜>"
}
result = llm.generate("製造業におけるデータ＋AI活用の未来について論じてください。", sampling_params)

print(result["text"])
```

```md:出力結果
$time limit: 1 minute<think>
まず、データとAIの活用が製造業に与える影響を理解する必要があります。製造業では、大量のデータを収集し、自動化を実現することが重要です。AIを使用することで、生産性を高めることが期待されます。しかし、データの質やAIの適応性が、効果を確認する上で重要な要素です。

次に、製造業におけるデータの重要性を考察します。データは製造プロセスの分析、品質管理、生産計画の構築に不可欠です。例えば、生産計画の構築では、過去のデータを分析して、将来の需要を予測することが重要です。

AIの活用は、製造業では预测分析や最適化手法に応用されています。预测分析では、市場の动向や需要を予測し、生産計画を調整することができます。最適化手法では、生産計画を最適化し、生産を効率的に管理することができます。

しかし、製造業ではデータの収集と管理が大規模で複雑です。データの質が低い場合、分析結果が不正確になる可能性があります。また、AIモデルの構造や学習アルゴリズムが、データの特性に適するか、適切に調整されているかが、効果を判断する上で重要です。

さらに、製造業では、生産計画の柔軟性を高めることが重要です。AIモデルが柔軟に適応できる場合、生産計画が適応可能な状況を作成することができます。例えば、生産計画が自動的に調整され、生産の予算や予期外の対策が自動化される場合、柔軟性が向上します。

最後に、製造業におけるデータとAIの活用の未来を予測します。データの収集と管理が進化するため、AIモデルがより柔軟に適応できる場合、製造業ではより高度な機能や効率が期待されます。また、人工知能がより柔軟に適応できる場合、生産計画の柔軟性が向上するでしょう。

以上の点から、データとAIの活用が製造業に与える影響を論じることができます。
</think>

**データとAI活用が製造業に与える影響の論述**

**1. データとAI活用の重要性**

製造業では、大量のデータを収集し、自動化を実現することが重要です。データは製造プロセスの分析、品質管理、生産計画の構築に不可欠です。AIを使用することで、生産性を高めることが期待されます。

**2. データの重要性**

データは製造プロセスの分析、品質管理、生産計画の構築に不可欠です。例えば、生産計画の構築では、過去のデータを分析して、将来の需要を予測することが重要です。

**3. AI活用の活用場所**

AIは、製造業では预测分析や最適化手法に応用されています。预测分析では、市場の动向や需要を予測し、生産計画を調整することができます。最適化手法では、生産計画を最適化し、生産を効率的に管理することができます。

**4. データの質とAIモデルの適応性**

データの質が低い場合、分析結果が不正確になる可能性があります。また、AIモデルの構造や学習アルゴリズムが、データの特性に適するか、適切に調整されているかが、効果を判断する上で重要です。

**5. 生産計画の柔軟性**

製造業では、生産計画の柔軟性を高めることが重要です。AIモデルが柔軟に適応できる場合、生産計画が自動的に調整され、生産の予算や予期外の対策が自動化される場合、柔軟性が向上します。

**6. 未来展望**

データの収集と管理が進化するため、AIモデルがより柔軟に適応できる場合、製造業ではより高度な機能や効率が期待されます。また、人工知能がより柔軟に適応できる場合、生産計画の柔軟性が向上するでしょう。

**結論**

データとAI活用が製造業に与える影響は、生産計画の最適化、柔軟性の向上、効率の向上など、多様な面で期待されます。これらがさらに進化するにつれて、製造業はより高度な技術や経済的成長を期待するでしょう。
```

ところどころ中国で使われる漢字が混ざっていますが、日本語での推論過程を基に回答が生成されています。なるほど面白い。

# まとめ

Lightblue社のDeepSeek-R1-Distill-Qwen-7B-Japaneseを試してみました。
4bit量子化モデルを使ったため、オリジナルの方はより性能の高いReasoningを行うと思いますが、参考まで。

しかし7Bというパラメータサイズでここまでできるものなんですね。
小型で高性能なモデルが続々登場してきて、進化の速さを感じます。

Lightblue社は他にもR1蒸留による[小型・大型の多言語対応モデル](https://huggingface.co/lightblue)も出しているので、試してみたいと思います。