TensorFusion 概览
TensorFusion 是运行在 Kubernetes 上的 GPU 虚拟化与池化系统。它把一张物理 GPU 切给多个 Pod 共用,为每个 Pod 限定算力和显存,并把集群里的所有 GPU 当作一个资源池统一调度。Pod 只需加一个标签和几条注解就能申请 GPU 资源,应用镜像和代码不用改。
本页说明 TensorFusion 能做什么、适合什么场景,以及接下来该读哪些文档。
TensorFusion 能做什么
| 能力 | 说明 |
|---|---|
| GPU 切分 | 按 Pod 申请和限制算力(以 TFLOPS 或单卡百分比计)与显存,不必整卡分配。 |
| 四种隔离模式 | shared、soft、hard、partitioned,按工作负载选择与同卡其他负载的隔离强度,详见架构。 |
| 本地与远程 GPU | Pod 可以使用所在节点的 GPU,也可以跑在没有 GPU 的节点上,通过网络使用其他节点的 GPU(GPU-over-IP)。 |
| GPU 感知调度 | 调度器按 TFLOPS 和显存做决策,支持紧凑装箱或负载均摊两类放置策略、四级 QoS、命名空间配额、Gang 调度和 GPU 拓扑感知。 |
| 超额分配 | 每个资源池可以设置算力超卖倍数,以及主机内存、磁盘按多大比例计入可调度显存。 |
| 自动伸缩 | 根据历史用量调整工作负载的 GPU 请求与限额;通过 Karpenter 或云厂商 API 增减 GPU 节点。 |
| 节点合并与碎片整理 | 腾空并释放利用率低的 GPU 节点。 |
| 多厂商 | 支持 NVIDIA、华为昇腾(Ascend)、摩尔线程(Moore Threads)和阿里 PPU,每个厂商由一个 ProviderConfig 描述,详见支持矩阵。 |
| 监控与告警 | GPU、节点、资源池、工作负载的指标写入集群内的 GreptimeDB;告警规则由 controller 计算后发送到 Alertmanager。 |
| 云端控制台(可选) | 用网页管理集群。集群内的 agent 主动连到控制台,集群不需要开放入站访问。 |
GPU 热迁移和部分高级伸缩策略属于商业版功能,见许可。
演示
端到端演示
按需扩容
多个应用共享一张 GPU
限额隔离
远程 GPU
GPU 热迁移
工作原理
- 安装一个 Helm chart。它部署 controller(CRD 控制器、Pod 准入 webhook、调度器在同一个进程里)和指标数据库。
- controller 在每个 GPU 节点上启动一个 hypervisor Pod。hypervisor 发现节点上的 GPU,并上报为
GPU资源。 - 在 Pod 模板上加标签
tensor-fusion.ai/enabled: "true"和资源注解。 - webhook 改写 Pod,调度器为它选定 GPU,hypervisor 负责执行限额。
各组件和每一步的细节见架构。
适用场景
- 多个小模型或突发型模型共用集群。 推理服务、MaaS 平台、AI SaaS 后端很少需要独占整卡,GPU 切分加超额分配可以让一张卡承载更多服务。
- 开发与教学环境。 Notebook 和实验环境大部分时间空闲。可以给每个用户分一小份 GPU,也可以让 CPU 节点上的 Pod 远程使用 GPU。
- GPU 租赁与内部平台。 用 QoS 等级、命名空间配额和按工作负载统计的用量指标,在租户之间划分资源池并核算用量。
- 混合硬件。 NVIDIA 和其他已支持的厂商共用同一个调度器、同一套注解。
不适用场景
- 每个任务本来就吃满整卡。 占满所有 GPU 的大规模训练从切分中得不到多少好处。这类任务仍可以用
shared模式接入,使用调度和池化能力。 - 用
soft隔离跑不可信租户。soft模式的 limiter 运行在应用进程内,不是安全边界。不可信的工作负载请使用hard或partitioned。 - 非 glibc 镜像。
soft隔离通过/etc/ld.so.preload加载 limiter,要求镜像基于 glibc 并带有/bin/sh。Alpine 等基于 musl 的镜像在该模式下不受支持。 - 没有 Linux GPU 节点的集群。 controller 和 hypervisor 只能运行在 Linux 上。
快速开始
常见任务
参考资料
与其他方案对比
TensorFusion 在一套系统里提供 GPU 切分、远程 GPU 共享、GPU 感知调度和节点自动伸缩。它自带调度器和 device plugin,并且可以接管申请 nvidia.com/gpu 的 Pod,因此已有的 NVIDIA device plugin 环境可以分批迁移。
下面每篇对比都从功能、隔离性和运维三个方面展开:
- TensorFusion 与 MIG / MPS / Time-slicing
- TensorFusion 与 NVIDIA vGPU
- TensorFusion 与 NVIDIA Run:ai
- TensorFusion 与 HAMi
- TensorFusion 与 VirtAI OrionX
许可
- 开源(Apache 2.0)。 controller、调度器、hypervisor。
- 免费使用,不开源,无需 license。
soft模式加载到应用中的各厂商 limiter 库,随公开镜像分发。池化、调度,以及shared、partitioned和本地soft模式只需要这些和开源组件。 - 免费使用,不开源,需要 license 文件。 实现远程 GPU 共享和
hard隔离的 client 与 worker。组织内 GPU 总数少于 10 张时免费。 - 商业版。 超出上述规模使用闭源组件,以及 GPU 热迁移等企业功能。见价格页或联系我们。
FAQ
TensorFusion 是开源的吗?
大部分是。controller、调度器和 hypervisor 在 NexusGPU/tensor-fusion 仓库中以 Apache 2.0 许可证开源。远程 GPU 共享和 hard 隔离用到的 client 与 worker 只以容器镜像形式发布,设计思路沿用了 rCUDA 提出的 API remoting 方法。
什么情况下可以免费使用?
开源组件始终免费。闭源组件在组织内 GPU 总数少于 10 张时,商业和非商业用途都免费。超出后请联系我们获取商业版或教育版许可。
支持哪些 GPU?
NVIDIA GPU 覆盖最全:本地和远程都支持全部四种隔离模式。华为昇腾、摩尔线程和阿里 PPU 支持其中一部分模式。AMD 暂不支持。每种组合见支持矩阵。
需要改应用吗?
不需要。在 Pod 模板上加标签和注解即可。webhook 会按所选模式注入需要的内容,应用看到的仍是普通的 GPU 设备。Pod 里有多个容器时,用 tensor-fusion.ai/inject-container 注解指明哪些容器需要 GPU。
需要安装 NVIDIA GPU Operator 吗?
不需要。GPU 节点上有可用的厂商驱动,容器运行时能把 GPU 暴露给容器即可。已经装了 GPU Operator 的集群,TensorFusion 可以与它并存,见迁移现有 GPU 工作负载。
有生产环境的用户吗?
有。见十方融海如何用 TensorFusion 节省 80% 的 GPU 成本。
TensorFusion 由谁开发?
TensorFusion 及相关 GitHub 项目由总部位于新加坡的 NexusGPU PTE. LTD. 开发和维护。
TensorFusion 文档