Ubuntu Server に 12GB VRAM の GPU があるので、これで LM Studio を常時ヘッドレス起動しておくことにした。 12GB VRAM で Claude Code とセットで使うのに(Claude Opus 3.7 曰く)Qwen3.5 9b Q4_K_M がいいらしいのでそれを使う。
LM Studio のセットアップは済んでいることとする。 → LM Studio を試した
Qwen3.5 9b Q4_K_M を入れる:
lms get qwen/qwen3.5-9b
AI によると詳しく指定 lms get qwen/qwen3.5-9b-gguf のように、とあったのだが、 単に lms get qwen/qwen3.5-9b したら To download: Qwen3.5 9B Q4_K_M [GGUF] - 6.55 GB が落ちてきた。 詳細は不明。
いつもの手順で起動してモデルがどうなったか確認:
lms daemon up
lms load qwen/qwen3.5-9b --yes --context-length 65536
lms server start
- メモ1: Claude Code から使うには 64K の context length が必要らしい
- メモ2: lms daemon down すると down できることが判明。
$ curl http://localhost:1234/v1/models
{
"data": [
{
"id": "qwen/qwen3.5-9b",
"object": "model",
"owned_by": "organization_owner"
},
{
"id": "google/gemma-4-e4b",
"object": "model",
"owned_by": "organization_owner"
},
{
"id": "text-embedding-nomic-embed-text-v1.5",
"object": "model",
"owned_by": "organization_owner"
}
],
"object": "list"
}
ちなみに ダウンロードしたモデルはここに配置された:
~/.lmstudio/models/lmstudio-community/Qwen3.5-9B-GGUF/Qwen3.5-9B-Q4_K_M.gguf
あとは使うだけなのですが、その Ubuntu Server には Claude Code がない。 すでに Claude Code をインストール済の MacBook Air から使うことにする。
ここでは仮に Ubuntu Server の IPアドレス が 192.168.10.100 でユーザー名は foo だっとして以後は話を進める。
この手順で起動しておく:
lms daemon up
lms load qwen/qwen3.5-9b --yes --context-length 65536
lms server start
~/.bashrc に次の環境変数を記述:
# Claude Code for LM Studio
export ANTHROPIC_BASE_URL=http://localhost:1234
export ANTHROPIC_AUTH_TOKEN=lmstudio
export ANTHROPIC_MODEL="qwen/qwen3.5-9b"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
トンネルする:
ssh -L 1234:localhost:1234 foo@192.168.10.100
これ curl http://localhost:1234/v1/models して MacBook Air 側から LM Studio にアクセスできるか確認しておく。
MacBook Air 側で Claude Code を起動します。 先ほど設定した環境変数が有効になっていれば例のマスコット(Clawd)の下の辺りに qwen/qwen3.5-9b のように使用モデルが表示される。 あとは使うだけです。
ここにある pokemon_data.json ( https://github.com/kotofurumiya/pokemon_data/blob/master/data/pokemon_data.json ) を試しにプロジェクトルートに配置して
次の指示:
read ./pokemon_data.json and create xlsx file, headers are name and types.
これでこのエクセルデータ が生成できました。
⏺ Created successfully! The xlsx file has been generated at /path/to/pokemon_data.xlsx with:
- 918 rows (pokemon entries)
- 2 columns: name and types
The types column contains comma-separated type strings (e.g., "くさ、どく") for each pokemon.
たぶん簡単過ぎる課題だったのでしょう。
Create Systemd Service に説明があります。
/etc/systemd/system/lmstudio.service :
[Unit]
Description=LM Studio Server
[Service]
Type=oneshot
RemainAfterExit=yes
User=YOUR_USERNAME
Environment="HOME=/home/YOUR_USERNAME"
ExecStartPre=/home/YOUR_USERNAME/.lmstudio/bin/lms daemon up
ExecStartPre=/home/YOUR_USERNAME/.lmstudio/bin/lms load qwen/qwen3.5-9b --yes --context-length 65536
ExecStart=/home/YOUR_USERNAME/.lmstudio/bin/lms server start
ExecStop=/home/YOUR_USERNAME/.lmstudio/bin/lms daemon down
[Install]
WantedBy=multi-user.target
元のページで load openai/gpt-oss-20b --yes の部分だけ Qwen3.5 9b 用の記述に変えています。
パーミッション設定:
sudo chmod 777 /etc/systemd/system/lmstudio.service
設定を反映させます:
sudo systemctl daemon-reload
sudo systemctl enable lmstudio.service
sudo systemctl start lmstudio.service
sudo systemctl enable ... しないと Systemd にこの設定が反映されないので注意。
必要なら再起動して curl http://localhost:1234/v1/models が通るか確認しましょう。
LM Studio の UI 使わないのだったら llama.cpp 直接使えばよくない?
次のコードで起動:
#!/bin/bash
model=~/.lmstudio/models/lmstudio-community/Qwen3.5-9B-GGUF/Qwen3.5-9B-Q4_K_M.gguf
$HOME/.local/llama.cpp/llama-server -m $model \
-ngl 99 \
--jinja \
--ctx-size 65536 \
--host 127.0.0.1 \
--port 1234
Claude Code の設定変更しないで使うために LM Studio と同じ 1234 ポートにしています。
llama.cpp のセットアップはこちら: Gemma 4 を macOS で使う llama cpp で