Skip to content

工作负载配置

本文档解释了如何使用Pod Annotation和WorkloadProfile自定义资源为AI应用分配vGPU资源。

添加 Pod 注解

在Pod metadata中可以添加以下注解。

注解参考

基础注解

注解描述示例值
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/gpu-model指定GPU/NPU型号A100 H100 L4 L40s
tensor-fusion.ai/workloadTensorFusionWorkload名称,如果存在,将共享相同的vGPU workerspytorch-example
tensor-fusion.ai/workload-profile引用WorkloadProfile以重用预定义参数default-profile
tensor-fusion.ai/enabled-replicas设置为小于或等于ReplicaSet副本数的任何数字,用于TensorFusion的灰度发布'1','42'
tensor-fusion.ai/auto-requests根据工作负载历史指标自动设置vram和/或tflops requests,详细设置请使用WorkloadProfile自定义资源'true'
tensor-fusion.ai/auto-limits根据工作负载历史指标自动设置vram和/或tflops limits,详细设置请使用WorkloadProfile自定义资源'true'
tensor-fusion.ai/auto-replicas根据工作负载历史指标自动设置vGPU worker replicas,详细设置请使用WorkloadProfile自定义资源'true'
tensor-fusion.ai/standalone-worker-modeis-local-gpu为true时,此选项为false,意味着vGPU worker将被注入到init容器中,而不是运行独立的vGPU worker,以实现最佳性能,代价是用户可能绕过vGPU worker直接使用物理GPU,当is-local-gpu为false时,此选项无效'true'
tensor-fusion.ai/disable-features用于部分禁用tensor fusion内置功能的开关,多个功能可用逗号分隔'gpu-limiter, gpu-opt, mem-manager'

示例配置

yaml
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中引用。

yaml
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优先级较低:

yaml
tensor-fusion.ai/workload-profile: example-workload-profile

更多内容请参考WorkloadProfile详细配置选项