最近几个月,大型语言模型一直是广泛研究和开发的主题,GPT-4、Meta LLaMa 和 Alpaca 等最先进的模型突破了自然语言处理和运行它们所需的硬件的界限. 在这些模型上运行推理在计算上可能具有挑战性,需要强大的硬件来提供实时结果。
最近几个月,大型语言模型一直是广泛研究和开发的主题,GPT-4、Meta LLaMa 和 Alpaca 等最先进的模型突破了自然语言处理和运行它们所需的硬件的界限. 在这些模型上运行推理在计算上可能具有挑战性,需要强大的硬件来提供实时结果。
在 Storage Review 实验室中,我们将两个 NVIDIA RTX 8000 GPU 用于运行 Meta 的 LLaMa 模型,以了解它们在大型语言模型上运行推理时的表现。 我们使用了 联想P920 作为卡的主机,最大限度地减少瓶颈。 RTX 8000 是一款能够用于 AI 和深度学习应用的高端显卡,由于每张卡上有 48GB 的 GDDR6 显存和 4608 个 CUDA 内核,我们特地选择了这些显卡,而且 凯文囤积了所有的A6000的。
Meta LLaMA 是一种在各种互联网文本集上训练的大规模语言模型。 它是公开可用的,并在各种自然语言处理任务中提供最先进的结果。 在本文中,我们将提供有关如何在 NVIDIA GPU 上设置和运行 LLaMA 推理的分步指南,但不能保证对所有人都适用。
Meta LLaMa 要求
在开始之前,我们需要确保安装了以下要求:
- NVIDIA GPU 至少具有 16GB 显存
- 安装了 NVIDIA 驱动程序(至少版本 440.33)
- 安装了 CUDA 工具包(至少版本 10.1)
- 蟒蛇安装
- 安装 PyTorch(至少版本 1.7.1)
- 磁盘空间; 整套 LLaMa 检查点正在推动超过 200TB。
注意:建议为 LLaMA 提供专用的 Anaconda 环境,我们在测试台上有一些,这样我们就可以搞乱包和参数,而不是管理基础安装。
在 Anaconda 中设置一两个专用环境
在 NVIDIA GPU 上运行 Meta LLaMA 推理的步骤
- 下载 LLaMA 存储库: 第一步是从 GitHub 克隆 LLaMA 存储库。
git clone https://github.com/EleutherAI/LLaMA.git
- 获取 LLaMA 检查点和分词器: 访问 GitHub 页面,并填写链接的 Google 表单以访问下载。 其他 LLM 也可用,例如 Alpaca。 为此,我们假设可以访问 LLaMa 文件。
- 通过从克隆的存储库目录中运行以下命令,列出并安装 LLaMa 所需的程序:
pip install -r requirements.txt
pip install -e .
- 设置推理脚本: -
example.py
LLaMA 存储库中提供的脚本可用于运行 LLaMA 推理。 该脚本可以在单 GPU 节点或多 GPU 节点上运行torchrun
并将输出两个预定义提示的完成。
可选 example.py
并根据您的喜好设置以下参数。 下面列出了每个参数的说明以及它们的作用。
--max_seq_len
: 最大序列长度(默认为 2048)--max_batch_size
:最大批量大小(默认为 8)--gen_length
:世代长度(默认为512)--temperature
:生成温度(默认为1.0)--top_p
:top-p采样(默认为0.9)
例如,在目录中使用检查点和分词器文件在单个 GPU 上运行 LLaMA 推理 /path/to/files
,请使用以下命令:
torchrun --nproc_per_node 1 example.py --ckpt_dir /path/to/files --tokenizer_path /path/to/files/tokenizer.model
注意: nproc_per_node
参数取决于模型的大小和默认 LLaMa 检查点所需的 GPU 数量。 请参考下表为您的系统和您正在运行的模型设置适当的值:
型号 | 需要 GPU |
---|---|
7B | 1 |
13B | 2 |
33B | 4 |
65B | 8 |
在下面的示例中,我们使用了示例文件中的标准提示,但使用了 temperature
和 top_p
变量,产生一些有趣的结果。 我们还增加了响应长度。
小心玩弄恒温器!
分解您需要了解的 example.py 文件和变量
其中大部分已在模型中预设,无需调整; 但是,如果您开始使用 LLM 和推理,这里有一些有用的信息可以分解标志和开关的作用。
local_rank
:当前 GPU(进程)在用于模型并行性的 GPU 组中的排名。 这是自动设置的。world_size
:用于模型并行性的 GPU 总数。 这是自动设置的。ckpt_dir
:包含模型检查点的目录。 这是在运行时设置的。tokenizer_path
:用于预处理文本的分词器的路径。 这是在运行时设置的。temperature
:控制生成文本随机性的参数(较高的值使输出更随机,较低的值使其更集中)。top_p
: 控制nucleus采样策略的参数,是一种只选择最可能的token生成文本的方法,累积概率最多为top_p
.max_seq_len
:模型输入和输出的最大序列长度。 您可以调整它以减少您对 VRAM 的需求。max_batch_size
:模型可以并行处理的最大输入序列数。 您可以调整它以减少您对 VRAM 的需求。prompts
:模型生成文本所依据的输入提示列表。results
:与每个输入提示相对应的生成文本列表。
总结
我们的测试表明,RTX 8000 GPU 可以提供令人印象深刻的性能,推理时间从几秒到大约一分钟不等,具体取决于模型参数和输入大小。 GPU 可以处理大批量大小并同时在多个模型上运行推理,而不会出现任何明显的减速。
使用 GPU 进行推理的好处之一是可以通过向系统添加更多 GPU 轻松扩展它们。 这允许实时运行更大的模型,从而在聊天机器人、问答系统和情绪分析等领域启用新应用程序。
Alpaca 是一种紧凑的 AI 语言模型,由斯坦福大学的一组计算机科学家创建。 它建立在 Meta 的 LLaMA 7B 模型之上,该模型拥有 7 亿个参数,并使用来自网络的大量文本进行训练。 为了微调羊驼,使用 OpenAI 的 text-davinci-52,000 模型生成了 003 个指令跟踪演示,该模型是一种能够根据自然语言指令执行各种任务的多功能模型。 羊驼更擅长遵循指示并为各种目的编写文本,包括撰写摘要、故事和笑话。 Alpaca 的培训成本低于 600 美元,其设计既具有成本效益又易于复制。 令人印象深刻的是,值得一提的是,Alpaca 甚至可以在笔记本电脑上运行。 我们正在使用斯坦福大学所做的方法训练一个类似于羊驼的模型,但有我们自己的改进。
这只是我们在实验室中使用最新技术进步的一种方式,并且由于一些强大的 NVIDIA GPU,我们可以做的不仅仅是推理; 我们正在训练。 请留意下一篇关于微调模型(如 Meta LLaMa)的文章。
参与 StorageReview
电子报 | YouTube | 播客 iTunes/Spotify | Instagram | Twitter | TikTok | RSS订阅