成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在Kubernetes上部署一個深度學習模型

開發(fā) 前端 深度學習
本文演示了如何使用 Kubermatic Kubernetes 平臺對圖像識別預測的深度學習模型進行部署、擴展與管理。
  • 了解如何使用 Kubermatic Kubernetes 平臺來部署、擴展與管理圖像識別預測的深度學習模型。

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

本文演示了如何使用 Kubermatic Kubernetes 平臺對圖像識別預測的深度學習模型進行部署、擴展與管理。

[[421057]]

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

開始

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

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

深度學習模型訓練 loss 圖 

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

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

一旦你的模型訓練好了,就可以用 Flask 服務器來封裝它。下方的程序演示了如何接收請求中的一張圖片作為參數(shù),并在響應中返回模型的預測結(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 <https://download.docker.com/linux/centos/docker-ce.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 的基礎鏡像。然后,Docker 會使用 Python 的包管理工具 pip 安裝 requirements.txt 記錄的包。最后,Docker 會通過執(zhí)行 python app.py 來運行你的腳本。

構(gòu)建 Docker 容器:

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

這條命令使用 kubermatic-dl 鏡像為你當前工作目錄的代碼創(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 

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

  1. sudo docker tag <your-image-id> <your-docker-hub-name>/<your-app-name
  2. sudo docker push <your-docker-hub-name>/<your-app-name

給鏡像打上 tag 

使用

  1. sudo docker images 

命令檢查你的鏡像的 ID。

部署你的模型到 Kubernetes 集群

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

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

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

Kubernetes 集群示例

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

查看集群信息 

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

  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)建外部可達 IP 地址的服務:

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

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

  1. kubectl get service 

 

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

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

[[421059]]

馬 

[[421060]]

測試 API 

總結(jié)

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

 

責任編輯:未麗燕 來源: Linux中國
相關(guān)推薦

2021-12-02 08:00:00

Kubernetes集群容器

2024-07-22 15:49:07

KubernetesRedis

2021-12-03 23:21:45

數(shù)據(jù)庫MySQLKubernetes

2020-08-25 07:48:17

Kubernetes集群系統(tǒng)

2015-10-10 15:56:22

OpenShiftNodeJS部署PaaS

2015-10-23 17:29:24

AtomicOpenStack 應用部署

2025-03-28 08:14:18

2017-10-13 15:59:24

iPhone機器學習iOS

2021-05-17 14:51:23

鏈碼區(qū)塊鏈網(wǎng)絡

2020-12-04 18:44:29

KubernetesHTTPS Wordpress

2023-02-07 16:36:34

機器學習Docker無服務器

2024-08-05 14:17:59

大型語言模型適配器LLM

2021-07-20 08:00:00

集群Elasticsear工具

2017-06-06 10:14:55

KerasTensorFlow深度學習

2022-05-06 12:13:55

模型AI

2020-05-21 14:05:17

TFserving深度學習架構(gòu)

2024-06-13 08:36:11

2019-11-07 14:00:36

MySQL數(shù)據(jù)庫SQL

2022-02-17 11:08:00

KubernetesMySQL運維
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩中文字幕视频在线观看 | 欧美成年网站 | 91看片| 九九九视频精品 | 久久久久久免费毛片精品 | av在线黄 | 精品欧美一区二区三区精品久久 | 国产精品久久久久久久久久 | 日本网站免费在线观看 | 国产美女特级嫩嫩嫩bbb片 | 欧美一级视频在线观看 | 亚洲一区 中文字幕 | 欧美一级观看 | www久久久| 国产精品日韩欧美 | 成人在线视频观看 | 国产视频不卡一区 | 亚洲+变态+欧美+另类+精品 | 日韩成人| 国产伦精品一区二区三毛 | 国产情侣激情 | 97影院2| 亚洲狠狠爱 | 国产午夜精品视频 | 国产在线一区二区三区 | 美女久久视频 | 人人擦人人| 九九热精品视频 | 国产精品久久久久久亚洲调教 | 99精品国产一区二区青青牛奶 | 久久免费看 | 在线午夜| 日本免费小视频 | 超碰97干| 国产成人精品免高潮在线观看 | 国产成人网 | 日韩欧美国产成人一区二区 | 久久综合久久久 | 精品久久久久久亚洲精品 | 久久av一区二区三区 | 亚洲电影免费 |