首页/新闻资讯/正文详情

PowerInfer 在 Android 上的构建与本地部署指南:Termux 设备端编译与 NDK 交叉编译全流程

发布时间:2026/9/24 16:07:19 来源:云帆数科 栏目:资讯中心
PowerInfer 在 Android 上的构建与本地部署指南:Termux 设备端编译与 NDK 交叉编译全流程
人工智能大模型推理引擎本地部署【免费下载链接】PowerInferHigh-speed Large Language Model Serving for Local Deployment项目地址https://gitcode.com/gh_mirrors/po/PowerInfer点击查看免费下载本文以 smallthinker/docs/android.md 为骨架结合仓库内的 README、构建文档与源码实现系统讲解在 Android 平台上编译并运行 PowerInferllama.cpp 生态的本地大模型推理引擎的两种主流路径无需 root 的 Termux 设备端构建以及宿主机上基于 Android NDK 的交叉编译。读完本文你将掌握在手机/平板上直接构建、用 adb 推送部署、配置推理上下文参数并理解 PowerInfer 针对 Android 平台如骁龙 8 Elite的稀疏模型专属编译与运行要点。两条路径概览在 Android 上运行 PowerInfer 的两种方式Android 并非桌面 Linux但其内核与 Linux 同源这为在移动设备上运行完整的本地大模型推理引擎提供了两条成熟路径设备端构建Termux在手机上安装 Termux 终端模拟器无需 root将其当作一个小型 Linux 环境直接通过apt安装编译工具链在设备本机上完成从源码到可执行文件的构建适合快速体验与调试。宿主机交叉编译Android NDK在 PC 上使用 Android NDK 提供的 CMake 工具链文件为指定 ABI如arm64-v8a交叉编译出二进制再通过adb push部署到设备适合面向多设备分发、集成进 Android 应用以及追求更严格编译控制的场景。无论选择哪条路径产物都是同一套基于 llama 库 的可执行程序。仓库中该分支的工程根目录为 smallthinker下文涉及源码路径均以此为准。路径一在 Termux 中直接构建 PowerInfer安装 Termux 与基础工具链Termux 是一款 Android 终端模拟器与 Linux 环境应用无需 root 权限。截至文档撰写时Termux 在 Google Play Store 中处于实验性发布状态也可以从其项目仓库或 F-Droid 获取安装包。安装并进入 Termux shell 后先完成系统包更新再安装git与cmake$ apt update apt upgrade -y $ apt install git cmakegit用于拉取源码cmake则是本仓库默认的构建系统生成器关于 CMake 构建的完整说明可参考仓库内的 构建指南。克隆源码并执行 CMake 构建Termux 环境与 Linux 高度相似因此可以直接复用常规的 CMake 构建流程。在 Termux 的 home 目录下克隆本仓库随后执行标准的两步构建$ cmake -B build -DCMAKE_BUILD_TYPERelease $ cmake --build build --config Release -j4提示-j4指定并行编译任务数可按设备 CPU 核数调整以加快编译速度Termux 环境下通常不涉及 GPU 后端保持纯 CPU 构建即可。下载模型并放置到 home 目录构建完成后下载你选定的模型文件例如 GGUF 格式的量化模型。建议将模型放置在~/home目录下以获得最佳性能——这是因为 home 目录通常位于设备内部存储读写性能优于通过 FUSE 挂载的共享存储分区。$ curl -L {model-url} -o ~/{model}.gguf运行推理进入仓库目录后即可调用编译产物运行模型$ ./build/bin/llama-cli -m ~/{model}.gguf -c {context-size} -p {your-prompt}-m指定 GGUF 模型文件路径-c上下文大小context-size-p初始提示词。文档特别强调务必先将context-size设置为一个合理的数值例如 4096再开始运行。上下文越大KV 缓存占用的内存越多若一次性设置过大内存可能瞬间飙升并把你的终端进程杀死。这里以llama-cli为例但理论上 examples 目录下的任一可执行程序如llama-server、llama-simple都可以用同样的方式运行。路径二使用 Android NDK 交叉编译设备端构建适合快速验证但如果你希望为特定设备定制最优化指令集、或将 PowerInfer 集成到自己的 Android App 中则应在宿主机上通过 CMake Android NDK 进行交叉编译。前置条件已准备好面向 Android 的交叉编译环境即安装了 Android SDK 与 NDK。理解 Android 平台的库约束与桌面环境不同Android 只内置了有限的系统原生库因此使用 NDK 构建时CMake 仅能链接到这些可用的库可参考 Android NDK 稳定 API 文档。配置 CMake 工程在项目目录下执行如下 CMake 配置命令$ cmake \ -DCMAKE_TOOLCHAIN_FILE$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DANDROID_ABIarm64-v8a \ -DANDROID_PLATFORMandroid-28 \ -DCMAKE_C_FLAGS-marcharmv8.7a \ -DCMAKE_CXX_FLAGS-marcharmv8.7a \ -DGGML_OPENMPOFF \ -DGGML_LLAMAFILEOFF \ -B build-android关键参数含义参数值说明CMAKE_TOOLCHAIN_FILE$ANDROID_NDK/build/cmake/android.toolchain.cmakeNDK 自带的 Android 工具链文件负责指定交叉编译器、sysroot 等ANDROID_ABIarm64-v8a目标 ABI可按设备调整为armeabi-v7a、x86_64等ANDROID_PLATFORMandroid-28目标 Android API 级别CMAKE_C_FLAGS/CMAKE_CXX_FLAGS-marcharmv8.7a针对现代 ARMv8.7a 指令集优化GGML_OPENMPOFF关闭 OpenMP原因见下方 NotesGGML_LLAMAFILEOFF关闭 llamafile 支持原因见下方 NotesNotes原文档强调的两个已知限制较新版本的 Android NDK 虽然自带 OpenMP 运行时但 CMake 仍需要将 OpenMP 作为依赖单独安装而这一点目前并不被支持因此这里显式关闭GGML_OPENMP。llamafile目前不支持 Android 设备故需关闭GGML_LLAMAFILE。这也与仓库中 Android 示例工程 的 CMake 参数保持一致该工程同样传入了-DGGML_LLAMAFILEOFF。关于指令集与运行时特性检测上述命令以-marcharmv8.7a为现代设备配置了最具性能的编译选项。即使你的设备并非 ARMv8.7a也无需担心PowerInfer 的底层计算内核ggml在运行时会对可用 CPU 特性进行检测自动选择合适的内核。从源码看这一机制体现在 ggml-cpu.c 中初始化时会读取AT_HWCAP辅助向量解析 ARM 特性标志如HWCAP_ASIMDDP对应 dotprod 支持并通过ggml_cpu_has_neon()、ggml_cpu_has_dotprod()等接口暴露ggml-cpu.cpp 与 ggml-cpu-aarch64.cpp 中则依据这些标志在编译进二进制的一组候选内核里动态挑选执行路径。构建与安装配置完成后执行构建与安装$ cmake --build build-android --config Release -j{n} $ cmake --install build-android --prefix {install-dir} --config Release-j{n}n为宿主机并行编译任务数--prefix {install-dir}指定安装目录将头文件、库与可执行文件集中输出便于后续整体推送。部署到设备并运行安装完成后在宿主机下载你选定的模型然后通过 adb 将安装目录与模型推送到设备$ adb shell mkdir /data/local/tmp/llama.cpp $ adb push {install-dir} /data/local/tmp/llama.cpp/ $ adb push {model}.gguf /data/local/tmp/llama.cpp/ $ adb shell进入adb shell后$ cd /data/local/tmp/llama.cpp $ LD_LIBRARY_PATHlib ./bin/llama-simple -m {model}.gguf -c {context-size} -p {your-prompt}这里以llama-simple为例llama-simple是仓库 examples 下最精简的推理示例适合验证部署链路。关于context-size的取值建议与其余 examples 的用法参照上文 Termux 一节。重要提醒Android 系统不会自动查找lib目录下的共享库路径必须显式设置LD_LIBRARY_PATHlib才能运行安装后的可执行程序。Android 在较新的 API 级别上已支持RPATH未来这一行为可能发生变化。PowerInfer 在 Android 上的专属编译要点骁龙 8 Elite 示例本仓库在 Android 上的构建还包含了 PowerInfer 稀疏推理引擎的专属配置。以骁龙 8 EliteQualcomm 8 Elite设备为例smallthinker/README.md 给出了完整流程由于稀疏推理依赖异步 I/O需要先将仓库自带的libaio与liburing交叉编译并安装进 NDK sysroot随后再执行 CMake 配置cmake -S . -B build_a \ -DCMAKE_TOOLCHAIN_FILE$NDK/build/cmake/android.toolchain.cmake \ -DANDROID_ABIarm64-v8a \ -DANDROID_PLATFORMandroid-34 \ -DCMAKE_BUILD_TYPERelWithDebInfo \ -DBUILD_SHARED_LIBSOFF \ -DGGML_OPENMPOFF \ -DLLAMA_CURLOFF \ -DAZ_ENABLE_PERFETTOON \ -DPOWERINFER_NO_FFN_REPACKON \ -DDISABLE_ARM_FEATURE_CHECKON \ -DCMAKE_C_FLAGS-marcharmv8.6-a -D__USE_GNU -Ofast -flto \ -DCMAKE_CXX_FLAGS-marcharmv8.6-a -D__USE_GNU -Ofast -flto cmake --build build_a --config RelWithDebInfo --target llama-cli -j32对比通用 NDK 构建这里出现了几个 PowerInfer 专属开关-DPOWERINFER_NO_FFN_REPACKON关闭 FFN 权重重打包该选项在仓库其他 ARM 平台如 rk3588 等交叉编译示例 中同样被设置-DDISABLE_ARM_FEATURE_CHECKON禁用 ARM 特性运行时检查配合固定的-march编译标志-DAZ_ENABLE_PERFETTOON启用 Perfetto 性能追踪-DBUILD_SHARED_LIBSOFF静态链接减少部署时的库文件管理负担。Android 上运行稀疏模型的注意事项PowerInfer 在移动端运行时README 中同样适用于 Termux还有几点值得注意运行需要使用Q4_0 量化的稀疏模型且线程数建议不超过 8-t 4是文档示例值如需低内存运行模式可先用GENERATE_EXPERT_BUNDLE环境变量生成专家包expert bundle再用 get_no_moe_weights_ffn.py 从 GGUF 中剥离 MoE 权重最后以EXPERT_BUNDLE_PATH与MAX_N_CACHED环境变量按内存上限调节缓存矩阵数如 4B 模型 1GB 限制下取 768启动在 Termux 中运行内存高效版本时可能需要 root 权限稀疏 lm_head 可能带来轻微精度损失如需关闭可修改 llama-model.cpp 中的对应条件但推理速度会变慢。将 PowerInfer 集成进 Android 应用的官方示例如果你的目标不是命令行工具而是将推理能力嵌入 Android App仓库提供了现成的示例工程 examples/llama.android包含一个 Android Library 模块llama/与一个演示 Appapp/。其中 build.gradle.kts 展示了通过 Gradle 的externalNativeBuild直接调用 CMake 的方式并显式传入-DLLAMA_CURLOFF、-DLLAMA_BUILD_COMMONON、-DGGML_LLAMAFILEOFF、-DCMAKE_BUILD_TYPERelease等参数minSdk设为 33NDK 的 CMake 版本要求 3.22.1——这些参数与本文前述 NDK 命令行构建一脉相承可作为 App 集成时的参考基线。常见问题与调试建议内存暴涨导致终端被杀几乎总是-c上下文设置过大所致。建议从 4096 起步根据设备可用内存逐步上调。lib找不到 / 动态库加载失败Android 不会自动搜索lib目录务必在运行前设置LD_LIBRARY_PATHlib。OpenMP / llamafile 报错NDK 路径下两者均不可用按上文参数显式关闭即可。设备端构建速度慢Termux 在手机本机编译耗时较长可适当减小-j防止过热降频追求速度应改用宿主机 NDK 交叉编译。指令集不匹配即使目标设备不支持编译时指定的-marchggml 的运行时 CPU 特性检测见 ggml-cpu.c会兜底选择可用内核但为获得最佳性能仍建议按实际设备调整 ABI 与架构标志。总结在 Android 上部署 PowerInfer 有两条清晰的路径Termux 设备端构建适合快速上手与原型验证全程无需 PCNDK 交叉编译则适合追求性能优化、批量分发与 App 集成。两者共享同一套 CMake 构建体系核心差异在于工具链与运行约束。对 PowerInfer 用户而言结合 smallthinker/README.md 中的稀疏模型编译与运行参数POWERINFER_NO_FFN_REPACK、DISABLE_ARM_FEATURE_CHECK、MAX_N_CACHED等即可在骁龙 8 Elite 等现代旗舰 SoC 上获得完整的本地大模型推理体验。赞分享人工智能大模型推理引擎本地部署【免费下载链接】PowerInferHigh-speed Large Language Model Serving for Local Deployment项目地址https://gitcode.com/gh_mirrors/po/PowerInfer点击查看免费下载相关推荐ik_llama.cpp Android 部署完全指南Termux 编译、NDK 交叉编译与 JNI 集成实战ik_llama.cpp Android 部署完全指南Termux 编译、NDK 交叉编译与 JNI 集成实战 本指南基于仓库 docs/android.md人工智能大模型推理引擎本地部署模型量化llama.cpp Android 部署完全指南Android Studio GUI 绑定、Termux CLI 与 NDK 交叉编译三种方案llama.cpp Android 部署完全指南Android Studio GUI 绑定、Termux CLI 与 NDK 交叉编译三种方案 本文基于 ll人工智能大模型模型推理服务推理引擎本地部署后端ZeroClaw Android 部署实战指南预编译二进制、Termux 运行与 NDK 源码编译全流程ZeroClaw Android 部署实战指南预编译二进制、Termux 运行与 NDK 源码编译全流程 ZeroClaw 是一个可部署到任意平台的全自主 A人工智能AI Agent交互助手工具调用MCP Clients本地部署Agent 工作流RAG上一篇Spaceship ZSH v3.0 深度解析脱离 Oh-My-Zsh 的原生 Prompt 架构与模块化 Section API下一篇Notepad Markdown实时预览插件技术文档工作者的效率革命创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

HyperDX 代码规范实战指南:grep-first 复用、Mantine 语义变体与前端工程最佳实践
HyperDX 代码规范实战指南:grep-first 复用、Mantine 语义变体与前端工程最佳实践

HyperDX 代码规范实战指南:grep-first 复用、Mantine 语义变体与前端工程最佳实践 【免费下载链接】hyperdx Resolve production issues, fast. An open source observability platform unifying session replays, logs, metrics, traces and errors powered by Cli… · 2026/9/24 16:07:19

Python网站导航项目-3.导航数据后端管理应用开发
Python网站导航项目-3.导航数据后端管理应用开发

本文系统性地描述了一个导航网站的搭建过程,从项目构思到实际的功能实现,逐步展现了如何通过 Django 框架构建一个便捷高效的导航管理系统。项目目标在于帮助用户通过直观的前端界面管理导航数据,同时通过批量抓取外部网站的 logo,提高页面的美观性和可读性。 文章内容涵盖… · 2026/9/24 16:07:13

【单片机毕业设计推荐】基于 STM32 的智能柜体环境监测与自动控制系统设计 基于 STM32 的多传感器衣柜环境智能调控装置设计(012009)
【单片机毕业设计推荐】基于 STM32 的智能柜体环境监测与自动控制系统设计 基于 STM32 的多传感器衣柜环境智能调控装置设计(012009)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能技术路线项目演示关于我们项目案例源码获取温馨提示:本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)有 CSDN 平台官… · 2026/9/24 16:07:13

Apache Thrift 的 Common Lisp 客户端/服务端开发完全指南:从 IDL 翻译到 RPC 实战
Apache Thrift 的 Common Lisp 客户端/服务端开发完全指南:从 IDL 翻译到 RPC 实战

Apache Thrift 的 Common Lisp 客户端/服务端开发完全指南:从 IDL 翻译到 RPC 实战 【免费下载链接】thrift Apache Thrift 项目地址: https://gitcode.com/gh_mirrors/thrift2/thrift 导读 本文基于 Apache Thrift 仓库中 lib/cl/README.md 官方文档&#… · 2026/9/24 16:39:56

Genex词法分析器深度解析:状态机如何精准切分复杂规则文本
Genex词法分析器深度解析:状态机如何精准切分复杂规则文本

Genex词法分析器深度解析:状态机如何精准切分复杂规则文本 【免费下载链接】genex-cj 生成表达式(Generate Expression,简称:Genex或GE)是一款用于按照指定语法规则随机或固定生成数据的功能库。主要适用于依赖规则数据… · 2026/9/24 16:39:56

PaddleHub 语言模型(Language Model)模块实战指南:词嵌入、语义匹配与预训练语义模型全解析
PaddleHub 语言模型(Language Model)模块实战指南:词嵌入、语义匹配与预训练语义模型全解析

人工智能大模型微调模型推理服务 【免费下载链接】PaddleFormers PaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleFormers 点击查看 免费下载 本指… · 2026/9/24 16:39:56

Regal 规则解析:non-raw-regex-pattern——用 Raw String 编写 Rego 正则模式
Regal 规则解析:non-raw-regex-pattern——用 Raw String 编写 Rego 正则模式

后端认证鉴权云原生 【免费下载链接】opa Open Policy Agent (OPA) is an open source, general-purpose policy engine. 项目地址: https://gitcode.com/gh_mirrors/op/opa 点击查看 免费下载 本文是 Regal 规则库 Idiomatic(惯用法)分类下… · 2026/9/24 16:39:50

RollingGo MCP 两种接入方式对比指南
RollingGo MCP 两种接入方式对比指南

技术团队在选择RollingGo MCP 接入方案时,需要根据业务阶段(MVP 验证 vs. 生产级应用)和用户体验要求(跳转支付 vs. Agent 内闭环)来做出判断。本文从功能、技术实现、适用场景等维度对两种方案进行对比,帮… · 2026/9/24 16:39:50

Embassy nRF91 蜂窝调制解调器网络驱动:embassy-net-nrf91 集成与实践
Embassy nRF91 蜂窝调制解调器网络驱动:embassy-net-nrf91 集成与实践

嵌入式物联网异步编程 【免费下载链接】embassy Modern embedded framework, using Rust and async. 项目地址: https://gitcode.com/gh_mirrors/em/embassy 点击查看 免费下载 导读 embassy-net-nrf91 是 Embassy 生态中面向 Nordic nRF91 系列蜂窝调制解调器&am… · 2026/9/24 16:39:50

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码