跳到主要内容

3D 生成模型

TRELLIS.2-4B 本地部署:一张图变成带 PBR 材质的 GLB,24GB 显存起步

微软研究院的结构化 3D 隐空间生成线已经走到第二代。这页把 TRELLIS 与 TRELLIS.2 的真实显存、量化体积、逐级权重和踩坑点摊开讲,然后告诉你该租哪张卡。

TRELLIS 是微软研究院提出的「结构化 3D 隐空间」生成模型,第一代论文《Structured 3D Latents for Scalable and Versatile 3D Generation》(arXiv 2412.01506)拿了 CVPR'25 Spotlight,GitHub 上 microsoft/TRELLIS 已经积累了一万三千多颗星。真正需要注意的是:主线早就换代了。现在的当家型号是 microsoft/TRELLIS.2-4B,论文叫《Native and Compact Structured Latents for 3D Generation》(arXiv 2512.14692),代码在 microsoft/TRELLIS.2 这个独立仓库,两代模型在 Hugging Face 上的月下载量都是百万量级。如果你搜到的教程还在讲 TRELLIS-image-large 和 SLat,那是上一代的资料。

TRELLIS.2 换掉了整个几何表示。第一代靠 SLat 加 Flexicubes 之类的等值面场重建 mesh,第二代改用 O-Voxel —— 一种不依赖 SDF 的稀疏体素结构,因此能表达开放曲面、非流形几何和物体内部结构,并且几何和外观一起编码,直出带 base color、roughness、metallic、opacity 的 PBR GLB。管线是一个 4B 的 flow-matching transformer,实际由五个 1.3B 的 DiT 分级组成:ss_flow 先在 64³ 上出稀疏结构,img2shape 的 512 与 1024 两级出形状,imgshape2tex 的 512 与 1024 两级出材质,外加 shape/tex 两套稀疏 3D VAE 编解码器(编码器各 708MB、解码器各 948MB)。VAE 做 16× 空间下采样,把 1024³ 的资产压成约 9.6K 个 latent token。图像条件用的是 DINOv3 ViT-L/16,抠图挂的是 BiRefNet。官方在 H100 上公布的耗时是:512³ 约 3 秒(形状 2 秒 + 材质 1 秒)、1024³ 约 17 秒(10 + 7)、1536³ 约 60 秒(35 + 25)。

自部署这套东西,坑基本都在环境上而不是模型上。两代 README 都写明 Linux only;TRELLIS.2 默认 CUDA 12.4 + PyTorch 2.6.0,setup.sh 要连编 flash-attn、nvdiffrast、nvdiffrec、cumesh、o-voxel、flexgemm 六个组件,Blackwell 卡还得自己配(仓库 issue #143 就是一份 RTX 5090 + WSL-Ubuntu 的可用配方)。多卡训练目前也还不稳,issue #90、#95 都是 flex_gemm 相关的 illegal memory access。显存这条线更直接:官方写 ≥24GB,且只在 A100 与 H100 上验证过;bf16 权重本身就 16.2GB,剩下的留给激活和稀疏体素。想在 16GB 卡上跑,就得走 GGUF 或 FP8 量化那条路。与其在本机反复重装 CUDA,不如在 NexGPU 上按秒租一张对的卡:2,000+ 预置镜像里有现成的 PyTorch 和 ComfyUI,跑完就停,算力立刻停止计费。

01 —

型号与量化版本对照

五级 DiT 的逐级体积都摆在这里,别按「4B 模型」的直觉估显存。

版本参数量显存上下文说明
TRELLIS.2-4B(官方 bf16)4B = 5 × 1.3B DiT + 稀疏 3D VAE权重 16.2GB/官方要求 ≥24GB 显存512³ / 1024³ / 1536³ 体素分辨率当前主线。单图输入,直出带 base color、roughness、metallic、opacity 的 PBR GLB,另可导出 MP4 预览。微软只在 A100 与 H100 上验证过。
TRELLIS.2-4B FP8 / INT8(ComfyUI 路线)每级 DiT FP8 约 1.29GBComfy-Org 合并权重:bf16 10.34GB、int8 5.25GB,另需 shape VAE 1.10GB + texture VAE 948MB + DINOv3 ViT-L 1.21GB512³ / 1024³ComfyUI-Trellis2 提供 30 多个节点、sdpa 与 flash_attn_3 后端切换,以及 Torch 2.7/2.8/2.10 × Python 3.11/3.13 的 Windows wheel。24GB 卡跑 1024³ 会比官方 bf16 从容不少。
TRELLIS.2-4B GGUF 量化每级 1.3B DiT:Q8_0 约 1.43GB、Q6_K 约 1.12GB、Q5_K_M 约 948MB、Q4_K_M 约 789MB整套 q8 约 10GB、q4 约 6.5GB;trellis.cpp 称 1024³ cascade 可在 16GB 卡上跑通512³ / 1024³ cascade配 trellis.cpp(CUDA / Vulkan / ROCm,带常驻 HTTP 服务)或 ComfyUI GGUF 节点。代价是慢:官方基准里 res-1024、12 步流在 RTX 5060 Ti 上端到端 3 分 16 秒到 7 分 23 秒。
TRELLIS-image-large(第一代)1.2B官方要求 ≥16GB 显存64³ 稀疏结构 + SLat,支持多图条件上一代图像线,仍在维护。输出 3D 高斯、辐射场与 mesh,可导 GLB 与 PLY。要 3DGS 资产而不是 PBR mesh 时,这一代反而更合适。
TRELLIS-text-xlarge2.0B官方要求 ≥16GB 显存纯文本 prompt → 64³ 稀疏结构文本线里最大的一档。官方自己说明:受训练数据限制,文本条件模型在创意度和细节上弱于图像条件模型,先用图像线跑通再考虑它。
TRELLIS-text-base / TRELLIS-text-large342M / 1.1B官方要求 ≥16GB 显存纯文本 prompt → 3D轻量文本线,适合做批量草模和风格试验。训练代码与 TRELLIS-500K 数据集(源自 Objaverse(XL)、ABO、3D-FUTURE、HSSD、Toys4k,按美学评分筛选)都已开放。

02 —

该租哪张卡

按 24GB 这条硬线来配,不要拿 16GB 卡硬碰官方 bf16 管线。

  • 跑第一代 TRELLIS-image-large 做效果评估、出 3D 高斯资产

    Tesla V100 32GB$0.188/卡·时

    官方 README 专门点名 V100 不支持 flash-attn,但给了 ATTN_BACKEND=xformers 这条明路;32GB 比 16GB 的底线宽裕得多,而它是全站最便宜的一档。

  • TRELLIS.2-4B 官方 bf16 管线,512³ 单图出模

    RTX 3090 24GB$0.193/卡·时

    刚好压住官方 24GB 的最低要求,Ampere 架构 flash-attn 直接可用,16.2GB 权重加激活能装下,是验证「这套东西到底跑不跑得起来」最省钱的入口。

  • 1024³ cascade 加 PBR 贴图管线连着跑,或做长时间批量出模

    RTX 5090 32GB$0.723/卡·时

    shape 与 texture 两级 1.3B DiT 同时驻留时 24GB 会紧,32GB 留出余量;Blackwell 需要自编 flash-attn,仓库 issue #143 有现成的 5090 + WSL-Ubuntu 配方可抄。

  • 1536³ 高模、资产流水线或微调训练

    A100 PCIE 80GB$0.824/卡·时

    微软官方就是在 A100 与 H100 上验证的,80GB 能一次装下五级 DiT 加两套 VAE,1536³ 不用来回换权重;要多卡就往上叠,NexGPU 单节点最多 14 张卡、2,152GB 显存。

03 —

四步跑出第一个 GLB

官方栈是 Linux + CUDA 12.4 + PyTorch 2.6.0,照着走别改版本。

  1. 01

    开一台 24GB 以上的实例,选 PyTorch 镜像

    在 NexGPU 控制台挑卡(RTX 3090 24GB 起),从 2,000+ 预置镜像里选 PyTorch 那套,SSH、Jupyter 或网页终端进去都行。进来第一件事是确认驱动和 CUDA 版本对得上,TRELLIS.2 的编译步骤对这个很敏感。

    nvidia-smi && python -c "import torch; print(torch.__version__, torch.version.cuda)"
  2. 02

    克隆仓库并编译六个扩展

    setup.sh 会新建 trellis2 环境并依次编译 flash-attn、nvdiffrast、nvdiffrec、cumesh、o-voxel、flexgemm。这一步最花时间,也是本机部署最容易卡死的地方 —— 记得带 --recursive,子模块少一个就编不过。

    git clone -b main https://github.com/microsoft/TRELLIS.2.git --recursive && cd TRELLIS.2 && . ./setup.sh --new-env --basic --flash-attn --nvdiffrast --nvdiffrec --cumesh --o-voxel --flexgemm
  3. 03

    拉权重跑第一次推理

    from_pretrained 会拉下 microsoft/TRELLIS.2-4B 的 16.2GB 权重:五个 1.3B DiT 分级加 shape/tex 两套 VAE。先用 512³ 试通(H100 上约 3 秒),确认输出正常再往 1024³、1536³ 上调。PBR 贴图单独走 texturing 管线,参考 example_texturing.py。

    from trellis2.pipelines import Trellis2ImageTo3DPipeline
    pipeline = Trellis2ImageTo3DPipeline.from_pretrained("microsoft/TRELLIS.2-4B")
    mesh = pipeline.run(image)[0]
  4. 04

    起 Gradio 界面,或换量化路线省显存

    python app.py 直接拉起官方网页 demo,app_texturing.py 是贴图那一版。如果卡只有 16GB,改走 GGUF:ilintar/trellis2-gguf 的 q4 全套约 6.5GB、q8 约 10GB,配 trellis.cpp 用 --res 512|1024|1536 控制分辨率,还能常驻成 HTTP 服务给后端调。

    python app.py

一个 3D 资产到底多少钱

拿官方在 H100 上公布的耗时直接算。1024³ 一次约 17 秒(形状 10 秒 + 材质 7 秒),NexGPU 的 H100 SXM 80GB 是 $3.582/卡·时,3600 ÷ 17 ≈ 211 个资产/小时,摊到每个约 $0.017;1536³ 一次约 60 秒,一小时 60 个,每个约 $0.060。如果只是验证效果、调 prompt 和输入图,RTX 3090 24GB $0.193/卡·时 连续跑满一天 24 小时也就 0.193 × 24 = $4.63。存储另算:16.2GB 权重按中位价 $0.414/GB·月 是 16.2 × 0.414 ≈ $6.71/月,按天摊约 $0.22;导出 1,000 个 5MB 的 GLB 共 5GB 出网,5 × $0.0081 ≈ $0.04,基本可以忽略。计费按秒走、按小时定价,没有起租时长、没有开通费、不用申请配额;实例一停算力立刻不计费,存储要销毁才停。

04 —

常见问题

TRELLIS 需要多大显存?24GB 到底够不够?

TRELLIS.2-4B 官方写的是至少 24GB,且只在 A100 与 H100 上验证过。bf16 权重本身 16.2GB(五个 1.3B DiT 加 shape/tex 两套 VAE),剩下的留给激活和稀疏体素,所以 512³ 在 24GB 上没问题,1024³ cascade 让形状和材质两级同时驻留时就会紧。第一代 TRELLIS-image-large 只要 16GB。这种「够不够」的问题不值得靠猜:在 NexGPU 用 RTX 3090 24GB $0.193/卡·时 实测一把,不够再换 RTX 5090 32GB $0.723 或 A100 PCIE 80GB $0.824,按秒计费,换卡的成本就是几分钟的钱。

TRELLIS 和 TRELLIS.2 有什么区别?现在应该用哪个?

这不是小版本升级,是换了几何表示。第一代(arXiv 2412.01506)用 SLat 结构化隐空间,1.2B,输出 3D 高斯、辐射场和 mesh;TRELLIS.2(arXiv 2512.14692)改用 O-Voxel,不再依赖 SDF、Flexicubes 这类等值面场,能表达开放曲面、非流形几何和内部结构,4B 参数、最高 1536³,直出带 PBR 材质的 GLB。新项目直接上 TRELLIS.2;只有两种情况要回第一代 —— 你要的是 3DGS 资产,或者你需要纯文本条件(TRELLIS.2 是单图输入)。两条线在 NexGPU 上都是开一台机、跑一条 setup.sh 的事。

16GB 显卡能跑 TRELLIS.2 吗?有量化版本吗?

官方 PyTorch 管线不行,但量化生态已经很成熟。每级 1.3B DiT 的 Q4_K_M 约 789MB、Q5_K_M 约 948MB、Q6_K 约 1.12GB、Q8_0 约 1.43GB、FP8 约 1.29GB;ilintar/trellis2-gguf 整套 q4 约 6.5GB、q8 约 10GB,配 trellis.cpp(CUDA / Vulkan / ROCm 三后端)官方说明 1024³ cascade 能在 16GB 卡上跑通。代价是时间:它公布的 res-1024、12 步流端到端基准是 RTX 5060 Ti 约 3 分 16 秒(轻输入)到 7 分 23 秒(重输入),含加载。想验证量化路线,NexGPU 的 Tesla T4 16GB 是 $0.298/卡·时;想省时间就直接上 RTX 4090 24GB $0.540/卡·时 跑原版权重。

TRELLIS 能在 Windows 上跑吗?

两代 README 都明确写 Linux only。Windows 上真正能用的是三条路:WSL2(仓库 issue #143 有一份 RTX 5090 32GB + WSL-Ubuntu 的完整配方,含自己编好的 flash-attn)、ComfyUI-Trellis2(提供 Torch 2.7/2.8/2.10 搭 Python 3.11/3.13 的 Windows wheel,还带 blackwell_fix.py)、以及 trellis.cpp 的预编译二进制。这三条都要跟编译环境搏斗一阵。算一下时薪就知道,在 NexGPU 上开一台干净的 Linux 实例通常比在自己电脑上折腾一晚上便宜。

TRELLIS 是什么开源协议?生成的模型能商用吗?

微软的 TRELLIS 与 TRELLIS.2,模型权重和主体代码都是 MIT —— 这在 3D 生成里相当少见,同类项目不少是研究许可。但两代 README 都提醒子模块另有条款:TRELLIS.2 依赖 nvdiffrast 和 nvdiffrec,第一代依赖 diffoctreerast 与改造过的 Flexicubes,这些渲染组件各自的授权要单独看。另外 TRELLIS-500K 训练数据取自 Objaverse(XL)、ABO、3D-FUTURE、HSSD 和 Toys4k,商用前值得单独评估。私有化部署的核心价值就在这儿:在 NexGPU 起一台实例,输入图和产出的 GLB 都留在你自己的机器上,不经过任何第三方 API。

生成出来的 mesh 有小洞、破面怎么办?

这是官方在模型卡里自己写明的限制:raw mesh 可能带 small holes 或轻微的拓扑不连续,需要后处理。实践里三招:先提分辨率(512³ → 1024³ → 1536³ 改善很明显)、再用 cumesh 与 o-voxel 的 postprocess 做补洞减面、最后进 Blender 或 DCC 收尾。另一个高频坑在输入端 —— 管线自带 BiRefNet 抠图(882MB 那个模型),背景没抠干净,几何就会跟着一起长出来。官方也说了这是未经人类偏好对齐的基座模型,需要反复试输入。反复试最贵的是时间不是显存,而 NexGPU 按秒计费、跑完就停,一轮试错的账单就是几毛钱。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。