将Kafka集成到分布式Ray Serve部署中
在Ray Serve的分布式部署中集成Kafka
学习如何将Ray Serve部署与异步Kafka消费者简单结合
Ray是一个现代的开源框架,能够让您轻松地使用Python创建分布式应用程序。您可以创建简单的训练流程、进行超参数调优、数据处理和模型服务。
Ray允许您使用Ray Serve创建在线推断API。您可以轻松地将多个ML模型和自定义业务逻辑组合在一个应用程序中。Ray Serve会自动为您的部署创建一个HTTP接口,处理容错和复制。
但是,目前Ray Serve有一个遗漏的功能。许多现代分布式应用程序通过Kafka进行通信,但是没有一种即插即用的方法将Ray Serve服务连接到Kafka主题。
但不要慌张。教Ray Serve与Kafka通信不会太费力。那么,让我们开始吧。
首先,我们需要准备本地环境。我们将使用一个带有Kafka和Kafdrop UI Docker容器的docker-compose文件来启动和探索我们的本地Kafka实例(因此我们假设您已安装了Docker和Docker Compose)。同时,我们还需要安装一些Python依赖项来完成工作:
- Ray本身
- aiokafka
所有的依赖项可以通过此链接下载。
现在,我们将创建一个ray-consumer.py文件,其中包含将使用Ray Serve提供的Ray Deployment提供服务的代码。我不会详细介绍Ray Serve的概念,因为您可以在文档中阅读相关内容。基本上,它会将常规的Python类转换为一个异步服务Ray Deployment,使用@serve.deployment装饰器: