はじめに
OpenCodeを使ってコード生成や既存ソースの解析を行う際、LLMを実行するPCと開発環境を分けたいと思い、以下の構成を試してみました。
LLMを実行するPCにはRTX 5090を搭載し、OllamaでQwen 27Bを動かします。
開発用PCではOpenCodeを使用し、ネットワーク経由でLLMを利用します。
環境
卓1
- CPU: Intel Core Ultra 7 270K Plus
- GPU: NVIDIA GeForce RTX 5090
- VRAM: 32GB
- メモリ: 64GB DDR5
- OS: Windows 11
- Ollama
- Qwen 27B
卓2
- Windows 11
- OpenCode
卓1:Ollamaをネットワークから利用できるようにする
卓2から卓1のOllamaへ接続するため、Ollamaをネットワークからアクセスできるようにします。
卓1でコマンドプロンプトを起動し、以下を実行します。
set OLLAMA_HOST=0.0.0.0:11434
ollama serve
OllamaはTCPポート 11434 で待ち受けます。
Windows Defender Firewallを使用している場合は、LAN内からTCP 11434 へ接続できるようにファイアウォールの設定も行います。
卓2から以下を実行して接続確認します。
curl http://卓1のIPアドレス:11434/api/tags
モデル情報が返ってくれば接続できています。
Qwen 27Bを64K Contextにする
Ollamaでは Modelfile を使用してモデルのパラメータを変更できます。
ファイル名を Modelfile として保存します。
FROM qwen3.8:27b
PARAMETER num_ctx 65536
num_ctx 65536 により、Context Lengthを65,536トークン(64K)に設定します。
以下のコマンドでモデルを作成します。
ollama create qwen3.8:27b-64k -f Modelfile
作成後、以下で確認します。
ollama list
作成したモデルを起動します。
ollama run qwen3.8:27b-64k
別のPowerShellから、
ollama ps
を実行します。
実際の環境では以下のようになりました。
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3.8:27b-64k 67a1c5bfe600 17 GB 100% GPU 65536 ...
PROCESSOR が 100% GPU、CONTEXT が 65536 となっており、RTX 5090上で64K Contextとして動作していることを確認できました。
RTX 5090のVRAM使用量
Qwen 27B / 64K Contextをロードした状態で nvidia-smi を確認しました。
Memory-Usage
22910MiB / 32607MiB
約22.9GBのVRAMを使用しています。
モデルサイズは17GBですが、実際のVRAM使用量はContextに必要な領域なども含まれるため、17GBより大きくなっています。
卓2:OpenCodeから卓1のOllamaを利用する
卓2のOpenCodeから卓1のOllamaを利用します。
opencode.jsonc に以下のように設定します。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ttt": {
"name": "LocalServer",
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://卓1のIPアドレス:11434/v1"
},
"models": {
"qwen3.8:27b-64k": {
"name": "qwen3.8:27b-64k",
"capabilities": {
"tools": true,
"input": ["text", "image"],
"output": ["text"]
},
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"limit": {
"context": 65536,
"output": 8192
}
}
}
}
}
}
baseURL に卓1のOllamaを指定します。
http://卓1のIPアドレス:11434/v1
OllamaのOpenAI互換APIを利用することで、卓2のOpenCodeから卓1のOllamaへ接続します。
OpenCode側にも64Kを設定する
ここは今回の構成で重要だったポイントです。
Ollama側で64K Contextに設定しただけではなく、OpenCode側にもContext Lengthを設定します。
"limit": {
"context": 65536,
"output": 8192
}
OpenCode側でContextを正しく設定していない場合、セッションのコンテキストが早い段階で上限に達してしまいました。
OpenCode側にも 65536 を設定することで、64Kを前提としてセッションを管理できるようになりました。
実際にOpenCodeで使ってみる
実際の開発作業で使用してみました。
主に以下のような作業を行いました。
- 説明HTMLの作成
- ソースコードからテスト項目HTMLを作成
- C#で使用しているライブラリのライセンス一覧HTMLを作成
- クラスの作成
- 既存コードの修正
- 既存コードの解析・説明
単純なコード生成だけではなく、既存のソースコードを読み込ませ、その内容を踏まえてHTMLやC#コードを作成する用途にも使用しました。
まとめ
RTX 5090を搭載したPCをLLMサーバーとして使用し、別PCのOpenCodeからネットワーク経由でOllamaを利用する環境を構築しました。
Qwen 27Bは64K Contextに設定し、実際に ollama ps で CONTEXT 65536、PROCESSOR 100% GPU を確認できました。
また、RTX 5090のVRAM使用量は約22.9GBでした。
OpenCode側にもContextを65536と設定することで、長時間のコーディングセッションでも64Kを活用できます。
実際の開発では、HTMLの生成、テスト項目の作成、ライセンス一覧の作成、C#クラスの作成や既存コードの修正・解析などに利用できました。
LLMを実行するPCと開発環境を分離することで、開発用PCのGPUに依存せず、RTX 5090を搭載した別PCのローカルLLMをOpenCodeから利用できるようになりました。
私の内容からチャッピーが記事を書き、画像を生成しました。
