云端实验室!如何用云虚拟机试验开源LLM,节省上万刀?
- Rifx.Online
- Technology , Cloud , Machine Learning
- 11 Jan, 2025
考虑购买 Mac Mini 或 Mac Pro 来使用开源 LLM 吗?云虚拟机让您可以测试、决策并节省开支。
您是否考虑投资 Mac Mini 或 Mac Pro 来实验开源大型语言模型 (LLM)?在做出重大投资之前,有一种更聪明的方式来测试您的需求:云虚拟机。
从 API 到本地 LLM 的旅程
像许多开发者一样,我的 AI 旅程始于 ChatGPT 和 OpenAI API。这个 API 非常适合整合特定数据,启用了许多迷人的用例。但随着我信心的增长,我想进行更多实验时,开始感到 API 成本的限制。每一次实验都伴随着潜在费用的焦虑。
这与我爱上软件开发的核心原因之一相悖——自由尝试的能力。与物理手工艺品不同,错误可能会造成高昂的成本,软件开发应该更像是在玩 LEGO:一次性投资,然后尽情地构建和重建。
为什么考虑本地 LLM?
有充分的理由探索本地运行 LLM:
- 成本控制:固定的硬件成本,而不是按查询收费的 API 费用
- 隐私:将敏感数据掌握在自己手中
- 实验自由:在没有使用限制的情况下进行测试和迭代
- 专门的使用案例:有时较小的模型就足够了
进入云虚拟机:完美的测试场
在投资昂贵的硬件之前,云虚拟机提供了一种优雅的解决方案:
- 在几分钟内创建和销毁不同的硬件配置
- 仅为使用的时间付费
- 清晰的前期成本与不可预测的 API 收费相比
- 测试多个模型以找到最佳方案
有很多理由和选项可以开始使用本地 LLM。我们将首先进行概述,然后详细介绍一个选项——在云中的虚拟机上运行它们,特别是在 GCP 上,并关注预期成本。
在一些有趣的用例中,我们不需要复杂的推理能力,也不需要访问大模型提供的无限知识库,而是希望利用小模型所能提供的语言处理能力,且成本较低且固定。此外,在其他一些用例中,我们可能会使用不想在不明确的数据使用和存储政策下共享的私有数据。
这些都是对小型 LLM 感兴趣并在本地使用和管理的良好理由。要开始实验,在许多情况下,如果您的硬件不是太旧,您可能可以利用现有的硬件。但是,如果您想了解这些小模型在合理价格下的能力,尝试不同的模型和硬件,直到找到最佳方案,该怎么办呢?
有一个简单的选项可以满足这一需求,那就是激活一个主要云服务提供商的虚拟机,您可以在几分钟内创建和销毁各种配置和定价的机器。此外,通过云虚拟机,您只需为使用的分钟付费,并且在成本上有一定的前期清晰度,相较于基于使用量可能会飙升的 API 调用费用。
实践测试指南
让我们一起走过在云虚拟机上设置和测试LLMs的过程。我将以Google Cloud Platform的计算引擎为例,但其他提供商的过程类似。
为了快速评估特定虚拟机的能力,我将利用一个开源项目( https://llm.aidatatools.com/ )来测量小型LLM在运行3个可配置示例查询后每秒的平均令牌数性能。
以下是简单步骤的详细说明。
1. 初始虚拟机设置。
创建一个Linux虚拟机(我从16GB内存,e2实例类型开始)
2. 基础环境设置
开始一个简单的设置,更新和升级软件包,安装python和venv,并激活虚拟环境
sudo apt update
sudo apt upgrade
sudo apt install python3-venv
python3 --version # 确保已安装Python 3
python3 -m venv --help # 检查venv是否可用
sudo apt install python3.11-venv
python3 -m venv myenv
source myenv/bin/activate
3. 安装所需软件
安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
安装基准软件
pip install llm-benchmark
4. 运行基准测试
llm_benchmark
工具自动:
- 检测可用硬件
- 根据内存识别兼容模型
- 下载并测试具有标准化提示的模型
- 以 tokens/秒 计量性能 可以简单地运行:
llm_benchmark run
以下是部分示例输出:
-------Linux----------未检测到 GPU。
总内存大小 : 15.63 GB
cpu_info: AMD EPYC 7B12
gpu_info: no_gpu
os_version: Debian GNU/Linux 12 (bookworm)
ollama_version: 0.4.7
------
正在检查并拉取以下 LLM 模型
phi3:3.8b
qwen2:7b
gemma2:9b
mistral:7b
llama3.1:8b
llava:7b
llava:13b
----------
----------
model_name = mistral:7b
prompt = 写一份关于如何从零开始烤巧克力蛋糕的分步指南。
eval rate: 3.63 tokens/s
prompt = 开发一个解决以下问题的 python 函数,数独游戏
eval rate: 3.79 tokens/s
prompt = 创建两个角色之间的对话,讨论经济危机
eval rate: 3.87 tokens/s
prompt = 在森林里,生活着勇敢的狮子。请继续这个故事。
eval rate: 3.90 tokens/s
prompt = 我想为4人预订前往美国西雅图的航班。
eval rate: 3.61 tokens/s
--------------------
平均评估速率: 3.76 tokens/s
----------------------------------------
....
5. 定性测试
运行基准测试可以快速提供以每秒令牌数为单位的性能测量,但为了实际体验5个令牌/秒与10个令牌/秒或20个令牌/秒的区别,我建议您直接尝试运行OIlama命令。例如,我们选择模型phi3\。
ollama run phi3
并提出一个简单的问题
Can you help me write a python program that prints all the odd numbers until 5o and all even numbers from 5o up to 100 ?
这个或其他更聪明的问题也可以帮助您理解您选择的模型是否适合您想要完成的任务。
5. 测试不同配置
基本 CPU 配置 (16GB RAM, e2 实例)
结果显示性能适中:
- 各模型 3–6 个令牌/秒
- 可用,但交互使用时明显较慢
- 适合初步测试和模型兼容性
改进的 CPU (n2 实例)
- 相较于 e2 没有显著提升
- 证明仅 CPU 类型并不是瓶颈
添加 GPU 加速 (Tesla T4)
重要提示:您可能需要申请增加 GPU 配额并选择启用 GPU 的区域。
结果显示显著改善:
连接到消费硬件
这种测试方法最有价值的方面之一是能够与消费硬件选项进行结果比较。我们测试中使用的 llm-benchmark 工具与社区在 llm.aidatatools.com 上使用的工具相同,从而实现直接比较。
一旦你对特定的每秒令牌速率的性能有了感觉,就可以查看结果页面,比较你可以购买并在家中使用的消费硬件的结果:https://llm.aidatatools.com/results-macos.phphttps://llm.aidatatools.com/results-windows.phphttps://llm.aidatatools.com/results-linux.php
总结
这里是我在 aidatatools.com 网站上进行的小实验结果的总结,以及其他用户发布的关于 Mac 消费级硬件的结果。我专注于 Mac,因为可用的选项有限且更容易比较,但显然你也可以考虑带有附加 GPU 的 Windows 或 Linux 电脑。
总的来说,似乎相对便宜的硬件可以运行开放模型,尽管速度较慢,Apple M 架构可以带来很好的改进,但要获得显著的提升,你需要转向 GPU(即使是基本的 T4)或 M 处理器的 Pro/Max 版本。
关于RAM重要性的说明
RAM在运行开源LLM模型的成本和能力中扮演着关键角色。对于较小的模型(3B–7B参数),16GB的RAM已足够,但较大的模型可能需要32GB或更多。在基于云的虚拟机(VM)上,根据需求调整RAM大小相对容易。然而,在消费硬件上,特别是使用Apple M系列架构的集成RAM设备,升级RAM可能会很困难甚至不可能。
尽管RAM的数量并不会直接影响每秒的令牌处理性能,但它决定了某些较大模型是否能够有效加载和使用。这反过来又会影响模型生成的响应质量。量化等技术可以减少较大模型的内存需求,使其能够在内存较少的系统上运行。然而,这些技术通常会以某种精度的损失为代价。为了评估这种权衡是否可接受,功能测试至关重要。云环境特别适合实验不同的配置并确定最佳平衡。
另一方面,RAM速度可以影响性能,但此指标并不总是在报告中 readily available,例如在aidatools.com上找到的报告。
评估云计算的运行成本(2024年12月定价)
让我们分析不同虚拟机配置和使用场景的成本。所有价格均为欧元 (€):
基本 CPU-仅配置 (16GB RAM)
- e2 标准实例: 爱荷华州区域:€0.22/小时,米兰区域:€0.26/小时
- 计算优化 c2: 爱荷华州区域:€0.29/小时
GPU-加速配置 (16GB RAM + T4 GPU)
- n1 标准实例: 爱荷华州区域: €0.60/小时, 法兰克福区域: €0.74/小时
对于不同的使用模式,成本分解如下:
关键见解:
- 区域价格差异: 欧洲区域(米兰,法兰克福)比美国区域(爱荷华州)贵约20–25%
- GPU影响: 添加T4 GPU大约使每小时成本增加三倍
- 成本-性能权衡: 虽然GPU实例更贵,但它们提供10倍更好的性能(如我们基准测试所示)
其他考虑事项:
- 存储成本(100GB):根据类型€4–10/月
- 大数据集可能会产生数据传输费用
- 可抢占实例可提供高达60%的折扣,但可能会被中断
- 如果您进行定期实验,考虑在会话之间保留存储 为了实现最佳成本管理:
- 根据目标模型适当调整您的RAM
- 在延迟不关键时选择美国区域
- 对于初始测试和设置,使用仅CPU实例
- 仅在运行性能关键的工作负载时切换到GPU实例
- 对于非时间关键的实验,考虑使用可抢占实例
便宜使用LLMs的替代测试选项
Google Colab
Google Colab 可以免费使用,但在这种情况下,您无法运行任意程序,即无法利用 Ollama。不过,您可以使用 Huggingface Transformers 库,甚至可以免费访问 T4 GPU,并在工作簿的上下文中使用它。
Huggingface 端点
您可以使用已在 Huggingface 网站上安装的小型 LLM 的预配置端点:https://ui.endpoints.huggingface.co/
如果我们寻找使用 Nvidia T4 的端点进行比较,我们可以找到一个以 0.5$/小时的竞争价格提供的 llama 3.2
尽管大多数端点至少使用一个 L4 GPU,价格略高
这些预配置的 LLM 端点可能更容易设置,但可能提供较少的灵活性。
CloudRun 与 GPU(预览版)
CloudRun 是 Google Cloud Platform (GCP) 提供的一种无服务器服务,旨在运行容器化应用程序。它具有几个优势,特别适合概念验证项目或试点实施。其突出的特点之一是自动扩展:CloudRun 根据使用情况动态调整资源,在高需求期间扩展,并在闲置时缩减至零。这种缩减到零意味着您只需为服务实际使用的秒数付费,使其成为实验和间歇性工作负载的成本高效选择。
目前,将 GPU 添加到 CloudRun 的功能处于公开预览阶段,并在有限数量的区域内可用。
- https://cloud.google.com/blog/products/application-development/run-your-ai-inference-applications-on-cloud-run-with-nvidia-gpus
- https://www.youtube.com/watch?v=IY-z00bfnOc
做出决策
根据我的测试,这里有一个实用的决策框架:
- 从云虚拟机开始,测试不同的模型和配置
- 监控您的使用模式和成本
- 将性能需求与消费硬件选项进行比较
- 考虑混合方法(云用于测试,本地用于生产,或根据您的用例反之亦然)
请记住,具体的性能数字不如理解您的工作流程需求重要。将云虚拟机作为测试平台,以确定:
- 您实际使用的模型
- 您用例所需的响应速度
- 您首选模型的内存要求
- GPU 加速是否值得成本
## Sample code block
def example_function():
print("This is a code block that remains unchanged.")
期待未来
本地 LLM 领域正在迅速发展。从云虚拟机开始可以让您在进行重大硬件投资之前进行实验并了解您的需求。无论您最终选择云虚拟机、本地硬件还是混合方法,实践测试对于做出明智的决策都是无价的。
想深入了解吗?请查看这些资源:
Google Cloud Platform 价格计算器
想要估算不同配置的虚拟机成本和最新价格:https://cloud.google.com/products/calculator/
Chrome 远程桌面设置指南
所示示例侧重于通过 ssh 进行简单的基于文本的交互,但虚拟机也可以设置为具有图形用户界面。在这种情况下,设置会稍微复杂一些,但更重要的是,您可能需要注意延迟,并选择一个离您较近的区域或限制用户界面功能。一个有趣的资源是以下内容,它指导您如何设置远程虚拟机并通过 Chrome 远程桌面与其进行图形交互 https://cloud.google.com/architecture/chrome-desktop-remote-on-compute-engine