Jika Anda mengalami masalah saat menjalankan tugas Dataflow dengan GPU, ikuti langkah-langkah berikut:
- Ikuti alur kerja di bagian Praktik terbaik untuk menggunakan GPU Dataflow untuk memastikan bahwa pipeline Anda dikonfigurasi dengan benar.
- Pastikan tugas Dataflow Anda menggunakan GPU. Lihat Memverifikasi tugas Dataflow di "Menjalankan pipeline dengan GPU".
- Lakukan debug dengan VM mandiri.
- Jika masalah masih berlanjut, ikuti langkah-langkah pemecahan masalah selanjutnya di halaman ini.
Men-debug dengan VM mandiri
Saat Anda mendesain dan melakukan iterasi pada image container yang sesuai untuk Anda, akan lebih cepat untuk mengurangi feedback loop dengan mencoba image container di VM mandiri.
Anda dapat men-debug container kustom pada VM mandiri menggunakan GPU dengan membuat VM Compute Engine yang menjalankan GPU pada Container-Optimized OS, menginstal driver, dan memulai container Anda sebagai berikut.
Membuat instance VM.
gcloud compute instances create INSTANCE_NAME \ --project "PROJECT" \ --image-family cos-stable \ --image-project=cos-cloud \ --zone=us-central1-f \ --accelerator type=nvidia-tesla-t4,count=1 \ --maintenance-policy TERMINATE \ --restart-on-failure \ --boot-disk-size=200G \ --scopes=cloud-platform
Gunakan
ssh
untuk terhubung ke VM.gcloud compute ssh INSTANCE_NAME --project "PROJECT"
Instal driver GPU. Setelah terhubung ke VM menggunakan
ssh
, jalankan perintah berikut di VM:# Run these commands on the virtual machine cos-extensions install gpu sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia /var/lib/nvidia/bin/nvidia-smi
Luncurkan penampung kustom Anda.
Penampung Apache Beam SDK menggunakan titik entri
/opt/apache/beam/boot
. Untuk tujuan proses debug, Anda dapat meluncurkan penampung secara manual dengan titik entri yang berbeda:docker-credential-gcr configure-docker docker run --rm \ -it \ --entrypoint=/bin/bash \ --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \ --volume /var/lib/nvidia/bin:/usr/local/nvidia/bin \ --privileged \ IMAGE
Ganti IMAGE dengan jalur Artifact Registry untuk image Docker.
Pastikan library GPU yang diinstal di penampung Anda dapat mengakses perangkat GPU.
Jika menggunakan TensorFlow, Anda dapat mencetak perangkat yang tersedia di penafsir Python dengan hal berikut:
>>> import tensorflow as tf >>> print(tf.config.list_physical_devices("GPU"))
Jika menggunakan PyTorch, Anda dapat memeriksa perangkat yang tersedia di penafsir Python dengan hal berikut:
>>> import torch >>> print(torch.cuda.is_available()) >>> print(torch.cuda.device_count()) >>> print(torch.cuda.get_device_name(0))
Untuk melakukan iterasi pada pipeline, Anda dapat meluncurkan pipeline di Direct Runner. Anda juga dapat meluncurkan pipeline di Dataflow Runner dari lingkungan ini.
Pekerja tidak memulai
Jika tugas Anda macet dan pekerja Dataflow tidak pernah mulai memproses data, mungkin Anda memiliki masalah terkait penggunaan penampung kustom dengan Dataflow. Untuk mengetahui detail selengkapnya, baca panduan pemecahan masalah penampung kustom.
Jika Anda pengguna Python, pastikan ketentuan berikut terpenuhi:
- Versi minor penafsir Python
di image container Anda sama dengan versi yang digunakan saat meluncurkan
pipeline. Jika ada ketidakcocokan, Anda mungkin melihat error seperti
SystemError: unknown opcode
dengan pelacakan tumpukan yang melibatkanapache_beam/internal/pickler.py
. - Jika Anda menggunakan Apache Beam SDK 2.29.0 atau versi yang lebih lama,
pip
harus dapat diakses pada gambar di/usr/local/bin/pip
.
Sebaiknya kurangi penyesuaian ke konfigurasi kerja minimal saat pertama kali Anda menggunakan gambar kustom. Gunakan contoh image container kustom yang disediakan dalam contoh di halaman ini. Pastikan Anda dapat menjalankan pipeline Dataflow langsung dengan image container ini tanpa meminta GPU. Kemudian, lakukan iterasi solusi.
Pastikan pekerja memiliki kapasitas disk yang cukup untuk mendownload image container Anda. Sesuaikan ukuran disk jika perlu. Gambar berukuran besar memerlukan waktu lebih lama untuk didownload, sehingga meningkatkan waktu startup pekerja.
Tugas langsung gagal saat startup
Jika mengalami error
ZONE_RESOURCE_POOL_EXHAUSTED
atau ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS
, Anda dapat melakukan langkah-langkah berikut:
Jangan menentukan zona pekerja sehingga Dataflow memilih zona optimal untuk Anda.
Luncurkan pipeline di zona berbeda atau dengan jenis akselerator yang berbeda.
Tugas gagal saat runtime
Jika tugas gagal saat runtime, periksa error kehabisan memori (OOM) di mesin
pekerja dan GPU. Error OOM GPU dapat muncul sebagai
error cudaErrorMemoryAllocation out of memory
dalam log pekerja. Jika menggunakan TensorFlow, pastikan Anda hanya menggunakan satu proses TensorFlow untuk mengakses satu perangkat GPU.
Untuk informasi selengkapnya, baca GPU dan paralelisme pekerja.
Tidak ada penggunaan GPU
Jika pipeline Anda berhasil berjalan, tetapi GPU tidak digunakan, periksa hal-hal berikut:
- Library NVIDIA yang diinstal di image container sesuai dengan persyaratan kode pengguna dan library pipeline yang digunakannya.
- Library NVIDIA yang diinstal dalam image container dapat diakses sebagai library bersama.
Jika perangkat tidak tersedia, Anda mungkin menggunakan konfigurasi software yang tidak kompatibel. Misalnya, jika menggunakan TensorFlow, pastikan Anda memiliki kombinasi yang kompatibel dari TensorFlow, versi cuDNN, dan versi CUDA Toolkit.
Untuk memverifikasi konfigurasi image, pertimbangkan untuk menjalankan pipeline sederhana yang hanya memeriksa apakah GPU tersedia dan dapat diakses oleh pekerja.
Langkah selanjutnya
- Memulai: Menjalankan GPU pada Container-Optimized OS.
- Toolbox OS yang Dioptimalkan untuk Container.
- Cakupan akses akun layanan.