日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes調度GPUs

調度 GPUs

特性狀態(tài): Kubernetes v1.10 [beta]

Kubernetes 支持對節(jié)點上的 AMD 和 NVIDIA GPU (圖形處理單元)進行管理,目前處于實驗狀態(tài)。

本頁介紹用戶如何在不同的 Kubernetes 版本中使用 GPU,以及當前存在的一些限制。

使用設備插件

Kubernetes 實現(xiàn)了設備插件(Device Plugins) 以允許 Pod 訪問類似 GPU 這類特殊的硬件功能特性。

作為集群管理員,你要在節(jié)點上安裝來自對應硬件廠商的 GPU 驅動程序,并運行 來自 GPU 廠商的對應的設備插件。

  • AMD
  • NVIDIA

當以上條件滿足時,Kubernetes 將暴露 ?amd.com/gpu? 或 ?nvidia.com/gpu? 為 可調度的資源。

你可以通過請求 ?.com/gpu? 資源來使用 GPU 設備,就像你為 CPU 和內存所做的那樣。 不過,使用 GPU 時,在如何指定資源需求這個方面還是有一些限制的:

  • GPUs 只能設置在 ?limits ?部分,這意味著:
    • 你可以指定 GPU 的 ?limits ?而不指定其 ?requests?,Kubernetes 將使用限制 值作為默認的請求值;
    • 你可以同時指定 ?limits ?和 ?requests?,不過這兩個值必須相等。
    • 你不可以僅指定 ?requests ?而不指定 ?limits?。
  • 容器(以及 Pod)之間是不共享 GPU 的。GPU 也不可以過量分配(Overcommitting)。
  • 每個容器可以請求一個或者多個 GPU,但是用小數值來請求部分 GPU 是不允許的。
apiVersion: v1
kind: Pod
metadata:
  name: cuda-vector-add
spec:
  restartPolicy: OnFailure
  containers:
    - name: cuda-vector-add
      # https://github.com/kubernetes/kubernetes/blob/v1.7.11/test/images/nvidia-cuda/Dockerfile
      image: "K8S.gcr.io/cuda-vector-add:v0.1"
      resources:
        limits:
          nvidia.com/gpu: 1 # requesting 1 GPU

部署 AMD GPU 設備插件

官方的 AMD GPU 設備插件 有以下要求:

  • Kubernetes 節(jié)點必須預先安裝 AMD GPU 的 Linux 驅動。

如果你的集群已經啟動并且滿足上述要求的話,可以這樣部署 AMD 設備插件:

kubectl create -f https://raw.githubusercontent.com/RadeonOpenCompute/k8s-device-plugin/r1.10/k8s-ds-amdgpu-dp.yaml

你可以到 RadeonOpenCompute/k8s-device-plugin 項目報告有關此設備插件的問題。

部署 NVIDIA GPU 設備插件 

對于 NVIDIA GPUs,目前存在兩種設備插件的實現(xiàn):

官方的 NVIDIA GPU 設備插件 

官方的 NVIDIA GPU 設備插件 有以下要求:

  • Kubernetes 的節(jié)點必須預先安裝了 NVIDIA 驅動
  • Kubernetes 的節(jié)點必須預先安裝 nvidia-docker 2.0
  • Docker 的默認運行時必須設置為 nvidia-container-runtime,而不是 runc
  • NVIDIA 驅動版本 ~= 384.81

如果你的集群已經啟動并且滿足上述要求的話,可以這樣部署 NVIDIA 設備插件:

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta4/nvidia-device-plugin.yml

請到 NVIDIA/k8s-device-plugin項目報告有關此設備插件的問題。

GCE 中使用的 NVIDIA GPU 設備插件

GCE 使用的 NVIDIA GPU 設備插件 并不要求使用 nvidia-docker,并且對于任何實現(xiàn)了 Kubernetes CRI 的容器運行時,都應該能夠使用。這一實現(xiàn)已經在  Container-Optimized OS 上進行了測試,并且在 1.9 版本之后會有對于 Ubuntu 的實驗性代碼。

你可以使用下面的命令來安裝 NVIDIA 驅動以及設備插件:

# 在 COntainer-Optimized OS 上安裝 NVIDIA 驅動:
kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/stable/daemonset.yaml

# 在 Ubuntu 上安裝 NVIDIA 驅動 (實驗性質):
kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/stable/nvidia-driver-installer/ubuntu/daemonset.yaml

# 安裝設備插件:
kubectl create -f https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.12/cluster/addons/device-plugins/nvidia-gpu/daemonset.yaml

請到 GoogleCloudPlatform/container-engine-accelerators 報告有關此設備插件以及安裝方法的問題。

關于如何在 GKE 上使用 NVIDIA GPUs,Google 也提供自己的指令。

集群內存在不同類型的 GPU 

如果集群內部的不同節(jié)點上有不同類型的 NVIDIA GPU,那么你可以使用 節(jié)點標簽和節(jié)點選擇器 來將 pod 調度到合適的節(jié)點上。

例如:

# 為你的節(jié)點加上它們所擁有的加速器類型的標簽
kubectl label nodes  accelerator=nvidia-tesla-k80
kubectl label nodes  accelerator=nvidia-tesla-p100

自動節(jié)點標簽

如果你在使用 AMD GPUs,你可以部署 Node Labeller, 它是一個 控制器, 會自動給節(jié)點打上 GPU 屬性標簽。目前支持的屬性:

  • 設備 ID (-device-id)
  • VRAM 大小 (-vram)
  • SIMD 數量(-simd-count)
  • 計算單位數量(-cu-count)
  • 固件和特性版本 (-firmware)
  • GPU 系列,兩個字母的首字母縮寫(-family)
    • SI - Southern Islands
    • CI - Sea Islands
    • KV - Kaveri
    • VI - Volcanic Islands
    • CZ - Carrizo
    • AI - Arctic Islands
    • RV - Raven

示例:

kubectl describe node cluster-node-23
    Name:               cluster-node-23
    Roles:              
    Labels:             beta.amd.com/gpu.cu-count.64=1
                        beta.amd.com/gpu.device-id.6860=1
                        beta.amd.com/gpu.family.AI=1
                        beta.amd.com/gpu.simd-count.256=1
                        beta.amd.com/gpu.vram.16G=1
                        beta.kubernetes.io/arch=amd64
                        beta.kubernetes.io/os=linux
                        kubernetes.io/hostname=cluster-node-23
    Annotations:        kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                        node.alpha.kubernetes.io/ttl: 0
    ......

使用了 Node Labeller 的時候,你可以在 Pod 的規(guī)約中指定 GPU 的類型:

apiVersion: v1
kind: Pod
metadata:
  name: cuda-vector-add
spec:
  restartPolicy: OnFailure
  containers:
    - name: cuda-vector-add
      # https://github.com/kubernetes/kubernetes/blob/v1.7.11/test/images/nvidia-cuda/Dockerfile
      image: "k8s.gcr.io/cuda-vector-add:v0.1"
      resources:
        limits:
          nvidia.com/gpu: 1
  nodeSelector:
    accelerator: nvidia-tesla-p100 # or nvidia-tesla-k80 etc.

這能夠保證 Pod 能夠被調度到你所指定類型的 GPU 的節(jié)點上去。


文章標題:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes調度GPUs
文章來源:http://www.5511xx.com/article/djhopji.html