Aller au contenu principal

Temps d'exécution maximum pour les charges de travail Qiskit Runtime

Pour garantir l'équité, il existe un temps d'exécution maximum calculé par le service pour chaque job Qiskit Runtime. Si un job dépasse cette limite de temps, il est annulé de force et une exception RuntimeJobMaxTimeoutError est levée. Tu peux aussi définir un temps d'exécution maximum sur tes jobs pour aider à contrôler les coûts.

remarque

La session ou le batch est immédiatement arrêté lorsque la limite de coût est atteinte. Les jobs en cours d'exécution dans cette session ou ce batch se terminent normalement, mais les jobs en attente sont annulés.

Définir un temps d'exécution maximum

Le temps d'exécution maximum d'un job correspond à la plus petite de ces valeurs :

  • La valeur définie pour max_execution_time
  • La valeur de timeout du job déterminée par le service

La valeur max_execution_time est basée sur l'utilisation du QPU, et non sur le temps réel.

Définis le temps d'exécution maximum (en secondes) dans les options du job, comme indiqué dans l'exemple suivant. Consulte les guides Options de l'Estimator, Options du Sampler ou Options de l'Executor pour des informations sur la configuration des options.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(mode=backend)

estimator.options.max_execution_time = 2500

Tu peux aussi connaître l'utilisation consommée par les jobs terminés en récupérant les métriques du job comme suit :

# Find QPU usage of a specific job
print(f"QPU usage of job {job.job_id()} was {job.metrics()['usage']['quantum_seconds']} seconds")

Temps d'exécution maximum calculé par le service

Le service calcule une valeur de timeout appropriée pour le job en fonction des circuits et options fournis en entrée. Ce timeout calculé par le service est plafonné à 3 heures pour garantir une utilisation équitable des appareils. Si un max_execution_time est également spécifié pour le job, c'est la plus petite des deux valeurs qui est utilisée.

Par exemple, si tu spécifies max_execution_time=5000 (environ 83 minutes), mais que le service détermine que le job ne devrait pas prendre plus de 5 minutes (300 secondes), alors le job est annulé après 5 minutes.

Temps d'exécution maximum d'un batch

Lorsqu'un batch est démarré, une valeur de durée de vie maximum (TTL maximum) lui est attribuée. Une fois ce TTL atteint, le batch est arrêté, les jobs déjà en cours d'exécution continuent de s'exécuter, et les jobs en attente restant dans le batch sont placés dans un état d'échec.

Les batchs ont aussi une valeur de durée de vie interactive (TTL interactif) entre les jobs qui ne peut pas être configurée. Si tu ne fermes pas explicitement un batch, il est désactivé à l'expiration du TTL interactif et peut être réactivé à tout moment jusqu'à ce qu'il atteigne son TTL maximum.

Pour des instructions sur la gestion de ces valeurs, consulte Exécuter des jobs dans un batch.

Temps d'exécution maximum d'une session

Lorsqu'une session est démarrée, une valeur de TTL maximum lui est attribuée, qui détermine la durée pendant laquelle une session peut s'exécuter. Une fois ce TTL atteint, la session est arrêtée, les jobs déjà en cours d'exécution continuent de s'exécuter, et les jobs en attente restant dans la session sont placés dans un état d'échec.

Il existe aussi une valeur de TTL interactif qui ne peut pas être configurée. Si aucun job de session n'est mis en attente dans cette fenêtre, la session est temporairement désactivée.

Pour des instructions sur la gestion de ces valeurs, consulte Exécuter des jobs dans une session.

Autres limitations

  • Les entrées des jobs ne peuvent pas dépasser 50 Mo.
  • Sur le plan Open, tu peux utiliser jusqu'à 10 minutes sur un QPU par fenêtre glissante de 28 jours. Tu peux consulter l'utilisation d'une instance sur la page Instances.

Prochaines étapes