1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

5分でできる!VLLMを使ったDeepSeek-R1-Distill-Qwen-32B-Japaneseのローカル環境構築

Posted at

はじめに

VLLMは、大規模言語モデル(LLM)を高速かつ効率的に動作させるための軽量なサーバーです。本記事では、cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japaneseという日本語に特化した高性能な言語モデルを、ローカルPCでVLLMを使って簡単に起動する方法を解説します。手順に従えば、わずか5分でモデルを動作させることが可能です。


目次

  1. 環境準備
  2. モデルのダウンロード
  3. モデルの起動
  4. モデルの検証
  5. 注意事項
  6. 参考リンク

環境準備

必要なツール

以下のツールを準備してください:

  • conda:Python仮想環境の管理に使用します。
  • pip:Pythonパッケージのインストールに使用します。
  • VLLM:LLMを高速に動作させるためのサーバーです。
  • flash-attn:モデルの推論速度を向上させるためのライブラリです。

仮想環境の作成

まず、Python 3.11の仮想環境を作成し、アクティベートします。

conda create -n vllm_v0.7.1 python=3.11 -y
conda activate vllm_v0.7.1

VLLMと依存ライブラリのインストール

以下のコマンドで、VLLMとflash-attnをインストールします。

pip install vllm
pip install flash-attn --no-build-isolation

モデルのダウンロード

Hugging Face CLIのインストール

モデルをダウンロードするために、Hugging Face CLIをインストールします。

pip install "huggingface_hub[hf_transfer]"

DeepSeek-R1-Distill-Qwen-32B-Japaneseのダウンロード

以下のコマンドで、cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japaneseをダウンロードします。

HF_HUB_ENABLE_HF_TRANSFER=1 \
huggingface-cli download cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japanese

モデルの起動

起動コマンド

以下のコマンドでモデルを起動します。
CUDA_VISIBLE_DEVICESで使用するGPUを指定し、--tensor-parallel-sizeでGPUの数を指定します。)

CUDA_VISIBLE_DEVICES=3,1,0,2 \
VLLM_USE_V1=1 \
VLLM_WORKER_MULTIPROC_METHOD=spawn \
vllm serve cyberagent/DeepSeek-R1-Distill-Qwen-32B-Japanese \
--trust-remote-code --served-model-name gpt-4 \
--gpu-memory-utilization 0.98 --tensor-parallel-size 4 \
--port 8000 --max-model-len 65536

起動確認

起動に成功すると、以下のメッセージが表示されます。

INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

モデルの検証

APIリクエストの送信

以下のコマンドで、起動したモデルにAPIリクエストを送信し、動作を確認します。

invoke_url='http://localhost:8000/v1/chat/completions'

authorization_header='Authorization: Bearer sk-dummy'
accept_header='Accept: application/json'
content_type_header='Content-Type: application/json'

data=$'{
  "messages": [
    {
      "role": "user",
      "content": "9.11と9.8、どちらが大きいですか?"
    }
  ],
  "stream": false,
  "model": "gpt-4",
  "max_tokens": 4096,
  "presence_penalty": 0,
  "frequency_penalty": 0,
  "top_p": 0.7,
  "temperature": 0.6
}'

response=$(curl --silent -i -w "\n%{http_code}" --request POST \
  --url "$invoke_url" \
  --header "$authorization_header" \
  --header "$accept_header" \
  --header "$content_type_header" \
  --data "$data"
)

echo "$response"

サンプル出力

以下のようなレスポンスが返ってきます。

<think>
まず、ユーザーが「9.119.8、どちらが大きいですか?」と質問しています。これは単純な数値比較のようですが、文脈によって解釈が異なる可能性があります。例えば、日付としての解釈か、数値の大小比較かを判断する必要があります。

まず、日付としての解釈を考えます。911日と98日を比較すると、日付の大小は通常、月と日で比較します。911日は98日より後の日付なので、日付としては911日の方が大きいと言えます。しかし、ユーザーが数値の大小を尋ねている可能性もあります。

次に、数値の大小比較として考えます。9.119.8を小数点以下の桁数で揃える必要があります。9.119.1109.89.800とすると、小数点以下の桁数を揃えることで比較しやすくなります。この場合、9.800の方が9.110よりも大きいため、数値としては9.8の方が大きいです。

ただし、ユーザーが日付を指しているのか数値を指しているのかを明確にする必要があります。日本語の文脈では、日付を表す場合、月と日を「911日」と「98日」と表記することが一般的です。一方、数値の場合は「9.11」と「9.8」と表記されます。しかし、ユーザーの質問が「9.119.8」と書かれているため、数値の比較を想定している可能性が高いです。

さらに、ユーザーが過去にCyberAgent株式会社に関する詳細な分析を求めていたことを考慮すると、今回の質問は単なる数値比較ではなく、何か別の意図があるかもしれません。例えば、9.11911日事件と解釈し、9.8を別の出来事と比較している可能性もあります。しかし、一般的な解釈としては数値の大小比較が適切でしょう。

結論として、数値の大小比較であれば9.8の方が大きいため、そのように回答します。ただし、日付としての解釈も考慮し、両方の可能性を説明した方が親切かもしれません。
</think>

**答え:数値としての比較では「9.8」が大きいです。**

### 詳細な解説:
1. **数値の大小比較**  
   - 9.8  9.11 より **0.69** 大きいです。  
   - 小数点以下を揃えると、  
     `9.800`(9.8 vs `9.110`(9.11  
      **9.800 > 9.110** が成立します。

2. **日付としての解釈**  
   - 9.11」を「911日」、「9.8」を「98日」と解釈すると、  
     **911日(9/11)**  **98日(9/8)** より **3日後** に来ます。  
      **日付としては9.11の方が「大きい」** と言えます。

3. **歴史的文脈**  
   - 9.11」を **2001年のアメリカ同時多発テロ事件** と解釈すると、  
     9.8 は一般的な日付や数値の意味を持たず、比較対象になりません。

---

### 結論:
- **数値の大小**  **9.8 > 9.11**  
- **日付の大小**  **9/11 > 9/8**  
- **歴史的文脈**  9.11は重大な事件を指すため、比較対象外です。

質問の意図に応じて、解釈が変わります!

注意事項

  • GPUメモリの設定--gpu-memory-utilization 0.98はGPUメモリの利用率を設定します。環境に応じて調整してください。
  • テンソル並列処理--tensor-parallel-size 4は使用するGPUの数に応じて変更します。
  • ポート番号--port 8000はAPIのポート番号です。他のアプリケーションと競合する場合は変更してください。

参考リンク


この手順に従えば、ローカルPCでcyberagent/DeepSeek-R1-Distill-Qwen-32B-Japaneseを簡単に動作させることができます。ぜひお試しください!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?