Skip to Content
Mélodium 0.10.1 is now available!
DocsExemplesInférence LLM distribuée

Inférence LLM distribuée

Source: 15_distributed_llm_inference

Un serveur HTTP qui accepte des prompts en texte brut et renvoie les réponses LLM en streaming. L’appel LLM s’exécute sur un runner Mélodium cloud — le package ml n’a besoin d’être disponible que sur le runner, pas sur la machine front-end. Le front-end ne requiert aucune dépendance ML.

Exécution

melodium run 15_distributed_llm_inference/Compo.toml \ --api_token "my-api-token" \ --openai_key sk-...
$ curl -X POST http://127.0.0.1:8080/chat -d "Explique Mélodium en une phrase." Mélodium est un langage de programmation dataflow…

Fonctionnement

Le modèle Assistant et le traitement inferText s’exécutent sur le runner distant. Le front-end n’a besoin que des packages http, distrib et work :

model distributor: DistributionEngine( treatment = "distributed_llm_inference/main::inferText", version = "0.1.0" )
See in Compositeur Studio

Passer des paramètres const au traitement distant

inferText a besoin de openai_key pour configurer son modèle Assistant, mais les paramètres const ne peuvent pas être passés via des flux. Ils sont envoyés via l’appel start du moteur de distribution :

distribStart: start[distributor=distributor]( params = |map([|entry<string>("openai_key", openai_key)]) )

Côté distant, inferText déclare :

treatment inferText(const openai_key: string) model llm: Assistant(openai_key=openai_key)

Le const est défini une seule fois au démarrage du runner et partagé entre toutes les invocations de ce traitement.

Streaming de tokens de bout en bout

chat côté distant émet les tokens de réponse sous forme de Stream<string>. Ils sont encodés en octets, renvoyés via recvStream<byte>, et transmis directement dans connection.data côté front-end — les tokens apparaissent dans la réponse HTTP au fur et à mesure de leur génération, sans tampon intermédiaire.

See in Compositeur Studio

Dépendances

[dependencies] std = "0.10.1" # flux de base, journalisation, structures de données http = "0.10.1" # serveur et client HTTP net = "0.10.1" # utilitaires d'adresses IP encoding = "0.10.1" # encodage / décodage UTF-8 work = "0.10.1" # provisionnement de runners cloud distrib = "0.10.1" # distribution de flux entre runners ml = "0.10.1" # inférence LLM, STT, TTS et modèles locaux