Integrare la distribuzione di Ray Serve con Kafka

Integrare Ray Serve con Kafka

Scopri come combinare semplicemente la distribuzione di Ray Serve con un consumatore asincrono di Kafka

L'immagine è generata da Midjourney

Ray è un moderno framework open source che ti consente di creare applicazioni distribuite in Python con facilità. Puoi creare semplici pipeline di addestramento, fare l’ottimizzazione degli iperparametri, il processamento dei dati e il servizio dei modelli.

Ray ti permette di creare API di inferenza online con Ray Serve. Puoi facilmente combinare diversi modelli di machine learning e logica di business personalizzata in un’unica applicazione. Ray Serve crea automaticamente un’interfaccia HTTP per le tue distribuzioni, occupandosi di tolleranza agli errori e replicazione.

Ecosistema di Ray. Fonte: https://docs.ray.io/en/latest/ray-air/getting-started.html (licenza APACHE 2.0)

Ma c’è una cosa che Ray Serve non supporta al momento. Molte moderne applicazioni distribuite comunicano tramite Kafka, ma non c’è un modo out-of-the-box per collegare il servizio Ray Serve al topic di Kafka.

Ma non preoccuparti. Non ci vorrà troppo sforzo per insegnare a Ray Serve a comunicare con Kafka. Quindi, cominciamo.

Prima di tutto dovremo preparare il nostro ambiente locale. Utilizzeremo un file docker-compose con i container Docker di Kafka e Kafdrop UI per avviare ed esplorare la nostra istanza locale di Kafka (quindi assumiamo che tu abbia Docker e Docker Compose installati). Inoltre, dovremo installare alcuni requisiti Python per completare il lavoro:

  • Ray stesso
  • aiokafka

Tutti i requisiti possono essere scaricati da questo link.

Ora creeremo un file ray-consumer.py con una distribuzione Ray che verrà servita con Ray Serve. Non entrerò nei dettagli sui concetti di Ray Serve, poiché puoi leggere a riguardo nella documentazione. Fondamentalmente, prende la solita classe Python e la converte in una distribuzione asincrona di Ray Serve con il decoratore @serve.deployment: