丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給叢末
發(fā)送

0

TensorFlow 攜手 NVIDIA,使用 TensorRT 優(yōu)化 TensorFlow Serving 性能

本文作者: 叢末 2019-03-07 10:53
導(dǎo)語(yǔ):二者相結(jié)合后,用戶可以輕松地實(shí)現(xiàn) GPU 推理,并獲得更佳的性能。

雷鋒網(wǎng) AI 科技評(píng)論按:日前,TensorFlow 團(tuán)隊(duì)與 NVIDIA 攜手合作,將 NVIDIA 用來(lái)實(shí)現(xiàn)高性能深度學(xué)習(xí)推理的平臺(tái)——TensorRT 與 TensorFlow Serving 打通結(jié)合,使用戶可以輕松地實(shí)現(xiàn)最佳性能的 GPU 推理。目前,TensorFlow Serving 1.13 已實(shí)現(xiàn)對(duì) TF-TRT 的支持,而不久后  TensorFlow 2.0 也將支持 TF-TRT 的實(shí)現(xiàn)。 TensorFlow 在官方博客中對(duì)這項(xiàng)成果進(jìn)行了發(fā)布,雷鋒網(wǎng) AI 科技評(píng)論編譯如下。

TensorFlow Serving 是應(yīng)用于機(jī)器學(xué)習(xí)模型的靈活的高性能服務(wù)系統(tǒng),而 NVIDIA TensorRT 則是一個(gè)用以實(shí)現(xiàn)高性能深度學(xué)習(xí)推理的平臺(tái),將二者相結(jié)合后,用戶可以輕松地實(shí)現(xiàn)最佳性能的 GPU 推理。TensorFlow 團(tuán)隊(duì)與 NVIDIA 攜手合作,在 TensorFlow v1.7 中添加了對(duì) TensorRT 的首度支持,此后,他們更是保持密切的合作,共同致力于對(duì) TensorFlow-TensorRT 集成(被稱作 TF-TRT)進(jìn)行改進(jìn)。。目前,TensorFlow Serving 1.13 已實(shí)現(xiàn)對(duì) TF-TRT 的支持,而不久后  TensorFlow 2.0 也將支持 TF-TRT 的實(shí)現(xiàn)。 

TensorFlow 攜手 NVIDIA,使用 TensorRT 優(yōu)化 TensorFlow Serving 性能

此前的一篇博客中,我們向大家介紹了怎樣如何借助 Docker 來(lái)使用 TensorFlow Serving。而在本文中,我們要展示的是:以同樣的方法來(lái)運(yùn)行經(jīng) TF-TRT 轉(zhuǎn)換的模型到底有多簡(jiǎn)單。一如既往地,我們嘗試將 ResNet 模型部署到生產(chǎn)環(huán)境中。下文的所有案例都在配備 Titan-V GPU 的工作站上運(yùn)行。

在 GPU 上使用 TensorFlow Serving 創(chuàng)建 ResNet

在本次練習(xí)中,我們簡(jiǎn)單地下載一個(gè)經(jīng)過(guò)預(yù)訓(xùn)練的 ResNet SavedModel:

$ 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
$ ls /tmp/resnet
1538687457

在此前的博客中,我們演示了如何使用 TensorFlow Serving CPU Docker 圖像來(lái)創(chuàng)建模型。在這里,我們運(yùn)行 GPU Docker 圖像(點(diǎn)擊查看相關(guān)說(shuō)明),從而借助 GPU 創(chuàng)建并測(cè)試此模型:

$ docker pull tensorflow/serving:latest-gpu
$ docker run --rm --runtime=nvidia -p 8501:8501 --name tfserving_resnet \ 


   -v /tmp/resnet:/models/resnet -e MODEL_NAME=resnet -t tensorflow/serving:latest-gpu &



… server.cc:313] Running gRPC ModelServer at 0.0.0.0:8500 …
… server.cc:333] Exporting HTTP/REST API at:localhost:8501 …


$ curl -o /tmp/resnet/resnet_client.py 

https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py
$ python /tmp/resnet/resnet_client.py
Prediction class: 286, avg latency: 18.0469 ms

docker run 命令會(huì)啟動(dòng) TensorFlow Serving 服務(wù)器,以提供 /tmp/resnet 中已下載的 SavedModel,并在主機(jī)中顯示 REST API 端口 8501。resnet_client.py 會(huì)給服務(wù)器發(fā)送一些圖像,并返回服務(wù)器所作的預(yù)測(cè)?,F(xiàn)在讓我們停止運(yùn)行 TensorFlow Serving 容器,來(lái)釋放其所占用的 GPU 資源:

$ docker kill tfserving_resnet

利用 TF-TRT 轉(zhuǎn)換和提供模型

現(xiàn)在,我們有了可以運(yùn)行的模型。為了能從 TensorRT 受益,我們需要在 TensorFlow Serving Docker 容器內(nèi)運(yùn)行轉(zhuǎn)換命令,從而將現(xiàn)有模型轉(zhuǎn)換為使用 TensorRT 運(yùn)行運(yùn)算的模型:

$ docker pull tensorflow/tensorflow:latest-gpu
$ docker run --rm --runtime=nvidia -it \
      -v /tmp:/tmp tensorflow/tensorflow:latest-gpu \
      /usr/local/bin/saved_model_cli convert \
      --dir /tmp/resnet/1538687457 \
      --output_dir /tmp/resnet_trt/1538687457 \
      --tag_set serve \
      tensorrt --precision_mode FP32 --max_batch_size 1 --

is_dynamic_op True

 在這里,我們運(yùn)行了 saved_model_cli 命令行工具,其中內(nèi)置了對(duì) TF-TRT 轉(zhuǎn)換的支持。--dir --output_dir 參數(shù)會(huì)告知它在哪里找到 SavedModel 以及輸出轉(zhuǎn)換后的 SavedModel,而 --tag_set 則讓它知道該轉(zhuǎn)換 SavedModel 中的哪張圖表。隨后,我們通過(guò)在命令行中傳遞 tensorrt 并指定配置,明確指示其運(yùn)行 TF-TRT 轉(zhuǎn)換器:

  • --precision_mode 參數(shù)讓轉(zhuǎn)換器知道所需用到的精度,目前它僅支持 FP32 和 FP16

  • --max_batch_size 參數(shù)確定輸入的批次大小的上限。此轉(zhuǎn)換器要求由 TensorRT 處理的所有張量將它們的首個(gè)維度作為批次維度,而該參數(shù)則讓它知道推理過(guò)程中會(huì)產(chǎn)生的最大值。如果已知推理過(guò)程中的實(shí)際批次大小上限,同時(shí)該值還能夠與之匹配,那么轉(zhuǎn)換后的模型就是最優(yōu)模型。要注意的是,轉(zhuǎn)換后的模型無(wú)法處理批次規(guī)模大于這里指定了大小的輸入,但對(duì)于批次規(guī)模更小的輸入,它還是能夠處理的。

  • --is_dynamic_op 參數(shù)讓它知道在模型運(yùn)行時(shí)進(jìn)行實(shí)際轉(zhuǎn)換。這是因?yàn)樵谵D(zhuǎn)換期間,TensorRT 需要知道所有的形狀。對(duì)于該案例中所使用的 ResNet 模型,它的張量沒(méi)有固定的形狀,這也是我們需要用到該參數(shù)的原因。

如此前一樣簡(jiǎn)單,我們現(xiàn)在只需為模型指定正確的目錄,便能利用 Docker 提供經(jīng) TF-TRT 轉(zhuǎn)換的模型:

$ docker run --rm --runtime=nvidia -p 8501:8501 \
      --name tfserving_resnet \
      -v /tmp/resnet_trt:/models/resnet \
      -e MODEL_NAME=resnet \
      -t tensorflow/serving:latest-gpu &

… server.cc:313] Running gRPC ModelServer at 0.0.0.0:8500 …
… server.cc:333] Exporting HTTP/REST API at:localhost:8501 …

之后向它發(fā)送請(qǐng)求:

$ python /tmp/resnet/resnet_client.py
Prediction class: 286, avg latency: 15.0287 ms

最后,停止運(yùn)行容器:

$ docker kill tfserving_resnet

我們可以看到,使用 TensorFlow Serving 和 Docker 生成經(jīng) TF-TRT 轉(zhuǎn)換的模型與創(chuàng)建一個(gè)普通的模型一樣簡(jiǎn)單。此外,作為一次演示,上文中的性能數(shù)值僅適用于我們所使用的模型和運(yùn)行該案例的設(shè)備,不過(guò)它的確體現(xiàn)出使用 TF-TRT 所帶來(lái)的性能優(yōu)勢(shì)。

接下來(lái)就輪到 TensorFlow 2.0 來(lái)實(shí)現(xiàn) TF-TRT 了,而 TensorFlow 團(tuán)隊(duì)和 NVIDIA 也正在合作以確保 TF-TRT 能在 2.0 中流暢運(yùn)行。大家可前往 TF-TRT 的 Github 開(kāi)源項(xiàng)目(https://github.com/tensorflow/tensorrt),查看更全面的信息。雷鋒網(wǎng)

via:https://medium.com/tensorflow/optimizing-tensorflow-serving-performance-with-nvidia-tensorrt-6d8a2347869a

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

TensorFlow 攜手 NVIDIA,使用 TensorRT 優(yōu)化 TensorFlow Serving 性能

分享:
相關(guān)文章
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)