现在,我们可以使用任何 SSH 客户端连接到手机(包括我们的电脑):
ssh-u0_a461.168.100.101
在这里,8022 是默认的 Termux SSH 端口,“u0_a461”是我们从“whoami”命令中获取的用户名,“192.168.100.101”是本地 Wi-Fi 网络中手机的 IP 地址。连接完成后,我们就可以测试不同的 LLM。下面显示的所有命令都通过手机上的 SSH 执行。
第一个引入的项目是Llama.CPP[4],它非常适合在不同的硬件上测试 LLM。Llama.CPP几乎可以在任何地方工作——CPU、CUDA 或 Apple 芯片上。原始Llama.CPP是用 C++ 编写的,但我将使用 Python 库,它更容易使用。安装所需的软件包和库:
pkginstalltur-repolibopenblaslibandroid-execinfoninjabinutils pkginstallpython3python-numpybuild-essentialcmakeclanggit pip3installllama-cpp-pythonhuggingface-hub
对于第一次测试,使用LLaMA 7B模型,从huggingface上下载它:
huggingface-clidownloadTheBloke/Llama--B-Chat-GGUFllama--b-chat.Q4_K_M.gguf---dir.---dir--symlinksFalse
载入模型并调用它做出回复:
llama_cppLlama llm=Llama(model_path=, n_gpu_layers=, n_ctx=, echo=) question=() template= stream=llm(template,stream=,max_tokens=,temperature=) outputstream: (output[][][],end=)
这里,n_gpu_layers这个参数设置为 0,因为在安卓手机中,我们没有 GPU。在手机上运行代码之前,我在 Google Colab中预估了LLaMA 7B运行需要消耗的内存:资源消耗大约2.5G左右
从资源消耗的问题上,LLaMA 7B几乎可以在每部具有 4-6 GB RAM 的手机上运行。下一个大问题是速度,我很担心LLaMA 7B在手机上的运行效率,但在手机上运行之后,它的回复速度并不慢!这是一个未经剪辑的视频,显示了真实速度:
Llama.CPP对内存利用做了优化:它不会在 RAM 中加载完整LLM:我们甚至可以在智能手机上运行70B 模型(其文件大小约为 40 GB!相同答案的推理时间约为 15 分钟)(作为参考,GPT 3.5 模型有 175B 参数)。这是非常惊人的,因为我们一直认为这样的LLM推理需要大量的GPU集群。
现在,让我们测试另一个模型:Gemma 。
Gemma 是目前(2024.3.9之前)最新的大型语言模型之一;它由 Google 于 2024 年 2 月推出。这个模型很有意思:
据谷歌称,Gemma 型号为其尺寸提供了最先进的性能。例如,在 MMLU(大规模多任务语言理解)基准测试中,Gemma 7B 优于 LLaMA2 13B(64.3 vs 54.8 分),而 Gemma 2B 模型仅比 LLaMA 7B 稍差(42.3 vs 45.3 分)。
与 7B 型号相比,2B 型号的推理速度应该快得多,这对移动设备至关重要。
Gemini 的许可证允许作为商业用途,Gemma.CPP客户端是用 C++ 编写的。这允许移动开发人员在 Android Studio 或 XCode 中将其构建为库,并在智能手机应用程序中使用此模型。
与 LLaMA 一样,我将在安卓手机上使用 Termux 控制台。首先,我们需要下载并安装Gemma.CPP:
pkginstallwgetcmakegitclangpython3 wgethttps://github.com/google/gemma.cpp/archive/refs/tags/v0.1.0.tar.gz tar-xvzfv0.1.0.tar.gz gemma.cpp-0.1.0 build cmake.. make-j4gemma ../../
要访问模型,我们需要登录 Kaggle,转到模型页面(Gemma | Kaggle[5]),并接受许可协议,可以手动将模型文件复制到智能手机,但 Kagglehub Python 库提供了一种更方便的方法:
首先,安装软件包kagglehub :
pip3installpackagingkagglehub
接下来,下载模型,并在智能手机上运行它:
import,kagglehub .environ[]= .environ[]= model_path=kagglehub.model_download() (,model_path)
KAGGLE_USERNAME和KAGGLE_KEY参数可以Kagge 设置选项中生成,是免费的。下载完成后,我们将得到路径,类似于“/data/data/com.termux/.../gemmaCpp/2b-it-sfp/2”。
现在,制作一个运行推理的 shell 脚本:
model_pathdatacom.termuxhomekagglehubgooglegemmaCpp gemma.cpp.gemmamodel2bittokenizer2bitsfp.sbs
最后,运行脚本。输出如下所示:
它确实比LLaMA 7B快,结果也较为准确。7B 和 2B 型号LLM的 RAM 消耗分别为 9.9 GB 和 4.1 GB。
我们测试了Llama.CPP和Gemma.CPP开源项目,并能够在 Android 智能手机上运行 2B、7B 甚至 70B 参数的dayu模型。
在目前(2024年),即使是千元机也有大约 8 GB 的 RAM 和 256 GB 的存储空间,因此 2 GB的LLM几乎可以在每部现代的手机上运行,而不需要是顶配手机。
从开发的角度来看,Llama.CPP 和 Gemma.CPP 项目都是用 C++ 编写的,没有外部依赖关系,并且可以使用 Android 或 iOS 应用程序进行本机编译,这对于demo演示、项目的快速上线都是非常友好的。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |