Migrar configuración desde qiskit-ibmq-provider
¶
Esta guía describe cómo migrar el código del paquete del proveedor IBMQ anterior (qiskit-ibmq-provider) para utilizar Qiskit Runtime (qiskit-ibm-runtime). Esta guía incluye instrucciones para migrar programas de runtime anteriores a la nueva sintaxis. Sin embargo, la capacidad de usar programas cargados personalizados está pendiente de obsoletización, por lo que estos deben migrarse para usar primitivas en su lugar.
Cambios en el nombre de Clase y en la ubicación¶
Las clases relacionadas con Qiskit Runtime que solían estar incluidas en qiskit-ibmq-provider
ahora forman parte de qiskit-ibm-runtime
. Antes, el proveedor solía llenar el espacio de nombres (namespace) qiskit.providers.ibmq.runtime
con objetos para Qiskit Runtime. Estos ahora viven en el módulo qiskit_ibm_runtime
.
El módulo desde el que se importan las clases ha cambiado. La siguiente tabla contiene patrones de acceso de ejemplo en qiskit.providers.ibmq.runtime
y su nueva forma en qiskit_ibm_runtime
:
clase en |
clase en |
Notas |
---|---|---|
|
|
La clase |
|
|
|
|
|
|
|
|
Observa la nueva ubicación, en |
|
|
Observa la nueva ubicación, en |
|
|
Observa la nueva ubicación, en |
|
|
|
|
|
|
|
|
|
|
|
Ruta de importación¶
La ruta de importación ha cambiado de la siguiente manera:
Anterior
from qiskit import IBMQ
Actualizado
from qiskit_ibm_runtime import QiskitRuntimeService
Guardar y cargar cuentas¶
Utiliza el código actualizado para trabajar con cuentas.
Anterior - Guardar cuentas
IBMQ.save_account("<IQX_TOKEN>", overwrite=True)
Actualizado - Guardar cuentas La nueva sintaxis acepta credenciales para Qiskit Runtime en IBM Cloud o IBM Quantum Platform. Para obtener más información sobre cómo recuperar las credenciales de la cuenta, consulta la guía de primeros pasos.
# IBM cloud channel
QiskitRuntimeService.save_account(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>", overwrite=True)
# IBM quantum channel
QiskitRuntimeService.save_account(channel="ibm_quantum", token="<IQP_TOKEN>", overwrite=True)
Actualizado - nombrar las credenciales guardadas Ahora puedes nombrar tus credenciales guardadas y cargarlas por nombre.
Ejemplo:
# Save different accounts for open and premium access
QiskitRuntimeService.save_account(channel="ibm_quantum", token="<IQX_TOKEN>", instance="h1/g1/p1", name="premium")
QiskitRuntimeService.save_account(channel="ibm_quantum", token="<IQX_TOKEN>", instance="h2/g2/p2", name="open")
# Load the "open" credentials
service = QiskitRuntimeService(name="open")
Anterior - Cargar cuentas
IBMQ.load_account()
Actualizado - Cargar cuentas
La nueva sintaxis combina la funcionalidad de load_account()
y get_provider()
en una sentencia. El parámetro de entrada channel
es opcional. Si se han guardado varias cuentas en un dispositivo y no se proporciona ningún channel
, el valor predeterminado es "ibm_cloud"
.
# To access saved credentials for the IBM cloud channel
service = QiskitRuntimeService(channel="ibm_cloud")
# To access saved credentials for the IBM quantum channel
service = QiskitRuntimeService(channel="ibm_quantum")
Selección de canales (obtener un proveedor)¶
Usa el código actualizado para seleccionar un canal.
Anterior
provider = IBMQ.get_provider(project="my_project", group="my_group", hub="my_hub")
Actualizado
La nueva sintaxis combina la funcionalidad de load_account()
y get_provider()
en una sentencia. Cuando se utiliza el canal ibm_quantum
, el hub
, group
, y project
se especifican a través de la nueva palabra clave instance
.
# To access saved credentials for the IBM cloud channel
service = QiskitRuntimeService(channel="ibm_cloud")
# To access saved credentials for the IBM quantum channel and select an instance
service = QiskitRuntimeService(channel="ibm_quantum", instance="my_hub/my_group/my_project")
Obtener el backend¶
Usa el código actualizado para ver los backends.
Anterior
provider = IBMQ.get_provider(hub="h1", group="g1", project="p1")
backend = provider.get_backend("ibm_backend")
Actualizado
# You can specify the instance in service.backend() instead of initializing a new service
backend = service.backend("ibm_backend", instance="h1/g1/p1")