工作负载控制

本页列出了通过 pod 注解或容器环境变量应用的 HAMi 工作负载侧控制。请仅在后端及其文档明确支持该控制的版本中使用它们。

NVIDIA 后端注解

注解作用示例
nvidia.com/use-gpuuuid将调度限制为所列出的 GPU UUID。"GPU-AAA,GPU-BBB"
nvidia.com/nouse-gpuuuid将所列出的 GPU UUID 排除在调度之外。"GPU-AAA,GPU-BBB"
nvidia.com/use-gputype将调度限制为所列出的 GPU 型号名称。"A100,V100"
nvidia.com/nouse-gputype将所列出的 GPU 型号名称排除在外。"1080,2080"
hami.io/node-scheduler-policy选择 GPU 节点调度策略。支持值通常为 binpackspread"binpack"
hami.io/gpu-scheduler-policy选择所选节点上的 GPU 设备调度策略。支持值通常为 binpackspread"spread"
nvidia.com/vgpu-mode当已安装软件包文档说明支持多种模式时,选择 NVIDIA HAMi 设备模式。"hami-core"
WARNING

除非当前 Alauda Build of HAMi 软件包和 release notes 明确支持该行为,否则不要使用诸如 nvidia.com/vgpu-mode 之类的模式特定注解来启用实验性行为。

将工作负载绑定到某个 GPU UUID 时,也会将该工作负载绑定到托管该 GPU 的节点。仅当工作负载确实需要特定设备时才使用此功能。

以下示例将 HAMi 工作负载限制为两个 NVIDIA GPU 型号中的一个,同时排除一个已知的设备 UUID:

metadata:
  annotations:
    nvidia.com/use-gputype: "A100,V100"
    nvidia.com/nouse-gpuuuid: "GPU-EXCLUDED"
spec:
  containers:
    - name: workload
      image: <your-gpu-image>
      resources:
        limits:
          nvidia.com/gpualloc: 1
          nvidia.com/gpucores: 50

在选择多个 UUID 或型号名称时,请使用逗号分隔的值。型号字符串必须与已安装 NVIDIA 栈检测到的值匹配。

仅当单个工作负载需要不同的放置策略时,才覆盖默认的节点和 GPU 策略:

metadata:
  annotations:
    hami.io/node-scheduler-policy: "spread"
    hami.io/gpu-scheduler-policy: "binpack"

Ascend 后端注解

HAMi 会根据为已安装资源类型配置的 commonWord 生成 Ascend UUID 控制:

注解模式作用
hami.io/use-<commonWord>-uuid将分配限制为所列出的 Ascend 设备 UUID。
hami.io/no-use-<commonWord>-uuid将所列出的 Ascend 设备 UUID 排除在外。

例如,请将下面的占位符替换为已安装设备配置中的 commonWord 和资源键:

metadata:
  annotations:
    "hami.io/use-<common-word>-uuid": "<device-uuid>"
spec:
  containers:
    - name: workload
      image: <your-ascend-image>
      resources:
        limits:
          "<ascend-resource-key>": 1

注解后缀必须与已安装设备配置匹配,资源键必须与节点可分配资源匹配。HAMi 会通过诸如 hami.io/node-register-<commonWord> 之类的节点注解发布已注册设备标识符;不要假定它们与每个厂商工具显示的标识符完全相同。

NVIDIA 后端环境变量

环境变量作用默认值
GPU_CORE_UTILIZATION_POLICY控制 HAMi-Core 如何应用请求的 nvidia.com/gpucores 限制。常见值为 defaultforcedisabledefault
CUDA_DISABLE_CONTROL用于调试,禁用容器内的 HAMi-Core 控制。启用后,HAMi-Core 不会应用资源隔离和限制。false

仅将 CUDA_DISABLE_CONTROL 用于诊断。它会改变运行时强制执行行为,不应作为正常生产工作负载模板的一部分。

相关页面