

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Contoh tugas kuantum di Amazon Braket
<a name="braket-submit-tasks-to-braket"></a>

Bagian ini berjalan melalui tahapan menjalankan contoh tugas kuantum, mulai dari memilih perangkat hingga melihat hasilnya. Sebagai praktik terbaik untuk Amazon Braket, kami sarankan Anda mulai dengan menjalankan sirkuit pada simulator, seperti. SV1

**Topics**
+ [Tentukan perangkat](#braket-example-specify-device)
+ [Kirimkan contoh tugas kuantum](#braket-submit-example-task)
+ [Kirim tugas parametris](#braket-submit-parametrized-task)
+ [Tentukan shots](#braket-shots)
+ [Polling untuk hasil](#braket-polling-results)
+ [Contoh: Lihat hasilnya](#braket-example-results)

## Tentukan perangkat
<a name="braket-example-specify-device"></a>

Pertama, pilih dan tentukan perangkat untuk tugas kuantum Anda. Contoh ini menunjukkan bagaimana memilih simulator,SV1.

```
from braket.aws import AwsDevice

# Choose the on-demand simulator to run the circuit
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")
```

Anda dapat melihat beberapa properti perangkat ini sebagai berikut:

```
print(device.name)
for iter in device.properties.action['braket.ir.jaqcd.program']:
    print(iter)
```

```
SV1
('version', ['1.0', '1.1'])
('actionType', 'braket.ir.jaqcd.program')
('supportedOperations', ['ccnot', 'cnot', 'cphaseshift', 'cphaseshift00', 'cphaseshift01', 'cphaseshift10', 'cswap', 'cy', 'cz', 'ecr', 'h', 'i', 'iswap', 'pswap', 'phaseshift', 'rx', 'ry', 'rz', 's', 'si', 'swap', 't', 'ti', 'unitary', 'v', 'vi', 'x', 'xx', 'xy', 'y', 'yy', 'z', 'zz'])
('supportedResultTypes', [ResultType(name='Sample', observables=['x', 'y', 'z', 'h', 'i', 'hermitian'], minShots=1, maxShots=100000), ResultType(name='Expectation', observables=['x', 'y', 'z', 'h', 'i', 'hermitian'], minShots=0, maxShots=100000), ResultType(name='Variance', observables=['x', 'y', 'z', 'h', 'i', 'hermitian'], minShots=0, maxShots=100000), ResultType(name='Probability', observables=None, minShots=1, maxShots=100000), ResultType(name='Amplitude', observables=None, minShots=0, maxShots=0)])
('disabledQubitRewiringSupported', None)
```

## Kirimkan contoh tugas kuantum
<a name="braket-submit-example-task"></a>

Kirimkan contoh tugas kuantum untuk dijalankan di simulator sesuai permintaan.

```
from braket.circuits import Circuit, Observable

# Create a circuit with a result type
circ = Circuit().rx(0, 1).ry(1, 0.2).cnot(0, 2).variance(observable=Observable.Z(), target=0)
# Add another result type
circ.probability(target=[0, 2])

# Set up S3 bucket (where results are stored)
my_bucket = "amazon-braket-s3-demo-bucket"  # The name of the bucket
my_prefix = "your-folder-name"  # The name of the folder in the bucket
s3_location = (my_bucket, my_prefix)

# Submit the quantum task to run
my_task = device.run(circ, s3_location, shots=1000, poll_timeout_seconds=100, poll_interval_seconds=10)
# The positional argument for the S3 bucket is optional if you want to specify a bucket other than the default

# Get results of the quantum task
result = my_task.result()
```

`device.run()`Perintah membuat tugas kuantum melalui `CreateQuantumTask` API. Setelah waktu inisialisasi singkat, tugas kuantum diantrian sampai ada kapasitas untuk menjalankan tugas kuantum pada perangkat. Dalam hal ini, perangkatnyaSV1. Setelah perangkat menyelesaikan perhitungan, Amazon Braket menulis hasilnya ke lokasi Amazon S3 yang ditentukan dalam panggilan. Argumen posisi `s3_location` diperlukan untuk semua perangkat kecuali simulator lokal.

**catatan**  
Tindakan tugas kuantum Braket dibatasi hingga 5MB.

## Kirim tugas parametris
<a name="braket-submit-parametrized-task"></a>

 Amazon Braket sesuai permintaan dan simulator lokal dan QPUs juga mendukung menentukan nilai parameter gratis pada pengiriman tugas. Anda dapat melakukan ini dengan menggunakan `inputs` argumen untuk`device.run()`, seperti yang ditunjukkan pada contoh berikut. `inputs`Harus berupa kamus pasangan string-float, di mana kuncinya adalah nama parameter.

Kompilasi parametrik dapat meningkatkan kinerja mengeksekusi sirkuit parametrik pada tertentu. QPUs Saat mengirimkan sirkuit parametrik sebagai tugas kuantum ke QPU yang didukung, Braket akan mengkompilasi rangkaian sekali, dan menyimpan hasilnya. Tidak ada kompilasi ulang untuk pembaruan parameter berikutnya ke sirkuit yang sama, menghasilkan runtime yang lebih cepat untuk tugas yang menggunakan sirkuit yang sama. Braket secara otomatis menggunakan data kalibrasi yang diperbarui dari penyedia perangkat keras saat menyusun sirkuit Anda untuk memastikan hasil dengan kualitas terbaik.

**catatan**  
Kompilasi parametrik didukung pada semua superkonduktor, berbasis gerbang QPUs dari Rigetti Computing dengan pengecualian program tingkat pulsa.

```
from braket.circuits import Circuit, FreeParameter, Observable

# Create the free parameters
alpha = FreeParameter('alpha')
beta = FreeParameter('beta')

# Create a circuit with a result type
circ = Circuit().rx(0, alpha).ry(1, alpha).cnot(0, 2).xx(0, 2, beta)
circ.variance(observable=Observable.Z(), target=0)

# Add another result type
circ.probability(target=[0, 2])

# Submit the quantum task to run
my_task = device.run(circ, inputs={'alpha': 0.1, 'beta': 0.2}, shots=100)
```

## Tentukan shots
<a name="braket-shots"></a>

shotsArgumen mengacu pada jumlah pengukuran yang diinginkanshots. Simulator seperti SV1 mendukung dua mode simulasi.
+ Untuk shots = 0, simulator melakukan simulasi yang tepat, mengembalikan nilai sebenarnya untuk semua jenis hasil. (Tidak tersedia diTN1.)
+ Untuk nilai bukan nolshots, sampel simulator dari distribusi output untuk meniru shot kebisingan nyata. QPUs Perangkat QPU hanya shots mengizinkan> 0.

Untuk informasi tentang jumlah maksimum bidikan per tugas kuantum, lihat [Kuota Braket](braket-quotas.md).

## Polling untuk hasil
<a name="braket-polling-results"></a>

Saat mengeksekusi`my_task.result()`, SDK memulai polling untuk hasil dengan parameter yang Anda tentukan pada pembuatan tugas kuantum:
+  `poll_timeout_seconds`adalah jumlah detik untuk polling tugas kuantum sebelum waktu habis saat menjalankan tugas kuantum pada simulator on-demand dan atau perangkat QPU. Nilai default adalah 432,000 detik, yaitu 5 hari.
+  **Catatan:** Untuk perangkat QPU seperti Rigetti danIonQ, kami sarankan Anda mengizinkan beberapa hari. Jika waktu jajak pendapat terlalu singkat, hasil mungkin tidak dikembalikan dalam waktu jajak pendapat. Sebagai contoh, ketika QPU tidak tersedia, kesalahan waktu habis lokal dikembalikan.
+  `poll_interval_seconds`adalah frekuensi tugas kuantum yang disurvei. Ini menentukan seberapa sering Anda memanggil Braket API untuk mendapatkan status ketika tugas kuantum dijalankan pada simulator sesuai permintaan dan pada perangkat QPU. Nilai default adalah 1 detik.

Eksekusi asinkron ini memfasilitasi interaksi dengan perangkat QPU yang tidak selalu tersedia. Misalnya, perangkat mungkin tidak tersedia selama window perawatan rutin.

Hasil yang dikembalikan berisi berbagai metadata yang terkait dengan tugas kuantum. Anda dapat memeriksa hasil pengukuran dengan perintah berikut:

```
print('Measurement results:\n', result.measurements)
print('Counts for collapsed states:\n', result.measurement_counts)
print('Probabilities for collapsed states:\n', result.measurement_probabilities)
```

```
Measurement results:
 [[1 0 1]
 [0 0 0]
 [0 0 0]
 ...
 [0 0 0]
 [0 0 0]
 [1 0 1]]
Counts for collapsed states:
 Counter({'000': 766, '101': 220, '010': 11, '111': 3})
Probabilities for collapsed states:
 {'101': 0.22, '000': 0.766, '010': 0.011, '111': 0.003}
```

## Contoh: Lihat hasilnya
<a name="braket-example-results"></a>

Karena Anda juga telah menentukan`ResultType`, Anda dapat melihat hasil yang dikembalikan. Jenis hasil muncul dalam urutan penambahannya ke sirkuit.

```
print('Result types include:\n', result.result_types)
print('Variance=', result.values[0])
print('Probability=', result.values[1])

# Plot the result and do some analysis
import matplotlib.pyplot as plt
plt.bar(result.measurement_counts.keys(), result.measurement_counts.values())
plt.xlabel('bitstrings')
plt.ylabel('counts')
```

```
Result types include:
 [ResultTypeValue(type=Variance(observable=['z'], targets=[0], type=<Type.variance: 'variance'>), value=0.693084), ResultTypeValue(type=Probability(targets=[0, 2], type=<Type.probability: 'probability'>), value=array([0.777, 0.   , 0.   , 0.223]))]
Variance= 0.693084
Probability= [0.777 0.    0.    0.223]
Text(0, 0.5, 'counts')
```

![Bagan batang menunjukkan jumlah hitungan ke bitstring yang berbeda, dengan bilah tertinggi untuk “000" yang berisi lebih dari 700 hitungan.](http://docs.aws.amazon.com/id_id/braket/latest/developerguide/images/demo-result.png)
