Amazon Braket loader#
Introducción#
El Amazon Braket loader permite que un solver acceda al dispositivo de Braket seleccionado para un job de QCentroid sin hardcodear credenciales de AWS, regiones, ubicaciones S3 ni ARNs de dispositivos en el código fuente.
Usa este loader cuando tu solver construya circuitos o tareas con el SDK de Amazon Braket.
Import#
from QCentroidLoaders import BraketLoader
Obtener el dispositivo seleccionado#
Llama a BraketLoader.get_target() cuando tu solver esté listo para enviar la tarea:
device = BraketLoader.get_target()
En el runtime de la plataforma, este dispositivo se resuelve a partir del proveedor y backend seleccionados por el usuario al lanzar el job.
Cuando se ejecuta localmente sin inicialización de la plataforma, BraketLoader.get_target() devuelve el LocalSimulator de Amazon Braket.
Patrón de ejemplo#
from typing import Any
import logging
from braket.circuits import Circuit
from QCentroidLoaders import BraketLoader
logger = logging.getLogger("qcentroid-user-log")
logging.basicConfig()
logger.setLevel(logging.INFO)
def run(
input_data: dict[str, Any],
solver_params: dict[str, Any],
extra_arguments: dict[str, Any],
) -> dict[str, Any]:
logger.info("Creating Braket circuit...")
circuit = Circuit().h(0).cnot(0, 1)
device = BraketLoader.get_target()
logger.info(f"Using Braket device: {device}")
shots = solver_params.get("shots", 100)
logger.info("Sending task to Amazon Braket...")
task = device.run(circuit, shots=shots)
logger.info("Obtaining task result...")
result = task.result()
counts = dict(result.measurement_counts)
logger.info(f"Result from Braket device: {counts}")
return {
"status": "ok",
"provider": "amazon-braket",
"device": str(device),
"result": counts,
}
Ejecución en la plataforma#
Cuando este solver se ejecuta en QCentroid:
- El usuario selecciona el solver y el dispositivo de Amazon Braket en el dashboard o la API.
- La plataforma inyecta las credenciales de proveedor y la configuración de runtime necesarias.
BraketLoader.get_target()devuelve el dispositivo de Braket configurado.- El solver envía la tarea y devuelve el resultado a QCentroid.
Ejecución local#
Para desarrollo local, instala el paquete local de loaders desde el repositorio público de QCentroid Loaders cuando esté disponible:
pip install git+<loaders-repository-url>
Después configura tus credenciales de AWS y Braket como se describe en ese repositorio si quieres ejecutar localmente contra un dispositivo remoto de Braket. Si no inicializas el loader con un dispositivo remoto, el loader devuelve LocalSimulator.
Buenas prácticas#
- Mantén
shotsconfigurable mediantesolver_paramspara que los usuarios puedan controlar el coste de ejecución. - Prueba con un simulador local antes de enviar trabajos a simuladores gestionados o hardware cuántico.
- Evita registrar credenciales de AWS, rutas S3 que contengan información sensible o secretos de proveedor.