Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions — kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

Isytiharkan kebergantungan

Aliran kerja terurus berjalan dalam persekitaran Python yang disediakannya terlebih dahulu. Job tidak dapat mencapai internet, jadi ia tidak boleh pip install pakej. Sebaliknya, Qiskit dan senarai pakej yang disokong sudah dipasang, dan anda boleh memuat naik wheel bagi sebarang pakej lain yang diperlukan oleh aliran kerja anda.

Semak pakej yang dipasang​

Setiap job berjalan dengan Python 3.12 pada Linux (x86_64), dengan pakej berikut dipasang:

  • qiskit, qiskit-ibm-runtime, qiskit-serverless, dan kebergantungannya, seperti numpy.

  • Pakej yang disokong, seperti qiskit-aer, qiskit-addon-sqd, qiskit-addon-utils, qiskit-mitigation, qiskit-addon-slc, qiskit-paulice, ffsim dan pyscf. Setiap satu dipasang pada satu versi tetap.

Untuk melihat pakej yang disokong dan versinya, panggil dependencies_versions() daripada buku nota setempat anda:

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflowClient

client = ManagedWorkflowClient()
client.dependencies_versions()

Aliran kerja anda boleh mengimport mana-mana pakej ini tanpa penyediaan. Aliran kerja memasangnya semasa membina persekitaran, bukan semasa job bermula, jadi ia tidak menambah masa permulaan job.

Aliran kerja tidak membaca fail requirements.txt atau pyproject.toml, jadi ia tidak memasang pakej yang disenaraikan oleh fail ini. Argumen dependencies bagi ManagedWorkflow telah dinyahgalakkan dan diabaikan, jadi ia juga tidak memasang pakej. Buangnya daripada kod muat naik anda, dan muat naik wheel sebaliknya.

Pakej pada profil pengkomputeran GPU​

Job yang berjalan pada profil pengkomputeran GPU turut mempunyai pakej CUDA berikut yang dipasang. Pakej ini hanya berfungsi pada profil GPU, dan dependencies_versions() tidak menyenaraikannya. Jangan muat naik wheel CUDA anda sendiri, kerana ia bercanggah dengan versi ini.

PakejVersi
gpu4pyscf-cuda12x1.8.1
gpu4pyscf-libxc-cuda12x0.8.1
cupy-cuda12x14.2.0
cutensor-cu122.8.0
cuda-pathfinder1.8.5
nvidia-cublas-cu1212.9.3.13
nvidia-cuda-nvrtc-cu1212.9.86
nvidia-cuda-runtime-cu1212.9.79
nvidia-cufft-cu1211.4.1.4
nvidia-curand-cu1210.3.10.19
nvidia-cusolver-cu1211.7.5.82
nvidia-cusparse-cu1212.5.10.65
nvidia-nvjitlink-cu1212.9.86

Versi nvidia-*-cu12 boleh berubah apabila persekitaran dibina semula. Kod yang bergantung pada versi pustaka CUDA yang tepat mungkin memerlukan kemas kini selepas keluaran baharu.

Minta pakej​

Jika pengguna lain juga memerlukan sesuatu pakej, minta di GitHub. Pakej yang diterima ditambah ke persekitaran dalam keluaran kemudian. Sehingga itu, atau bagi pakej persendirian, tambahkannya sebagai wheel.

Tambah pakej anda sendiri​

Untuk menggunakan pakej yang tidak dipasang, kumpulkan fail wheelnya pada komputer anda, muat naik ke storan fail aliran kerja, dan pasang pada permulaan aliran kerja. Anda memuat naiknya semula hanya apabila ia berubah.

Bina wheel​

Job memasang wheel tanpa sambungan internet, jadi setiap wheel mesti berfungsi dengan Python 3.12 pada Linux (x86_64). Kumpulkan wheel dalam satu folder:

Local terminal

# Your own package
pip wheel --no-deps --wheel-dir wheels ./mypkg

# A package from PyPI, for the job's platform
pip download --only-binary=:all: --platform manylinux_2_28_x86_64 \
--python-version 3.12 --dest wheels pendulum==3.1.0

Dengan --platform dan --python-version, pip download mendapatkan wheel untuk platform job, walaupun anda menjalankannya pada macOS atau Windows. Ia juga memuat turun kebergantungan pakej, seperti python-dateutil, six dan tzdata bagi pendulum. Oleh sebab job memasang setiap wheel tanpa kebergantungannya, muat naik wheel bagi setiap kebergantungan yang tiada dalam persekitaran, dan padam wheel lain daripada folder.

Wheel Python tulen (py3-none-any.whl) berfungsi pada mana-mana platform. Jika pakej dengan kod terkompil tidak mempunyai wheel Linux x86_64 di PyPI, bina satu di Linux, contohnya dalam kontena python:3.12. Kekalkan nama fail asal, kerana pip membaca nama pakej, versi dan platform daripadanya.

Muat naik wheel​

Muat naik wheel daripada notebook tempatan anda dengan add_wheels():

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflowClient

client = ManagedWorkflowClient()
my_workflow = client.load("my-workflow")

client.add_wheels(my_workflow, ["wheels/*.whl"])
print(client.list_wheels(my_workflow))

Setiap laluan boleh berupa nama fail atau corak glob, dan add_wheels() mengembalikan nama wheel yang dimuat naik. Jika corak tidak sepadan dengan sebarang fail, atau sepadan dengan fail yang bukan fail .whl, add_wheels() menimbulkan QiskitServerlessException.

Muat naik aliran kerja sebelum anda menambah wheel, kerana wheel disimpan bersamanya. Wheel masuk ke folder wheels dalam storan fail aliran kerja, berasingan daripada fail anda yang lain.

Gantikan atau alih keluar wheel​

Untuk melihat wheel yang dimuat naik ke aliran kerja, panggil list_wheels(). Untuk mengalih keluar wheel, hantar nama fail wheel tersebut kepada remove_wheels():

run_workflow_remotely.ipynb

client.list_wheels(my_workflow)
# ['mypkg-1.0-py3-none-any.whl']

client.remove_wheels(my_workflow, ["mypkg-1.0-py3-none-any.whl"])

Untuk menaik taraf pakej, alih keluar wheel lama, kemudian tambah yang baharu. Versi baharu mempunyai nama fail yang berbeza, jadi jika anda mengekalkan wheel lama, install_uploaded_wheels() memasang kedua-dua versi.

run_workflow_remotely.ipynb

client.remove_wheels(my_workflow, ["mypkg-1.0-py3-none-any.whl"])
client.add_wheels(my_workflow, ["wheels/mypkg-1.1-*.whl"])

Pasang wheel dalam aliran kerja anda​

Sunting kod aliran kerja anda untuk memanggil install_uploaded_wheels() sebelum ia mengimport pakej:

source_files/my_workflow.py

from qiskit_serverless import install_uploaded_wheels

install_uploaded_wheels()

import pendulum # Installed from an uploaded wheel

install_uploaded_wheels() memasang setiap wheel dalam folder wheels. Jika aliran kerja tiada wheel, panggilan itu tidak melakukan apa-apa. Wheel dipasang semula dalam setiap larian, jadi set wheel yang besar menambah masa permulaan setiap job.

Amalan terbaik: bawa hanya pakej yang tiada​

Sebagai amalan terbaik, muat naik wheel hanya untuk pakej yang tiada dalam persekitaran. Wheel untuk pakej yang sudah dipasang, seperti numpy, memasang salinan kedua, dan kod yang mengimportnya boleh mendapat salah satu salinan. Ralat akibat ketidakpadanan hanya muncul apabila job dijalankan.

Sebelum anda memuat naik, semak keperluan anda dengan dependency_report() daripada notebook tempatan anda:

run_workflow_remotely.ipynb

print(client.dependency_report(["pendulum==3.1.0", "qiskit-aer", "qiskit-addon-sqd==0.10.0"]))
requirement status note
pendulum==3.1.0 bring not in image — upload a wheel
qiskit-aer baked already in image (qiskit-aer==0.17.2)
qiskit-addon-sqd==0.10.0 clash image ships qiskit-addon-sqd==0.13.1

Laporan memberi setiap keperluan salah satu daripada status berikut:

  • baked: Persekitaran sudah menyediakan pakej itu. Jangan muat naik wheel untuknya.

  • bring: Persekitaran tidak mempunyai pakej itu. Muat naik wheel untuknya.

  • clash: Persekitaran menyediakan versi yang berbeza. Tukar versi yang diperlukan oleh kod anda, atau bina semula pakej anda untuk versi yang dipasang.

Laporan hanya menyemak pakej yang disokong, jadi ia menunjukkan qiskit, qiskit-ibm-runtime, qiskit-serverless dan numpy sebagai bring. Persekitaran sudah mengandunginya, jadi jangan muat naik wheel untuknya. Laporan menunjukkan clash hanya untuk versi == yang tepat. Ia menunjukkan julat, seperti >=0.10, sebagai baked. Laporan tidak memuat naik sebarang fail.

Selesaikan masalah kebergantungan​

MasalahPunca
pip install gagal di dalam aliran kerja.Job tidak dapat mencapai internet. Muat naik wheel sebagai gantinya.
ModuleNotFoundError untuk pakej yang anda muat naik.Aliran kerja mengimport pakej itu sebelum ia memanggil install_uploaded_wheels().
ModuleNotFoundError untuk kebergantungan bagi pakej yang anda muat naik.Wheel dipasang tanpa kebergantungannya. Muat naik wheel untuk kebergantungan yang tiada itu.
Ralat menyatakan bahawa wheel is not a supported wheel on this platform.Wheel itu untuk sistem pengendalian atau versi Python yang lain. Dapatkan wheel untuk Python 3.12 pada Linux x86_64.
install_uploaded_wheels() gagal dengan ResolutionImpossible.Folder wheels mempunyai dua versi pakej yang sama. Alih keluar wheel lama dengan remove_wheels().
Pakej CUDA, seperti cupy, gagal pada profil pengiraan GPU selepas anda memuat naik wheel.Satu wheel menggantikan salah satu daripada pakej CUDA yang disediakan oleh persekitaran. Alih keluar wheel itu dengan remove_wheels().
Pakej yang dipasang, seperti numpy, gagal selepas anda memuat naik wheel.Satu wheel memasang salinan kedua pakej yang disediakan oleh persekitaran. Alih keluar wheel itu dengan remove_wheels().