画像1枚から 3D の形を作るモデルを AMD の GPU で試すとき、まず知りたいのは「ROCm で動くか」「1本に何秒かかるか」「VRAM をどれだけ使うか」だと思います。私たちは以前、Hunyuan3D-2mini が ROCm で動くかを技術検証し、Radeon RX 7900 XT で形状生成の値を1回だけ取りました。ここに書く値は1回だけの観測です。

結論

  • ROCm 版の PyTorch(2.13.0+rocm7.2)で動きました。fp16・30 steps・octree 256 で、形状の推論は 20.180 秒、実行全体は 84.921 秒でした。PyTorch のピークは allocated 4.03 GiB/reserved 4.37 GiB です。1回だけの観測なので、平均でも保証値でもありません。
  • Python 3.12 では pymeshlab==2022.2.post3 の wheel が見つからず、依存を入れる段階で止まりました。2023.12.post3 に上げ、ほかの依存もそれに合わせて通しました。

試した環境

  • GPU: Radeon RX 7900 XT(gfx1100、VRAM 20 GB)1枚
  • Ubuntu、Python 3.12.3、torch 2.13.0+rocm7.2(HIP 7.2.53211)、torchvision 0.28.0+rocm7.2
  • 主な依存: diffusers 0.30.0、transformers 4.46.0、numpy 1.26.4、trimesh 4.4.7、rembg 2.0.65、onnxruntime 1.31.0、scikit-image 0.24.0、pymeshlab 2023.12.post3
  • モデル: tencent/Hunyuan3D-2mini の hunyuan3d-dit-v2-mini(fp16 の safetensors が 3,819,958,234 bytes)。コード(Tencent-Hunyuan/Hunyuan3D-2)とモデルはどちらもリビジョンを固定
  • 入力: 画像生成で作ったキャラクターの絵1枚(1254×1254、RGB、alpha なし)

依存の導入で止まった: Python 3.12 と pymeshlab

Hunyuan3D-2 の依存を Python 3.12 の venv に入れようとしたところ、pymeshlab で止まりました。

ERROR: Could not find a version that satisfies the requirement pymeshlab==2022.2.post3 (from versions: 2023.12, 2023.12.post1, 2023.12.post2, 2023.12.post3, 2025.7, 2025.7.post1)
ERROR: No matching distribution found for pymeshlab==2022.2.post3

固定されていた 2022.2.post3 には、この環境に入る wheel がありませんでした。括弧の中が、見つかった版の一覧です。パッケージそのものが無いように見えるエラーですが、実際は「固定された版」と「Python の版」の組み合わせの問題です。新しい Python に少し前のリポジトリの依存を入れるとき、同じ所で迷いそうです。私たちは 2023.12.post3 に上げ、ほかの依存もそれと整合するように合わせて通しました。

ROCm の torch は既存の環境から借りた

ROCm 版の torch と関連パッケージは、新しい venv に入れ直していません。すでにある環境から、torch 関係だけを借りました。最初は既存の site-packages 全体を .pth で参照する案もありました。しかし、以前に入れた音声系の依存まで混ざるのでやめています。借りている分、この venv は完全に独立した環境ではなく、借り元に依存する構成です。同じやり方をするなら、借りる範囲を絞ることと、借り元に頼っていることを覚えておくとよいと思います。

合わなかった古い鍵が脇に置かれ、少し形の違う新しい鍵で扉が開きかけている

測った値

設定は次のとおりです。

項目値
dtypefloat16
attentionPyTorch 標準の SDPA
面の取り出しscikit-image の marching cubes(CPU)
steps/octree/num_chunks30/256/4096
guidance scale5.0
offloadなし
前処理rembg の u2net(CPU)で背景を除く
seed固定

結果です。

項目値
形状の推論20.180 秒
実行全体(前処理・初回の取得・読み込みを含む)84.921 秒
PyTorch のピークallocated 4.03 GiB/reserved 4.37 GiB
プロセスの最大 RSS14,046,844 KiB
出力の GLB3,220,224 bytes、89,428 頂点、178,856 面

形状の推論は 20.18 秒、前処理・初回の取得・読み込みを含めた実行全体は 84.921 秒。1回だけ測った値

実行全体は、推論そのものの4倍ほどかかっています(前後の処理だけで約 65 秒)。この 84.921 秒には初回の取得も入っています。続けて何本も回したときの1本あたりの時間とは、別物として読んでください。VRAM は 20 GB のうち、PyTorch が確保した分で 4.37 GiB でした。

次の画像は、形だけを4方向から描いて入力と並べたものです。色やテクスチャは作っていません。見えない背面はモデルの推定です。

入力のキャラクターの絵と、Hunyuan3D-2mini が作った形だけの GLB を4方向から描いた画像を並べた比較

出力の要約には watertight: false と出ましたが、数え直すと穴の縁になる辺は 0 で、穴が開いていたわけではありません(閉じているかの判定の読み方は2本目の記事に書きます)。

確かめていないこと

  • 色、テクスチャ、リグ、自己交差、原画への一致の度合い、端末で動かしたときの性能
  • 見えない背面の形(モデルの推定です)
  • 2本目以降の所要や、ほかの設定での値(測ったのは1回だけです)

おわりに

RX 7900 XT と ROCm 版の PyTorch で、Hunyuan3D-2mini の形状生成は動きました。推論は 20 秒ほど、PyTorch の確保は 4 GiB あまりです。1回だけの観測なので、目安として見てください。

※ パッケージの配布状況は執筆時点の情報で、いまは変わっている可能性があります。