1. 概要
先日、こちらのリンク先の手順で Coding Agent の Qwen-Code をローカル環境で実行しました。利用可能な VRAM (ビデオメモリ) が 4GiB (4096MiB) 以下の NVIDIA GeForce GTX 1650 を搭載した PC で動作確認しました。LLM (qwen3:1.7b) を Ollama を使って動作させ、Qwen-Code と Ollama が HTTP で通信する構成で動作確認しました。Qwen-Code と Ollama の間の HTTP の通信内容も確認しました。
今回は Coding Agent として Qwen-Code ではなく OpenAI Codex CLI を使用し、同様の動作確認をしました。Qwen3 1.7B より大きな LLM を試したかったので Google Cloud 上の GPU VM で実行しました。
今回試した内容は Google Cloud の使用開始の無料クレジット 300 ドル (90日間以内) の範囲内で試すことができました。ここに記載した動作確認以外の操作も試しましたが、今のところかかった費用は 1,329円 (約 8.52 ドル) です。GPU VM は無料トライアルの状態では使用できなかったため、有料版に切り替えました。有料版に切り替えても 300 ドル (90日間以内) の無料クレジットは使用し続けられるようでした。
2. システム構成
下記のようなシステム構成で動作確認しました。
- Google Cloud
- CPU VM
- Codex CLI をインストールして実行
- LLM へのリクエストを GPU VM へ送信
- GPU VM
- Ollama をインストールして実行
- Gemma4 26B (gemma4:26b) を LLM として配置
- GPU を利用して LLM を実行
- ネットワーク
- CPU VM → GPU VM の内部通信
- 外部 IP(External IP)は使用しない構成
- CPU VM
- ローカル PC
- SSH / IAP を利用して CPU VM へ接続
- CPU VM 上で Codex CLI を操作
図にすると下のようになります。
┌─────────────────────────────────────────────────────────┐
│ Google Cloud │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ CPU VM │ │ GPU VM │ │
│ │ │ │ │ │
│ │ Codex CLI │──────▶│ Ollama │ │
│ │ │ LLM │ │ │
│ └──────────────────┘ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ gemma4:26b │ │
│ └─────────────┘ │
│ │
│ No External IP │
└─────────────────────────────────────────────────────────┘
▲
│
SSH / IAP
│
┌─────────────┐
│Local Machine│
└─────────────┘
処理の流れは下記のようになります。
Local Machine
│
SSH / IAP
│
▼
CPU VM
│
Codex CLI
│
│ LLM Request
▼
GPU VM
│
Ollama
│
▼
gemma4:26b
3. ローカル PC への gcloud のインストールと設定
3.1. ローカル PC への gcloud のインストール
まず、Google Cloud の使用を開始します。後で変更しても大丈夫ですが、GPU VM を使用するため有料版にします。
WSL2 上の Ubuntu のシェルから操作したかったのでローカル PC の Ubuntu に gcloud コマンドをインストールしました。
Ubuntu のシェルで下記のコマンドを順に入力し、gcloud コマンドを使用できるようにしました。
$ sudo apt update $ sudo apt upgrade $ sudo apt install -y ca-certificates gnupg curl $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg $ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list $ sudo apt update $ sudo apt install -y google-cloud-cli
下記のコマンド gcloud –version を実行しました。私の環境では下記のようになりました。
fukagai@LAPTOP-EU3HB722:~$ gcloud --version Google Cloud SDK 583.0.0 alpha 2026.08.31 beta 2026.08.31 bq 2.1.38 bundled-python3-unix 3.14.7 core 2026.08.31 gcloud-crc32c 1.0.0 gsutil 5.37 preview 2026.08.31
3.2. gcloud の初期設定
下記の例では、予め Google Cloud の Web 管理画面 Google Cloud Console で Google Cloud のプロジェクト codex-cli-project を作成してから gcloud init コマンドを実行しました。gcloud init コマンドからも新しいプロジェクトを作成できそうです。
下記のコマンドを実行します。
$ gcloud init
下記のように表示されるので Y を入力し、Enter を押します。
You must sign in to continue. Would you like to sign in (selecting "Y" will open your browser to the sign-in page where you complete authentication) (Y/n)?
下記の例のような長い URL が表示されます。こちらをコピーして Web ブラウザのアドレス欄に貼り付けます。
https://accounts.google.com/o/oauth2/auth?response_type=code&...&code_challenge_method=...
Web ブラウザでユーザー認証がされます。
gcloud init を実行したシェルに下記の例のようなメッセージが表示されます。ここでプロジェクトを選択します。今回は予め Web 管理画面で作成しておいたプロジェクト codex-cli-project を選択するようにしたため、1 を入力して Enter を押しました。
Pick cloud project to use: [1] codex-cli-project ... [5] Enter a project ID [6] Create a new project Please enter numeric choice or text value (must exactly match list item):
3.3. gcloud の設定確認
コマンド gcloud config list を入力すると設定情報を確認できます。
fukagai@LAPTOP-EU3HB722:~$ gcloud config list [core] account = XXXXXXXXX@gmail.com disable_usage_reporting = True project = codex-cli-project Your active configuration is: [default]
4. Compute Engine API を有効化
Compute Engine API を有効化します。Compute Engine API は、Google Cloud の Compute Engine(仮想マシン)をプログラムやコマンドから操作するための API です。
下記のコマンドで Compute Engine API を有効化します。
$ gcloud services enable compute.googleapis.com
Compute Engine API が有効化されていれば、下記のように表示されます。
fukagai@LAPTOP-EU3HB722:~$ gcloud services list --enabled | grep compute compute.googleapis.com Compute Engine API
5. CPU VM を作成 (Codex CLI 実行用)
下記の設定で Codex CLI 実行用の VM を作成しました。
| プロジェクト | codex-cli-project |
|---|---|
| VM名 | codex-cli-vm |
| リージョン | asia-northeast1 |
| ゾーン | asia-northeast1-a |
| マシンタイプ | e2-standard-2 |
| OS | Ubuntu 24.04 LTS |
| GPU | なし |
下記のコマンドを実行し、上記の表の設定の VM を作成しました。Codex CLI 実行用の VM になります。
$ gcloud compute instances create codex-cli-vm \ --zone=asia-northeast1-a \ --machine-type=e2-standard-2 \ --image-family=ubuntu-2404-lts-amd64 \ --image-project=ubuntu-os-cloud
上記のコマンドの実行に成功すると、下記のように表示されます。
Created [https://www.googleapis.com/compute/v1/projects/codex-cli-project/zones/asia-northeast1-a/instances/codex-cli-vm]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS codex-cli-vm asia-northeast1-a e2-standard-2 10.146.0.2 34.180.115.1 RUNNING
下記のコマンドを実行し、作成した VM に ssh で接続します。
$ gcloud compute ssh codex-cli-vm --zone=asia-northeast1-a
下記の出力は、ssh 接続後、lsb_release -a コマンドを実行した例になります。
fukagai@codex-cli-vm:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.4 LTS Release: 24.04 Codename: noble
下記のコマンドを実行し、VM からインターネットに接続できることを確認しました。
fukagai@codex-cli-vm:~$ curl -I https://www.google.com HTTP/2 200 content-type: text/html; charset=ISO-8859-1 ...
6. 外部 IP を削除
今回は、codex-cli-vm の外部 IP を削除したうえで IAP 経由で ssh 接続します。IAP(Identity-Aware Proxy)は、Google Cloud の VM などへ安全にアクセスするための仕組みです。IAP を利用すると、VM に外部 IP を設定しなくても認証されたユーザーが ssh などで VM へ接続できます。
補足
外部 IP を削除することで、VM をインターネットから直接アクセスできない構成にします。外部からの ssh 接続などを直接受け付ける必要がなくなるため、VM の公開範囲を狭め、セキュリティを高めることができます。ただし、外部 IP を削除すると VM からインターネットへアクセスすることもできなくなるため、外向きの通信には後ほど Cloud NAT を利用します。
まず、VM からログアウトします。
$ exit
ログアウト後、ローカルの Linux から下記のコマンドを実行し、現在の外部 IP を確認します。下記の例では 34.180.115.1 となっています。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute instances describe codex-cli-vm \ --zone=asia-northeast1-a \ --format="get(networkInterfaces[0].accessConfigs[0].natIP)" 34.180.115.1
外部 IP を削除する前に VM を停止します。
$ gcloud compute instances stop codex-cli-vm \ --zone=asia-northeast1-a
下記のコマンドを実行し、外部 IP のアクセス構成名を参照します。下記の例では external-nat です。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute instances describe codex-cli-vm \ --zone=asia-northeast1-a \ --format="get(networkInterfaces[0].accessConfigs[0].name)" external-nat
アクセス構成名 external-nat を指定し、下記のコマンドで外部 IP を削除します。
$ gcloud compute instances delete-access-config codex-cli-vm \ --zone=asia-northeast1-a \ --access-config-name="external-nat"
もう一度 VM を起動します。
$ gcloud compute instances start codex-cli-vm \ --zone=asia-northeast1-a
下記のコマンドを実行し、外部 IP (EXTERNAL_IP) が空になったことを確認します。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS codex-cli-vm asia-northeast1-a e2-standard-2 10.146.0.2 RUNNING
下記のコマンドを実行し、IAP 経由で ssh 接続します。
$ gcloud compute ssh codex-cli-vm \ --zone=asia-northeast1-a \ --tunnel-through-iap
VM に入って下記のコマンドを実行すると、今度は下記のようになります。VM からインターネットへアクセスできなくなっています。
fukagai@codex-cli-vm:~$ curl -I https://www.google.com curl: (28) Failed to connect to www.google.com port 443 after 300411 ms: Timeout was reached
7. Cloud NAT を作成
外部 IP 削除後、VM からインターネットに接続できるようにするため、Cloud NAT を作成します。
VM からログアウトし、ローカルの Linux で下記のコマンドを順に実行します。
まず、下記のコマンドを実行し、Cloud Router を作成します。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute routers create codex-cli-router \ --network=default \ --region=asia-northeast1 Creating router [codex-cli-router]...done. NAME REGION NETWORK codex-cli-router asia-northeast1 default
Cloud Router が作成されたことを確認します。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute routers list \ --regions=asia-northeast1 NAME REGION NETWORK codex-cli-router asia-northeast1 default
次に下記のコマンドを実行し、Cloud NAT を作成します。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute routers nats create codex-cli-nat \ --router=codex-cli-router \ --region=asia-northeast1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges Creating NAT [codex-cli-nat] in router [codex-cli-router]...done.
Cloud Nat が作成されたことを確認します。
fukagai@LAPTOP-EU3HB722:~$ gcloud compute routers nats list \ --router=codex-cli-router \ --region=asia-northeast1 NAME NAT_IP_ALLOCATE_OPTION SOURCE_SUBNETWORK_IP_RANGES_TO_NAT ENDPOINT_TYPES codex-cli-nat AUTO_ONLY ALL_SUBNETWORKS_ALL_IP_RANGES ENDPOINT_TYPE_VM
もう一度、下記のコマンドで VM にログインし、
fukagai@LAPTOP-EU3HB722:~$ gcloud compute ssh codex-cli-vm \ --zone=asia-northeast1-a \ --tunnel-through-iap
下記のコマンドを実行します。今度は VM からインターネットに接続できています。
fukagai@codex-cli-vm:~$ curl -I https://www.google.com HTTP/2 200 content-type: text/html; charset=ISO-8859-1 ...
下記の図は、今回作成した Cloud Router と Cloud NAT の関係を表した構成図になります。Cloud Router と Cloud NAT を用意することで外部 IP を持たない VM からインターネットにアクセスできるようにしています。
codex-cli-project
│
├─ default VPC
│ │
│ └─ codex-cli-vm
│ └─ 外部IPなし
│
└─ asia-northeast1
│
└─ codex-cli-router
│
└─ codex-cli-nat
8. CPU VM に Codex CLI をインストール
下記のコマンドを実行し、CPU VM に Codex CLI をインストールします。
$ curl -fsSL https://chatgpt.com/codex/install.sh | sh
次に下記のコマンドを順に実行し、インストールした Codex CLI のバージョンを確認しました。
fukagai@codex-cli-vm:~$ source /home/fukagai/.bashrc fukagai@codex-cli-vm:~$ codex --version codex-cli 0.153.2
下記のコマンド codex を入力し、Codex CLI を起動します。
$ codex
下の画像のようなテキストが表示されます。「2. Sign in with Device Code」を上下キーで選択し、Enter キーを押します。

下記のようなテキストが表示されます。ブラウザのアドレスに「https://auth.openai.com/codex/device」を貼り付け、Google アカウント等を選択します。その後、下記の例の「XXXXX-XXXXX」に表示される文字列をブラウザに貼り付けると認証されます。
Welcome to Codex, OpenAI's command-line coding agent Finish signing in via your browser 1. Open this link in your browser and sign in https://auth.openai.com/codex/device 2. Enter this one-time code after you are signed in (expires in 15 minutes) XXXXX-XXXXX Continue only if you started this login in Codex. If a website or another person gave you this code, cancel. Press esc to cancel
ブラウザでの認証が済むと、下の画像のような表示になります。プロンプトに文字列を入力し、Codex CLI の利用を開始することができます。下の画像の例では LLM として OpenAI の GPT 5.6 Terra が選択されています。ここでプロンプトに文字を入力して Codex CLI を利用する場合は、インターネット上の OpenAI の GPT 5.6 Terra が LLM として利用されます。

Ctrl キーと C キーを同時に押して Codex CLI を終了させます。
以降の手順では、Google Cloud 上の GPU VM に LLM を用意し、Codex CLI から GPU VM 上の LLM を利用できるようにします。
9. GPU VM を作成 (LLM 実行用)
下記のコマンドを実行し、GPU を使用できる VM をプロジェクト codex-cli-project に一つ作成する準備をします。下記のコマンドの example@gmail.com には使用している Google アカウントのメールアドレスをセットします。
$ gcloud quotas preferences create \ --service=compute.googleapis.com \ --project=codex-cli-project \ --quota-id=GPUS-ALL-REGIONS-per-project \ --preferred-value=1 \ --email="example@gmail.com" \ --justification="Need 1 GPU for an NVIDIA L4 Standard VM used for an Ollama/Codex CLI experiment."
下記の設定内容で GPU VM を作成します。ゾーン asia-northeast1-a と asia-northeast1-b には GPU L4 の空きがなく作成できなかったため、ゾーン asia-northeast1-c に作成しました。
| VM名 | gpu-ollama-vm |
| マシンタイプ | g2-standard-4 |
| GPU | NVIDIA L4 × 1 |
| GPUメモリ | 24 GB |
| OS | Ubuntu 24.04 LTS |
| ブートディスク | 50 GB pd-balanced |
| リージョン | asia-northeast1 |
| ゾーン | asia-northeast1-c |
| VPC | default |
| Provisioning | Standard |
| 外部IP | 作成後に削除 |
下記のコマンドで上記の表の設定の GPU VM を作成しました。
$ gcloud compute instances create gpu-ollama-vm \ --zone=asia-northeast1-c \ --machine-type=g2-standard-4 \ --accelerator=type=nvidia-l4,count=1 \ --maintenance-policy=TERMINATE \ --provisioning-model=STANDARD \ --image-project=ubuntu-os-cloud \ --image-family=ubuntu-2404-lts-amd64 \ --boot-disk-size=50GB \ --boot-disk-type=pd-balanced \ --network=default
下記のコマンドを実行し、GPU VM の外部 IP を削除しました。
$ gcloud compute instances delete-access-config gpu-ollama-vm \ --zone=asia-northeast1-c \ --access-config-name="external-nat"
下記のコマンドの実行結果が、
$ gcloud compute instances list
下記のようになったのを確認しました。
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS codex-cli-vm asia-northeast1-a e2-standard-2 10.146.0.2 TERMINATED gpu-ollama-vm asia-northeast1-c g2-standard-4 10.146.0.3 RUNNING
GPU VM も、先ほどプロジェクト codex-cli-project 用に作成した Cloud NAT を使用してインターネットにアクセスすることができます。
自宅 PC
│
│ IAP
▼
┌──────────────────────────┐
│ VPC: default │
│ │
│ codex-cli-vm │
│ 10.146.0.2 │
│ │
│ gpu-ollama-vm │
│ 10.146.0.3 │
│ NVIDIA L4 │
└────────────┬─────────────┘
│
│ Cloud NAT
▼
Internet
10. GPU VM に Ollama 環境を構築
下記のコマンドで GPU VM に ssh でログインします。
$ gcloud compute ssh gpu-ollama-vm \ --zone=asia-northeast1-c \ --tunnel-through-iap
次に、NVIDIA ドライバをインストールして、nvidia-smi を実行できるようにします。
下記のコマンドで ubuntu-drivers-common をインストールします。
$ sudo apt update $ sudo apt install -y ubuntu-drivers-common
下記のコマンドで推奨ドライバ (recommended) を確認します。
$ ubuntu-drivers devices ... model : AD104GL [L4] ... driver : nvidia-driver-595-open - distro non-free recommended ...
下記のコマンドで推奨ドライバ nvidia-driver-595-open をインストールします。
$ sudo apt install -y nvidia-driver-595-open
上記のコマンドが完了したら下記のコマンドでリブートします。
$ sudo reboot
IAP 接続は一度切断されるため、下記のコマンドで PC から再度 GPU VM に接続します。
$ gcloud compute ssh gpu-ollama-vm \ --zone=asia-northeast1-c \ --tunnel-through-iap
nvidia-smi コマンドを実行できるようになります。
fukagai@gpu-ollama-vm:~$ nvidia-smi Fri Sep 4 02:24:47 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 595.84 Driver Version: 595.84 CUDA Version: 13.2 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA L4 Off | 00000000:00:03.0 Off | 0 | | N/A 51C P8 14W / 72W | 0MiB / 23034MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
下記のコマンドを実行し、Ollama をインストールします。
$ curl -fsSL https://ollama.com/install.sh | sh
下記のバージョンの Ollama がインストールされました。
$ ollama --version ollama version is 0.33.2
下記のコマンドを実行し、Ollama で Gemma4 26B を利用できるようにしました。
$ ollama pull gemma4:26b
下記のコマンドを実行し、Ollama サービスの設定を変更しました。
$ sudo systemctl edit ollama
上記のコマンド実行後、起動されるエディタで下記のような環境変数をセットしました。Ollama 上で動作する LLM の Context Length を 65,536 に変更し、127.0.0.1 以外からの Ollama のポート 11434 へのアクセスを可能にする変更になります。
[Service] Environment="OLLAMA_CONTEXT_LENGTH=65536" Environment="OLLAMA_HOST=0.0.0.0:11434"
設定ファイル更新後、下記のコマンドを実行して Ollama サービスに変更を反映させました。
$ sudo systemctl daemon-reload $ sudo systemctl restart ollama
Codex CLI が動作する CPU VM (codex-cli-vm) から Ollama が動作する GPU VM (gpu-ollama-vm) に下記のようなネットワーク構成でアクセスします。CPU VM から GPU VM への通信だけを許可するように Google Cloud のファイアウォールで制限をかけたほうが良いのですが、今回は簡単な動作確認のため、この制限の設定は省きます。
codex-cli-vm
10.146.0.2
│
│ TCP 11434
▼
gpu-ollama-vm
10.146.0.3
11. GPU VM での Codex CLI の利用 (設定ファイルの取得)
Codex CLI で LLM として Gemma4 26B を使用するための設定ファイルを出力するため、GPU VM 上にも Codex CLI をインストールしました。
下記のコマンドを実行し、GPU VM に Codex CLI をインストールしました。
$ curl -fsSL https://chatgpt.com/codex/install.sh | sh
次に下記のコマンドを順に実行し、インストールした Codex CLI のバージョンを確認しました。
$ source /home/fukagai/.bashrc $ codex --version codex-cli 0.153.2
下記のコマンドで Ollama から Codex CLI を起動しました。下記のように gemma4:26b を選択しました。
fukagai@gpu-ollama-vm:~$ ollama launch codex --config
Select model for Codex: Type to filter...
Recommended
glm-5.3-flash:cloud (Sign in required)
Fast reasoning for coding and agentic workloads with 1M context and native image understanding
glm-5.3:cloud
Long-horizon coding and agentic engineering with deep reasoning and a 1M context
deepseek-v4-flash:cloud
Fast coding and agentic tool use with 1M context
gemma4:31b-cloud
Agentic workflows and multimodal reasoning
▸ gemma4:26b
Agentic workflows and multimodal reasoning
More
gemma4:12b
qwen3:14b
qwen3:8b
↑/↓ navigate • enter select • ← back
上記の設定画面の More のところに表示されているのは別途 ollama pull でこの GPU VM にダウンロードしていた他のモデルです。これらのモデルを選択して Codex CLI を起動することも可能です。
次の画面で Codex CLI を起動するかの確認があり、Yes を選択すると選択した LLM を使用する設定で Codex CLI が起動されます。ここまで実行すると下記のような設定ファイルが生成されます。
fukagai@gpu-ollama-vm:~$ cat ~/.codex/ollama-launch.config.toml model = "gemma4:26b" model_provider = "ollama-launch" model_catalog_json = "/home/fukagai/.codex/model.json" [model_providers.ollama-launch] name = "Ollama" base_url = "http://127.0.0.1:11434/v1/" wire_api = "responses" [projects."/home/fukagai"] trust_level = "trusted"
下記のファイルの “context_window”: 65536 は、動作確認用に Ollama の Context Length の値に合わせて私が更新した値になります。最初は Gemma4 26B が利用可能な Context Length の最大値 262144 がセットされていました。Codex CLI 側がモデルの利用可能な Context Length として想定する値になります。
fukagai@gpu-ollama-vm:~$ cat ~/.codex/model.json
{
"models": [
{
"base_instructions": "",
"context_window": 65536,
"default_verbosity": "low",
"display_name": "gemma4:26b",
"experimental_supported_tools": [],
"input_modalities": [
"text",
"image"
],
"priority": 0,
"shell_type": "default",
"slug": "gemma4:26b",
"support_verbosity": true,
"supported_in_api": true,
"supported_reasoning_levels": [],
"supports_parallel_tool_calls": false,
"supports_reasoning_summaries": false,
"truncation_policy": {
"limit": 10000,
"mode": "bytes"
},
"visibility": "list"
}
]
}
上記のファイルを修正した後、設定内容が上書きされないように下記のコマンドで Codex CLI を起動して動作確認しました。GPU VM 上の Gemma4 26B を使用して Codex CLI を動作させられることを確認しました。
$ codex --profile ollama-launch
補足
Ollama の Context Length を 262144 にして動作させたところ、下記のコマンドの出力のように Gemma4 26B が L4 GPU だけに収まり切らなかったため、今回は 65536 で動作させました。
fukagai@gpu-ollama-vm:~/workspace$ ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL gemma4:26b 08ae7ec1744b 1.8 GB 31%/69% CPU/GPU 262144 2 minutes from now
Context Length が 65536 なら、下記のように 100% GPU メモリで動かせることを確認しています。Context Length をもう少し増やすこともできそうでしたが、この設定で動作確認しました。
fukagai@gpu-ollama-vm:~$ ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL gemma4:26b 08ae7ec1744b 1.0 GB 100% GPU 65536 4 minutes from now fukagai@gpu-ollama-vm:~$ nvidia-smi Fri Sep 4 06:01:35 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 595.84 Driver Version: 595.84 CUDA Version: 13.2 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA L4 Off | 00000000:00:03.0 Off | 0 | | N/A 53C P0 28W / 72W | 19972MiB / 23034MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 1676 C ...local/lib/ollama/llama-server 19964MiB | +-----------------------------------------------------------------------------------------+
12. CPU VM の Codex CLI から GPU VM の LLM を利用
GPU VM に出力された Ollama 上の Gemma4 26B 用の Codex CLI の設定ファイルを参考に、CPU VM に下記の二つの設定ファイルを用意しました。
fukagai@codex-cli-vm:~$ cat ~/.codex/ollama-gemma4_26b.config.toml model = "gemma4:26b" model_provider = "ollama-remote" model_catalog_json = "/home/fukagai/.codex/model_gemma4_26b.json" [model_providers.ollama-remote] name = "Ollama Remote" base_url = "http://10.146.0.3:11434/v1" wire_api = "responses" [projects."/home/fukagai/workspace"] trust_level = "trusted"
fukagai@codex-cli-vm:~$ cat ~/.codex/model_gemma4_26b.json
{
"models": [
{
"base_instructions": "",
"context_window": 65536,
"default_verbosity": "low",
"display_name": "gemma4:26b",
"experimental_supported_tools": [],
"input_modalities": [
"text",
"image"
],
"priority": 0,
"shell_type": "default",
"slug": "gemma4:26b",
"support_verbosity": true,
"supported_in_api": true,
"supported_reasoning_levels": [],
"supports_parallel_tool_calls": false,
"supports_reasoning_summaries": false,
"truncation_policy": {
"limit": 10000,
"mode": "bytes"
},
"visibility": "list"
}
]
}
上記の設定ファイルを参照して Codex CLI を起動するコマンド codex –profile ollama-gemma4_26b を ~/workspace で実行して動作確認しました。
fukagai@codex-cli-vm:~/workspace$ codex --profile ollama-gemma4_26b ⚠ Codex's Linux sandbox uses bubblewrap and needs access to create user namespaces. ╭─────────────────────────────────────────────────╮ │ >_ OpenAI Codex (v0.153.2) │ │ │ │ model: gemma4:26b medium /model to change │ │ directory: ~/workspace │ ╰─────────────────────────────────────────────────╯ Tip: New Build faster with Codex. › Ask Codex to do anything gemma4:26b medium · ~/workspace
下記のようなプロンプトを入力して動作確認しました。
fukagai@codex-cli-vm:~/workspace$ codex --profile ollama-gemma4_26b ⚠ Codex's Linux sandbox uses bubblewrap and needs access to create user namespaces. ╭─────────────────────────────────────────────────╮ │ >_ OpenAI Codex (v0.153.2) │ │ │ │ model: gemma4:26b medium /model to change │ │ directory: ~/workspace │ ╰─────────────────────────────────────────────────╯ Tip: New Build faster with Codex. › 現在のディレクトリに system_info.py を作成してください。PythonでOS名、Pythonのバージョン、現在の作業ディレクトリを取得して表示するスクリプトにしてください。作成後、実行して結果を確認してください。 ◦ Working (11s • esc to interrupt) › Ask Codex to do anything gemma4:26b medium · ~/workspace
途中、下記のようにファイルを作成したりスクリプトを実行したりして良いかを確認するメッセージが何度か表示されました。全て Yes を選択して処理を進めました。
Would you like to run the following command?
Environment: local
Reason: The system is returning a 'bwrap' sandbox error when trying to execute basic commands. I need escalated privileges to write files and execute the script.
$ python3 -c '
import platform
import sys
import os
content = """import platform
import sys
import os
def main():
print(f"OS Name: {platform.system()} {platform.release()}")
print(f"Python Version: {sys.version}")
print(f"Current Working Directory: {os.getcwd()}")
if __name__ == "__main__":
main()
"""
[… 28 lines] ctrl + a view all
› 1. Yes, proceed (y)
2. No, and tell Codex what to do differently (esc)
Press enter to confirm or esc to cancel
• Running python3 system_info.py Would you like to run the following command? Environment: local Reason: Executing the created system_info.py script. $ python3 system_info.py › 1. Yes, proceed (y) 2. Yes, and don't ask again for commands that start with `python3 system_info.py` (p) 3. No, and tell Codex what to do differently (esc) Press enter to confirm or esc to cancel
下記のように意図した通りの動作をしました。
• system_info.py を作成し、実行しました。
### 作成したスクリプト (system_info.py)
import platform
import sys
import os
def main():
print(f"OS Name: {platform.system()} {platform.release()}")
print(f"Python Version: {sys.version}")
print(f"Current Working Directory: {os.getcwd()}")
if __name__ == "__main__":
main()
### 実行結果
OS Name: Linux 6.17.0-1022-gcp
Python Version: 3.12.3 (main, Jul 15 2026, 23:46:41) [GCC 13.3.0]
Current Working Directory: /home/fukagai/workspace
─ Worked for 3m 05s ────────────────────────────────────────────────────────────────────────────────────────────────────────
Codex CLI とは別のシェルで system_info.py が作成されていることも確認しました。
fukagai@codex-cli-vm:~/workspace$ cat system_info.py
import platform
import sys
import os
def main():
print(f"OS Name: {platform.system()} {platform.release()}")
print(f"Python Version: {sys.version}")
print(f"Current Working Directory: {os.getcwd()}")
if __name__ == "__main__":
main()
補足
Codex CLI を起動した際、一行目に下記のような警告が表示されたため、bubblewrap をインストールしました。
⚠ Codex could not find bubblewrap on PATH. Install bubblewrap with your OS package manager. See the sandbox prerequisites: https://developers.openai.com/codex/concepts/sandboxing#prerequisites. Codex will use the bundled bubblewrap in the meantime.
下記のコマンドで bubblewrap をインストールしました。
$ sudo apt update $ sudo apt install -y bubblewrap $ bwrap --version bubblewrap 0.9.0
bubblewrap インストール後は下記のような警告に変わりました。
⚠ Codex's Linux sandbox uses bubblewrap and needs access to create user namespaces.
補足2
費用節約のため VM の動作を止めるときは下記の例のコマンドを実行します。
$ gcloud compute instances stop gpu-ollama-vm --zone=asia-northeast1-c
動作中の VM がないかは下記のコマンドで確認できます。下記の例のように Listed 0 items. と出力されたら動作中の VM はありません。
$ gcloud compute instances list --filter="status=RUNNING" Listed 0 items.
停止させた VM を起動するときは下記の例のコマンドを実行します。
$ gcloud compute instances start gpu-ollama-vm --zone=asia-northeast1-c