在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內(nèi)不再提示

沒有“中間商賺差價”, OpenVINO? 直接支持 PyTorch 模型對象

OpenCV學堂 ? 來源:OpenCV學堂 ? 2023-06-27 16:39 ? 次閱讀

沒有“中間商賺差價”,OpenVINO直接支持 PyTorch 模型對象

背景

作為最熱門的開源深度學習框架之一,PyTorch 的易用性和靈活性使其深受學術(shù)和研究界的喜愛。之前 OpenVINO 對于 PyTorch 模型的支持也僅僅停留在 ONNX 過渡階段,需要通過將 PyTorch 動態(tài)模型導出為 ONNX 靜態(tài)格式后,才可以直接被 OpenVINO runtime 離線加載,雖然 PyTorch 也提供了官方的 torch.onnx.export 接口幫助開發(fā)者導出 ONNX 模型,但畢竟有這么一個“中間商”在那里,其中很多額外的配置工作也為 OpenVINO 開發(fā)者帶來了不便,諸如動態(tài)/靜態(tài)輸入設(shè)定,以及 opset 版本設(shè)定等。

一、OpenVINO 直接支持 PyTorch 模型對象

bdd45d18-14c1-11ee-962d-dac502259ad0.png

隨著 OpenVINO 2023.0 版本的發(fā)布,OpenVINO 工具庫中預置了全新的 PyTorch 前端,為開發(fā)者們提供了一條全新的 PyTorch 模型支持路徑,帶來更友好的用戶體驗——OpenVINO 的 mo 工具可以直接將 PyTorch 模型對象轉(zhuǎn)化為 OpenVINO 的模型對象,開發(fā)者可以不需要將 ONNX 模型作為中間過渡。

import torchvision import torch from openvino.tools.mo import convert_model model = torchvision.models.resnet50(pretrained=True) ov_model=convert_model(model)

對比以 ONNX 作為中間過度的方式,新 PyTorch 前端有以下特點:

bded37a2-14c1-11ee-962d-dac502259ad0.png

目前支持的 PyTorch 模型對象有:

· torch.nn.Module

· torch.jit.ScriptModule

· torch.jit.ScriptFunction

在 OpenVINO 內(nèi)部,PyTorch 前端基于 TorchScript 進行模型導出,而 TorchScript 支持兩種模型導出模式,一種稱為 Tracing,一種稱為 Scripting。其中 Tracing 指的是 PyTorch 在模型運行時,追蹤運行經(jīng)過的模塊算子,實時構(gòu)建計算流圖,并最終總結(jié)為一種中間表示,Trace 是個雙刃劍,好處是用戶無需了解 Python 代碼個中細節(jié),無論是 Function、Module 還是 Generators、Coroutines,Tracing 都會忠實地記錄下經(jīng)過的 Tensor 以及 Tensor Function,非常適用于不涉及數(shù)據(jù)相關(guān)控制流的簡單模塊和功能,例如標準卷積神經(jīng)網(wǎng)絡(luò),壞處就在于 Tracing 不能感知控制流和計算圖的動態(tài),如 if 語句或循環(huán)。比如他會把循環(huán)展開,一方面可能可以增加編譯優(yōu)化的空間,另一方面如果該循環(huán)在不同 infer 的時候是動態(tài)變長的,那么 Tracing 不能感知到這一點,只會將 Tracing 時候的循環(huán)記錄下來。為了轉(zhuǎn)換包含依賴于數(shù)據(jù)的控制流的模塊和函數(shù),提供了一種 Scripting 機制,Scripting 從 Python 源代碼級別進行解析,而非在運行時構(gòu)建。Scripting 會去理解所有的 code,真正像一個編譯器一樣去進行語法分析等操作。Scripting 相當于一個嵌入在 Python/Pytorch 的DSL,其語法只是 PyTorch 語法的子集,這意味著存在一些 op 和語法 Scripting 不支持,這樣在編譯的時候就會遇到問題。

在剛剛的例子中 PyTorch 前端使用 Scripting 進行模型導出,如果想使用 Tracing 的方式,可以在接口中新增一個 example_input 參數(shù),此時 PyTorch 前端會優(yōu)先調(diào)用 Tracing 的方式,當 Tracing 的方式失敗后,再調(diào)用 Scripting 方式。

import torchvision import torch from openvino.tools.mo import convert_model model = torchvision.models.resnet50(pretrained=True) ov_model=convert_model(model,example_input=torch.zeros(1,3,100,100))

目前 examle_input 支持的數(shù)據(jù)格式有:

· openvino.runtime.Tensor

· torch.Tensor

· np.ndarray

· listortuplewith tensors (openvino.runtime.Tensor/torch.Tensor/np.ndarray)

· dictionarywhere key is the input name, value is the tensor (openvino.runtime.Tensor/torch.Tensor/np.ndarray)

值得注意的是,以上兩個例子導出的均為動態(tài)輸入模型對象,如果想指定模型的輸入 shape,可以再次添加額外的參數(shù) input_shape/input, 將輸入 shape 作為參數(shù)傳入,選其一即可。案例可參考以下的實戰(zhàn)部分。

最后,如果開發(fā)者希望導出靜態(tài) IR 文件以便后續(xù)使用,也可以調(diào)用以下接口,將 OpenVINO 的模型對象進行序列化:

serialize(ov_model, str(ir_model_xml))

二、BERT 模型案例實戰(zhàn)

接下來我們通過一個實例來看下如何完成從 BERT 模型轉(zhuǎn)化到量化的全過程。

1. 獲取 PyTorch 模型對象

torch_model = BertForSequenceClassification.from_pretrained(PRETRAINED_MODEL_DIR)

2. 設(shè)置模型參數(shù)并轉(zhuǎn)化為 OpenVINO 模型對象

由于 BERT 是一個多輸入模型,這里額外添加了一個 input=input_info 參數(shù),可以用來指定多輸入模型中每一個 input 的 shape 以及數(shù)據(jù)類型。

input_shape = PartialShape([1, -1]) input_info = [("input_ids", input_shape, np.int64),("attention_mask", input_shape, np.int64),("token_type_ids", input_shape, np.int64)] default_input = torch.ones(1, MAX_SEQ_LENGTH, dtype=torch.int64) inputs = { "input_ids": default_input, "attention_mask": default_input, "token_type_ids": default_input, } model=convert_model(torch_model,example_input=inputs,input=input_info)

3. 準備校驗數(shù)據(jù)集,并啟動量化

上一步中獲得的 model 為 openvino.runtime.Model 類型,可以直接被 NNCF 工具加載

calibration_dataset = nncf.Dataset(data_source, transform_fn) # Quantize the model. By specifying model_type, we specify additional transformer patterns in the model. quantized_model = nncf.quantize(model, calibration_dataset, model_type=ModelType.TRANSFORMER)

4. 編譯量化后的模型對象,并進行推理

compiled_quantized_model = core.compile_model(model=quantized_model, device_name="CPU") output_layer = compiled_quantized_model.outputs[0] result = compiled_quantized_model(inputs)[output_layer] result = np.argmax(result) print(f"Text 1: {sample['sentence1']}") print(f"Text 2: {sample['sentence2']}") print(f"Thesamemeaning:{'yes'ifresult==1else'no'}")

最終結(jié)果如下:

Text 1: Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed . Text 2: It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . Thesamemeaning:yes

完整實例和性能精度比較,可以參考:

https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/105-language-quantize-bert/105-language-quantize-bert.ipynb

三、總結(jié)

作為近期發(fā)布的最新版本,OpenVINO 2023.0 中的 mo 工具可以在不需要通過 ONNX 中間過渡的情況下,直接將 PyTorch 模型對象轉(zhuǎn)化為 OpenVINO 對象,免去開發(fā)者離線轉(zhuǎn)化和額外配置的過程,帶來更友好的用戶體驗。鑒于該功能是預發(fā)布狀態(tài),可能存在部分算子不支持的情況,此時,開發(fā)者依舊可以使用之前的路徑,依托 ONNX 前端進行 PyTorch 模型的轉(zhuǎn)換。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3243

    瀏覽量

    48840
  • 深度學習
    +關(guān)注

    關(guān)注

    73

    文章

    5503

    瀏覽量

    121162
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13226

原文標題:沒有“中間商賺差價”, OpenVINO? 直接支持 PyTorch 模型對象

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    原廠直供TF卡、SD卡、U盤

    `本司自主品牌:偲鴿; 看圖說話,只做正品,價格優(yōu)美! 避免中間商差價,現(xiàn)原廠直供,需要的朋友滴滴曹生***,拿樣測試!`
    發(fā)表于 03-19 11:03

    怎樣使用PyTorch Hub去加載YOLOv5模型

    使用 PyTorch Hub 加載自定義 20 類VOC訓練的YOLOv5s 模型'best.pt'。TensorRT、ONNX 和 OpenVINO 模型
    發(fā)表于 07-22 16:02

    Pytorch模型轉(zhuǎn)換為DeepViewRT模型時出錯怎么解決?

    的 ONNX 模型。 但是,轉(zhuǎn)換過程終止時出現(xiàn)一條無用的錯誤消息:“ \'NoneType\' 類型的對象沒有 len() ”。 進行轉(zhuǎn)換時,我使用了 eIQ 門戶中的模型工具。
    發(fā)表于 06-09 06:42

    如何將PyTorch模型OpenVINO trade結(jié)合使用?

    無法確定如何轉(zhuǎn)換 PyTorch 掩碼 R-CNN 模型以配合OpenVINO?使用。
    發(fā)表于 08-15 07:04

    如何將Detectron2和Layout-LM模型轉(zhuǎn)換為OpenVINO中間表示(IR)和使用CPU插件進行推斷?

    無法確定如何將 Detectron2* 和 Layout-LM* 模型轉(zhuǎn)換為OpenVINO?中間表示 (IR) 和使用 CPU 插件進行推斷。
    發(fā)表于 08-15 06:23

    pytorch模型轉(zhuǎn)換需要注意的事項有哪些?

    ,并且可以更積極地進行優(yōu)化。 支持什么格式的pytorch模型? 答:Sophon的PyTorch模型編譯工具BMNETP只接受
    發(fā)表于 09-18 08:05

    沒有中間商差價 筆記本機械革命S1官網(wǎng)神劵低價巨給力

    資本驅(qū)動的消費市場,是通過一級一級利益剝削維持運作的。用咱們老百姓的話講,10塊錢的東西從廠子里出來,讓中間商倒賣幾手就成了20塊,批發(fā)的貨永遠比零售的便宜,也是這個道理。一般的日用消耗品都是
    發(fā)表于 06-29 10:27 ?1004次閱讀

    區(qū)塊鏈的本質(zhì)是什么 能否成為下個風口

    去中心化就像我們?nèi)ベ徫镆粯樱u方和我們直接了當?shù)慕灰祝?b class='flag-5'>沒有中間商差價,面對面,一個愿買一個愿賣而已,環(huán)節(jié)中百分百透明。
    發(fā)表于 11-02 09:09 ?787次閱讀
    區(qū)塊鏈的本質(zhì)是什么 能否成為下個風口

    AMD官方開始直賣顯卡及處理器

    “開張了,開張了,AMD官方直賣網(wǎng)上線,沒有中間商差價”……
    發(fā)表于 07-12 15:36 ?1799次閱讀

    英偉達和AMD等廠商直接銷售新產(chǎn)品并砍掉中間商

    PS5、XSX和新30系顯卡的熱銷以及疫情影響下的供貨不足,導致了大量黃牛的出現(xiàn),將新硬件的價格炒高。近日,id Software的聯(lián)合創(chuàng)始人John Carmack認為,鑒于全球硬件短缺,為了透明起見,索尼、微軟、英偉達和AMD這些大廠應(yīng)該直接銷售新產(chǎn)品,并砍掉中間商
    的頭像 發(fā)表于 02-22 09:16 ?1419次閱讀

    大牛建議廠商可砍掉中間商直接銷售顯卡等

    PS5、XSX和新30系顯卡的熱銷以及疫情影響下的供貨不足,導致了大量黃牛的出現(xiàn),將新硬件的價格炒高。近日,id Software的聯(lián)合創(chuàng)始人John Carmack認為,鑒于全球硬件短缺,為了透明起見,索尼、微軟、英偉達和AMD這些大廠應(yīng)該直接銷售新產(chǎn)品,并砍掉中間商
    的頭像 發(fā)表于 02-22 10:58 ?1448次閱讀

    解析OpenVINO? + SSD 實時對象檢測

    。 SSD對象檢測模型 對象檢測是計算機視覺核心任務(wù)之一,也是最常見與應(yīng)用最廣泛的視覺場景。OpenVINO 已經(jīng)提供了以下通用場景下的對象
    的頭像 發(fā)表于 05-18 09:35 ?1956次閱讀
    解析<b class='flag-5'>OpenVINO</b>? + SSD 實時<b class='flag-5'>對象</b>檢測

    OpenVINO模型優(yōu)化實測:PC/NB當AI辨識引擎沒問題!

    這次我們將會自制一個CNN分類器,并透過OpenVINO模型轉(zhuǎn)換程序轉(zhuǎn)換成IR模型,并進行模型效能與正確率分析。依據(jù)Intel官方網(wǎng)站的說明,Op
    的頭像 發(fā)表于 12-09 16:13 ?2399次閱讀

    自訓練Pytorch模型使用OpenVINO?優(yōu)化并部署在AI愛克斯開發(fā)板

    本文章將依次介紹如何將 Pytorch 自訓練模型經(jīng)過一系列變換變成 OpenVINO IR 模型形式,而后使用 OpenVINO Pyth
    的頭像 發(fā)表于 05-26 10:23 ?942次閱讀
    自訓練<b class='flag-5'>Pytorch</b><b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>?優(yōu)化并部署在AI愛克斯開發(fā)板

    如何將Pytorch自訓練模型變成OpenVINO IR模型形式

    本文章將依次介紹如何將Pytorch自訓練模型經(jīng)過一系列變換變成OpenVINO IR模型形式,而后使用OpenVINO Python AP
    的頭像 發(fā)表于 06-07 09:31 ?2010次閱讀
    如何將<b class='flag-5'>Pytorch</b>自訓練<b class='flag-5'>模型</b>變成<b class='flag-5'>OpenVINO</b> IR<b class='flag-5'>模型</b>形式
    主站蜘蛛池模板: 扒开双腿猛进湿润18p| 亚洲伦理一区| 久久观看午夜精品| 久久成人影视| 国产亚洲欧美日韩俺去了| 高h肉宠文1v1男男| 特级毛片aaa免费版| 一区二区三区四区视频在线 | 亚洲国内精品| 色多多网| 久久久噜久噜久久gif动图| 国内免费视频成人精品| 亚洲免费小视频| 毛片污| 一区在线播放| 欧美性video精品| 国产精品美女免费视频大全| 91美女在线播放| 99久精品| 亚洲禁片| 正在播放一区二区| 特黄黄三级视频在线观看| 大量喷潮free| 97人人草| avtom影院永久转四虎入口| 男人j桶进女人免费视频| 中出丰满大乳中文字幕| 亚洲综合激情九月婷婷| 亚洲福利片| 波多野结衣在线观看一区二区三区 | 狠狠干夜夜| 久久精品隔壁老王影院| 分分精品| 欧美色p| 人人草人| 亚洲444444在线观看| 午夜色a大片在线观看免费| 天堂资源在线中文| 日本大片免费观看视频| 亚洲天天干| 男人一级片|