”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Android 上运行 Llama:使用 Ollama 的分步指南

在 Android 上运行 Llama:使用 Ollama 的分步指南

发布于2024-11-09
浏览:224

Running Llama  on Android: A Step-by-Step Guide Using Ollama

Llama 3.2 最近在 Meta 开发者大会上推出,展示了令人印象深刻的多模式功能以及针对使用高通和联发科技硬件的移动设备进行优化的版本。这一突破使开发人员能够在移动设备上运行 Llama 3.2 等强大的 AI 模型,为更高效、私密和响应迅速的 AI 应用程序铺平道路。

Meta 发布了 Llama 3.2 的四个变体:

  • 多模式模型具有 110 亿 (11B) 和 900 亿 (90B) 参数。
  • 纯文本模型 具有 10 亿 (1B) 和 30 亿 (3B) 参数。

较大的模型,尤其是 11B 和 90B 变体,在图像理解和图表推理等任务中表现出色,通常优于 Claude 3 Haiku 等其他模型,甚至在某些情况下与 GPT-4o-mini 竞争。另一方面,轻量级 1B 和 3B 模型专为文本生成和多语言功能而设计,使其成为注重隐私和效率的设备上应用程序的理想选择。

在本指南中,我们将向您展示如何使用 Termux 和 Ollama 在 Android 设备上运行 Llama 3.2。 Termux 在 Android 上提供 Linux 环境,Ollama 帮助在本地管理和运行大型模型。

为什么在本地运行 Llama 3.2?

在本地运行人工智能模型有两大好处:

  1. 瞬时处理因为一切都在设备上处理。
  2. 增强隐私性,因为无需将数据发送到云端进行处理。

尽管目前支持移动设备流畅运行Llama 3.2这样的模型的产品还不多,但我们仍然可以在Android上使用Linux环境来探索它。


在 Android 上运行 Llama 3.2 的步骤

1.在Android上安装Termux

Termux 是一个终端模拟器,允许 Android 设备无需 root 访问即可运行 Linux 环境。它是免费的,可以从 Termux GitHub 页面下载。

对于本指南,请下载 termux-app_v0.119.0-beta.1 apt-android-7-github-debug_arm64-v8a.apk 并将其安装在您的 Android 设备上。

2. 设置 Termux

启动 Termux 后,按照以下步骤设置环境:

  1. 授予存储访问权限:
   termux-setup-storage

此命令可让 Termux 访问 Android 设备的存储空间,从而更轻松地管理文件。

  1. 更新包:
   pkg upgrade

当提示更新 Termux 和所有已安装的软件包时,输入 Y

  1. 安装基本工具:
   pkg install git cmake golang

这些软件包包括用于版本控制的 Git、用于构建软件的 CMake 以及编写 Ollama 的编程语言 Go。

3.安装并编译Ollama

Ollama 是一个在本地运行大型模型的平台。安装和设置方法如下:

  1. 克隆 Ollama 的 GitHub 存储库:
   git clone --depth 1 https://github.com/ollama/ollama.git
  1. 导航至 Ollama 目录:
   cd ollama
  1. 生成Go代码:
   go generate ./...
  1. 构建奥拉玛:
   go build .
  1. 启动 Ollama 服务器:
   ./ollama serve &

现在 Ollama 服务器将在后台运行,允许您与模型交互。

4. 运行 Llama 3.2 模型

要在 Android 设备上运行 Llama 3.2 模型,请按照以下步骤操作:

  1. 选择型号:

    • llama3.2:3b(30亿个参数)这样的模型可供测试。为了提高效率,这些模型被量化。您可以在 Ollama 的网站上找到可用型号的列表。
  2. 下载并运行 Llama 3.2 模型:

   ./ollama run llama3.2:3b --verbose

--verbose 标志是可选的,并提供详细的日志。下载完成后,您可以开始与模型交互。

5. 绩效管理

在 Samsung S21 Ultra 等设备上测试 Llama 3.2 时,1B 型号的性能很流畅,3B 型号的性能易于管理,尽管您可能会注意到旧硬件上的延迟。如果性能太慢,切换到较小的 1B 模型可以显着提高响应能力。


可选清理

使用Ollama后,您可能需要清理系统:

  1. 删除不需要的文件:
   chmod -R 700 ~/go
   rm -r ~/go
  1. 将 Ollama 二进制文件移至全局路径:
   cp ollama/ollama /data/data/com.termux/files/usr/bin/

现在,您可以直接从终端运行ollama


结论

Llama 3.2 代表了人工智能技术的重大飞跃,为移动设备带来了强大的多模式模型。通过使用 Termux 和 Ollama 在本地运行这些模型,开发人员可以探索不依赖云基础设施的隐私优先、设备上 AI 应用程序的潜力。有了 Llama 3.2 这样的模型,移动 AI 的未来看起来很光明,可以为各个行业提供更快、更安全的 AI 解决方案。

版本声明 本文转载于:https://dev.to/koolkamalkishor/running-llama-32-on-android-a-step-by-step-guide-using-ollama-54ig?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Java 中的设计模式及其示例
    Java 中的设计模式及其示例
    Java 中的设计模式是什么? 设计模式是软件设计中常见问题的可重用解决方案。它们代表了可应用于软件开发中各种情况的最佳实践,特别是像 Java 这样的面向对象编程。 设计模式的类型 创建模式: 处理对象创建机制。 结构模式: 关注类和对象的组成方式。 行为模...
    编程 发布于2024-11-09
  • NestJS 与 Encore.ts:为您的 TypeScript 微服务选择正确的框架
    NestJS 与 Encore.ts:为您的 TypeScript 微服务选择正确的框架
    Introduction When web applications grow larger, so does the complexity in developing and maintaining the system. A common way to solve this i...
    编程 发布于2024-11-09
  • 如何在 Python 中重置生成器对象?
    如何在 Python 中重置生成器对象?
    在 Python 中重置生成器对象:探索替代方案生成器提供了一种迭代值序列的有效方法,而无需在记忆。然而,一旦生成器产生了所有值,它就会耗尽并且不能直接重用。这就提出了如何在 Python 中重置生成器对象的问题。不幸的是,生成器没有内置的重置方法。要重用生成器,您有多种选择:再次运行生成器函数: ...
    编程 发布于2024-11-09
  • 如何高效地检索MySQL中最后插入的行?
    如何高效地检索MySQL中最后插入的行?
    检索 MySQL 中最后插入的行:高效方法高效检索 MySQL 中最后插入的行是数据库编程中的常见任务。以下是实现此目的的两种有效方法:1。时间戳列:理想的解决方案是创建一个 TIMESTAMP 列,在行插入时自动捕获当前时间戳。这提供了一种可靠且准确的方法来确定最近的记录。2。 ORDER BY ...
    编程 发布于2024-11-09
  • 如何最小化 Go 中禁用跟踪日志记录语句的成本?
    如何最小化 Go 中禁用跟踪日志记录语句的成本?
    Go 中禁用语句的低成本跟踪日志记录在 Go 中,跟踪日志记录提出了一个独特的挑战:最大限度地减少关键路径中禁用日志语句的成本。与 C/C 不同,Go 没有预处理器宏,因此有必要探索替代解决方案。一种方法涉及使用 fmt.Stringer 和 fmt.GoStringer 接口。通过延迟格式化直到日...
    编程 发布于2024-11-09
  • 如何在 JavaScript 中将多个数组合并为一个?
    如何在 JavaScript 中将多个数组合并为一个?
    将数组项连接成单个数组在 JavaScript 中,将多个数组的元素组合成一个新数组可能是一种常见的需求。实现此目的的一种方法是使用循环迭代每个源数组并将项目推入目标数组。然而,这种方法可能乏味且效率低下。利用“concat”函数幸运的是,JavaScript 提供了一个更简单、更优雅的解决方案:“...
    编程 发布于2024-11-09
  • 掌握 JavaScript 中的循环:综合指南
    掌握 JavaScript 中的循环:综合指南
    循环是编程的基础:使我们能够用最少的代码执行重复性任务。无论您是刚刚入门的初学者,还是希望精炼知识的经验丰富的开发人员,理解循环都将大大增强您编写高效、干净且有趣的代码的能力。 在本指南中,我们将深入探讨不同类型的循环、它们在流行编程语言中的语法,以及有关何时以及如何有效使用它们的一些提示。 什么是...
    编程 发布于2024-11-09
  • 如何在不使用外部程序的情况下在 PHP 中确定超过 2GB 文件的文件大小?
    如何在不使用外部程序的情况下在 PHP 中确定超过 2GB 文件的文件大小?
    在 PHP 中无需外部程序即可确定 2GB 文件的大小PHP 在处理超过 2GB 的文件大小方面的限制可能会令人沮丧。然而,有一些方法可以克服这个问题,而无需求助于外部程序。一种方法是通过“大文件工具”,这是一个开源项目,可以在 PHP 中操作超过 2GB 的文件,即使在 32 位系统上也是如此。 ...
    编程 发布于2024-11-09
  • 在 macOS 上的 Python 中使用 MySQLdb 时如何修复“未加载库:libmysqlclient.16.dylib”错误?
    在 macOS 上的 Python 中使用 MySQLdb 时如何修复“未加载库:libmysqlclient.16.dylib”错误?
    Python:MySQLdb 和“未加载库:libmysqlclient.16.dylib”设置尝试中为了在 macOS X 10.6 上建立 Python/Django 的开发环境,从提供的 DMG 安装了 MySQL,并使用 pip 安装了 MySQL-python。Issue尝试导入 MySQ...
    编程 发布于2024-11-09
  • 如何在 Go 1.6 及更高版本中使用 Cgo 将函数指针传递给 C 代码?
    如何在 Go 1.6 及更高版本中使用 Cgo 将函数指针传递给 C 代码?
    使用 Cgo 将函数指针传递给 C 代码Cgo 函数指针传递的变化在 Go 1.6 及更高版本中,Cgo 对于传递有更严格的规则指向 C 代码的指针。不再允许传递指向包含任何 Go 指针的 Go 内存的 Go 指针。代码示例以下 Go 代码演示了如何将函数指针传递给 C 代码:import ( ...
    编程 发布于2024-11-09
  • 如何保护我的网站源代码免遭未经授权的访问?
    如何保护我的网站源代码免遭未经授权的访问?
    保护源代码免遭未经授权的访问防止他人获取您的源代码可能是一项挑战。但是,您可以采取一些措施来阻止未经授权的复制。混淆技术保护代码的一种方法是通过混淆。这涉及将代码转换为可读性较差的格式。混淆工具,例如 http://code.google.com/p/minify/、http://refresh-s...
    编程 发布于2024-11-09
  • 如何在Python中确定整数的位数?
    如何在Python中确定整数的位数?
    在 Python 中确定整数中的位数长度在 Python 中,获取整数中的位数是一个简单的过程。该技术涉及使用 str() 函数将整数临时转换为字符串,然后使用 len() 函数确定字符串的长度。例如,如果要查找整数 123 中的位数,可以使用 str(123) 将其转换为字符串,结果为“123”。...
    编程 发布于2024-11-09
  • 超自然故事:来自世界各地的神话生物
    超自然故事:来自世界各地的神话生物
    https://pageexplorer.blogspot.com/2024/10/tales-of-supernatural-mythical.html 我希望您能查看我最新的博客文章!您的想法和反馈对我来说非常有价值,如果您能花点时间阅读并在评论中分享您的见解,我将不胜感激。无论是建设性的批评还...
    编程 发布于2024-11-09
  • Python 中的结构模式匹配
    Python 中的结构模式匹配
    结构模式匹配是Python中的一个强大功能,它允许您根据复杂数据的结构做出决策并从中提取所需的值。它提供了一种简洁、声明式的方式来表达条件逻辑,可以极大地提高代码的可读性和可维护性。在本文中,我们将探讨一些在 Python 中使用结构模式匹配的真实案例研究示例。 1。解析 API 响应 结构模式匹配...
    编程 发布于2024-11-09
  • 在 Laravel 11 中的支付处理编译时实现上下文绑定
    在 Laravel 11 中的支付处理编译时实现上下文绑定
    在我们之前的文章(如何在 Laravel 11 中添加和实现支付处理接口:硬编码绑定)中,我们通过硬编码 PaymentProcessorInterface 之间的绑定探索了设置支付处理器的第一步以及具体的实现,例如 StripePaymentProcessor。 虽然这种方法对于小型应用程序来说...
    编程 发布于2024-11-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3