LogoTensorFusion 文档
LogoTensorFusion 文档
首页

快速开始

TensorFusion 概览在 Kubernetes 安装在虚拟机/服务器安装(K3S)Helm 快速安装在宿主机/虚拟机安装TensorFusion 架构

应用操作

创建 AI 应用注解使用场景配置自动扩缩容迁移现有应用最佳实践

自定义AI基础设施

生产级部署指南QoS 级别与计价云厂商集成(BYOC)管理许可证

维护与优化

组件更新配置告警GPU 热迁移预加载模型优化 GPU 效率

故障排除

问题处理手册链路追踪/性能分析查询指标和日志

参考

对比

与 NVIDIA vGPU 对比与 MIG/MPS 对比与趋动科技对比与 NVIDIA Run:ai 对比与 HAMi 的对比

管理许可证

TensorFusion 哪些组件需要许可证,以及如何在集群中安装、验证和轮换许可证密钥

TensorFusion 的大部分组件是开源的,不需要许可证就能运行。例外是 vGPU worker,也就是远程 vGPU 模式和 hard 隔离背后的组件:它启动时会校验许可证密钥。本文说明哪些部分需要许可证、如何安装或轮换密钥,以及怎么确认密钥已生效。

哪些部分需要许可证

部分许可方式集群里是否需要密钥
controller、调度器、webhook、hypervisor,GPU 池化与管理开源,Apache 2.0不需要
soft 隔离(进程内 limiter)开源,Apache 2.0不需要
shared(整卡)和 partitioned(MIG)分配开源,Apache 2.0不需要
vGPU worker:远程 vGPU 模式、hard 隔离、sidecar worker商业许可。组织内 GPU 总数少于 10 张时免费需要
TensorFusion 控制台的企业版功能商业许可不需要,与控制台中的组织绑定

套餐和价格见定价页面。申请、延期或续签许可证密钥,请联系 support@tensor-fusion.com。

目前还没有的能力:

  • 没有自助购买许可证密钥或查看许可证用量的页面,密钥由 TensorFusion 团队签发。
  • controller 不校验也不上报许可证,没有任何自定义资源展示许可证状态或到期时间。只有 worker 会校验密钥,到期时间需要你自己记录和跟踪。

许可证如何校验

一份许可证由两个字符串组成:

内容worker 上的环境变量说明
许可证文本TF_LICENSE版本、到期时间;绑定硬件的许可证还包含已授权 GPU 的 UUID
签名TF_LICENSE_SIGN许可证文本的签名

worker 启动时会验证签名、检查许可证是否过期;对绑定硬件的许可证,还会检查它看到的 GPU 是否都在授权范围内。任何一项不通过,worker 都会打印原因并退出,依赖它的应用也就用不了 GPU。

校验在 worker 内部完成,不需要访问网络,所以在完全私有化部署的集群里也是同样的流程。

安装或轮换许可证密钥

前置条件

  • TensorFusion 提供的许可证文本和对应签名。
  • 有权限编辑 TensorFusionCluster 资源。

第 1 步:把密钥配置到 GPU 池

worker 的环境变量来自 GPU 池的 worker Pod 模板。编辑集群资源:

kubectl edit tensorfusioncluster tensor-fusion

在每个会运行 worker 的池里,给 tensorfusion-worker 容器加上这两个变量:

apiVersion: tensor-fusion.ai/v1
kind: TensorFusionCluster
metadata:
  name: tensor-fusion
spec:
  gpuPools:
    - name: shared
      specTemplate:
        componentConfig:
          worker:
            podTemplate:
              template:
                spec:
                  containers:
                    - name: tensorfusion-worker
                      env:
                        # ... 保留已有的变量 ...
                        - name: TF_LICENSE  // [!code highlight]
                          value: "<许可证文本>"
                        - name: TF_LICENSE_SIGN  // [!code highlight]
                          value: "<签名>"

轮换密钥时,两个值要在同一次修改里一起替换。签名只对应一份许可证文本,新文本配旧签名会校验失败。

独立的 worker Pod(远程 vGPU 模式)和注入到业务 Pod 里的 worker sidecar(本地模式的 hard 隔离)用的是同一份模板。

第 2 步:重启 worker

worker 只在启动时读取密钥。已经在运行的 worker 会继续使用旧密钥,直到被重建。

  • 池上设置了 nodePoolRollingUpdatePolicy.autoUpdateWorker: true 时,controller 会在配置变更后分批重建 worker。
  • 否则需要自己重启受影响的工作负载,例如 kubectl rollout restart deployment/<name>。

请在旧密钥到期之前完成轮换。运行中的 worker 不会在到期那一刻停止,但下次启动时会校验失败。

第 3 步:验证

找到 worker 并查看日志:

kubectl get pods -A -l tensor-fusion.ai/component=worker
kubectl logs -n <namespace> <worker-pod> -c tensorfusion-worker | grep -i license

sidecar 形式的 worker,把 Pod 名换成业务 Pod 的名称,容器名不变。

日志里出现 License verification passed,后面会带上 worker 接受的版本和到期时间。只有 worker 模板中的 TF_ENABLE_LOG 为 1 时才会输出这条日志,Helm chart 默认就是 1。

故障排查

worker 日志原因处理
License is not setworker 容器缺少 TF_LICENSE 或 TF_LICENSE_SIGN在池的 worker 模板里补齐两个变量,然后重启 worker
License verification failed文本和签名不匹配,常见原因是复制时被截断或改动按签发时的原样重新粘贴两个值,并加上引号
License has expired许可证已过期申请新密钥并轮换
Device UUID ... is not found in the license许可证绑定了具体的 GPU,而这个节点上有未授权的 GPU申请覆盖新 GPU 的密钥

确认运行中的 Pod 确实带有这两个变量:

kubectl get pod -n <namespace> <worker-pod> \
  -o jsonpath='{range .spec.containers[?(@.name=="tensorfusion-worker")].env[*]}{.name}{"\n"}{end}'

下一步

  • 组件更新:worker 的更新如何分批进行。
  • 工作负载配置:哪些注解会启用远程模式、hard 隔离或 sidecar worker。
  • 问题处理手册

云厂商集成(BYOC)

让 GPU 池在你自己的云账号里自动增减 GPU 节点,可以通过 Karpenter,也可以直接调用云 API

组件更新

用 Helm 升级 TensorFusion 控制面,分批滚动更新 hypervisor、worker 和 client,并轮换凭据

目录

哪些部分需要许可证
许可证如何校验
安装或轮换许可证密钥
前置条件
第 1 步:把密钥配置到 GPU 池
第 2 步:重启 worker
第 3 步:验证
故障排查
下一步