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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在Kubernetes上部署一個深度學(xué)習(xí)模型
  • 了解如何使用 Kubermatic Kubernetes 平臺來部署、擴展與管理圖像識別預(yù)測的深度學(xué)習(xí)模型。

隨著企業(yè)增加了對人工智能(AI)、機器學(xué)習(xí)(ML)與深度學(xué)習(xí)(DL)的使用,出現(xiàn)了一個關(guān)鍵問題:如何將機器學(xué)習(xí)的開發(fā)進(jìn)行規(guī)?;c產(chǎn)業(yè)化?這些討論經(jīng)常聚焦于機器學(xué)習(xí)模型本身;然而,模型僅僅只是完整解決方案的其中一環(huán)。為了達(dá)到生產(chǎn)環(huán)境的應(yīng)用和規(guī)模,模型的開發(fā)過程必須還包括一個可以說明開發(fā)前后關(guān)鍵活動以及可公用部署的可重復(fù)過程。

成都創(chuàng)新互聯(lián)網(wǎng)絡(luò)公司擁有十載的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,上千家客戶的共同信賴。提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站開發(fā)、網(wǎng)站定制、賣鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)

本文演示了如何使用 Kubermatic Kubernetes 平臺對圖像識別預(yù)測的深度學(xué)習(xí)模型進(jìn)行部署、擴展與管理。

Kubermatic Kubernetes 平臺是一個生產(chǎn)級的開源 Kubernetes 集群管理工具,提供靈活性和自動化,與機器學(xué)習(xí)/深度學(xué)習(xí)工作流程整合,具有完整的集群生命周期管理。

開始

這個例子部署了一個用于圖像識別的深度學(xué)習(xí)模型。它使用了 CIFAR-10 數(shù)據(jù)集,包含了 60,000 張分屬 10 個類別的 32x32 彩色圖,同時使用了 Apache MXNet 的 Gluon 與 NVIDIA GPU 進(jìn)行加速計算。如果你希望使用 CIFAR-10 數(shù)據(jù)集的預(yù)訓(xùn)練模型,可以查閱其 入門指南。

使用訓(xùn)練集中的樣本對模型訓(xùn)練 200 次,只要訓(xùn)練誤差保持緩慢減少,就可以保證模型不會過擬合。下方圖展示了訓(xùn)練的過程:

深度學(xué)習(xí)模型訓(xùn)練 loss 圖

訓(xùn)練結(jié)束后,必須保存模型訓(xùn)練所得到的參數(shù),以便稍后可以加載它們:

 
 
 
 
  1. file_name = "net.params"
  2. net.save_parameters(file_name)

一旦你的模型訓(xùn)練好了,就可以用 Flask 服務(wù)器來封裝它。下方的程序演示了如何接收請求中的一張圖片作為參數(shù),并在響應(yīng)中返回模型的預(yù)測結(jié)果:

 
 
 
 
  1. from gluoncv.model_zoo import get_model
  2. import matplotlib.pyplot as plt
  3. from mxnet import gluon, nd, image
  4. from mxnet.gluon.data.vision import transforms
  5. from gluoncv import utils
  6. from PIL import Image
  7. import io
  8. import flask
  9. app = flask.Flask(__name__)
  10. @app.route("/predict",methods=["POST"])
  11. def predict():
  12.     if flask.request.method == "POST":
  13.         if flask.request.files.get("img"):
  14.            img = Image.open(io.BytesIO(flask.request.files["img"].read()))
  15.             transform_fn = transforms.Compose([
  16.             transforms.Resize(32),
  17.             transforms.CenterCrop(32),
  18.             transforms.ToTensor(),
  19.             transforms.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010])])
  20.             img = transform_fn(nd.array(img))
  21.             net = get_model('cifar_resnet20_v1', classes=10)
  22.             net.load_parameters('net.params')
  23.             pred = net(img.expand_dims(axis=0))
  24.             class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
  25.                        'dog', 'frog', 'horse', 'ship', 'truck']
  26.             ind = nd.argmax(pred, axis=1).astype('int')
  27.             prediction = 'The input picture is classified as [%s], with probability %.3f.'%
  28.                          (class_names[ind.asscalar()], nd.softmax(pred)[0][ind].asscalar())
  29.     return prediction
  30. if __name__ == '__main__':
  31.    app.run(host='0.0.0.0')

容器化模型

在將模型部署到 Kubernetes 前,你需要先安裝 Docker 并使用你的模型創(chuàng)建一個鏡像。

下載、安裝并啟動 Docker:

 
 
 
 
  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. sudo yum-config-manager --add-repo 
  3. sudo yum install docker-ce
  4. sudo systemctl start docker

創(chuàng)建一個你用來管理代碼與依賴的文件夾:

 
 
 
 
  1. mkdir kubermatic-dl
  2. cd kubermatic-dl

創(chuàng)建 requirements.txt 文件管理代碼運行時需要的所有依賴:

 
 
 
 
  1. flask
  2. gluoncv
  3. matplotlib
  4. mxnet
  5. requests
  6. Pillow

創(chuàng)建 Dockerfile,Docker 將根據(jù)這個文件創(chuàng)建鏡像:

 
 
 
 
  1. FROM python:3.6
  2. WORKDIR /app
  3. COPY requirements.txt /app
  4. RUN pip install -r ./requirements.txt
  5. COPY app.py /app
  6. CMD ["python", "app.py"]

這個 Dockerfile 主要可以分為三個部分。首先,Docker 會下載 Python 的基礎(chǔ)鏡像。然后,Docker 會使用 Python 的包管理工具 pip 安裝 requirements.txt 記錄的包。最后,Docker 會通過執(zhí)行 python app.py 來運行你的腳本。

構(gòu)建 Docker 容器:

 
 
 
 
  1. sudo docker build -t kubermatic-dl:latest .

這條命令使用 kubermatic-dl 鏡像為你當(dāng)前工作目錄的代碼創(chuàng)建了一個容器。

使用

 
 
 
 
  1. sudo docker run -d -p 5000:5000 kubermatic-dl

命令檢查你的容器可以在你的主機上正常運行。

使用

 
 
 
 
  1. sudo docker ps -a

命令查看你本地容器的運行狀態(tài):

查看容器的運行狀態(tài)

將你的模型上傳到 Docker Hub

在向 Kubernetes 上部署模型前,你的鏡像首先需要是公開可用的。你可以通過將你的模型上傳到 Docker Hub 來將它公開。(如果你沒有 Docker Hub 的賬號,你需要先創(chuàng)建一個)

在終端中登錄 Docker Hub 賬號:

 
 
 
 
  1. sudo docker login

給你的鏡像打上標(biāo)簽,這樣你的模型上傳到 Docker Hub 后也能擁有版本信息:

 
 
 
 
  1. sudo docker tag  /
  2. sudo docker push /

給鏡像打上 tag

使用

 
 
 
 
  1. sudo docker images

命令檢查你的鏡像的 ID。

部署你的模型到 Kubernetes 集群

首先在 Kubermatic Kubernetes 平臺創(chuàng)建一個項目, 然后根據(jù) 快速開始 創(chuàng)建一個 Kubernetes 集群。

創(chuàng)建一個 Kubernetes 集群

下載用于訪問你的集群的 kubeconfig,將它放置在下載目錄中,并記得設(shè)置合適的環(huán)境變量,使得你的環(huán)境能找到它:

Kubernetes 集群示例

使用 kubectl 命令檢查集群信息,例如,需要檢查 kube-system 是否在你的集群正常啟動了就可以使用命令 kubectl cluster-info。

查看集群信息

為了在集群中運行容器,你需要創(chuàng)建一個部署用的配置文件(deployment.yaml),再運行 apply 命令將其應(yīng)用于集群中:

 
 
 
 
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: kubermatic-dl-deployment
  5. spec:
  6.   selector:
  7.     matchLabels:
  8.       app: kubermatic-dl
  9.   replicas: 3
  10.   template:
  11.     metadata:
  12.       labels:
  13.         app: kubermatic-dl
  14.     spec:
  15.      containers:
  16.      - name: kubermatic-dl
  17.        image: kubermatic00/kubermatic-dl:latest
  18.        imagePullPolicy: Always
  19.        ports:
  20.        - containerPort: 8080
 
 
 
 
  1. kubectl apply -f deployment.yaml`

為了將你的部署開放到公網(wǎng)環(huán)境,你需要一個能夠給你的容器創(chuàng)建外部可達(dá) IP 地址的服務(wù):

 
 
 
 
  1. kubectl expose deployment kubermatic-dl-deployment --type=LoadBalancer --port 80 --target-port 5000`

就快大功告成了!首先檢查你布署的服務(wù)的狀態(tài),然后通過 IP 請求的你圖像識別 API:

 
 
 
 
  1. kubectl get service

獲取請求圖像識別 API 的 IP 地址

最后根據(jù)你的外部 IP 使用以下兩張圖片對你的圖像識別服務(wù)進(jìn)行測試:

測試 API

總結(jié)

在這篇教程中,你可以創(chuàng)建一個深度學(xué)習(xí)模型,并且使用 Flask 提供 REST API 服務(wù)。它介紹了如何將應(yīng)用放在 Docker 容器中,如何將這個鏡像上傳到 Docker Hub 中,以及如何使用 Kubernetes 部署你的服務(wù)。只需幾個簡單的命令,你就可以使用 Kubermatic Kubernetes 平臺部署該應(yīng)用程序,并且開放服務(wù)給別人使用。


當(dāng)前文章:如何在Kubernetes上部署一個深度學(xué)習(xí)模型
轉(zhuǎn)載源于:http://www.5511xx.com/article/djdpgii.html