Gradient使得使用AWS Inferentia进行LLM基准测试变得成本高效且毫不费力 机器学
使用AWS Inferentia提升LLM基准测试的高效与便捷
关键要点
LLM性能评估:在大型语言模型LLM的预训练和微调过程中,快速频繁地验证性能是提升模型能力的关键。Gradient开发实验室:提供企业级定制化的LLM和人工智能共同助手开发服务。基准测试支持:通过将AWS Neuron集成到lmevaluationharness,实现对模型性能的有效评估。成本节约:使用AWS Spot Instances可节省高达90的成本,提高测试频率和效率。根据最新文章,共享了Gradient与AWS Inferentia结合的创新成果。评估大型语言模型LLMs的性能是它们部署之前预训练和微调过程中的重要步骤。验证性能的速度和频率越高,模型的潜在性能提升机会就越大。
在Gradient,我们专注于个性化的LLM开发,最近推出了AI开发实验室,该实验室为企业提供定制的端到端开发服务,以构建私有和自定义的LLM及人工智能共同助手。在此过程中,我们定期根据开放和专有基准评估模型的性能。不久前,我们与AWS团队合作,在AWS Trainium上训练模型时,发现了在LLM评估主流工具lmevaluationharness方面的限制。该开源框架能够对不同生成语言模型进行评分,但我们在VRAM和GPU实例的可用性方面遭遇了瓶颈。
黑豹加速器app下载为了解决这些挑战,我们决定开发并开源我们的解决方案,集成了AWS Neuron支持AWS Inferentia和Trainium的库。这一集成使得我们能够在训练过程中及之后将valphatross,我们的Albatross模型的早期版本与其他公共模型进行基准测试。
在技术背景方面,这一集成作为lmevaluationharness内的新模型类别运行,抽象出令牌推理和序列对数似然估计的步骤,而不影响实际的评估任务。我们将内部测试管道迁移到Amazon Elastic Compute Cloud (Amazon EC2)的Inf2实例,利用AWS Inferentia2的强大计算能力,获得高达384GB的共享加速器内存,从而毫不费力地匹配所有当前的公共架构。通过使用AWS Spot Instances,我们得以利用AWS云中未使用的EC2资产节省了高达90按需价格的成本。这减少了测试所需的时间,并允许我们更频繁地测试,因为可以在多个现成可用的实例上进行测试,测试完成后及时释放这些实例。
在这篇文章中,我们将详细解析我们的测试过程、所遇到的挑战,以及如何在AWS Inferentia上使用测试工具的示例。
在AWS Inferentia2上进行基准测试
本项目的目标是生成与开放LLM排行榜中所示的相同分数涵盖Hugging Face上许多CausalLM模型,同时保留对私有基准测试的灵活性。若要看到更多可用模型的示例,请查看AWS Inferentia和Trainium上的Hugging Face。
将Hugging Face transformers中的模型移植到Hugging Face的Optimum Neuron Python库所需的代码更改非常少。由于lmevaluationharness使用AutoModelForCausalLM,因此可以使用[NeuronModelForCausalLM](https//huggingfaceco/docs/optimumneuron/guides/models#textgenerationinference)进行替代。模型在没有预编译的情况下会被实时编译,这可能会导致任务延长15至60分钟。这为我们提供了在任何AWS Inferentia2实例上运行测试的灵活性,并支持CausalLM模型。
测试结果
基于基准测试和模型的工作原理,我们并不指望在不同的运行中得到完全一致的分数。然而,分数应基于标准差非常接近,经过多次测试,我们也确实看到了这一点,具体情况如表所示。在AWS Inferentia2上运行的初步基准测试均已获得Hugging Face排行榜的确认。

在lmevaluationharness中,有两大主要测试流 [generateuntil](https//githubcom/EleutherAI/lmevaluationharness/blob/d83fc511873cc32b8a3282feaf91943d0a6cdf22/docs/modelguidemd#interface) 和 loglikelihood。gsm8k测试主要使用generateuntil来生成与推理过程相同的响应。loglikelihood主要用于基准测试和评估,考察不同输出产生的概率。这两种方法均在Neuron中有效,但SDK 216中的loglikelihood方法需要额外的步骤来确定概率,可能需要额外的时间。
lmevaluationharness结果
硬件配置 原始系统 AWS Inferentia inf248xlarge 在gsm8k上评估mistralai/Mistral7BInstructv01时,batchsize=1所需时间 103分钟 32分钟在gsm8k上的分数getanswer exactmatch与标准差 03813 03874 ( 00134) 03806 03844 ( 00134)
开始使用Neuron和lmevaluationharness
此部分的代码可以帮助您使用lmevaluationharness并在Hugging Face上运行已支持的模型。要查看一些可用的模型,请访问AWS Inferentia和Trainium在Hugging Face上的页面。
如果您熟悉在AWS Inferentia2上运行模型,可能会注意到没有传递numcores设置。我们的代码会自动检测可用的核心数并作为参数传递。这让您能够使用相同的代码运行测试,无论您使用的实例大小如何。您还可能会注意到我们引用的是原始模型,而不是已编译的Neuron版本。测试工具会在需要时自动为您编译模型。
以下步骤展示了如何部署我们测试过的Gradient gradientai/valphatross模型。如果您想在较小的实例上进行较小示例测试,可以使用mistralai/Mistral7Bv01模型。
默认情况下,按需Inf实例的配额为0,因此您应该通过服务配额请求增加配额。对于所有Inf Spot实例请求再加一个请求,这样您就可以使用Spot实例。您将需要针对使用inf248xlarge实例的示例请求192 vCPUs的配额,或针对基本的inf2xlarge请求4 vCPUs的配额如果您要部署Mistral模型。配额是基于AWS区域的,因此请确保在useast1或uswest2中申请。根据您的模型选择实例。由于valphatross是70B架构,我们决定使用inf248xlarge实例。部署inf2xlarge用于7B Mistral模型。如果您要测试其他模型,可能需要根据模型的大小调整实例。使用Hugging Face DLAMI版本20240123来部署实例,以确保安装所有必要的驱动程序。显示的价格包括实例费用,没有额外的软件收费。将驱动器大小调整为600 GBMistral 7B为100 GB。在实例上克隆并安装lmevaluationharness。我们指定一个构建版本,以确保任何变动都是由于模型变化,而不是测试或代码的变化。
bashgit clone https//githubcom/EleutherAI/lmevaluationharnesscd lmevaluationharness
可选:从主分支版本中选择特定修订,以重现确切结果
git checkout 756eeb6f0aee59fc624c81dcb0e334c1263d80e3
安装该仓库,同时不覆盖现有的torch和torchneuronx安装
pip install nodeps e pip install peft evaluate jsonlines numexpr pybind11 pytablewriter rougescore sacrebleu sqlitedict tqdmmultiprocess zstandard hftransfer
运行lmeval,使用hfneuron模型类型,并确保您有指向Hugging Face上模型路径的链接:
bash
例如,如果您在inf2xlarge上,请使用mistralai/Mistral7Bv01
MODELID=gradientai/valphatross
python m lmeval model neuronx modelargs pretrained=MODELIDdtype=bfloat16 batchsize 1 tasks gsm8k
如果您在Mistral上运行上述示例,应该会收到以下输出在较小的inf2xlarge上,可能需要250分钟运行:
bash 1319/1319 [3252lt0000 150s/it]neuronx (pretrained=mistralai/Mistral7Bv01dtype=bfloat16) genkwargs (None) limit None numfewshot None batchsize 1TasksVersion Filter nshot Metric Value Stderrgsm8k 2getanswer 5exactmatch03806 00134
清理工作
完成后,请确保通过Amazon EC2控制台停止EC2实例。
结论
Gradient和Neuron团队对LLM评估的更广泛采用充满期待。您也可以自行尝试在AWS Inferentia2实例上运行最受欢迎的评估框架。当使用Gradient的定制LLM开发时,您现在可以享受到AWS Inferentia2按需可用性的好处。请参阅这些教程,了解如何开始在AWS Inferentia上托管模型。
作者介绍
Michael Feil是Gradient的人工智能工程师,曾在Rodhe amp Schwarz担任机器学习工程师,并在马克斯普朗克智能系统研究所和博世公司做研究。Michael是各种开源LLM推理库和开源项目如StarCoder的主要贡献者,拥有KIT的机电一体化和信息技术学士学位,以及慕尼黑工业大学的机器人硕士学位。
Jim Burtoft是AWS的高级初创企业解决方案架构师,直接与像Gradient这样的初创公司合作。Jim是CISSP,AWS AI/ML技术领域社区的成员,Neuron大使,并与开源社区合作以支持Inferentia和Trainium的使用。Jim拥有卡内基梅隆大学的数学学士学位和维吉尼亚大学的经济学硕士学位。
加载评论
AWS分析服务优化用户数据访问与权限管理关键要点新的信任身份传播功能简化了用户在多种分析应用中的登录体验。允许数据所有者根据真实用户身份定义权限,方便审计员验证数据访问情况。借助亚马逊的标准设施,用户不再需要手动选择IAM角色,提升了使用便捷性。我很高兴地宣布,基于 信任身份传播 的新用例已经推出,...