在手机上运行大语言模型?
我们带着问题来思考这次试验。
一、什么是termux? 官网介绍
Termux 是一个 Android 平台上的应用程序,它提供了一个功能丰富的 Linux 环境。它允许用户在 Android 设备上运行一个基于 Linux 的终端模拟器和一个扩展的 Linux 包集合。Termux 不需要设备进行 root,就可以直接在 Android 系统上安装和运行。
Termux 与 Linux 的关系
Termux 是基于 Linux 的,它提供了一个类似于 Linux 的命令行环境。Termux 使用的是 Android 的 Linux 内核,但它提供了一个独立的环境,其中包含了许多常见的 Linux 工具和应用程序。这些工具和应用程序是通过 Termux 的包管理系统安装的,该系统类似于 Debian 或 Ubuntu 中的 `apt`。
在 Termux 中,用户可以使用各种 Linux 命令行工具,如 `bash`、`ssh`、`python`、`git` 等。此外,Termux 还支持用户安装额外的软件包,以扩展其功能。
Termux 与 Android 的关系
Termux 是为 Android 设备设计的,它利用了 Android 的 Linux 内核,但在用户空间中创建了一个隔离的环境。这意味着 Termux 在 Android 设备上运行,但它并不直接修改 Android 系统的核心部分或需要系统级的权限。
Termux 通过提供一个独立的环境,使得用户可以在不影响 Android 系统稳定性的情况下,执行各种 Linux 命令和程序。由于 Termux 不需要 root 权限,它可以在大多数 Android 设备上安全地使用。
Termux 的特点
- 无需 root:Termux 不需要对 Android 设备进行 root,即可提供 Linux 环境。
- 包管理器:Termux 有自己的包管理器,可以用来安装、更新和管理软件包。
- 可扩展性:用户可以通过安装额外的软件包来扩展 Termux 的功能。
- 可访问性:Termux 可以访问 Android 设备的存储空间,允许用户在两个环境之间传输文件。
- 自定义:用户可以通过安装额外的插件和工具来自定义 Termux 环境。
Termux 的用途
Termux 可以用于多种用途,包括但不限于:
- 远程管理:通过 SSH 客户端连接到远程服务器。
- 编程:支持多种编程语言,如 Python、Ruby、Node.js 等。
- 文件管理:使用命令行工具管理 Android 设备上的文件。
- 网络监控:运行网络分析工具来监控网络活动。
- 系统备份:使用 `rsync` 等工具备份系统数据。
总之,Termux 是一个强大的工具,它在 Android 设备上提供了一个接近于 Linux 的环境,同时保持了与 Android 系统的兼容性和独立性。对于那些希望在移动设备上使用 Linux 命令行工具的用户来说,Termux 是一个理想的选择。
相关问题:
- 如果在termux安装软件时出现:unable to locate package,请先执行: apt update
- 安装pytorch所需的版本: https://mirrors.sau.edu.cn/termux/apt/termux-main/pool/main/p/python-torch/, 命令:pkg install python-torch
二、什么是ollama?
Ollama 是一个强大的框架,设计用于在 Docker 容器中部署 LLM。Ollama 的主要功能是在 Docker 容器内部署和管理 LLM 的促进者,它使该过程变得非常简单。它帮助用户快速在本地运行大模型,通过简单的安装指令,可以让用户执行一条命令就在本地运行开源大型语言模型,例如 Llama 2。
三、ollama可以运行在termux上?
我们先看看一些资料:
https://gitlab.com/-/snippets/3682973
https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#building-the-project-using-termux-f-droid
https://github.com/ollama/ollama/issues/1006
四、开始安装
1. 编译termux代码并运行在手机上
本人通过修改gradle.properties文件中的:
org.gradle.jvmargs=-Xmx2048M
修改为:
org.gradle.jvmargs=-Xmx2048M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
终于能在Android studio成功编译并运行到手机上。
2. 在termux终端上安装ollama
输入以下命令:
curl -fsSL https://ollama.com/install.sh | sh
如果在安装过程中出现出错:
ollama no superuser binary detected
请把手机root掉并参考这里的方法: https://gitlab.com/st42/termux-sudo
如果在下载时出现:
curl error in the http2 framing layer
请尝试多几次下载。
3. 通过代码编译ollama
官方教程:https://github.com/ollama/ollama/blob/main/docs/development.md
其它教程:https://echo.xuchaoji.com/index.php/archives/454/
- 如果在编译时出现go代理问题:dial tpc 172.217.163.49:443 ,请参考:https://blog.csdn.net/LXDOS/article/details/104749494
- 本次编辑我用的命令是:
OLLAMA_CUSTOM_CPU_DEFS="-DLLAMA_AVX=on -DLLAMA_AVX2=on -DLLAMA_F16C=on -DLLAMA_FMA=on" go generate ./...
go build .
五、其它方案