AI芯片應(yīng)用開(kāi)發(fā)實(shí)踐:深度學(xué)習(xí)算法與芯片設(shè)計(jì) 課件 第六章 模型的推理框架-ONNX Runtime_第1頁(yè)
AI芯片應(yīng)用開(kāi)發(fā)實(shí)踐:深度學(xué)習(xí)算法與芯片設(shè)計(jì) 課件 第六章 模型的推理框架-ONNX Runtime_第2頁(yè)
AI芯片應(yīng)用開(kāi)發(fā)實(shí)踐:深度學(xué)習(xí)算法與芯片設(shè)計(jì) 課件 第六章 模型的推理框架-ONNX Runtime_第3頁(yè)
AI芯片應(yīng)用開(kāi)發(fā)實(shí)踐:深度學(xué)習(xí)算法與芯片設(shè)計(jì) 課件 第六章 模型的推理框架-ONNX Runtime_第4頁(yè)
AI芯片應(yīng)用開(kāi)發(fā)實(shí)踐:深度學(xué)習(xí)算法與芯片設(shè)計(jì) 課件 第六章 模型的推理框架-ONNX Runtime_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

ONNXRuntime提供了一種在CPU或GPU上運(yùn)行高性能機(jī)器學(xué)習(xí)模型的簡(jiǎn)單方法,而無(wú)需依賴訓(xùn)練框架。機(jī)器學(xué)習(xí)框架通常針對(duì)批處理訓(xùn)練進(jìn)行優(yōu)化而不是預(yù)測(cè),預(yù)測(cè)在應(yīng)用程序、站點(diǎn)和服務(wù)中更常見(jiàn)。整體流程如下:

在Ubuntu上驗(yàn)證學(xué)習(xí),使用scikit-learn訓(xùn)練模型,將其轉(zhuǎn)換成ONNX格式并運(yùn)行。

注意:如果安裝過(guò)程缺少其他文件,請(qǐng)自行搜索并進(jìn)行安裝。(1)在Ubuntu上,安裝scikit-learn。(2)在Ubuntu上,安裝ONNX以及相關(guān)依賴。(3)在Ubuntu上,安裝ONNXRuntime。(4)驗(yàn)證安裝。訓(xùn)練模型使用sklearn中提供的Iris數(shù)據(jù)集進(jìn)行模型訓(xùn)練,代碼如下。輸出結(jié)果如下。將模型轉(zhuǎn)換導(dǎo)出為ONNX格式使用ONNXMLTools將模型轉(zhuǎn)換并導(dǎo)出為ONNX格式,代碼如下。代碼運(yùn)行結(jié)束后將在程序目錄創(chuàng)建logreg_iris.onnx文件。使用ONNXRuntime加載運(yùn)行模型使用ONNXRuntime計(jì)算此機(jī)器學(xué)習(xí)模型的預(yù)測(cè)結(jié)果,代碼如下。輸出的預(yù)測(cè)結(jié)果如下。訓(xùn)練ONNXRuntime中實(shí)現(xiàn)邏輯回歸算法實(shí)例模型

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

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

Tensorflow和PyTorch分別如何將模型轉(zhuǎn)換成ONNX格式?ONNX

Runtime示例中的邏輯回歸算法是基于哪個(gè)機(jī)器學(xué)習(xí)庫(kù)的?

ONNX

Runtime模型運(yùn)行過(guò)程中是否需要進(jìn)行模型訓(xùn)練?在ONNX

Runtime示例中,如何將訓(xùn)練好的邏輯回歸模型導(dǎo)出為ONNX格式?使用ONNX

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論