Aprender conceptos iniciales de Deep Learning

1

¿Qué es el Deep Learning?

2

¿Qué son las redes neuronales artificiales?

3

¿Por qué el Deep Learning ahora?

4

Pytorch y los diferentes frameworks de Deep Learning

5

Setup en Google Colab

Entender la API de Pytorch

6

¿Qué son los tensores?

7

Tensores y datasets

8

Capas de una red neuronal en Pytorch

9

Crear una red neuronal en Pytorch

10

¿Cómo cargar datos en Pytorch?

11

¿Cómo entrenar una red en Pytorch?

12

Loop de entrenamiento de la red neuronal

Entrenar Redes Neuronales Profundas

13

Ciclo de trabajo para el Deep Learning

14

Espacio de modelos

15

Función de perdida

16

Método de optimización: SGD y Backpropagation

17

Autograd y métodos de optimización

18

¿Cómo evaluar la performance de la red neuronal?

19

Regularización de redes neuronales profundas

20

Implementando la Regularización

21

Optimización de hiperparametros

22

Transfer learning

Construir nuestro propio modelo

23

Presentación del problema

24

Definiendo la red generativa que construiremos: CycleGAN

25

Creando la red generadora convolucional

26

Creando el decoder de la red generadora

27

Construyendo las redes discriminativas

28

Preparando el entrenamiento

29

Instanciando redes, perdidas

30

Instanciando optimizadores y schedulers

31

Calculando las pérdidas

32

Entrenando

33

Cómo visualizar y debugear el entrenamiento

34

Cómo utilizar tu modelo una vez entrenado

35

Cómo utilizar una GPU personal con Google Cloud

Llegar más lejos

36

¿Por qué el Deep Learning es más poderoso que el Machine Learning Tradicional?

37

Para ir más lejos

38

Cierre del curso

Bonus

39

¿Por qué aprender Deep Learning?

Cómo utilizar una GPU personal con Google Cloud

35/39

Lectura

Como utilizar una GPU personal con Google Cloud

Para muchos propósitos Colab es una excelente herramienta:

  • Nos entrega un ambiente con las principales librerías Pydata para trabajar.
  • Es colaborativo.
  • Da acceso a una GPU de manera gratuita.

Sin embargo la GPU que utilizamos es compartida. Por lo general si chequeamos la memoria de GPU disponible no es muy alta: 100MB o algunos cientos de MB.

Para modelos pesados o entrenamientos complejos como en el caso de CycleGAN esto puede ser un cuello de botella a la hora de ejecutar el entrenamiento. Me han tocado errores de memoria por ejemplo al aumentar el batch_size de imágenes ya que esto provoca que una mayor cantidad de imágenes sean transferidas a la GPU.

Para estos casos, y de forma mas general, cuando quieras utilizar una GPU de manera exclusiva puedes crear una instancia en Google Cloud Engine de la forma siguiente.

Este paso no es obligatorio para completar el curso (con un batch_size de 2 no deberías tener problemas) pero si quieres explorar mas valores para los hiperparametros, o no tener problemas de disponibilidad de GPU, este es el camino a seguir.

Advertencia: Crear una instancia en Google Cloud tiene un costo, y con GPU este costo es más elevado. Procura tener la instancia activada solo cuando la ocupes y si no quieres tener costos utiliza simplemente Colab con un batch_size pequeño.

Prerrequisitos

Une cuenta en Google Cloud

Ve a esta pagina https://console.cloud.google.com/ y crea una billing account.

Chequea si puedes usar GPUs en Google Cloud

En esta pagina puedes ver si tienes GPUs disponibles ligadas a tu cuenta. Por defecto no tendrás GPUs a menos que ya hayas hecho una solicitud, por lo que tendrás que hacer una solicitud manual. Google tratara tu request en un máximo de 48 horas. Una vez que Google haya validado tu solicitud puedes mirar la tab Metric y setear el limite de GPUs a 1 (o mas).

La command line de Google Cloud

Puedes instalar la linea de comando de google cloud descargando la herramienta en esta pagina

Crear una instancia con GPU

export IMAGE_FAMILY="pytorch-latest-cu100"
export ZONE="us-west1-b"
export INSTANCE_NAME="my-instance"

gcloud compute instances create $INSTANCE_NAME \
  --zone=$ZONE \
  --image-family=$IMAGE_FAMILY \
  --image-project=deeplearning-platform-release \
  --maintenance-policy=TERMINATE \
  --accelerator="type=nvidia-tesla-v100,count=1" \
  --metadata="install-nvidia-driver=True"

Puedes cambiar la zona a una zona que te quede mas cerca como por ejemplo southamerica-east1. El nombre de la instancia lo puedes elegir tu. También puedes cambiar el tipo de la gpu (con el argumento --accelerator) y la cantidad de gpus (ejemplo type=nvidia-tesla-k80,count=2)

Conectar tu instancia

Ahora puedes chequear si tu instancia esta arriba con el comando siguiente:

gcloud compute instances list

En la lista que obtienes deberías tener my-instance-vm marcado RUNNING.

Lo practico de crear la instancia de esta manera es que viene con jupyterlab corriendo. Para exponer jupyterlab en un puerto corre este comando:

gcloud compute ssh $INSTANCE_NAME -- -L 8080:localhost:8080

Con esto ya tiene un jupyter lab disponible a través de tu browser en la dirección http://localhost:8080. Este jupyter tiene pytorch instalado y GPU.

Copia tu código en un notebook nuevo y ya puedes entrenar con una GPU exclusiva para ti!

Aportes 1

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Genial