Workers avec état
Un modèle ML par worker, chargé une seule fois
`.class_task(MyClass, MyClass.method, args)` instancie `MyClass` une seule fois par worker. L'instance persiste entre les items — parfait pour les modèles ML, les connexions BDD, les accumulateurs.
python
from olympipe import Pipeline
from transformers import pipeline as hf_pipeline
class EmbeddingWorker:
def __init__(self, model_name: str):
# Chargé une fois au démarrage du worker
self.model = hf_pipeline("feature-extraction", model=model_name)
def embed(self, text: str) -> list:
return self.model(text)[0][0] # CLS token
# 2 workers GPU, chacun charge le modèle une fois
embeddings = (
Pipeline(texts) # 50 000 textes
.batch(32)
.class_task(
EmbeddingWorker,
EmbeddingWorker.embed,
["sentence-transformers/all-MiniLM-L6-v2"],
count=2,
)
.wait_for_result()
)⚡ Performance
50 000 textes, embeddings HuggingFace
Séquentiel 2.0min
1 worker GPU 40.0s
2 workers GPU 21.0s
4 workers GPU 11.0s
🚀 10.9× plus rapide
Comment ça fonctionne
Au démarrage du processus worker, le constructeur est appelé avec `args`. Toutes les invocations suivantes réutilisent la même instance — les poids du modèle restent en RAM (ou VRAM) sans rechargement.
Exemples liés
Génération d'embeddings ML
Générer des embeddings pour 50 000 textes avec sentence-transformers.
MLNLP
Serveur d'inférence LLM
Servir un modèle HuggingFace comme API HTTP avec Olympipe.
MLServerLLM
Traitement audio en parallèle
Transcrire des fichiers audio avec Whisper en parallèle.
MLAudio
