我想为机器学习推理系统设计一个分布式队列(使用kubernetes)。问题如下:
每个请求还包含一个执行请求的model_id(有很多模型),所以当消费者得到一个队列消息时,它必须从blob存储中下载模型文件(可能缓存在本地),然后把它放到gpu上,然后用给定的数据点(也在请求中给定)执行它。
这个下载和gpu加载需要一些时间,因此,如果worker得到的下一个队列元素也包含一个具有相同的、已经加载的model_id的请求,这将是非常有益的。
这在现有的队列系统如rabbitmq或redis中可能实现吗?
此外,最好有某种平等的机会获得每个model_id的请求,而与每个model_id的请求数量无关。
我试着用redis来构建这个,但是我没有看到任何机制来告诉队列过滤消息,并给予我一个指定的model_id,如果它存在或任何其他随机model_id。
1条答案
按热度按时间mgdq6dx11#
这里你指的是一个分布式队列?听起来你需要为一个队列提供多个消费者(工作者),并希望确保每个消费者(工作者)获得相同model_id的消息。
这可以在Kafka中实现,其中队列(主题)被分配给多个消费者(工作者)。具有相同键的消息最终位于同一分区中,因此由同一消费者完成。在您的情况下,消息键将为 model_id