3D模型生成 trellis2 - r9700 rocm
-
R9700 跑 TRELLIS.2 ROCm:先把能跑的路徑整理出來
這份工具箱不是要把 TRELLIS.2 重新包成一個完整產品。比較實際的目標是:在 AMD Radeon AI PRO R9700 這張卡上,先整理出一條可以重現的 image-to-3D 測試流程。
R9700 的硬體規格看起來很適合做本地 AI Lab,但 ROCm、RDNA4、3D 生成模型這幾個東西湊在一起,細節其實不少。官方或社群專案通常會先以 NVIDIA / CUDA 當主要路徑,AMD 這邊常常要自己補一段。
為什麼要另外整理一包
我測的是 TRELLIS.2 的 ROCm fork 。模型本身可以跑,問題主要卡在高品質輸出時的貼圖與 mesh 後處理。
原本的 textured GLB export 會走 GPU BVH 路徑,其中有一段
cumesh.cuBVH.unsigned_distance()。在 R9700 / gfx1201 的 ROCm 環境下,這段有機會讓 HIP 進入 illegal state。不是模型完全不能跑,而是輸出流程跑到這裡會炸。所以這個 repo 做了兩件事:
- 固定一個可以重現的 ROCm 容器環境
- 把貼圖投影改成 CPU KDTree fallback,避開目前不穩的 GPU BVH 路徑
這不是最快的做法,但至少可以把 textured GLB 生出來。
目前可用的路徑
目前測過比較穩的設定是:
texture_size=4096 decimation_target=1000000 remesh=False OVOXEL_PROJECTION_MODE=cpu_kdtree OVOXEL_CPU_KDTREE_K=8remesh=False是刻意的。原本remesh=True看起來比較漂亮,但它還是會碰到同一條 GPU BVH distance path。只要那段 native ROCm extension 還沒修好,高品質設定就不能只看參數名稱,還要看它底下實際呼叫了什麼。測試紀錄:robot 4096 版
這次測試用 4096 texture 設定,目標是先確認高解析貼圖能不能穩定完成,而不是追求最快速度。
設定如下:
texture_size=4096 decimation_target=1000000 remesh=False OVOXEL_PROJECTION_MODE=cpu_kdtree OVOXEL_CPU_KDTREE_K=8輸出結果:
GLB size: 約 41MB final mesh: 823,375 vertices / 954,302 faces valid texture pixels: 8,331,054 CPU projection mean distance: 3.255e-05 CPU projection max distance: 0.003561 GLB check: materials=1, textures=2, images=2, baseColorTexture exists這次 robot 4096 版大約花了 6 分 50 秒。
時間拆開看:
階段 時間 備註 啟動 / 載入 pipeline 約 1 分鐘多 第一次啟動會花時間載入模型與 pipeline 模型生成 / sampling / decode 約 2 分 50 秒 從開始跑圖到 to_glb開始前GLB 匯出總時間 約 2 分 49 秒 22:23:22 開始 to_glb,22:26:11 完成4096 texture baking + CPU projection 約 2 分 35 秒 4096 貼圖解析度下最重的一段 CPU KDTree projection 本身 約 2 分 23 秒 22:23:36 開始,22:25:59 完成 最耗時的是這段:
CPU KDTree projection: querying 8,331,054 points它要處理 833 萬個 texture points。換句話說,4096 貼圖解析度主要就是卡在這裡。CPU KDTree fallback 可以避開 ROCm GPU BVH 的問題,但代價就是 texture baking 會變成 CPU 工作。
使用方式
先 build 容器:
podman build -t localhost/r9700-trellis2-rocm-toolbox:latest .模型不要放進 repo,也不要打進 image。建議把模型目錄掛到
/models:MODEL_ROOT=$HOME/ai-models \ WORK_ROOT=$PWD/work \ scripts/run-container.sh進容器後跑輸出:
cd /workspace/TRELLIS.2_rocm source /workspace/.venv/bin/activate export OVOXEL_PROJECTION_MODE=cpu_kdtree export OVOXEL_CPU_KDTREE_K=8 export HF_HOME=/models/huggingface export HUGGINGFACE_HUB_CACHE=/models/huggingface/hub export XDG_CACHE_HOME=/models/cache python /opt/r9700-trellis2/scripts/run-textured-export.py \ --input /workspace/TRELLIS.2_rocm/assets/example_image/T.png \ --output /workspace/work/sample-4096.glb \ --texture-size 4096 \ --decimation-target 1000000這包適合誰
如果你只是想要最省事地跑 3D 生成,NVIDIA 環境目前還是比較少坑。
但如果你手上已經有 R9700,或是想測 AMD AI 生態,這包可以省掉一些重複踩坑的時間。
後續想補的東西
- 把 Web UI 的流程也整理成可重現版本
- 補一份 build 時間與生成時間紀錄
- 測不同
texture_size對品質與時間的影響 - 等 ROCm / native extension 更新後,再回頭測
remesh=True
https://github.com/CS6/r9700-trellis2-rocm-toolbox
