Ejemplo: Enviar una tarea cuántica a una QPU - Amazon Braket

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo: Enviar una tarea cuántica a una QPU

Amazon Braket permite ejecutar un circuito cuántico en un dispositivo QPU. El siguiente ejemplo muestra cómo enviar una tarea cuántica a los dispositivos Rigetti o IonQ.

Elija el dispositivo Rigetti Ankaa-3 y, a continuación, mire el gráfico de conectividad asociado.

# import the QPU module from braket.aws import AwsDevice # choose the Rigetti device device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3") # take a look at the device connectivity graph device.properties.dict()['paradigm']['connectivity']
{'fullyConnected': False, 'connectivityGraph': {'0': ['1', '7'], '1': ['0', '2', '8'], '2': ['1', '3', '9'], '3': ['2', '4', '10'], '4': ['3', '5', '11'], '5': ['4', '6', '12'], '6': ['5', '13'], '7': ['0', '8', '14'], '8': ['1', '7', '9', '15'], '9': ['2', '8', '10', '16'], '10': ['3', '9', '11', '17'], '11': ['4', '10', '12', '18'], '12': ['5', '11', '13', '19'], '13': ['6', '12', '20'], '14': ['7', '15', '21'], '15': ['8', '14', '22'], '16': ['9', '17', '23'], '17': ['10', '16', '18', '24'], '18': ['11', '17', '19', '25'], '19': ['12', '18', '20', '26'], '20': ['13', '19', '27'], '21': ['14', '22', '28'], '22': ['15', '21', '23', '29'], '23': ['16', '22', '24', '30'], '24': ['17', '23', '25', '31'], '25': ['18', '24', '26', '32'], '26': ['19', '25', '33'], '27': ['20', '34'], '28': ['21', '29', '35'], '29': ['22', '28', '30', '36'], '30': ['23', '29', '31', '37'], '31': ['24', '30', '32', '38'], '32': ['25', '31', '33', '39'], '33': ['26', '32', '34', '40'], '34': ['27', '33', '41'], '35': ['28', '36', '42'], '36': ['29', '35', '37', '43'], '37': ['30', '36', '38', '44'], '38': ['31', '37', '39', '45'], '39': ['32', '38', '40', '46'], '40': ['33', '39', '41', '47'], '41': ['34', '40', '48'], '42': ['35', '43', '49'], '43': ['36', '42', '44', '50'], '44': ['37', '43', '45', '51'], '45': ['38', '44', '46', '52'], '46': ['39', '45', '47', '53'], '47': ['40', '46', '48', '54'], '48': ['41', '47', '55'], '49': ['42', '56'], '50': ['43', '51', '57'], '51': ['44', '50', '52', '58'], '52': ['45', '51', '53', '59'], '53': ['46', '52', '54'], '54': ['47', '53', '55', '61'], '55': ['48', '54', '62'], '56': ['49', '57', '63'], '57': ['50', '56', '58', '64'], '58': ['51', '57', '59', '65'], '59': ['52', '58', '60', '66'], '60': ['59'], '61': ['54', '62', '68'], '62': ['55', '61', '69'], '63': ['56', '64', '70'], '64': ['57', '63', '65', '71'], '65': ['58', '64', '66', '72'], '66': ['59', '65', '67'], '67': ['66', '68'], '68': ['61', '67', '69', '75'], '69': ['62', '68', '76'], '70': ['63', '71', '77'], '71': ['64', '70', '72', '78'], '72': ['65', '71', '73', '79'], '73': ['72', '80'], '75': ['68', '76', '82'], '76': ['69', '75', '83'], '77': ['70', '78'], '78': ['71', '77', '79'], '79': ['72', '78', '80'], '80': ['73', '79', '81'], '81': ['80', '82'], '82': ['75', '81', '83'], '83': ['76', '82']}}

El diccionario anterior connectivityGraph enumera los qubits vecinos de cada qubit en el dispositivo Rigetti.

Elija el dispositivo IonQ Aria-1.

En el caso del IonQ Aria-1 dispositivo, connectivityGraph está vacío, como se muestra en el siguiente ejemplo, porque el dispositivo ofrece conectividad. all-to-all Por lo tanto, no se necesita un connectivityGraph detallado.

# or choose the IonQ Aria-1 device device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1") # take a look at the device connectivity graph device.properties.dict()['paradigm']['connectivity']
{'fullyConnected': True, 'connectivityGraph': {}}

Como se muestra en el siguiente ejemplo, tiene la opción de ajustar los shots (por defecto = 1000), los poll_timeout_seconds (por defecto = 432 000 = 5 días), los poll_interval_seconds (por defecto = 1) y la ubicación del bucket de S3 (s3_location) en la que se almacenarán los resultados si decide especificar una ubicación distinta del bucket predeterminado.

my_task = device.run(circ, s3_location = 'amazon-braket-my-folder', shots=100, poll_timeout_seconds = 100, poll_interval_seconds = 10)

Los dispositivos Rigetti y IonQ compilan automáticamente el circuito proporcionado en sus respectivos conjuntos de puertas nativas y asignan los índices de qubit abstractos a qubits físicos en la QPU respectiva.

nota

Los dispositivos QPU tienen una capacidad limitada. Cuando se alcanza la capacidad, puede esperar tiempos de espera más largos.

Amazon Braket puede ejecutar tareas cuánticas de QPU dentro de determinados períodos de disponibilidad, pero puede enviar tareas cuánticas en cualquier momento (24 horas al día, 7 días a la semana), ya que todos los datos y metadatos correspondientes se almacenan de forma fiable en el bucket de S3 correspondiente. Como se muestra en la siguiente sección, puede recuperar su tarea cuántica utilizando AwsQuantumTask y su identificador único de tarea cuántica.