Hugging Face上的Optimum-NVIDIA仅需一行代码即可实现闪电般快速的LLM推理
大型语言模型(LLM)彻底改变了自然语言处理,并越来越多地被部署用于大规模解决复杂问题。由于其独特且计算密集的需求,实现这些模型的最佳性能极具挑战性。LLM的优化性能对于寻求快速响应体验的最终用户以及需要提高吞吐量以节省成本的规模化部署而言,都极具价值。
这正是Optimum-NVIDIA推理库发挥作用的地方。Optimum-NVIDIA在Hugging Face上可用,通过极其简单的API在NVIDIA平台上显著加速LLM推理。只需更改一行代码,您就可以在NVIDIA平台上实现最高28倍的推理速度和1,200个tokens/秒。
Optimum-NVIDIA是第一个受益于NVIDIA Ada Lovelace和Hopper架构支持的新float8
格式的Hugging Face推理库。FP8,加上NVIDIA TensorRT-LLM软件的高级编译能力,极大地加速了LLM推理。
如何运行
您可以通过Optimum-NVIDIA的pipeline,仅用三行代码就可以以闪电般的推理速度运行LLaMA。如果您已经设置了Hugging Face的transformers库的pipeline来运行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上以更快的速度运行更大的模型,而不会牺牲准确性。此示例中显示的标志默认使用预定义的校准策略,但您可以提供自己的校准数据集和自定义分词,以根据您的用例定制量化。
pipeline接口非常适合快速启动和运行,但需要对采样参数进行精细控制的专家用户可以使用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的性能时,我们考虑两个指标:首次token延迟和吞吐量。首次token延迟(也称为首次token时间或预填充延迟)衡量从您输入提示到开始接收输出之间等待的时间,因此此指标可以告诉您模型响应速度如何。Optimum-NVIDIA的首次token延迟比标准transformers快3.3倍。
另一方面,吞吐量衡量模型生成token的速度,在您想要批量生成时尤其重要。虽然有几种计算吞吐量的方法,但我们采用了一种标准方法,即用端到端延迟除以总序列长度,包括所有批次的总输入和输出token。Optimum-NVIDIA的吞吐量比标准transformers高28倍。
对最近发布的NVIDIA H200 Tensor Core GPU的初步评估显示,与NVIDIA H100 Tensor Core GPU相比,LLaMA模型的吞吐量额外提高了2倍。随着H200 GPU更易于获得,我们将分享Optimum-NVIDIA在其上运行的性能数据。
下一步
Optimum-NVIDIA目前为LLaMAForCausalLM架构+任务提供最佳性能,因此任何基于LLaMA的模型,包括微调版本,现在都可以与Optimum-NVIDIA开箱即用。我们正在积极扩大支持范围,以包含Hugging Face内的其他文本生成模型架构和任务。
我们将继续突破性能极限,并计划引入尖端优化技术,如In-Flight Batching(以在流式传输提示时提高吞吐量)和INT4量化(以在单个GPU上运行更大的模型)。
试一试吧:我们正在发布Optimum-NVIDIA仓库,其中包含入门说明。请与我们分享您的反馈!🤗