【.comExpressTranslation】可以从数据中学习、识别模式并以最少的人为干预做出决策的系统令人兴奋。深度学习是一种使用神经网络的机器学习,正在迅速成为解决从对象分类到推荐系统等许多不同计算问题的有效工具。然而,将训练有素的神经网络部署到应用程序和服务中可能会给基础架构经理带来挑战。多个框架、未充分利用的基础设施和缺乏标准实施,这些挑战甚至可能导致AI项目的失败。本文探讨了如何应对这些挑战并将深度学习模型部署到数据中心或云端的生产环境中。通常,我们的应用程序开发人员与数据科学家和IT合作,将AI模型部署到生产中。数据科学家使用特定框架为许多用例训练机器/深度学习模型。我们将训练有素的模型整合到为解决业务问题而开发的应用程序中。然后,IT运营团队在数据中心或云中运行和管理已部署的应用程序。图1.将深度学习模型部署到生产中面临两大挑战:我们需要支持许多不同的框架和模型,这会导致开发复杂性和工作流问题。数据科学家基于新算法和新数据开发新模型,我们需要不断更新生产环境。如果我们使用NVIDIAGPU来提供卓越的推理性能,则需要牢记以下几点。首先,GPU是强大的计算资源,每个GPU运行一个模型可能效率低下。在单个GPU上运行多个模型不会自动并行运行这些模型以最大化GPU利用率。那么我们该怎么做呢?让我们看看如何使用Nvidia的TensorRT推理服务器等应用程序来应对这些挑战。您可以从NvidiaNGC库(https://ngc.nvidia.com/catalog/containers/nvidia:tensorrtserver)获取它作为容器,或从GitHub(https://github.com/NVIDIA/tensorrt-inference-服务器)作为开源代码下载TensorRT推理服务器。TensorRTInferenceServer:让部署更简单使用任何框架(TensorFlow、TensorRT、ONNX、PyTorch、Caffe、Chainer、MXNet甚至自定义框架)开发的文件都可以存储在这里。TensorRTInferenceServer可以部署使用所有这些框架构建的模型;当推理服务器容器在GPU或CPU服务器上启动时,它会将模型存储库中的所有模型加载到内存中。然后,应用程序使用API调用推理服务器以对模型运行推理。如果我们有很多模型无法放入内存,我们可以将单个库拆分为多个库并运行不同的TensorRTInferenceServer实例,每个实例都指向不同的库。即使在推理服务器和我们的应用程序正在运行时,也可以通过更改模型存储库轻松更新、添加或删除模型。图2最大化GPU利用率:成功运行应用程序和推理服务器后,我们现在可以克服第二个挑战。GPU利用率通常是基础架构经理的关键绩效指标(KPI)。TensorRTInferenceServer可以在GPU上并发调度多个相同或不同的模型;它会自动最大化GPU利用率。所以我们开发者不用采取特殊的措施,IT运维要求就满足了。IT运营团队不会在每台服务器上部署一个模型,而是在所有服务器上运行相同的TensorRT推理服务器容器。由于它支持多种模型,因此与每台服务器一个模型的场景相比,它确保了GPU得到充分利用并更均匀地加载服务器。此演示视频(https://youtu.be/1DUqD3zMwB4)解释了服务器负载平衡和利用率。启用实时和批量推理:有两种推理。如果我们的应用程序需要实时响应用户,那么推理也需要实时进行。由于延迟是一个问题,请求不能与其他请求一起排队和批处理。另一方面,如果没有实时性要求,可以将请求与其他请求进行批处理,以提高GPU利用率和吞吐量。我们在开发应用程序的时候,有必要了解实时性的要求。TensorRTInferenceServer有一个参数可以设置实时应用的延迟阈值,也支持动态批处理,可以设置为非零数来实现批处理。我们与IT运营团队密切合作,以确保正确设置这些参数。CPU、GPU和异构集群的推理:在许多企业中,GPU主要用于训练。推理是在常规CPU服务器上完成的。然而,在GPU上运行推理大大加快了速度,我们还需要在任何处理器上运行模型的灵活性。让我们探讨如何从CPU推理迁移到GPU推理。我们当前的集群是一组仅运行TensorRT推理服务器应用程序的纯CPU服务器。我们将GPU服务器引入集群,并在这些服务器上运行TensorRTInferenceServer软件。我们将GPU加速模型添加到模型库中。我们使用配置文件指示这些服务器上的TensorRT推理服务器使用GPU进行推理。我们可以停用集群中仅使用CPU的服务器或在异构模式下使用它们。调用TensorRT推理服务器的应用程序无需更改代码。与DevOps基础架构集成:最后一点与IT团队的关系更为密切。贵公司是否遵循DevOps实践?DevOps是一组流程和实践,旨在缩短整个软件开发和部署周期。实施DevOps的企业通常使用容器来打包应用程序以进行部署。TensorRT推理服务器是一个Docker容器,IT人员可以使用Kubernetes对其进行管理和扩展。他们还可以将推理服务器用作端到端AI工作流的Kubeflow管道的一部分。来自推理服务器的GPU/CPU利用率指标告诉Kubernetes何时在新服务器上启动新实例以进行扩展。如果我们设置模型配置文件并集成客户端库,则很容易将TensorRTInferenceServer集成到我们的应用程序代码中。部署训练有素的神经网络可能会带来挑战,但本文介绍了几种使此类部署更容易的技术。欢迎留言交流。原标题:EasilyDeployDeepLearningModelsinProduction,作者:ShankarChandrasekaran
