创建仅 CPU 和 GPU 加速的 Profile

在生产级 AI 平台中,您通常需要为不同类型的机器学习工作负载提供服务。例如,传统机器学习模型(如 scikit-learn 或 XGBoost)或简单的数据处理任务只需要 CPU 资源,而大语言模型(LLMs)或复杂的深度学习模型则需要 GPU 加速。

通过为仅 CPU 和 GPU 加速工作负载创建不同的 Hardware Profile,您可以有效隔离这两类服务,并防止轻量级 CPU 模型无意中消耗昂贵的 GPU 资源。

示例 1:仅 CPU 的 Hardware Profile

仅 CPU 的 profile 不包含任何加速器标识符(例如 nvidia.com/gpu),并且严格依赖 cpumemory 标识符。

创建仅 CPU 的 profile 时,请确保:

  1. 完全排除 Accelerator 资源类型。
  2. Node Selector 不要选择任何特定于 GPU 的节点。
  3. 名称和描述清楚表明此 profile 面向标准 ML 推理或轻量级模型。

以下是仅 CPU 的 hardware profile 示例:

apiVersion: infrastructure.opendatahub.io/v1alpha1
kind: HardwareProfile
metadata:
  name: standard-cpu-profile
  namespace: kube-public
spec:
  # Do not include nvidia.com/gpu
  identifiers:
    - identifier: "cpu"
      displayName: "CPU"
      minCount: "1"
      maxCount: "8"
      defaultCount: "2"
      resourceType: CPU
    - identifier: "memory"
      displayName: "Memory"
      minCount: "2Gi"
      maxCount: "16Gi"
      defaultCount: "4Gi"
      resourceType: Memory
  # Standard CPU nodes
  scheduling:
    type: Node
    node:
      nodeSelector:
        node-role.kubernetes.io/worker: "true"

示例 2:GPU 加速的 Hardware Profile

GPU 加速的 profile 会显式要求 nvidia.com/gpu 标识符,从而确保任何选择此 profile 的工作负载都会分配到物理 GPU 资源。

创建 GPU 加速的 profile 时:

  1. 包含特定加速器的标识符(例如 nvidia.com/gpu)。
  2. 如果您的 GPU 节点带有污点,请添加相应的 Tolerations(例如 nvidia.com/gpu:NoSchedule)。
  3. 可选地添加 Node Selector,以选择特定的 GPU 架构(例如 accelerator: nvidia-t4)。

以下是 GPU 加速的 hardware profile 示例:

apiVersion: infrastructure.opendatahub.io/v1alpha1
kind: HardwareProfile
metadata:
  name: gpu-t4-profile
  namespace: kube-public
spec:
  identifiers:
    # Crucially include the GPU resource
    - identifier: "nvidia.com/gpu"
      displayName: "GPU"
      minCount: "1"
      maxCount: "4"
      defaultCount: "1"
      resourceType: Accelerator
    - identifier: "cpu"
      displayName: "CPU"
      minCount: "4"
      maxCount: "16"
      defaultCount: "8"
      resourceType: CPU
    - identifier: "memory"
      displayName: "Memory"
      minCount: "16Gi"
      maxCount: "64Gi"
      defaultCount: "32Gi"
      resourceType: Memory
  scheduling:
    type: Node
    node:
      nodeSelector:
        accelerator: nvidia-t4
      tolerations:
        - key: "nvidia.com/gpu"
          operator: "Exists"
          effect: "NoSchedule"

通过提供这两种明显不同的 profile,平台管理员可以确保 Data Scientist 获得其所需的准确环境,而不会将高价值的计算资源浪费在简单任务上。