分布式系统:ML队列

问题描述 投票:0回答:1

我想为机器学习推理系统(使用 kubernetes)设计一个分布式队列。问题如下:

每个请求还包含执行请求时应使用的 model_id(有很多模型)。因此,当消费者收到队列消息时,它必须从 blob 存储下载模型文件(可能在本地缓存)并将其放入 GPU 上,然后使用给定的数据点(也在请求中给出)执行它。

此下载和 GPU 加载需要一些时间。因此,如果工作线程获取的下一个队列元素也包含具有相同且已加载的 model_id 的请求,那将非常有益。

任何现有的队列系统(例如rabbitmq或redis)都可以实现这一点吗?

此外,最好有某种平等的机会获得每个 model_id 的请求,而与每个 model_id 的请求数量无关。

我尝试用 Redis 构建这个,但我没有看到任何机制来告诉队列过滤消息,并给我一个具有指定 model_id 的消息(如果存在)或任何其他随机 model_id。

kubernetes machine-learning message-queue distributed-system task-queue
1个回答
0
投票

这里你指的是分布式队列?听起来您需要为队列拥有多个消费者(工作人员),并希望确保每个消费者(工作人员)获取相同 model_id 的消息。

这可以在 Kafka 中实现,其中队列(主题)被分区分配给多个消费者(工作人员)。具有相同密钥的消息最终位于同一分区中,因此由同一消费者处理。在您的情况下,消息密钥将是 model_id

© www.soinside.com 2019 - 2024. All rights reserved.