亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

使用Kubernetes和TensorFlow Serving將神經(jīng)網(wǎng)絡(luò)鏡像分類(lèi)進(jìn)行彈性擴(kuò)容

Harpsichord1207 / 852人閱讀

摘要:大會(huì)以機(jī)器學(xué)習(xí)資料中心和云端安全為主要議題,為未來(lái)發(fā)展做戰(zhàn)略規(guī)劃。在年,谷歌開(kāi)發(fā)了一個(gè)內(nèi)部深度學(xué)習(xí)基礎(chǔ)設(shè)施叫做,這個(gè)設(shè)施允許谷歌人創(chuàng)建更大的神經(jīng)網(wǎng)絡(luò)和擴(kuò)容實(shí)訓(xùn)成千上萬(wàn)個(gè)核心。

導(dǎo)言

Google近日3月23-24日在美國(guó)舊金山舉辦首次谷歌云平臺(tái)(Google Cloud Platform) GCP NEXT大會(huì),參會(huì)人數(shù)超過(guò)2000人。GCP NEXT大會(huì)以機(jī)器學(xué)習(xí)、資料中心和云端安全為主要議題,為未來(lái)GCP發(fā)展做戰(zhàn)略規(guī)劃。

其中,關(guān)于機(jī)器學(xué)習(xí),谷歌發(fā)布了云端機(jī)器學(xué)習(xí)平臺(tái)(Cloud Machine Learning),為開(kāi)發(fā)者和企業(yè)用戶(hù)提供一整套包含視聽(tīng)及翻譯的應(yīng)用API,例如Cloud Translate API和Cloud Vision API。除了machine learning,谷歌去年就推出了機(jī)器學(xué)習(xí)開(kāi)放原始碼平臺(tái)TensorFlow,鼓勵(lì)開(kāi)發(fā)者利用該平臺(tái)來(lái)開(kāi)發(fā)創(chuàng)新應(yīng)用服務(wù)?,F(xiàn)在TensorFlow和Kubernetes相結(jié)合,將建立更為強(qiáng)大的機(jī)器學(xué)習(xí)模型,擴(kuò)充功能,開(kāi)啟人工智能機(jī)器學(xué)習(xí)在谷歌云端的新紀(jì)元。

在2011年,谷歌開(kāi)發(fā)了一個(gè)內(nèi)部深度學(xué)習(xí)基礎(chǔ)設(shè)施叫做“DistBelief”,這個(gè)設(shè)施允許谷歌人創(chuàng)建更大的神經(jīng)網(wǎng)絡(luò)和擴(kuò)容實(shí)訓(xùn)成千上萬(wàn)個(gè)核心。最近幾年,谷歌引進(jìn)了TensorFlow,也就是它的二代機(jī)器學(xué)習(xí)系統(tǒng)。TensorFlow的特點(diǎn)是通用,靈活的,便攜的,易于使用,最重要的是,它是使用開(kāi)源社區(qū)開(kāi)發(fā)的。

將機(jī)器學(xué)習(xí)引入到你的產(chǎn)品的過(guò)程包括創(chuàng)建和訓(xùn)練數(shù)據(jù)集模型。

引入機(jī)器學(xué)習(xí)到你的產(chǎn)品這個(gè)過(guò)程涉及到創(chuàng)建和訓(xùn)練模型在你的數(shù)據(jù)集上,然后push模型到生產(chǎn)過(guò)程來(lái)提供請(qǐng)求。在這篇博客中,我們將會(huì)展示給你們?nèi)绾瓮ㄟ^(guò)TensorFlow使用Kubernetes,TensorFlow是一個(gè)高性能,滿(mǎn)足應(yīng)用程序的擴(kuò)展需求,為機(jī)器學(xué)習(xí)模型提供開(kāi)源服務(wù)系統(tǒng)。

現(xiàn)在讓我們以鏡像作為例子。假設(shè)你的應(yīng)用程序需要能夠在一系列類(lèi)別中正確的識(shí)別一個(gè)鏡像。比如,給出下面這個(gè)可愛(ài)的小狗圖,你的系統(tǒng)應(yīng)該將它歸類(lèi)到獵犬這一類(lèi)。

你可以通過(guò)TensorFlow使用從ImageNet數(shù)據(jù)集上面trained的Inception-v3模型,來(lái)實(shí)現(xiàn)圖像分類(lèi)。這個(gè)數(shù)據(jù)集包含圖片和標(biāo)簽,允許TensorFlow學(xué)習(xí)者train一個(gè)模型,該模型可以被用在生產(chǎn)過(guò)程中。

一旦模型被訓(xùn)練和輸出,TensorFlow服務(wù)使用該模型來(lái)進(jìn)行推理——基于客戶(hù)提供的新數(shù)據(jù)的預(yù)言。在我們的例子中,客戶(hù)在gRPC請(qǐng)求提交鏡像分類(lèi),gRPC是一個(gè)來(lái)自谷歌的高性能,開(kāi)源RPC的框架。

推理可以是十分資源密集型的。我們的服務(wù)器執(zhí)行以下TensorFlow來(lái)處理它接收到的每一個(gè)分類(lèi)的要求。Inception-v3模型有超過(guò)2700萬(wàn)個(gè)參數(shù),每次運(yùn)算推理(inference)運(yùn)行57億浮點(diǎn)。

幸運(yùn)地,這就是Kubernetes可以幫助到我們的地方。Kubernetes分布推斷請(qǐng)求處理跨集群使用外部負(fù)載均衡器。集群中的每個(gè)pod都包含一個(gè)TensorFlow服務(wù)于Docker鏡像,還有TensorFlow服務(wù)為基礎(chǔ)的gRPC服務(wù)器,以及一個(gè)trained的Inception-v3模型。這個(gè)模型以文件集描述TensorFlow圖的形式呈現(xiàn),模型權(quán)重,資產(chǎn)等等。既然所有東西都是整齊的打包好放到一起,那么我們就可以使用Kubernetes Replication Controller動(dòng)態(tài)的擴(kuò)展復(fù)制pods,以此來(lái)跟上服務(wù)要求。

為了幫助你自己試一試,我們寫(xiě)了一個(gè)tutorial教程,它展示了如何創(chuàng)建TensorFlow服務(wù)Docker容器來(lái)給Inception-v3鏡像分類(lèi)模型提供服務(wù),安裝Kubernetes集群,并且應(yīng)對(duì)該集群運(yùn)行分類(lèi)請(qǐng)求。我們希望這個(gè)教程能夠讓你更加容易地去整合機(jī)器學(xué)習(xí)到你自己的程序上,以及用Kubernetes擴(kuò)大規(guī)模。學(xué)習(xí)更多關(guān)于TensorFlow,請(qǐng)看下文補(bǔ)充:

用TensorFlow Serving和Kubernetes給Inception模型提供服務(wù)

這個(gè)tutorial展示了如何使用TensorFlow Serving組件在容器里面的運(yùn)用,以此來(lái)服務(wù)TensorFlow模型,還展示了如何用Kubernetes配置服務(wù)中的集群。

為了解更多關(guān)于TensorFlow服務(wù)的信息,我們推薦《TensorFlow服務(wù)初級(jí)教程》和《TensorFlow服務(wù)教程》。

為了解更多關(guān)于TensorFlow Inception模型,我們推薦《Inception in TensorFlow》。

Part0 展示的是怎樣為配置創(chuàng)建一個(gè)TensorFlow服務(wù)Docker

Part1 展示的是如何在本地容器運(yùn)行鏡像

Part2 展示了如何在kubernetes上配置

Part0: 創(chuàng)建一個(gè)Docker鏡像

請(qǐng)參考《通過(guò)Docker使用TensorFlow服務(wù)》來(lái)了解創(chuàng)建過(guò)程中的更多細(xì)節(jié)。

運(yùn)行容器

我們使用Dockerfile.devel來(lái)創(chuàng)建一個(gè)基底鏡像$USER/tensorflow-serving-devel,然后使用創(chuàng)建好的鏡像來(lái)啟動(dòng)本地容器。

$ docker build -t $USER/tensorflow-serving-devel -f tensorflow_serving/tools/docker/Dockerfile.devel .$ docker run --name=inception_container -it $USER/tensorflow-serving-devel

在容器中克隆,配置以及創(chuàng)建TensorFlow服務(wù)

在運(yùn)行的容器中,我們克隆,配置以及創(chuàng)建TensorFlow服務(wù)。然后測(cè)試運(yùn)行 inception_inference(網(wǎng)址:點(diǎn)擊)

root@c97d8e820ced:/# git clone --recurse-submodules https://github.com/tensorflow/servingroot@c97d8e820ced:/# cd serving/tensorflowroot@c97d8e820ced:/serving/tensorflow# ./configureroot@c97d8e820ced:/serving# cd ..root@c97d8e820ced:/serving# bazel build -c opt tensorflow_serving/...root@c97d8e820ced:/serving# ls
AUTHORS          LICENSE    RELEASE.md  bazel-bin       bazel-out      bazel-testlogs  tensorflow          zlib.BUILD
CONTRIBUTING.md  README.md  WORKSPACE   bazel-genfiles  bazel-serving  grpc            tensorflow_servingroot@c97d8e820ced:/serving# bazel-bin/tensorflow_serving/example/inception_inference
E tensorflow_serving/example/inception_inference.cc:362] Usage: inception_inference --port=9000 /path/to/exports

容器中的輸出Inception

在容器中,我們運(yùn)行inception_export.py(點(diǎn)擊)使用發(fā)布的Inception model training checkpoint(點(diǎn)擊)來(lái)出口inception模型。我們使用訓(xùn)練有素的現(xiàn)成的動(dòng)態(tài)檢查點(diǎn)來(lái)恢復(fù)直接推理,并且直接輸出它。

root@c97d8e820ced:/serving# curl -O http://download.tensorflow.org/models/image/imagenet/inception-v3-2016-03-01.tar.gzroot@c97d8e820ced:/serving# tar xzf inception-v3-2016-03-01.tar.gzroot@c97d8e820ced:/serving# ls inception-v3
README.txt  checkpoint  model.ckpt-157585root@c97d8e820ced:/serving# bazel-bin/tensorflow_serving/example/inception_export --checkpoint_dir=inception-v3 --export_dir=inception-export
Successfully loaded model from inception-v3/model.ckpt-157585 at step=157585.
Successfully exported model to inception-exportroot@c97d8e820ced:/serving# ls inception-export
00157585root@c97d8e820ced:/serving# [Ctrl-p] + [Ctrl-q]

提交鏡像到配置

注意我們從上述指令的容器中分離出來(lái)而不是終止它,因?yàn)槲覀兿胍獮镵ubernetes配置提交所有的修改到新的鏡像 $USER/inception_serving。

$ docker commit inception_container $USER/inception_serving$ docker stop inception_container
Part1:在本地Docker容器運(yùn)行

讓我們?cè)诒镜赜脛?chuàng)建的鏡像測(cè)試一下服務(wù)流程。

$ docker run -it $USER/inception_serving

開(kāi)啟服務(wù)器

在容器中運(yùn)行g(shù)RPC服務(wù)器

root@f07eec53fd95:/# cd servingroot@f07eec53fd95:/serving# bazel-bin/tensorflow_serving/example/inception_inference --port=9000 inception-export &> inception_log &[1] 45

查詢(xún)服務(wù)器

用inception_client.py.(點(diǎn)擊)??蛻?hù)端通過(guò)gRPC用一個(gè)命令行參數(shù)發(fā)送一個(gè)指定的鏡像到服務(wù)器。然后查找ImageNet同義詞集合和元數(shù)據(jù)文件,并且返回到人類(lèi)可讀的分類(lèi)。

root@f07eec53fd95:/serving# bazel-bin/tensorflow_serving/example/inception_client --server=localhost:9000 --image=/path/to/my_cat_image.jpg
8.976576 : tabby, tabby cat
8.725506 : Egyptian cat
6.883981 : tiger cat
2.659257 : lynx, catamount
2.028728 : window screenroot@f07eec53fd95:/serving# exit

它運(yùn)行起來(lái)了!服務(wù)器成功地分類(lèi)了你的cat鏡像!

Part2:在kubernetes上配置

在這一節(jié)里,我們使用Part0中創(chuàng)建的容器鏡像來(lái)配置一個(gè)服務(wù)集群,用的是Google Cloud Platform中的Kubernetes。

Cloud項(xiàng)目登錄
這里我們假設(shè)你已經(jīng)創(chuàng)建并且已經(jīng)登陸了名“ tensorflow-serving”gcloud項(xiàng)目。

$ gcloud auth login --project tensorflow-serving

創(chuàng)建一個(gè)容器集群

首先,我們?yōu)榉?wù)配置創(chuàng)建一個(gè)Google Container Engine集群。

$ gcloud container clusters create inception-serving-cluster --num-nodes 5
Creating cluster inception-serving-cluster...done.
Created [https://container.googleapis.com/v1/projects/tensorflow-serving/zones/us-central1-f/clusters/inception-serving-cluster].
kubeconfig entry generated for inception-serving-cluster.
NAME                       ZONE           MASTER_VERSION  MASTER_IP        MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
inception-serving-cluster  us-central1-f  1.1.8           104.197.163.119  n1-standard-1  1.1.8         5          RUNNING

為gcloud容器命令設(shè)置默認(rèn)集群,并且發(fā)送集群憑證到kubectl。

$ gcloud config set container/cluster inception-serving-cluster$ gcloud container clusters get-credentials inception-serving-cluster
Fetching cluster endpoint and auth data.
kubeconfig entry generated for inception-serving-cluster.

上傳Docker鏡像
現(xiàn)在讓我們來(lái)把我們的鏡像push到[Google Container Registry](https://cloud.google.com/container-registry/docs/),這樣我們就可以在Google Cloud Platform上面運(yùn)行了。

首先,我們給$USER/inception_serving 鏡像貼上標(biāo)簽,用Container Registry格式以及我們的項(xiàng)目名稱(chēng),

$ docker tag $USER/inception_serving gcr.io/tensorflow-serving/inception 

下面我們push鏡像到Registry,

$ gcloud docker push gcr.io/tensorflow-serving/inception

創(chuàng)建Kubernetes ReplicationController 和服務(wù)
配置包括不同的副本inception_inference 被一個(gè)kubernetes Replication Controller服務(wù)器控制。副本是由Kubernetes以及外部負(fù)載均衡起暴露在外部的。

我們使用那個(gè)Kubernetes公式inception_k8s.json的例子創(chuàng)建他們。

$ kubectl create -f tensorflow_serving/example/inception_k8s.json
replicationcontroller "inception-controller" created
service "inception-service" created

來(lái)看一下副本控制器和pods:

$ kubectl get rc
CONTROLLER             CONTAINER(S)          IMAGE(S)                              SELECTOR               REPLICAS   AGE
inception-controller   inception-container   gcr.io/tensorflow-serving/inception   worker=inception-pod   3          20s

$ kubectl get pod
NAME                         READY     STATUS    RESTARTS   AGE
inception-controller-bbcbc   1/1       Running   0          1m
inception-controller-cj6l2   1/1       Running   0          1m
inception-controller-t1uep   1/1       Running   0          1m

來(lái)看一下服務(wù)的狀態(tài):

$ kubectl get svc
NAME                CLUSTER_IP      EXTERNAL_IP      PORT(S)    SELECTOR               AGE
inception-service   10.15.242.244   146.148.88.232   9000/TCP   worker=inception-pod   3m
kubernetes          10.15.240.1                443/TCP                     1h

$ kubectl describe svc inception-service
Name:     inception-service
Namespace:    default
Labels:     
Selector:   worker=inception-pod
Type:     LoadBalancer
IP:     10.15.242.244
LoadBalancer Ingress: 146.148.88.232
Port:      9000/TCP
NodePort:    32006/TCP
Endpoints:    10.12.2.4:9000,10.12.4.4:9000,10.12.4.5:9000
Session Affinity: None
Events:
  FirstSeen LastSeen  Count From      SubobjectPath Reason      Message
  ───────── ────────  ───── ────      ───────────── ──────      ───────
  4m    3m    2 {service-controller }     CreatingLoadBalancer  Creating load balancer
  3m    2m    2 {service-controller }     CreatedLoadBalancer   Created load balancer

任何東西上傳或者運(yùn)行都需要時(shí)間。服務(wù)的外部IP地址就在LoadBalancer旁邊被列出來(lái)。

查詢(xún)模型

我們現(xiàn)在可以從我們的本地主機(jī)外部地址查詢(xún)服務(wù)。

$ bazel-bin/tensorflow_serving/example/inception_client --server=146.148.88.232:9000 --image=/path/to/my_cat_image.jpg
8.976576 : tabby, tabby cat
8.725506 : Egyptian cat
6.883981 : tiger cat
2.659257 : lynx, catamount
2.028728 : window screen

你已經(jīng)在Kubernetes里成功部署了inception服務(wù)。

原文在這里

(如果需要轉(zhuǎn)載,請(qǐng)聯(lián)系我們哦,尊重知識(shí)產(chǎn)權(quán)人人有責(zé))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/32444.html

相關(guān)文章

  • TensorFlow在產(chǎn)品環(huán)境中運(yùn)行模型的實(shí)踐經(jīng)驗(yàn)總結(jié)

    摘要:它使用機(jī)器學(xué)習(xí)來(lái)解釋用戶(hù)提出的問(wèn)題,并用相應(yīng)的知識(shí)庫(kù)文章來(lái)回應(yīng)。使用一類(lèi)目前較先進(jìn)的機(jī)器學(xué)習(xí)算法來(lái)識(shí)別相關(guān)文章,也就是深度學(xué)習(xí)。接下來(lái)介紹一下我們?cè)谏a(chǎn)環(huán)境中配置模型的一些經(jīng)驗(yàn)。 我們?nèi)绾伍_(kāi)始使用TensorFlow ?在Zendesk,我們開(kāi)發(fā)了一系列機(jī)器學(xué)習(xí)產(chǎn)品,比如的自動(dòng)答案(Automatic Answers)。它使用機(jī)器學(xué)習(xí)來(lái)解釋用戶(hù)提出的問(wèn)題,并用相應(yīng)的知識(shí)庫(kù)文章來(lái)回應(yīng)。當(dāng)用戶(hù)有...

    stackfing 評(píng)論0 收藏0
  • 容器云未來(lái):Kubernetes、Istio Knative

    摘要:解決服務(wù)運(yùn)行環(huán)境統(tǒng)一,和部署問(wèn)題。解決服務(wù)上線(xiàn)面臨的一系列治理問(wèn)題。目前參與的公司主要是,于年月份對(duì)外發(fā)布,目前處于快速發(fā)展階段。服務(wù)系統(tǒng)利用的部分功能,來(lái)配置應(yīng)用路由,升級(jí)以及彈性伸縮。事件系統(tǒng)用于自動(dòng)完成事件的綁定與觸發(fā)。 導(dǎo)讀 目前以Kubernetes為基礎(chǔ)構(gòu)建的容器生態(tài)逐漸完善,這其中Kubernetes、Istio、Knative三個(gè)獨(dú)立項(xiàng)目被越來(lái)越多的人提及,并且已經(jīng)開(kāi)始...

    LinkedME2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<