真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí)

本篇文章為大家展示了如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站的開(kāi)發(fā),更需要了解用戶,從用戶角度來(lái)建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。成都創(chuàng)新互聯(lián)公司多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見(jiàn)的多,溝通容易、能幫助客戶提出的運(yùn)營(yíng)建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇成都創(chuàng)新互聯(lián)公司,不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來(lái)訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。

背景介紹

隨著 AI 技術(shù)的快速發(fā)展,越來(lái)越多的企業(yè)開(kāi)始將 AI 技術(shù)應(yīng)用到自身業(yè)務(wù)之中。目前,云端 AI 算力主要由三類 AI 加速器來(lái)提供:GPU,F(xiàn)PGA 和 AI ASIC 芯片。這些加速器的優(yōu)點(diǎn)是性能非常高,缺點(diǎn)是 成本高昂,缺少異構(gòu)加速管理和調(diào)度。大部分企業(yè)因無(wú)法構(gòu)建高效的加速器資源池,而不得不獨(dú)占式地使用這些昂貴的加速器資源,導(dǎo)致 資源利用率低,成本高。

以 GPU 為例,通過(guò)創(chuàng)新的 Bitfusion GPU 虛擬化技術(shù),能夠幫助用戶無(wú)需任務(wù)修改就能透明地共享和使用數(shù)據(jù)中心內(nèi)任何服務(wù)器之上的 AI 加速器,不但能夠幫助用戶提高資源利用率,而且可以 極大便利 AI 應(yīng)用的部署,構(gòu)建數(shù)據(jù)中心級(jí)的 AI 加速器資源池。

Bitfusion通過(guò)提供遠(yuǎn)程GPU池來(lái)幫助解決這些問(wèn)題。Bitfusion使GPU成為頭等公民,可以像傳統(tǒng)的計(jì)算資源一樣抽象、分區(qū)、自動(dòng)化和共享。另一方面,Kubernetes已經(jīng)成為部署和管理機(jī)器學(xué)習(xí)負(fù)載的平臺(tái)。

下面通過(guò)介紹使用最新開(kāi)發(fā)的Bitfusion Device Plugin,如何快捷在Kubernetes上使用Bitfusion提供的GPU資源池進(jìn)TensorFlow行流行的TensorFlow深度學(xué)習(xí)開(kāi)發(fā)。

概念理解

先來(lái)簡(jiǎn)要介紹一下kubernetes這兩個(gè)模塊:

Extended Resource: 一種自定義資源擴(kuò)展的方式,將資源的名稱和總數(shù)量上報(bào)給API server,而Scheduler則根據(jù)使用該資源pod的創(chuàng)建和刪除,做資源可用量的加減法,進(jìn)而在調(diào)度時(shí)刻判斷是否有滿足資源條件的節(jié)點(diǎn)。目前這里的Extended Resource的增加和減少單元必須是整數(shù),比如你可以分配1個(gè)GPU,但是不能分配0.5個(gè)GPU。該功能由于只是替代了Opaque integer resources,做了些更名的工作,所以在1.8已經(jīng)是穩(wěn)定的狀態(tài)了。

Device Plugin:通過(guò)提供通用設(shè)備插件機(jī)制和標(biāo)準(zhǔn)的設(shè)備API接口。這樣設(shè)備廠商只需要實(shí)現(xiàn)相應(yīng)的API接口,無(wú)需修改Kubelet主干代碼,就可以實(shí)現(xiàn)支持GPU、FPGA、高性能 NIC、InfiniBand 等各種設(shè)備的擴(kuò)展。該能力在Kubernetes 1.8和1.9版本處于Alpha版本,在1.10會(huì)進(jìn)入Beta版本。需要通過(guò)feature gate打開(kāi), 即配置 --feature-gates=DevicePlugins=true

如圖所示,目前我們的處理層在通過(guò)device plugin控制單反方面做pod的資源控制,然后由pod內(nèi)的Bitfusion Client 和 Bitfusion Server 在CUDA driver級(jí)別進(jìn)行交互,在BitfusionClient的軟件堆棧中有一個(gè)CUDA driver的代理,通過(guò)它截獲Client上的所有CUDA服務(wù)訪問(wèn),通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)和服務(wù)請(qǐng)求發(fā)送給BitfusionServer進(jìn)行處理。

如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí)

Bitfusion Device Plugin安裝及使用步驟
以下例子以Kubernetes v1.17.5和Ubuntu 18.04作為安裝環(huán)境,闡述Bitfusion Device Plugin搭建TensorFlow環(huán)境進(jìn)行Benchmarks測(cè)試。目前項(xiàng)目及容器鏡像托管在研發(fā)內(nèi)部服務(wù)器。如無(wú)法訪問(wèn),可通過(guò)VMware客戶代表聯(lián)系我們。

首先我們下載Bitfusion Device Plugin項(xiàng)目

目前項(xiàng)目的代碼以及bitfusion-base暫時(shí)未公開(kāi),可通過(guò)聯(lián)系我們或者客戶代表獲得。獲得后,可繼續(xù)執(zhí)行下面操作。

我們需要先構(gòu)建 Device Plugin 的docker image 由于想知道該平臺(tái)的一個(gè)整體性能,所以想要跑些Benchmarks,可以從我們提供的 Dockerfile 中構(gòu)建Docker image:
在這里插入圖片描述
然后配置Bitfusion Device Plugin的yaml文件

Bitfusion Device Plugin 是符合 Kubernetes device plugin 接口規(guī)范的設(shè)備擴(kuò)展插件。可以無(wú)縫地在一個(gè) Kubernetes 集群里添加 bitfusion.io/gpu 資源,從而在部署應(yīng)用的時(shí)候,在容器中使用 bitfusion。

修改如下,更新 device_plugin.yml 文件中的 image ,Device Plugin 將以 DaemonSet 安裝在Kubernetes 節(jié)點(diǎn)上。

apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: bitfusion-cli-device-plugin
 namespace: kube-system
 labels:
 tier: node
spec:
 hostNetwork: true
 containers:
 - name: device-plugin-ctr
 image: bitfusion_device_plugin/bitfusion-device:v0.1
 securityContext:
 privileged: true
 command: ["./start.sh"]
 env:
 - name: REG_EXP_SFC
 valueFrom:
 configMapKeyRef:
 name: configmap
 key: reg-exp
 - name: SOCKET_NAME
 valueFrom:
 configMapKeyRef:
 name: configmap
 key: socket-name
 - name: RESOURCE_NAME
 valueFrom:
 configMapKeyRef:
 name: configmap
 key: resource-name
 volumeMounts:
 - mountPath: "/root/.bitfusion"
 name: bitfusion-cli
 - mountPath: /gopath/run
 name: docker
 - mountPath: /gopath/proc
 name: proc
 - mountPath: "/root/.ssh/id_rsa"
 name: ssh-key
 - mountPath: "/var/lib/kubelet"
 name: kubelet-socket
 - mountPath: "/etc/kubernetes/pki"
 name: pki
 volumes:
 - name: bitfusion-cli
 hostPath:
 path: "/root/.bitfusion"
 - name: docker
 hostPath:
 path: /var/run
 - name: proc
 hostPath:
 path: /proc
 - hostPath:
 path: "/root/.ssh/id_rsa"
 name: ssh-key
 - hostPath:
 path: "/var/lib/kubelet"
 name: kubelet-socket
 - hostPath:
 path: "/etc/kubernetes/pki"
 name: pki

然后使用以下命令進(jìn)行部署

kubeclt apply -f bitfusion-device-plugin/device_plugin.yml

執(zhí)行完成后,等待一段時(shí)間,如果成功部署,可以看到Bitfusion Device Plugin 的狀態(tài)為Running,日志打印出當(dāng)前device-plugin的狀態(tài)

如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí)
在這里插入圖片描述

構(gòu)建TensorFlow image進(jìn)行Benchmarks測(cè)試

我們已經(jīng)提供了bitfusion-base鏡像,以及構(gòu)建好的bitfusion-tfl-cli鏡像,可以直接拉取使用,或者按照需求自行構(gòu)建。

docker build -f bitfusion-device-plugin/docker/bitfusion-tfl-cli/Dockerfile -t bitfusion-tfl-cli:v0.1
FROM bitfusion-base:v0.1
RUN conda install tensorflow-gpu==1.13.1

在 pod.yaml 中添加標(biāo)簽,并且參考如下修改 參數(shù):

  • resource limit:可以設(shè)置應(yīng)用能使用的 bitfusion.io/gpu 的數(shù)目;

配置 pod bitfusion-device-plugin/example/pod/pod.yaml

---
apiVersion: v1
kind: ConfigMap
metadata:
 name: bfs-pod-configmap
---

apiVersion: v1
kind: Pod
metadata:
 name: bfs-demo
 labels:
 purpose: device-demo
spec:
 hostNetwork: true
 containers:
 - name: demo
 image: bitfusion-tfl-cli:v0.1
 imagePullPolicy: Always
 workingDir: /root
 securityContext:
 privileged: true
 command: ["/bin/bash", "-c", "--"]
 args: ["python /benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py
 --local_parameter_device=gpu
 --batch_size=32
 --model=inception3 "]
 volumeMounts:
 - mountPath: "/root/.bitfusion"
 name: config-volume
 resources:
 limits:
 bitfusion.io/gpu: 1
 volumes:
 - name: config-volume
 hostPath:
 path: "/root/.bitfusion"

Kubernetes上跑TensorFlow的benchmark進(jìn)行測(cè)試

TensorFlow有自己的官方Benchmarks:tensorflow/benchmarks,里面的tf_cnn_benchmarks包含了resnet50, resnet152, inception3, vgg16, googlenet, alexnet等模型,只需要簡(jiǎn)單地提供一些參數(shù),便可開(kāi)始測(cè)試。

這里我們選擇inception3模型來(lái)做基準(zhǔn)測(cè)試,觀察pod內(nèi)的bitfusion client 是否成功和bitfusion server打通

kubeclt apply -f bitfusion-device-plugin/example/pod/pod.yaml

執(zhí)行完之后,等待一段時(shí)間,default 項(xiàng)目中可以看到 bfs-demo 的 Pod。

如果部署成功, Pod的log顯示:

如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí)

上述內(nèi)容就是如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文題目:如何在Kubernetes上使用Bitfusion進(jìn)行TensorFlow深度學(xué)習(xí)
當(dāng)前地址:http://weahome.cn/article/ighohi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部