是否曾在照片中看到有人穿着一件炫酷的衬衫或独特的服装,并想知道他们是从哪里买来的?价格是多少?也许您甚至考虑过自己买一件。
这项挑战激发了 Snap 的 ML 工程团队推出 Screenshop,这是 Snapchat 应用中的一项服务,该服务使用 AI 在线定位并推荐与图像中看到的风格相匹配的时尚商品。
Screenshop 于 2021 年集成到 Snapchat 应用中。它使用开源物体检测和图像分类模型开发,该模型由 Snap 的 ML 工程师在内部进行了微调。该模型检测图像中显示的服装项目类型,然后将其传递到时尚嵌入模型,该模型使用相似度搜索在时尚目录中找到外观相似的项目。
Screenshop 的 AI 制作流程最初使用 TensorFlow 构建和提供,TensorFlow 是一种广泛使用的开源框架,用于开发机器学习和人工智能应用程序。
Snap 的 ML 工程师 Ke Ma 强调了 TensorFlow 在早期开发过程中的作用。“Screenshop 的深度学习模型最初是使用 TensorFlow 开发的,”他解释道,“因此,在选择推理服务平台时,我们自然选择使用 TensorFlow 的原生服务平台 TFServing.”
应对多框架 AI 工作流的生产挑战
随着 Screenshop 服务在 Snapchat 的用户群中获得青睐,ML 团队开始探索改进和改进该服务的途径。他们很快发现,通过将其时尚嵌入模型替换为基于 PyTorch 框架的替代模型,他们可以提高语义搜索结果的准确性。
这种情况凸显了在生产环境中部署 AI 模型的企业面临的典型挑战:使用不同的后端框架部署 AI 模型,而无需为每个框架管理、维护和部署定制的推理服务平台,这是一种两难的困境。为了解决这一问题,Ke Ma 及其团队发现了 NVIDIA Triton 推理服务器。
“我们不想为我们的 Screenshop 工作流、TensorFlow 的 TFserving 平台和 PyTorch 的 TorchServe 平台部署定制的推理服务平台,”Ke Ma 解释道,“Triton 与框架无关的设计以及对 TensorFlow、PyTorch 和 ONNX 等多个后端的支持非常引人注目。这使我们能够使用单个推理服务平台为端到端工作流提供服务,从而减少了我们的推理服务成本以及在生产中更新模型所需的开发者天数。”
Triton 推理服务器是一个开源的 AI 模型服务平台,旨在简化和加速生产中 AI 推理工作负载的部署。它帮助企业、ML 开发者和研究人员降低模型服务基础设施的复杂性,缩短部署新 AI 模型所需的时间,并提高 AI 推理和预测能力。该平台支持多个深度学习和机器学习框架,包括 NVIDIA TensorRT、TensorFlow、PyTorch、ONNX、OpenVINO、Python 和 RAPIDS FIL 等。
借助 NVIDIA Triton 模型集成和模型分析器缩短投产时间
Snap 团队成功使用 NVIDIA Triton 模型集成和模型分析器功能,加快了从 TFServing 迁移到 Triton 推理服务器的过程。
通过利用 模型集成,Screenshop 是一款无代码开发工具,可以将 AI 模型连接到单个工作流中。Screenshop 开发团队无需编写任何代码,即可将使用 Python 创建的预处理和后处理工作流集成到其工作流中,从而使他们能够使用单个推理请求触发整个工作流。这降低了延迟,并最大限度地减少了不同步骤之间的来回网络通信。
图 3 展示了如何使用 NVIDIA Triton Model Ensemble 构建包含预处理和后处理步骤的工作流,而无需编写代码。
该团队还利用 Triton 推理服务器的功能,快速确定运行 Screenshop 工作流的最佳配置和设置,确保在 100 毫秒的目标延迟内实现最大吞吐量。
NVIDIA Omniverse 的一个突出特征是:Triton 模型分析器 允许用户通过调整 GPU 上加载的并发模型的数量以及在推理运行期间分批处理的请求数量来尝试各种部署配置。然后,它会在直观的图表上直观地映射这些配置,从而有助于快速识别和部署用于生产的最高效设置。
使用 NVIDIA TensorRT 将吞吐量提高 3 倍,并将成本降低 66%
继在 Triton 推理服务器上成功推出 Screenshop 服务后,Ke Ma 及其团队继续致力于提高系统性能并降低总拥有成本。他们的努力促使他们采用 NVIDIA TensorRT 该 SDK,以专门优化 NVIDIA GPU 上 AI 模型的推理性能。
“借助 TensorRT,我们得以将模型的精度从 FP32 降低到 FP16,而不会影响服务的质量或准确性。”Ke Ma 解释道,他提到 TensorRT 的量化功能有助于减少用于表示模型参数的内存位元数量。
在编译过程中,Screenshop 团队应用了默认的 NVIDIA TensorRT 设置,并立即见证了吞吐量激增 3 倍,估计可降低 66%的成本,考虑到依赖该服务的 Snap 用户数量,这一数字意义重大。
将 Triton 推理服务器扩展至 1K GPU,以满足 Snapchat 日益增长的用户群需求
Screenshop 只是 Snapchat 中使用 Triton 推理服务器高效处理推理请求的众多 AI 支持服务之一。Triton 推理服务器的通用性扩展到各种应用和服务,尤其是那些依赖光学字符识别 (OCR) 的应用和服务。
“文本和表情符号是我们用户群之间的常见沟通形式,数量已超过 8 亿。”Snap 的 ML 工程师 Byung Eun (Logan) Jeon 在 近期在 GTC 上的演讲 中指出:“这些文本和表情符号充满了对我们的一系列服务至关重要的上下文信息,从 Beauty Scanner 服务(允许用户拍摄包装产品的照片以执行视觉搜索)到我们的内容审核和违反政策检测服务。”
鉴于 Snap 用户对 OCR 支持的服务的需求多种多样,选择能够有效扩展的推理服务平台对于 Logan Jeon 及其团队来说至关重要。Triton 推理服务器与行业标准 KServe 协议的兼容性及其使用 Prometheus 监控和报告 GPU 利用率指标的能力,使团队能够轻松扩展其 OCR 模型。他们通过将 Triton 推理服务器集成到其 Kubernetes 引擎中,在峰值时通过超过 1K 的 NVIDIA T4 和 L4 GPU 编排服务器,确保高效的服务交付,从而实现了这一点。
借助业务逻辑脚本,轻松实现从 Jupiter notebook 到生产的过渡
Snapchat 的全球采用要求 OCR ML 工程团队同时管理多个特定语言的物体检测和识别模型,以准确处理和解释图像中嵌入的不同语言的文本。
在 OCR 的研发阶段,ML 团队使用自定义 Python 逻辑来选择要在推理期间提供的适当语言特定模型。Logan 解释道:“我们在测试期间利用了 Jupiter notebook 中的 Python 条件语句和循环,动态选择正确的语言特定模型进行推理, NVIDIA Triton 的 BLS 功能使我们能够轻松将这种自定义逻辑过渡到生产环境中,从而保持 GPU 效率和吞吐量。”
我们 Business Logic Scripting(BLS) 是 Triton 推理服务器中的一个功能集合,有助于将 ML 团队的自定义代码从 Jupiter notebook 平稳过渡到生产环境,从而加快其支持 OCR 的新服务的上市时间。BLS 允许您创建自定义脚本,该脚本可以根据 Python 或 C++ 中定义的条件调用 Triton 推理服务器托管的任何模型。
了解详情
NVIDIA Triton 推理服务器 和 NVIDIA TensorRT 是 GitHub 上提供的开源项目,可以自由访问和使用。同时,这些项目也可以作为 Docker 容器提供,从 NVIDIA NGC 获取。更重要的是,它们是 NVIDIA AI Enterprise 的组成部分,提供企业级安全性、稳定性和支持。
寻求更快的价值实现时间的企业可以使用 NVIDIA NIM,这是一套易于使用的微服务,旨在加速各种 AI 模型(包括开源社区和 NVIDIA AI Foundation 模型)的推理。