Skip to main content
IBM Quantum Platform

Note di rilascio di Qiskit 0.6


0.6

Terra 0.6

Evidenziazioni

Questa versione include una riprogettazione dei componenti interni incentrata su un nuovo formato di comunicazione formale (Qobj), oltre a funzionalità attese da tempo per migliorare l'esperienza utente nel suo complesso. I punti salienti, rispetto alla release 0.5, sono i seguenti:

  • Miglioramenti per l'interoperabilità (basati sulle specifiche Qobj) e l'estensibilità (strutture per estendere Qiskit con nuovi backend in modo continuo)
  • Nuove opzioni per la gestione delle credenziali e dell'autenticazione per i backend di IBM Q, volte a semplificare il processo e a supportare il caricamento automatico delle credenziali degli utenti
  • Un rinnovamento delle utility di visualizzazione: eleganti visualizzazioni interattive sono ora disponibili per gli utenti di Jupyter, insieme a miglioramenti per il cassetto dei circuiti (inclusa una versione basata su matplotlib)
  • Miglioramenti delle prestazioni incentrati sulla transpilazione dei circuiti: sono state poste le basi per un'architettura più flessibile e modulare, che comprende la parallelizzazione della compilazione dei circuiti e numerose ottimizzazioni

Considerazioni sulla compatibilità

Si noti che in questa versione sono state introdotte alcune modifiche incompatibili con le versioni precedenti; le note seguenti contengono informazioni su come adattarsi alle nuove modifiche.

Rimozione di QuantumProgram

Come accennato durante il rilascio di 0.5, la deprecazione della classe QuantumProgram è stata completata e non è più disponibile, in favore del lavoro con i singoli componenti (BaseJob, QuantumCircuit, ClassicalRegister, QuantumRegister, qiskit) direttamente.

Per maggiori dettagli sulla transizione, consultare le note di rilascio di 0.5 e gli esempi:

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 Autenticazione e Qconfig.py

La gestione delle credenziali per l'autenticazione quando si utilizzano i backend di IBM Q è stata ampliata e ci sono nuove opzioni che possono essere utilizzate per comodità:

  1. salvare le credenziali su disco una volta e caricarle automaticamente nelle sessioni future. Si tratta di un meccanismo una tantum:

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

    in seguito, le credenziali possono essere caricate automaticamente dal disco invocando load_accounts():

    from qiskit import IBMQ
    IBMQ.load_accounts()

    oppure si possono caricare solo conti specifici, se si desidera utilizzare solo quelli in una sessione:

    IBMQ.load_accounts(project='MY_PROJECT')
  2. utilizzare le variabili d'ambiente. Se QE_TOKEN e QE_URL sono impostati, la chiamata IBMQ.load_accounts() caricherà automaticamente le credenziali da essi.

Inoltre, il metodo precedente di avere un file Qconfig.py nella cartella del programma e di passare le credenziali in modo esplicito è ancora supportato.

Lavorare con i backend

In Terra 0.6 è stato introdotto un nuovo meccanismo come modalità consigliata per ottenere un backend, che consente un filtraggio più potente e unificato ed è integrato con il nuovo sistema di credenziali. I precedenti metodi di primo livello register(), available_backends() e get_backend() sono ancora supportati, ma saranno deprecati nelle prossime versioni a favore dell'uso diretto degli oggetti qiskit.IBMQ e qiskit.Aer, che consentono un filtraggio più complesso.

Ad esempio, per elencare e utilizzare un backend locale:

from qiskit import Aer

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

E per elencare e utilizzare i backend remoti:

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

Si noti inoltre che i nomi dei simulatori locali sono stati semplificati. I nomi precedenti possono ancora essere utilizzati, ma si consiglia di usare i nuovi nomi più brevi:

Qiskit Terra 0.5
Qiskit Terra 0.6
'locale_qasm_simulatore''qasm_simulatore'
'simulatore_di_stato_locale''simulatore di vettore di stato'
'locale_unitario_simulatore_py''simulatore unitario'
Modifiche al backend e all'API dei lavori
  • I lavori inviati ai backend di IBM Q hanno funzionalità migliorate. È possibile cancellarli e ricostituire i crediti (job.cancel()), e recuperare i lavori precedenti eseguiti su un backend specifico, sia in base all'id del lavoro (backend.retrieve_job(job_id)) sia in batch di lavori più recenti (backend.jobs(limit))

  • Le proprietà per controllare lo stato di ogni singolo lavoro (queued, running, validating, done e cancelled) non esistono più. Se si desidera verificare lo stato del lavoro, utilizzare il confronto di identità con job.status:

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

Per ulteriori informazioni sull'uso dell'API semplificata, consultare la nuova documentazione della classe IBMQJob .

  • Alcuni membri di BaseBackend e BaseJob non sono più proprietà, ma metodi e di conseguenza devono essere invocati come funzioni.

    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
Strumenti Jupyter migliori

La nuova versione contiene miglioramenti all'esperienza d'uso dei notebook Jupyter.

In primo luogo, vengono fornite nuove visualizzazioni interattive degli istogrammi dei conteggi e degli stati quantici: plot_histogram() e plot_state(). Questi metodi saranno impostati di default sul nuovo tipo interattivo quando l'ambiente è Jupyter e c'è una connessione a Internet.

In secondo luogo, la nuova versione fornisce la magia delle celle Jupyter per tenere traccia dei progressi del codice. Utilizzare %%qiskit_job_status per tenere traccia dello stato dei lavori inviati ai backend IBM Q. Utilizzare %%qiskit_progress_bar per tenere traccia dell'avanzamento della compilazione/esecuzione.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.