<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          震撼升級(jí)!這款開(kāi)源項(xiàng)目打通了 AI 應(yīng)用的最后一公里

          共 5570字,需瀏覽 12分鐘

           ·

          2021-05-01 09:21

          在工業(yè)級(jí)深度學(xué)習(xí)實(shí)踐領(lǐng)域中,我們經(jīng)常能聽(tīng)到一種說(shuō)法——模型部署是打通 AI 應(yīng)用的最后一公里!想要走通這一公里,就好比打贏得一場(chǎng)焦灼籃球賽,困難重重,相信廣大開(kāi)發(fā)者們對(duì)此一定深有體會(huì)。


          部署環(huán)境復(fù)雜多樣,比如硬件適配狀態(tài)、操作系統(tǒng)兼容性、對(duì)編程語(yǔ)言的支持等諸多挑戰(zhàn),都宛如一個(gè)個(gè)勇猛的對(duì)手橫亙?cè)诿媲?。想要贏得比賽,咱們自己也要多拿分才行。確保環(huán)境適配僅是第一步,如何在部署后展示出犀利的性能,實(shí)現(xiàn)工業(yè)級(jí)的高性能推理,同樣是勝利的關(guān)鍵因素!開(kāi)發(fā)者們只有“能攻善守”,化身為曾經(jīng)奪得“得分王”和“最佳防守球員”的喬丹大神,才能順利部署、盡展性能!如果再有菲爾·杰克遜般全方位、高質(zhì)量的技術(shù)指導(dǎo),想來(lái)“球員們”贏得這場(chǎng)深度學(xué)習(xí)實(shí)踐的“比賽”,就不用再吟“蜀道難”了!


          別著急,Paddle Inference 前來(lái)保駕!近期,Paddle Inference 隨著飛槳框架震撼升級(jí)到了 2.0 版本?。?!此次,全團(tuán)隊(duì)禿頭改版升級(jí),讓 Paddle Inference 全方位適配各種應(yīng)用場(chǎng)景,并且在性能方面更上一層樓,同時(shí)還配套了詳盡的指導(dǎo)文檔,助力各位“球員”一舉成為部署領(lǐng)域的“喬丹”!


          快速變身傳送門(mén):

          https://paddle-inference.readthedocs.io/en/latest/user_guides/download_lib.html#windows


          https://paddle-inference.readthedocs.io/en/latest/user_guides/download_lib.html#


          在這邊很多小伙伴會(huì)問(wèn): 什么是 Paddle Inference 原生高性能推理庫(kù)? 跟主框架的 API 如 model.predict() 等接口又是什么關(guān)系呢?哪個(gè)更原生些? 在這邊給大家快速地科普一下:主框架的前向 API 接口 model.predict() 是基于主框架的前向算子進(jìn)行封裝,且直接調(diào)用訓(xùn)練好的模型之前向參數(shù),能夠快速測(cè)試訓(xùn)練完成的模型效果,并將計(jì)算后的預(yù)測(cè)結(jié)果返回呈現(xiàn),通常是用在驗(yàn)證訓(xùn)練成果及做實(shí)驗(yàn)時(shí)使用。


          而一般的企業(yè)級(jí)部署通常會(huì)追求更極致的部署性能,且希望能夠在生產(chǎn)環(huán)境安裝一個(gè)不包含后向算子,比主框架更輕量的預(yù)測(cè)庫(kù),Paddle Inference 應(yīng)運(yùn)而生。Paddle Inference 提取了主框架的前向算子,可以無(wú)縫支持所有主框架訓(xùn)練好的模型,且通過(guò)內(nèi)存復(fù)用、算子融合等大量?jī)?yōu)化手段,并整合了主流的硬件加速庫(kù)如 Intel 的 oneDNN、NVIDIA 的 TensorRT 等, 提供用戶最極致的部署性能。此外還封裝 C/C++ 的預(yù)測(cè)接口,使生產(chǎn)環(huán)境更便利多樣。



          超強(qiáng)防守!

          全方位適配各種應(yīng)用場(chǎng)景




          打籃球時(shí),想要有好的防守效果,需要球員壓低身形,這樣即使搶不到球也可以隨時(shí)回防,眼睛也一定要緊盯對(duì)方手中的球。從中我們可以發(fā)現(xiàn),哪怕是一個(gè)簡(jiǎn)單的防守動(dòng)作,也需要調(diào)動(dòng)全身的力量。深度學(xué)習(xí)亦然,從獲取預(yù)訓(xùn)練模型,到使用特定語(yǔ)言的 API 加載模型、編寫(xiě)推理邏輯,最后在特定的硬件與操作系統(tǒng)上執(zhí)行推理,這一全套流程需要推理引擎提供從上游到下游的全方位適配與服務(wù)。


          為此 Paddle Inference 依托飛槳框架 2.0 進(jìn)行了全面升級(jí):

          • 適配多種硬件:深度適配 X86 CPU、NVIDIA GPU(包括 NVIDIA Jetson系列),內(nèi)置 Intel、NVIDIA 共同打造的高性能 Kernel,保證了推理的高性能執(zhí)行。此外,飛槳對(duì)國(guó)產(chǎn)硬件適配一直處于業(yè)內(nèi)領(lǐng)先地位,飛槳人也一直致力于推動(dòng)自主可控AI軟硬件整體解決方案建設(shè)。目前,我們已在申威、飛騰、鯤鵬、兆芯、龍芯、海光等國(guó)產(chǎn)硬件下測(cè)試了 ResNet50、MobileNetV1、ERNIE、ELmo 等經(jīng)典模型。

          • 兼容多種操作系統(tǒng):在這一方面,我們還是一如既往的優(yōu)秀,不僅兼容 Linux、Mac 和 Windows系統(tǒng),還與 UOS、麒麟等國(guó)產(chǎn)操作系統(tǒng)打通。支持所有飛槳訓(xùn)練產(chǎn)出的模型,完全做到即訓(xùn)即用。

          • 支持多種編程語(yǔ)言:支持 C++、Python、C、Go 和 R 語(yǔ)言 API,并全面升級(jí)了 C++ API,對(duì)規(guī)范命名、簡(jiǎn)化使用方法等進(jìn)行了優(yōu)化。同時(shí),我們?yōu)橐陨险Z(yǔ)言提供了配套的教程、API 文檔或示例,降低學(xué)習(xí)成本,提升易用性。對(duì)于其它語(yǔ)言,我們提供了 ABI 穩(wěn)定的 C API,方便用戶擴(kuò)展。


          Paddle Inference 的適配大法雖好,卻不要忽略它的高性能哦!我們脫發(fā)不脫單,只為讓在座的各位滿意和驚喜~




          最佳進(jìn)攻!

          高性能的推理引擎





          推理延時(shí)太高,吞吐量太低,內(nèi)存顯存占用太高,都宛如是一個(gè)個(gè)難纏的對(duì)手,讓我們難以提升“投籃命中率”,達(dá)不到應(yīng)用需求,“怎么辦”三個(gè)字顯現(xiàn)在光亮的腦門(mén)兒上。沒(méi)關(guān)系!Paddle Inference 采用了高性能的底層實(shí)現(xiàn),針對(duì)推理場(chǎng)景進(jìn)行了專(zhuān)門(mén)的優(yōu)化:

          • 內(nèi)存/顯存復(fù)用提升服務(wù)吞吐量:在推理初始化階段進(jìn)行依賴(lài)分析,將兩兩互不依賴(lài)的 Tensor 在內(nèi)存/顯存空間上進(jìn)行復(fù)用,增大計(jì)算并行量,并提升了服務(wù)吞吐量。

          • 細(xì)粒度OP橫向縱向融合減少計(jì)算量:在推理初始化階段,將模型中的多個(gè)OP進(jìn)行融合,減少計(jì)算量與 Kernel Launch 的次數(shù),提升推理性能。

          • 集成高性能推理加速引擎:Paddle Inference 集成了 TenorRT GPU 推理加速引擎和 oneDNN(原MKLDNN)CPU 推理加速引擎。在 2.0 版本中,Paddle Inference對(duì)TensorRT與oneDNN的集成進(jìn)行了優(yōu)化升級(jí),使 ERNIE、GRU、BERT、GoogleNet 等模型在 TensorRT/oneDNN 上的性能有所提升。

          • 支持加載 PaddleSlim 量化壓縮后的模型:Paddle Inference 2.0 增強(qiáng)了對(duì) PaddleSlim 量化模型的支持,涵蓋檢測(cè)、分類(lèi)、分割等多個(gè)任務(wù)。


          話不多說(shuō),數(shù)據(jù)說(shuō)話!下圖展示了飛槳與其它主流深度學(xué)習(xí)框架在基準(zhǔn)模型上的測(cè)試對(duì)比數(shù)據(jù),共 9 組對(duì)比測(cè)試。Paddle Inference 在 6 項(xiàng)測(cè)試中,性能表現(xiàn)最優(yōu)。

          然而,性能很好,在開(kāi)發(fā)實(shí)踐中不好用該怎么辦呢?就比如,很多開(kāi)發(fā)者在使用 TensorRT 加速模型推理的過(guò)程中,都有可能遇到過(guò)一些困擾。使用 Paddle Inference 之前,各位“球員”可能需要將手頭的模型進(jìn)行格式轉(zhuǎn)換,才可以用 TensorRT 加載?;蛘?,模型中可能存在不支持轉(zhuǎn)換的 OP,無(wú)法運(yùn)行。


          又或許,想使用 TensorRT 框架集成版的推理引擎,卻苦于操作復(fù)雜,資料不全,無(wú)從下手?,F(xiàn)在,使用 Paddle Inference,無(wú)需進(jìn)行額外的模型轉(zhuǎn)換等操作,只需添加一行代碼即可開(kāi)啟 TensorRT 優(yōu)化加速功能,關(guān)鍵代碼如下:


          是不是想給我們鼓個(gè)掌,甚至還想讓我們叉會(huì)兒腰?像我們這種人狠話不多、頭發(fā)不幾根的團(tuán)隊(duì),只想讓各位“球員”獲得更好的產(chǎn)品體驗(yàn),因此,我們還提供了超全、超詳細(xì)的技術(shù)支持,讓我們接著往下看吧~



           最貼心的教練服務(wù)!

          細(xì)致全面的技術(shù)支持





          雖然我們已經(jīng)進(jìn)入了萬(wàn)物互聯(lián)的新時(shí)代,自學(xué)并不像以往那么艱難,但是沒(méi)有資源、沒(méi)有教程、沒(méi)有手把手地輔導(dǎo),都可能讓大家隨時(shí)“從入門(mén)到放棄”。相信大家在學(xué)習(xí)部署時(shí),都有如下心路歷程:

          想要下載符合需求的預(yù)編譯庫(kù) 找不到官方資源 放棄...

          想要使用C++/Go API部署模型 找不到全面的API文檔 放棄...

          想要在NV Jetson/Windows上部署模型 找不到針對(duì)各種硬件/操作系統(tǒng)的指導(dǎo) 放棄...

          想要開(kāi)啟TensorRT功能/部署INT8量化模型 找不到針對(duì)性的教程 放棄...

          想要通過(guò)示例代碼在實(shí)踐中學(xué)習(xí) 找不到豐富的Demo資源 放棄...

          沒(méi)關(guān)系!Paddle Inference 2.0對(duì)教程文檔和示例代碼進(jìn)行了全面的升級(jí),還對(duì)各種硬件設(shè)備、操作系統(tǒng)、功能特性、多語(yǔ)言API進(jìn)行了全方位的保姆式技術(shù)支持,貼心的“教練服務(wù)”讓您不再撓頭,方便快捷地實(shí)現(xiàn)高性能部署!

          您可以在我們的官方教程頁(yè)面了解以上內(nèi)容。說(shuō)出您想使用的硬件設(shè)備、語(yǔ)言接口和功能,即可享受從環(huán)境搭建、使用流程、功能特性實(shí)戰(zhàn)到示例代碼實(shí)踐的全套技術(shù)支持服務(wù)。除此以外,飛槳還實(shí)現(xiàn)了即拿即用的模型服務(wù),例如 PaddleHub 預(yù)訓(xùn)練模型工具、PaddleDetection 和 PaddleOCR 等開(kāi)發(fā)套件、PaddleCV 和 PaddleNLP 等模型庫(kù),為您提供了覆蓋各個(gè)應(yīng)用場(chǎng)景的模型服務(wù),可以讓您放肆地做一次“伸手黨”!等等,如果您手頭只有其它框架的模型怎么辦?沒(méi)關(guān)系,X2Paddle 模型轉(zhuǎn)換工具幫您實(shí)現(xiàn)無(wú)縫切換,欲知詳情,請(qǐng)參考如下鏈接:

          https://github.com/PaddlePaddle/X2Paddle


          說(shuō)了這么多,各位“球員”是不是躍躍欲試,想體驗(yàn) Paddle Inference 2.0 高效流暢的模型部署,在深度學(xué)習(xí)的“賽場(chǎng)”上盡顯風(fēng)姿了呢?體貼入微的我們,還為大家提供了端到端的部署流程,即刻成為耀眼“球星”:


          1. 準(zhǔn)備模型

          Paddle Inference 原生支持由 飛槳深度學(xué)習(xí)框架訓(xùn)練產(chǎn)出的推理模型。飛槳新版本中用于推理的模型分別通過(guò) paddle.jit.save (動(dòng)態(tài)圖)與 paddle.static.save_inference_model(靜態(tài)圖)或 paddle.Model().save (高層API)保存下來(lái)。


          如果您手中的模型是由諸如 Caffe、Tensorflow、PyTorch 等框架產(chǎn)出,那么您可以使用 X2Paddle 工具將模型轉(zhuǎn)換為 PadddlePaddle 格式。


          1. 準(zhǔn)備環(huán)境

          1)Python 環(huán)境

          請(qǐng)參照 官方主頁(yè)-快速安裝 頁(yè)面進(jìn)行自行安裝或編譯,當(dāng)前支持 pip/conda 安裝,docker鏡像以及源碼編譯等多種方式來(lái)準(zhǔn)備Paddle Inference開(kāi)發(fā)環(huán)境。


          2)C++ 環(huán)境

          Paddle Inference提供了Ubuntu/Windows/MacOS平臺(tái)的官方Release預(yù)測(cè)庫(kù)下載,如果您使用的是以上平臺(tái),我們優(yōu)先推薦您通過(guò)以下鏈接直接下載,或者您也可以參照文檔:

          https://paddleinference.paddlepaddle.org.cn/user_guides/source_compile.html

          進(jìn)行源碼編譯。


          • 下載安裝Windows預(yù)測(cè)庫(kù):

          https://paddle-inference.readthedocs.io/en/latest/user_guides/download_lib.html#windows

          • 下載安裝Linux預(yù)測(cè)庫(kù):

          https://paddle-inference.readthedocs.io/en/latest/user_guides/download_lib.html#


          1. 開(kāi)發(fā)預(yù)測(cè)程序

          開(kāi)發(fā)預(yù)測(cè)程序只需要簡(jiǎn)單的5個(gè)步驟 (這里以C++ API為例):


          1)配置推理選項(xiàng) paddle_infer::Config,包括設(shè)置模型路徑、運(yùn)行設(shè)備、開(kāi)啟/關(guān)閉計(jì)算圖優(yōu)化、使用MKLDNN/TensorRT進(jìn)行部署的加速等。


          2)創(chuàng)建推理引擎 paddle_infer::Predictor,通過(guò)調(diào)用 CreatePaddlePredictor(Config) 接口,一行代碼即可完成引擎初始化,其中 Config 為第1步中生成的配置推理選項(xiàng)。


          3)準(zhǔn)備輸入數(shù)據(jù),需要以下幾個(gè)步驟:

            • 先通過(guò)auto input_names = predictor->GetInputNames() 獲取模型所有輸入Tensor的名稱(chēng);

            • 再通過(guò) auto tensor = predictor->GetInputTensor(input_names[i]) 獲取輸入Tensor的指針;

            • 最后通過(guò) tensor->copy_from_cpu(data),將 data 中的數(shù)據(jù)拷貝到Tensor中。

          4)執(zhí)行預(yù)測(cè),只需要運(yùn)行predictor->Run()一行代碼,即可完成預(yù)測(cè)執(zhí)行。


          5)獲得預(yù)測(cè)結(jié)果,需要以下幾個(gè)步驟:

            • 先通過(guò) auto out_names = predictor->GetOutputNames() 獲取模型所有輸出Tensor的名稱(chēng);

            • 再通過(guò) auto tensor = predictor->GetOutputTensor(out_names[i]) 獲取輸出Tensor的 指針;

            • 最后通過(guò) tensor->copy_to_cpu(data),將Tensor中的數(shù)據(jù)copy到data指針上。


          如果您有疑問(wèn)或者建議,歡迎掃描下方二維碼,添加成功后回復(fù)【部署】加入技術(shù)交流群 :)


          相關(guān)鏈接:

          Paddle Inference完整文檔:

          https://paddle-inference.readthedocs.io/en/latest/index.html

          Paddle Inference Demo:

          https://github.com/PaddlePaddle/Paddle-Inference-Demo

          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  靠逼免费视频网站 | 免费在线观看黄色视频网站 | 人人鲁人人操 | 日本性爱一区 | 久久五月天婷婷 |