Pages - Menu

2021年2月26日 星期五

[GCP]GKE上掛載GPU

前言

接了一個工作,要幫人在GKE上面生一個能夠使用GPU的叢集,並且佈署。


正文

要使用Google上面的 GPU,GKE版本要到1.9以上, 節點池要到1.11.3以上。 另外,GPU只支援通用N1的機器支援,其他細項 請詳閱 Google 運行 GPU

可用性建議先用 gcloud compute accelerator-types list 看一下你的區域支援哪些顯卡, 像我這邊的是 asia-east1-a ,就只支援特定顯卡。

(fig. 1)

安裝 NVIDIA GPU 設備驅動程序,這邊基本上都沒問題。

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml

這主要會裝在每個節點上的Daemonset,當pod起來後,會自動在pod上面安裝驅動程式。 所以必須檢查一下,看pod是否有起來。

(fig. 2)

也可以執行

kubectl describe node -l cloud.google.com/gke-accelerator | grep nvidia.com/gpu 

看顯卡的使用情況

當執行下一步驟配置 Pod 以使用 GPU時,這邊就會有問題了。 他的image(nvidia/cuda:10.0-runtime-ubuntu18.04)會無法啟動,一直在crashLoopbackoff。

更新 在12/24有開工單詢問,他們那邊給出了解法。後續應該會改他們的文件。

 (fig.4)

 google的回覆如下

按照文檔簡單使用“command: ["/bin/bash"]”測試。此時bash執行後立刻退出,故pod被重啟。 你們可以嘗試使用以下死循環避免這個問題:

        command: [ "/bin/sh", "-c", "--" ]
        args: [ "while true; do sleep 600; done;" ]

所以,可以改成下面的YAML,就能正常執行了。

以下也可以使用 最後的解法是,不要用他的image。 完整 YAML

apiVersion: v1

kind: Pod

metadata:

  name: gpu-pod

spec:

  containers:

  - name: digits-container

    image: nvidia/cuda:10.0-runtime-ubuntu18.04

    command: [ "/bin/sh", "-c", "--" ]

    args: [ "while true; do sleep 600; done;" ]

    resources:

      limits:

        nvidia.com/gpu: 1

佈署完後,執行 kubectl exec gpu-pod -- nvidia-smi 這段話的意思是,在gpu-pod裡面執行 nvidia-smi的指令 正常的話,會顯示如下 

(Fig. 3)

下面參考的文件,可以看看,但目前只需要做到上面那段『安裝 NVIDIA GPU 設備驅動程序』的指令即可 ref. CrashLoopBackOff message wen running GPU Jobs example and others GPU Sharing on GKE DaemonSet Install GPU in GKE(Google Kubernetes Engine)(中)

查詢各有哪些VM使用GPU的指令 gcloud compute instances list --format="table(guestAccelerators.acceleratorCount, name)"

沒有留言:

張貼留言