色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

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

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

背景

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

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

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

隨著 OpenVINO 2023.0 版本的發布,OpenVINO 工具庫中預置了全新的 PyTorch 前端,為開發者們提供了一條全新的 PyTorch 模型支持路徑,帶來更友好的用戶體驗——OpenVINO 的 mo 工具可以直接將 PyTorch 模型對象轉化為 OpenVINO 的模型對象,開發者可以不需要將 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 內部,PyTorch 前端基于 TorchScript 進行模型導出,而 TorchScript 支持兩種模型導出模式,一種稱為 Tracing,一種稱為 Scripting。其中 Tracing 指的是 PyTorch 在模型運行時,追蹤運行經過的模塊算子,實時構建計算流圖,并最終總結為一種中間表示,Trace 是個雙刃劍,好處是用戶無需了解 Python 代碼個中細節,無論是 Function、Module 還是 Generators、Coroutines,Tracing 都會忠實地記錄下經過的 Tensor 以及 Tensor Function,非常適用于不涉及數據相關控制流的簡單模塊和功能,例如標準卷積神經網絡,壞處就在于 Tracing 不能感知控制流和計算圖的動態,如 if 語句或循環。比如他會把循環展開,一方面可能可以增加編譯優化的空間,另一方面如果該循環在不同 infer 的時候是動態變長的,那么 Tracing 不能感知到這一點,只會將 Tracing 時候的循環記錄下來。為了轉換包含依賴于數據的控制流的模塊和函數,提供了一種 Scripting 機制,Scripting 從 Python 源代碼級別進行解析,而非在運行時構建。Scripting 會去理解所有的 code,真正像一個編譯器一樣去進行語法分析等操作。Scripting 相當于一個嵌入在 Python/Pytorch 的DSL,其語法只是 PyTorch 語法的子集,這意味著存在一些 op 和語法 Scripting 不支持,這樣在編譯的時候就會遇到問題。

在剛剛的例子中 PyTorch 前端使用 Scripting 進行模型導出,如果想使用 Tracing 的方式,可以在接口中新增一個 example_input 參數,此時 PyTorch 前端會優先調用 Tracing 的方式,當 Tracing 的方式失敗后,再調用 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 支持的數據格式有:

· 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)

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

最后,如果開發者希望導出靜態 IR 文件以便后續使用,也可以調用以下接口,將 OpenVINO 的模型對象進行序列化:

serialize(ov_model, str(ir_model_xml))

二、BERT 模型案例實戰

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

1. 獲取 PyTorch 模型對象

torch_model = BertForSequenceClassification.from_pretrained(PRETRAINED_MODEL_DIR)

2. 設置模型參數并轉化為 OpenVINO 模型對象

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

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. 準備校驗數據集,并啟動量化

上一步中獲得的 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'}")

最終結果如下:

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

三、總結

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

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

    關注

    1

    文章

    3226

    瀏覽量

    48807
  • 深度學習
    +關注

    關注

    73

    文章

    5500

    瀏覽量

    121111
  • pytorch
    +關注

    關注

    2

    文章

    807

    瀏覽量

    13198

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

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

收藏 人收藏

    評論

    相關推薦

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

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

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

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

    Pytorch模型轉換為DeepViewRT模型時出錯怎么解決?

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

    如何將PyTorch模型OpenVINO trade結合使用?

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

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

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

    pytorch模型轉換需要注意的事項有哪些?

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

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

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

    區塊鏈的本質是什么 能否成為下個風口

    去中心化就像我們去購物一樣,賣方和我們直接了當的交易,沒有中間商差價,面對面,一個愿買一個愿賣而已,環節中百分百透明。
    發表于 11-02 09:09 ?782次閱讀
    區塊鏈的本質是什么 能否成為下個風口

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

    “開張了,開張了,AMD官方直賣網上線,沒有中間商差價”……
    發表于 07-12 15:36 ?1794次閱讀

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

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

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

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

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

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

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

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

    自訓練Pytorch模型使用OpenVINO?優化并部署在AI愛克斯開發板

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

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

    本文章將依次介紹如何將Pytorch自訓練模型經過一系列變換變成OpenVINO IR模型形式,而后使用OpenVINO Python AP
    的頭像 發表于 06-07 09:31 ?1985次閱讀
    如何將<b class='flag-5'>Pytorch</b>自訓練<b class='flag-5'>模型</b>變成<b class='flag-5'>OpenVINO</b> IR<b class='flag-5'>模型</b>形式
    主站蜘蛛池模板: 漂亮的保姆6在线观看中文| 超碰高清熟女一区二区| 四川少妇大战4黑人| 尿孔 调教 扩张| 女厕所边摸边吃奶边做爽视频| 蜜桃99影院| 蜜芽一区二区国产精品| 日韩欧美中文字幕一区| 日本一二三区视频在线| 三级中国免费的| 午夜影院一区二区三区| 忘忧草研究院一二三| 无码人妻少妇色欲AV一区二区 | 最近中文字幕2019免费版日本| 亚洲欧美免费无码专区| 亚洲日本欧美日韩高观看| 97色伦亚洲自偷| 99爱在线观看精品视频| 国产啪视频在线播放观看| 国产传媒在线观看| 国产精品视频大全| 久久99AV无色码人妻蜜| 久久精品中文字幕有码日本| 啦啦啦WWW在线观看免费高清版| 免费高清毛片| 亚洲欧美一区二区三区导航| WWW亚洲精品久久久乳| 国产成人无码精品久久久免费69 | 欧美高清一区二区三| 亚洲精品色情婷婷在线播放| 御姐被吸奶| ae58老司机福利| 国产电影无码午夜在线播放| 美女内射视频WWW网站午夜| 亚洲国产av| 中文字幕在线视频观看| 国产午夜不卡| 久久久午夜精品福利内容| 无码欧美毛片一区二区三在线视频| 99福利在线观看| 久久人人玩人妻潮喷内射人人|