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

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

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

如何使用MLC-LLM在A100/Mac M2上部署RWKV模型

jf_pmFSk4VX ? 來源:GiantPandaCV ? 2023-10-29 16:39 ? 次閱讀

0x0. 前言

這篇文章主要是填一下 MLC-LLM 部署RWKV World系列模型實戰(zhàn)(3B模型Mac M2解碼可達26tokens/s) 這里留下來的坑,這篇文章里面介紹了如何使用 MLC-LLM 在A100/Mac M2上部署 RWKV 模型。但是探索在Android端部署一個RWKV對話模型的app時卻碰到了諸多問題,解決的周期也很長,之前留了issue在MLC-LLM的repo,這周@chentianqi大佬回復(fù)說之前編譯出的app會在模型初始化階段卡住的問題已經(jīng)解決了,所以我又重新開始踩了一些坑最終完成了在手機上運行RWKV World4 3B模型的目的。這里把踩的坑和Android編譯方法都描述一下。

我這里編譯了一個RWKV4 World 3B模型的權(quán)重int4量化版本的apk,地址為:https://github.com/BBuf/run-rwkv-world-4-in-mlc-llm/releases/download/v1.0.0/app-debug.apk 。感興趣的小伙伴可以下載這個apk到android手機上來運行,需要注意的是由于要在線拉取HuggingFace的權(quán)重,所以手機上需要可以訪問HuggingFace需要代理。

在我的Redmik50手機上進行測試,效果和速度如下:

9c0883fc-7633-11ee-939d-92fbcf53809c.png

每一秒大概可以解碼8個token,我感覺速度勉強夠用了。由于RWKV5迭代到了第5個版本,后續(xù)希望能支持RWKV5的模型,當(dāng)然也可以尋求新的優(yōu)化機會提升解碼速度。

0x1. 踩坑

之前寫這篇文章 MLC-LLM 部署RWKV World系列模型實戰(zhàn)(3B模型Mac M2解碼可達26tokens/s) 的時候發(fā)現(xiàn)android app在初始化的時候一直會卡住,即使換成官方編譯的app也是如此,所以提了issue之后就放棄了?,F(xiàn)在這個bug被修復(fù)了,不過我沒有找到具體的改動pr是什么,但我在mlc-llm的android部分沒有發(fā)現(xiàn)相關(guān)改動,所以大概率是relax本身的bug,就不深究了。

這次仍然是按照之前的方法進行編譯,但是也踩了幾個坑,具體體現(xiàn)在下方的改動:

9c3b78de-7633-11ee-939d-92fbcf53809c.png

這個改動只是為了在本地可以編譯出RWKV的android app,有坑的地方體現(xiàn)在下面的2個改動:

9c55d116-7633-11ee-939d-92fbcf53809c.png

第一個坑是在dump_mlc_chat_config的時候,對于RWKV World模型應(yīng)該使用工程下面的tokenzier_model文件作為tokenzie的文件,但是之前沒考慮這個問題(dump出的config中tokenizer_files字段為空)就會導(dǎo)致編譯出的app在初始化階段報錯:

9c77d2de-7633-11ee-939d-92fbcf53809c.png

經(jīng)過上面的修改之后重新在mlc-llm下面pip install .,然后編譯模型就可以得到可以正常初始化的config了。這個問題是通過在Android Studio里面通過Device Explore查看下載的文件夾發(fā)現(xiàn)的,我發(fā)現(xiàn)少了一個tokenizer_model文件才注意的。

第二個坑是初始化完成之后聊天的時候不出字,我在mac上去復(fù)現(xiàn)了這個錯誤,然后發(fā)現(xiàn)是因為在RWKV里面把max_window_size這個屬性設(shè)置成了1。

9c94482e-7633-11ee-939d-92fbcf53809c.png

然后在mlc_chat.cc里面通過max_window_size判斷結(jié)束符時沒有考慮-1,所以第一個token生成之后程序就終止了。所以在這里加一個特判進行了修復(fù)。

9cb44552-7633-11ee-939d-92fbcf53809c.png

解決了上面2個問題,編譯出新的apk之后就可以正常運行了。

0x2. 詳細(xì)教程

下面是編譯出apk的詳細(xì)教程。在這之前請閱讀:MLC-LLM 部署RWKV World系列模型實戰(zhàn)(3B模型Mac M2解碼可達26tokens/s) ,這是前置內(nèi)容。

對于Android,你可以按照https://mlc.ai/mlc-llm/docs/deploy/android.html的教程在你的手機上編譯apk。

根據(jù)官方教程,這里有一些需要修改的地方:

  1. 修改這個文件。更新的內(nèi)容應(yīng)該是:
{
"model_libs":[
"RWKV-4-World-3B-q4f16_1"
],
"model_list":[
{
"model_url":"https://huggingface.co/BBuf/RWKV-4-World-3B-q4f16_1/",
"local_id":"RWKV-4-World-3B-q4f16_1"
}
],
"add_model_samples":[]
}
  1. 將代碼的這個部分修改為:
compileOptions{
sourceCompatibilityJavaVersion.VERSION_17
targetCompatibilityJavaVersion.VERSION_17
}
kotlinOptions{
jvmTarget='17'
}
  1. 如果你遇到錯誤:“Android Gradle插件要求運行Java 17。你目前使用的是Java 11”,請按照https://stackoverflow.com/questions/76362800/android-gradle-plugin-requires-java-17-to-run-you-are-currently-using-java-11 的方法清除緩存并重新編譯。

一旦你完成了APK的編譯,你可以在你的手機上啟用開發(fā)者模式并安裝APK以供使用。

以小米手機為例,你可以按照下面的教程啟用開發(fā)者模式并將APK傳輸?shù)侥愕氖謾C上。

  • 第一步:在手機上啟用USB調(diào)試

    • 首先,前往你的手機的"設(shè)置 -> 我的設(shè)備 -> 所有規(guī)格 -> MIUI版本",連續(xù)點擊"MIUI版本"七次以進入開發(fā)者模式。
    • 接下來,導(dǎo)航至"設(shè)置 -> 額外設(shè)置 -> 開發(fā)者選項",打開"USB調(diào)試"和"USB安裝"。
  • 第二步:配置Android Studio

    • 打開你的Android Studio項目,前往"運行 -> 編輯配置",如下圖所示,選擇"打開選擇部署目標(biāo)對話框"。這將在每次你調(diào)試時提示設(shè)備選擇對話框。注意:如果你直接選擇"USB設(shè)備",你可能無法在調(diào)試過程中檢測到你的手機。
  • 第三步:在線調(diào)試

    • 通過USB將你的手機連接到電腦。通常會自動安裝必要的驅(qū)動程序。當(dāng)你運行程序時,將出現(xiàn)設(shè)備選擇對話框。選擇你的手機,APK將自動安裝并運行。

一個編譯好的apk: https://github.com/BBuf/run-rwkv-world-4-in-mlc-llm/releases/download/v1.0.0/app-debug.apk

0x3. 總結(jié)

這篇文章分享了一下使用MLC-LLM將RWKV模型跑在Android手機上遭遇的坑以及編譯的詳細(xì)教程,接下來也會嘗試一下RWKV5。想在andorid手機上本地運行開源大模型的伙伴們可以考慮一下MLC-LLM,他們的社區(qū)還是比較活躍的,如果你提出一些問題一般都會有快速的回復(fù)或者解決方法。

0x4. 相關(guān)link

  • https://github.com/mlc-ai/tokenizers-cpp/pull/14
  • https://github.com/mlc-ai/mlc-llm/pull/1136
  • https://github.com/mlc-ai/mlc-llm/pull/848
  • https://mlc.ai/mlc-llm/docs/
  • StarRing2022/RWKV-4-World-1.5B
  • StarRing2022/RWKV-4-World-3B
  • StarRing2022/RWKV-4-World-7B
  • https://github.com/mlc-ai/mlc-llm/issues/862
  • https://github.com/mlc-ai/mlc-llm/issues/859



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

    關(guān)注

    1

    文章

    3277

    瀏覽量

    48957
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    660

    瀏覽量

    32924
  • MLC
    MLC
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    17314

原文標(biāo)題:0x4. 相關(guān)link

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深度學(xué)習(xí)模型部署與優(yōu)化:策略與實踐;L40S與A100、H100的對比分析

    隨著生成式AI應(yīng)用的迅猛發(fā)展,我們正處在前所未有的大爆發(fā)時代。在這個時代,深度學(xué)習(xí)模型部署成為一個亟待解決的問題。盡管GPU訓(xùn)練和推理中扮演著關(guān)鍵角色,但關(guān)于它在生成式AI領(lǐng)域的誤解仍然存在。近期英偉達L40S GPU架構(gòu)成
    的頭像 發(fā)表于 10-07 09:43 ?1616次閱讀
    深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>部署</b>與優(yōu)化:策略與實踐;L40S與<b class='flag-5'>A100</b>、H<b class='flag-5'>100</b>的對比分析

    搭載M2 Ultra的Mac Pro,真能兼具高性能和靈活擴展嗎?

    芯片換代。新款Mac Pro保證超高自身性能的同時,也將擴展性做到了極致,但與前代產(chǎn)品相比,還是留有一些遺憾的。 ? M2 U ltra 性能突破 ? 新款Mac Pro上最引人注目
    的頭像 發(fā)表于 06-15 01:59 ?2031次閱讀

    介紹STM32cubeIDE上部署AI模型的系列教程

    介紹STM32cubeIDE上部署AI模型的系列教程,開發(fā)板型號STM32H747I-disco,值得一看。MCUAI原文鏈接:【嵌入式AI開發(fā)】篇四|部署篇:STM32cubeID
    發(fā)表于 12-14 09:05

    Arm虛擬硬件上部署PP-PicoDet模型

    1、Arm虛擬硬件上部署PP-PicoDet模型  經(jīng)典的深度學(xué)習(xí)工程是從確認(rèn)任務(wù)目標(biāo)開始的,我們首先來簡單地介紹一下目標(biāo)檢測任務(wù)以及本期部署實戰(zhàn)課程中我們所使用的工具和平臺。  目
    發(fā)表于 09-16 14:42

    NVIDIA推出了基于A100的DGX A100

    發(fā)布A100 80GB加速卡之后,NVIDIA也更新了自家的DGX A100產(chǎn)品線,最多可達640GB HBM2e顯存了。此外,還有全新的DGX Station
    的頭像 發(fā)表于 11-17 10:26 ?4440次閱讀

    蘋果M2芯片將搭載新Mac系列設(shè)備6月份發(fā)布

      目前,蘋果官宣將在6月初的WWDC 2022中公布M2芯片,將搭載與今年下半年推出的新Mac系列設(shè)備中。首款搭載M2自研芯片的設(shè)備為新款13英寸MacBook Pro、24英寸iMac和M
    的頭像 發(fā)表于 04-06 11:46 ?5231次閱讀

    OpenNCC上部署人臉檢測模型

    電子發(fā)燒友網(wǎng)站提供《OpenNCC上部署人臉檢測模型.zip》資料免費下載
    發(fā)表于 06-27 10:34 ?0次下載
    <b class='flag-5'>在</b>OpenNCC<b class='flag-5'>上部署</b>人臉檢測<b class='flag-5'>模型</b>

    英偉達a100和h100哪個強?

    英偉達a100和h100哪個強? 英偉達A100比H100更強。英偉達A100處理大型
    的頭像 發(fā)表于 08-07 17:32 ?1.5w次閱讀

    英偉達a100a800的區(qū)別

    英偉達a100a800的區(qū)別 英偉達A100A800是兩種不同的產(chǎn)品, 主要區(qū)別如下: 1. 架構(gòu)不同:A100使用Ampere架構(gòu),
    的頭像 發(fā)表于 08-07 17:57 ?4.5w次閱讀

    英偉達A100和4090的區(qū)別

    。 2. 核心數(shù)量:英偉達A100的核心數(shù)量是6912個,4090中是4608個。 3. 性能:英偉達A100的理論最高浮點計算性能為19.5FP32/9.7FP64 exaFLOP
    的頭像 發(fā)表于 08-08 11:59 ?3w次閱讀

    英偉達A100的優(yōu)勢分析

    HBM2顯存。 英偉達A100是一款高性能的GPU,其主要優(yōu)勢如下: 1. 支持高效的AI計算:A100采用了新一代的Tensor Core技術(shù),能夠AI計算方面提供卓越的性能,為A
    的頭像 發(fā)表于 08-08 15:25 ?3334次閱讀

    MLC-LLM的編譯部署流程

    MLC-LLM部署各種硬件平臺的需求,然后我就開始了解MLC-LLM的編譯部署流程和RWKV
    的頭像 發(fā)表于 09-04 09:22 ?2976次閱讀
    <b class='flag-5'>MLC-LLM</b>的編譯<b class='flag-5'>部署</b>流程

    深度學(xué)習(xí)模型部署與優(yōu)化:策略與實踐;L40S與A100、H100的對比分析

    、TensorFlow、PyTorch、Batchnorm、Scale、Crop算子、L40S、A100、H100A800、H800
    的頭像 發(fā)表于 09-22 14:13 ?1204次閱讀
    深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>部署</b>與優(yōu)化:策略與實踐;L40S與<b class='flag-5'>A100</b>、H<b class='flag-5'>100</b>的對比分析

    mlc-llm對大模型推理的流程及優(yōu)化方案

    MLC-LLM 部署RWKV World系列模型實戰(zhàn)(3B模型
    發(fā)表于 09-26 12:25 ?958次閱讀
    <b class='flag-5'>mlc-llm</b>對大<b class='flag-5'>模型</b>推理的流程及優(yōu)化方案

    使用MLC-LLM支持RWKV-5推理的過程思考

    LLM的理解比較有限,從代碼實現(xiàn)的角度來說,RWKV的狀態(tài)和KV Cache不同,不依賴序列長度,這讓RWKV模型各種長度下運行內(nèi)存和運
    的頭像 發(fā)表于 11-19 15:58 ?1012次閱讀
    使用<b class='flag-5'>MLC-LLM</b>支持<b class='flag-5'>RWKV</b>-5推理的過程思考