Halaman ini menjelaskan praktik terbaik untuk membangun pipeline menggunakan GPU.
Untuk informasi dan contoh tentang cara mengaktifkan GPU dalam tugas Dataflow Anda, lihat Menjalankan pipeline dengan GPU dan Memproses gambar satelit Landsat dengan GPU.
Prasyarat untuk menggunakan GPU di Dataflow
- Untuk menggunakan GPU dengan tugas Dataflow, Anda harus menggunakan Runner v2.
- Dataflow menjalankan kode pengguna di VM worker di dalam container Docker.
VM pekerja ini menjalankan OS yang Dioptimalkan untuk Container.
Agar tugas Dataflow dapat menggunakan GPU, Anda memerlukan prasyarat berikut:
- Driver GPU diinstal pada VM pekerja dan dapat diakses oleh Docker container. Untuk informasi selengkapnya, lihat Instal driver GPU.
- Library GPU yang diperlukan oleh pipeline Anda, misalnya Library NVIDIA CUDA-X atau NVIDIA CUDA Toolkit, diinstal di image container kustom. Untuk informasi selengkapnya, lihat Konfigurasi image container.
- Karena kontainer GPU biasanya berukuran besar, untuk menghindari kehabisan ruang disk, tingkatkan default ukuran boot disk hingga 50 gigabita atau lebih.
Pertimbangan
Saat mendesain lingkungan pengujian dan produksi, pertimbangkan faktor-faktor berikut.
Pengembangan lokal
Menggunakan Apache Beam dengan GPU NVIDIA memungkinkan Anda membuat pipeline pemrosesan data yang menangani pra-pemrosesan dan inferensi. Saat Anda menggunakan GPU untuk pengembangan lokal, pertimbangkan informasi berikut:
Sering kali, alur kerja pemrosesan data menggunakan library tambahan yang diinstal di lingkungan peluncuran dan di lingkungan eksekusi Pekerja Dataflow. Konfigurasi ini menambahkan langkah-langkah ke proses alur kerja untuk mengonfigurasi persyaratan pipeline atau untuk menggunakan container kustom di Dataflow. Sangat bermanfaat untuk memiliki lingkungan pengembangan lokal yang meniru model sedekat mungkin dengan lingkungan tersebut.
Jika alur kerja Anda memenuhi kedua kriteria berikut, Anda tidak perlu membangun container kustom atau ubah alur kerja pengembangan Anda untuk mengonfigurasi pipeline persyaratan:
- Anda menggunakan library yang secara implisit menggunakan GPU NVIDIA.
- Kode Anda tidak memerlukan perubahan apa pun untuk mendukung GPU.
Beberapa library tidak beralih secara transparan antara penggunaan CPU dan GPU, dan sehingga membutuhkan build khusus dan jalur kode yang berbeda. Untuk mereplikasi kode untuk skenario ini, diperlukan langkah tambahan.
Saat menjalankan eksperimen lokal, replikasikan lingkungan dari pekerja Dataflow semirip mungkin. Tergantung pada library, Anda mungkin memerlukan komputer dengan GPU dan pustaka GPU yang diperlukan yang terinstal. Jenis komputer ini mungkin tidak tersedia di lingkungan lokal Anda. Anda dapat mengemulasikan Dataflow menggunakan container yang berjalan di virtual machine Google Cloud yang dilengkapi GPU.
Spesifikasi jenis mesin
Untuk mengetahui detail tentang dukungan jenis mesin untuk setiap model GPU, lihat platform GPU. GPU yang didukung dengan jenis mesin N1 juga mendukung jenis mesin N1 kustom.
Jenis dan jumlah GPU menentukan pembatasan batas atas pada GPU jumlah vCPU dan memori yang dapat dimiliki pekerja. Untuk menemukan model batasan, lihat Ketersediaan.
Menentukan jumlah CPU atau memori yang lebih tinggi mungkin mengharuskan Anda menentukan jumlah GPU yang lebih tinggi.
Untuk detail lebih lanjut, baca GPU di Compute Engine.
Mengoptimalkan penggunaan resource
Sebagian besar pipeline tidak sepenuhnya terdiri dari transformasi yang memerlukan GPU. Pipeline umum memiliki tahap penyerapan yang menggunakan salah satu dari sekian banyak yang disediakan oleh Apache Beam. Tahap itu diikuti dengan manipulasi data atau membentuk transformasi, yang kemudian dimasukkan ke dalam transformasi GPU.
Penggunaan penyesuaian yang tepat Petunjuk resource Apache Beam untuk menyesuaikan resource pekerja untuk pipeline batch Anda. Ketika penyesuaian yang tepat adalah Jika diaktifkan, Dataflow hanya menggunakan GPU untuk tahapan pipeline yang membutuhkannya. Karenanya, fitur ini meningkatkan fleksibilitas dan kemampuan pipeline sekaligus yang berpotensi mengurangi biaya.
Untuk informasi selengkapnya, lihat Penyesuaian yang tepat.
GPU dan paralelisme pekerja
Untuk pipeline Python yang menggunakan Dataflow Runner v2 Dataflow, Dataflow meluncurkan satu proses Apache Beam SDK per inti VM. Setiap proses SDK berjalan di container Docker-nya sendiri, lalu menghasilkan banyak {i>thread<i}, yang masing-masing memproses data yang masuk.
GPU menggunakan beberapa proses arsitektur, dan GPU dalam worker Dataflow terlihat oleh semua proses dan thread.
Jika menjalankan beberapa proses SDK pada GPU bersama, Anda dapat meningkatkan kualitas GPU dengan memungkinkan NVIDIA Multi-Process Service (MPS). MPS meningkatkan paralelisme pekerja dan throughput keseluruhan untuk pipeline GPU, terutama untuk workload dengan penggunaan resource GPU yang rendah. Untuk informasi selengkapnya, lihat Tingkatkan performa di GPU bersama menggunakan NVIDIA MPS.
Untuk menghindari kelebihan langganan memori GPU, Anda mungkin perlu mengelola akses GPU. Jika Anda menggunakan TensorFlow, salah satu dari dapat membantu Anda menghindari kelebihan langganan memori GPU:
Mengonfigurasi worker Dataflow untuk memulai hanya satu proses Python dalam container, terlepas dari jumlah vCPU pekerja. Untuk membuat konfigurasi ini. Saat meluncurkan tugas, gunakan perintah opsi pipeline:
--experiments=no_use_multiple_sdk_containers
--number_of_worker_harness_threads
Untuk mengetahui informasi selengkapnya tentang jumlah thread yang akan digunakan, lihat Mengurangi jumlah rangkaian pesan.
Workload inferensi
Saat Anda menggunakan model machine learning (ML) untuk melakukan inferensi lokal dan jarak jauh,
menggunakan Apache Beam bawaan,
Transformasi RunInference
.
RunInference
API adalah PTransform
yang dioptimalkan untuk machine learning
inferensi. Menggunakan transformasi RunInference
dapat meningkatkan efisiensi saat Anda menggunakan
model ML di pipeline Anda.
Alur kerja
Alur kerja dua tahap berikut menunjukkan cara membangun pipeline menggunakan GPU. Alur ini menangani masalah terkait GPU dan non-GPU secara terpisah dan mempersingkat feedback loop.
Membuat pipeline
Membuat pipeline yang dapat dijalankan di Dataflow. Ganti transformasi yang memerlukan GPU dengan transformasi yang tidak menggunakan GPU, tetapi secara fungsional sama:
Membuat semua transformasi yang mengelilingi penggunaan GPU, seperti data penyerapan dan manipulasi.
Buat stub untuk transformasi GPU dengan perubahan skema atau pass-through.
Menguji secara lokal
Uji bagian GPU dari kode pipeline di lingkungan yang meniru Lingkungan eksekusi pekerja Dataflow. Langkah-langkah berikut menjelaskan salah satu metode untuk menjalankan pengujian ini:
Buat image Docker dengan semua library yang diperlukan.
Mulai pengembangan kode GPU.
Mulai siklus kode jalankan kode menggunakan virtual machine Google Cloud dengan image Docker standar. Untuk mengesampingkan inkompatibilitas library, jalankan kode GPU dalam proses Python lokal secara terpisah dari Apache Beam {i>pipelines<i} yang sama. Lalu, jalankan seluruh pipeline pada runner langsung, atau meluncurkan pipeline di Dataflow.
Gunakan VM yang menjalankan sistem operasi yang dioptimalkan untuk container
Untuk lingkungan minimum, gunakan virtual machine (VM) yang dioptimalkan untuk container. Untuk mengetahui informasi selengkapnya, lihat Membuat VM dengan GPU terpasang.
Alur umumnya adalah:
Buat VM.
Hubungkan ke VM dan jalankan perintah berikut:
sudo cos-extensions install gpu -- -version latest sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia
Pastikan GPU tersedia:
./nvidia-smi
Mulai container Docker dengan driver GPU dari VM yang terpasang sebagai volume. Contoh:
sudo 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 gcr.io/bigdatapivot/image_process_example:latest
Untuk sampel Dockerfile, lihat Buat image container kustom. Tambahkan semua dependensi yang Anda perlukan untuk pipeline ke Dockerfile.
Untuk informasi selengkapnya tentang penggunaan image Docker yang sudah dikonfigurasi sebelumnya untuk penggunaan GPU, lihat Gunakan gambar yang ada yang dikonfigurasi untuk penggunaan GPU.
Alat untuk bekerja dengan sistem yang dioptimalkan untuk container
Untuk mengonfigurasi Docker CLI agar menggunakan
docker-credential-gcr
sebagai helper kredensial untuk kumpulan Google Container Registry (GCR) default, gunakan:sudo docker-credential-gcr configure-docker
Untuk mengetahui informasi selengkapnya tentang cara menyiapkan kredensial Docker, lihat docker-credential-gcr.
Untuk menyalin file, seperti kode pipeline, ke atau dari VM, gunakan
toolbox
. Teknik ini berguna saat menggunakan gambar yang Dioptimalkan untuk Kustom. Contoh:toolbox /google-cloud-sdk/bin/gsutil cp gs://bucket/gpu/image_process/* /media/root/home/<userid>/opencv/
Untuk mengetahui informasi selengkapnya, lihat Men-debug masalah node menggunakan toolbox.
Langkah selanjutnya
- Pelajari lebih lanjut dukungan Dataflow untuk GPU.
- Pelajari lebih lanjut cara menjalankan pipeline dengan menggunakan GPU.
- Selesaikan Memproses gambar satelit Landsat dengan GPU.