ローカルAI専用機とセットアップ時の接続フローを表すテックビジュアル

Article

ローカルAI専用機としてASUS Ascent GX10を導入した

2026年5月19日
8 min read
ローカルAI
#ASUS Ascent GX10#ローカルAI#Codex App#NVIDIA#Tailscale

ASUS Ascent GX10を導入した。NVIDIA DGX Spark互換の、小型AIワークステーションとして使えるマシンだ。

買った理由はかなりはっきりしている。これまでMac StudioでローカルLLMを動かしていたが、Mac Studioは普段の開発や写真・動画まわりの作業にも使っている。そこにLLMを常時載せておくと、便利ではあるが、だんだんメインマシンの余白を食っていく。

ローカルLLMを「作業用Macの片隅で動くもの」から、「専用機で常時動いているもの」に移したかった。

もう一つ大きかったのは、CUDA/NVIDIA環境をちゃんと触りたかったことだ。OpenClawのような自分用AIシステムのバックエンドにしたいし、Gemma以外のモデルも試したい。将来的には、RAW現像や動画編集の補助など、自分の制作ワークフローに寄せた小さな機械学習も試してみたい。

本当はM5世代のMac Studioを待つつもりだった。ただ、待ちきれなかった。メモリ価格も上がっているし、ローカル実験用の大容量メモリ機を早めに確保しておく判断をした。

Codex Appと一緒にセットアップした

今回のセットアップで特徴的だったのは、ほぼ最初からCodex Appと一緒に進めたことだ。

箱から出して、電源とLANをつなぎ、初期セットアップ用のWi-Fiに接続する。規約同意とユーザー作成までは、普通の家電に近い。その直後に本体アップデートが始まり、初期セットアップ用のSSIDが消えた。

最初は少し焦ったが、更新中にホットスポットが止まるのは自然な挙動だった。ここから先は、LAN上でホストを探し、SSHで入り、Dashboardの状態を確認し、足りない更新を片付けていく作業になる。

このあたりをCodex Appに任せられたのがかなり大きかった。単に「このコマンドを打つとよい」と提案するだけではなく、実際に状態を見て、失敗したら原因を切り分け、次の確認コマンドを走らせ、修復まで進めてくれる。

今回で言えば、Codex Appは次のような作業を一緒に進めた。

  • LAN上でGX10を見つける
  • SSH鍵を作ってログイン経路を整える
  • DGX Dashboardがどこで待ち受けているか確認する
  • NVIDIAドライバやDGX関連パッケージの更新状態を見る
  • dpkgaptfwupdを順番に片付ける
  • DockerからGPUが見えるところまで確認する

自分は「こうしたい」と方向を出し、Codex Appが状態確認と具体的な実行を担当する。ローカルAI専用機のセットアップを、別のAIエージェントに手伝わせている感じがあり、これは今回の記事でも外せないポイントだと思う。

DashboardはLAN直ではなくSSH forwardingで開いた

最初に少し詰まったのはDGX Dashboardへのアクセスだった。

LAN上で本体は見えている。SSHも通る。ところが、ブラウザでそのまま http://<hostname>.local を開いてもDashboardは出てこない。

実際には、DGX DashboardとJupyterLabはGX10上のローカルループバック側に閉じていた。Mac側から見るにはSSHポートフォワードを使うのが素直だった。

ssh -L 11000:localhost:11000 -L 11002:localhost:11002 <hostname>

この状態でMac側から次を開く。

http://localhost:11000

これでDGX Dashboardが開いた。

構成を単純化すると、初期セットアップ時の見え方はこうだった。

flowchart LR
  mac["Mac / Codex App"] -->|SSH key| gx10["ASUS Ascent GX10"]
  mac -->|SSH port forward| dashboard["DGX Dashboard localhost:11000"]
  gx10 --> dashboard
  gx10 --> updates["apt / dpkg / fwupd"]
  gx10 --> gpu["NVIDIA GB10 / Docker GPU check"]
  gx10 --> tailnet["Tailnet route for later LLM API tests"]

この図で大事なのは、Dashboardが最初からLANに開いている前提で進めないことだ。手元ではSSH forwardingを使うのが確実だった。

SSH鍵とsudoを整える

セットアップ作業はMacからCodex App経由で進めたかったので、Codex用のSSH鍵を作り、GX10側の authorized_keys に追加した。Mac側にはSSH aliasも作り、以後は短いコマンドで入れるようにした。

ssh <hostname>

さらに、メンテナンスをCodex Appから進めやすくするため、専用ユーザーにはpasswordless sudoを許可した。

/etc/sudoers.d/<user>-nopasswd

これはかなり便利だが、どこでも雑に使っていい設定ではない。今回は家庭内の専用マシンとして、自分だけが触る前提だから採用した。共有環境や外部公開されたサーバーなら、ここはもっと慎重に設計する必要がある。

アップデートはaptだけでは終わらなかった

初期状態では、更新が途中で止まったような状態になっていた。

具体的には、nvidia-smi が失敗し、dpkg には未設定のパッケージが残り、NVIDIAドライバ関連パッケージも半端に入っていた。Dashboard上にもまだ Update Available が出ていた。

まずはLinuxマシンとしての基本的な修復を進める。

sudo dpkg --configure -a
sudo apt-get -f install
sudo apt update
sudo apt full-upgrade

途中でNVIDIA AI Workbenchのaptリポジトリキーが期限切れになっていて、apt update が止まる問題もあった。キーを更新したあと、通常のapt更新は通るようになった。

その後、NVIDIAドライバ、DGX Dashboard、DGX OOBE、DGX Spark OTA関連パッケージ、NVIDIA telemetry、Wi-Fi firmware関連パッケージまで更新した。

ここで終わりではなかった。Dashboard上の更新が消えたあとも、fwupdmgr にはUSB-C PD controllerのファームウェア更新が残っていた。

fwupdmgr get-updates
fwupdmgr update

これも適用して再起動し、更新状態が Success になっていること、追加のファームウェア更新がないことを確認した。

最終的な健康状態

セットアップ直後の健康診断としては、次の状態まで確認した。

OS: Ubuntu 24.04.4 LTS
kernel: 6.17.0-1018-nvidia
GPU: NVIDIA GB10
NVIDIA driver: 580.142
CUDA reported by nvidia-smi: 13.0
Docker: 29.2.1
nvidia-container-cli: 1.19.0
DGX OTA: 7.5.0
apt upgradable: 0
dpkg audit: clean
systemctl --failed: 0
reboot-required: no
fwupd updates: none

GPUも見えている。

GPU 0: NVIDIA GB10

最後に、NVIDIAのCUDAコンテナからもGPUを確認した。

sudo docker run --rm --gpus all \
  nvcr.io/nvidia/cuda:13.0.0-base-ubuntu24.04 \
  nvidia-smi

ここまで通れば、少なくとも「OSは上がっているがGPUコンテナが使えない」という状態ではない。ローカルLLMサーバーを立てる前の土台としては、かなり安心できる。

Tailscaleは後段のための常用経路

最初のセットアップだけならSSH forwardingで十分だった。ただ、このGX10は最終的にOpenClawのLLMバックエンド候補として使いたい。

OpenClawは別のMac miniで動いている。つまり、GX10上のローカルLLMサーバーを、Mac miniから安定して見えるようにする必要がある。

最初はMac Studioを経由したSSHトンネルでもつなげられる。ただ、常用する経路としては気持ち悪い。そこでGX10にもTailscaleを入れ、Tailnet経由で直接アクセスできるようにした。

公開記事なので実アドレスは伏せるが、考え方としては次のような形だ。

http://<gx10-tailnet-ip>:18081/v1

この経路に切り替えたあと、別マシンからGX10上のOpenAI互換APIに届くところまでは確認した。ただし、ここで注意がある。

モデルの /v1/models が見えることと、OpenClawのLLMバックエンドとして実用できることは別問題だ。下の接続経路が通っても、Telegram経由の表示、tool calling、実アプリ側のルーティングで別の問題が起きる。

この話は次以降の記事で分けて書く。第一回では、まず「専用機として起動し、更新し、GPUコンテナまで動かせる状態にした」までを区切りにする。

普通のLinuxマシンとNVIDIAアプライアンスの中間

触ってみた印象として、GX10の初期セットアップ自体は難しくない。

ただし、普通のUbuntuマシンとしてだけ見ていると取りこぼすところがある。Dashboardの更新表示、DGX関連パッケージ、NVIDIAドライバ、firmware更新、GPUコンテナ確認まで見る必要がある。

一方で、完全に家電として扱えるわけでもない。DashboardがLAN直で開くとは限らないし、アップデート途中の状態を dpkgapt で直す場面もある。

つまり、普通のLinuxマシンとNVIDIAアプライアンスの中間のような扱いになる。

それでも、SSH、Dashboard、GPUコンテナまで確認できると、一気に触りやすくなる。ここから先は、いよいよローカルLLMサーバーやOpenAI互換APIの実験に入れる。

そして次の記事では、最初にかなり意外な結果が出た。GX10の方が明らかに速いと思っていたのに、Gemma 4 31B同士で比べるとMac Studioの方が速かった。

ローカルAI専用機としての評価は、単純に「NVIDIAだから速い」で終わらない。そのあたりを、次回は実測値込みで書く。