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

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

0

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

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

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

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

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

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

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

在本次練習中,我們簡單地下載一個經過預訓練的 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 圖像來創(chuàng)建模型。在這里,我們運行 GPU Docker 圖像(點擊查看相關說明),從而借助 GPU 創(chuàng)建并測試此模型:

$ 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 命令會啟動 TensorFlow Serving 服務器,以提供 /tmp/resnet 中已下載的 SavedModel,并在主機中顯示 REST API 端口 8501。resnet_client.py 會給服務器發(fā)送一些圖像,并返回服務器所作的預測?,F(xiàn)在讓我們停止運行 TensorFlow Serving 容器,來釋放其所占用的 GPU 資源:

$ docker kill tfserving_resnet

利用 TF-TRT 轉換和提供模型

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

$ 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

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

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

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

  • --is_dynamic_op 參數(shù)讓它知道在模型運行時進行實際轉換。這是因為在轉換期間,TensorRT 需要知道所有的形狀。對于該案例中所使用的 ResNet 模型,它的張量沒有固定的形狀,這也是我們需要用到該參數(shù)的原因。

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

$ 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ā)送請求:

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

最后,停止運行容器:

$ docker kill tfserving_resnet

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

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

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

雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。

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

分享:
相關文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說