最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

部署模型并與 TVM 集成

2023-08-09 12:52 作者:HyperAI超神經(jīng)  | 我要投稿

本篇文章譯自英文文檔?Deploy Models and Integrate TVM?

https://tvm.apache.org/docs/how_to/deploy/index.html

更多 TVM 中文文檔可訪問 →Apache TVM 是一個端到端的深度學(xué)習(xí)編譯框架,適用于 CPU、GPU 和各種機器學(xué)習(xí)加速芯片。 | Apache TVM 中文站

https://tvm.hyper.ai/


本節(jié)介紹如何將 TVM 部署到各種平臺,以及如何將其與項目集成。

構(gòu)建 TVM runtime 庫

不同于傳統(tǒng)的深度學(xué)習(xí)框架,TVM 堆棧分為兩個主要組件:

  • TVM compiler:負責(zé)模型的編譯和優(yōu)化。

  • TVM runtime:在目標(biāo)設(shè)備上運行。

集成編譯后的模塊并不需要在目標(biāo)設(shè)備上構(gòu)建整個 TVM,只需在你的電腦上構(gòu)建 TVM 編譯器堆棧,然后用來交叉編譯要部署到目標(biāo)設(shè)備上的模塊。

這里只需利用可集成到各種平臺的輕量級 runtime API 即可。

例如,可在基于 Linux 的嵌入式系統(tǒng)(如樹莓派)上,運行以下命令來構(gòu)建 runtime API:

注意:make runtime 僅構(gòu)建 runtime 庫。

也可以交叉編譯 runtime 庫,但不要和嵌入式設(shè)備的交叉編譯模型混淆。

若要包含其他 runtime(例如 OpenCL),可以修改 config.cmake 來啟用這些選項。獲取 TVM runtime 庫后,就可以鏈接編譯好的庫了。

TVM 可針對不同架構(gòu)(例如 x64_64 主機上的 aarch64)交叉編譯模型(無論是否被 TVM 優(yōu)化)。一旦模型被交叉編譯,runtime 必須與目標(biāo)架構(gòu)兼容,才能運行交叉編譯的模型。

為其他架構(gòu)交叉編譯 TVM runtime

在 上面 的示例中,runtime 庫是在樹莓派上編譯的,與樹莓派等目標(biāo)設(shè)備相比,在擁有高性能芯片和充足資源的主機(如筆記本電腦、工作站)上生成 runtime 庫的速度要快得多。為了交叉編譯 runtime,必須安裝目標(biāo)設(shè)備的工具鏈。安裝正確的工具鏈后,與原生編譯相比,主要區(qū)別在于向 cmake 傳遞了一些額外的命令行參數(shù)來指定要使用的工具鏈。例如,在現(xiàn)代筆記本電腦(使用 8 個線程)上為 aarch64 構(gòu)建 TVM runtime 庫需要大約 20 秒,而在樹莓派 4 上構(gòu)建 runtime 需要約 10 分鐘。

aarch64 的交叉編譯

對于 ARM 裸機,用以下工具鏈(而不是 gcc-aarch64-linux-*)來安裝非常方便:

RISC-V 的交叉編譯

file 命令可用于查詢生成的 runtime 的架構(gòu)。

針對目標(biāo)設(shè)備優(yōu)化和調(diào)優(yōu)模型

在嵌入式設(shè)備上對 TVM 內(nèi)核進行測試、調(diào)優(yōu)和基準(zhǔn)測試,最簡單且推薦的方法是通過 TVM 的 RPC API。下面是相關(guān)教程的鏈接:

  • 交叉編譯和 RPC?https://tvm.hyper.ai/docs/tutorial/rpc

  • 在樹莓派上部署預(yù)訓(xùn)練模型https://tvm.apache.org/docs/how_to/deploy_models/deploy_model_on_rasp.html#tutorial-deploy-model-on-rasp

在目標(biāo)設(shè)備上部署優(yōu)化模型

完成調(diào)優(yōu)和基準(zhǔn)測試后,要在目標(biāo)設(shè)備上以不依賴 RPC 的方式來部署模型。具體操作參考以下教程:

  • 使用 C++ API 部署 TVM 模塊?https://tvm.hyper.ai/docs/how_to/deploy/deploy_c++

  • 部署到 Android?https://tvm.hyper.ai/docs/how_to/deploy/deploy_android

  • 將 TVM 集成到項目中?https://tvm.hyper.ai/docs/how_to/deploy/integrate

  • HLS 后端示例?https://tvm.hyper.ai/docs/how_to/deploy/hls

  • Relay Arm? 計算庫集成?https://tvm.hyper.ai/docs/how_to/deploy/relay_arm

  • Relay TensorRT 集成?https://tvm.hyper.ai/docs/how_to/deploy/relay_tensorrt

  • Vitis AI 集成?https://tvm.hyper.ai/docs/how_to/deploy/vitis_ai

  • Relay BNNS 集成?https://tvm.hyper.ai/docs/how_to/deploy/relay_bnns

其他部署方法

前面已經(jīng)有許多針對特定設(shè)備的操作指南,其中包含 Python 代碼的示例(可用 Jupyter Notebook 查看),這些操作指南描述了如何準(zhǔn)備模型,并將其部署到支持的后端。

  • 部署深度學(xué)習(xí)模型?https://tvm.hyper.ai/docs/how_to/deploy/deploy_models



部署模型并與 TVM 集成的評論 (共 條)

分享到微博請遵守國家法律
金山区| 剑河县| 丽江市| 昌平区| 晴隆县| 甘肃省| 图木舒克市| 蒲城县| 罗江县| 大邑县| 安泽县| 抚顺县| 岗巴县| 房山区| 黄冈市| 大同县| 平舆县| 金乡县| 同江市| 陈巴尔虎旗| 元氏县| 阜城县| 阿拉尔市| 卓资县| 镇康县| 嘉荫县| 左云县| 读书| 肥东县| 汝城县| 漳州市| 余姚市| 泸州市| 大洼县| 许昌市| 依安县| 浙江省| 缙云县| 西和县| 马鞍山市| 虎林市|