跳到正文
原文
Hugging Face Blog·· 2023-12-05精选AI 评分65

Hugging Face 发布 Optimum-NVIDIA,一行代码将 LLM 推理提速至多 28 倍

Optimum-NVIDIA Unlocking blazingly fast LLM inference in just 1 line of code

AI 导读

Hugging Face 发布 Optimum-NVIDIA 推理库,在 NVIDIA 平台上只需把 transformers 的 pipeline 导入改为 optimum.nvidia 一行代码,即可获得最高 28 倍吞吐提升和 1200 token/秒的速度。

推荐理由

原文给出单行代码替换的接入方式和首 token 延迟、吞吐的对比数据,读者可据此判断自身部署的提速空间。

正文 · AI 翻译

大型语言模型(LLM)已经彻底改变了自然语言处理领域,并越来越多地被部署来大规模解决复杂问题。由于这些模型独特且密集的计算需求,实现最佳性能是出了名的挑战。LLM 的优化性能对于寻求流畅响应体验的最终用户以及对于规模部署来说都极具价值,因为提高吞吐量意味着节省成本。

这就是 Optimum-NVIDIA 推理库的用武之地。Optimum-NVIDIA 在 HF Mirror 上可用,通过极其简单的 API 显著加速了 NVIDIA 平台上的 LLM 推理。 只需更改一行代码,您就可以在 NVIDIA 平台上解锁高达28 倍的推理速度和每秒 1,200 个令牌。

Optimum-NVIDIA 是首个受益于 NVIDIA Ada Lovelace 和 Hopper 架构上支持的新 float8 格式的 HF Mirror 推理库。 FP8,加上 NVIDIA TensorRT-LLM 软件的高级编译能力,显著加速了 LLM 推理。

如何运行

您只需使用 Optimum-NVIDIA 的管道,通过 3 行代码即可开始以极快的推理速度运行 LLaMA。 如果您已经设置了 HF Mirror transformers 库的管道来运行 LLaMA,您只需修改一行代码即可解锁峰值性能!

- from transformers.pipelines import pipeline
+ from optimum.nvidia.pipelines import pipeline

# everything else is the same as in transformers!
pipe = pipeline('text-generation', 'meta-llama/Llama-2-7b-chat-hf', use_fp8=True)
pipe("Describe a real-world application of AI in sustainable energy.")

您还可以通过单个标志启用 FP8 量化,这允许您在单个 GPU 上以更快的速度运行更大的模型,而不会牺牲准确性。 此示例中显示的标志默认使用预定义的校准策略,不过您可以提供自己的校准数据集和自定义分词,以根据您的用例定制量化。

管道接口非常适合快速启动和运行,但希望精细控制设置采样参数的高级用户可以使用 Model API。

- from transformers import AutoModelForCausalLM
+ from optimum.nvidia import AutoModelForCausalLM
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-13b-chat-hf", padding_side="left")

model = AutoModelForCausalLM.from_pretrained(
  "meta-llama/Llama-2-13b-chat-hf",
+ use_fp8=True,  
)

model_inputs = tokenizer(
    ["How is autonomous vehicle technology transforming the future of transportation and urban planning?"], 
    return_tensors="pt"
).to("cuda")

generated_ids, generated_length = model.generate(
    **model_inputs, 
    top_k=40, 
    top_p=0.7, 
    repetition_penalty=10,
)

tokenizer.batch_decode(generated_ids[0], skip_special_tokens=True)

更多详情,请查看我们的文档

性能评估

在评估 LLM 的性能时,我们考虑两个指标:首令牌延迟和吞吐量。 首令牌延迟(也称为首令牌时间或预填充延迟)衡量从您输入提示到开始接收输出所需的时间,因此这个指标可以告诉您模型的响应感觉如何。 与标准 transformers 相比,Optimum-NVIDIA 提供高达 3.3 倍的首令牌延迟加速:

图 1. 生成首令牌所需时间(毫秒)

另一方面,吞吐量衡量模型生成令牌的速度,特别适用于您想要批量生成的情况。 虽然有几种计算吞吐量的方法,但我们采用了一种标准方法,即将端到端延迟除以总序列长度,包括所有批次中输入和输出令牌的总和。 与标准 transformers 相比,Optimum-NVIDIA 提供高达 28 倍的吞吐量提升:

图 2. 吞吐量(令牌/秒)

对最近宣布的 NVIDIA H200 Tensor Core GPU 的初步评估显示,与 NVIDIA H100 Tensor Core GPU 相比,LLaMA 模型的吞吐量最多可再提升 2 倍。 随着 H200 GPU 变得更易获得,我们将分享在其上运行 Optimum-NVIDIA 的性能数据。

后续步骤

Optimum-NVIDIA 目前为 LLaMAForCausalLM 架构 + 任务提供峰值性能,因此任何 基于 LLaMA 的模型,包括微调版本,如今都可以开箱即用地与 Optimum-NVIDIA 配合使用。 我们正在积极扩展支持,以纳入其他文本生成模型架构和任务,所有这些都在 HF Mirror 内完成。

我们将继续突破性能边界,并计划引入尖端优化技术,例如 In-Flight Batching 以提升流式提示时的吞吐量,以及 INT4 量化以在单块 GPU 上运行更大的模型。

试一试:我们正在发布 Optimum-NVIDIA 仓库,其中包含如何开始使用的说明。请与我们分享您的反馈!🤗

来源:Hugging Face Blog · hf-mirror.com