西川和久の不定期コラム

卓上サイズでVRAM 128GB搭載ミニPC、ASUS「ASCENT GX10」を遊び尽くしてみた

 前回はNVIDIA DGX Spark互換機、ASUS「ASCENT GX10」の基本的なレビューをした。今回は自分で使うなら……的に、いろいろ遊んでみた編をお届けしたい。

Blackwellアーキテクチャの特権、FP4を使った実力は?

 ASUS「ASCENT GX10」のGB10には、BlackwellのGPUを内包しているため、GeForce RTX 50系同様、演算フォーマットにFP4が使用できる。

 ComfyUIでFP4を使うには、「Nunchaku」と呼ばれるCustom Nodeが必要だ。しかしこのインストールがなかなかうまくいかず、ネットに方法があったのでそのまま使わせていただいた。

 方法はざっくり以下の通り。サイトではuvを使って紹介しているが筆者の場合はminiconda。ComfyUIの環境に切り替えてから以下を実行している。

$ sudo apt install libopenblas-dev liblapack-dev
$ sudo apt install build-essential python3-setuptools python3-wheel
$ sudo apt install gcc-11 g++-11

$ cd ComfyUI/custom_nodes
$ git clone https://github.com/ussoewwin/ComfyUI-QwenImageLoraLoader.git
$ git clone https://github.com/nunchaku-tech/ComfyUI-nunchaku.git
$ cd ComfyUI-nunchaku
$ pip install -r requirements.txt
$ git clone https://github.com/nunchaku-tech/nunchaku.git
$ cd nunchaku
$ git submodule update --init --recursive
$ echo "/usr/local/cuda/lib64" | sudo tee /etc/ld.so.conf.d/cuda.conf
$ sudo ldconfig

 サイトにあるよう、setup.pyを編集。

$ pip install setuptools
$ pip install -e . --no-build-isolation

 これでComfyUIを起動し、Nunchakuがロードされ、ComfyUI-nunchakuとComfyUI-QwenImageLoraLoaderがCustom Nodeに組み込まれればOKだ。

 Workflowは以下の通り。Nunchakuの場合、普通のModel LoaderやLoRA Loaderは使えず、専用のNodeが必要となる(赤いNode)。

Qwen-ImageをNunchaku=FP4で動かした結果。1回目はモデルのロードに時間がかかるので、2回目以降で測定。前回17.08秒だったのが7.89秒に短縮!

 1回目はモデルのロードに時間がかかるので、2回目以降で測定。前回17.08秒だったのが7.89秒に短縮! 10秒近く縮まったことになる。FP4の威力おそるべし。これなら十分実用レベルだろう。

 前回のコラムでもそうだったが、少し気になるのは、モデルのロードにかなり時間がかかること。ASCENT GX10のハードウェア自体はPCIe 5.0に対応しているのだが、装着しているM.2 SSDはPCIe 4.0。これがあまり速くないのだろうか? ということで、以下を実行して確認してみた。

$ sudo apt install fio -y
$ fio --name=read_test --size=4G --filename=testfile --bs=1M --nrfiles=1 --direct=1 --rw=read --iodepth=32 --ioengine=libaio --numjobs=4
$ fio --name=write_test --size=4G --filename=testfile --bs=1M --nrfiles=1 --direct=1 --rw=write --iodepth=32 --ioengine=libaio --numjobs=4

READ: bw=6978MiB/s (7317MB/s), 1744MiB/s-1905MiB/s (1829MB/s-1998MB/s), io=16.0GiB (17.2GB), run=2150-2348msec
WRITE: bw=5533MiB/s (5802MB/s), 1383MiB/s-1387MiB/s (1451MB/s-1454MB/s), io=16.0GiB (17.2GB), run=2953-2961msec

 この結果を見ると特に遅いわけではない。あとはユニファイドメモリへの転送に時間がかかるのか? といったところだが、ちょっと謎の部分だ。

Z-Image-Turbo、Wan 2.2 14B i2v、そして最新FLUX.2 [dev]を使ってみる

 次は、現在主流になりつつある画像生成AI「Z-Image-Turbo」と、動画なら一択ともいえる「Wan 2.2 14B i2v」、そして最新で32Bと巨大な画像生成AI「FLUX.2 [dev]」を実行してみたい。

 Z-Image-Turboは、「fp8_e4m3fn」と「fp8_e4m3fn_fast」があるのでどちらも測定。基本後者の方が速いものの、生成した画像は気持ちクオリティが劣る。画像はすべて832×1,216px、stepsはモデルの最適値。動画は480×720px、4 steps、81フレーム。

Z-Image-Turbo。fp8_e4m3fn。9 steps。12.78秒
Z-Image-Turbo。fp8_e4m3fn_fast。9 steps。8.30秒
Wan 2.2 i2v。480×720px、4 steps、81フレーム。98.44秒
FLUX.2 [dev]。20 steps。20 steps、70.71秒

 この結果をGeForce RTX 5090(32GB)と比較すると以下のようになる。

Qwen-ImageQwen-Image + NunchakuZ-Image Turbo(fp8)Z-Image Turbo(fp8fast)Wan 2.2 14B i2vFLUX.2 [dev]
GX1017.08秒7.89秒12.78秒8.30秒98.44秒70.71秒
GeForce RTX 5090(32GB)3.84秒3.52秒3.6秒2.5秒23.7秒22.55秒
倍率4.42.243.553.324.153.13

 ざっくり3倍の差がついているようだ。GeForce RTX 5090(32GB)の3分の1程度のパフォーマンスだとGeForce RTX 5060 Ti(16GB)相当になるだろうか。これは初期(出荷直後、米国のレビューで遅いといわれていた時期)の頃よりチューンが進み速くなっており、完全にチューンされるともう少し向上する可能性も残っている。実際、PyTorchのPreview (Nightly)版を入れるともう少し速くなる。

 余談になるが、GeForce RTX 5090(32GB)でのQwen-ImageとQwen-Image + Nunchakuがほぼ変わらない生成時間になってる。これはNunchaku化して高速化が効く部分とそうでない部分があり、結果、あまり差が出ないということなのだろう。

 主な画像系で、GX10の生成時間を見ると多くは10秒前後と決して遅くない。十分実用に耐えうるスピードで生成できている。

 個人向け最強のGeForce RTX 5090(32GB)と比較して遅いのは仕方ないとして、この約3倍差をどう思うか?これは用途によっていろいろではないだろうか。

 たとえばGeForce RTX 5090(32GB)のPCを組むとして、(メモリなど値上がり前を想定して)GPU 40万円 + CPU/マザーボード/メモリ/ストレージ/電源/ケース……60万円以上はかかる。本機は約60万円なので大差ない。画像/動画生成しかしないのであれば、GeForce RTX 5090(32GB)をお勧めするが、gpt-oss-120bをすべてGPU上で動かすのは無理だ。

 次にLLM主体であればM4 Max 128GB搭載のMacBook Proも候補に上がる。14インチ/ストレージ1TBで75万3,800円。キーボードとモニターが付いているのでそれを差し引けば同レベル。これだとgpt-oss-120bが約70tok/sで動くものの、1st tokenは遅く、画像生成は分単位。

 GX10の場合、gpt-oss-120bが約53tok/sで動き、さらに1st tokenが速い。加えて画像/動画生成も爆速ではないものの十分実用レベル。もちろんLoRAの学習なども省VRAMオプションなしで実行できる。

 どれもおおよそ同じ価格帯相当の価格だが、処理には得手不得手がある。結局何に使いたいのか? がどれを選ぶかのキーポイント。GX10はある意味オールマイティとなる。

LLM/VLLMと生成AI画像の融合

 次は生成AI画像とLLM/VLLM夢の共演(笑)。つまりPrompt→LLM→Prompt拡張→生成もしくは、Prompt+リファレンス画像(内容を英文化)→Prompt拡張→生成を本機のみで行なうパターンだ。

 LLMやVLLMは使用しているパラメータ数にもよるが、少なくともVRAM数十GB必要。生成AI画像も12GB程度は必要。つまり同時に動かすにはGeForce RTX 5090(32GB)でもまだ足りない。もちろん同時に使うわけではないので、都度ロード/アンロードすればできなくもないが、それでは処理時間がかかってしまう(GPU PCを2台使うという手もあるが)。

 ところがGX10はVRAM 128GBだ。LLMにgpt-oss-120bをロードした状態でも、Qwen-ImageやZ-Image-Turboなど生成AI画像の処理が可能となる。

 スクラッチで対応しようとするとそれなりに面倒だが、Custom Node、Comfyui-Z-Image-Utilitiesを使えば即実現できる。ローカルのLLM/VLLM、そしてOpenRouterにも対応しているので、VRAM容量が足りない場合は後者を使うことも可能だ。

 Promptを拡張するルールは、Z-Imageが公式に公開しているこのSystem Promptを使っている(中国語。翻訳すれば何をしているか分かる)。基本Z-Image用だが、指示している内容はほかでも行けそうなので、今回はNunchaku版のQwen-Imageで使ってみた。Custom Node自体は単にテキスト処理なので、何にでも流用できるというわけだ。

Comfyui-Z-Image-Utilitiesを使ったNunchaku版のQwen-Image版Workflow/LLM
Comfyui-Z-Image-Utilitiesを使ったNunchaku版のQwen-Image版Workflow/VLLM
LLM/VLLM設定部分の拡大。どちらを使うか? をreroute(中央のタップ)で切り替える。上記Workflowにあるように、使わない方はバイパスしておく

 まずWorkflowを実行する前にLM Studioを起動する必要がある。今回はgpt-oss-20bとqwen3-vl-8bを使用した。コンテキスト長はどちらも4,096。リファレンス画像は特徴が分かりやすいのにしてある。Promptは、

“日本人美女, イルミネーション, 座る, 背景はクリスマスの渋谷109下, low angle, bokeh, looking at viewer”

 LLMを経由するため、日本語があっても問題ない。Custom Node拡大部分を見ていただくと分かると思うが、endpointはlocalhost、LLMとVLLMは上記のものを設定、api_key以降は不要なので設定していない。

 結果はご覧の通り。Promptに沿った内容、特にVLLMの方はリファレンス画像とPromptが混じった画像に仕上がっている。この時、使用VRAMはLLMで約54GB、VLLMで約61GB。どう考えても一般向けのGPUでは大幅に足りない容量となる。

 Seedを変更させただけのガチャとは異なり、(V)LLMからの出力内容が毎回結構変わるため、ガチャで変化する振れ幅が大きいのもこの手法の特徴となる。どちらも処理時間は12秒前後。

 LLM、生成AI画像、両方共に実用的な速度で処理できるGX10ならではの合わせ技といえよう。

自分の声をAIで喋らせる!?

 LLM、生成AI画像/動画とくれば次は音。最近、個人開発/国産で面白いLLMベースのTTS(テキストから音声)、T5Gemma-TTSが出たのでこれを使ってみたい。コードはここ。インストール方法は日本語版あるのでこれに従う。手順は以下の通り。

Rustコンパイラをインストール(これはREADME_ja.mdにはない)
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
※ 途中で3択になるので1を選択
$ . $HOME/.cargo/env
$ cargo --version
cargo 1.92.0 (344c4567c 2025-10-21)
$ rustc --version
rustc 1.92.0 (ded5c06cf 2025-12-08)
T5Gemma-TTSをインストール
$ conda create -n tts python=3.10
$ conda activate tts
$ git clone https://github.com/Aratako/T5Gemma-TTS.git
$ cd T5Gemma-TTS
$ pip install -r requirements.txt
$ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130

$ huggingface-cli login
※ アクセスtokenを入力

https://huggingface.co/Aratako/T5Gemma-TTS-2b-2b
https://huggingface.co/google/t5gemma-2b-2b-ul2
※ アクセスしてモデルの規約に同意

$ python inference_commandline_hf.py \
    --model_dir Aratako/T5Gemma-TTS-2b-2b \
    --target_text "こんにちは、これは音声合成のテストです。"
※ 初回はモデルのダウンロードも含まれる

 実行すると[Success] Generated audio saved to ./generated_tts/generated.wavが作られる。VRAMは20GBオーバーといったところ。

コマンドラインで“こんにちは、これは音声合成のテストです。”を入力。約4秒。結果generated.wav(0.34MB)
WebUIでリファレンス音声あり。リファレンス音声myvoice.wav(0.38MB)、AI生成音声myvoiceAI.wav(0.36MB)

 次はリファレンス音声を使ったAI生成。筆者の声で申し訳ないが試してみた。以下、コマンドライン版とWebUI版。

$ python inference_commandline_hf.py \
    --model_dir Aratako/T5Gemma-TTS-2b-2b \
    --target_text "こんにちは西川です。これはAI生成です。" \
    --reference_text "こんにちは西川です。これは本人です。" \
    --reference_speech ./generated_tts/myvoice.wav

$ python inference_gradio.py \
    --model_dir Aratako/T5Gemma-TTS-2b-2b \
    --port 7860

 もう1つ、女性のリファレンス音声woman.wav(0.18MB)と、生成した音声womanAI.wav(0.47MB)。筆者も彼女もとても似ている音声となった。

 WebUIも用意されているので気軽に試すことができ、英語/中国語/日本語ともにOK、学習も可能。なかなか楽しい声でのAI利用例だろう。


 以上のようにASUS「ASCENT GX10」は、NVIDIA DGX SparkベースでCUDAが使え、ユニファイドメモリを128GB搭載した、とても強力なAIミニPCだ。

 今回試したように、多くの生成AI画像/動画が実用レベルの速度で処理でき、LLM/VLLMも120bなど大きなパラメータモデルがOK。そしてこの2つを組み合わせたり、音声AI生成を難なくこなす。本記事で試していないほかでの用途、たとえば2D/3D、画像解析などにも当然使える。

 当初、GeForce RTX 5090(32GB)やAppleのM4 Max 128GB MacBook Proなどを所有しているため、あまり興味がなかったものの、実際使ってみると「欲しい!」に変わってしまった。これがDGX Spark(もしくは互換機)に対する筆者の結論となる(笑)。