记一次端侧大模型部署
实验环境准备
操作系统:Windows 11、HarmonyOS 4.2.0
安卓设备:HUAWEI Pura 70
部署工具:开源项目 mlc-llm ,Android Studio
安装 Android Studio,并通过它安装 NDK
配置 Python 、 JDK 、CMake、adb、Rust 环境
参考环境
1 | >javac -version |
模型的编译与 APK 打包
从 GitHub 上 克隆项目
1 | git clone https://github.com/mlc-ai/mlc-llm.git |
由于拉取时 GitHub 上项目构建失败,通过查找切换到历史版本 0034e3c61e0bcf7f1e0e2f8ca0d8eef4db3b6771
1 | git checkout 0034e3c6 |
设置环境变量
1 | $env :MLC_LLM_SOURCE_DIR |
拉取必要组件
1 | git submodule update --init --recursive |
配置文件 mlc-package-config.json
1 | { |
运行
1 | mlc_llm package |
发现无法拉取模型,采取手动拉取模型的方式

将模型放在目录 \AppData\Local\mlc_llm\model_weights\hf\mlc-ai 下
重新运行命令
1 | mlc_llm package |
在
1 | [152/157] Generating aarch64-linux-android/release/libtokenizers_c.a |
报错

根据编译器的 help 并查询资料发现: Rust 1.89.0 把 dangerous_implicit_autorefs lint现在默认设置为deny级别
于是打开 \mlc-llm\3rdparty\tokenizers-cpp\rust\src\lib.rs 进行更改

将 219 行
1 | *out_len = (*handle).decode_str.len(); |
改为
1 | *out_len = (&(*handle).decode_str).len(); |
将 252 行
1 | *out_len = (*handle).id_to_token_result.len(); |
改为
1 | *out_len = (&(*handle).id_to_token_result).len(); |
重新运行
1 | mlc_llm package |
成功
将生成在 dist/ 目录下的文件放入 app/src/main/assets/ ,连接设备,在 Android Studio 打开 MLCChat 文件夹打包 APK 并通过 adb 安装运行
成功进入 Model List 但是输入 input 闪退,怀疑是 7B 模型过大手机算力不够,重新下载并配置文件重新生成
1 | { |
成功部署在手机上,但发现只有 gemma 能成功运行,怀疑是与上文原因相同,推测解决方法为通过调整 mlc-package-config.json 中的 overrides 字段,减少 context_window_size,以减少每次推理时所需的内存

并依次询问了三个问题

模型生成速度很慢,第一个问题花了将近一分钟的时间,并且很明显后两个问题的回答都是错误的
另外,为了支持完全离线运行,在 MLCChat/mlc-package-config.json 文件中,设置 bundle_weight 为 true,这会指示 MLC 将模型的权重打包进 APK,而不再通过网络下载
1 | { |
但在打包 APK 时,遇到了以下报错
1 | > A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable |
原因是 APK 即 Zip32 对文件大小和文件内部偏移量限制 4GB ,所以只能删除 Phi 并重新打包 APK ,成功完全离线部署在手机上
MLC 通过将 Hugging Face 这类高层框架转换为兼容的表示格式,同时通过量化、剪枝等技术优化模型,以适应设备的资源限制,降低内存占用和计算量。对于 Android 来说,MLC 将模型和运行时库集成到 Android 应用中,通过 JNI 接口与 Java 层交互,支持 Android 设备的 GPU 加速和其他硬件加速。
通过使用 MLC_LLM 将不同模型部署到 Android 手机上,体验了端侧本地的离线模型,但碍于端侧算力不足,经过剪枝、量化的大模型生成速度慢,体验远不如云端的大模型。
参考资料
mlc-ai/mlc-llm: Universal LLM Deployment Engine with ML Compilation
- Title: 记一次端侧大模型部署
- Author: exdoubled
- Created at : 2025-10-24 22:00:00
- Updated at : 2025-10-25 00:30:24
- Link: https://github.com/exdoubled/exdoubled.github.io.git/misc/lab1/
- License: This work is licensed under CC BY-NC-SA 4.0.