如何Veriff通过使用Amazon SageMaker多模型端点将部署时间缩短了80 机器学习博
Veriff如何利用Amazon SageMaker多模型端点将部署时间减少80
关键要点
Veriff通过采用Amazon SageMaker的多模型端点(MME),显著减少了80的部署时间。这一方案使得机器学习模型的API接口变得易于构建,优化了GPU实例的管理。成本大幅降低,运营效率提升,简化了从研究到生产的转变流程。Veriff是一家身份验证平台,为金融服务、FinTech、加密、游戏、移动和在线市场等创新型成长型组织提供解决方案。Veriff结合了AI驱动的自动化、人工反馈、深刻见解和专业知识,提供先进技术。
Veriff为客户提供了一个可靠的基础设施,使他们在客户旅程的各个关键时刻都能对用户身份及其个人属性做到可信。Bolt、Deel、Monese、Starship、Super Awesome、Trustpilot和Wise等客户对Veriff充满信任。
作为AI驱动的解决方案,Veriff需以具成本效益的方式创建和运行数十个机器学习(ML)模型。这些模型从轻量级的树模型到深度学习计算机视觉模型不等,后者需在GPU上运行,以实现低延迟并优化用户体验。Veriff还在不断增加其产品组合,目标是为客户提供超个性化的解决方案。为不同客户提供不同模型也增加了对可扩展模型服务解决方案的需求。
本文将向你展示Veriff如何通过标准化其模型部署工作流程,利用Amazon SageMaker减少成本和开发时间。
基础设施和开发挑战
Veriff的后端架构基于微服务模式,各个服务运行在托管于AWS基础设施上的不同Kubernetes集群。这种模式最初用于公司的所有服务,包括运行高成本计算机视觉ML模型的微服务。
其中一些模型要求在GPU实例上部署。由于GPU实例类型成本相对较高,Veriff在Kubernetes上开发了一种自定义解决方案,以在不同服务副本之间共享GPU资源。通常,一个GPU可以存储多个Veriff的计算机视觉模型在内存中。
尽管此解决方案有效降低了GPU成本,但也带来了限制:数据科学家需要提前指示模型所需的GPU内存大小。此外,DevOps人员还得手动提供GPU实例,以响应需求模式,这导致了运营过载和实例的过度预配,从而影响成本效率。
除了GPU预配外,此设置还要求数据科学家为每个模型构建REST API包装以提供通用接口供公司其他服务使用,并封装模型数据的预处理和后处理。这些API需具备生产级代码,这使得数据科学家在将模型投入生产时遇到挑战。
Veriff的数据科学平台团队寻找替代方案,主要目标是通过提供更简单的部署管道,帮助公司数据科学家从研究到生产的过渡;其次是降低GPU实例的运营成本。
解决方案概览
Veriff需要一种新解决方案,以解决以下两个问题:
轻松构建针对ML模型的REST API包装优化和自动管理GPU实例容量最终,ML平台团队决定采用Sagemaker多模型端点 (MME)。这一决定源于MME对NVIDIA的Triton推理服务器的支持,该服务器使模型包装为REST API变得简单;另外,Veriff还在尝试Triton,同时,MME能通过简单的自动扩缩放策略,自行管理GPU实例。
Veriff创建了两个MMEs,一个用于测试,一个用于生产。这一方案允许他们在不影响生产模型的情况下,在测试环境中运行测试步骤。
飞鸟加速器ios版版本SageMaker MMEs
SageMaker是一项全面管理的服务,为开发者和数据科学家提供快速构建、训练和部署ML模型的能力。SageMaker MMEs提供了一种可扩展且成本效益高的方案,用于实时推断大量模型。MMEs使用共享服务容器和加速实例如GPU集群来托管所有模型,从而相比单模型端点,最大化端点利用率,降低托管成本。同时,SageMaker还通过管理模型的加载、卸载和基于端点流量模式的规模缩放,减少了部署负担。此外,所有SageMaker实时端点都具备内建的模型管理和监控能力,包括影子变体、自动扩缩放及与Amazon CloudWatch的本地集成有关更多信息,请参见多模型端点部署的CloudWatch指标。
自定义Triton组合模型
Veriff决定使用Triton推理服务器的原因有几个,主要包括:
它允许数据科学家通过以标准目录格式排列模型工件文件来构建模型的REST API无代码解决方案。兼容所有主要AI框架PyTorch、TensorFlow、XGBoost等。提供针对ML的低级和服务器优化,例如动态批处理。使用Triton允许数据科学家轻松部署模型,因为他们只需构建格式化的模型库,而不必编写代码构建REST API如果需要自定义推理逻辑,Triton也支持Python模型。这减少了模型部署时间,让数据科学家有更多时间专注于模型开发,而不是部署。
Triton的另一个重要特性是,可以构建模型组合,即将多个模型链条式组合在一起。这些组合可以作为单个Triton模型运行。Veriff当前利用该特性,在每个ML模型中使用Python模型部署预处理和后处理逻辑,确保在模型投入生产时,输入数据或模型输出之间无匹配错误。
以下是该工作负载的典型Triton模型库的结构示例:
modelpy文件包含预处理和后处理代码。训练好的模型权重位于screendetectioninferencer目录下,版本为1该示例中的模型为ONNX格式,同时也可以为TensorFlow、PyTorch等格式。组合模型的定义在screendetectionpipeline目录中,其中的输入和输出通过配置文件进行映射。
运行Python模型所需的额外依赖保存在requirementstxt文件中,需打包为conda环境pythonenvtargz。有关更多信息,请参见管理Python运行时和库。此外,Python步骤的配置文件需通过EXECUTIONENVPATH指令指向pythonenvtargz。
模型文件夹然后需要进行TAR压缩并使用modelversiontxt重命名。最后,生成的ltmodelnamegtltmodelversiongttargz文件将被复制到与MME连接的Amazon S3存储桶中,以便SageMaker检测和服务该模型。
模型版本管理和持续部署
前面的部分显示,构建Triton模型库非常简单。然而,手动执行所有必要的部署步骤繁琐且容易出错。为了解决这一问题,Veriff建立了一个包含所有将在MMEs上部署的模型的单一版本库,数据科学家们以类似Gitflow的方式进行协作。该单一版本库具有以下特点:
由Pants进行管理。使用Pants应用代码质量工具,如Black和MyPy。为每个模型定义单元测试,检查模型输出是否为给定输入的预期输出。模型权重与模型库一起存储,由于这些权重可能是大型二进制文件,使用DVC以版本化方式与Git进行同步。该单一版本库与持续集成(CI)工具集成。每当有新的推送至库或新的模型时,将执行以下步骤:
通过代码质量检查。下载模型权重。构建conda环境。启动一个使用conda环境的Triton服务器,并用其处理单元测试中定义的请求。构建最终的模型TAR文件ltmodelnamegtltmodelversiongttargz。这些步骤确保模型具备所需的质量以便部署,因此每次推送到库分支时,生成的TAR文件将在另一个CI步骤中复制到测试用S3存储桶。当将推送合并到主分支时,模型文件将被复制到生产用S3存储桶中。以下图表描绘了此CI/CD系统。
成本与部署速度的好处
使用MMEs使Veriff能以单一版本库的方法将模型部署到生产。以下是Veriff新的模型部署工作流程的总结:
在单一版本库中创建具有新模型或模型版本的分支。在开发机器上定义并运行单元测试。当模型准备好测试在测试环境中时,推送分支。当模型准备在生产中使用时,将分支合并到主分支中。在新方案中,Veriff的模型部署已成为开发过程中的简单一步。新模型的开发时间已从10天缩短至平均2天。
SageMaker托管的基础设施提供和自动扩缩放功能为Veriff带来了额外好处。他们使用了每实例调用量的CloudWatch指标,根据流量模式进行扩缩,节省开支而不牺牲可靠性。通过对测试环境进行负载测试,他们定义该指标的阈值,以寻找延迟和成本之间的最佳平衡。
在向MMEs部署七个生产模型并分析开支后,Veriff报告称,GPU模型服务的成本较原有基于Kubernetes的解决方案降低了75。运营成本也下降,因为手动预配实例的负担被解除了,减轻了公司DevOps工程师的压力。
结论
本文回顾了Veriff为何选择SageMaker MMEs而非在Kubernetes上自行管理模型部署。SageMaker承担了不具差异化的繁重工作,使Veriff能够缩短模型开发时间,提高工程效率,显著降低实时推断的成本,同时保持其业务关键操作所需的性能。最后,我们展示了Veriff简单而有效的模型部署CI/CD管道和模型版本管理机制,可以作为结合软件开发最佳实践与SageMaker MMEs的参考实现。你可以在GitHub上找到有关如何使用SageMaker MMEs托管多个模型的代码示例。
关于作者
Ricard Borrs是Veriff的高级机器学习专家,负责公司的MLOps工作。他通过建立公司的数据科学平台,结合多个开源解决方案与AWS服务,帮助数据科学家更快更好地构建AI/ML产品。
Joo Moura是AWS的AI/ML专业解决方案架构师,驻西班牙。他帮助客户进行深度学习模型的大规模训练和推理优化,并更广泛地在AWS上构建大型ML平台。
Miguel Ferreira是驻赫尔辛基的AWS高级解决方案架构师。他对AI/ML一直保持浓厚的兴趣,并帮助多个客户将Amazon SageMaker集成到其ML工作流程中。
Saurabh Trikande是Amazon SageMaker推理的高级产品经理。他热衷于与客户合作,致力于机器学习民主化,专注于与复杂ML应用的部署、多租户ML模型、成本优化以及更易于部署深度学习模型相关的核心挑战。在闲暇时间,Saurabh喜欢远足、学习创新技术、关注TechCrunch,并花时间与家人一起。