はじめに
VLLMは、大規模言語モデル(LLM)を高速かつ効率的に動作させるための軽量なサーバーです。本記事では、google/gemma-3-27b-itという日本語にサポートした高性能な言語モデルを、ローカルPCでVLLMを使って簡単に起動する方法を解説します。手順に従えば、わずか10分でモデルを動作させることが可能です。
目次
環境準備
必要なツール
以下のツールを準備してください:
- conda:Python仮想環境の管理に使用します。
- pip:Pythonパッケージのインストールに使用します。
- VLLM:LLMを高速に動作させるためのサーバーです。
- flash-attn:モデルの推論速度を向上させるためのライブラリです。
仮想環境の作成
まず、Python 3.11の仮想環境を作成し、アクティベートします。
conda create -n vllm_main python=3.11 -y
conda activate vllm_main
VLLMと依存ライブラリのインストール
以下のコマンドで、VLLMとflash-attn
をインストールします。
git clone https://github.com/vllm-project/vllm.git; cd vllm
# VLLM_USE_PRECOMPILED=1 pip install --editable . vllm[audio]
VLLM_USE_PRECOMPILED=1 pip install --editable .
pip install flash-attn --no-build-isolation
pip install git+https://github.com/huggingface/transformers@v4.49.0-Gemma-3
2025/3/13時点では、google/gemma-3-27b-itをサポートするVLLMはまだリリースされていないため、ソースコードからインストールする必要です。
モデルのダウンロード
Hugging Face CLIのインストール
モデルをダウンロードするために、Hugging Face CLIをインストールします。
pip install "huggingface_hub[hf_transfer]"
google/gemma-3-27b-itのダウンロード
以下のコマンドで、google/gemma-3-27b-itをダウンロードします。
HF_HUB_ENABLE_HF_TRANSFER=1 \
huggingface-cli download google/gemma-3-27b-it
モデルの起動
起動コマンド
以下のコマンドでモデルを起動します。
(CUDA_VISIBLE_DEVICES
で使用するGPUを指定し、--tensor-parallel-size
でGPUの数を指定します。)
CUDA_VISIBLE_DEVICES=3,1,0,2 \
VLLM_WORKER_MULTIPROC_METHOD=spawn \
TRANSFORMERS_OFFLINE=1 \
HF_DATASETS_OFFLINE=1 \
vllm serve google/gemma-3-27b-it --trust-remote-code --served-model-name gpt-4o --gpu-memory-utilization 0.99 --tensor-parallel-size 4 --port 8000 --api-key sk-dummy --max-model-len 32768
起動確認
起動に成功すると、以下のメッセージが表示されます。
INFO 03-13 08:17:14 [api_server.py:958] Starting vLLM API server on http://0.0.0.0:8000
INFO 03-13 08:17:14 [launcher.py:26] Available routes are:
INFO 03-13 08:17:14 [launcher.py:34] Route: /openapi.json, Methods: HEAD, GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /docs, Methods: HEAD, GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /docs/oauth2-redirect, Methods: HEAD, GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /redoc, Methods: HEAD, GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /health, Methods: GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /ping, Methods: POST, GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /tokenize, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /detokenize, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/models, Methods: GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /version, Methods: GET
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/chat/completions, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/completions, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/embeddings, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /pooling, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /score, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/score, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/audio/transcriptions, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /rerank, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v1/rerank, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /v2/rerank, Methods: POST
INFO 03-13 08:17:14 [launcher.py:34] Route: /invocations, Methods: POST
INFO: Started server process [102854]
INFO: Waiting for application startup.
INFO: Application startup complete.
モデルの検証
Chatbox AIというツールを使用して、検証してみてみました。
検証1
鯉のぼりを識別してくれました。
検証2
Prompt通りに正しく生成してくれました。
検証3
検証3で生成されたものを画像にして、識別してもらいます。100%正解でした。
検証4
テキストを抽出してもらいました。惜しいところですが、1文字が違いました。
(誤)これは、このリリースの焦点と、リリースされる情報を反映しています。
(正)これは、このリリースの焦点と、リリースされる情勢を反映しています。
注意事項
-
GPUメモリの設定:
--gpu-memory-utilization 0.99
はGPUメモリの利用率を設定します。環境に応じて調整してください。 -
テンソル並列処理:
--tensor-parallel-size 4
は使用するGPUの数に応じて変更します。 -
ポート番号:
--port 8000
はAPIのポート番号です。他のアプリケーションと競合する場合は変更してください。
参考リンク
この手順に従えば、ローカルPCでgoogle/gemma-3-27b-itを簡単に動作させることができます。ぜひお試しください!
参考資料: