Menggunakan CUDA-Q dengan Amazon Braket - Amazon Braket

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

Menggunakan CUDA-Q dengan Amazon Braket

NVIDIA’s CUDA-Qadalah perpustakaan perangkat lunak yang dirancang untuk pemrograman algoritma kuantum hibrida yang menggabungkan CPUs, GPUs, dan unit pemrosesan Quantum (QPUs). Ini menyediakan model pemrograman terpadu, memungkinkan pengembang untuk mengekspresikan instruksi klasik dan kuantum dalam satu program, merampingkan alur kerja. CUDA-Qmempercepat simulasi program kuantum dan runtime dengan simulator CPU dan GPU bawaannya.

Menggunakan CUDA-Q di Amazon Braket Hybrid Jobs menawarkan lingkungan komputasi yang fleksibel dan sesuai permintaan. Instans komputasi hanya berjalan selama durasi beban kerja Anda, memastikan Anda hanya membayar untuk apa yang Anda gunakan. Amazon Braket Hybrid Jobs juga memberikan pengalaman yang terukur. Pengguna dapat memulai dengan instance yang lebih kecil untuk pembuatan prototipe dan pengujian, kemudian meningkatkan skala hingga instans yang lebih besar yang mampu menangani beban kerja yang lebih besar untuk eksperimen penuh.

Dukungan Amazon Braket Hybrid Jobs GPUs yang penting untuk memaksimalkan potensiCUDA-Q. GPUs secara signifikan mempercepat simulasi program kuantum dibandingkan dengan simulator berbasis CPU, terutama ketika bekerja dengan sirkuit hitungan qubit tinggi. Paralelisasi menjadi mudah saat menggunakan di Amazon CUDA-Q Braket Hybrid Jobs. Hybrid Jobs menyederhanakan distribusi circuit sampling dan evaluasi yang dapat diamati di beberapa node komputasi. Paralelisasi CUDA-Q beban kerja yang mulus ini memungkinkan pengguna untuk lebih fokus pada pengembangan beban kerja mereka daripada menyiapkan infrastruktur untuk eksperimen skala besar.

Untuk memulai, lihat contoh CUDA-Q starter pada contoh Amazon Braket Github untuk membuat wadah pekerjaan yang mendukung CUDA-Q melalui bring your own container (BYOC). Pastikan Anda memiliki izin IAM yang sesuai untuk membangun dan memublikasikan CUDA-Q penampung Anda ke repo Amazon ECR.

Cuplikan kode berikut adalah hello-world contoh untuk menjalankan CUDA-Q program dengan Amazon Braket Hybrid Jobs.

image_uri = "<ecr-image-uri>" @hybrid_job(device='local:nvidia/qpp-cpu', image_uri=image_uri) def hello_quantum(): import cudaq # define the backend device=get_job_device_arn() cudaq.set_target(device.split('/')[-1]) # define the Bell circuit kernel = cudaq.make_kernel() qubits = kernel.qalloc(2) kernel.h(qubits[0]) kernel.cx(qubits[0], qubits[1]) # sample the Bell circuit result = cudaq.sample(kernel, shots_count=1000) measurement_probabilities = dict(result.items()) return measurement_probabilities

Contoh di atas mensimulasikan sirkuit Bell pada simulator CPU. Contoh ini berjalan secara lokal di laptop atau notebook Braket Jupyter Anda. Karena local=True pengaturannya, ketika Anda menjalankan skrip ini, sebuah wadah akan dimulai di lingkungan lokal Anda untuk menjalankan program CUDA-Q untuk pengujian dan debugging. Setelah Anda selesai menguji, Anda dapat menghapus local=True bendera dan menjalankan pekerjaan Anda AWS. Untuk mempelajari lebih lanjut, lihat Memulai dengan Pekerjaan Hibrida Amazon Braket.

Jika beban kerja Anda memiliki jumlah qubit yang tinggi, sejumlah besar sirkuit atau sejumlah besar iterasi, Anda dapat menggunakan sumber daya komputasi CPU yang lebih kuat dengan menentukan pengaturan. instance_config Cuplikan kode berikut menunjukkan cara mengkonfigurasi instance_config pengaturan di dekorator. hybrid_job Untuk informasi selengkapnya tentang jenis instans yang didukung, lihat Mengonfigurasi instance pekerjaan hibrid untuk menjalankan skrip Anda. Untuk daftar jenis instans, lihat Jenis EC2 Instans Amazon.

@hybrid_job( device="local:nvidia/qpp-cpu", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"), ) def my_job_script(): ...

Untuk beban kerja yang lebih menuntut, Anda dapat menjalankan beban kerja Anda pada simulator CUDA-Q GPU. Untuk mengaktifkan simulator GPU, gunakan nama backend. nvidia nvidiaBackend beroperasi sebagai simulator CUDA-Q GPU. Selanjutnya, pilih jenis EC2 instans Amazon yang mendukung NVIDIA GPU. Cuplikan kode berikut menunjukkan dekorator yang dikonfigurasi hybrid_job GPU.

@hybrid_job( device="local:nvidia/nvidia", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.p3.2xlarge"), ) def my_job_script(): ...

Amazon Braket Hybrid Jobs mendukung simulasi GPU paralel dengan. CUDA-Q Anda dapat memparalelkan evaluasi beberapa yang dapat diamati atau beberapa sirkuit untuk meningkatkan kinerja beban kerja Anda. Untuk memparalelkan beberapa observable, buat perubahan berikut pada skrip algoritme Anda.

Tetapkan mgpu opsi nvidia backend. Ini diperlukan untuk memparalelkan yang dapat diamati. Paralelisasi menggunakan MPI untuk komunikasi antara GPUs, sehingga MPI perlu diinisialisasi sebelum eksekusi dan diselesaikan setelahnya.

Selanjutnya, tentukan mode eksekusi dengan pengaturanexecution=cudaq.parallel.mpi. Cuplikan kode berikut menunjukkan perubahan ini.

cudaq.set_target("nvidia", option="mqpu") cudaq.mpi.initialize() result = cudaq.observe( kernel, hamiltonian, shots_count=n_shots, execution=cudaq.parallel.mpi ) cudaq.mpi.finalize()

Dalam hybrid_job dekorator tentukan jenis instance yang meng-host beberapa GPUs seperti yang ditunjukkan dalam cuplikan kode berikut.

@hybrid_job( device="local:nvidia/nvidia-mqpu", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge", instanceCount=1), image_uri=image_uri, ) def parallel_observables_gpu_job(sagemaker_mpi_enabled=True): ...

Notebook simulasi paralel dalam contoh Amazon Braket Github end-to-end memberikan contoh yang menunjukkan cara menjalankan simulasi program kuantum pada backend GPU dan melakukan simulasi paralel yang dapat diamati dan batch sirkuit.

Menjalankan beban kerja Anda di komputer kuantum

Setelah menyelesaikan pengujian simulator, Anda dapat beralih ke menjalankan eksperimen QPUs. Cukup alihkan target ke QPU Amazon Braket, seperti,, atau IQM perangkatIonQ. Rigetti Cuplikan kode berikut menggambarkan cara mengatur target ke perangkat. IQM Garnet Untuk daftar yang tersedia QPUs, lihat Konsol Amazon Braket.

device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet" cudaq.set_target("braket", machine=device_arn)

Untuk informasi selengkapnya tentang Pekerjaan Hibrida Amazon Braket, lihat Bekerja dengan Pekerjaan Hibrida Amazon Braket di panduan pengembang. Untuk mempelajari selengkapnya tentang CUDA-Q, lihat CUDA-Q dokumentasi.