

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

# Buat Job Hybrid
<a name="braket-jobs-first"></a>

 Bagian ini menunjukkan kepada Anda cara membuat Job Hybrid menggunakan skrip Python. Atau, untuk membuat pekerjaan hybrid dari kode Python lokal, seperti lingkungan pengembangan terintegrasi (IDE) pilihan Anda atau notebook Braket, lihat. [Jalankan kode lokal Anda sebagai pekerjaan hibrida](braket-hybrid-job-decorator.md)

**Topics**
+ [Buat dan jalankan](#braket-jobs-first-create)
+ [Pantau hasil Anda](#braket-jobs-first-monitor-results)
+ [Simpan hasil Anda](#braket-jobs-save-results)
+ [Menggunakan pos pemeriksaan](#braket-jobs-checkpoints)
+ [Jalankan kode lokal Anda sebagai pekerjaan hibrida](braket-hybrid-job-decorator.md)
+ [Menggunakan API dengan Hybrid Jobs](braket-jobs-api.md)
+ [Buat dan debug pekerjaan hybrid dengan mode lokal](braket-jobs-local-mode.md)

## Buat dan jalankan
<a name="braket-jobs-first-create"></a>

Setelah Anda memiliki peran dengan izin untuk menjalankan pekerjaan hibrida, Anda siap untuk melanjutkan. Bagian kunci dari pekerjaan hybrid Braket pertama Anda adalah *skrip algoritma*. Ini mendefinisikan algoritma yang ingin Anda jalankan dan berisi logika klasik dan tugas kuantum yang merupakan bagian dari algoritma Anda. Selain skrip algoritme Anda, Anda dapat menyediakan file ketergantungan lainnya. Skrip algoritma bersama dengan dependensinya disebut modul *sumber*. *Titik masuk* mendefinisikan file atau fungsi pertama yang dijalankan di modul sumber Anda saat pekerjaan hybrid dimulai.

![Diagram yang menunjukkan alur kerja pembuatan pekerjaan kuantum menggunakan konsol atau notebook, menjalankan skrip algoritme pada perangkat kuantum, dan menganalisis hasil.](http://docs.aws.amazon.com/id_id/braket/latest/developerguide/images/braket-jobs-first-workflow.jpg)


Pertama, pertimbangkan contoh dasar berikut dari skrip algoritme yang menciptakan lima status lonceng dan mencetak hasil pengukuran yang sesuai.

```
import os

from braket.aws import AwsDevice
from braket.circuits import Circuit


def start_here():

    print("Test job started!")

    # Use the device declared in the job script
    device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"])

    bell = Circuit().h(0).cnot(0, 1)
    for count in range(5):
        task = device.run(bell, shots=100)
        print(task.result().measurement_counts)

    print("Test job completed!")
```

Simpan file ini dengan nama *algorithm\_script.py* di direktori kerja Anda saat ini di notebook Braket atau lingkungan lokal Anda. File algorithm\_script.py memiliki `start_here()` titik masuk yang direncanakan.

Selanjutnya, buat file Python atau notebook Python di direktori yang sama dengan file algorithm\_script.py. Skrip ini memulai pekerjaan hybrid dan menangani pemrosesan asinkron apa pun, seperti mencetak status atau hasil utama yang kami minati. Minimal, skrip ini perlu menentukan skrip pekerjaan hybrid dan perangkat utama Anda.

**catatan**  
Untuk informasi selengkapnya tentang cara membuat buku catatan Braket atau mengunggah file, seperti file *algorithm\_script.py*, di direktori yang sama dengan notebook, lihat [Menjalankan sirkuit pertama Anda menggunakan Amazon Braket Python](braket-get-started-run-circuit.md) SDK 

Untuk kasus pertama dasar ini, Anda menargetkan simulator. Jenis perangkat kuantum apa pun yang Anda targetkan, simulator atau unit pemrosesan kuantum aktual (QPU), perangkat yang Anda tentukan `device` dalam skrip berikut digunakan untuk menjadwalkan pekerjaan hibrida dan tersedia untuk skrip algoritme sebagai variabel lingkungan. `AMZN_BRAKET_DEVICE_ARN`

**catatan**  
Anda hanya dapat menggunakan perangkat yang tersedia di AWS Region pekerjaan hybrid Anda. Amazon Braket SDK auto memilih ini. AWS Region Misalnya, pekerjaan hybrid di us-east-1 dapat IonQ menggunakanSV1,,, TN1 dan perangkatDM1, tetapi bukan perangkat. Rigetti

Jika Anda memilih komputer kuantum alih-alih simulator, Braket menjadwalkan pekerjaan hibrida Anda untuk menjalankan semua tugas kuantum mereka dengan akses prioritas.

```
from braket.aws import AwsQuantumJob
from braket.devices import Devices

job = AwsQuantumJob.create(
    Devices.Amazon.SV1,
    source_module="algorithm_script.py",
    entry_point="algorithm_script:start_here",
    wait_until_complete=True
)
```

Parameter `wait_until_complete=True` menetapkan mode verbose sehingga pekerjaan Anda mencetak output dari pekerjaan yang sebenarnya saat sedang berjalan. Anda akan melihat output yang mirip dengan contoh berikut.

```
Initializing Braket Job: arn:aws:braket:us-west-2:111122223333:job/braket-job-default-123456789012
Job queue position: 1
Job queue position: 1
Job queue position: 1
..............
.
.
.
Beginning Setup
Checking for Additional Requirements
Additional Requirements Check Finished
Running Code As Process
Test job started!
Counter({'00': 58, '11': 42})
Counter({'00': 55, '11': 45})
Counter({'11': 51, '00': 49})
Counter({'00': 56, '11': 44})
Counter({'11': 56, '00': 44})
Test job completed!
Code Run Finished
2025-09-24 23:13:40,962 sagemaker-training-toolkit INFO     Reporting training SUCCESS
```

**catatan**  
Anda juga dapat menggunakan modul yang dibuat khusus dengan [AwsQuantumJob.create](https://amazon-braket-sdk-python.readthedocs.io/en/latest/_apidoc/braket.aws.aws_quantum_job.html#braket.aws.aws_quantum_job.AwsQuantumJob.create)metode ini dengan meneruskan lokasinya (baik jalur ke direktori atau file lokal, atau URI S3 dari file tar.gz). Untuk contoh kerja, lihat [Parallelize\_training\_for\_QMLfile.ipynb](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/5_Parallelize_training_for_QML/Parallelize_training_for_QML.ipynb) di folder pekerjaan hybrid di repo Github contoh [Amazon Braket](https://github.com/amazon-braket/amazon-braket-examples/tree/main).

## Pantau hasil Anda
<a name="braket-jobs-first-monitor-results"></a>

Atau, Anda dapat mengakses output log dari Amazon CloudWatch. Untuk melakukan ini, buka tab **Grup log** di menu kiri halaman detail pekerjaan, pilih grup log`aws/braket/jobs`, lalu pilih aliran log yang berisi nama pekerjaan. Dalam contoh di atas, ini adalah`braket-job-default-1631915042705/algo-1-1631915190`.

![CloudWatch grup log yang menampilkan daftar peristiwa log dengan jalur file dan stempel waktu untuk pengujian Python SDK Amazon Braket.](http://docs.aws.amazon.com/id_id/braket/latest/developerguide/images/braket-jobs-first-cw-log.png)


Anda juga dapat melihat status pekerjaan hybrid di konsol dengan memilih halaman **Pekerjaan Hybrid** dan kemudian memilih **Pengaturan**.

![Detail pekerjaan hybrid Amazon Braket yang menampilkan ringkasan, waktu kejadian, kode sumber dan konfigurasi instans, serta kondisi penghentian.](http://docs.aws.amazon.com/id_id/braket/latest/developerguide/images/braket-jobs-first-console-status.png)


Pekerjaan hybrid Anda menghasilkan beberapa artefak di Amazon S3 saat berjalan. Nama bucket S3 default adalah `amazon-braket-<region>-<accountid>` dan isinya ada di `jobs/<jobname>/<timestamp>` direktori. Anda dapat mengonfigurasi lokasi S3 tempat artefak ini disimpan dengan menentukan yang berbeda `code_location` saat pekerjaan hybrid dibuat dengan Braket Python SDK.

**catatan**  
Bucket S3 ini harus terletak AWS Region sama dengan skrip pekerjaan Anda.

`jobs/<jobname>/<timestamp>`Direktori berisi subfolder dengan output dari skrip titik masuk dalam `model.tar.gz` file. Ada juga direktori bernama `script` yang berisi artefak skrip algoritme Anda dalam sebuah `source.tar.gz` file. Hasil dari tugas kuantum Anda yang sebenarnya ada di direktori bernama`jobs/<jobname>/tasks`.

## Simpan hasil Anda
<a name="braket-jobs-save-results"></a>

Anda dapat menyimpan hasil yang dihasilkan oleh skrip algoritme sehingga tersedia dari objek pekerjaan hibrida dalam skrip pekerjaan hibrida serta dari folder keluaran di Amazon S3 (dalam file tar-zip bernama model.tar.gz).

Output harus disimpan dalam file menggunakan format JavaScript Object Notation (JSON). Jika data tidak dapat dengan mudah diserialisasikan ke teks, seperti dalam kasus array numpy, Anda dapat meneruskan opsi untuk membuat serial menggunakan format data acar. Lihat modul [braket.jobs.data\_persistence](https://amazon-braket-sdk-python.readthedocs.io/en/latest/_apidoc/braket.jobs.data_persistence.html#braket.jobs.data_persistence.save_job_result) untuk detail selengkapnya.

Untuk menyimpan hasil pekerjaan hybrid, tambahkan baris berikut yang dikomentari dengan \#ADD ke file algorithm\_script.py.

```
import os

from braket.aws import AwsDevice
from braket.circuits import Circuit
from braket.jobs import save_job_result  # ADD


def start_here():

    print("Test job started!")

    device = AwsDevice(os.environ['AMZN_BRAKET_DEVICE_ARN'])

    results = []  # ADD

    bell = Circuit().h(0).cnot(0, 1)
    for count in range(5):
        task = device.run(bell, shots=100)
        print(task.result().measurement_counts)
        results.append(task.result().measurement_counts)  # ADD

        save_job_result({"measurement_counts": results})  # ADD

    print("Test job completed!")
```

Anda kemudian dapat menampilkan hasil pekerjaan dari skrip pekerjaan Anda dengan menambahkan baris yang **`print(job.result())`**dikomentari dengan \#ADD.

```
import time
from braket.aws import AwsQuantumJob

job = AwsQuantumJob.create(
    source_module="algorithm_script.py",
    entry_point="algorithm_script:start_here",
    device="arn:aws:braket:::device/quantum-simulator/amazon/sv1",
)

print(job.arn)
while job.state() not in AwsQuantumJob.TERMINAL_STATES:
    print(job.state())
    time.sleep(10)

print(job.state())
print(job.result())   # ADD
```

Dalam contoh ini, kami telah menghapus `wait_until_complete=True` untuk menekan output verbose. Anda dapat menambahkannya kembali untuk debugging. Ketika Anda menjalankan pekerjaan hibrida ini, ia mengeluarkan pengenal dan`job-arn`, diikuti oleh status pekerjaan hibrida setiap 10 detik hingga pekerjaan hibrida`COMPLETED`, setelah itu menunjukkan kepada Anda hasil sirkuit bel. Lihat contoh berikut ini.

```
arn:aws:braket:us-west-2:111122223333:job/braket-job-default-123456789012
INITIALIZED
RUNNING
RUNNING
RUNNING
RUNNING
RUNNING
RUNNING
RUNNING
RUNNING
RUNNING
RUNNING
...
RUNNING
RUNNING
COMPLETED
{'measurement_counts': [{'11': 53, '00': 47},..., {'00': 51, '11': 49}]}
```

## Menggunakan pos pemeriksaan
<a name="braket-jobs-checkpoints"></a>

Anda dapat menyimpan iterasi perantara dari pekerjaan hybrid Anda menggunakan pos pemeriksaan. Dalam contoh skrip algoritma dari bagian sebelumnya, Anda akan menambahkan baris berikut yang dikomentari dengan \#ADD untuk membuat file pos pemeriksaan.

```
from braket.aws import AwsDevice
from braket.circuits import Circuit
from braket.jobs import save_job_checkpoint  # ADD
import os


def start_here():

    print("Test job starts!")

    device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"])

    # ADD the following code
    job_name = os.environ["AMZN_BRAKET_JOB_NAME"]
    save_job_checkpoint(checkpoint_data={"data": f"data for checkpoint from {job_name}"}, checkpoint_file_suffix="checkpoint-1")  # End of ADD

    bell = Circuit().h(0).cnot(0, 1)
    for count in range(5):
        task = device.run(bell, shots=100)
        print(task.result().measurement_counts)

    print("Test hybrid job completed!")
```

Saat Anda menjalankan pekerjaan hybrid, itu membuat file *-checkpoint-1.json* <jobname>di artefak pekerjaan hybrid Anda di direktori pos pemeriksaan dengan jalur default. `/opt/jobs/checkpoints` Skrip pekerjaan hybrid tetap tidak berubah kecuali Anda ingin mengubah jalur default ini.

Jika Anda ingin memuat pekerjaan hybrid dari pos pemeriksaan yang dihasilkan oleh pekerjaan hybrid sebelumnya, skrip algoritme menggunakan`from braket.jobs import load_job_checkpoint`. Logika untuk memuat dalam skrip algoritma Anda adalah sebagai berikut.

```
from braket.jobs import load_job_checkpoint

checkpoint_1 = load_job_checkpoint(
    "previous_job_name",
    checkpoint_file_suffix="checkpoint-1",
)
```

Setelah memuat pos pemeriksaan ini, Anda dapat melanjutkan logika berdasarkan konten yang dimuat`checkpoint-1`.

**catatan**  
*Checkpoint\_file\_suffix* harus cocok dengan akhiran yang ditentukan sebelumnya saat membuat pos pemeriksaan.

Skrip orkestrasi Anda perlu menentukan `job-arn` dari pekerjaan hybrid sebelumnya dengan baris yang dikomentari dengan \#ADD.

```
from braket.aws import AwsQuantumJob

job = AwsQuantumJob.create(
    source_module="source_dir",
    entry_point="source_dir.algorithm_script:start_here",
    device="arn:aws:braket:::device/quantum-simulator/amazon/sv1",
    copy_checkpoints_from_job="<previous-job-ARN>", #ADD
    )
```