Termux 机器学习环境搭建教程:30 分钟在手机上装好 scikit-learn 和 PyTorch
Termux 机器学习环境搭建教程30 分钟在手机上装好 scikit-learn 和 PyTorch【免费下载链接】termux-appTermux - a terminal emulator application for Android OS extendible by variety of packages.项目地址: https://gitcode.com/GitHub_Trending/te/termux-appTermux 是一个运行在 Android 上的终端模拟器兼 Linux 环境。本教程带你在手机上装齐 Python 机器学习全家桶NumPy、scikit-learn、PyTorch 都能直接安装小数据集离线训练也没有问题。全程 30 分钟左右不需要电脑。开始前先确认你的手机能不能跑装环境之前先看一眼硬件。机器学习吃内存内存不够时训练会直接卡死或被系统杀掉。CPU 架构最低要求跑 PyTorch 小模型的建议aarch64arm644GB 内存Android 7.06GB 内存以上Android 10arm32 位2GB 内存不建议多数数值库缺 32 位支持x86 / x86_644GB 内存可用但真机很少见查看自己设备架构uname -m输出aarch64就可以按本文操作。另外提醒一句Android 12 及以上会主动杀后台里进程数过多或占用 CPU 过高的应用Termux 官方 README 里也明确标注了这个限制长时间训练时留意一下手机后台策略。第一步Termux 基础环境搭建升级系统并安装 Python打开 Termux先更新软件源和已装包避免后续装包时报版本冲突pkg update pkg upgrade -y接着装 Python 和编译工具。clang和make是备胎某些科学计算库没有现成 wheel 时pip 会现场编译这时就需要它们。pkg install -y python python-dev clang make git pip install --upgrade pip setuptools wheel为什么要装python-dev它提供头文件缺了它pip install numpy这类会编译的包会在链接阶段失败。验证一下python --version pip --version配置 Termux 的 scikit-learn一次装齐 NumPy 和 SciPy经典机器学习库三件套可以一条命令装完依赖会自动解析pip install --no-cache-dir numpy scipy scikit-learn--no-cache-dir值得保留pip 默认把下载的 wheel 缓存在~/.cache/pip手机存储紧张时能省出几百 MB。装完跑一段最小验证代码不超过 10 行import numpy as np from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression X, y load_iris(return_X_yTrue) model LogisticRegression().fit(X[:90], y[:90]) print(np.__version__, model.score(X[90:], y[90:]))能打印出 NumPy 版本号和 0.9 以上的准确率说明经典机器学习这条线已经通了。在 Termux 安装 PyTorch深度学习框架 CPU 版配置PyTorch 是 Termux 上最容易装成功的深度学习框架一条命令pip install --no-cache-dir torch torchvision两个预期要知道手机上没有 CUDAtorch.cuda.is_available()返回False属正常现象所有计算走 CPU。如果提示正在从源码编译而不是下载 wheel大概率是版本不匹配耐心等或者直接换低一个 minor 版本重装比等编译完更省事。验证张量和多线程是否工作import torch print(torch.__version__, torch.get_num_threads()) x torch.randn(4, 4) print(x x)get_num_threads()会告诉你有几个 CPU 核心参与运算。手机上核多但频率低这个数比想象中重要。在手机上离线训练模型内存、进程、存储三个坑训练前把数据放在本地目录不要依赖网络。整个流程按下面这张图走第一个坑是内存。批次大小从 256 开始往下试pip装好的库如果暂时不用del掉引用并及时gc。第二个坑是进程被杀Android 12 上如果训练中途出现Process completed (signal 9)多半是系统干的把 Termux 关掉省电优化再试。第三个坑是存储把外存挂进来放数据集termux-setup-storage ln -s ~/storage/shared/datasets ~/datasets最小训练示例随机数据只是为了验证训练-更新这条链路import torch, torch.nn as nn net nn.Sequential(nn.Linear(20, 32), nn.ReLU(), nn.Linear(32, 1), nn.Sigmoid()) opt torch.optim.Adam(net.parameters(), lr1e-3) for _ in range(50): opt.zero_grad() loss nn.BCELoss()(net(torch.randn(64, 20)), torch.rand(64, 1)) loss.backward(); opt.step() print(loss.item())手机 CPU 上这种规模跑 50 轮只要几秒到几十秒完全够用。Termux 深度学习实战把手机变成推理服务训练完或下载好模型后常见需求是让同一局域网的其他设备来调用。Flask 十几行就能搭起来from flask import Flask, request, jsonify import torch app Flask(__name__) app.post(/predict) def predict(): x torch.tensor(request.json[input], dtypetorch.float32) return jsonify({out: (x * 2).tolist()}) app.run(host0.0.0.0, port5000)pip install --no-cache-dir flask python server.py在 Termux 里用ifconfig找到wlan0的 IP另一台设备同网段访问http://IP:5000/predict即可。注意手机锁屏或省电模式下 Wi-Fi 可能断开测试时保持 Termux 在前台。想把模型塞进 App 而不是走 HTTP可以导出后再转移动端格式traced torch.jit.trace(net, torch.randn(1, 20)) traced.save(net.pt)TorchScript 权重可以进一步转 ONNX再用移动端推理运行时加载这条路线比直接跑 Python 服务更适合量产场景。常见报错与延伸资料现象处理办法pip install卡在 compiling确认pkg install clang make python-dev都装过等编译完或降一个库版本训练中途signal 9Android 12 杀进程关闭 Termux 的省电优化No space left on device清 pip 缓存、数据集挪到~/storage外存端口起不来确认host0.0.0.0且手机与客户端在同一 Wi-Fi延伸资料按用途找Termux 官方文档与 Package Management 页面pkg命令、源维护报错repository is under maintenance的官方解法都在这。termux-packages 仓库的包目录查 NumPy、SciPy、scikit-learn 在 Termux 软件源里的当前版本。PyTorch ExecuTorch 与 ONNX Runtime Mobile 文档手机侧推理部署的正经路线比跑完整 Python 框架更适合真机。scikit-learn 官方 User Guide数据划分、交叉验证的规范做法。本仓库内文档入口docs/en/index.md应用层源码在 app/src/main/java/com/termux/app/排查 Termux 本身行为时可以参考 README.md。最后三件落地建议都有明确收益训练与推理分离小数据集在手机上跑通后导出 TorchScript/ONNX 权重正式推理交给 App 端别在手机上长期跑 Python 服务。用torch.quantization做动态量化线性层为主的网络体积能压到 1/4 左右CPU 推理更快。数据集统一放~/datasets软链指向的外存~/.cache定期清理Termux 内部存储留给模型和日志。【免费下载链接】termux-appTermux - a terminal emulator application for Android OS extendible by variety of packages.项目地址: https://gitcode.com/GitHub_Trending/te/termux-app创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考