Optimum-NVIDIA仅需一行代码即可解锁闪电般快速的LLM推理
一行代码解锁闪电般快速的LLM推理,只需要Optimum-NVIDIA
大型语言模型(LLMs)已经革命性地改进了自然语言处理,并越来越多地被部署用于解决复杂的规模化问题。由于其独特而强烈的计算需求,要想实现这些模型的最佳性能一直是一个艰巨的挑战。对LLMs进行优化的性能对于寻求灵敏、响应迅速的用户体验以及对提高吞吐量转化为节省资金的规模部署非常有价值。
这就是Optimum-NVIDIA的作用所在。通过一个极其简单的API,在Hugging Face上可用的Optimum-NVIDIA极大地加速了NVIDIA平台上的LLM推理。只需更改一行代码,您就可以在NVIDIA平台上获得高达28倍的推理速度和每秒1,200个标记。
Optimum-NVIDIA是首个从新支持的float8
格式中获益的Hugging Face推理库,该格式支持NVIDIA Ada Lovelace和Hopper架构。除此之外,利用NVIDIA TensorRT-LLM软件的先进编译能力,还可大大加速LLM推理。
如何运行
您只需使用Optimum-NVIDIA的流水线的3行代码,就可以以极快的推理速度运行LLaMA。如果您已经设置了从Hugging Face的transformers库到运行LLaMA的流水线,则只需更改一行代码即可实现最佳性能!
- 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("描述可持续能源应用中的一项现实世界的人工智能。")
您还可以通过单个标志启用FP8量化,这样可以在单个GPU上运行更大的模型,实现更快的速度,而无需牺牲准确性。此示例中显示的标志默认情况下使用预定义的校准策略,但您也可以提供自己的校准数据集和自定义分词以根据您的用例调整量化。
- from transformers import LlamaForCausalLM+ from optimum.nvidia import AutoModelForCausalLMfrom transformers import AutoTokenizertokenizer = 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( ["自主驾驶车辆技术如何改变交通和城市规划的未来?"], 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倍更快的首个标记延迟:
另一方面,吞吐量衡量模型生成标记的速度,在需要批量生成时特别重要。虽然有几种计算吞吐量的方法,但我们采用将端到端延迟除以总序列长度的标准方法,其中包括所有批次的输入和输出标记的总和。与原始transformers相比,Optimum-NVIDIA提供高达28倍更好的吞吐量:
最近宣布的NVIDIA H200 Tensor Core GPU的初始评估显示,与NVIDIA H100 Tensor Core GPU相比,LLaMA模型的吞吐量提高了2倍。随着H200的普及,我们将分享在H200上使用Optimum-NVIDIA的性能数据。
下一步
Optimum-NVIDIA目前为LLaMAForCausalLM架构+任务提供了最高性能,因此任何LLaMA基于的模型,包括精调版本,都应该能够立即与Optimum-NVIDIA配合使用。我们正在积极扩展支持,包括其他文本生成模型架构和其他任务,都来自于Hugging Face。
我们将继续推动性能的边界,并计划将先进的优化技术,如In-Flight Batching用于改善流式提示的吞吐量,以及INT4量化用于在单个GPU上运行更大的模型。
从今天开始,我们发布了Optimum-NVIDIA存储库的首个Beta版本,并提供了使用说明。请尝试并与我们分享您的反馈🤗!Optimum-NVIDIA存储库