Saltar al contenido principal
Este proyecto está en fase beta. ¿Encontraste un error? Abre un issue en GitHub. ¿Tienes una pregunta o una idea? Pregunta en Discussions — ¡nos encantaría tu opinión!
¿Cómo es la calidad de la traducción en esta página?

Elige el modo de ejecución adecuado

Las cargas de trabajo a escala de utilidad (utility-scale) pueden tardar muchas horas en completarse, por lo que es importante que tanto los recursos clásicos como los cuánticos se programen de manera eficiente para agilizar la ejecución. Los modos de ejecución proporcionan flexibilidad para equilibrar el costo y el tiempo y usar los recursos de manera óptima para tus cargas de trabajo. Hay varios aspectos a considerar al elegir qué modo de ejecución usar, como el tiempo general de ejecución (tiempo máximo de vida, o TTL) y el tiempo entre trabajos (TTL interactivo).

Los beneficios de cada uno se resumen a continuación:

  • Lote (Batch)

    • El lote completo de trabajos (jobs) se programa junto y no hay tiempo de espera (queuing) adicional para cada uno.

    • La computación clásica de los trabajos, como la compilación, se ejecuta en paralelo. Por lo tanto, ejecutar múltiples trabajos en un lote es significativamente más rápido que ejecutarlos en serie.

    • Usualmente hay un retraso mínimo entre trabajos, lo que puede ayudar a evitar la desviación (drift).

    • Si particionas tu carga de trabajo en múltiples trabajos y los ejecutas en batch mode, puedes obtener resultados de trabajos individuales, lo que los hace más flexibles para trabajar. Por ejemplo, si los resultados de un trabajo no cumplen con tus expectativas, puedes cancelar los trabajos restantes. Además, si un trabajo falla, puedes volver a enviarlo en lugar de volver a ejecutar toda la carga de trabajo.

    • En general, es menos costoso que las sesiones.

  • Sesión (Session)

    • Toda la funcionalidad de batch mode (pero requiriendo un mayor uso; consulta Uso de carga de trabajo para obtener más detalles sobre cómo se calcula el uso).

    • Acceso dedicado y exclusivo a la QPU durante la ventana activa de la sesión.

    • Útil para cargas de trabajo que no tienen todas las entradas listas desde el principio, para cargas de trabajo iterativas que requieren posprocesamiento clásico antes de que pueda ejecutarse la siguiente, y para experimentos que necesitan ejecutarse lo más cerca posible entre sí.

  • Trabajo (Job)

    • El más fácil de usar al ejecutar un experimento pequeño.

    • Podría ejecutarse antes que batch mode.

Recomendaciones y mejores prácticas​

Generalmente, usa batch mode a menos que tengas cargas de trabajo que no tengan todas las entradas listas desde el principio.

  • Usa el modo por lotes (batch) para enviar múltiples trabajos de primitivas simultáneamente para acortar el tiempo de procesamiento.

  • Usa el modo sesión (session) para cargas de trabajo iterativas, o si necesitas acceso dedicado a la QPU.

  • Siempre usa el modo trabajo (job) para enviar una sola solicitud de primitiva.

  • Debido a que las sesiones son generalmente más costosas, se recomienda que uses el modo por lotes siempre que no necesites los beneficios adicionales de usar sesiones.

  • Los usuarios del Plan Abierto (Open Plan) no pueden enviar trabajos de sesión.

Para asegurar el uso más eficiente de los modos de ejecución, se recomiendan las siguientes prácticas:

  • Hay una sobrecarga (overhead) fija asociada a la ejecución de un trabajo. En general, si cada uno de tus trabajos usa menos de un minuto de tiempo de QPU, considera combinar varios en un trabajo más grande (esto aplica a todos los modos de ejecución). "Tiempo de QPU" se refiere al tiempo que tarda el complejo de la QPU en procesar tu trabajo.

  • Si cada uno de tus trabajos consume más de un minuto de tiempo de QPU, o si combinar trabajos no es práctico, aún puedes ejecutar múltiples trabajos en paralelo. Cada trabajo pasa por procesamiento tanto clásico como cuántico. Mientras que una QPU solo puede procesar un trabajo a la vez, se pueden procesar hasta cinco trabajos clásicos en paralelo. Puedes aprovechar esto enviando múltiples trabajos en modo de ejecución por lotes o por sesión.

Las anteriores son pautas generales, y debes ajustar tu carga de trabajo para encontrar la proporción óptima, especialmente al usar sesiones. Por ejemplo, si estás usando una sesión para obtener acceso exclusivo a un backend, considera dividir los trabajos grandes en otros más pequeños y ejecutarlos en paralelo. Esto podría ser más rentable (cost-effective) ya que puede reducir el tiempo real (wall-clock time).

Ejemplos​

Ejecutar un algoritmo variacional cuántico​

La ejecución de un algoritmo variacional cuántico (quantum variational algorithm) típicamente sigue este flujo:

  1. Prepara el ansatz.

  2. Evalúa la función de costo en una QPU.

  3. Toma el resultado del paso anterior y ejecútalo a través de un optimizador clásico.

  4. Ajusta los parámetros según la salida de (3), luego vuelve al paso (2).

En este caso, si usaras job mode o batch mode, cada trabajo generado por el paso (2) tendría que volver a entrar a la cola. Esto incrementa drásticamente la duración del experimento (tiempo real) debido al tiempo en la cola. También podría tardar más en converger debido a la desviación (drift) del dispositivo. Es decir, se supone que cada iteración te dará un mejor resultado, pero la desviación del dispositivo podría empeorar los resultados posteriores.

Además, si utilizas PEA o PEC, puedes aprender el modelo de ruido una vez y aplicarlo a los trabajos posteriores cuando se ejecute en una sesión dedicada. Normalmente, esto no funciona con batch mode o job mode debido a que el modelo de ruido podría volverse obsoleto (stale) para cuando el siguiente trabajo salga de la cola de espera.

Comparar ajustes de mitigación de errores​

Para comparar los efectos de los métodos de mitigación de errores disponibles, podrías seguir este flujo:

  1. Construye un circuito y un observable.

  2. Envía trabajos de primitivas que utilicen diferentes combinaciones de ajustes de mitigación de errores.

  3. Grafica los resultados para observar los efectos de los distintos ajustes.

En este caso, todos los trabajos (que están relacionados pero son independientes) están disponibles desde el inicio. Si usas batch mode, se programan de manera colectiva, así que solo tienes que esperar a que pasen por la cola una sola vez. Adicionalmente, debido a que la meta es comparar los efectos de varios métodos de mitigación de errores, es beneficioso que se ejecuten lo más cerca posible entre sí. Por lo tanto, batch mode sería una buena elección. Podrías ejecutar estos trabajos en una sesión, pero debido a que las sesiones son generalmente más costosas, se recomienda que uses batch mode siempre que no necesites la funcionalidad adicional que proporcionan las sesiones.

Siguientes pasos​