色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

機器學習模型的最簡單方法之一將TensorFlow Serving與Docker結合起來

Tensorflowers ? 來源:未知 ? 作者:李倩 ? 2018-11-06 11:12 ? 次閱讀

能夠簡單快捷地提供機器學習模型是從試驗轉向生產的關鍵挑戰之一。服務機器學習模型就是采用經訓練的模型并使其能夠應對預測請求的過程。在生產中服務時,您需要確保您的環境可重現,強制隔離并且是安全的。為此,提供機器學習模型的最簡單方法之一是就是將 TensorFlow Serving 與 Docker 結合起來。 Docker 是一種將軟件打包成單元(我們稱之為容器)的工具,其中包含運行軟件所需的一切。

TensorFlowServing 在 Docker 容器中運行

自 TensorFlowServing 1.8 發布以來,我們一直在改進對 Docker 的支持。 我們現在提供 Docker images 用于 CPUGPU 模型的服務和開發。為了解使用 TensorFlowServing 部署模型究竟有多么容易,讓我們嘗試將 ResNet 模型投入生產。 此模型在 ImageNet 數據集上進行訓練,并將 JPEG 鏡像作為輸入并返回鏡像的分類類別。

我們的示例將假設您正在運行 Linux,不過它在 macOS 或 Windows 應該也可以運行,僅需少量修改,甚至不需要修改。

使用 TensorFlowServing 和 Docker 服務 ResNet

第一步安裝 Docker CE。 這將為您提供運行和管理 Docker 容器所需的所有工具。

TensorFlow Serving 為其 ML 模型使用 SavedModel 格式。SavedModel 是一種語言中立的,可恢復的,密集的序列化格式,使更高級別的系統和工具能夠生成,使用和轉換 TensorFlow 模型。 有幾種方法可以導出 SavedModel(包括來自 Keras)。 在本練習中,我們只需下載預先訓練的 pre-trained ResNetSavedModel:

$ mkdir / tmp / resnet $ curl -s https://storage.googleapis.com/download.tensorflow.org/models/official/20181001_resnet/savedmodels/resnet_v2_fp32_savedmodel_NHWC_jpg.tar.gz | tar --strip-components = 2 -C / tmp / resnet -xvz

我們現在應該在 / tmp / resnet 中有一個包含我們模型的文件夾。可以通過運行來驗證這一點:

$ ls / tmp / resnet 1538687457

現在我們有了模型,使用 Docker 服務就像拉來最新發布的 TensorFlowServing 來服務環境鏡像一樣簡單,并將其指向模型:

$ docker pull tensorflow / serving $ docker run -p 8501:8501 - name tfserving_resnet --mount type = bind,source = / tmp / resnet,target = / models / resnet -e MODEL_NAME = resnet -t tensorflow / serving &... ... main.cc:327]在0.0.0.0:8500運行ModelServer ...... ... main.cc:337]導出HTTP / REST API:localhost:8501 ...

分解命令行參數,我們:

-p 8501:8501 : 將容器的端口 8501(TensorFlow 服務響應 REST API 請求)發布到主機的端口 8501

--name tfserving_resnet : 我們為容器創建名稱為 “tfserving_resnet”,這樣稍后我們可以作參考

--mount type=bind,source=/tmp/resnet,target=/models/resnet : 在容器(/ models / resnet)上安裝主機的本地目錄(/ tmp / resnet),以便 TensorFlow 服務可以從容器內部讀取模型。

-e MODEL_NAME=resnet : 告訴 TensorFlow Serving 下載名為 “resnet” 的模型

-t tensorflow/serving : 基于服務鏡像 “tensorflow / serving” 運行 Docker 容器

接下來,讓我們下載 python 客戶端腳本,它將發送服務的模型鏡像并獲取預測。 我們還將測量服務器響應時間。

$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py

此腳本將下載貓的鏡像并在測量響應時間時將其重復發送到服務器,如腳本的主循環中所示:

1# The server URL specifies the endpoint of your server running the ResNet

2# model with the name "resnet" and using the predict interface.

3SERVER_URL = 'http://localhost:8501/v1/models/resnet:predict'

4

5...

6

7# Send few actual requests and time average latency.

8total_time = 0

9num_requests = 10

10for _ in xrange(num_requests):

11response = requests.post(SERVER_URL, data=predict_request)

12response.raise_for_status()

13total_time += response.elapsed.total_seconds()

14prediction = response.json()['predictions'][0]

15

16print('Prediction class: {}, avg latency: {} ms'.format(

17prediction['classes'], (total_time*1000)/num_requests))

此腳本使用請求模塊,因此如果您尚未安裝,則需要安裝它。通過運行此腳本,您應該看到如下所示的輸出:

$ python /tmp/resnet/resnet_client.py

Prediction class: 282, avg latency: 185.644 ms

如您所見,使用 TensorFlow Serving 和 Docker 創建模型非常簡單直白。您甚至可以創建自己的嵌入式模型的自定義 Docker 鏡像,以便更輕松地進行部署。

通過構建優化的 TensorFlow Serving 二進制文件來提高性能

既然我們在 Docker 中提供了一個模型,您可能已經注意到來自 TensorFlowServing 的日志消息如下所示:

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

TensorFlowServing 已發布的 Docker 鏡像旨在竭盡所能來使用 CPU 架構,因此省略了一些優化以最大限度地提高兼容性。如果您沒有看到此消息,則您的二進制文件可能已針對您的 CPU 進行了優化。

根據您的模型執行的操作,這些優化可能會對您的服務性能產生重大影響。值得慶幸的是,將您自己的優化服務鏡像組合在一起非常簡單。

首先,我們要構建 TensorFlowServing 的優化版本。最簡單的方法是構建官方的 TensorFlowServing 開發環境 Docker 鏡像。這具有為鏡像構建的系統自動生成優化的 TensorFlow 服務二進制文件的良好特性。為了區分我們創建的鏡像和官方鏡像,我們將 $USER/ 添加到鏡像名稱之前。讓我們稱這個開發鏡像為 $USER/ tensorflow-serving-devel:

$ docker build -t $USER/tensorflow-serving-devel -f Dockerfile.devel https://github.com/tensorflow/serving.git#:tensorflow_serving/tools/docker

構建 TensorFlow 服務開發鏡像可能需要一段時間,具體取決于計算機的速度。 完成之后,讓我們使用優化的二進制文件構建一個新的服務鏡像,并將其命名為 $USER/tensorflow-serving:

$ docker build -t $USER/tensorflow-serving --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel https://github.com/tensorflow/serving.git#:tensorflow_serving/tools/docker

現在我們有了新的服務鏡像,讓我們再次啟動服務器:

$ docker kill tfserving_resnet$ docker run -p 8501:8501 --name tfserving_resnet --mount type=bind,source=/tmp/resnet,target=/models/resnet -e MODEL_NAME=resnet -t $USER/tensorflow-serving &

最后運行我們的客戶端:

$ python /tmp/resnet/resnet_client.pyPrediction class: 282, avg latency: 84.8849 ms

在我們的機器上,我們看到使用原生優化二進制文件,每次預測平均加速超過 100 毫秒(119%)。在不同的機器(和型號)上您可能會看到不同的結果。

最后,隨意銷毀 TensorFlow Serving 容器:

$ docker kill tfserving_resnet

現在您已經使用 Docker 運行 TensorFlowServing,您可以輕松地在容器中部署機器學習模型,同時最大限度地提高部署和性能。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8438

    瀏覽量

    132928
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60590

原文標題:使用 TensorFlow Serving 和 Docker 快速服務于機器學習

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問STM32 Nucleo系列與Arduino具體怎么結合起來用?

    STM32 Nucleo系列與Arduino具體怎么結合起來用?
    發表于 05-14 07:00

    設計個信號發生器的電路,而且具有數字時鐘的功能,就是如何兩者結合起來

    設計個信號發生器的電路,而且具有數字時鐘的功能,就是如何兩者結合起來
    發表于 06-23 09:40

    讓python跟labview相結合起來搞些小動作怎么樣,相互學習

    本帖最后由 你挺能鬧啊 于 2017-8-16 11:26 編輯 這段時間致在弄這個python,做UI界面不合適,只能與labview的強大儀器結合起來玩玩了,下面都是寫簡單的調用,有沒有興趣
    發表于 08-16 11:26

    準備做個電子diy太陽能和led結合起來,大家有什么好的創意嗎?

    準備做個電子diy太陽能和led結合起來,大家有什么好的創意嗎?
    發表于 04-21 09:56

    請問STM32怎么和lora結合起來做無線串口?

    我是新人,沒有積分,抱歉了大家,但是我想問問怎么和LORA結合起來,麻煩回答的大佬詳細些,謝謝。另外就是求套教程,好些的教程,謝謝!
    發表于 01-21 06:35

    四軸姿態怎么和電機結合起來

    最近做DIY小四軸,硬件基本已搭好,是個x模式的,有個疑惑 ,希望大家看看,發表下意見,,我已經從6050中得到姿態角了,,1.那我該怎么把他和電機結合起來呢?2.都說調pid,那我pid 是誰的pid呢,,,角度?它有跟姿態有什么關系呢
    發表于 06-17 04:36

    如何把庫函數和寄存器結合起來

    沒有和我們講清楚,所以在這里提問下.接著,有個更嚴重的問題,剛我介紹的是原子書上講的寄存器程序的建立過程,如果想建立個庫函數的程序那么整個程序是樣的?能不能
    發表于 07-29 03:02

    如何把庫函數寫的文件和寄存器寫的文件結合起來用?

    庫函數寫的文件 怎么樣和 寄存器寫的文件 結合起來用啊?庫函數寫的文件 怎么樣和 寄存器寫的文件 結合起來用啊?庫函數寫的文件 怎么樣和 寄存器寫的文件 結合起來用啊?庫函數寫的文件 怎么樣
    發表于 08-07 02:49

    這款語音套件與micro bit結合起來,看下小車效果

    。該項目主要定位在青少年編程教學:慶科的這款語音套件與micro bit結合起來,通過在編程中增加語音互動,來增加青少年學習編程的樂趣。 通過自己組裝、改裝小車,DIY小車軌道,改裝電路等,提高
    發表于 09-24 20:31

    怎樣把Matlab和STM32結合起來

    文章目錄前言、軟件的安裝二、使用步驟1.先配置stm32cubeMX(我這里做的是個串口通訊)2.matlab的配置3.工程生成總結前言今天帶大家把Matlab和STM32結合起來,強強聯合
    發表于 07-16 06:37

    微機原理與單片機結合起來

    專業測控技術與儀器系 班級測控0601-03 任課教師周靜職稱教授教學目的和要求本課程是一門將微機原理與單片機結合起來的技術基礎課,通過本課程的學習,目的是使學生能...
    發表于 07-16 06:27

    如何STM32的IO口與外部中斷結合起來

    如何使用STM32的外部輸入中斷?STM32的外部中斷輸入口需要做哪些設置?如何STM32的IO口與外部中斷結合起來
    發表于 11-17 06:51

    把STM32CubeMX和TrueSTUDIO結合起來

    STM32CubeMX和TrueSTUDIO結合起來用。終于,ST官方看到客戶需求了,2019年推出了STM32CubeIDE,直接把STM32CubeMX和TrueSTUDIO整合起來。當時是1.0版本,我
    發表于 01-13 07:47

    有什么方法可以把單片機和java結合起來

    wifi模塊該怎樣去使用呢?有什么方法可以把單片機和java結合起來呢?
    發表于 02-22 07:45

    WRLDSAR與戶外游戲結合起來,推出款AR智能彈跳球

    過去年,增強現實(AR)的知名度大幅提升,比如ARKit的推出,以及隨后支持AR的智能手機應用程序數量的增加。WRLDS是家玩具公司,它希望通過推出AR智能彈跳球,AR與戶外游戲結合起
    發表于 08-17 09:10 ?1378次閱讀
    主站蜘蛛池模板: 欧洲-级毛片内射八十老太婆 | 无码区国产区在线播放 | 色婷婷国产精品视频一区二区 | 日韩午夜影院 | 国产午夜不卡 | 久久综合一个色综合网 | DASD-700美谷朱里 | 久久亚洲AV无码精品午色夜麻豆 | 欧美人妇无码精品久久 | 精品久久久无码21P发布 | 高清无码中文字幕影片 | 日韩在线av免费视久久 | 老熟风间由美AV在线一区二区 | 97人人碰免费视频公开 | 久久久精品日本一区二区三区 | 免费毛片试看 | 海角国精产品一区一区三区糖心 | 国产成人综合在线观看 | 国产精品99久久免费黑人人妻 | 久久热最新网站获取3 | 久久精品午夜一区二区福利 | 607080老太太AW| 久 久 亚洲 少 妇 无 码 | 成人国产在线24小时播放视频 | 92国产精品午夜免费福利视频 | 一本色道久久88加勒比—综合 | 扒开女人下面使劲桶动态图 | 旧里番ovaの催○セイ活指导 | 久久综合网久久综合 | 久久爱狠狠综合网 | 国产在线精品视频免费观看 | 国产亚洲欧美在线中文BT天堂网 | 乌克兰14一18处交见血 | 国产人妻系列无码专区97SS | 欧美国产精品久久久乱码 | 国产一区二区三区在线看片 | 最新无码国产在线视频9299 | 秋霞电影网伦大理电影在线观看 | 欧美高清 videos sexo | 妖精视频在线观看高清 | 成人亚洲视频在线观看 |