日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何簡化Kubernetes中的GPU管理

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Pramod Ramarao ? 2022-04-27 14:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在過去的幾年里, NVIDIA 以各種方式利用 GPU 容器來測試、開發(fā)和大規(guī)模運行生產(chǎn)中的 AI 工作負載。為 NVIDIA GPUs 優(yōu)化的容器和 DGX 和 OEM NGC Ready 服務(wù)器等系統(tǒng)可作為 NGC 的一部分提供。

但是用 GPUs 可靠地提供服務(wù)器并擴展人工智能應(yīng)用程序可能會很棘手。 Kubernetes 憑借其豐富的應(yīng)用程序可擴展性和高性能特性迅速構(gòu)建在其平臺上。

Kubernetes 通過設(shè)備插件 框架 提供對特殊硬件資源的訪問,如 NVIDIA GPUs 、 NICs 、 Infiniband 適配器和其他設(shè)備。但是,使用這些硬件資源配置和管理節(jié)點需要配置多個軟件組件,例如驅(qū)動程序、容器運行時或其他庫,這些組件很難并且容易出錯。

Kubernetes 中的 運營商框架 采用操作業(yè)務(wù)邏輯,并允許使用標準的 Kubernetes API 和 kubectl 創(chuàng)建用于在 Kubernetes 內(nèi)部署應(yīng)用程序的自動化框架。這里介紹的 NVIDIA GPU 操作程序基于操作員框架,并自動管理所有 NVIDIA 軟件在 Kubernetes 中提供 GPUs 所需的組件。 NVIDIA 、 redhat 和社區(qū)中的其他人合作創(chuàng)建了 GPU 操作符。 GPU 運營商是 NVIDIA EGX 軟件定義平臺的一個重要組成部分,該平臺旨在使大規(guī)?;旌显坪瓦吘壊僮鞒蔀榭赡芎透咝?。

NVIDIA GPU 操作員

要在 Kubernetes 集群中配置 GPU 個工作節(jié)點,需要以下 NVIDIA 軟件組件 – 驅(qū)動程序、容器運行時、設(shè)備插件和監(jiān)控。如圖 1 所示,這些組件需要在集群可用的 GPU 資源之前手動配置,并且在集群運行期間也需要進行管理。 GPU 運營商通過將所有組件打包并使用標準 Kubernetes api 自動化和管理這些組件(包括版本控制和升級),簡化了組件的初始部署和管理。 GPU 操作符是完全開源的,可以在我們的 GitHub 庫 上使用。

pYYBAGJo6O6Af7zrAABTvi4oosg452.png

圖 1 手動安裝(某些組件需要安裝在裸金屬上)與 GPU 操作員使用全集裝箱化組件進行自動化的對比

操作員狀態(tài)機

GPU 運算符基于 Kubernetes 中的 運營商框架 。操作符被構(gòu)建為一個新的自定義資源定義( CRD ) API ,并帶有相應(yīng)的控制器。該操作符在自己的命名空間(稱為“ GPU -operator ”)中運行,底層的 NVIDIA 組件在單獨的命名空間中編排(稱為“ GPU -operator resources ”)。與 Kubernetes 中的任何標準操作符一樣,控制器監(jiān)視名稱空間的更改,并使用協(xié)調(diào)循環(huán)(通過 reconcile ()函數(shù))來實現(xiàn)一個簡單的狀態(tài)機來啟動每個 NVIDIA 組件。狀態(tài)機在每個狀態(tài)下都包含一個驗證步驟,如果失敗,協(xié)調(diào)循環(huán)將退出并返回錯誤。如圖 2 所示。

poYBAGJo6PSAdKLoAABfc5b3gPQ207.png

圖 2 GPU 操作員狀態(tài)機

GPU 運算符應(yīng)該在配備了 GPUs 的節(jié)點上運行。為了確定哪些節(jié)點具有 GPUs ,操作符依賴于 Kubernetes 中的 節(jié)點功能發(fā)現(xiàn) ( NFD )。 NFD worker 檢測節(jié)點上的各種硬件功能–例如, PCIe 設(shè)備標識、內(nèi)核版本、內(nèi)存和其他屬性。然后它使用節(jié)點標簽向 Kubernetes 發(fā)布這些特性。然后, GPU 操作員使用這些節(jié)點標簽(通過檢查 PCIe 設(shè)備 id )來確定是否應(yīng)在節(jié)點上配置 NVIDIA 軟件組件。在這個初始版本中, GPU 操作員當(dāng)前部署了 NVIDIA 容器運行時 、 NVIDIA 集裝箱驅(qū)動程序 和 NVIDIA 調(diào)速器設(shè)備插件 。未來,運營商還將管理其他組件,如 基于 DCGM 監(jiān)控。

讓我們簡單地看一下不同的狀態(tài)。

狀態(tài)容器工具包

此狀態(tài)將部署一個守護進程,該守護進程通過 容器 在主機系統(tǒng)上安裝 NVIDIA 容器運行時。守護進程使用 NFD 標簽中的 PCIe 設(shè)備 id ,僅在具有 GPU 資源的節(jié)點上安裝運行時。 PCIe 設(shè)備 id 0x10DE 是 NVIDIA 的供應(yīng)商 id 。

nodeSelector: feature.node.kubernetes.io/pci-10de.present: “true”

狀態(tài)驅(qū)動程序

此狀態(tài)將部署一個帶有容器化的 NVIDIA 驅(qū)動程序的守護進程。您可以閱讀有關(guān)驅(qū)動程序容器 在這里 的更多信息。在啟動時,驅(qū)動程序容器可以構(gòu)建最終的 NVIDIA 內(nèi)核模塊,并將它們加載到主機上的 Linux 內(nèi)核中,以準備運行 CUDA 應(yīng)用程序并在后臺運行。驅(qū)動程序容器包括應(yīng)用程序所需的驅(qū)動程序的用戶模式組件。同樣,守護進程使用 NFD 標簽來選擇要在其上部署驅(qū)動程序容器的節(jié)點。

狀態(tài)驅(qū)動程序驗證

如上所述,操作員狀態(tài)機包括驗證步驟,以確保組件已成功啟動。操作員調(diào)度一個簡單的 CUDA 工作負載(在本例中是一個 vectorAdd 示例)。如果應(yīng)用程序運行時沒有任何錯誤,則容器狀態(tài)為“成功”。

狀態(tài)設(shè)備插件

此狀態(tài)為 NVIDIA Kubernetes 設(shè)備插件部署守護進程。它將節(jié)點上的 GPUs 列表注冊到 kubelet 中,這樣就可以將 GPUs 分配給 CUDA 個工作負載。

狀態(tài)設(shè)備插件驗證

在這種狀態(tài)下,驗證容器請求 Kubernetes 分配 GPU ,并運行一個簡單的 CUDA 工作負載(如上所述),以檢查設(shè)備插件是否注冊了資源列表以及工作負載是否成功運行(即容器狀態(tài)為“ Success ”)。

為了簡化 GPU 操作員本身的部署, NVIDIA 提供了一個舵圖。用戶可以使用驅(qū)動程序自定義的插件版本(值。 yaml )在舵圖上。然后,操作員使用模板值在節(jié)點上提供所需的軟件版本。這為用戶提供了一個參數(shù)化級別。

運行 GPU 運算符

讓我們快速了解一下如何部署 GPU 操作符并運行 CUDA 工作負載。在這一點上,我們假設(shè)您有一個 Kubernetes 集群在運行(即主控制平面可用,工作節(jié)點已經(jīng)加入集群)。為了讓這篇博文更簡單,我們將使用一個運行 ubuntu18.04 。 3lts 的 NVIDIA Tesla T4GPU 的單節(jié)點 Kubernetes 集群。

GPU 操作符本身并沒有解決 Kubernetes 集群的設(shè)置問題,目前有很多解決方案 可獲得的 可以用于此目的。 NVIDIA 正在與不同的合作伙伴合作,將 GPU 運營商整合到他們管理 GPUs 的解決方案中。

讓我們驗證一下我們的 Kubernetes 集群(以及帶有 Tiller 的 Helm 設(shè)置)是否可以運行。請注意,雖然節(jié)點有一個 GPU ,但節(jié)點上沒有部署 NVIDIA 軟件組件–我們將使用 GPU 操作符來配置組件。

$ sudo kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-6fcc7d5fd6-n2dnt 1/1 Running 0 6m45s
kube-system calico-node-77hjv 1/1 Running 0 6m45s
kube-system coredns-5c98db65d4-cg6st 1/1 Running 0 7m10s
kube-system coredns-5c98db65d4-kfl6v 1/1 Running 0 7m10s
kube-system etcd-ip-172-31-5-174 1/1 Running 0 6m5s
kube-system kube-apiserver-ip-172-31-5-174 1/1 Running 0 6m11s
kube-system kube-controller-manager-ip-172-31-5-174 1/1 Running 0 6m26s
kube-system kube-proxy-mbnsg 1/1 Running 0 7m10s
kube-system kube-scheduler-ip-172-31-5-174 1/1 Running 0 6m18s
kube-system tiller-deploy-8557598fbc-hrrhd 1/1 Running 0 21s

一個單節(jié)點 Kubernetes 集群(主節(jié)點未被污染,因此可以運行工作負載)

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-31-5-174 Ready master 3m2s v1.15.3

我們可以看到節(jié)點有一個 NVIDIA GPU ,但沒有安裝驅(qū)動程序或其他軟件工具。

$ lspci | grep -i nvidia
00:1e.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1) $ nvidia-smi
nvidia-smi: command not found

作為先決條件,讓我們確保在系統(tǒng)上設(shè)置了一些內(nèi)核模塊。這些模塊的 NVIDIA 依賴于某些驅(qū)動程序。

$ sudo modprobe -a i2c_core ipmi_msghandler

現(xiàn)在,讓我們繼續(xù)部署 GPU 操作符。為此,我們將使用 NGC 提供的舵面圖。首先,添加 Helm 回購:

$ helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
"nvidia" has been added to your repositories $ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "nvidia" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.

然后用圖表部署操作員

$ helm install --devel nvidia/gpu-operator -n test-operator --wait
$ kubectl apply -f https://raw.githubusercontent.com/NVIDIA/gpu-operator/master/manifests/cr/sro_cr_sched_none.yaml
specialresource.sro.openshift.io/gpu created

我們可以驗證 GPU 操作符是否在它自己的命名空間中運行,并且正在監(jiān)視另一個命名空間中的組件。

$ kubectl get pods -n gpu-operator
NAME READY STATUS RESTARTS AGE
special-resource-operator-7654cd5d88-w5jbf 1/1 Running 0 98s

幾分鐘后, GPU 操作員將部署所有 NVIDIA 軟件組件。輸出還顯示了作為 GPU 操作符狀態(tài)機一部分運行的驗證容器。示例 CUDA 容器( vectorAdd )已作為狀態(tài)機的一部分成功完成。

$ kubectl get pods -n gpu-operator-resources
NAME READY STATUS RESTARTS AGE
nvidia-container-toolkit-daemonset-wwzfn 1/1 Running 0 3m36s
nvidia-device-plugin-daemonset-pwfq7 1/1 Running 0 101s
nvidia-device-plugin-validation 0/1 Completed 0 92s
nvidia-driver-daemonset-skpn7 1/1 Running 0 3m27s
nvidia-driver-validation 0/1 Completed 0 3m $ kubectl -n gpu-operator-resources logs -f nvidia-device-plugin-validation
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

我們還可以看到 NFD 用不同的屬性標記了節(jié)點。已為 NVIDIA GPU 設(shè)置了具有 PCIe 設(shè)備 id 0x10DE 的節(jié)點標簽。

$ kubectl -n node-feature-discovery logs -f nfd-worker-zsjsp
2019/10/21 00:46:25 cpu-cpuid.AVX512F = true
2019/10/21 00:46:25 cpu-hardware_multithreading = true
2019/10/21 00:46:25 cpu-cpuid.AVX = true
2019/10/21 00:46:25 cpu-cpuid.AVX512VL = true
2019/10/21 00:46:25 cpu-cpuid.AVX512CD = true
2019/10/21 00:46:25 cpu-cpuid.AVX2 = true
2019/10/21 00:46:25 cpu-cpuid.FMA3 = true
2019/10/21 00:46:25 cpu-cpuid.ADX = true
2019/10/21 00:46:25 cpu-cpuid.AVX512DQ = true
2019/10/21 00:46:25 cpu-cpuid.AESNI = true
2019/10/21 00:46:25 cpu-cpuid.AVX512BW = true
2019/10/21 00:46:25 cpu-cpuid.MPX = true
2019/10/21 00:46:25 kernel-config.NO_HZ = true
2019/10/21 00:46:25 kernel-config.NO_HZ_IDLE = true
2019/10/21 00:46:25 kernel-version.full = 4.15.0-1051-aws
2019/10/21 00:46:25 kernel-version.major = 4
2019/10/21 00:46:25 kernel-version.minor = 15
2019/10/21 00:46:25 kernel-version.revision = 0
2019/10/21 00:46:25 pci-10de.present = true
2019/10/21 00:46:25 pci-1d0f.present = true
2019/10/21 00:46:25 storage-nonrotationaldisk = true
2019/10/21 00:46:25 system-os_release.ID = ubuntu
2019/10/21 00:46:25 system-os_release.VERSION_ID = 18.04
2019/10/21 00:46:25 system-os_release.VERSION_ID.major = 18
2019/10/21 00:46:25 system-os_release.VERSION_ID.minor = 04

讓我們啟動一個 TensorFlow 筆記本。 GitHub repo 上有一個示例清單,讓我們使用它

$ kubectl apply -f https://nvidia.github.io/gpu-operator/notebook-example.yml

一旦 pod 被創(chuàng)建,我們就可以使用令牌在瀏覽器窗口中查看筆記本。

$ kubectl logs -f tf-notebook
[C 02:52:44.849 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=b7881f90dfb6c8c5892cff7e8232684f201c846c48da81c9

我們可以使用端口轉(zhuǎn)發(fā)或使用節(jié)點端口 30001 到達容器。使用上面日志中的 URL 在瀏覽器中打開 Jupyter 筆記本。

$ kubectl port-forward tf-notebook 8888:8888

現(xiàn)在您可以看到 Jupyter 主頁并繼續(xù)您的工作流 – 所有這些都在 Kubernetes 中運行,并通過 GPUs 加速!

結(jié)論

如果您有任何問題或意見,請在下面的評論部分留下。對于有關(guān)安裝和使用的技術(shù)問題,我們建議在 GitHub 上提交一個問題。

關(guān)于作者

Pramod Ramarao 是 NVIDIA 加速計算的產(chǎn)品經(jīng)理。他領(lǐng)導(dǎo) CUDA 平臺和數(shù)據(jù)中心軟件的產(chǎn)品管理,包括容器技術(shù)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5708

    瀏覽量

    110155
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    5297

    瀏覽量

    136127
  • CUDA
    +關(guān)注

    關(guān)注

    0

    文章

    128

    瀏覽量

    14559
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Kubernetes Pod調(diào)度策略原理與落地指南

    Pod調(diào)度是Kubernetes的核心機制之一,決定了Pod最終運行在哪個節(jié)點上。默認調(diào)度器kube-scheduler通過一系列預(yù)選(Filtering)和優(yōu)選(Scoring)算法完成調(diào)度決策,但默認行為在生產(chǎn)環(huán)境往往不夠用。
    的頭像 發(fā)表于 02-27 11:08 ?351次閱讀

    Kubernetes存儲管理功能的落地實踐

    容器本身是無狀態(tài)的,Pod重啟后容器內(nèi)的數(shù)據(jù)全部丟失。數(shù)據(jù)庫、消息隊列、文件存儲這類有狀態(tài)服務(wù)跑在K8s上,必須解決持久化存儲問題。Kubernetes通過PersistentVolume(PV)、PersistentVolumeClaim(PVC)和StorageClass三層抽象來
    的頭像 發(fā)表于 02-26 14:45 ?434次閱讀

    KubePi:開源Kubernetes可視化管理面板,讓集群管理如此簡單

    的開源Kubernetes可視化管理面板,正以其簡潔的設(shè)計與強大的功能,讓集群管理變得前所未有的簡單。 一、KubePi是什么?為什么你需要它? 1.1 誕生背景:簡化
    發(fā)表于 02-11 12:53

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過調(diào)用Kubernetes API Server實現(xiàn)對集群資源的全面管理。在
    的頭像 發(fā)表于 02-02 16:40 ?640次閱讀

    在Python借助NVIDIA CUDA Tile簡化GPU編程

    NVIDIA CUDA 13.1 版本新增了基于 Tile 的GPU 編程模式。它是自 CUDA 發(fā)明以來 GPU 編程最核心的更新之一。借助 GPU tile kernels,可以用比 SIMT
    的頭像 發(fā)表于 12-13 10:12 ?1494次閱讀
    在Python<b class='flag-5'>中</b>借助NVIDIA CUDA Tile<b class='flag-5'>簡化</b><b class='flag-5'>GPU</b>編程

    汽車GPU是如何使用的?

    。我們從GPU在汽車的應(yīng)用場景及其具體需求出發(fā),深入探討了GPU對汽車行業(yè)發(fā)展的影響,并對未來趨勢提出了關(guān)鍵判斷。1、GPU計算在汽車
    的頭像 發(fā)表于 12-03 14:45 ?9733次閱讀
    汽車<b class='flag-5'>中</b>的<b class='flag-5'>GPU</b>是如何使用的?

    香港服務(wù)器支持Docker和Kubernetes嗎?

    在云原生技術(shù)成為主流的今天,Docker和Kubernetes(K8s)已成為現(xiàn)代化應(yīng)用開發(fā)和部署的事實標準。對于選擇香港服務(wù)器的開發(fā)者與企業(yè)而言,一個核心問題是:香港服務(wù)器能否完美支持Docker
    的頭像 發(fā)表于 10-21 15:47 ?966次閱讀

    借助京東AI言犀提升Kubernetes集群巡檢的效率和準確性

    介紹 目前k8s-cluster-inspector組件可以自動化完成Kubernetes集群巡檢,并在巡檢結(jié)果給出當(dāng)前集群存在的問題,問題分級,問題類型,問題解決方法。 示例巡檢數(shù)據(jù)結(jié)構(gòu)如下
    的頭像 發(fā)表于 09-15 16:56 ?666次閱讀
    借助京東AI言犀提升<b class='flag-5'>Kubernetes</b>集群巡檢的效率和準確性

    Kubernetes安全加固的核心技術(shù)

    在生產(chǎn)環(huán)境,Kubernetes集群的安全性直接關(guān)系到企業(yè)數(shù)據(jù)安全和業(yè)務(wù)穩(wěn)定性。本文將從實戰(zhàn)角度,帶你掌握K8s安全加固的核心技術(shù)。
    的頭像 發(fā)表于 08-18 11:18 ?973次閱讀

    高效管理Kubernetes集群的實用技巧

    作為一名經(jīng)驗豐富的運維工程師,我深知在日常的Kubernetes集群管理,熟練掌握kubectl命令是提升工作效率的關(guān)鍵。今天,我將分享15個經(jīng)過實戰(zhàn)檢驗的kubectl實用技巧,幫助你像藝術(shù)家一樣優(yōu)雅地
    的頭像 發(fā)表于 08-13 15:57 ?1157次閱讀

    aicube的n卡gpu索引該如何添加?

    請問有人知道aicube怎樣才能讀取n卡的gpu索引呢,我已經(jīng)安裝了cuda和cudnn,在全局的py里添加了torch,能夠調(diào)用gpu,當(dāng)還是只能看到默認的gpu0,顯示不了gpu1
    發(fā)表于 07-25 08:18

    生產(chǎn)環(huán)境Kubernetes容器安全的最佳實踐

    隨著容器化技術(shù)的快速發(fā)展,Kubernetes已成為企業(yè)級容器編排的首選平臺。然而,在享受Kubernetes帶來的便利性和可擴展性的同時,安全問題也日益凸顯。本文將從運維工程師的角度,深入探討生產(chǎn)環(huán)境
    的頭像 發(fā)表于 07-14 11:09 ?976次閱讀

    樹莓派部署 Kubernetes:通過 UDM Pro 實現(xiàn) BGP 負載均衡!

    最近,我將家庭實驗室的架構(gòu)核心切換為一組樹莓派。盡管在樹莓派上運行的Kubernetes發(fā)行版眾多,但在資源受限的設(shè)備上運行Kubernetes時,控制平面的開銷是一個常見挑戰(zhàn)
    的頭像 發(fā)表于 06-25 18:00 ?1118次閱讀
    樹莓派部署 <b class='flag-5'>Kubernetes</b>:通過 UDM Pro 實現(xiàn) BGP 負載均衡!

    詳解Kubernetes的Pod調(diào)度親和性

    Kubernetes(K8s),Pod 調(diào)度親和性(Affinity) 是一種高級調(diào)度策略,用于控制 Pod 與節(jié)點(Node)或其他 Pod 之間的關(guān)聯(lián)(親和)或反關(guān)聯(lián)(反親和)關(guān)系。通過親和性規(guī)則,管理員可以更精細地控
    的頭像 發(fā)表于 06-07 13:56 ?1123次閱讀
    常熟市| 璧山县| 兰州市| 江门市| 沈阳市| 永定县| 陇川县| 苍梧县| 东乌珠穆沁旗| 长春市| 常州市| 辛集市| 库尔勒市| 赤峰市| 锡林浩特市| 肃南| 尉氏县| 额尔古纳市| 友谊县| 类乌齐县| 长沙县| 姜堰市| 武宣县| 苏尼特右旗| 隆子县| 岢岚县| 汕头市| 郸城县| 东丰县| 子洲县| 华容县| 漳浦县| 道真| 海丰县| 航空| 三明市| 道孚县| 安溪县| 五台县| 中宁县| 普宁市|