Optimum-NVIDIA 推理库
大型语言模型(LLMs)已经彻底改变了自然语言处理,并且其应用范围日益广泛。然而,由于这些模型对计算资源的强烈需求,实现其最佳性能对于所有 GPU 用户而言都是一项挑战。对于最终用户而言,优化 LLMs 的推理性能至关重要,因为这能提供快速且响应迅速的用户体验;对于大规模部署来说,提升的吞吐量则意味着显著的成本节约。
Optimum-NVIDIA 由 Hugging Face 提供,通过一个极其简单的 API 显著加速 NVIDIA 平台上的 LLM 推理。只需更改一行代码,即可实现高达 28 倍的推理速度提升,并达到每秒处理 1,200 个 token 的能力。
NVIDIA L20规格参数
01
主要优势
新 float8 格式支持:
Optimum-NVIDIA 是第一个受益于 NVIDIA Ada Lovelace 和 Hopper 架构支持的新 float8 格式的 Hugging Face 推理库。FP8 再加上 NVIDIA TensorRT-LLM 软件的高级编译功能,可显著加速 LLM 推理。
FP8 量化:
您还可以使用单个标志启用 FP8 量化,这使您可以在单个 GPU 上以更快的速度运行更大的模型,而不会牺牲准确性。
性能评估:
评估 LLM 性能主要围绕两个关键指标:第一个令牌延迟和吞吐量。与标准 Transformer 模型相比,Optimum-NVIDIA 的第一个令牌延迟速度提高了 3.3 倍,从而设定了新的基准,确保了更灵敏的用户体验。
未来优化:
未来的迭代将引入突破性的优化技术,例如 In-Flight Batching,以简化流提示和 INT4 量化的吞吐量,从而能够在单个 GPU 上执行更大的模型。
02
如何运行
您可以通过 Optimum-NVIDIA 的 pipeline 函数仅用三行代码即可开始运行 LLaMA,并享受超快的推理速度。如果您已经使用 Hugging Face 的 transformers 库设置了一个用于运行 LLaMA 的 pipeline 函数,只需修改一行代码即可解锁最佳性能!
- from transformers.pipelines import pipeline+ from optimum.nvidia.pipelines import pipeline# 其他部分与 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 上以更快的速度运行更大的模型,而不会牺牲准确性。本示例中显示的标志默认使用预定义的校准策略,您也可以提供自己的验证数据集和自定义的分词方式,以根据您的用例量身定制量化过程。
pipeline 函数接口非常适合快速启动和运行,但对于那些希望精细控制采样参数的高级用户,可以使用 Model API。
- from transformers import AutoModelForCausalLM+ from optimum.nvidia import AutoModelForCausalLMfrom transformers import AutoTokenizer# 从预训练模型中加载分词器,并设置填充方向为左侧tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-13b-chat-hf", padding_side="left")# 从预训练模型中加载因果语言模型,并启用 FP8 量化model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-13b-chat-hf",+ use_fp8=True,)# 对输入文本进行分词,并返回 PyTorch tensors,且将其移动到 GPU 上model_inputs = tokenizer(["How is autonomous vehicle technology transforming the future of transportation and urban planning?"],return_tensors="pt").to("cuda")# 生成文本,设置 top_k、top_p 和重复惩罚参数generated_ids, generated_length = model.generate(**model_inputs,top_k=40,top_p=0.7,repetition_penalty=10,)# 解码生成的 token,跳过特殊 tokentokenizer.batch_decode(generated_ids[0], skip_special_tokens=True)
03
性能评估
在评估大型语言模型(LLM)的性能时,我们考虑两个指标:首个 Token 延迟和吞吐量。首个 Token 延迟测量从输入提示到开始接收输出所需的时间,因此此指标可以告诉您模型的响应速度。与原始 transformers 相比,Optimum-NVIDIA 提供高达 3.3 倍的首个 Token 延迟加速:
图1. 生成第一个 Token 所需的时间(毫秒)
另一方面,吞吐量测量模型生成 token 的速度,特别是当您希望将生成任务批处理在一起时。尽管有几种计算吞吐量的方法,我们采用了一种标准方法,即将端到端延迟除以总序列长度,包括所有批次中的输入和输出 token 之和。与原始 transformers 相比,Optimum-NVIDIA 提供高达 28 倍的吞吐量提升:
图2. 吞吐量对比(每秒生成的 token 数量)
如果需要了解更多详情,请点击下方 “阅读原文” 按钮了解更多。
欢迎扫码关注,
获取更多精彩资讯!

