几天前,Meta 公司发布了 LLaMA 3 生成式人工智能模型,它已经显示出令人印象深刻的能力。
通过本分步指南了解如何将 LLaMA 3 安装和部署到生产中。从硬件要求到部署和扩展,我们涵盖了顺利实施所需的一切知识。
Meta 推出了 Llama 3 开源人工智能模型的初始版本,该模型可用于文本创建、编程或聊天机器人。此外,Meta 还宣布计划将 LLaMA 3 集成到其主要的社交媒体应用中。此举旨在与其他人工智能助手竞争,如 OpenAI 的 ChatGPT、微软的 Copilot 和谷歌的 Gemini。
与 Llama 2 类似,Llama 3 也是由一家领先的人工智能公司提供的可免费访问的大型语言模型,并开放了权重(尽管它并不符合传统意义上的 "开源")。
目前,可从 Meta 网站免费下载两种不同参数大小的 Llama 3:80 亿 (8B) 和 700 亿 (70B)。用户可以通过注册访问这些版本。Llama 3 有两个变体:预训练(用于下一个标记预测的基本模型)和指令调整(根据用户指令进行微调)。两个版本的上下文限制均为 8,192 个标记。
Meta 公司首席执行官马克-扎克伯格(Mark Zuckerberg)在接受 Dwarkesh Patel 采访时提到,他们使用 2.4 万个 GPU 集群训练了两个定制的模型。70B 模型使用了大约 15 万亿个代币数据进行训练,它从未达到饱和点或能力极限。之后,Meta 决定专注于训练其他模型。该公司还透露,他们目前正在开发一个 400B 参数版本的 Llama 3,Nvidia 的 Jim Fan 等专家认为,该版本在 MMLU、GPQA、HumanEval 和 MATH 等基准测试中的表现可能与 GPT-4 Turbo、Claude 3 Opus 和 Gemini Ultra 相似。
据 Meta 称,Llama 3 已通过各种基准进行了评估,包括 MMLU(本科生水平的知识)、GSM-8K(小学数学)、HumanEval(编码)、GPQA(研究生水平的问题)和 MATH(数学单词问题)。这些基准测试表明,8B 模型优于开放权重模型,如谷歌的 Gemma 7B 和 Mistral 7B Instruct,而 70B 模型则可与 Gemini Pro 1.5 和 Claude 3 Sonnet 竞争。
Meta 报告称,Llama 3 模型已得到改进,具备了与 Llama 2 相似的理解编码的能力,并首次使用图像和文本对其进行了训练。不过,它目前的输出仅限于文本。
LLaMA 3 基准
由于许多组织使用 AWS 来处理生产工作负载,让我们来看看如何在 AWS EC2 上部署 LLaMA 3。
在实施 LLM 时会遇到多种障碍,例如 VRAM(GPU 内存)消耗、推理速度、吞吐量和磁盘空间利用率。在这种情况下,我们必须确保在 AWS EC2 上分配一个具有足够 VRAM 容量的 GPU 实例,以支持模型的执行。
在 FP16 中,LLaMA 3 8B 需要约 16GB 的磁盘空间和 20GB 的 VRAM(GPU 内存)。当然,您也可以在 CPU 上部署 LLaMA 3,但延迟太高,不适合实际生产使用。至于 LLaMA 3 70B,在 FP16 中需要约 140GB 的磁盘空间和 160GB 的 VRAM。
为 LLaMA 3 8B 获取 20GB VRAM 相当容易。我建议您配置英伟达™(NVIDIA®)A10 GPU:该 GPU 配备 24GB VRAM,是基于 Ampere 平台的快速 GPU。在 AWS EC2 上,您应该选择一个 G5 实例来配置 A10 GPU。g5.xlarge 实例就足够了。
不过,部署 LLaMA 3 70B 模型更具挑战性。没有一个 GPU 有足够的 VRAM 来支持该模型,因此您需要配置一个多 GPU 实例。如果在 AWS 上配置一个 g5.48xlarge 实例,您将获得 192GB 的 VRAM(8 x A10 GPU),这对 LLaMA 3 70B 来说足够了。
在这种配置下,您可以预期以下延迟(响应时间):LLaMA 3 8B 在 1 秒内生成 50 个令牌,LLaMA 3 70B 在 5 秒内生成 50 个令牌。
为了降低这些模型的运行成本并增加延迟,您可以研究量化技术,但要注意这种优化可能会损害模型的准确性。量化技术不在本文讨论范围之内。
要配置此类实例,请登录 AWS EC2 控制台并启动一个新实例:在 g5.xlarge 或 g5.48xlarge 实例上选择英伟达深度学习 AMI。不要忘记配置足够的磁盘空间。
vLLM 是一个专为快速、简便地推断和部署 LLM 而设计的库。它的高效归功于各种先进的方法,包括用于优化管理注意力键和值内存的分页注意力、实时处理成批传入的查询以及个性化的 CUDA 内核。
此外,vLLM 通过采用分布式计算(使用张量并行)、实时流以及与 NVIDIA 和 AMD 显卡的兼容性,提供了高度的适应性。
具体来说,vLLM 将极大地帮助我们部署 LLaMA 3,使我们能够利用配备多个紧凑型英伟达™(NVIDIA®)A10 GPU 的 AWS EC2 实例。这比使用单个大型 GPU(如英伟达 A100 或 H100)更具优势。此外,vLLM 还能通过连续批量推理大大提高我们模型的效率。
设置 vLLM 非常简单。让我们建立 SSH 连接到最近创建的 AWS 实例,然后使用 pip 安装 vLLM:
pip install vllm
由于我们计划在 8 x A10 GPU 上使用 vLLM 执行分布式推理,因此还需要安装 Ray:
pip install ray
如果在安装时遇到兼容性问题,从源代码编译 vLLM 或使用其 Docker 镜像可能会更简单: 请查看 vLLM 安装说明。
现在,让我们创建 Python 推理脚本:
from vllm import LLM
# Use LLaMA 3 8B on 1 GPU
llm = LLM("meta-llama/Meta-Llama-3-8B-Instruct")
# Use LLaMA 3 70B on 8 GPUs
# llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct", tensor_parallel_size=8)
print(llm.generate("What are the most popular quantization techniques for LLMs?"))
您可以运行上述脚本。如果这是您第一次运行此脚本,您需要等待模型下载并加载到 GPU 上,然后您会收到类似下面的信息:
The most popular quantization techniques for Large Language Models (LLMs) are:
1. Integer Quantization
2. Floating-Point Quantization
3. Mixed-Precision Training
4. Knowledge Distillation
这很容易理解。你只需根据拥有的 GPU 数量调整 tensor_parallel_size 即可。
我们现在要启动一个合适的推理服务器,它能够管理大量请求并同时执行推理。首先,启动服务器:
用于 LLaMA 3 8B:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct
用于 LLaMA 3 70B:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8
模型加载到 GPU 上最多需要 1 分钟。然后你就可以启动第二个终端,开始提出一些请求:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"prompt": "What are the most popular quantization techniques for LLMs?"
}'
现在,您已经拥有了一个可以随时投入生产的推理服务器,由于采用了连续批处理技术,它可以处理大量并行请求。在某些时候,如果请求数量过多,GPU 就会超载。在这种情况下,您需要在多个 GPU 实例上复制模型,并对请求进行负载平衡(但这不在本文讨论范围内)。
正如您所看到的,将 LLaMA 3 部署到生产中不需要任何复杂的代码,这要归功于 vLLM 等推理服务器。
不过,配置合适的硬件是一项挑战。首先是因为这些 GPU 的成本很高,而且目前全球 GPU 短缺。如果这是您第一次尝试在 AWS 上配置 GPU 服务器,您可能没有权限创建 GPU 服务器。在这种情况下,您需要联系支持人员并解释您的使用情况。在本文中,我们使用的是 AWS EC2,当然也可以使用其他供应商(Azure、GCP、OVH、Scaleway......)。
如果您对自行部署 LLaMA 3 不感兴趣,我们建议您使用我们的 NLP 云 API。与管理自己的 LLaMA 3 基础架构相比,这种方法更有效,而且可能更具成本效益。 现在就在 NLP Cloud 上试用 LLaMA 3!
如果您对 LLaMA 3 和人工智能部署有任何疑问,请随时向我们咨询,我们非常乐意为您提供帮助!
Julien
NLP Cloud 首席技术官