Pengenalan kepada aliran kerja terurus
Qiskit Functions dan aliran kerja terurus ialah ciri beta yang hanya tersedia kepada pengguna pelan Premium, Flex dan On-Prem (melalui API IBM Quantum® Platform).
Aliran kerja terurus menjalankan kod Python tersuai anda pada pengkomputeran klasik yang diurus oleh IBM Quantum Platform untuk anda. Gunakan aliran kerja terurus untuk menjalankan aliran kerja hibrid kuantum-klasik, pepenjuruan berskala besar dan tugas selari yang berjalan lama tanpa perlu mengurus infrastruktur pengkomputeran atau storan.
Bila hendak menggunakan aliran kerja terurus
Gunakan aliran kerja terurus apabila tiada Catalog Function siap bina yang meliputi tugas anda, atau apabila anda ingin membungkus kaedah anda sendiri sebagai fungsi yang boleh digunakan semula. Aliran kerja terurus sesuai apabila anda ingin melakukan perkara berikut:
-
Jalankan kerja panjang di awan. Aliran kerja terurus terus berjalan apabila anda menutup komputer riba, dan anda boleh menyambung semula ke kerja itu kemudian.
-
Gunakan nod memori besar dan GPU. Pilih sumber memori, CPU dan GPU yang diperlukan oleh beban kerja.
-
Jalankan tugas secara selari. Mulakan banyak kerja nod tunggal pada masa yang sama.
Anda menyediakan kod aliran kerja, kebergantungannya dan saiz pengkomputeran yang disokongnya. Aliran kerja terurus menjalankan aliran kerja pada pengkomputeran yang diurus oleh IBM® dalam persekitaran siap bina dengan pakej anda dipasang, dan menyediakan storan awan untuk fail yang dibaca dan ditulis oleh aliran kerja.
Cara aliran kerja terurus berfungsi
Anda memuat naik aliran kerja sekali dan menjalankan seberapa banyak kerja yang anda perlukan. Setiap kerja berfungsi dengan cara berikut:
-
Kerja bermula dalam persekitaran baharu dengan cakera tempatan yang kosong. Aliran kerja terurus menutup persekitaran selepas kerja tamat.
-
Kerja berjalan pada salah satu saiz pengkomputeran yang anda tentukan semasa memuat naik aliran kerja. Anda boleh memilih saiz yang berbeza untuk setiap larian.
-
Kerja boleh membaca dan menulis storan fail aliran kerja. Fail dalam storan fail kekal selepas kerja tamat.
Oleh sebab setiap kerja bermula dengan cakera tempatan yang kosong, kerja kemudian hanya dapat menemui fail yang disimpan oleh kerja terdahulu ke storan fail.
Kitar hayat sesuatu larian
Setiap kerja berjalan secara tak segerak sehingga 24 jam. Anda boleh mempunyai sehingga 50 kerja aktif pada masa yang sama jika instans anda mempunyai peruntukan yang mencukupi.
Jadual berikut menerangkan setiap peringkat dalam rajah dan status kerja yang anda lihat semasa peringkat itu:
| Peringkat | Apa yang berlaku | Status kerja |
|---|---|---|
| Muat naik | Anda memuat naik kod aliran kerja, kebergantungan dan saiz. Aliran kerja menolak muat naik yang tidak sah sebelum sebarang kerja berjalan. | Tiada (belum ada kerja) |
| Beratur | Anda memanggil run(). Aliran kerja menyemak sama ada instans anda mempunyai peruntukan yang mencukupi, dan menjadualkan kerja apabila pengkomputeran tersedia. | QUEUED |
| Mula | Aliran kerja mencipta persekitaran dengan profil pengkomputeran yang anda pilih. | INITIALIZING |
| Jalan | Titik masuk aliran kerja anda berjalan. Titik masuk boleh melaporkan kemajuannya dengan update_status(), dan anda boleh membaca lognya dengan logs() semasa ia berjalan. | RUNNING, atau peringkat yang anda tetapkan, seperti RUNNING: WAITING_FOR_QPU |
| Hasil | Kerja tamat, dan aliran kerja menutup persekitarannya, sambil mengekalkan hasil dan log. | DONE, ERROR, atau CANCELED |
Apa yang boleh diakses oleh kerja yang sedang berjalan
Setiap kerja berjalan dalam persekitaran terpencil. Rajah dan jadual berikut menunjukkan sumber yang boleh digunakan oleh kerja yang sedang berjalan.
| Sumber | Apa yang boleh digunakan oleh kerja |
|---|---|
| Pengkomputeran | CPU, memori dan GPU bagi profil pengkomputeran yang anda pilih untuk kerja. |
| Kod dan pakej | Fail yang anda muat naik bersama aliran kerja, dan pakej yang disokong yang dipasang dalam persekitaran. |
| Argumen | Argumen yang anda hantar kepada run(). Bacanya dengan get_arguments(). |
| Akses QPU | Bukti kelayakan dan instans yang anda gunakan untuk memanggil run(). Kerja QPU yang dihantar oleh aliran kerja berjalan pada instans anda dan dikira dalam penggunaan anda. |
| Output | Hasil yang disimpan oleh kerja dengan save_result(), log yang dicetak oleh kerja, dan kemas kini status yang ditetapkan oleh kerja dengan update_status(). |
| Storan fail | Fail yang dikongsi oleh semua larian aliran kerja anda. Fail kekal dalam storan selepas kerja tamat. |
| Internet | Tiada akses. Kerja tidak boleh membuat sambungan keluar. Isytiharkan pakej semasa memuat naik aliran kerja, dan sediakan data sebagai argumen atau fail. |
Keselamatan dan pengasingan
Aliran kerja terurus mengasingkan setiap kerja daripada kerja lain dan mengehadkan keistimewaan kod yang berjalan di dalamnya. Sempadan akses dalam jadual sebelum ini ialah sebahagian daripada pengasingan ini. Aliran kerja terurus juga menggunakan perlindungan berikut:
-
Pengasingan kerja. Tiada kerja lain berjalan dalam persekitaran kerja anda. Ini termasuk kerja pengguna lain dan kerja anda sendiri yang berjalan pada masa yang sama.
-
Hasil, log dan storan. Hanya pengguna yang menjalankan sesuatu kerja boleh membaca hasil dan lognya.
-
Bukti kelayakan. Aliran kerja terurus menyulitkan bukti kelayakan yang digunakan oleh kerja, termasuk token API anda, apabila menyimpannya. Kod aliran kerja anda boleh membaca bukti kelayakan ini semasa kerja berjalan.
-
Keistimewaan. Aliran kerja terurus membuang keistimewaan peringkat pentadbir daripada persekitaran sebelum titik masuk anda bermula.
Perbandingan dengan HPC di premis
Aliran kerja terurus berbeza daripada kluster HPC di premis dari segi cara anda mendapatkan masa pengkomputeran, menyediakan perisian dan menghantar kerja. Jadual berikut membandingkan tugas biasa.
| Tugas | Kluster HPC di premis | Aliran kerja terurus |
|---|---|---|
| Dapatkan masa pengkomputeran | Minta peruntukan atau tempahan daripada pentadbir kluster. | Gunakan peruntukan instans IBM Quantum anda. Aliran kerja meletakkan setiap kerja dalam baris gilir apabila anda memanggil run(). |
| Akses sistem | Sambung ke nod log masuk dengan SSH. | Gunakan klien Python pada komputer tempatan anda. Aliran kerja terurus tidak menyediakan nod log masuk. |
| Pasang perisian | Bina perisian, muatkan modul, atau minta pentadbir memasang pakej. | Gunakan pakej yang disokong yang dipasang dalam setiap persekitaran, atau muat naik wheel untuk pakej lain. |
| Hantar kerja | Tulis skrip kelompok dan hantarkannya kepada penjadual. | Panggil run() dengan argumen kerja. |
| Minta sumber | Minta nod, CPU, memori dan GPU. | Pilih salah satu saiz pengkomputeran yang ditakrifkan untuk aliran kerja. Setiap kerja berjalan pada satu nod. |
| Jalankan sapuan parameter | Hantar tatasusunan kerja. | Panggil run() sekali untuk setiap set argumen. |
| Simpan fail kongsi | Tulis ke sistem fail scratch kongsi. | Tulis ke storan fail untuk aliran kerja. |
| Hadkan masa larian | Tetapkan had masa dinding. | Aliran kerja membatalkan kerja selepas 24 jam. |
| Titik semak untuk kerja panjang | Tulis titik semak ke storan scratch. | Simpan hasil perantaraan ke storan fail. |
| Jalankan semula kerja yang gagal | Hantar semula kerja. | Panggil run() sekali lagi. Aliran kerja tidak mencuba semula kerja yang gagal secara automatik. |
| Pantau kerja | Semak baris gilir dan fail log dari nod log masuk. | Semak status, log dan hasil setiap kerja daripada sesi Python tempatan anda. |
Langkah seterusnya
- Pasang pakej klien dan sahkan identiti.
- Gunakan aliran kerja terurus pertama anda untuk memuat naik aliran kerja, menjalankannya dan mendapatkan hasilnya.