使用 Amazon 进行模型推理优化 SageMaker - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon 进行模型推理优化 SageMaker

借助 Amazon SageMaker,您可以通过应用推理优化技术来提高生成式 AI 模型的性能。通过优化模型,您可以为自己的用例获得更好的性价比。优化模型时,您可以选择要应用哪些支持的优化技术,包括量化、推测性解码和编译。模型优化后,您可以运行评估以查看延迟、吞吐量和价格等性能指标。

对于许多型号, SageMaker 还提供了多个预先优化的版本,每个版本都可满足不同的应用程序对延迟和吞吐量的需求。对于此类模型,您可以部署其中一个经过优化的版本,而无需先自己优化模型。

优化技巧

Amazon SageMaker 支持以下优化技术。

推测性解码

推测性解码是一种加快大型解码过程的技术。LLMs它可以在不影响生成文本质量的情况下优化模型的延迟。

此技术使用一种较小但速度更快的模型,称为模模型。草稿模型生成候选标记,然后由较大但速度较慢的目标模型进行验证。在每次迭代中,草稿模型都会生成多个候选标记。目标模型会验证代币,如果发现某个令牌不可接受,它就会拒绝该代币并重新生成它。因此,目标模型既验证代币,又生成少量代币。

绘制模型的速度明显快于目标模型。它可以快速生成所有代币,然后将其批量发送到目标模型进行验证。目标模型并行评估它们,从而加快了最终响应的速度。

SageMaker 提供了您可以使用的预建草稿模型,因此您不必自己构建。如果您更喜欢使用自己的自定义草稿模型, SageMaker 也支持此选项。

量化

量化是一种通过使用不太精确的数据类型进行权重和激活来降低模型硬件要求的技术。使用量化对模型进行优化后,您可以将其托管在成本更低、可用GPUs性更高的上。但是,量化模型可能不如您优化的源模型准确。

SageMaker 支持激活感知权重量化 () AWQ。GPUsAWQ是一种高效、准确、低位LLMs且仅限权重的量化技术。

汇编

编译可以优化模型,以在所选硬件类型上获得最佳可用性能,而不会降低准确性。您可以应用模型编译来优化LLMs加速硬件,例如 AWS Trainium 或 AWS Inferentia。

当你通过编译来优化模型时,你会从 ahead-of-time编译中受益。您可以减少模型的部署时间和自动缩放延迟,因为当模型部署到新实例时,模型权重不需要 just-in-time编译。

推理性能评估的指标参考

成功评估优化模型的性能后,Studio 中的评估详细信息页面将显示以下指标。

延迟指标

部分显示以下指标

并发

评估模拟的同时调用端点的并发用户数。

获得第一个代币的时间 (ms)

从发送请求到收到流媒体响应的第一个令牌之间经过的时间。

令牌间延迟 (ms)

为每个请求生成输出令牌的时间。

客户端延迟 (ms)

从发送请求到收到整个响应的请求延迟。

输入令牌/秒(计数)

所有请求中生成的输入令牌总数除以并发的总持续时间(以秒为单位)。

输出令牌/秒(计数)

所有请求中生成的输出令牌总数除以并发的总持续时间(以秒为单位)。

客户端调用次数(计数)

所有用户同时向终端节点发送的推理请求总数。

客户端调用错误(计数)

在给定并发状态下,所有用户向终端节点发送的导致调用错误的推理请求总数。

分词器失败(计数)

令牌生成器未能解析请求或响应的推理请求总数。

推理响应为空(计数)

导致输出令牌为零或令牌生成器无法解析响应的推理请求总数。

吞吐量指标

吞吐量部分显示以下指标。

并发

评估模拟的同时调用端点的并发用户数。

输入令牌/秒/req(计数)

每个请求每秒生成的输入令牌总数。

输出令牌/秒/req(计数)

每个请求每秒生成的输出令牌总数。

输入标记(计数)

每个请求生成的输入令牌总数。

输出令牌(计数)

每个请求生成的输出令牌总数。

价格指标

价格部分显示以下指标。

并发

评估模拟的同时调用端点的并发用户数。

每百万个输入代币的价格

处理 100 万个输入令牌的成本。

每百万产出代币的价格

生成 100 万个输出代币的成本。

支持的型号参考

下表显示了 SageMaker 支持推理优化的模型,并显示了支持的优化技术。

支持推理优化的模型
模型名称 JumpStart 型号 支持量化 支持推测性解码 使用 SageMaker 草稿模型进行推测性解码
猎鹰 huggingface-llm-falcon-40b-bf16
huggingface-llm-falcon-40 16 b-instruct-bf
huggingface-llm-falcon-180 16 b-chat-bf
huggingface-llm-falcon-180b-bf16
huggingface-llm-amazon-falconlite
huggingface-llm-amazon-falconlite2
huggingface-llm-tiiuae-falcon-rw-1b
huggingface-llm-falcon-7b-bf16
huggingface-llm-falcon-7 16 b-instruct-bf
huggingface-llm-falcon2-11b
gpt-neox huggingingface textgeneration2-20b-fp16 gpt-neoxt-chat-base
huggingingface textgeneration2-gpt-neox-20b-fp16
LLaMA meta-textgeneration-llama-3-70b-instruct
meta-textgeneration-llama-3-70b
meta-textgeneration-llama-3-8b
meta-textgeneration-llama-3-8b-instruct
meta-textgeneration-llama-2-7b
meta-textgeneration-llama-2-7b-f
meta-textgeneration-llama-2-13b
meta-textgeneration-llama-2-13b-f
meta-textgeneration-llama-2-70b
meta-textgeneration-llama-2-70b-f
meta-textgeneration-llama-codellama-7b
meta-textgeneration-llama-codellama-7b-instruct
meta-textgeneration-llama-codellama-7b-python
meta-textgeneration-llama-codellama-13b
meta-textgeneration-llama-codellama-13b-instruct
meta-textgeneration-llama-codellama-13b-python
meta-textgeneration-llama-codellama-34b
meta-textgeneration-llama-codellama-34b-instruct
meta-textgeneration-llama-codellama-34b-python
meta-textgeneration-llama-codellama-70b
meta-textgeneration-llama-codellama-70b-instruct
meta-textgeneration-llama-codellama-70b-python
meta-textgeneration-llama-guard-7b
Bloom huggingface-textgeneration-bloom-1b7
huggingface-textgeneration-bloom-1b1
huggingface-textgeneration-bloom-560m
huggingface-textgeneration-bloomz-560m
huggingface-textgeneration-bloomz-1b1
huggingface-textgeneration-bloomz-1b7
huggingingface textgeneration1-bloomz-7b1-
huggingingface textgeneration1-bloom-
huggingface textgeneration1-bloomz-3b-
huggingface textgeneration1-bloom-
huggingface-textembedding-bloom-7b1
huggingface-textembedding-bloom-7b1-fp16
Cohere huggingface-llm-cohereforai-c4 ai-command-r-plus
杰玛 huggingface-llm-gemma-7b
huggingface-llm-gemma-7b-instruct
huggingface-llm-gemma-2b
huggingface-llm-gemma-2b-instruct
huggingface-llm-zephyr-7b-gemma
gpt2 huggingface-textgeneration-gpt2
huggingface-textgeneration-distilgpt2
寒冷西北风 huggingface-llm-mistral-7b
huggingface-llm-mistral-7b-instruct
huggingface-llm-mistral-7 b-openorca-gptq
huggingface-llm-amazon-mistrallite
huggingface-llm-thebloke-mistral-7 b-openorca-awq
huggingface-llm-huggingfaceh4-mistral-7 b-sft-beta
huggingface-llm-huggingfaceh4-mistral-7 b-sft-alpha
huggingface-llm-teknium-openhermes-2-mistral-7b
huggingface-llm-nousresearch-yarn-mistral-7b-128k
huggingface-llm-dolphin-2-1-mistral-7b
huggingface-llm-cultrix-mistraltrix-v1
混合 huggingface-llm-mixtral-8x7b-instruct
huggingface-llm-mixtral-8x7 b-instruct-gptq
huggingface-llm-mixtral-8x7b
huggingface-llm-mistralai-mixtral-8x22b-instruct-v0-1
huggingface-llm-dolphin-2-5-mixtral-8x7b
huggingface-llm-dolphin-2-7-mixtral-8x7b
Phi huggingface-llm-phi-2

预先优化的模型 JumpStart

以下是具有预先优化配置的 JumpStart 型号。

Meta
  • Llama 3 8B Instruct

  • Llama 3 8B

  • Llama 3 70B Instruct

  • Llama 3 70B

  • Llama 2 70B Chat

  • Llama 2 7B Chat

  • Llama 2 13B 聊天

HuggingFace
  • Mixtral 8x7b Instruct

  • Mixtral 8x7B

  • Mistral 7B Instruct

  • Mistral 7B

预编译模型 JumpStart

对于某些模型和配置, SageMaker 提供针对特定 Inf AWS erentia 和 Trainium 实例进行预编译的模型。 AWS 对于这些,如果您创建了编译或优化作业,并且选择 ml.inf2.48xlarge 或 ml.trn1.32xlarge 作为部署实例类型,则会获取已编译的工件。 SageMaker 由于该作业使用已编译的模型,因此无需从头开始编译即可快速完成。

以下是 SageMaker 具有预编译 JumpStart 模型的模型:

Meta
  • Llama3 8B

  • Llama3 70B

  • Llama2 7B

  • Llama2 70B

  • Llama2 13B

  • Code Llama 7B

  • Code Llama 70B

HuggingFace
  • Mistral 7B