Questo tutorial mostra come utilizzare le GPU su Dataflow per elaborare le immagini satellitari Landsat 8 e visualizzarle come file JPEG. Il tutorial si basa sull'esempio Elaborazione delle immagini satellitari Landsat con GPU.
Obiettivi
- Crea un'immagine Docker per Dataflow con TensorFlow e supporto GPU.
- Esegui un job Dataflow con le GPU.
Costi
Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:
- Cloud Storage
- Dataflow
- Artifact Registry
Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Prima di iniziare
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Cloud Build, and Artifact Registry APIs:
gcloud services enable dataflow
cloudbuild.googleapis.com artifactregistry.googleapis.com -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
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_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.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Cloud Build, and Artifact Registry APIs:
gcloud services enable dataflow
cloudbuild.googleapis.com artifactregistry.googleapis.com -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
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_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.
- Replace
Concedi ruoli al tuo account di servizio predefinito Compute Engine. Esegui il comando seguente una volta per ciascuno dei seguenti ruoli IAM:
roles/dataflow.admin
,roles/dataflow.worker
,roles/bigquery.dataEditor
roles/pubsub.editor
,roles/storage.objectAdmin
, eroles/artifactregistry.reader
.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Sostituisci
PROJECT_ID
con l'ID progetto. - Sostituisci
PROJECT_NUMBER
con il numero del tuo progetto. Per trovare il numero del progetto, consulta Identificare i progetti. - Sostituisci
SERVICE_ACCOUNT_ROLE
con ogni singolo ruolo.
- Sostituisci
- Per archiviare i file immagine JPEG di output di questo tutorial, crea un
bucket Cloud Storage:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a unique bucket name. Don't include sensitive information in the bucket name, because the bucket namespace is global and publicly visible.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select the following: Standard.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Preparare l'ambiente di lavoro
Scarica i file di avvio e poi crea il tuo repository Artifact Registry.
Scarica i file di base
Scarica i file di avvio e poi cambia directory.
Clona il repository
python-docs-samples
.git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vai alla directory del codice di esempio.
cd python-docs-samples/dataflow/gpu-examples/tensorflow-landsat
Configura Artifact Registry
Crea un repository Artifact Registry in modo da poter caricare gli artefatti. Ogni repository può contenere elementi per un singolo formato supportato.
Tutti i contenuti del repository vengono criptati utilizzando chiavi di proprietà e gestite da Google oppure e chiavi di crittografia gestite dal cliente. Artifact Registry utilizza Chiavi di proprietà di Google e gestite da Google per impostazione predefinita e non è richiesta alcuna configurazione per questa opzione.
Devi avere almeno Accesso in Writer ad Artifact Registry nel repository.
Esegui questo comando per creare un nuovo repository. Il comando utilizza il flag --async
e restituisce immediatamente il risultato, senza attendere il completamento dell'operazione in corso.
gcloud artifacts repositories create REPOSITORY \
--repository-format=docker \
--location=LOCATION \
--async
Sostituisci REPOSITORY con un nome per il repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.
Prima di eseguire il push o il pull delle immagini, configura Docker per autenticare le richieste per Artifact Registry. Per configurare l'autenticazione nei repository Docker, esegui il seguente comando:
gcloud auth configure-docker LOCATION-docker.pkg.dev
Il comando aggiorna la configurazione Docker. Ora puoi connetterti a Artifact Registry nel tuo progetto Google Cloud per eseguire il push delle immagini.
Crea l'immagine Docker
Cloud Build ti consente di creare un'immagine Docker utilizzando un Dockerfile e di salvarla in Artifact Registry, dove l'immagine è accessibile ad altri prodotti Google Cloud.
Crea l'immagine del contenitore utilizzando il file di configurazione build.yaml
.
gcloud builds submit --config build.yaml
Esegui il job Dataflow con le GPU
Il seguente blocco di codice mostra come avviare questo Dataflow una pipeline con GPU.
Eseguiamo la pipeline Dataflow utilizzando il
file di configurazione 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
Sostituisci quanto segue:
- PROJECT_NAME: il nome del progetto Google Cloud
- BUCKET_NAME: il nome del bucket Cloud Storage (senza il prefisso
gs://
)
Dopo aver eseguito questa pipeline, attendi il completamento del comando. Se esci dalla potresti perdere le variabili di ambiente che hai impostato.
Per evitare di condividere la GPU tra più processi worker, questo sample utilizza un tipo di macchina con 1 vCPU. Vengono gestiti i requisiti di memoria della pipeline. utilizzando 13 GB di memoria estesa. Per ulteriori informazioni, consulta GPU e parallelismo dei worker.
Visualizza i tuoi risultati
La pipeline in
tensorflow-landsat/main.py
elabora le immagini satellitari di Landsat 8
come file JPEG. Per visualizzare questi file:
Elenca i file JPEG di output con i dettagli per utilizzando Google Cloud CLI.
gcloud storage ls "gs://$BUCKET/samples/dataflow/landsat/" --long --readable-sizes
Copia i file nella tua directory locale.
mkdir outputs gcloud storage cp "gs://$BUCKET/samples/dataflow/landsat/*" outputs/
Apri questi file immagine con il visualizzatore di immagini che preferisci.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Esamina un esempio di TensorFlow abilitato per GPU minimo
- Guarda un esempio minimo di PyTorch abilitato per GPU
- Scopri di più sul supporto della GPU su Dataflow.
- Esamina le attività per l'utilizzo delle GPU.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.