终端用户参考
工作负载配置
本文档解释了如何使用Pod Annotation和WorkloadProfile自定义资源为AI应用分配vGPU资源。
添加 Pod 注解
在Pod metadata中可以添加以下注解。
注意:如果一个 Pod 内有多个容器需要使用 GPU,请提供每个容器的 GPU 使用数量,建议使用 tensor-fusion.ai/container-gpu-count 指定各容器的卡数。
tensor-fusion.ai/container-gpus 为系统写回的容器与 GPU ID 映射,一般无需手动设置,不建议用户手动填写。
启用 TensorFusion 的标签
tensor-fusion.ai/enabled 是一个 label(不是 annotation),用于显式启用或禁用 TensorFusion。通常配置在 metadata.labels 中:
metadata:
labels:
tensor-fusion.ai/enabled: "true"与 tensor-fusion.ai/enabled-replicas 的关系:enabled 负责在工作负载层面开启/关闭 TensorFusion;enabled-replicas 用于在开启后控制启用的副本数量以实现灰度发布。当 enabled 为 false 时,enabled-replicas 不生效。
注解参考
基础注解
| 注解 | 描述 | 示例值 |
|---|---|---|
tensor-fusion.ai/tflops-request | 每个 vGPU worker 每个 GPU 设备请求的 TFLOPs(FP16) 算力 | '10' |
tensor-fusion.ai/vram-request | 每个 vGPU worker 每个 GPU 设备请求的 VRAM(显存或帧缓冲) | 4Gi |
tensor-fusion.ai/tflops-limit | 每个 vGPU worker 每个 GPU 设备允许的最大 TFLOPs(FP16) 算力 | '20' |
tensor-fusion.ai/vram-limit | 每个 vGPU worker 每个 GPU 设备允许的最大 VRAM(显存或帧缓冲) | 4Gi |
tensor-fusion.ai/inject-container | 要注入 GPU 资源的容器,多个容器可用逗号分隔 | python |
tensor-fusion.ai/qos | 服务质量等级 | low medium high critical |
tensor-fusion.ai/is-local-gpu | 将工作负载调度到运行 vGPU worker 的同一台 GPU 服务器以获得最佳性能,默认为 false | 'true' |
tensor-fusion.ai/gpu-count | 请求的 GPU 设备数量,每个 vGPU worker 将映射到此字段设置的 N 个物理 GPU 设备,VRAM/TFLOPs 资源消耗将按此字段缩放,默认为 1,您的 AI 工作负载可以获取 cuda:0 设备 | '4' |
tensor-fusion.ai/gpupool | 指定目标 GPU 池 | default-pool |
tensor-fusion.ai/vendor | 指定 GPU/NPU 厂商:NVIDIA AMD Ascend Intel Hygon MetaX MThreads Cambricon Enflame Qualcomm Cerebras AWSNeuron Google | NVIDIA |
高级注解
| 注解 | 描述 | 示例值 |
|---|---|---|
tensor-fusion.ai/gpu-model | 指定 GPU/NPU 型号 | A100 H100 L4 L40s |
tensor-fusion.ai/dedicated-gpu | 与 tensor-fusion.ai/gpu-model 注解一起使用,为当前工作负载独占整卡 | 'true' |
tensor-fusion.ai/isolation | 包括 shared soft hard partitioned 四种隔离模式 | soft |
tensor-fusion.ai/compute-percent-request | 计算资源请求百分比 (0-100),与 TFLOPS request 互斥,仅需设置其一 | '100' |
tensor-fusion.ai/compute-percent-limit | 计算资源限制百分比 (0-100),与 TFLOPS limit 互斥,仅需设置其一 | '100' |
tensor-fusion.ai/gpu-indices | 指定 GPU 设备索引 (0-N),限制可调度设备范围,请求多卡时逗号分隔 | '0,1' |
tensor-fusion.ai/container-gpu-count | 多容器 Pod 中每个容器的 GPU 数量(JSON 字符串,容器名到数量的映射)。若不设置,默认所有容器共享同一组 GPU | '{"container-a":1,"container-b":2}' |
tensor-fusion.ai/container-gpus | 容器到 GPU ID 的映射(JSON 字符串)。由系统在调度后写回,用于记录每个容器绑定的 GPU ID | '{"container-a":["gpu-1","gpu-2"],"container-b":["gpu-3"]}' |
tensor-fusion.ai/workload | 指定 TensorFusionWorkload 名称,如存在则共享同一组 vGPU worker | pytorch-example |
tensor-fusion.ai/workload-profile | 引用 WorkloadProfile 以重用预定义参数 | default-profile |
tensor-fusion.ai/enabled-replicas | 设置为不大于 ReplicaSet 副本数的任意值,用于 TensorFusion 灰度发布 | '1','42' |
tensor-fusion.ai/autoscale | 启用自动伸缩(基于历史用量自动设置 GPU 资源) | 'true' |
tensor-fusion.ai/autoscale-target | 自动伸缩目标资源:compute(算力卡百分比/TFLOPs)、vram(显存)或 all(同时) | 'all' |
tensor-fusion.ai/standalone-worker-mode | 当 is-local-gpu 为 true 时,若该选项为 false,则 vGPU worker 会注入到 init container 中以获得最佳性能,但可能存在用户绕过 vGPU worker 直接使用物理 GPU 的风险;当 is-local-gpu 为 false 时,此选项无效 | 'true' |
tensor-fusion.ai/disable-features | 关闭 TensorFusion 内置功能的开关,可用逗号分隔多个功能 | 'gpu-limiter,gpu-opt,mem-manager' |
示例配置
kind: Deployment
apiVersion: apps/v1
metadata: {}
spec:
template:
metadata:
labels:
tensor-fusion.ai/enabled: "true"
annotations:
tensor-fusion.ai/inject-container: python # 如果多个容器使用 GPU,可以用逗号分隔
tensor-fusion.ai/tflops-limit: '20'
tensor-fusion.ai/tflops-request: '10'
tensor-fusion.ai/vram-limit: 4Gi
tensor-fusion.ai/vram-request: 4Gi
tensor-fusion.ai/qos: medium
tensor-fusion.ai/workload-profile: default-profile # WorkloadProfile 作为模板,优先级低于annotation
tensor-fusion.ai/is-local-gpu: 'true'
tensor-fusion.ai/gpu-count: '1' # 每个 TensorFusion Worker 的 GPU 设备数量
spec: {}配置 WorkloadProfile 自定义资源
如需使用自动扩缩容等高级功能,要创建一个WorkloadProfile并在 Pod Annotation中引用。
apiVersion: tensor-fusion.ai/v1
kind: WorkloadProfile
metadata:
name: example-workload-profile
namespace: 与您的工作负载相同的命名空间
spec:
# AI算力资源需求
resources:
requests:
tflops: "5"
vram: "3Gi"
limits:
tflops: "15"
vram: "3Gi"
# Worker的数量,通常与Deployment的replicas相同
replicas: 1
# 将Pod调度到和GPU Worker同一台GPU服务器提升性能(可选)
isLocalGPU: true
# 指定池名称(可选)
poolName: default-pool
# 指定 QoS 等级(默认为 medium)
qos: medium
# 指定每个Worker的GPU设备数量(可选,默认为1)
gpuCount: 1
# 指定特定GPU/NPU机型(可选)
gpuModel: A100
# 自动扩缩容配置选项(可选)
autoScalingConfig: {}然后在Pod Annotation中引用,若Annotation中存在相同配置,WorkloadProfile优先级较低:
tensor-fusion.ai/workload-profile: example-workload-profile更多内容请参考WorkloadProfile详细配置选项。
TensorFusion 文档