AI芯片應用開發實踐:深度學習算法與芯片設計 課件 第六章 模型的推理框架-ONNX Runtime_第1頁
AI芯片應用開發實踐:深度學習算法與芯片設計 課件 第六章 模型的推理框架-ONNX Runtime_第2頁
AI芯片應用開發實踐:深度學習算法與芯片設計 課件 第六章 模型的推理框架-ONNX Runtime_第3頁
AI芯片應用開發實踐:深度學習算法與芯片設計 課件 第六章 模型的推理框架-ONNX Runtime_第4頁
AI芯片應用開發實踐:深度學習算法與芯片設計 課件 第六章 模型的推理框架-ONNX Runtime_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章模型的推理框架——ONNXRuntimeONNXRuntime概述ONNXRuntime推理流程ONNX格式轉換工具目錄CONTENTSONNXRuntime示例本章小結ONNXRuntime概述01ONNXRuntime是由微軟開發和維護的深度學習模型推理引擎,設計用于提供高性能、跨平臺的解決方案,適用于各種操作系統和硬件平臺。它支持ONNX(OpenNeuralNetworkExchange)格式,這是一個開放標準,允許在不同深度學習框架之間共享模型。ONNXRuntime針對不同硬件平臺進行優化,利用硬件加速(如GPU),實現快速模型推理。ONNXRuntime的簡介ONNXRuntime的特點支持多種操作系統,包括Windows、Linux和macOS。支持多種硬件平臺,如CPU、GPU和輔助加速器。跨平臺性根據ONNX格式設計,支持使用不同深度學習框架訓練的模型。支持多種深度學習框架,包括PyTorch、TensorFlow、Caffe2等。高兼容性提供模型優化、量化和多線程執行等高級功能,進一步提高性能和資源利用率。高性能ONNXRuntime推理流程02安裝環境安裝scikit-learn使用命令pipinstallscikit-learn安裝scikit-learn庫,這是一個流行的機器學習庫,包括各種用于機器學習和數據分析的工具。安裝ONNX及相關依賴安裝ONNX庫及其相關依賴,以支持深度學習模型的加載和保存。安裝scikit-learn到ONNX模型的轉換器,以便將scikit-learn模型導出為ONNX格式。安裝ONNXRuntime安裝ONNXRuntime,這是一個用于在不同硬件上執行ONNX模型的運行時引擎。可選擇安裝CPU版本或GPU版本,具體取決于硬件支持。訓練模型5輸出:輸出顯示訓練好的邏輯回歸模型的一些參數,包括max_iter參數。2數據拆分:使用train_test_split函數將數據集分成訓練集和測試集。4訓練模型:使用fit方法來訓練邏輯回歸模型。1導入數據:數據集包括三個不同種類的鳶尾花的測量數據,X包含特征,Y包含目標類別。3選擇分類器:選擇邏輯回歸分類器,并設置max_iter參數以確保模型在訓練時收斂。使用scikit-learn提供的Iris數據集進行模型訓練。將模型轉換導出為ONNX格式ONNX是一種用于表示深度學習模型的開放格式,它定義了一組和環境、平臺均無關的標準格式。將機器學習模型轉換并導出為ONNX格式通常涉及使用相應的工具和庫來執行此操作。一般包括以下步驟:選擇支持ONNX的框架、安裝ONNX工具和使用框架提供的工具將模型導出為ONNX格式。以PyTorch為例,首先確保已經安裝了PyTorch和ONNX工具,接下來進行以下步驟:1)導入所需要的庫,2)加載已經訓練好的PyTorch模型,3)準備輸入數據,4)到處模型為ONNX。010203使用ONNXRuntime加載運行模型使用ONNXRuntime加載和運行ONNX模型,首先加載ONNX模型,創建ONNXRuntime的推理會話。ONNX格式轉換工具03使用ONNXRuntime加載運行模型

MXNet是一款強大的深度學習框架,旨在支持廣泛的機器學習模型開發和訓練,尤其是深度神經網絡。MXNet到ONNX輸出模塊(mx2onnx)的重大更新,支持動態輸入形狀,使用戶能夠更靈活地處理各種輸入數據。并提供廣泛的運算符和模型覆蓋,從而增強深度學習模型的兼容性和性能。這些改進使MXNet成為開發者和研究人員的首選工具,用于構建、訓練和部署復雜的神經網絡,應用于計算機視覺、自然語言處理,以及各種其他領域的人工智能應用。接下來是在MXNet中應用mx2onnx輸出程序,特別是在預訓練模型上的應用,借助MXNet的強大功能,將深度學習模型轉換為ONNX格式,以滿足不同平臺和框架的需求。前提條件:確保已經安裝了MXNet和ONNX的Python庫。從MXNet模型庫下載模型:在使用MXNet將深度學習模型轉換為ONNX之前,需下載預訓練的模型和與之相關的標簽文件。MXNet到ONNX導出器(mx2onnx)API:MXNet提供了mx2onnx輸出模塊,它允許將MXNet模型導出為ONNX格式。

APIexport_model可以通過以下方式接受MXNet模型,以便在不同場景中靈活應用。(1)使用MXNet導出JSON和Params文件(2)使用MXNetSymbol和Params對象(3)使用mx2onnx導出模型(4)動態輸入形狀(5)驗證導出的ONNX模型(6)簡化導出的ONNX模型TensorFlow轉換成ONNXTensorFlow模型(包括Keras和TFLite模型)使用tf20nnx工具轉換成ONNX格式模型。(1)安裝tensorflow和tf2onnx,(2)使用tf2onnx提供的API轉換Keras模型。(2)使用命令行轉換TensorFlow模型。(3)使用命令行轉換TFLite模型。(4)驗證轉換的模型。PyTorch轉換成ONNX將PyTorch模型轉換為ONNX格式,并使用ONNXRuntime來運行這些模型。(1)安裝onnx和onnxruntime,onnx庫用于創建和操作ONNX模型,而onnxruntime庫提供了高性能的運行時引擎,用于在不同平臺上運行ONNX模型。(2)使用torch.onnx.export函數將PyTorch模型轉換為ONNX格式。(3)運行ONNX模型。運行ONNX模型需要加載已經轉換為ONNX格式的模型,使用onnx.checker.check_model函數來檢查模型的有效性,使用ONNXRuntime來運行模型。(4)參數說明。這一步驟中,提供有關函數參數的更多解釋。(5)比對ONNX和PyTorch模型的輸出。使用Numpy庫進行輸出比對,能夠確保ONNX模型和PyTorch模型的輸出非常接近,即它們的誤差很小。ONNXRuntime示例:邏輯回歸算法04ONNXRuntime模型運行過程(1)使用選中的框架訓練模型。(2)將模型轉換或導出為ONNX格式。(3)使用ONNXRuntime加載并運行模型。

ONNXRuntime提供了一種在CPU或GPU上運行高性能機器學習模型的簡單方法,而無需依賴訓練框架。機器學習框架通常針對批處理訓練進行優化而不是預測,預測在應用程序、站點和服務中更常見。整體流程如下:

在Ubuntu上驗證學習,使用scikit-learn訓練模型,將其轉換成ONNX格式并運行。

注意:如果安裝過程缺少其他文件,請自行搜索并進行安裝。(1)在Ubuntu上,安裝scikit-learn。(2)在Ubuntu上,安裝ONNX以及相關依賴。(3)在Ubuntu上,安裝ONNXRuntime。(4)驗證安裝。訓練模型使用sklearn中提供的Iris數據集進行模型訓練,代碼如下。輸出結果如下。將模型轉換導出為ONNX格式使用ONNXMLTools將模型轉換并導出為ONNX格式,代碼如下。代碼運行結束后將在程序目錄創建logreg_iris.onnx文件。使用ONNXRuntime加載運行模型使用ONNXRuntime計算此機器學習模型的預測結果,代碼如下。輸出的預測結果如下。訓練ONNXRuntime中實現邏輯回歸算法實例模型

邏輯回歸是一種用于解決分類問題的統計學習方法,盡管其名稱中包含“回歸”一詞,但邏輯回歸實際上是一種分類算法。用于將輸入數據分為兩個或多個不同的類別。邏輯回歸通常被用于二元分類問題,目標是將數據分為兩個類別(通常是0和1),他也可以用于多類分類問題。以下是邏輯回歸的主要特點和工作原理。線性模型:邏輯回歸基于一個線性模型,通過線性組合輸入特征的權重來預測輸出。Sigmoid函數:Sigmoid函數是邏輯回歸中的核心部分,它將線性組合的結果轉換為概率值。決策邊界:邏輯回歸將數據映射到概率空間,然后根據一個閾值(通常是0.5)將數據分為兩個類別。最大似然估計:邏輯回歸的訓練過程設計參數的估計,通常使用最大似然估計來確定最佳參數值。特征工程:邏輯回歸的性能通常受到特征選擇和工程的影響,選擇重要特征并進行必要的數據處理是提高模型性能的關鍵。

邏輯回歸通常在線性可分的問題上表現較好,但對于非線性問題,可能需要引入特征工程或使用更復雜的分類算法。下面是一個基于scikit-learn訓練的邏輯回歸模型示例,具體步驟如下。訓練ONNXRuntime中實現邏輯回歸算法實例模型(1)導入所需的相關庫。訓練ONNXRuntime中實現邏輯回歸算法實例模型(2)創建并訓練邏輯回歸函數。訓練ONNXRuntime中實現邏輯回歸算法實例模型(3)輸入測試數據,對模型進行測試。本章小結05本章小結本章介紹了ONNXRuntime在深度學習模型推理方面的應用。對ONNXRuntime進行了概述,詳細介紹了ONNXRuntime的推理流程,幫助讀者理解ONNXRuntime在模型推理過程中的工作原理。介紹了ONNX格式轉化工具,以邏輯回歸算法為例,演示了如何使用ONNXRuntime實現模型推理。本章習題06本章習題本ONNXRuntime為什么被稱為模型的推薦框架?在ONNXRuntime中,訓練模型的過程包括哪些步驟?如何將訓練好的模型轉換并導出為ONNX格式?使用ONNXRuntime加載和運行模型的步驟是什么?如何將訓練好的模型轉換并導出為ONNX格式?使用ONNXRuntime加載和運行模型的步驟是什么?MXNet、

Tensorflow和PyTorch分別如何將模型轉換成ONNX格式?ONNX

Runtime示例中的邏輯回歸算法是基于哪個機器學習庫的?

ONNX

Runtime模型運行過程中是否需要進行模型訓練?在ONNX

Runtime示例中,如何將訓練好的邏輯回歸模型導出為ONNX格式?使用ONNX

Runtime加載和運行邏輯回歸模型的具體步驟是什么?本章的主要內容是什么,可以用幾句話概括?ONNXRuntime被稱為模型的推理框架,主要基于以下幾點原因:(1)專注于推理任務ONNXRuntime是一個高性能的推理引擎,專門用于執行ONNX格式的模型。它通過優化模型的執行過程,提供高效的推理性能,而無需關心模型的訓練過程。(2)支持多種硬件和操作系統ONNXRuntime支持多種硬件平臺(如CPU、GPU、FPGA等)以及多種操作系統(如Windows、Linux、macOS等),能夠靈活地在不同環境中運行。這種跨平臺特性使其能夠廣泛應用于桌面、服務器、邊緣設備等多種場景。(3)高性能優化ONNXRuntime提供了一系列優化技術,如算子融合、內核優化、量化、多線程支持等。這些優化措施能夠顯著提升模型的推理速度和資源利用效率,尤其在大規模數據處理和實時應用中表現出色。(4)跨框架兼容性ONNXRuntime能夠無縫連接多種深度學習框架(如PyTorch、TensorFlow、Keras等),并運行這些框架生成的ONNX模型。這種跨框架的兼容性使得開發者可以輕松地將不同框架訓練的模型轉換為ONNX格式,并使用ONNXRuntime進行推理。(5)簡化部署流程通過ONNXRuntime,開發者可以將模型從訓練框架中解耦,直接使用統一的推理引擎進行部署。這不僅減少了對原始框架的依賴,還簡化了環境配置和部署流程。(6)易于集成ONNXRuntime提供了簡單易用的API,支持Python、C++、C#和Java等多種編程語言。開發者可以輕松地將其集成到現有的應用程序中,快速實現模型的推理功能。綜上所述,ONNXRuntime通過其高效性、兼容性和易用性,成為了模型推理的理想選擇,也因此被稱為模型的推理框架。習題答案習題1在ONNXRuntime中,訓練模型的過程通常不直接在ONNXRuntime內完成,而是通過以下步驟實現:(1)使用支持的框架訓練模型首先,在支持導出為ONNX格式的框架(如PyTorch、TensorFlow、scikit-learn等)中訓練模型。(2)將模型轉換為ONNX格式使用相應框架提供的工具將訓練好的模型導出為ONNX格式。(3)加載和運行模型使用ONNXRuntime加載轉換后的ONNX模型,并進行推理。(4)(可選)性能優化根據需要,可以對ONNXRuntime的運行時配置或硬件加速器進行調整,以優化模型的推理性能。ONNXRuntime本身主要用于模型的推理,而不是訓練。訓練過程通常在其他框架中完成,然后將模型轉換為ONNX格式以便在ONNXRuntime中高效運行。習題答案習題2(1)確保安裝了PyTorch和ONNX相關的庫。(2)根據保存的模型文件類型加載模型。(3)創建一個與模型輸入維度一致的示例輸入張量。(4)使用torch.onnx.export函數將模型導出為ONNX文件。習題答案習題3(1)安裝ONNXRuntime:通過pipinstallonnxruntime安裝ONNXRuntime庫。(2)加載模型:使用ort.InferenceSession("model.onnx")加載ONNX模型文件。(3)準備輸入數據:根據模型的輸入要求,準備輸入數據,并將其格式化為字典形式,鍵為輸入張量名稱,值為輸入數據。(4)運行推理:調用session.run(None,{input_name:input_data})執行模型推理。(5)處理輸出結果:根據需要處理模型的輸出結果。這些步驟使得ONNXRuntime能夠高效地加載和運行ONNX格式的模型,適用于多種推理場景。習題答案習題4(1)MXNet轉換為ONNX安裝工具:安裝mxnet和onnx相關庫。加載模型:加載MXNet模型,并將其轉換為ONNX格式。導出模型:使用MXNet提供的mxnet.contrib.onnx.export_model方法。(2)TensorFlow轉換為ONNX安裝工具:安裝tf2onnx轉換工具。轉換模型:使用tf2onnx.convert命令或PythonAPI將TensorFlow模型(如SavedModel或Keras模型)轉換為ONNX格式。驗證模型:加載并驗證轉換后的ONNX模型。(3)PyTorch轉換為ONNX加載模型:加載訓練好的PyTorch模型,并將其置于評估模式(model.eval())。準備輸入張量:創建一個與模型輸入形狀一致的示例輸入張量。導出模型:使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論