ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

手机里训练神经网络只要30分钟:Termux 机器学习与深度学习实战指南

手机里训练神经网络只要30分钟:Termux 机器学习与深度学习实战指南 手机里训练神经网络只要30分钟Termux 机器学习与深度学习实战指南【免费下载链接】termux-appTermux - a terminal emulator application for Android OS extendible by variety of packages.项目地址: https://gitcode.com/GitHub_Trending/te/termux-app你的手机其实能跑神经网络训练但前提是先接受它的三个限制没有 CUDA、内存封顶、Android 12 会主动杀后台进程。Termux 是一个跑在 Android 上的终端模拟器和 Linux 环境用它做机器学习和深度学习适合学原理、做原型、跑离线推理不适合拿它和显卡较劲。这篇文章按先跑通、再讲环境、最后谈瓶颈的顺序带你从零把环境装好到训练、推理再到把模型包成本地 API。先跑通再讲道理30 秒看到一次学习别急着装 PyTorch。先用纯 NumPy 跑一个 50 行的梯度下降确认你的手机 CPU 真的在干活pkg install -y python python - EOF import numpy as np rng np.random.default_rng(0) X rng.random((100, 3)) w, b np.array([2.0, -1.0, 0.5]), 0.3 y X w b theta np.zeros(3) for _ in range(50): grad 2 * X.T (X theta - y) / len(X) theta - 0.01 * grad print(学到的权重:, theta.round(3)) print(loss:, round(float(np.mean((X theta - y) ** 2)), 4)) EOF成功判定学到的权重接近[2. -1. 0.5]、loss 接近 0说明训练循环已经在工作了。整个例子不需要联网NumPy 装好后就是Termux 离线 AI 开发的形态。能力边界速览Termux 干得了什么、干不了什么一句话结论小模型训练和推理随便跑大模型别想GPU 别指望。场景结论原因NumPy / scikit-learn 训练✅ 流畅纯 CPU 数值计算手机性能够用PyTorch 训小网络 1M 参数✅ 可行纯 CPU 版 torch 已支持 Android加载预训练模型做推理✅ 推荐用法权重现成手机算力足够用 CUDA 加速❌ 不可行移动端 PyTorch 只发 CPU 版本跑大语言模型 / 高分辨率生成❌ 不推荐内存和算力都到不了门槛另外注意 Android 12 及以上的版本系统对后台进程有 CPU 和数量限制长训练任务中途被signal 9杀掉是正常现象原因和解法见文末常见问题。一次装好的环境Termux 上安装 Python 与 PyTorch 的一组命令不建议装一个库写一节按下面顺序一把装完每条都标了作用和你怎么判断它成了pkg update pkg upgrade -y作用同步包数据库并升级现有包。看到Upgrade complete即成功这是后面一切编译/安装顺利的前提。pkg install -y python numpy scipy scikit-learn作用科学计算基础三件套。用pkg而不是pip装它们是因为 Termux 包仓库里的版本是针对 Termux 工具链编译过的比 pip 源码现编译稳定得多。pkg报0 upgraded, N newly installed即成功。pip install --upgrade pip setuptools wheel pip install --no-cache-dir torch torchvision作用把 pip 工具链升到最新然后装 PyTorch 的CPU 版 Android wheel--no-cache-dir避免白占存储。下载进度走完、最后显示Successfully installed即成功aarch64 手机约 200MB 下载量耐心等。最后一次性验证python -c import numpy, scipy, sklearn, torch; print(numpy.__version__, scipy.__version__, sklearn.__version__, torch.__version__)看到四个版本号排成一排环境就算彻底就绪——之后训练和推理全程可以离线。从装好到跑顺训练与推理的关键操作训练只记四件事完整训练脚本不用背抓住这四个点基本就不会翻车device cpu # 1. 显式写明设备别写 cuda x torch.tensor(X, dtypetorch.float32) # 2. 数据先转 float32 张量 for i in range(0, len(X), 32): # 3. 小批量循环小内存手机用 16 batch X[i:i32] loss criterion(model(batch), y[i:i32]) loss.backward(); optimizer.step(); optimizer.zero_grad() # 4. 每个 epoch 存一次 checkpoint防止被系统杀进程前功尽弃 torch.save(model.state_dict(), ckpt.pt)批大小第 3 条里的 32是手机训练里最重要的旋钮它直接决定峰值内存。推理两行不能省model.eval() # 关掉 dropout / batchnorm 的训练模式 with torch.no_grad(): # 不建计算图省内存且更快 out model(x_test)漏掉model.eval()是新手最常见的坑训练能跑、推理结果却飘多半就是这行的锅。小内存下怎么跑训练资源瓶颈决策图先判断你卡在哪个瓶颈再走对应的路别盲目降模型不同档位设备的参考选择档位4GB 内存机型6~8GB 内存机型训练小网络、batch 16中等网络、batch 32~64推理量化后的模型更稳妥可直接加载 fp32 权重Termux 跑模型图像分类与文本情感两个可复用玩法这两个玩法的共同点是不从头训练——复用现成的权重或现成的特征把部署本身当作练习目标。玩法一图像分类直接复现 MobileNetV2 的权重思路torchvision 自带 ImageNet 预训练权重手机上只做预处理 前向推理一张手机照片几秒钟出结果。关键几行from torchvision import models, transforms model models.mobilenet_v2(weightsmodels.MobileNet_V2_Weights.DEFAULT) model.eval() # 预处理固定套路Resize(256) → CenterCrop(224) → ToTensor → Normalize out model(transforms.ToTensor()(img).unsqueeze(0))成功判定out.argmax()给出一到三个 ImageNet 类别索引和照片内容对得上即可。想省内存就先torch.quantization.quantize_dynamic再推理。玩法二文本情感分析三行代码一个分类器不用深度模型TF-IDF 朴素贝叶斯在小数据集上又快又准是手机上最划算的文本方案from sklearn.pipeline import make_pipeline from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB pipe make_pipeline(TfidfVectorizer(), MultinomialNB()) pipe.fit(texts, labels) # 训练 pipe.predict([新句子]) # 推理成功判定在自己留出的测试集上打印pipe.score(...)分数在 0.8 上下即正常。换成中文语料时把TfidfVectorizer的切词换掉即可管道结构不变。进阶可选把模型包成本地 API 服务如果你想在平板、手表或另一台设备上调用手机里训练好的模型用 Flask 加一个 HTTP 端点就够了核心不到五行from flask import Flask, request, jsonify app Flask(__name__) app.route(/predict, methods[POST]) def predict(): x torch.tensor(request.json[input], dtypetorch.float32) with torch.no_grad(): return jsonify({result: model(x).numpy().tolist()})python ai_api.py启动后在局域网另一台设备上curl -X POST http://手机IP:5000/predict -H Content-Type: application/json -d {input: [[1.2, 0.3]]}成功判定curl 返回{result: [...]}。想持久化模型用torch.jit.trace导出后加载比重新构建网络快。常见问题Android 12 上长训练被signal 9杀掉这是系统对 CPU 占用过高的后台进程做限制不是你的代码有问题。缓解办法屏幕常亮运行、开发选项里关闭修剪空白/空进程、或每 epoch 存 checkpoint 断点续跑。背景说明见仓库 README.md 的 NOTICE 段落。pip 装 torch 报错或装完体积巨大先df -h $PREFIX确认磁盘余量大于 1GB网络波动就换网络重试装完记得pip cache purge清掉构建缓存能省出上百 MB。手机训练一定比电脑快吗不会CPU 版 PyTorch 在手机上和同代桌面 CPU 比慢一个量级。它的价值在于随时随地、断网可用、零成本定位是学习和原型工具不是训练集群的替代品。多线程能再快多少会有一点但手机 CPU 大小核差异大盲目加线程反而拖慢。默认即可别手动设OMP_NUM_THREADS折腾它。接下来可以做什么把手上的真实文本数据接进玩法二的管道把测试集分数记到本子里对比不同分词方案用torch.quantization给 MobileNetV2 做动态量化对比量化前后模型文件大小给训练脚本加上--resume参数从 checkpoint 断点续跑适应被杀进程的场景装 proot-distro 起一个完整的 Linux 发行版体验更接近桌面的包管理环境资源与延伸阅读应用主文档docs/en/index.md应用源码仓库说明含 Android 12 限制背景README.md应用与终端渲染源码目录app/src/main/、terminal-emulator/Termux 的 Python / NumPy / SciPy / scikit-learn 包均在 Termux 官方包仓库termux-packages 项目中维护pkg装的就是它们PyTorch 官方文档的 Android 部署章节可查 CPU wheel 的具体版本矩阵【免费下载链接】termux-appTermux - a terminal emulator application for Android OS extendible by variety of packages.项目地址: https://gitcode.com/GitHub_Trending/te/termux-app创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表