Skip to main content
IBM Quantum Platform

Notes de publication de Qiskit 0.6


0.6

Terra 0.6

Mises en évidence

Cette version comprend une refonte des composants internes centrée sur un nouveau format de communication formel (Qobj), ainsi que des fonctionnalités attendues depuis longtemps pour améliorer l'expérience de l'utilisateur dans son ensemble. Les points forts, par rapport à la version 0.5, sont les suivants :

  • Amélioration de l'interopérabilité (basée sur la spécification Qobj) et de l'extensibilité (facilités pour étendre Qiskit avec de nouveaux backends de manière transparente)
  • Nouvelles options de gestion des informations d'identification et d'authentification pour les backends de IBM Q, visant à simplifier le processus et à prendre en charge le chargement automatique des informations d'identification des utilisateurs
  • Une refonte des utilitaires de visualisation : des visualisations interactives élégantes sont désormais disponibles pour les utilisateurs de Jupyter, ainsi que des améliorations pour le dessinateur de circuits (y compris une version basée sur matplotlib)
  • Amélioration des performances autour de la transpilation des circuits : les bases d'une architecture plus flexible et modulaire ont été posées, y compris la parallélisation de la compilation des circuits et de nombreuses optimisations

Compatibility Considerations

Veuillez noter que certaines modifications incompatibles avec le passé ont été introduites dans cette version. Les notes suivantes contiennent des informations sur la manière de s'adapter à ces nouvelles modifications.

Suppression de QuantumProgram

Comme indiqué lors de la publication de 0.5, la dépréciation de la classe QuantumProgram est maintenant terminée et n'est plus disponible, en faveur d'un travail avec les composants individuels (BaseJob, QuantumCircuit, ClassicalRegister, QuantumRegister, qiskit) directement.

Veuillez consulter les notes de mise à jour de 0.5 et les exemples pour plus de détails sur la transition :

from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import Aer, execute

q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)

qc.h(q[0])
qc.cx(q[0], q[1])
qc.measure(q, c)

backend = get_backend('qasm_simulator')

job_sim = execute(qc, backend)
sim_result = job_sim.result()

print("simulation: ", sim_result)
print(sim_result.get_counts(qc))
IBM Q Authentification et Qconfig.py

La gestion des informations d'identification pour l'authentification lors de l'utilisation des backends de IBM Q a été élargie, et de nouvelles options peuvent être utilisées pour plus de commodité :

  1. enregistrer une fois vos informations d'identification sur le disque et les charger automatiquement lors de sessions ultérieures. Il s'agit d'un mécanisme unique :

    from qiskit import IBMQ
    IBMQ.save_account('MY_API_TOKEN', 'MY_API_URL')

    ensuite, vos informations d'identification peuvent être automatiquement chargées à partir du disque en invoquant load_accounts():

    from qiskit import IBMQ
    IBMQ.load_accounts()

    ou vous pouvez charger uniquement des comptes spécifiques si vous ne voulez utiliser que ceux-là dans une session :

    IBMQ.load_accounts(project='MY_PROJECT')
  2. utiliser des variables d'environnement. Si QE_TOKEN et QE_URL sont définis, l'appel IBMQ.load_accounts() chargera automatiquement les informations d'identification à partir de ceux-ci.

En outre, la méthode précédente, qui consistait à placer un fichier Qconfig.py dans le dossier du programme et à transmettre les informations d'identification de manière explicite, est toujours prise en charge.

Travailler avec les backends

Un nouveau mécanisme a été introduit dans Terra 0.6 comme moyen recommandé pour obtenir un backend, permettant un filtrage plus puissant et unifié et intégré au nouveau système d'accréditation. Les anciennes méthodes de niveau supérieur register(), available_backends() et get_backend() sont toujours prises en charge, mais elles seront abandonnées dans les prochaines versions au profit de l'utilisation directe des objets qiskit.IBMQ et qiskit.Aer, qui permettent un filtrage plus complexe.

Par exemple, pour répertorier et utiliser un backend local :

from qiskit import Aer

all_local_backends = Aer.backends(local=True)  # returns a list of instances
qasm_simulator = Aer.backends('qasm_simulator')

Et pour lister et utiliser des backends distants :

from qiskit import IBMQ

IBMQ.enable_account('MY_API_TOKEN')
5_qubit_devices = IBMQ.backends(simulator=True, n_qubits=5)
ibmqx4 = IBMQ.get_backend('ibmqx4')

Veuillez également noter que les noms des simulateurs locaux ont été simplifiés. Les anciens noms peuvent encore être utilisés, mais il est encouragé d'utiliser les nouveaux noms, plus courts :

Qiskit Terra 0.5
Qiskit Terra 0.6
simulateur local" (local_qasm\simulator)qasm_simulateur'
simulateur d'état localsimulateur de vecteur d'état
local_unitary_simulator_pysimulateur_unitaire
Modifications apportées au backend et à l'API Job
  • Les travaux soumis aux backends de IBM Q ont des capacités améliorées. Il est possible de les annuler et de reconstituer les crédits (job.cancel()), et de récupérer les travaux précédents exécutés sur un backend spécifique, soit par l'identifiant du travail (backend.retrieve_job(job_id)), soit par le lot des derniers travaux (backend.jobs(limit))

  • Les propriétés permettant de vérifier l'état de chaque emploi (queued, running, validating, done et cancelled) n'existent plus. Si vous souhaitez vérifier l'état d'un travail, utilisez la comparaison d'identité avec job.status:

    from qiskit.backends import JobStatus
    
    job = execute(circuit, backend)
    if job.status() is JobStatus.RUNNING:
        handle_job(job)

Veuillez consulter la nouvelle documentation de la classe IBMQJob pour en savoir plus sur l'utilisation de l'API simplifiée.

  • Un certain nombre de membres de BaseBackend et BaseJob ne sont plus des propriétés, mais des méthodes, et doivent donc être invoqués en tant que fonctions.

    Qiskit Terra 0.5
    Qiskit Terra 0.6
    backend.namebackend.name()
    backend.statusbackend.status()
    backend.configurationbackend.configuration()
    backend.calibrationbackend.properties()
    backend.parametersbackend.jobs () backend.retrieve_job (job_id)
    job.statusjob.status()
    job.cancelledjob.queue_position()
    job.runningjob.cancel()
    job.queued
    job.done
De meilleurs outils Jupyter

La nouvelle version contient des améliorations de l'expérience utilisateur lors de l'utilisation des carnets Jupyter.

Tout d'abord, de nouvelles visualisations interactives des histogrammes de comptage et des états quantiques sont fournies : plot_histogram() et plot_state(). Ces méthodes utiliseront par défaut le nouveau type de visualisation interactive lorsque l'environnement est Jupyter et qu'une connexion internet existe.

Deuxièmement, la nouvelle version propose des cellules Jupyter magiques pour suivre l'évolution de votre code. Utilisez %%qiskit_job_status pour suivre l'état des travaux soumis aux backends IBM Q. Utilisez %%qiskit_progress_bar pour suivre la progression de la compilation/exécution.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.