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

Pytorch基礎(chǔ)教程之torchserve模型部署解析

 更新時間:2023年07月14日 08:50:16   作者:山頂夕景  
torchserve是基于netty網(wǎng)絡(luò)框架實現(xiàn)的,底層使用EpollServerSocketChannel服務(wù)進行網(wǎng)絡(luò)通信,通過epoll多路復(fù)用技術(shù)實現(xiàn)高并發(fā)網(wǎng)絡(luò)連接處理,這篇文章主要介紹了Pytorch基礎(chǔ)教程之torchserve模型部署和推理,需要的朋友可以參考下

note

  • torch-model-archiver打包模型;利用torchserve加載前面打包的模型,并以grpc和http等接口往外提供推理服務(wù)
    • 自定義handler類時initialize()、preprocess()、postprocess()和handle()這四個方法都是可選的
  • 啟動模型的api服務(wù)、curl命令發(fā)送http post請求,請求模型服務(wù)API;流程和TensorFlow serving流程大同小異
  • torchserve是基于netty網(wǎng)絡(luò)框架實現(xiàn)的,底層使用EpollServerSocketChannel服務(wù)進行網(wǎng)絡(luò)通信,通過epoll多路復(fù)用技術(shù)實現(xiàn)高并發(fā)網(wǎng)絡(luò)連接處理。

一、torchserve和archiver模塊

在這里插入圖片描述

  • 模型部署需要用到兩個模塊
  • torchserve用來模型部署
  • torch-model-archiver打包模型
pip:
    - torch-workflow-archiver
    - torch-model-archiver 
    - torchserve 

二、Speech2Text Wav2Vec2模型部署

2.1 準備模型和自定義handler

  • Wav2Vec2語音轉(zhuǎn)文本的模型。這里我們?yōu)榱撕喕鞒虖膆uggingface下載對應(yīng)的模型,進行本地化利用torchserve部署
  • hander將原始data進行轉(zhuǎn)為模型輸入所需的格式;nlp中很多任務(wù)可以直接用torchtext的text_classifier。
# 1. 導(dǎo)入huggingface模型
from transformers import AutoModelForCTC, AutoProcessor
import os
modelname = "facebook/wav2vec2-base-960h"
model = AutoModelForCTC.from_pretrained(modelname)
processor = AutoProcessor.from_pretrained(modelname)
modelpath = "model"
os.makedirs(modelpath, exist_ok=True)
model.save_pretrained(modelpath)
processor.save_pretrained(modelpath)
# 2. 自定義handler
import torch
import torchaudio
from transformers import AutoProcessor, AutoModelForCTC
import io
class Wav2VecHandler(object):
    def __init__(self):
        self._context = None
        self.initialized = False
        self.model = None
        self.processor = None
        self.device = None
        # Sampling rate for Wav2Vec model must be 16k
        self.expected_sampling_rate = 16_000
    def initialize(self, context):
        """Initialize properties and load model"""
        self._context = context
        self.initialized = True
        properties = context.system_properties
        # See https://pytorch.org/serve/custom_service.html#handling-model-execution-on-multiple-gpus
        self.device = torch.device("cuda:" + str(properties.get("gpu_id")) if torch.cuda.is_available() else "cpu")
        model_dir = properties.get("model_dir")
        self.processor = AutoProcessor.from_pretrained(model_dir)
        self.model = AutoModelForCTC.from_pretrained(model_dir)
    def handle(self, data, context):
        """Transform input to tensor, resample, run model and return transcribed text."""
        input = data[0].get("data")
        if input is None:
            input = data[0].get("body")
        # torchaudio.load accepts file like object, here `input` is bytes
        model_input, sample_rate = torchaudio.load(io.BytesIO(input), format="WAV")
        # Ensure sampling rate is the same as the trained model
        if sample_rate != self.expected_sampling_rate:
            model_input = torchaudio.functional.resample(model_input, sample_rate, self.expected_sampling_rate)
        model_input = self.processor(model_input, sampling_rate = self.expected_sampling_rate, return_tensors="pt").input_values[0]
        logits = self.model(model_input)[0]
        pred_ids = torch.argmax(logits, axis=-1)[0]
        output = self.processor.decode(pred_ids)
        return [output]

在自定義 Handler 中,需要實現(xiàn)以下方法:

  • initialize: 用于初始化模型,加載權(quán)重等操作。
  • preprocess: 用于將原始輸入數(shù)據(jù)轉(zhuǎn)換為 PyTorch 張量。
  • inference: 用于執(zhí)行模型推理。
  • postprocess: 用于將模型輸出轉(zhuǎn)換為 API 輸出格式。

2.2 打包模型和啟動模型api服務(wù)

  • 可以直接在linux環(huán)境的terminal進行如下相關(guān)操作(打包模型、啟動模型的api服務(wù)、curl命令發(fā)送http post請求,請求模型服務(wù)API)
  • curl命令發(fā)送http post請求,請求模型服務(wù)API,如果遇到報錯java.lang.NoSuchMethodError: java.nio.file.Files.readString(Ljava/nio/file/Path;)Ljava/lang/String;則應(yīng)該是JRE沒有安裝或者需要升級:sudo apt install default-jre即可。
  • curl那坨后正常會返回I HAD THAT CURIOSITY BESIDE ME AT THIS MOMENT%,測試數(shù)據(jù)是一段簡單的sample.wav語音文件
  • Waveform Audio File Format(WAVE,又或者是因為WAV后綴而被大眾所知的),它采用RIFF(Resource Interchange File Format)文件格式結(jié)構(gòu)。通常用來保存PCM格式的原始音頻數(shù)據(jù),所以通常被稱為無損音頻
# 打包部署模型文件, 把model部署到torchserve 
torch-model-archiver --model-name Wav2Vec2 --version 1.0 --serialized-file model/pytorch_model.bin --handler ./handler.py --extra-files "model/config.json,model/special_tokens_map.json,model/tokenizer_config.json,model/vocab.json,model/preprocessor_config.json" -f
mv Wav2Vec2.mar model_store
# 啟動model服務(wù), 加載前面打包的model, 并以grpc和http接口向外提供推理服務(wù)
torchserve --start --model-store model_store --models Wav2Vec2=Wav2Vec2.mar --ncs
# Once the server is running, let's try it with:
curl -X POST http://127.0.0.1:8080/predictions/Wav2Vec2 --data-binary '@./sample.wav' -H "Content-Type: audio/basic"
# 暫停torchserve serving
torchserve --stop

2.3 相關(guān)參數(shù)記錄

torch-model-archiver:用來打包模型

  • model-name: 設(shè)定部署的模型名稱
  • version: 設(shè)定部署的模型版本
  • model-file: 定義模型結(jié)構(gòu)的python文件
  • serialized-file: 設(shè)定訓(xùn)練模型保存的pth文件
  • export-path: 設(shè)定打包好的模型保存路徑
  • extra-files: 設(shè)定額外的文件,如label跟id映射的定義文件等,用于一并打包到模型壓縮包中
  • handler: 為一個處理器,用來指定模型推理預(yù)測前后的數(shù)據(jù)的處理問題;如 nlp模型中的文本分詞和轉(zhuǎn)換為id的步驟;以及分類問題中,模型預(yù)測結(jié)果映射為具體的label等數(shù)據(jù)處理功能
torch-model-archiver:用來打包模型
usage: torch-model-archiver [-h] --model-name MODEL_NAME
                            [--serialized-file SERIALIZED_FILE]
                            [--model-file MODEL_FILE] --handler HANDLER
                            [--extra-files EXTRA_FILES]
                            [--runtime {python,python2,python3}]
                            [--export-path EXPORT_PATH]
                            [--archive-format {tgz,no-archive,default}] [-f]
                            -v VERSION [-r REQUIREMENTS_FILE]

torchserve:該組件用來加載前面打包的模型,并以grpc和http等接口往外提供推理服務(wù)

  • start 和 stop: 即推理服務(wù)的啟動和停止;
  • model-store: 打包模型存儲的路徑;
  • models: 設(shè)定模型名稱和模型文件名,如:MODEL_NAME=MODEL_PATH2 格式;
  • no-config-snapshots: 即 --ncs,用來設(shè)置防止服務(wù)器存儲配置快照文件;

Reference

[1] https://github.com/pytorch/serve

[2] Torch Model archiver for TorchServe

[3] https://github.com/pytorch/serve/tree/master/examples/speech2text_wav2vec2

[4] https://huggingface.co/docs/transformers/model_doc/wav2vec2

[5] https://github.com/pytorch/serve/tree/master/model-archiver

[6] pytorch 模型部署.nlper

[7] cURL - 學(xué)習(xí)/實踐

[8] Serving PyTorch Models Using TorchServe(by using transformer model for example)

[9] 四種常見的 POST 提交數(shù)據(jù)方式

[10] TorchServe 詳解:5 步將模型部署到生產(chǎn)環(huán)境

[11] PyTorch最新工具torchserve用于0.部署模型

到此這篇關(guān)于Pytorch基礎(chǔ)教程之torchserve模型部署和推理的文章就介紹到這了,更多相關(guān)torchserve模型部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何使用pymongo連接MongoDB數(shù)據(jù)庫并進行相關(guān)操作

    Python如何使用pymongo連接MongoDB數(shù)據(jù)庫并進行相關(guān)操作

    PyMongo是驅(qū)動程序,使python程序能夠使用Mongodb數(shù)據(jù)庫,使用python編寫而成,下面這篇文章主要給大家介紹了關(guān)于Python如何使用pymongo連接MongoDB數(shù)據(jù)庫并進行相關(guān)操作的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • PyTorch 實現(xiàn)L2正則化以及Dropout的操作

    PyTorch 實現(xiàn)L2正則化以及Dropout的操作

    這篇文章主要介紹了PyTorch 實現(xiàn)L2正則化以及Dropout的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python創(chuàng)建一個功能齊全的隨機驗證碼生成器

    Python創(chuàng)建一個功能齊全的隨機驗證碼生成器

    驗證碼通過生成一張包含難以識別的文本、數(shù)字或圖像的圖像,要求用戶正確輸入其中的內(nèi)容,用于驗證用戶身份,本篇教程將帶領(lǐng)您一步步使用Python創(chuàng)建一個功能齊全的隨機驗證碼生成器,我們將通過導(dǎo)入必要的庫、定義輔助函數(shù)以及編寫主函數(shù)check_code()
    2024-04-04
  • Python面向?qū)ο蟪绦蛟O(shè)計之類和對象、實例變量、類變量用法分析

    Python面向?qū)ο蟪绦蛟O(shè)計之類和對象、實例變量、類變量用法分析

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計之類和對象、實例變量、類變量用法,結(jié)合實例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計中類和對象、實例變量、類變量具體功能、原理、使用方法與操作注意事項,需要的朋友可以參考下
    2020-03-03
  • Python利用Gradio與EasyOCR構(gòu)建在線識別文本的Web應(yīng)用

    Python利用Gradio與EasyOCR構(gòu)建在線識別文本的Web應(yīng)用

    隨著人工智能的不斷發(fā)展,各種智能算法越來越普遍,本文就給大家介紹一種通過訓(xùn)練好的算法進行文字識別的方法,而且是Web頁面可視化操作,方便調(diào)用,希望大家喜歡
    2023-04-04
  • python實現(xiàn)布爾型盲注的示例代碼

    python實現(xiàn)布爾型盲注的示例代碼

    這篇文章主要介紹了python實現(xiàn)sql布爾盲注的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python中字典的基本知識初步介紹

    Python中字典的基本知識初步介紹

    這篇文章主要介紹了Python中字典的基本知識初步介紹,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 如何對Python編譯PyInstaller打包生成的exe文件進行反編譯生成pyc、py源代碼文件

    如何對Python編譯PyInstaller打包生成的exe文件進行反編譯生成pyc、py源代碼文件

    很多開發(fā)者沒有發(fā)布源程序代碼,而是將代碼封裝為exe可執(zhí)行文件,這樣不僅更有利于程序傳播,下面這篇文章主要介紹了如何對Python編譯PyInstaller打包生成的exe文件進行反編譯生成pyc、py源代碼文件的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Python全棧之文件函數(shù)和函數(shù)參數(shù)

    Python全棧之文件函數(shù)和函數(shù)參數(shù)

    這篇文章主要為大家介紹了Python的文件函數(shù)和函數(shù)參數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python中的accumulate()函數(shù)示例詳解

    python中的accumulate()函數(shù)示例詳解

    accumulate 函數(shù)是Python標準庫 itertools 模塊中的一個函數(shù),用于生成累積計算的結(jié)果,這篇文章主要介紹了python中的accumulate()函數(shù),需要的朋友可以參考下
    2023-09-09

最新評論

通河县| 宁陕县| 三台县| 弋阳县| 墨脱县| 太原市| 镇平县| 萝北县| 晋宁县| 综艺| 岳西县| 安远县| 孙吴县| 三门峡市| 甘泉县| 浙江省| 万荣县| 张北县| 林周县| 岳普湖县| 乡宁县| 彰化市| 乃东县| 连平县| 含山县| 新和县| 巴彦淖尔市| 韶山市| 铜川市| 灵寿县| 诸城市| 淳安县| 浦城县| 阳山县| 黑水县| 柞水县| 辉南县| 雷山县| 桓台县| 合肥市| 定日县|