天天看点

开发者新闻 | 使用 FastAPI 构建机器学习微服务

开发者新闻 | 使用 FastAPI 构建机器学习微服务

使用 FastAPI 构建机器学习微服务

开发者新闻 | 使用 FastAPI 构建机器学习微服务

使用微服务架构部署应用程序有几个优点: 更容易的主系统集成、更简单的测试和可重用的代码组件。FastAPI 最近已经成为用 Python 开发微服务的最流行的 web 框架之一。FastAPI比Flask (Python 中一个常用的 web 框架) 要快得多,因为它是基于 Asynchronous Server Gateway Interface (ASGI) 而不是 Web Server Gateway Interface (WSGI) 上构建的。

- 什么是微服务 -

微服务定义了构建软件应用程序的架构和组织方法。微服务的一个关键方面是它们是分布式的,并且具有松散耦合。实现更改不太可能破坏整个应用程序。

您还可以将使用微服务架构构建的应用程序视为由几个通过应用程序编程接口 (API) 进行通信的小型独立服务组成。通常,每个服务都由一个较小的、自包含的团队拥有,负责在必要时实现更改和更新。

使用微服务的一个主要好处是,它们使团队能够快速地为其应用程序构建新组件。这对于与不断变化的业务需求保持一致至关重要。

另一个好处是它们使按需扩展应用程序变得多么简单。企业可以加快上市时间,以确保不断满足客户的需求。

开发者新闻 | 使用 FastAPI 构建机器学习微服务

使用动态参数构造 CUDA 图

开发者新闻 | 使用 FastAPI 构建机器学习微服务

自从在 CUDA 10 中引入以来,CUDA 图已用于各种应用程序。图将一组 CUDA 内核和其他 CUDA 操作组合在一起,并使用指定的依赖树执行它们。它通过结合与 CUDA 内核启动和 CUDA API 调用相关的驱动活动来加快工作流程。如果可能的话,它还加强了对硬件加速的依赖,而不是仅仅依赖 CUDA 流和事件。

构造 CUDA 图有两种主要方法:显式API调用和流捕获。

- 使用显式API调用构造CUDA图 -

通过这种方式构造 CUDA 图,由 CUDA 内核和 CUDA 内存操作形成的图的节点通过调用 cudaGraphAdd*Node API 添加到图中,其中*替换为节点类型。节点之间的依赖关系通过 API 显式设置。

使用显式 API 构造 CUDA 图的好处是 cudaGraphAdd*Node API 返回节点句柄 (cudaGraphNode_t) 可以用作未来节点更新的引用。例如,可以使用 cudaGraphExecKernelNodeSetParams 以最小的代价更新实例化图中内核节点的内核启动配置和内核函数参数。

缺点是,在使用 CUDA 图来加速现有代码的场景中,使用显式 API 调用构造CUDA图通常需要大量的代码更改,特别是关于代码的控制流和函数调用结构的更改。

*本文转自 NVIDIA英伟达

继续阅读