Sim

Parallel

Le bloc Parallel est un bloc conteneur dans Sim qui permet d'exécuter plusieurs instances de blocs simultanément pour un traitement de flux de travail plus rapide.

Le bloc Parallel prend en charge deux types d'exécution concurrente :

Les blocs Parallel sont des nœuds conteneurs qui exécutent leur contenu plusieurs fois simultanément, contrairement aux boucles qui s'exécutent séquentiellement.

Aperçu

Le bloc Parallel vous permet de :

Distribuer le travail : traiter plusieurs éléments simultanément

Accélérer l'exécution : exécuter des opérations indépendantes simultanément

Gérer des opérations en masse : traiter efficacement de grands ensembles de données

Agréger les résultats : collecter les sorties de toutes les exécutions parallèles

Options de configuration

Type de parallélisation

Choisissez entre deux types d'exécution parallèle :

Parallel basé sur le comptage - Exécuter un nombre fixe d'instances parallèles :

Exécution parallèle basée sur le comptage

Utilisez cette option lorsque vous devez exécuter la même opération plusieurs fois simultanément.

Example: Run 5 parallel instances
- Instance 1 ┐
- Instance 2 ├─ All execute simultaneously
- Instance 3 │
- Instance 4 │
- Instance 5 ┘

Parallel basé sur une collection - Distribuer une collection à travers des instances parallèles :

Exécution parallèle basée sur une collection

Chaque instance traite un élément de la collection simultanément.

Example: Process ["task1", "task2", "task3"] in parallel
- Instance 1: Process "task1" ┐
- Instance 2: Process "task2" ├─ All execute simultaneously
- Instance 3: Process "task3" ┘

Comment utiliser les blocs Parallel

Création d'un bloc Parallel

  1. Faites glisser un bloc Parallel depuis la barre d'outils sur votre canevas
  2. Configurez le type de parallélisation et les paramètres
  3. Faites glisser un seul bloc à l'intérieur du conteneur parallel
  4. Connectez le bloc selon vos besoins

Accès aux résultats

Après la fin d'un bloc parallèle, vous pouvez accéder aux résultats agrégés :

  • <parallel.results> : Tableau des résultats de toutes les instances parallèles

Exemples de cas d'utilisation

Traitement par lots d'API

Scénario : traiter plusieurs appels d'API simultanément

  1. Bloc parallèle avec une collection de points de terminaison API
  2. À l'intérieur du parallèle : le bloc API appelle chaque point de terminaison
  3. Après le parallèle : traitement de toutes les réponses ensemble

Traitement IA multi-modèles

Scénario : obtenir des réponses de plusieurs modèles d'IA

  1. Parallèle basé sur une collection de modèles (ex. : ["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"])
  2. À l'intérieur du parallèle : le modèle de l'agent est défini sur l'élément actuel de la collection
  3. Après le parallèle : comparer et sélectionner la meilleure réponse

Fonctionnalités avancées

Agrégation des résultats

Les résultats de toutes les instances parallèles sont automatiquement collectés :

// In a Function block after the parallel
const allResults = input.parallel.results;
// Returns: [result1, result2, result3, ...]

Isolation des instances

Chaque instance parallèle s'exécute indépendamment :

  • Portées de variables séparées
  • Pas d'état partagé entre les instances
  • Les échecs dans une instance n'affectent pas les autres

Limitations

Les blocs conteneurs (Boucles et Parallèles) ne peuvent pas être imbriqués les uns dans les autres. Cela signifie :

  • Vous ne pouvez pas placer un bloc Boucle dans un bloc Parallèle
  • Vous ne pouvez pas placer un autre bloc Parallèle dans un bloc Parallèle
  • Vous ne pouvez pas placer un bloc conteneur dans un autre bloc conteneur

Les blocs parallèles ne peuvent contenir qu'un seul bloc. Vous ne pouvez pas avoir plusieurs blocs connectés les uns aux autres à l'intérieur d'un parallèle - seul le premier bloc s'exécuterait dans ce cas.

Bien que l'exécution parallèle soit plus rapide, soyez attentif à :

  • Limites de taux des API lors de requêtes simultanées
  • Utilisation de la mémoire avec de grands ensembles de données
  • Maximum de 20 instances simultanées pour éviter l'épuisement des ressources

Parallèle vs Boucle

Comprendre quand utiliser chacun :

FonctionnalitéParallèleBoucle
ExécutionConcurrenteSéquentielle
VitessePlus rapide pour les opérations indépendantesPlus lente mais ordonnée
OrdrePas d'ordre garantiMaintient l'ordre
Cas d'utilisationOpérations indépendantesOpérations dépendantes
Utilisation des ressourcesPlus élevéePlus faible

Entrées et sorties

  • Type de parallèle : Choisissez entre 'count' ou 'collection'

  • Count : Nombre d'instances à exécuter (basé sur le comptage)

  • Collection : Tableau ou objet à distribuer (basé sur la collection)

  • parallel.currentItem : Élément pour cette instance

  • parallel.index : Numéro d'instance (base 0)

  • parallel.items : Collection complète (basé sur la collection)

  • parallel.results : Tableau de tous les résultats d'instance

  • Accès : Disponible dans les blocs après le parallèle

Bonnes pratiques

  • Opérations indépendantes uniquement : Assurez-vous que les opérations ne dépendent pas les unes des autres
  • Gérer les limites de taux : Ajoutez des délais ou une limitation pour les workflows intensifs en API
  • Gestion des erreurs : Chaque instance doit gérer ses propres erreurs avec élégance
Parallel