Memproses citra satelit Landsat dengan GPU


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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Aktifkan API Dataflow, Cloud Build, and Artifact Registry:

    gcloud services enable dataflow cloudbuild.googleapis.com artifactregistry.googleapis.com
  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  8. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  9. Install the Google Cloud CLI.
  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. Aktifkan API Dataflow, Cloud Build, and Artifact Registry:

    gcloud services enable dataflow cloudbuild.googleapis.com artifactregistry.googleapis.com
  14. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  15. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  16. 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, dan roles/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.
  17. Untuk menyimpan file gambar JPEG output dari tutorial ini, buat bucket Cloud Storage:
    1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

      Buka halaman Bucket

    2. Klik Buat bucket.
    3. 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.
    4. Klik Buat.

Menyiapkan lingkungan kerja Anda

Download file awal, lalu buat repositori Artifact Registry.

Mendownload file awal

Download file awal, lalu ubah direktori.

  1. Clone repositori python-docs-samples.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. 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.

  1. Mencantumkan file JPEG output bersama detailnya menggunakan gsutil.

    gsutil ls -lh "gs://$BUCKET/samples/dataflow/landsat/"
    
  2. Salin file ke direktori lokal.

    mkdir outputs
    gsutil -m cp "gs://$BUCKET/samples/dataflow/landsat/*" outputs/
    
  3. 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:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya