Skip to main content
IBM Quantum Platform

Qiskit 0.6 Versionshinweise


0.6

Terra- 0.6

Schwerpunkte

Diese Version beinhaltet eine Neugestaltung der internen Komponenten, die sich auf ein neues, formales Kommunikationsformat (Qobj) konzentrieren, sowie lang erwartete Funktionen zur Verbesserung der Benutzerfreundlichkeit als Ganzes. Die Höhepunkte im Vergleich zur Version 0.5 sind:

  • Verbesserungen der Interoperabilität (basierend auf der Qobj-Spezifikation) und der Erweiterbarkeit (Möglichkeiten zur nahtlosen Erweiterung von Qiskit mit neuen Backends)
  • Neue Optionen für die Handhabung von Anmeldeinformationen und Authentifizierung für die IBM Q-Backends, um den Prozess zu vereinfachen und das automatische Laden von Benutzeranmeldeinformationen zu unterstützen
  • Eine Überarbeitung der Visualisierungswerkzeuge: elegante interaktive Visualisierungen sind jetzt für Jupyter-Benutzer verfügbar, zusammen mit Verfeinerungen für die Schaltkreisschublade (einschließlich einer matplotlib-basierten Version)
  • Leistungsverbesserungen im Bereich der Schaltkreistranspilierung: Die Grundlagen für eine flexiblere und modularere Architektur wurden geschaffen, einschließlich Parallelisierung der Schaltkreiskompilierung und zahlreicher Optimierungen

Hinweise zur Kompatibilität

Bitte beachten Sie, dass mit dieser Version einige abwärtskompatible Änderungen eingeführt wurden - die folgenden Hinweise enthalten Informationen darüber, wie Sie sich an die neuen Änderungen anpassen können.

Entfernung von QuantumProgram

Wie bereits bei der Veröffentlichung von 0.5 angedeutet, ist die Abschaffung der Klasse QuantumProgram nun abgeschlossen und steht nicht mehr zur Verfügung, zugunsten der Arbeit mit den einzelnen Komponenten (BaseJob, QuantumCircuit, ClassicalRegister, QuantumRegister, qiskit) direkt zu arbeiten.

Einzelheiten zur Umstellung finden Sie in den Versionshinweisen von 0.5 und in den Beispielen:

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 Authentifizierung und Qconfig.py

Die Verwaltung von Anmeldeinformationen für die Authentifizierung bei der Verwendung der IBM Q-Backends wurde erweitert, und es gibt neue Optionen, die zur Vereinfachung verwendet werden können:

  1. ihre Anmeldedaten einmalig auf der Festplatte speichern und sie bei zukünftigen Sitzungen automatisch laden. Es handelt sich um einen einmaligen Mechanismus:

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

    danach können Ihre Anmeldedaten automatisch von der Festplatte geladen werden, indem Sie load_accounts() aufrufen:

    from qiskit import IBMQ
    IBMQ.load_accounts()

    oder Sie können nur bestimmte Konten laden, wenn Sie nur diese in einer Sitzung verwenden möchten:

    IBMQ.load_accounts(project='MY_PROJECT')
  2. umgebungsvariablen verwenden. Wenn QE_TOKEN und QE_URL eingestellt sind, lädt der Aufruf von IBMQ.load_accounts() automatisch die Anmeldeinformationen aus diesen Dateien.

Außerdem wird die frühere Methode, eine Qconfig.py Datei im Programmordner zu haben und die Anmeldeinformationen explizit zu übergeben, weiterhin unterstützt.

Arbeiten mit Backends

In Terra 0.6 wurde ein neuer Mechanismus für den Erhalt eines Backends eingeführt, der eine leistungsfähigere und einheitliche Filterung ermöglicht und in das neue Berechtigungsnachweissystem integriert ist. Die bisherigen Top-Level-Methoden register(), available_backends() und get_backend() werden weiterhin unterstützt, werden aber in kommenden Versionen zugunsten der direkten Verwendung der Objekte qiskit.IBMQ und qiskit.Aer veraltet sein, die eine komplexere Filterung ermöglichen.

Zum Beispiel, um ein lokales Backend aufzulisten und zu verwenden:

from qiskit import Aer

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

Und für die Auflistung und Nutzung entfernter Backends:

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')

Bitte beachten Sie auch, dass die Namen der lokalen Simulatoren vereinfacht wurden. Die bisherigen Namen können weiterhin verwendet werden, aber es wird empfohlen, die neuen, kürzeren Namen zu verwenden:

Qiskit Terra 0.5
Qiskit Terra 0.6
'local_qasm_simulator''qasm_simulator'
'local_statevector_simulator''zustandsvektor_simulator'
'local_unitary_simulator_py''unitary_simulator'
Änderungen am Backend und an der Job-API
  • Aufträge, die an IBM Q Backends übermittelt werden, verfügen über verbesserte Funktionen. Es ist möglich, sie zu stornieren und Guthaben aufzufüllen (job.cancel()), und frühere Aufträge, die auf einem bestimmten Backend ausgeführt wurden, entweder nach Auftragsnummer (backend.retrieve_job(job_id)) oder im Stapel der letzten Aufträge (backend.jobs(limit)) abzurufen

  • Eigenschaften zur Überprüfung der einzelnen Auftragsstatus (queued, running, validating, done und cancelled) existieren nicht mehr. Wenn Sie den Auftragsstatus überprüfen wollen, verwenden Sie den Identitätsvergleich gegen job.status:

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

Bitte konsultieren Sie die neue Dokumentation der Klasse IBMQJob , um weitere Informationen über die Verwendung der vereinfachten API zu erhalten.

  • Eine Reihe von Mitgliedern von BaseBackend und BaseJob sind keine Eigenschaften mehr, sondern Methoden, und müssen daher als Funktionen aufgerufen werden.

    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
Bessere Jupyter-Tools

Die neue Version enthält Verbesserungen für die Benutzererfahrung bei der Verwendung von Jupyter-Notebooks.

Zunächst werden neue interaktive Visualisierungen von Zählungshistogrammen und Quantenzuständen bereitgestellt: plot_histogram() und plot_state(). Diese Methoden werden standardmäßig die neue interaktive Art verwenden, wenn die Umgebung Jupyter ist und eine Internetverbindung besteht.

Zweitens bietet die neue Version Jupyter Cell Magics, um den Fortschritt Ihres Codes zu verfolgen. Verwenden Sie %%qiskit_job_status , um den Status der an IBM Q Backends übermittelten Aufträge zu verfolgen. Verwenden Sie %%qiskit_progress_bar , um den Fortschritt der Kompilierung/Ausführung zu verfolgen.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.