目录

Kubernetes-v1.13对GPU的支持

目录

概述

Kubernetes 是从 v1.6 开始实验性地支持 Nvidia GPU 的资源调度的。而在 v1.9 开始对 AMD GPU 也开始支持了。现在 v1.13 对 GPU 的支持模式,是从 v1.8 开始通过 Device Plugin 来实现的。

鉴于 Kubernetes 支持越来越多不同类型硬件的资源管理和调度了,所以抽象一个 Device Plugin 是非常合理的,现在比如 InfiniBand 等支持 RDMA 协议的高性能网卡也可以通过 Device Plugin 来实现调度了,作为深度学习的基础设施,这是非常有利的。

关于 Nvidia GPU 的调度,网上的资料比价多,而实际上,目前大部分公司的 GPU 设备也都是来自 Nvidia 的 GPU,所以本文就 AMD GPU 简单介绍一下。

https://github.com/RadeonOpenCompute/k8s-device-plugin

关于 ROCm,可以参考官网,简单解释一下,就是一个通用的多 GPU 计算平台,抽象的这一层,可以让用户无需关注硬件是使用 AMD 哪种制式的 GPU。

  1. 服务器可以支持ROCm
  2. kubeadm部署的集群是可以的
  3. 服务器安装了ROCm内核和最新的AMD GPU Linux的驱动
  4. --allow-privileged=true开启

相对于 Nvidia GPU 的资源名 nvidia.com/gpu,AMD GPU 的资源名是 amd.com/gpu

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
apiVersion: v1
kind: Pod
metadata:
  name: alexnet-tf-gpu-pod
  labels:
    purpose: demo-tf-amdgpu
spec:
  containers:
    - name: alexnet-tf-gpu-container
      image: rocm/tensorflow:latest
      workingDir: /root
      env:
      - name: HIP_VISIBLE_DEVICES
        value: "0" # # 0,1,2,...,n for running on GPU and select the GPUs, -1 for running on CPU 
      command: ["/bin/bash", "-c", "--"]
      args: ["python3 benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --model=alexnet; trap : TERM INT; sleep infinity & wait"]
      resources:
        limits:
          amd.com/gpu: 1 # requesting a GPU
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。