Tutorial ini menunjukkan cara menggunakan GPU di Dataflow untuk memproses gambar satelit Landsat 8 dan merendernya sebagai file JPEG. Tutorial ini didasarkan pada contoh Memproses gambar satelit Landsat dengan GPU.
Tujuan
- Bangun image Docker untuk Dataflow yang memiliki TensorFlow dengan dukungan GPU.
- Menjalankan tugas Dataflow dengan GPU.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- Cloud Storage
- Dataflow
- Artifact Registry
Gunakan kalkulator harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataflow, Cloud Build, and Artifact Registry:
gcloud services enable dataflow
cloudbuild.googleapis.com artifactregistry.googleapis.com -
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataflow, Cloud Build, and Artifact Registry:
gcloud services enable dataflow
cloudbuild.googleapis.com artifactregistry.googleapis.com -
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
Berikan peran ke akun layanan default Compute Engine Anda. Jalankan perintah berikut sekali untuk setiap peran IAM berikut:
roles/dataflow.admin
,roles/dataflow.worker
,roles/bigquery.dataEditor
,roles/pubsub.editor
,roles/storage.objectAdmin
, danroles/artifactregistry.reader
.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
PROJECT_NUMBER
dengan nomor project Anda. Untuk menemukan nomor project, lihat Mengidentifikasi project. - Ganti
SERVICE_ACCOUNT_ROLE
dengan setiap peran individual.
- Ganti
- Untuk menyimpan file gambar JPEG output dari tutorial ini, buat bucket Cloud Storage:
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
- Klik Buat bucket.
- Di halaman Buat bucket, masukkan informasi bucket Anda. Untuk melanjutkan ke
langkah berikutnya, klik Lanjutkan.
- Untuk Beri nama bucket Anda, masukkan nama bucket yang unik. Jangan sertakan informasi sensitif pada nama bucket, karena namespace bucket bersifat global dan dapat dilihat publik.
-
Untuk Pilih tempat untuk menyimpan data, lakukan tindakan berikut:
- Pilih opsi Jenis lokasi.
- Pilih opsi Lokasi.
- Untuk Memilih kelas penyimpanan default untuk data Anda, pilih opsi berikut: Standar.
- Untuk Memilih cara mengontrol akses ke objek, pilih opsi Kontrol akses.
- Untuk Setelan lanjutan (opsional), tentukan metode enkripsi, kebijakan retensi, atau label bucket.
- Klik Buat.
Menyiapkan lingkungan kerja Anda
Download file awal, lalu buat repositori Artifact Registry.
Mendownload file awal
Download file awal, lalu ubah direktori.
Clone repositori
python-docs-samples
.git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Buka direktori kode contoh.
cd python-docs-samples/dataflow/gpu-examples/tensorflow-landsat
Mengonfigurasi Artifact Registry
Buat repositori Artifact Registry agar Anda dapat mengupload artefak. Setiap repositori dapat berisi artefak untuk satu format yang didukung.
Semua konten repositori dienkripsi menggunakan kunci enkripsi yang dikelola Google atau yang dikelola pelanggan. Artifact Registry menggunakan kunci enkripsi yang dikelola Google secara default dan tidak ada konfigurasi yang diperlukan untuk opsi ini.
Anda harus memiliki setidaknya akses Artifact Registry Writer ke repositori.
Jalankan perintah berikut untuk membuat repositori baru. Perintah ini menggunakan
flag --async
dan segera ditampilkan, tanpa menunggu operasi
selesai.
gcloud artifacts repositories create REPOSITORY \
--repository-format=docker \
--location=LOCATION \
--async
Ganti REPOSITORY dengan nama untuk repositori Anda. Untuk setiap lokasi repositori dalam sebuah project, nama repositori harus unik.
Sebelum Anda dapat mengirim atau mengambil image, konfigurasikan Docker guna mengautentikasi permintaan untuk Artifact Registry. Untuk menyiapkan autentikasi ke repositori Docker, jalankan perintah berikut:
gcloud auth configure-docker LOCATION-docker.pkg.dev
Perintah ini memperbarui konfigurasi Docker Anda. Sekarang Anda dapat terhubung dengan Artifact Registry di project Google Cloud untuk mengirim image.
Membangun gambar Docker
Dengan Cloud Build, Anda dapat mem-build image Docker menggunakan Dockerfile dan menyimpannya ke dalam Artifact Registry, tempat image dapat diakses oleh produk Google Cloud lainnya.
Build image container menggunakan file konfigurasi
build.yaml
.
gcloud builds submit --config build.yaml
Menjalankan tugas Dataflow dengan GPU
Blok kode berikut menunjukkan cara meluncurkan pipeline Dataflow ini dengan GPU.
Kita menjalankan pipeline Dataflow menggunakan file konfigurasi
run.yaml
.
export PROJECT=PROJECT_NAME
export BUCKET=BUCKET_NAME
export JOB_NAME="satellite-images-$(date +%Y%m%d-%H%M%S)"
export OUTPUT_PATH="gs://$BUCKET/samples/dataflow/landsat/output-images/"
export REGION="us-central1"
export GPU_TYPE="nvidia-tesla-t4"
gcloud builds submit \
--config run.yaml \
--substitutions _JOB_NAME=$JOB_NAME,_OUTPUT_PATH=$OUTPUT_PATH,_REGION=$REGION,_GPU_TYPE=$GPU_TYPE \
--no-source
Ganti kode berikut:
- PROJECT_NAME: nama project Google Cloud
- BUCKET_NAME: nama bucket Cloud Storage (tanpa awalan
gs://
)
Setelah Anda menjalankan pipeline ini, tunggu hingga perintah selesai. Jika keluar dari shell, Anda mungkin kehilangan variabel lingkungan yang telah ditetapkan.
Untuk menghindari berbagi GPU antara beberapa proses pekerja, contoh ini menggunakan jenis mesin dengan 1 vCPU. Persyaratan memori pipeline diatasi menggunakan memori tambahan sebesar 13 GB. Untuk informasi selengkapnya, baca GPU dan paralelisme pekerja.
Lihat hasil Anda
Pipeline di
tensorflow-landsat/main.py
memproses citra satelit Landsat 8 dan
merendernya sebagai file JPEG. Gunakan langkah-langkah berikut untuk melihat file ini.
Mencantumkan file JPEG output bersama detailnya menggunakan
gsutil
.gsutil ls -lh "gs://$BUCKET/samples/dataflow/landsat/"
Salin file ke direktori lokal.
mkdir outputs gsutil -m cp "gs://$BUCKET/samples/dataflow/landsat/*" outputs/
Buka file gambar tersebut dengan penampil gambar pilihan Anda.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Lihat contoh TensorFlow minimal dengan dukungan GPU
- Lihat contoh PyTorch minimal yang mengaktifkan GPU
- Pelajari dukungan GPU pada Dataflow lebih lanjut.
- Cari tugas untuk Menggunakan GPU.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.