最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你用PyTorch部署模型的方法

 更新時(shí)間:2022年02月11日 10:57:01   作者:ronghuaiyang  
這篇文章主要介紹了用PyTorch部署模型的相關(guān)知識,演示了使用PyTorch最近發(fā)布的新工具torchserve來進(jìn)行PyTorch模型的部署的相關(guān)知識,需要的朋友可以參考下

導(dǎo)讀

演示了使用PyTorch最近發(fā)布的新工具torchserve來進(jìn)行PyTorch模型的部署。

最近,PyTorch推出了名為torchserve.的新生產(chǎn)框架來為模型提供服務(wù)。我們看一下今天的roadmap:

1、使用Docker安裝

2、導(dǎo)出模型

3、定義handler

4、保存模型

為了展示torchserve,我們將提供一個(gè)經(jīng)過全面訓(xùn)練的ResNet34進(jìn)行圖像分類的服務(wù)。

使用Docker安裝

官方文檔:https://github.com/pytorch/serve/blob/master/README.md##install-torchserve

安裝torchserve最好的方法是使用docker。你只需要把鏡像拉下來。

可以使用以下命令保存最新的鏡像。

docker pull pytorch/torchserve:latest

所有可用的tags:https://hub.docker.com/r/pytorch/torchserve/tags

關(guān)于docker和torchserve的更多信息:https://github.com/pytorch/serve#quick-start-with-docker

Handlers

官方文檔:https://github.com/pytorch/serve/blob/master/docs/custom_service.md

處理程序負(fù)責(zé)使用模型對一個(gè)或多個(gè)HTTP請求進(jìn)行預(yù)測。

默認(rèn) handlers

Torchserve支持以下默認(rèn) handlers

  • image_classifier
  • object_detector
  • text_classifier
  • image_segmenter

但是請記住,它們都不支持batching請求!

自定義 handlers

torchserve提供了一個(gè)豐富的接口,可以做幾乎所有你想做的事情。一個(gè)Handler是一個(gè)必須有三個(gè)函數(shù)的類。

  • preprocess
  • inference
  • postprocess

你可以創(chuàng)建你自己的類或者子類BaseHandler。子類化BaseHandler 的主要優(yōu)點(diǎn)是可以在self.model上訪問加載的模型。下面的代碼片段展示了如何子類化BaseHandler。

子類化BaseHandler以創(chuàng)建自己的handler

回到圖像分類的例子。我們需要

  • 從每個(gè)請求中獲取圖像并對其進(jìn)行預(yù)處理
  • 從模型中得到預(yù)測
  • 發(fā)送回一個(gè)響應(yīng)

預(yù)處理

.preprocess函數(shù)接受請求數(shù)組。假設(shè)我們正在向服務(wù)器發(fā)送一個(gè)圖像,可以從請求的databody字段訪問序列化的圖像。因此,我們可以遍歷所有請求并單獨(dú)預(yù)處理每個(gè)圖像。完整的代碼如下所示。

預(yù)處理每個(gè)請求中的每個(gè)圖像

self.transform是我們的預(yù)處理變換,沒什么花哨的。對于在ImageNet上訓(xùn)練的模型來說,這是一個(gè)經(jīng)典的預(yù)處理步驟。

我們的transform

在我們對每個(gè)請求中的每個(gè)圖像進(jìn)行預(yù)處理之后,我們將它們連接起來創(chuàng)建一個(gè)pytorch張量。

推理

在模型上進(jìn)行推理

這一步很簡單,我們從 .preprocess得到張量。然后對每幅圖像提取預(yù)測結(jié)果。

后處理

現(xiàn)在我們有了對每個(gè)圖像的預(yù)測,我們需要向客戶返回一些內(nèi)容。Torchserve總是返回一個(gè)數(shù)組BaseHandler也會(huì)自動(dòng)打開一個(gè).json 文件帶有index -> label的映射(稍后我們將看到如何提供這樣的文件),并將其存儲self.mapping中。我們可以為每個(gè)預(yù)測返回一個(gè)字典數(shù)組,其中包含labelindex 的類別。

把所有的東西打包到一起,我們的handler是這樣的:

因?yàn)樗械奶幚磉壿嫸挤庋b在一個(gè)類中,所以你可以輕松地對它進(jìn)行單元測試!

導(dǎo)出你的模型

官方文檔:https://github.com/pytorch/serve/tree/master/model-archiver#creating-a-model-archive

Torchserve 需要提供一個(gè).mar文件,簡而言之,該文件只是把你的模型和所有依賴打包在一起。要進(jìn)行打包,首先需要導(dǎo)出經(jīng)過訓(xùn)練的模型。

導(dǎo)出模型

有三種方法可以導(dǎo)出torchserve的模型。到目前為止,我發(fā)現(xiàn)的最好的方法是trace模型并存儲結(jié)果。這樣我們就不需要向torchserve添加任何額外的文件。

讓我們來看一個(gè)例子,我們將部署一個(gè)經(jīng)過充分訓(xùn)練的ResNet34模型。

按照順序,我們:

  • 加載模型
  • 創(chuàng)建一個(gè)dummy輸入
  • 使用torch.jit.trace來trace模型的輸入
  • 保存模型

創(chuàng)建 .mar 文件

官方文檔:https://github.com/pytorch/serve/blob/master/model-archiver/README.md

你需要安裝torch-model-archiver

git clone https://github.com/pytorch/serve.git
cd serve/model-archiver
pip install .

然后,我們準(zhǔn)備好通過使用下面的命令來創(chuàng)建.mar文件。

torch-model-archiver --model-name resnet34 \--version 1.0 \--serialized-file resnet34.pt \--extra-files ./index_to_name.json,./MyHandler.py \--handler my_handler.py  \--export-path model-store -f

按照順序。變量--model-name定義了模型的最終名稱。這是非常重要的,因?yàn)樗鼘⑹莈ndpoint的名稱空間,負(fù)責(zé)進(jìn)行預(yù)測。你還可以指定一個(gè)--version。--serialized-file指向我們之前創(chuàng)建的存儲的 .pt模型。--handler 是一個(gè)python文件,我們在其中調(diào)用我們的自定義handler。一般來說,是這樣的:

my_handler.py

它暴露了一個(gè)handle函數(shù),我們從該函數(shù)調(diào)用自定義handler中的方法。你可以使用默認(rèn)名稱來使用默認(rèn)handler(例如,--handler image_classifier)。

--extra-files中,你需要將路徑傳遞給你的handlers正在使用的所有文件。在本例中,我們必須向.json文件中添加路徑。使用所有人類可讀標(biāo)簽名稱,并在MyHandler.py 中定義每個(gè)類別。

如果你傳遞一個(gè)index_to_name.json文件,它將自動(dòng)加載到handler ,并通過self.mapping訪問。

--export-path就是 .mar存放的地方,我還添加了-f來覆蓋原有的文件。

如果一切順利的話,你可以看到resnet34.mar存放在./model-store路徑中。

用模型進(jìn)行服務(wù)

這是一個(gè)簡單的步驟,我們可以運(yùn)行帶有所有必需參數(shù)的torchserve docker容器。

docker run --rm -it \-p 3000:8080 -p 3001:8081 \-v $(pwd)/model-store:/home/model-server/model-store pytorch/torchserve:0.1-cpu \torchserve --start --model-store model-store --models resnet34=resnet34.mar

我將容器端口8080和8081分別綁定到3000和3001(8080/8081已經(jīng)在我的機(jī)器中使用)。然后,我從./model-store 創(chuàng)建一個(gè)volume。最后,我通過padding  model-store并通過key-value列表的方式指定模型的名稱來調(diào)用torchserve。

這里,torchserve有一個(gè)endpoint  /predictions/resnet34,我們可以通過發(fā)送圖像來預(yù)測。這可以使用curl來實(shí)現(xiàn)。

curl -X POST http://127.0.0.1:3000/predictions/resnet34 -T inputs/kitten.jpg

kitten.jpg

回復(fù):

{
  "label": "tiger_cat",
  "index": 282
}

工作正常!

總結(jié)

使用docker安裝torchserve

默認(rèn)以及自定義handlers

模型打包生成

使用docker提供模型服務(wù)到此這篇關(guān)于用PyTorch部署模型的文章就介紹到這了,更多相關(guān)PyTorch部署模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于git commit 命令解讀

    關(guān)于git commit 命令解讀

    這篇文章主要介紹了關(guān)于git commit 命令,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解git merge 與 git rebase的區(qū)別

    詳解git merge 與 git rebase的區(qū)別

    這篇文章主要介紹了詳解git merge 與 git rebase的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程

    網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程

    這篇文章主要介紹了網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程,需要的朋友可以參考下
    2016-10-10
  • 關(guān)于vs2019安裝不了擴(kuò)展問題的解決方法

    關(guān)于vs2019安裝不了擴(kuò)展問題的解決方法

    這篇文章主要介紹了關(guān)于vs2019安裝不了擴(kuò)展問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Git操作規(guī)范之tag的使用技巧詳解

    Git操作規(guī)范之tag的使用技巧詳解

    這篇文章主要為大家介紹了Git操作規(guī)范之tag的使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

    Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Git基礎(chǔ)學(xué)習(xí)中分支的基本操作,文中的示例代碼講解詳細(xì),對我們了解Git有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • git如何使用Sourcetree合并多次本地提交記錄

    git如何使用Sourcetree合并多次本地提交記錄

    這篇文章主要介紹了git如何使用Sourcetree合并多次本地提交記錄,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Jar包一鍵重啟的Shell腳本及新服務(wù)器部署的一些經(jīng)驗(yàn)分享

    Jar包一鍵重啟的Shell腳本及新服務(wù)器部署的一些經(jīng)驗(yàn)分享

    這篇文章主要介紹了Jar包一鍵重啟的Shell腳本及新服務(wù)器部署的一些經(jīng)驗(yàn),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • git merge最簡潔用法詳解

    git merge最簡潔用法詳解

    git-merge 命令是用于從指定的 commit(s) 合并到當(dāng)前分支的操作,本文重點(diǎn)給大家介紹git merge最簡潔用法,感興趣的朋友跟隨小編一起看看吧
    2020-12-12
  • github 常用命令總結(jié)大全

    github 常用命令總結(jié)大全

    這里整理了github 常用命令的知識,希望能幫助使用GitHub的朋友快速掌握常用命令,有需要的朋友參考下
    2016-09-09

最新評論

文化| 眉山市| 岳阳市| 宁阳县| 周至县| 黑山县| 礼泉县| 哈尔滨市| 寻甸| 和田市| 乌兰县| 彩票| 益阳市| 霍城县| 胶州市| 韶关市| 高州市| 常德市| 黄大仙区| 石林| 奇台县| 班戈县| 海阳市| 双峰县| 睢宁县| 台中县| 昆山市| 登封市| 定南县| 肃南| 和林格尔县| 江华| 武川县| 濮阳县| 宿迁市| 丹棱县| 沐川县| 达孜县| 崇信县| 连山| 个旧市|