Exafunction 支持 AWS Inferentia,以实现机器学习推理 PlatoBlockchain 数据智能的最佳性价比。 垂直搜索。 人工智能。

Exafunction 支持 AWS Inferentia 以解锁机器学习推理的最佳性价比

在所有行业中,机器学习 (ML) 模型越来越深入,工作流程越来越复杂,工作负载的规模越来越大。 由于这项投资直接带来更好的产品和体验,因此投入了大量精力和资源来使这些模型更加准确。 另一方面,使这些模型在生产中高效运行是一项经常被忽视的重要任务,尽管它是实现性能和预算目标的关键。 在这篇文章中,我们介绍了 Exafunction 和 AWS 推理 共同努力,为生产中的 ML 模型解锁简单且经济高效的部署。

功能 是一家专注于使公司能够尽可能高效地大规模执行 ML 的初创公司。 他们的产品之一是 Exa部署,一种易于使用的 SaaS 解决方案,可大规模处理 ML 工作负载。 ExaDeploy 跨混合资源(CPU 和硬件加速器)有效地协调您的 ML 工作负载,以最大限度地提高资源利用率。 它还负责自动扩展、计算托管、网络问题、容错等,以确保高效可靠的部署。 基于 AWS Inferentia Amazon EC2 Inf1实例 专为在云中提供最低的每次推理成本而构建。 ExaDeploy 现在支持 Inf1 实例,这允许用户获得基于硬件的加速器节省和基于软件的优化资源虚拟化和大规模编排的节省。

解决方案概述

ExaDeploy 如何解决部署效率问题

为确保有效利用计算资源,您需要考虑适当的资源分配、自动缩放、计算共置、网络成本和延迟管理、容错、版本控制和可再现性等。 在规模上,任何低效率都会对成本和延迟产生重大影响,许多大公司已经通过建立内部团队和专业知识来解决这些低效率问题。 然而,对于大多数公司来说,承担构建不是公司所需核心竞争力的通用软件的财务和组织开销是不切实际的。

ExaDeploy 旨在解决这些部署效率难题,包括一些最复杂的工作负载中出现的难题,例如自动驾驶汽车和自然语言处理 (NLP) 应用程序中的难题。 在一些大批量 ML 工作负载上,ExaDeploy 在不牺牲延迟或准确性的情况下将成本降低了 85% 以上,集成时间低至一个工程师日。 ExaDeploy 已被证明可以自动扩展和管理数以千计的同步硬件加速器资源实例,而不会出现任何系统降级。

ExaDeploy 的主要特性包括:

  • 在您的云中运行:您的模型、输入或输出都不会离开您的专用网络。 继续使用您的云提供商折扣。
  • 共享加速器资源:ExaDeploy 通过使多个模型或工作负载共享加速器资源来优化使用的加速器。 它还可以识别多个工作负载是否正在部署相同的模型,然后在这些工作负载之间共享模型,从而优化所使用的加速器。 其自动重新平衡和节点耗尽功能可最大限度地提高利用率并最大限度地降低成本。

Exafunction 支持 AWS Inferentia,以实现机器学习推理 PlatoBlockchain 数据智能的最佳性价比。 垂直搜索。 人工智能。

  • 可扩展的无服务器部署模型:ExaDeploy 根据加速器资源饱和度自动缩放。 动态缩减到 0 或多达数千个资源。
  • 支持多种计算类型:您可以从所有主要 ML 框架以及任意 C++ 代码、CUDA 内核、自定义操作和 Python 函数中卸载深度学习模型。
  • 动态模型注册和版本控制:可以注册和运行新模型或模型版本,而无需重建或重新部署系统。
  • 点对点执行:客户端直接连接到远程加速器资源,可实现低延迟和高吞吐量。 他们甚至可以远程存储状态。
  • 异步执行:ExaDeploy 支持模型的异步执行,这允许客户端将本地计算与远程加速器资源工作并行化。
  • 容错远程管道:ExaDeploy 允许客户端将远程计算(模型、预处理等)动态组合到具有容错保证的管道中。 ExaDeploy 系统通过自动恢复和重放来处理 pod 或节点故障,使开发人员永远不必考虑确保容错性。
  • 开箱即用的监控: ExaDeploy 提供 Prometheus 指标和 Grafana 仪表板来可视化加速器资源使用情况和其他系统指标。

ExaDeploy 支持 AWS Inferentia

基于 AWS Inferentia 的 Amazon EC2 Inf1 实例专为深度学习特定推理工作负载而设计。 与当前一代的 GPU 推理实例相比,这些实例可提供高达 2.3 倍的吞吐量和高达 70% 的成本节省。

ExaDeploy 现在支持 AWS Inferentia,它们共同解锁了通过专门构建的硬件加速和大规模优化的资源编排实现的性能提升和成本节约。 让我们通过考虑一种非常常见的现代 ML 工作负载来了解 ExaDeploy 和 AWS Inferentia 的综合优势:批处理的混合计算工作负载。

假设的工作负载特征:

  • 15 毫秒的仅 CPU 预处理/后处理
  • 模型推理(GPU 上 15 毫秒,AWS Inferentia 上 5 毫秒)
  • 10 个客户端,每个客户端每 20 毫秒发出一次请求
  • CPU:Inferentia:GPU 的近似相对成本为 1:2:4(基于 c2.xlarge、inf5.xlarge 和 g1dn.xlarge 的 Amazon EC4 按需定价)

下表显示了每个选项的形成方式:

设置 所需资源 价格 潜伏
没有 ExaDeploy 的 GPU 每个客户端 2 个 CPU、2 个 GPU(总共 20 个 CPU、20 个 GPU) 100 30毫秒
带有 ExaDeploy 的 GPU 8 个客户端共享 10 个 GPU,每个客户端 1 个 CPU 42 30毫秒
没有 ExaDeploy 的 AWS Inferentia 每个客户端 1 个 CPU,1 个 AWS Inferentia(总共 10 个 CPU,10 个 Inferentia) 30 20毫秒
带有 ExaDeploy 的 AWS Inferentia 3 个 AWS Inferentia 在 10 个客户端之间共享,每个客户端 1 个 CPU 16 20毫秒

AWS Inferentia 上的 ExaDeploy 示例

在本节中,我们将通过一个在 BERT PyTorch 模型上使用 inf1 节点的示例来回顾配置 ExaDeploy 的步骤。 我们看到 bert-base 模型的平均吞吐量为 1140 个样本/秒,这表明 ExaDeploy 对于这种单一模型、单一工作负载场景几乎没有引入任何开销。

: 设置一个 Amazon Elastic Kubernetes服务 (亚马逊 EKS)集群

Amazon EKS 集群可以通过我们的 Terraform AWS 模块. 对于我们的示例,我们使用了 inf1.xlarge 适用于 AWS Inferentia。

: 设置 ExaDepoy

第二步是设置 ExaDeploy。 通常,在 inf1 实例上部署 ExaDeploy 很简单。 安装程序主要遵循与图形处理单元 (GPU) 实例相同的过程。 主要区别在于将模型标签从 GPU 更改为 AWS Inferentia 并重新编译模型。 例如,使用 ExaDeploy 的应用程序编程接口 (API) 从 g4dn 迁移到 inf1 实例只需要更改大约 10 行代码。

  • 一种简单的方法是使用 Exafunction 的 Terraform AWS Kubernetes 模块 or 掌舵图. 这些部署核心 ExaDeploy 组件以在 Amazon EKS 集群中运行。
  • 将模型编译成序列化格式(例如,TorchScript、TF 保存的模型、ONNX 等)。对于 AWS Inferentia,我们遵循 本教程.
  • 在 ExaDeploy 的模块存储库中注册编译模型。
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • 为模型准备数据(即,不 ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • 从客户端远程运行模型。
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy 和 AWS Inferentia:更好地结合

AWS Inferentia 正在突破模型推理吞吐量的界限,并在云中提供最低的每次推理成本。 话虽这么说,公司需要适当的编排才能大规模享受 Inf1 的性价比优势。 ML 服务是一个复杂的问题,如果在内部解决,则需要从公司目标中删除的专业知识,并且通常会延迟产品时间表。 ExaDeploy 是 Exafunction 的 ML 部署软件解决方案,已成为行业领导者。 它甚至可以服务于最复杂的 ML 工作负载,同时提供流畅的集成体验和来自世界一流团队的支持。 ExaDeploy 和 AWS Inferentia 共同解锁大规模推理工作负载的性能提升和成本节约。

结论

在本文中,我们向您展示了 Exafunction 如何支持 AWS Inferentia 的性能 ML。 有关使用 Exafunction 构建应用程序的更多信息,请访问 功能. 有关在 Inf1 上构建深度学习工作负载的最佳实践,请访问 Amazon EC2 Inf1 实例。


作者简介

Nicholas Jiang,软件工程师,Exafunction

Jonathan Ma,Exafunction 软件工程师

Prem Nair,软件工程师,Exafunction

Anshul Ramachandran,软件工程师,Exafunction

Shruti Koparkar,AWS 高级产品营销经理

时间戳记:

更多来自 AWS机器学习