chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開源鴻蒙MNN AI應(yīng)用開發(fā)與MNN移植經(jīng)驗(yàn)

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

掃碼添加小助手

加入工程師交流群

【拆·應(yīng)用】是為開源鴻蒙應(yīng)用開發(fā)者打造的技術(shù)分享平臺(tái),是匯聚開發(fā)者的技術(shù)洞見與實(shí)踐經(jīng)驗(yàn)、提供開發(fā)心得與創(chuàng)新成果的展示窗口。誠(chéng)邀您踴躍發(fā)聲,期待您的真知灼見與技術(shù)火花!

引言

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

技術(shù)背景

MNN是一個(gè)由阿里巴巴開發(fā)的輕量級(jí)的深度神經(jīng)網(wǎng)絡(luò)引擎,支持深度學(xué)習(xí)的推理和訓(xùn)練,適用于服務(wù)器、手機(jī)、嵌入式等各類設(shè)備。MNN提供了對(duì)大語言模型和多模態(tài)大模型的支持,可以將原本需要在云端運(yùn)行的大模型,經(jīng)過壓縮、編譯和系統(tǒng)級(jí)優(yōu)化后,直接部署在手機(jī)、PC、車載、XR 頭顯、機(jī)器人等終端設(shè)備上,使其無需聯(lián)網(wǎng)即可完成生成、理解、推理等任務(wù)。

MNN的主要特性:

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

2.通用性:MNN提供了豐富的算子,支持多種文件格式,如:Tensorflow、ONNX、Torchscripts等,支持CNN、Transformer等網(wǎng)絡(luò)結(jié)構(gòu);在大模型領(lǐng)域,MNN提供了對(duì)目前主流的開源LMM模型的支持。

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

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

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

1.硬件準(zhǔn)備

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

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

(2)芯片型號(hào)

SOC 系統(tǒng)芯片: Rockchip RK3568。

CPU中央處理器: Cortex-A55。

GPU圖形處理器: Mali-G52。

2.軟件準(zhǔn)備

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

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的庫文件,分別放到對(duì)應(yīng)的設(shè)備上。

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

開源鴻蒙MNN AI 應(yīng)用開發(fā)

1.mnnllm har包介紹

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

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

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

2.基于mnnllm har包的應(yīng)用開發(fā)

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

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

(2)準(zhǔn)備大模型并轉(zhuǎn)換成mnn支持的格式

在進(jìn)行測(cè)試前,需要先下載并轉(zhuǎn)換成mnn格式的模型, 通過llmexport工具即可快速轉(zhuǎn)換成mnn格式,如果不想轉(zhuǎn)換,也可以直接從魔搭社區(qū)下載已經(jīng)轉(zhuǎn)換好的mnn模型。

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

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

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

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

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

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

(3)應(yīng)用程序開發(fā)

從mnnllm har包中通過import導(dǎo)入對(duì)應(yīng)的函數(shù),具體函數(shù)說明,見表1。

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

定義函數(shù)onCopyRawFileToLocal,將模型文件拷貝到應(yīng)用程序沙箱。

調(diào)用nativeLoad函數(shù),加載模型。

如果是大語言模型,調(diào)用nativeChat函數(shù),輸入對(duì)話內(nèi)容,返回模型回答結(jié)果;如果是多模態(tài)大模型,調(diào)用nativeChatVLM函數(shù),輸入對(duì)話內(nèi)容和圖片,返回模型回答結(jié)果。

應(yīng)用程序結(jié)束,調(diào)用nativeUnload函數(shù),釋放模型資源。

表1 Har包函數(shù)說明

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

(4)代碼示例

以下是部分關(guān)鍵示例代碼,供參考。

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

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

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

以下內(nèi)容介紹基于mnn源碼編譯與native接口封裝,如果對(duì)系統(tǒng)移植感興趣的可以繼續(xù)往下閱讀,如果只專注應(yīng)用開發(fā),可跳過此部分內(nèi)容。

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

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

1. 適配OpenHarmony的mnn靜態(tài)庫打包

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

export HARMONY_HOME=/home/xxx/ohos-sdk

(2)編譯mnn的靜態(tài)庫,cmake時(shí)指定

-DCMAKE_TOOLCHAIN_FILE、

-DMNN_BUILD_SHARED_LIBS=OFF,

-DMNN_BUILD_LLM=ON。

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

2. 基于mnn的c++推理代碼開發(fā)

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

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

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

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

3. 基于NAPI的native方法封裝

(1)開發(fā)前的準(zhǔn)備。

打開DevEco,在創(chuàng)建好的項(xiàng)目處,右鍵選擇new > Module > Static Library。

將2中準(zhǔn)備好的頭文件和靜態(tài)庫,復(fù)制到新創(chuàng)建的Module的src/main/cpp的libs和include目錄下。

(2)接口函數(shù)的制定

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

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

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

(4)har包的開發(fā)

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

oh-package.json5 文件,將API與so相關(guān)聯(lián),成為一個(gè)完整的ArkTS模塊。

在src/main/ets/export.ets導(dǎo)出native方法。

通過Index.ets對(duì)外暴露har包的接口函數(shù)。

常見問題和解決方法

Native方法封裝過程中,libllm.so、libMNN.so、libMNN_Express.so等動(dòng)態(tài)庫之間的復(fù)雜相互依賴問題導(dǎo)致的失敗。

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

Native方法封裝過程中,接口函數(shù)中l(wèi)oad、chat等方法難以通過NAPI的數(shù)據(jù)類型來傳遞模型實(shí)例。

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

應(yīng)用開發(fā)調(diào)用時(shí),接口函數(shù)load調(diào)用過程中,傳入的模型文件無法讀取的問題。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    406

    瀏覽量

    29066
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    37016

    瀏覽量

    290048
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3876

    瀏覽量

    45215
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2740

    瀏覽量

    45026

原文標(biāo)題:拆·應(yīng)用丨第5期:開源鴻蒙MNN AI應(yīng)用開發(fā)與MNN移植經(jīng)驗(yàn)

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    ] 支持開源鴻蒙系統(tǒng) DAYU200 鏡像燒錄教程【問答】請(qǐng)問下HiHope_DAYU200 如何搭建編譯開發(fā)環(huán)境?[經(jīng)驗(yàn)]作品分享-基于RT-Thread系統(tǒng)和N32G457
    發(fā)表于 03-15 15:32

    CoolPi CM5運(yùn)行ChatGLM-MNN大語言模型

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

    Coolpi CM5運(yùn)行ChatGLM-MNN大語言模型

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

    阿里正式開源輕量級(jí)深度學(xué)習(xí)端側(cè)推理引擎“MNN

    Interpreter 由 Engine 和 Backends 構(gòu)成。前者負(fù)責(zé)模型的加載、計(jì)算圖的調(diào)度;后者包含各計(jì)算設(shè)備下的內(nèi)存分配、Op 實(shí)現(xiàn)。在 Engine 和 Backends 中,MNN
    的頭像 發(fā)表于 05-10 09:04 ?4005次閱讀

    阿里MNN支持華為NPU,優(yōu)化MNN的性能和精度問題

    今天上午據(jù)軟件綠色聯(lián)盟消息,阿里MNN已經(jīng)接入華為 HiAI生態(tài),正式支持華為NPU。
    的頭像 發(fā)表于 12-23 14:04 ?4077次閱讀

    實(shí)戰(zhàn)MNN之Mobilenet SSD部署

    MNN 是一個(gè)輕量級(jí)的深度學(xué)習(xí)端側(cè)推理引擎,核心解決深度神經(jīng)網(wǎng)絡(luò)模型在端側(cè)推理運(yùn)行問題,涵蓋深度神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化、轉(zhuǎn)換和推理。目...
    的頭像 發(fā)表于 12-10 18:14 ?1041次閱讀

    淺談阿里輕量級(jí)的深度神經(jīng)網(wǎng)絡(luò)推理引擎MNN

    MNN是一個(gè)輕量級(jí)的深度神經(jīng)網(wǎng)絡(luò)推理引擎,在端側(cè)加載深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行推理預(yù)測(cè)。作者:開心的派大星首發(fā):微信公眾號(hào):NeuroMem轉(zhuǎn)自...
    的頭像 發(fā)表于 12-10 19:29 ?1758次閱讀

    實(shí)戰(zhàn)MNN之量化部署

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

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

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

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

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

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

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

    談?wù)?b class='flag-5'>MNN的模型量化(一)數(shù)學(xué)模型

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

    實(shí)戰(zhàn)MNN之Mobilenet SSD部署(含源碼)

    MNN 是一個(gè)輕量級(jí)的深度學(xué)習(xí)端側(cè)推理引擎,核心解決深度神經(jīng)網(wǎng)絡(luò)模型在端側(cè)推理運(yùn)行問題,涵蓋深度神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化、轉(zhuǎn)換和推理。目...
    發(fā)表于 02-07 12:32 ?0次下載
    實(shí)戰(zhàn)<b class='flag-5'>MNN</b>之Mobilenet SSD部署(含源碼)

    2025開源鴻蒙開發(fā)者大會(huì)圓滿落幕

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

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

    5月24日,開源鴻蒙開發(fā)者大會(huì)2025·AI分論壇在深圳蛇口希爾頓南海酒店成功舉辦?;顒?dòng)特邀學(xué)術(shù)領(lǐng)袖、開源專家、行業(yè)先鋒和社區(qū)
    的頭像 發(fā)表于 05-26 18:06 ?1188次閱讀
    <b class='flag-5'>開源</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>者大會(huì)2025·<b class='flag-5'>AI</b>分論壇圓滿閉幕,探索<b class='flag-5'>開源</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>AI</b>無限可能