以下の内容はhttps://touch-sp.hatenablog.com/entry/2025/02/18/123147より取得しました。


「AXCXEPT」という日本の会社が公開している「phi-4-deepseek-R1K-RL-EZO」というモデルを使ってみました

はじめに

以前同じ会社が公開してくれている「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の回答







以上の内容はhttps://touch-sp.hatenablog.com/entry/2025/02/18/123147より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14