Migrar de Qiskit Pulse a puertas fraccionarias
Con la introducción de las puertas fraccionarias, el control a nivel de pulso en todos los procesadores IBM Quantum® ha quedado obsoleto y se eliminará a principios de 2025. Además, el módulo qiskit.pulse ha quedado obsoleto a partir de Qiskit SDK v1.3.0 y se eliminará en Qiskit SDK v2.0.0. Este cambio estuvo motivado por nuestro enfoque continuo en experimentos a escala de utilidad y el soporte a usuarios que exploran aplicaciones que podrían conducir a la ventaja cuántica.
Ejecutar rotaciones de uno y dos qubits directamente con puertas fraccionarias
El caso de uso más común del control a nivel de pulso era construir schedules de pulso personalizados que modificaran los pulsos ECR o RX para ejecutar directamente rotaciones de uno y dos qubits. El proceso habitual era usar RXCalibrationBuilder y RZXCalibrationBuilder (o RZXCalibrationBuilderNoEcho) y añadir una instrucción RXGate o RZXGate al target de una QPU; luego construir una pipeline de transpilación que contuviera los pases del calibration builder para calibrar las rotaciones de uno y dos qubits para un ángulo especificado. En segundo plano, esto creaba una calibración, que es un mapa entre un ScheduleBlock y una puerta en un QuantumCircuit.
Ahora puedes lograr esto en los procesadores Heron usando el nuevo indicador use_fractional_gates. Como se especifica en la guía de puertas fraccionarias, tanto como deben cargarse usando este indicador, que devuelve un backend cuyo atributo Target contiene información sobre estas puertas.
service = QiskitRuntimeService()
backend = service.backend('ibm_torino', use_fractional_gates=True)
Usar Qiskit Dynamics
El módulo qiskit.pulse contenía mucha más funcionalidad que simplemente ejecutar rotaciones de uno y dos qubits de forma más eficiente. Gran parte del control sobre la física del dispositivo puede modelarse usando el paquete Qiskit Dynamics que se encuentra en el ecosistema de Qiskit. En particular, el paquete tiene su propia representación análoga de muchas de las funcionalidades proporcionadas por qiskit.pulse en forma de un módulo qiskit_dynamics.signals. La documentación de este paquete contiene algunos tutoriales que pueden ser de utilidad: