【论文浅尝】Porting Large Language Models to Mobile Devices for Question Answering

ops/2025/2/12 8:04:07/

Introduction

移动设备上的大型语言模型(LLM)增强了自然语言处理,并支持更直观的交互。这些模型支持高级虚拟助理、语言翻译、文本摘要或文本中关键术语的提取(命名实体提取)等应用。

LLMs的一个重要用例也是问答,它可以为大量的用户查询提供准确的和上下文相关的答案。由于典型智能手机的处理能力有限,当前移动设备上的LLM查询在云中处理,LLM输出被发送回设备。这是ChatGPT应用程序和大多数其他LLM支持的聊天应用程序的标准工作流程。

但是有些情况是不可取的,例如,对于在连接有限或互联网流量受到严格监控和监视的地区工作的记者而言(例如在专制政权中)。在这种情况下,处理必须在设备上完成。

因此,在这项工作中,我们演示了如何将LLM高效地移植到移动设备上,以便它们可以在移动设备上以交互速度本地运行。

 LLM framework for on-device inference

        最初,我们试图通过tensorflow Lite(TF Lite)框架在移动设备上本地进行LLM推理,因为它是最流行的on device推理框架。但是对于LLM来说,Hugging Face模型上可用的几乎所有微调模型都只提供PyTorch权重,因此必须转换为TFLite。结果发现比较困难。

        因此,我们选择了llama.cpp framework ,这是一个非常灵活且自包含的C++框架,用于在各种设备上进行LLM推断。它可以在CPU或GPU/CUDA上运行最先进的模型,如Llama/Llama 2、Vicuna或Mistral,并提供大量选项(例如设置温度、上下文大小或采样方法)。它支持各种低于8位的量化方法(每个参数从2位到6位),这对于在内存有限的智能手机上运行具有数十亿参数的模型至关重要。

        为了构建llama.cpp框架的C++库和可执行文件,需要一个标准的Linux构建工具链,包括终端(shell)、命令行工具、CMake/Make、C/C++编译器和链接器等等。对于Android,幸运的是,通过Termux app 可以获得这样的构建工具链。它可以通过Android开源软件包管理器F-Droid 安装,不需要root访问设备。

安装Termux后,我们在那里打开一个控制台,并通过Termux软件包管理器pkg安装必要的工具(如wget、git、cmake、clang编译器)。我们还在PC上安装了Android屏幕镜像软件scrcpy,这样我们就可以直接在PC上控制设备并镜像其屏幕。

为了构建llama.cpp二进制文件,我们现在从各自的github repo中克隆其最新源代码。我们调用CMake生成Makefile并通过Make命令构建所有二进制文件。我们通过在CPU上进行模型推理来编译二进制文件。

Model selection and prompt format 

在Hugging Face model hub上,有许多预训练的大型语言模型可用,这些模型在网络架构、模型大小、训练/微调过程以及数据集和任务方面各不相同。

经过一些实验,我们选择了具有30亿个参数的Orca-Mini-3B模型。它在最近的智能手机上以交互速度运行,并通过Orca方法的模仿学习进行微调,从而对用户查询提供体面的响应。我们采用一个量化模型,每个参数约为5.6位,在器件上大约占用2.2 GB的CPU RAM

提示格式如下例所示:

Experiments and evaluation  

我们对所选模型进行了主观评估,测试了该模型对与政治、地理、历史等不同主题相关的用户查询的响应。从测试中我们可以推断出该模型为大多数用户查询提供了准确而忠实的答案。当然,像每个LLM一样,它有时会产生幻觉(提供错误信息)。下图1显示了用于直接聊天的LLM应用程序的输出示例。LLM为来自不同领域的问题提供正确答案。

该模型的输出生成速度足以在三星Galaxy S21智能手机上进行互动聊天。

 


http://www.ppmy.cn/ops/20281.html

相关文章

【Unity常用插件】Dotween插件API详解【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:UI_…

mongodb替代品SequoiaDB的安装使用

前言 1、为什么不直接使用mongodb啊? 答:mongodb的使用协议是SSPL,一旦使用需要将你服务器程序都开源处理–或者给钱。非常不好,而SequoiaDB号称能够兼容mongodb协议,这次来安装试试。 mongodb - SSPL,Seq…

注意力机制:SENet详解

SENet(Squeeze-and-Excitation Networks)是2017年提出的一种经典的通道注意力机制,这种注意力可以让网络更加专注于一些重要的featuremap,它通过对特征通道间的相关性进行建模,把重要的特征图进行强化来提升模型的性能…

支持向量机(SVM)详细介绍

一、SVM基本概念 支持向量机(Support Vector Machine,简称SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。SVM的核心思想是寻找一个超平面,将不同类别的样本点分开,并且使得…

Unity类银河恶魔城学习记录14-5 p152 Lost currency save and enemy‘s currency drop

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili LostCurrencyController.cs using System.Collections; using System.Colle…

OSPF路由计算

1.区域内路由计算 (1)LSA的基本概念 LS Age:当LSA被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA不再用于路…

Eclipse 如何设置 Maven 下载源代码和文档

在 Eclipse 的 Windows 菜单下选择属性。 然后在 Maven 选项下,选择下载包的源代码和文档。 保存应用即可。 Eclipse 如何设置 Maven 下载源代码和文档 - Java - iSharkFly在 Eclipse 的 Windows 菜单下选择属性。 然后在 Maven 选项下,选择下载包的源代…

眼图仪参数理解和一些测量指标

参考资料: https://www.eet-china.com/mp/a35960.html 一:关于眼图仪: :::warning ●如果追溯历史,大约47年前,眼图就已经开始广泛应用。在1962年-2002的40年间,眼图的测量方法是基于采样示波器的传统方法…