TRELLIS.2 移植到 Mac:没有 NVIDIA 也能跑图片转 3D 模型
如果你只有一台 Mac 电脑,想从单张图片生成 3D 模型——直到今天,这基本上是个伪需求。市面上最好的开源图片转 3D 技术,几乎全部围绕 NVIDIA CUDA 构建,买不到合适的硬件就等于玩不了。 这个局面正在被打破。 TRELLIS.2 是微软 2025 年发表在 CVPR 的论文提出的图片转 3D 方法,在 GitHub 上有 1.2 万星,官方仓库清一色 CUDA 代码。近日有个开发者把它完整移植到了 Apple Silicon,M4 Pro 上 3.5 分钟就能生成一个 40 万顶点的网格模型,全程跑在苹果自研芯片上,不需要半块 NVIDIA 显卡。 移植的核心思路:替换掉 CUDA 依赖 TRELLIS.2 依赖好几个 CUDA 专用的库,官方版本开箱即用但根本不支持 Metal。这不是简单的编译选项问题,而是代码里大量硬编码了 .cuda() 调用和 CUDA 核函数。 移植的思路很直接:找到每一个 CUDA 依赖,用 PyTorch 原生功能或纯 Python 实现替换。 主要替换关系如下: 原始(CUDA) 移植版本 用途 flex_gemm backends/conv_none.py 子流形稀疏 3D 卷积,通过 gather-scatter 实现 o_voxel._C hashmap backends/mesh_extract.py 从双体素网格提取网格面 flash_attn PyTorch SDPA 稀疏变换器的注意力机制 cumesh Stub(跳过) 网格孔填充与简化 nvdiffrast Stub(跳过) 可微分光栅化(仅影响纹理导出) 稀疏 3D 卷积的替换是个技术亮点。原始 flex_gemm 做的是子流形稀疏卷积——3D 生成任务中只有物体表面有数据,不需要对整个空间做卷积。移植版本用 Python 构建空间哈希表,对每个活跃体素收集邻域特征,通过矩阵乘法应用权重,再把结果 scatter 回去。neighbor maps 做了缓存避免重复计算。 ...