vllmがいつの間にかmacに対応してたので試す
最近、LLM(大規模言語モデル)を手軽に扱う方法として「vLLM」というツールが注目を集めています。私は普段、LLMまわりの実験をするときにvLLMを使ってモデルを立てることが多いのですが、これまではmac(特にApple Silicon)での対応が中途半端だったため、「pip install vllm」でサクッと導入しても下記のようなエラーが出て動かないケースがありました。
raise RuntimeError("Failed to infer device type")
RuntimeError: Failed to infer device type
このエラーに悩まされて、一時期放置していたんですよね。しかし最近チェックしてみたところ、どうやらmacにも対応し始めたようで、macOS(Apple Silicon)でもvLLMを動かせるようになっていました。そこで今回は、その導入方法と実際にモデルを動かすまでの手順を紹介してみたいと思います。
なぜvLLMなのか
LLMを動かす際、方法はいろいろあります。Dockerを使ったり、クラウド環境でGPUを借りたり、または他の推論フレームワークを使ったり。それぞれメリット・デメリットはあるのですが、私の場合は以下の理由でvLLMを好んでいます。
- 簡易サーバーの立ち上げがラク
vllm serve [モデル名]
のような形で、Webサーバーを手軽に起動できるため、手元でのテストがしやすい。 - 推論速度が速い設計
vLLMは内部で効率的な推論を行うため、比較的大きめのモデルでもスムーズに動くと言われている。 - プラグイン感覚でモデルを差し替え可能
コマンドで指定するモデルを変えるだけで、さまざまなLLMをすぐに試せる。
こうしたメリットがあるため、個人的には「まずvLLMで試してみる」ことが多いのですが、これまでmacOSでのサポートはオフィシャルに明言されていなかったように感じます。しかし最近になって、Apple Silicon(特にmacOS Sonoma以降)への対応が進んできたので、早速試してみることにしました。
目的
検索機能を付けて日本語でChatGPTに聞いても「vllmはmacに対応していません」と答えてくるので、この記事を検索させて対応方法を答えさせるために記事を書きます。
方法
必要環境(2025年1月24日時点)
vLLMをmacOS(Apple Silicon)で動かすにあたり、公式のリポジトリで推奨されている環境は以下のとおりです。
- Pythonのバージョン: 3.9 〜 3.12
- OS: macOS Sonoma 以降
- Apple Silicon
- Xcode 15.4 以降(Command Line Tools がインストールされていること)
- Compiler: Apple Clang >= 15.0.0
- PyTorch: condaでのインストールは非推奨(公式ドキュメントより)。condaを使う場合はあくまでPython環境の作成のみ推奨
- 仮想環境:
uv
(microvenv)などで作成するのがおすすめ
特にmacで開発を行う際は、Command Line ToolsやXcodeのバージョンが古いとビルドエラーが起きる可能性があります。Software Update
で最新のXcodeやOSを導入するようにしましょう。
インストール手順
それでは、実際にvLLMをインストールして動かす手順を紹介します。
仮想環境には、最近注目されている軽量ツール「uv」を利用しますが、もちろんPython標準のvenvやpipenvでも問題ありません。
# これでインストールできると思います
pip install uv
フォルダ作成と仮想環境の用意
# 新しいフォルダを作る(例: my_vllm_project)
mkdir my_vllm_project
cd my_vllm_project
# uvを使って初期化
uv init . --python 3.12
# openaiを追加
uv add openai
# ipynbを使う場合はこれを入れる
uv add ipykernel
# 仮想環境をアクティブ化
source .venv/bin/activate
ここではPython3.12を指定していますが、3.9〜3.12であれば基本的に大丈夫です。(3.12以外は試してないです。)
vLLMのリポジトリをクローンし、依存関係をインストール
git clone https://github.com/vllm-project/vllm.git
# CPU用のrequirementsをインストール
uv pip install -r vllm/requirements-cpu.txt
# vLLM本体をインストール
uv pip install -e vllm/.
macOS上でのvLLM動作は現在のところCPUのみがサポートされているようです。GPUのサポートは将来的にどうなるか分かりませんが、2025年1月24日現時点ではCPUモードでの推論のようです。
vLLMサーバーの起動
ここではAlibabaのQwen2.5-0.5B-Instructモデルを例にして立ち上げてみます。
vllm serve Qwen/Qwen2.5-0.5B-Instruct --port 5543 --dtype float16
実行後、以下のようにログが表示されればサーバーが起動しています。
INFO: Started server process [67646]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on socket ('0.0.0.0', 5543) (Press CTRL+C to quit)
簡単な動作確認(OpenAIライブラリから叩いてみる)
vLLMがOpenAIのAPI互換を謳っているため、試しにOpenAIのPythonライブラリを利用してエンドポイントにリクエストを投げてみることができます。
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:5543/v1"
)
response = client.chat.completions.create(
model="Qwen/Qwen2.5-0.5B-Instruct",
messages=[
{"role": "system", "content": "You are a helpful chat assistant."},
{"role": "user", "content": "Hello, vLLM on mac!"}
]
)
print(response.choices[0].message.content)
# Hello! How can I assist you with something today?
サーバーが動いていれば、実際にモデルからの応答が返ってきます。これでmac上でvLLMがきちんと動作していることが確認できます。
最後に
いろいろなLLMをmacで試すのは、ユーザー体験として非常に快適です。Dockerやクラウド環境も使わず、ローカルで直接立ち上げられるのでトライ&エラーが早く、ファイルの扱いも楽ちん。特に「ちょっとカスタムしたモデルを試したい」「すぐにプロンプト設計を変えてテストしたい」といった用途にはうってつけでしょう。
私自身、LLMの活用をいろいろと模索する中で、vLLMの手軽さにかなり助けられています。macへの正式サポートが進んだことで、ローカルでの開発・検証がますますやりやすくなることは嬉しいニュースです。もしまだvLLMを触ったことがない方は、この記事をきっかけにぜひ試してみてください。
コメント