Saltar al contenido principal

Inicializa tu cuenta del servicio Qiskit Runtime

Antes de usar Qiskit Runtime, debes inicializar (instanciar) tu cuenta enviando (cargando) las credenciales. Estas credenciales pueden enviarse manualmente cada vez que inicialices el servicio Qiskit Runtime, o puedes guardarlas para reutilizarlas.

Notas

Antes de comenzar

Asegúrate de haber completado estos pasos:

  1. Verifica que seas miembro de una cuenta de IBM Cloud. Consulta Configura tu cuenta de IBM Cloud para obtener instrucciones.
  2. Crea (o ten acceso a) al menos una instancia. Sigue estos pasos para verificarlo:
    1. Inicia sesión en IBM Quantum Platform.
    2. Asegúrate de que la cuenta y la región correctas estén seleccionadas en el selector de cuenta del encabezado.
    3. Si tienes una o más instancias mostradas, este paso está completo. De lo contrario, crea una instancia.
  3. Asegúrate de estar trabajando en un entorno Python activo con el Qiskit SDK y Qiskit Runtime instalados.
  4. Activa el entorno virtual de Python y ejecuta Python en tu entorno virtual.

Encuentra tus credenciales de acceso

  1. Encuentra tu clave de API (también conocida como token de API). Desde el panel de control, crea tu clave de API, luego cópiala en un lugar seguro para poder usarla en la autenticación. El token no será visible nuevamente. Ten en cuenta que puedes usar una sola clave de API para conectarte a cualquier región.
  2. Opcional: Encuentra la instancia que quieres usar desde la página de Instancias. Pasa el cursor sobre su CRN, haz clic en el icono para copiarlo y guárdalo en un lugar seguro para poder usarlo e identificar la instancia.

Conecta Qiskit con tu instancia del servicio Qiskit Runtime

nota

Estas instrucciones están diseñadas para qiskit_ibm_runtime v0.42 o posterior. Algunas funciones no están habilitadas en versiones anteriores de qiskit_ibm_runtime. En esos casos, siempre debes proporcionar un valor para channel, token e instance, ya sea explícitamente o mediante una cuenta guardada.

A continuación se muestra el código básico para conectar Qiskit con tu instancia del servicio Qiskit Runtime. Sin embargo, hay varias formas de personalizar las opciones de QiskitRuntimeService según tus necesidades. Estas opciones se describen en las secciones siguientes.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(channel=<channel>,
token=<your-API_KEY>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
nota

El canal predeterminado es ibm_quantum_platform. Como este es casi siempre el canal adecuado, no se incluye en los ejemplos.

Camino rápido: especifica las credenciales explícitamente

La forma más rápida de poner en marcha una instancia de QiskitRuntimeService es el método de instanciación directa: proporcionar explícitamente el token de API (clave) y el CRN (identificador de instancia) cada vez que necesites inicializar el servicio Qiskit Runtime. Consulta Encuentra tus credenciales de acceso si es necesario.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(token=<cloud_api_key>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)

Este camino es confiable, pero puede ser tedioso si necesitas cargar los mismos datos repetidamente. Para evitar cargar tus credenciales múltiples veces, si estás trabajando en un entorno Python de confianza (como en un portátil personal o una estación de trabajo), puedes usar credenciales de cuenta guardadas, como se describe en la sección siguiente.

Aunque el parámetro de entrada instance es opcional, se recomienda que siempre proporciones esta información, a menos que quieras usar un único servicio para trabajar con varias instancias. En ese caso, consulta la sección de selección automática de instancia.

Camino rápido: especifica las credenciales guardadas

Si ya guardaste tus credenciales, usa el siguiente código para aplicar tus credenciales predeterminadas. Para obtener instrucciones sobre cómo guardar credenciales, consulta Guarda tus credenciales de acceso.

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService()
...

Si nombraste uno o más conjuntos de credenciales —por ejemplo, para acceso abierto y premium— usa el siguiente código para usar un conjunto de credenciales con nombre.

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...

Consideraciones al cargar credenciales guardadas

  • Si inicializas un servicio con token y name, el token se ignora y se cargan los detalles guardados de la cuenta name.

    En el siguiente ejemplo, el servicio carga los detalles de account_A y no usa token_B:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(token="token_B", name="account_A")
  • Si proporcionas un name y un instance al inicializar un servicio, el servicio intenta cargar la cuenta name y conectarse a la instance especificada. Si hay algún conflicto, se emite una advertencia.

    En el siguiente ejemplo, el servicio intenta cargar las credenciales de account_A y usar la instancia CRN_B, incluso si se especifica una instancia diferente en account_A:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B", name="account_A")
  • El servicio intenta cargar la cuenta guardada predeterminada solo si no proporcionas un token o name al inicializar el servicio. Sin embargo, si se proporciona un instance explícitamente, el servicio intenta conectarse a esa instancia usando las credenciales predeterminadas. Si hay algún conflicto, se emite una advertencia.

    En el siguiente ejemplo, el servicio intenta cargar las credenciales predeterminadas y usar la instancia CRN_B, incluso si se especifica una instancia diferente en la cuenta predeterminada:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B")
  • Si guardas múltiples conjuntos de credenciales pero no especificas ninguno al inicializar el servicio y no hay ninguna cuenta guardada predeterminada, se usa la que tenga el nombre que aparezca último alfabéticamente.

    En el siguiente ejemplo, el usuario guardó cuentas llamadas "my_premium" y "my_open" pero no marcó ninguna como predeterminada. Luego inicializó el servicio con el siguiente código. En este caso, se usan las credenciales de "my_premium":

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService()
  • Si sigues obteniendo el error "401 Unauthorized" de forma persistente, es posible que estés intentando usar un token bearer en lugar de tu clave de API.

Seleccionar la instancia automáticamente

Si proporcionas un token pero no proporcionas un CRN de instancia al instanciar el servicio, QiskitRuntimeService se autentica en la cuenta identificada por el token y usa la selección automática de instancia para elegir la instancia más relevante para la tarea solicitada. Si tienes varias instancias disponibles en tu cuenta, el servicio elige automáticamente entre las instancias disponibles, dependiendo del recurso solicitado y estas opciones de QiskitRuntimeService (si están configuradas): plans_preference, region, tags.

  • plans_preference: Los tipos de planes de instancia que se deben priorizar. Por ejemplo, si se pasa [open], solo están disponibles las instancias del Plan Abierto. Los valores aceptados son open, premium, pay-as-you-go, flex y on-prem. Si no se especifica plans_preference, los planes gratuitos tienen prioridad sobre los de pago.
  • region: La región de la instancia. Los valores aceptados son us-east y eu-de.
  • tags: Las etiquetas de la instancia. Acepta una lista de cadenas con nombres de etiquetas.
nota

Puedes configurar tus credenciales guardadas para seleccionar una instancia automáticamente.

La instancia se encuentra y se usa en este orden:

  1. Si tu cuenta solo tiene acceso a una instancia, se selecciona de forma predeterminada.
  2. Si se están usando credenciales guardadas y se especificó una instancia con las credenciales, se usa esa instancia. Consulta Consideraciones al cargar credenciales guardadas.
  3. Si tu cuenta tiene múltiples instancias que pueden acceder al QPU solicitado, el sistema usa tus preferencias de plan especificadas para elegir un plan e instancia. Para Qiskit Runtime v0.42 y versiones posteriores, los planes gratuitos tienen prioridad de forma predeterminada.
  4. Si tu cuenta tiene acceso a múltiples instancias pero solo una puede acceder al QPU solicitado, se selecciona la instancia con acceso. Si esta instancia no está asociada a un plan gratuito, se incurrirá en un costo.

Ejemplos

En este ejemplo, el servicio busca todas las instancias disponibles para la cuenta para encontrar las que pueden acceder al Backend especificado:

service = QiskitRuntimeService(token=<your-API_KEY>)

En este ejemplo, el servicio busca todas las instancias disponibles para la cuenta en la región de la UE para encontrar las que pueden acceder al Backend especificado:

service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")

En este ejemplo, el servicio busca todas las instancias disponibles para la cuenta que están etiquetadas como services para encontrar las que pueden acceder al Backend especificado:

service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])

En este ejemplo, el servicio busca todas las instancias premium y abiertas disponibles para la cuenta para encontrar las que pueden acceder al Backend especificado. Si un Backend está en una instancia del Plan Premium y también en una del Plan Abierto, la instancia del Plan Premium tiene prioridad porque premium se especifica primero en plans_preference.

service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])

Determinar qué instancia fue seleccionada

La instancia seleccionada se devuelve como una advertencia. Además, puedes ejecutar service.active_instance() para determinar la instancia activa.

Pruebas locales con Qiskit Runtime

La clase QiskitRuntimeService puede inicializarse con channel=local para realizar simulaciones locales. En este caso, no se requiere autenticación y no es necesario proporcionar valores para token o instance. Por lo tanto, no se recomienda guardar una cuenta local. En su lugar, puedes hacer una instanciación directa:

from qiskit_ibm_runtime import QiskitRuntimeService

# Initialize for local testing

service = QiskitRuntimeService(channel="local")

Pasos siguientes