はじめに
以前同じ会社が公開してくれている「phi-4-open-R1-Distill-EZOv1」というモデルを使ったことがあります。touch-sp.hatenablog.com
日本語の追加学習をした推論モデルとしてはサイバーエージェントが公開してくれている「DeepSeek-R1-Distill-Qwen-14B-Japanese」が一番良いと思っていましたが今回使用した「phi-4-deepseek-R1K-RL-EZO」もなかなか良い印象です。
huggingface.co
「DeepSeek-R1-Distill-Qwen-14B-Japanese」に関しての記事はこちらです。
touch-sp.hatenablog.com
touch-sp.hatenablog.com
使い方
vLLMを使って「phi-4-deepseek-R1K-RL-EZO」を実行しました。bitsandbytesを使って4bitに量子化しています。
vllm serve AXCXEPT/phi-4-deepseek-R1K-RL-EZO --quantization bitsandbytes --load-format bitsandbytes --max-model-len 8192
vLLMの導入はこちらを見てください。
Pyhonスクリプト
Gradioを使いました。IP Addressは「localhost」でWindows側からWSL2へアクセスできます。
from openai import OpenAI import gradio as gr openai_api_key = "EMPTY" openai_api_base = "http://localhost:8000/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) system_prompt_text = "あなたは誠実で優秀な日本人のアシスタントです。段階的に推論したうえで最終的な答えを導き出して下さい。" init = { "role": "system", "content": system_prompt_text, } def make_message( message: str, history: list[dict] ): if len(history) == 0: history.insert(0, init) history.append( { "role": "user", "content": message } ) return "", history def bot( history: list[dict] ): stream = client.chat.completions.create( model="AXCXEPT/phi-4-deepseek-R1K-RL-EZO", messages=history, temperature=0.5, max_tokens=4000, #frequency_penalty=1.1, stream=True ) history.append({"role": "assistant","content": ""}) for chunk in stream: history[-1]["content"] += chunk.choices[0].delta.content yield history with gr.Blocks() as demo: chatbot = gr.Chatbot(type="messages") msg = gr.Textbox() clear = gr.ClearButton([msg, chatbot], value="新しいチャットを開始") msg.submit(make_message, [msg, chatbot], [msg, chatbot], queue=False).then( bot, chatbot, chatbot ) demo.launch()
結果
簡単な質問を投げかけてみました。簡単ですがClaude 3.5 SonnetやMicrosoft Copilotが間違えた問題です。質問
9.11と9.9どちらが大きいですか
回答
(ブログに載せるために一部表記を変更しています)この問題を解決するためには、それぞれの数をそのままの形で比較するのではなく、数値として評価する必要があります。 1. 9.11を数値として評価する: - 9.11は小数点以下を持つ数です。 - これは9に0.11を加えたものです。 - 0.11を10進数で計算すると、0.11 = 11/100 = 0.11です。 - したがって、9.11 = 9 + 0.11 = 9.11です。 2. 9.9を数値として評価する: - 9.9も小数点以下を持つ数です。 - これは9に0.9を加えたものです。 - 0.9を10進数で計算すると、0.9 = 9/10 = 0.9です。 - したがって、9.9 = 9 + 0.9 = 9.9です。 3. 比較: - 9.11と9.9を直接比較します。 - 9.11と9.9の小数部分を比較すると、0.11 < 0.9です。 - したがって、9.11 < 9.9です。 結論として、9.9は9.11より大きいです。
「temperature=0.5」を指定しているため回答には幅があります。必ず正解するわけではなく時々間違えます。正解した時の結果を載せています。
Claude 3.5 Sonnetの回答

Microsoft Copilotの回答
