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

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

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

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

jf_pmFSk4VX ? 來(lái)源:GiantPandaCV ? 2023-10-29 16:39 ? 次閱讀

0x0. 前言

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

我這里編譯了一個(gè)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 。感興趣的小伙伴可以下載這個(gè)apk到android手機(jī)上來(lái)運(yùn)行,需要注意的是由于要在線拉取HuggingFace的權(quán)重,所以手機(jī)上需要可以訪問(wèn)HuggingFace需要代理。

在我的Redmik50手機(jī)上進(jìn)行測(cè)試,效果和速度如下:

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

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

0x1. 踩坑

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

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

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

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

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

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

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

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

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

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

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

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

解決了上面2個(gè)問(wèn)題,編譯出新的apk之后就可以正常運(yùn)行了。

0x2. 詳細(xì)教程

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

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

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

  1. 修改這個(gè)文件。更新的內(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. 將代碼的這個(gè)部分修改為:
compileOptions{
sourceCompatibilityJavaVersion.VERSION_17
targetCompatibilityJavaVersion.VERSION_17
}
kotlinOptions{
jvmTarget='17'
}
  1. 如果你遇到錯(cuò)誤:“Android Gradle插件要求運(yùn)行Java 17。你目前使用的是Java 11”,請(qǐng)按照https://stackoverflow.com/questions/76362800/android-gradle-plugin-requires-java-17-to-run-you-are-currently-using-java-11 的方法清除緩存并重新編譯。

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

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

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

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

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

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

一個(gè)編譯好的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手機(jī)上遭遇的坑以及編譯的詳細(xì)教程,接下來(lái)也會(huì)嘗試一下RWKV5。想在andorid手機(jī)上本地運(yùn)行開(kāi)源大模型的伙伴們可以考慮一下MLC-LLM,他們的社區(qū)還是比較活躍的,如果你提出一些問(wèn)題一般都會(huì)有快速的回復(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3499

    瀏覽量

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

    關(guān)注

    0

    文章

    676

    瀏覽量

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

    關(guān)注

    0

    文章

    41

    瀏覽量

    17496

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

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

收藏 0人收藏

    評(píng)論

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

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

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

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

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

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

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

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

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

    NVIDIA推出了基于A100的DGX A100

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

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

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

    OpenNCC上部署人臉檢測(cè)模型

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

    英偉達(dá)a100和h100哪個(gè)強(qiáng)?

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

    英偉達(dá)a100a800的區(qū)別

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

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

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

    英偉達(dá)A100的優(yōu)勢(shì)分析

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

    MLC-LLM的編譯部署流程

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

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

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

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

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

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

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

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品