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.

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 le temps quantique, et non sur le temps réel. Le temps quantique correspond à la durée pendant laquelle le QPU est dédié au traitement de ton job.

Définis le temps d'exécution maximum (en secondes) dans les options du job, comme indiqué dans l'exemple suivant. Consulte Spécifier les options 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 le temps quantique utilisé par les jobs terminés en récupérant les métriques du job comme suit :

# Find quantum time used by the job
print(f"Quantum time used by 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.
  • Les utilisateurs du plan Open peuvent utiliser jusqu'à 10 minutes de temps quantique par fenêtre glissante de 28 jours. Le temps quantique correspond à la durée pendant laquelle le QPU est dédié au traitement de ton job. Tu peux consulter l'utilisation d'une instance sur la page Instances.

Prochaines étapes