Procesa imágenes satelitales de Landsat con GPU

En este instructivo, se muestra cómo usar GPU en Dataflow para procesar imágenes satelitales de Landsat 8 y procesarlas como archivos JPEG.

Objetivos

  • Compilar una imagen de Docker para Dataflow que tenga TensorFlow compatible con GPU
  • Ejecutar un trabajo de Dataflow con GPU

Costos

En este instructivo, se usan componentes facturables de Google Cloud, que incluyen lo siguiente:

  • Cloud Storage
  • Dataflow
  • Container Registry

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita las API de Dataflow and Cloud Build.

    Habilita las API

  5. Crea una cuenta de servicio:

    1. En Cloud Console, ve a la página Crear cuenta de servicio.

      Ir a Crear cuenta de servicio
    2. Selecciona un proyecto
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. Cloud Console completa el campo ID de cuenta de servicio según este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Haz clic en el campo Seleccionar una función.

      En Acceso rápido, haz clic en Básico y, luego, en Propietario.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  6. Para crear una clave de cuenta de servicio, haz lo siguiente:

    1. En Cloud Console, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave, luego haz clic en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  7. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  8. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  9. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  10. Habilita las API de Dataflow and Cloud Build.

    Habilita las API

  11. Crea una cuenta de servicio:

    1. En Cloud Console, ve a la página Crear cuenta de servicio.

      Ir a Crear cuenta de servicio
    2. Selecciona un proyecto
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. Cloud Console completa el campo ID de cuenta de servicio según este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Haz clic en el campo Seleccionar una función.

      En Acceso rápido, haz clic en Básico y, luego, en Propietario.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  12. Para crear una clave de cuenta de servicio, haz lo siguiente:

    1. En Cloud Console, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave, luego haz clic en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  13. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  14. Para almacenar los archivos de imagen JPEG de salida de este instructivo, crea un bucket de Cloud Storage:
    1. En Cloud Console, ve a la página Navegador de Cloud Storage.

      Ir al navegador

    2. Haz clic en Crear bucket.
    3. En la página Crear un bucket, ingresa la información de tu bucket. Para ir al siguiente paso, haz clic en Continuar.
      • Para Asignar un nombre a tu depósito, ingresa un nombre de bucket único. No incluyas información sensible en el nombre del bucket porque su espacio de nombres es global y públicamente visible.
      • Para Elige dónde almacenar tus datos, sigue estos pasos:
        • Seleccione una opción de Tipo de ubicación.
        • Selecciona una opción de Ubicación.
      • Para Elegir una clase de almacenamiento predeterminado para tus datos, selecciona lo siguiente:Estándar.
      • En Elegir cómo controlar el acceso a los objetos, selecciona una opción Control de acceso.
      • En Configuración avanzada (opcional), especifica un método de encriptación, una política de retención o etiquetas de depósito.
    4. Haga clic en Crear.

Prepara tu entorno de trabajo

Antes de poder seguir este instructivo, debes configurar tu entorno de desarrollo y descargar los archivos de inicio.

  1. Clona el repositorio python-docs-samples.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. Dirígete al directorio del código de muestra.

    cd python-docs-samples/dataflow/gpu-examples/tensorflow-landsat
    

Compile la imagen de Docker

Cloud Build te permite compilar una imagen de Docker con un Dockerfile y guardarla en Container Registry, donde la imagen es accesible para otros productos de Google Cloud.

Compilamos la imagen del contenedor mediante el archivo de configuración build.yaml.

gcloud builds submit --config build.yaml

Ejecuta el trabajo de Dataflow con GPU

En el siguiente bloque de código, se muestra cómo iniciar esta canalización de Dataflow con GPU.

Ejecutamos la canalización de Dataflow mediante el archivo de configuración 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

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto de Google Cloud
  • BUCKET_NAME: Es el nombre del bucket de Cloud Storage (sin el prefijo gs://).

Después de ejecutar esta canalización, espera a que el comando termine. Si sales de tu shell, es posible que pierdas las variables de entorno que configuraste.

Para evitar compartir la GPU entre varios procesos de trabajador, en esta muestra se usa un tipo de máquina con 1 CPU virtual. Los requisitos de memoria de la canalización se abordan con 13 GB de memoria extendida. Para obtener más información, consulta GPU y paralelismo de trabajadores.

Visualiza los resultados

La canalización en tensorflow-landsat/main.py procesa imágenes satelitales de Landsat 8 y las procesa como archivos JPEG. Para ver estos archivos, sigue los pasos que se indican a continuación:

  1. Enumera los archivos JPEG de salida con detalles mediante gsutil.

    gsutil ls -lh "gs://$BUCKET/samples/dataflow/landsat/"
    
  2. Copia los archivos en tu directorio local.

    mkdir outputs
    gsutil -m cp "gs://$BUCKET/samples/dataflow/landsat/*" outputs/
    
  3. Abre estos archivos de imagen con el visor de imágenes que prefieras.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?