国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

開源鴻蒙MNN AI應用開發與MNN移植經驗

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 2025-09-04 11:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【拆·應用】是為開源鴻蒙應用開發者打造的技術分享平臺,是匯聚開發者的技術洞見與實踐經驗、提供開發心得與創新成果的展示窗口。誠邀您踴躍發聲,期待您的真知灼見與技術火花!

引言

本期內容由AI Model SIG提供,介紹了在開源鴻蒙中,利用MNN開源框架開發AI應用以及基于MNN源碼編譯與Har包封裝的方法。

技術背景

MNN是一個由阿里巴巴開發的輕量級的深度神經網絡引擎,支持深度學習的推理和訓練,適用于服務器、手機嵌入式等各類設備。MNN提供了對大語言模型和多模態大模型的支持,可以將原本需要在云端運行的大模型,經過壓縮、編譯和系統級優化后,直接部署在手機、PC、車載、XR 頭顯、機器人等終端設備上,使其無需聯網即可完成生成、理解、推理等任務。

MNN的主要特性:

1.輕量性:MNN的主體功能無任何依賴,代碼精簡,可以方便地部署到移動設備和各種嵌入式設備中。

2.通用性:MNN提供了豐富的算子,支持多種文件格式,如:Tensorflow、ONNX、Torchscripts等,支持CNN、Transformer等網絡結構;在大模型領域,MNN提供了對目前主流的開源LMM模型的支持。

3.高性能:MNN對iOS / Android / PC / Server 的CPU架構進行了適配,充分發揮了 CPU的算力,單線程下運行常見CV模型接近設備算力峰值;支持基于 Metal / OpenCL / Vulkan 使用端側設備上的GPU進行推理,支持部分設備的 NPU 計算。

目前已完成MNN在OpenHarmony 5.1 Release上的適配,支持在CPU下進行LLM、MLLM推理。

環境準備

1.硬件準備

(1)開發板DAYU200,詳情介紹

https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/README.md。

(2)芯片型號

SOC 系統芯片: Rockchip RK3568。

CPU中央處理器: Cortex-A55。

GPU圖形處理器: Mali-G52。

2.軟件準備

(1)開發環境:windows 10 + ubuntu 22.04。windows下進行設備連接、程序燒錄、文件傳輸;linux進行程序編譯(官方推薦)。參考文檔:

https://docs.openharmony.cn/pages/v4.1/zh-cn/device-dev/quick-start/quickstart-pkg-prepare.md。

(2)OpenHarmony:SDK下載ohos-sdk-windows_linux-public

鏈接地址如下:

https://repo.huaweicloud.com/harmonyos/os/5.1.0-Release。

解壓到指定目錄,里邊包含window和linux的庫文件,分別放到對應的設備上。

(3)DevEco Studio: 版本5.1.0。下載地址:https://developer.huawei.com/consumer/cn/deveco-studio/。

開源鴻蒙MNN AI 應用開發

1.mnnllm har包介紹

mnnllm har包是由開源鴻蒙AI Model SIG發布的大模型本地推理庫,基于mnnllm推理框架通過native api進行封裝,可供ArkTS語言快速開發應用程序,當前已支持大語言模型和多模態大模型本地推理。

mnnllm har包已提交到開源鴻蒙第三方中心倉庫,可通過以下地址詳細了解相關信息。

https://ohpm.OpenHarmony.cn/#/cn/detail/@ai_model_sig%2Fmnnllm

2.基于mnnllm har包的應用開發

(1)安裝mnnllm har包,通過ohpm install命令,可快速安裝,命令如下:

952195d4-88a5-11f0-8c8f-92fbcf53809c.png

(2)準備大模型并轉換成mnn支持的格式

在進行測試前,需要先下載并轉換成mnn格式的模型, 通過llmexport工具即可快速轉換成mnn格式,如果不想轉換,也可以直接從魔搭社區下載已經轉換好的mnn模型。

將大模型轉換成mnn格式,llmexport命令可參考mnn官方文檔,詳情可查看鏈接,具體鏈接如下:

https://mnn-docs.readthedocs.io/en/latest/transformers/llm.html

從modelscope社區直接下載mnn模型,可訪問倉庫地址:

https://www.modelscope.cn/organization/MNN?tab=model

文件準備好了之后,需要將模型文件放在entry/src/main/resource/rawfile目錄下(僅模型文件,不需要包含模型名稱的外層目錄),對于多模態大模型,還需在rawfile下準備一張測試圖片test.jpg。

注意:DAYU200的開發板由于算力限制,可以選擇參數較小的模型(如SmolVLM-256M-Instruct-MNN)進行驗證。

(3)應用程序開發

從mnnllm har包中通過import導入對應的函數,具體函數說明,見表1。

import{nativeLoad,nativeChat,nativeChatVLM,nativeUnload}from '@ai_model_sig/mnnllm';

定義函數onCopyRawFileToLocal,將模型文件拷貝到應用程序沙箱。

調用nativeLoad函數,加載模型。

如果是大語言模型,調用nativeChat函數,輸入對話內容,返回模型回答結果;如果是多模態大模型,調用nativeChatVLM函數,輸入對話內容和圖片,返回模型回答結果。

應用程序結束,調用nativeUnload函數,釋放模型資源。

表1 Har包函數說明

958673f0-88a5-11f0-8c8f-92fbcf53809c.png

(4)代碼示例

以下是部分關鍵示例代碼,供參考。

95e954de-88a5-11f0-8c8f-92fbcf53809c.png

編譯并執行示例代碼后,屏幕打印出的信息

基于mnn源碼編譯與native接口封裝

以下內容介紹基于mnn源碼編譯與native接口封裝,如果對系統移植感興趣的可以繼續往下閱讀,如果只專注應用開發,可跳過此部分內容。

源代碼地址和編譯方法鏈接:

https://gitcode.com/ai_model_sig/ohos_mnn。

1. 適配OpenHarmony的mnn靜態庫打包

(1)設置HARMONY_HOME環境變量,指向SDK解壓后的目錄。

export HARMONY_HOME=/home/xxx/ohos-sdk

(2)編譯mnn的靜態庫,cmake時指定

-DCMAKE_TOOLCHAIN_FILE、

-DMNN_BUILD_SHARED_LIBS=OFF,

-DMNN_BUILD_LLM=ON。

(3)獲取編譯后的libMNN.a的靜態庫。

2. 基于mnn的c++推理代碼開發

(1)準備頭文件和mnn的靜態庫,從/path/to/MNN拷貝到src/main/cpp目錄下,libMNN.a拷貝到/path/to/cpp/libs/。

(2)模型的準備。模型的轉換,參考文檔:https://mnn-docs.readthedocs.io/en/latest/transformers/llm.html。

(3)mnn的c++推理代碼開發和驗證。代碼示例(非完整代碼):

96bc59d8-88a5-11f0-8c8f-92fbcf53809c.png

3. 基于NAPI的native方法封裝

(1)開發前的準備。

打開DevEco,在創建好的項目處,右鍵選擇new > Module > Static Library。

將2中準備好的頭文件和靜態庫,復制到新創建的Module的src/main/cpp的libs和include目錄下。

(2)接口函數的制定

97217048-88a5-11f0-8c8f-92fbcf53809c.png

(3)Native方法的封裝,封裝以上4個函數

97820502-88a5-11f0-8c8f-92fbcf53809c.png

(4)har包的開發

在src/main/cpp/types/libentry/Index.d.ts,定義ArkTS接口。

oh-package.json5 文件,將API與so相關聯,成為一個完整的ArkTS模塊。

在src/main/ets/export.ets導出native方法。

通過Index.ets對外暴露har包的接口函數。

常見問題和解決方法

Native方法封裝過程中,libllm.so、libMNN.so、libMNN_Express.so等動態庫之間的復雜相互依賴問題導致的失敗。

解決方法:MNN的編譯過程中,指定cmake的參數DMNN_BUILD_SHARED_LIBS=OFF,編譯靜態庫libMNN.a,放置在src/main/cpp/libs下面。

Native方法封裝過程中,接口函數中load、chat等方法難以通過NAPI的數據類型來傳遞模型實例。

解決方法:在c++推理代碼中定義靜態全局的模型,然后在load中通過reset方法重置模型的配置文件。

應用開發調用時,接口函數load調用過程中,傳入的模型文件無法讀取的問題。

解決方法:將轉換好的MNN模型文件全部放在rawfile目錄下,然后將文件全部拷貝到應用沙箱中,最后通過沙箱路徑讀取模型的文件。

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

    關注

    1

    文章

    414

    瀏覽量

    29388
  • AI
    AI
    +關注

    關注

    91

    文章

    39755

    瀏覽量

    301354
  • 開源
    +關注

    關注

    3

    文章

    4203

    瀏覽量

    46122
  • 鴻蒙
    +關注

    關注

    60

    文章

    2963

    瀏覽量

    45883

原文標題:拆·應用丨第5期:開源鴻蒙MNN AI應用開發與MNN移植經驗

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【每日精選】開源鴻蒙系統DAYU200教程及Tina Wi-Fi模組移植

    ] 支持開源鴻蒙系統 DAYU200 鏡像燒錄教程【問答】請問下HiHope_DAYU200 如何搭建編譯開發環境?[經驗]作品分享-基于RT-Thread系統和N32G457
    發表于 03-15 15:32

    CoolPi CM5運行ChatGLM-MNN大語言模型

    ChatGLM-MNN project git clone https://github.com/wangzhaode/ChatGLM-MNN.git Compile MNN library
    發表于 04-29 09:39

    Coolpi CM5運行ChatGLM-MNN大語言模型

    Download ChatGLM-MNN project git clone https://github.com/wangzhaode/ChatGLM-MNN.git Compile MNN
    發表于 05-03 11:30

    阿里正式開源輕量級深度學習端側推理引擎“MNN

    Interpreter 由 Engine 和 Backends 構成。前者負責模型的加載、計算圖的調度;后者包含各計算設備下的內存分配、Op 實現。在 Engine 和 Backends 中,MNN
    的頭像 發表于 05-10 09:04 ?4170次閱讀

    阿里MNN支持華為NPU,優化MNN的性能和精度問題

    今天上午據軟件綠色聯盟消息,阿里MNN已經接入華為 HiAI生態,正式支持華為NPU。
    的頭像 發表于 12-23 14:04 ?4357次閱讀

    實戰MNN之Mobilenet SSD部署

    MNN 是一個輕量級的深度學習端側推理引擎,核心解決深度神經網絡模型在端側推理運行問題,涵蓋深度神經網絡模型的優化、轉換和推理。目...
    的頭像 發表于 12-10 18:14 ?1273次閱讀

    淺談阿里輕量級的深度神經網絡推理引擎MNN

    MNN是一個輕量級的深度神經網絡推理引擎,在端側加載深度神經網絡模型進行推理預測。作者:開心的派大星首發:微信公眾號:NeuroMem轉自...
    的頭像 發表于 12-10 19:29 ?2116次閱讀

    實戰MNN之量化部署

    今天MNN更新了新的工具包---CNN網絡量化工具(quantization),作者也第一時間進行了測試。提升的效果還是很可觀的,量化前的CNN網絡大小...
    發表于 02-07 11:45 ?0次下載
    實戰<b class='flag-5'>MNN</b>之量化部署

    詳解MNN的tflite-MobilenetSSD-c++部署流程

    關于MNN以及Mobilenet SSD的介紹,大家可以參考我早些時候寫過的一篇文章實戰MNN之Mobilenet SSD部署(含源碼)。本文我們少一些分析,...
    發表于 02-07 11:55 ?0次下載
    詳解<b class='flag-5'>MNN</b>的tflite-MobilenetSSD-c++部署流程

    詳解MNN的tf-MobilenetSSD-cpp部署流程

    關于MNN以及Mobilenet SSD的介紹,大家可以參考我早些時候寫過的一篇文章實戰MNN之Mobilenet SSD部署(含源碼)。本文我們少一些分析,...
    發表于 02-07 12:18 ?0次下載
    詳解<b class='flag-5'>MNN</b>的tf-MobilenetSSD-cpp部署流程

    PFLD-lite:基于MNN和mxnet的嵌入式部署

    之前的文章跟大家介紹過如何使用mxnet和MNN做產品化部署,選取的案例為MNIST手寫數字識別的項目,該項目是一個比較簡單的分類問題。今天...
    發表于 02-07 12:19 ?0次下載
    PFLD-lite:基于<b class='flag-5'>MNN</b>和mxnet的嵌入式部署

    談談MNN的模型量化(一)數學模型

    最近調研了一些關于CNN網絡量化的論文,結合之前基于MNN的使用感受,打算跟大家談一談MNN中的模型量化以及其相關的數學模型。本文可能關...
    發表于 02-07 12:22 ?2次下載
    談談<b class='flag-5'>MNN</b>的模型量化(一)數學模型

    實戰MNN之Mobilenet SSD部署(含源碼)

    MNN 是一個輕量級的深度學習端側推理引擎,核心解決深度神經網絡模型在端側推理運行問題,涵蓋深度神經網絡模型的優化、轉換和推理。目...
    發表于 02-07 12:32 ?0次下載
    實戰<b class='flag-5'>MNN</b>之Mobilenet SSD部署(含源碼)

    2025開源鴻蒙開發者大會圓滿落幕

    近日,開源鴻蒙開發者大會2025(OHDC.2025,簡稱“大會”)在深圳隆重開幕。大會正式發布了開源鴻蒙5.1 Release版本,舉行了
    的頭像 發表于 05-26 17:03 ?1365次閱讀

    開源鴻蒙開發者大會2025·AI分論壇圓滿閉幕,探索開源鴻蒙AI無限可能

    5月24日,開源鴻蒙開發者大會2025·AI分論壇在深圳蛇口希爾頓南海酒店成功舉辦。活動特邀學術領袖、開源專家、行業先鋒和社區
    的頭像 發表于 05-26 18:06 ?1659次閱讀
    <b class='flag-5'>開源</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>者大會2025·<b class='flag-5'>AI</b>分論壇圓滿閉幕,探索<b class='flag-5'>開源</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>AI</b>無限可能