\

在Graphcore IPU上高效部署Meta开源Llama 2

作者:

分享  

Share on weixin
Share on weibo
Share on linkedin

订阅

Llama-2是Meta公司最新推出的开源大型语言模型(LLM),相比Llama早期版本,该升级版具有更好的语言理解和更快的推理速度。由于其性能可与更大型的模型相媲美,而且其宽松开源许可证允许其在商业应用中使用和分发,因此它被誉为大型语言模型采用和商业化的游戏规则改变者。

Graphcore拟未在Llama 2推出后迅速完成了其在IPU处理器上的高效能部署,IPU用户不但可以在自己机房的PCIe卡C600或者Bow Pod系统上直接部署Llama 2,还可以利用我们通过云端IPU免费提供的该模型前期试用。

什么是 Llama-2?

Llama 2是一种大型语言模型,与2023年2月发布的上一代模型相比有了显著改进。最初的Llama仅授权用于研究,而根据新的开源许可,Llama-2甚至可以用于商业应用。

最新版Llama的训练数据量增加了40%,根据Meta的随附论文,其性能与ChatGPT和Palm等专有模型相当,并优于一些广受赞誉的开源LLM。

Llama-2模型库提供多种模式尺寸,包括7B、13B和70B参数版本,这使应用部署变得切实可行,而且无需在基础设施上花费巨资。

在您机房的C600和IPU Pod/Bow Pod系统上快速部署Llama 2

基于Graphcore近期开源的PopTransformer库,Graphcore工程团队快速完成了Llama 2的适配工作,正如我们在之前文章中所介绍的,我们对大模型推理的关键优化技术均已集成在PopTransformer以及Poplar软件栈中,因此只需一个工程师一天的时间,就可以完成Llama2模型的适配和部署。

运行在IPU上的Llama2模型拥有令人惊艳的推理性能,以Llama2-13B为例,在最大上下文长度为16384的情况下,其单个token的推理延时为12.4毫秒,更多性能数据详见下表。

极低的推理延时正是IPU的显著优势之一,这意味着在相同延时要求下,如果开发者选择在IPU上部署模型,则可以将模型升级为更大尺寸的版本,进而充分发挥大模型的优势,让用户拥有更好的使用体验。

以上性能数据来自Graphcore Mk2系列,Llama 2同样可以直接部署在Graphcore的PCIe加速卡C600上,相比Mk2,C600拥有更高的算力同时原生支持FP8精度推理,在不损失模型性能的基础上,进一步降低内存占用。此外,C600支持以Scaleout方式部署模型,可以更加灵活的支持多卡并行(TensorParallel),流水线运行(Pipeline)等提高模型Throughput的技术,显著提高模型部署的性价比。

在云端IPU上免费使用Llama-2

如您的机房还未部署IPU产品,我们还在云端IPU上提供了免费的Llama 2前期试用。

随附的notebook将指导您在Graphcore IPU上使用Paperspace Gradient notebook创建和配置推理流水线,该notebook预打包了库和前提文件,因此您可以轻松开始使用Llama-2。

新用户可以通过Paperspace提供的六小时免费试用,在免费的IPU-Pod4上试用Llama-2。如果要实现更高性能,您也可以升级到IPU-Pod16

1. 请求访问模型权重

如要下载和使用预训练的Llama-2基本模型和微调的Llama-2聊天检查点,您需要在Hugging Face网站上验证Hugging Face Hub并创建读取访问标记。执行以下内容后,系统会提示您需要该标记的访问权限:

from huggingface_hub import notebook_login  
notebook_login()  

Llama-2在Meta许可下开源,您需要接受该许可才能访问模型权重和标记器。Hugging Face hub中的模型卡也是门控模型,因此您需要通过模型卡申请访问权限(参见llama-2-7b-chatllama-2-13b-chat)。

2.选择模型权重

Meta发布了7B、13B和70B参数版本的模型。Llama-2-7B和Llama-2-13B适合在我们的Paperspace免费版环境中使用Graphcore IPU-Pod4系统。用户还可以扩展到付费的IPU-Pod16系统,以获得更快的推理速度。

3.创建推理流水线

我们的下一个目标是建立推理流水线。我们将指定最大序列长度和迷你批尺寸。在IPU上部署一个模型之前,我们需要通过编译过程将其转换为可执行的格式。

我们在创建流水线时进行这一步骤。在编译之前定义好所有输入维度至关重要。我们提供了必要的配置,帮助您无缝运行。取决于模型的大小,编译步骤可能需要15到30分钟,但我们也会在缓存中提供预编译的执行文件,将这一步骤缩短到1分钟。

选择更长的序列长度或更大的批次大小将占用更多的IPU存储。这意味着增加其中一项可能就需要减少另一项。您接下来可以尝试通过调整这些超参数来提高系统效率。

请记住,如果您进行了更改,流水线将需要重新编译,取决于模型的大小,这可能需要10到30分钟。

如果您想尝试另一个参数数量不同的模型,请在前一个单元中选择不同的检查点,然后重新运行此步骤,将正确的模型加载到IPU上。

4.运行推理

调用您刚刚创建的llama_pipeline对象,从提示中生成文本。

在流水线调用中,您可以利用其中的一些可选参数控制生成行为:

  • temperature:表示您想要更多还是更少的创造性输出。值1.0意味着模型的默认行为。temperature大于1.0会让下个标记的分布变得更加平缓,从而更有可能产生更多不寻常的下个标记。temperature必须为零或正值。
  • k:表示只能对最高k个可能的标记进行采样。这被称为“top k”采样。您可以将该值设置为0,从而禁用top k采样,并从所有可能的标记中进行采样。K的值必须大于0并且小于config.model.embedding.vocab_size,也就是32000。K的默认值为5。
  • output_length:该值设置了标记的最大输出长度。模型通常在生成它的end_key文本时停止生成,但我们也可以通过制定output_length选项在此之前就停止生成。将output_length设置为None时,该选项将被禁用。默认值为“None”。

您可以从不同的用户输入开始,尝试这些可选参数。例如,我们可以使用提示“如果我被困在荒岛上,我该如何获得帮助?”,然后设置temperature=0.4,并将top-K采样设置为10。

提示Llama 2

使用您自己的开源LLM的好处之一就是能够控制系统提示,这在通过API和聊天应用提供的模型上是无法实现的。这让您可以预先定义您生成式文本代理的行为,注入个性,并为终端客户或客户应用提供更简洁的体验。

如欲查看完整的系统提示和格式,您可以调用流水线上的last_instruction_prompt属性。

让我们看看这个Llama 2提示指南中描述的默认提示格式。

Llama-2适合我吗?

Llama-2是一个非常强大的模型,可用于构建您自己的生成式文本和聊天应用,它的性能颇具竞争力,并具有非常宽松的研究和商业化许可。Llama-2性能优越,存储占用较小,对于生产中的广泛采用和部署来说,它是一个非常可行且经济高效的模型。

有关如何在C600和IPU Pod/Bow Pod系统上以及云上构建和扩展Llama 2应用的问题,请联系我们

More Posts

卢涛:后登纳德时代,IPU架构引领Transformer向高阶版演进

GACS 2023 | IPU:赋能生成式AI,不止生成式AI

Graphcore携手Pienso荣获CogX最佳创新类别的自然语言处理奖

Graphcore加入PyTorch基金会

促进低精度数字格式使用,Graphcore发布全新Unit Scaling库

情人节之“AI”跨山海——拟未“AI”的故事绘画连载(三)

获取最新的GRAPHCORE资讯

在下方注册以获取最新的资讯和更新:




    获取最新的GRAPHCORE资讯

    在下方注册以获取最新的资讯和更新: