Cómo cargar archivos grandes a Google Colab y portátiles remotos Jupyter

Foto de Thomas Kelley en Unsplash

Si no lo ha escuchado, Google Colab es una plataforma que se usa ampliamente para probar prototipos de ML en su GPU K80 gratuita. Si has oído hablar de él, es probable que le hayas dado una inyección. Pero es posible que se haya exasperado debido a la complejidad que implica transferir grandes conjuntos de datos.

Este blog recopila algunos de los métodos que he encontrado útiles para cargar y descargar archivos grandes de su sistema local a Google Colab. También he incluido métodos adicionales que pueden ser útiles para transferir archivos más pequeños con menos esfuerzo. Algunos de los métodos pueden extenderse a otros servicios de notebook Jupyter remotos, como Paperspace Gradient.

Transferencia de archivos grandes

El método más eficiente para transferir archivos grandes es usar un sistema de almacenamiento en la nube como Dropbox o Google Drive.

1. Dropbox

Dropbox ofrece hasta 2 GB de espacio de almacenamiento gratuito por cuenta. Esto establece un límite superior en la cantidad de datos que puede transferir en cualquier momento. La transferencia a través de Dropbox es relativamente más fácil. También puede seguir los mismos pasos para otros servicios de notebook, como Paperspace Gradient.

Paso 1: archivar y cargar

Cargar una gran cantidad de imágenes (o archivos) individualmente llevará mucho tiempo, ya que Dropbox (o Google Drive) tiene que asignar ID y atributos individualmente a cada imagen. Por lo tanto, le recomiendo que primero archive su conjunto de datos.

Un posible método de archivo es convertir la carpeta que contiene su conjunto de datos en un archivo ".tar". El fragmento de código a continuación muestra cómo convertir una carpeta llamada "Dataset" en el directorio de inicio a un archivo "dataset.tar", desde su terminal Linux.

tar -cvf dataset.tar ~ / Dataset

Alternativamente, puede usar WinRar o 7zip, lo que sea más conveniente para usted. Cargue el conjunto de datos archivado en Dropbox.

Paso 2: clonar el repositorio

Abra Google Colab y comience un nuevo cuaderno.

Clone este repositorio de GitHub. Modifiqué el código original para que pueda agregar el token de acceso de Dropbox desde el cuaderno. Ejecute los siguientes comandos uno por uno.

! git clone https://github.com/thatbrguy/Dropbox-Uploader.git
cd Dropbox-Uploader
! chmod + x dropbox_uploader.sh

Paso 3: crear un token de acceso

Ejecute el siguiente comando para ver las instrucciones de configuración inicial.

! bash dropbox_uploader.sh

Mostrará instrucciones sobre cómo obtener el token de acceso y le pedirá que ejecute el siguiente comando. Reemplace las letras en negrita con su token de acceso, luego ejecute:

! echo "INPUT_YOUR_ACCESS_TOKEN_HERE"> token.txt

Ejecute! Bash dropbox_uploader.sh nuevamente para vincular su cuenta de Dropbox a Google Colab. Ahora puede descargar y cargar archivos desde el cuaderno.

Paso 4: transferir contenido

Descargar a Colab desde Dropbox:

Ejecute el siguiente comando. El argumento es el nombre del archivo en Dropbox.

! bash dropbox_uploader.sh descarga YOUR_FILE.tar

Subir a Dropbox desde Colab:

Ejecute el siguiente comando. El primer argumento (result_on_colab.txt) es el nombre del archivo que desea cargar. El segundo argumento (dropbox.txt) es el nombre que desea guardar el archivo como en Dropbox.

! bash dropbox_uploader.sh upload result_on_colab.txt dropbox.txt

2. Google Drive

Google Drive ofrece hasta 15 GB de almacenamiento gratuito para cada cuenta de Google. Esto establece un límite superior en la cantidad de datos que puede transferir en cualquier momento. Siempre puede expandir este límite a cantidades mayores. Colab simplifica el proceso de autenticación para Google Drive.

Dicho esto, también he incluido las modificaciones necesarias que puede realizar, para que también pueda acceder a Google Drive desde otros servicios de portátiles Python.

Paso 1: archivar y cargar

Al igual que con Dropbox, cargar una gran cantidad de imágenes (o archivos) individualmente llevará mucho tiempo, ya que Google Drive debe asignar individualmente ID y atributos a cada imagen. Por lo tanto, le recomiendo que primero archive su conjunto de datos.

Un posible método de archivo es convertir la carpeta que contiene su conjunto de datos en un archivo ".tar". El fragmento de código a continuación muestra cómo convertir una carpeta llamada "Dataset" en el directorio de inicio a un archivo "dataset.tar", desde su terminal Linux.

tar -cvf dataset.tar ~ / Dataset

Y de nuevo, puede usar WinRar o 7zip si lo prefiere. Suba el conjunto de datos archivado a Google Drive.

Paso 2: instalar dependencias

Abra Google Colab y comience un nuevo cuaderno. Instala PyDrive usando el siguiente comando:

! pip install PyDrive

Importe las bibliotecas y métodos necesarios (las importaciones en negrita solo son necesarias para Google Colab. No las importe si no está usando Colab).

importar os
desde pydrive.auth import GoogleAuth
desde pydrive.drive import GoogleDrive
de google.colab import auth
desde oauth2client.client import GoogleCredentials

Paso 3: autorice el SDK de Google

Para Google Colab:

Ahora, debe autorizar el SDK de Google para acceder a Google Drive desde Colab. Primero, ejecute los siguientes comandos:

auth.authenticate_user ()
gauth = GoogleAuth ()
gauth.credentials = GoogleCredentials.get_application_default ()
unidad = GoogleDrive (gauth)

Recibirá un mensaje como se muestra a continuación. Siga el enlace para obtener la clave. Cópielo y péguelo en el cuadro de entrada y presione Entrar.

Solicitar autenticar usuario

Para otros servicios de notebook Jupyter (Ej: Paperspace Gradient):

Algunos de los siguientes pasos se obtienen de la guía de inicio rápido de PyDrive.

Vaya a la consola de API y haga su propio proyecto. Luego, busque "API de Google Drive", seleccione la entrada y haga clic en "Habilitar". Seleccione "Credenciales" en el menú de la izquierda, haga clic en "Crear credenciales", seleccione "ID de cliente OAuth". Debería ver un menú como la imagen que se muestra a continuación:

Establezca "Tipo de aplicación" en "Otro". Dé un nombre apropiado y haga clic en "Guardar".

Descargue el ID de cliente OAuth 2.0 que acaba de crear. Cambie el nombre a client_secrets.json

Sube este archivo JSON a tu cuaderno. Puede hacer esto haciendo clic en el botón "Cargar" en la página de inicio del cuaderno (se muestra a continuación). (Nota: no use este botón para cargar su conjunto de datos, ya que requerirá mucho tiempo).

El botón de carga se muestra en rojo

Ahora, ejecute los siguientes comandos:

gauth = GoogleAuth ()
gauth.CommandLineAuth ()
unidad = GoogleDrive (gauth)

El resto del procedimiento es similar al de Google Colab.

Paso 4: obtenga la ID de su archivo

Habilite el uso compartido de enlaces para el archivo que desea transferir. Copia el enlace. Puede obtener un enlace como este:

https://drive.google.com/open?id=YOUR_FILE_ID

Copie solo la parte en negrita del enlace anterior.

Paso 5: transferir contenido

Descargar a Colab desde Google Drive:

Ejecute los siguientes comandos. Aquí, YOUR_FILE_ID se obtiene en el paso anterior, y DOWNLOAD.tar es el nombre (o ruta) en el que desea guardar el archivo.

download = drive.CreateFile ({'id': 'YOUR_FILE_ID'})
download.GetContentFile ('DESCARGAR.tar')

Subir a Google Drive desde Colab:

Ejecute los siguientes comandos. Aquí, FILE_ON_COLAB.txt es el nombre (o ruta) del archivo en Colab, y DRIVE.txt es el nombre (o ruta) donde desea guardar el archivo (en Google Drive).

upload = drive.CreateFile ({'title': 'DRIVE.txt'})
upload.SetContentFile ('FILE_ON_COLAB.txt')
upload.Upload ()

Transferencia de archivos más pequeños

Ocasionalmente, es posible que desee pasar solo un archivo csv y no quiera pasar por toda esta molestia. No se preocupe, hay métodos mucho más simples para eso.

1. Módulo de archivos de Google Colab

Google Colab tiene su módulo de archivos incorporado, con el que puede cargar o descargar archivos. Puede importarlo ejecutando lo siguiente:

de los archivos de importación de google.colab

Subir:

Use el siguiente comando para cargar archivos en Google Colab:

files.upload ()

Se le presentará una GUI con la que puede seleccionar los archivos que desea cargar. No se recomienda utilizar este método para archivos de gran tamaño. Es muy lento.

Descargar:

Use el siguiente comando para descargar un archivo de Google Colab:

files.download ('ejemplo.txt')

Esta característica funciona mejor en Google Chrome. En mi experiencia, solo funcionó una vez en Firefox, de aproximadamente 10 intentos.

2. GitHub

Esta es una forma "hack-ish" de transferir archivos. Puede crear un repositorio de GitHub con los archivos pequeños que desea transferir.

Una vez que cree el repositorio, simplemente puede clonarlo en Google Colab. Luego puede enviar sus cambios al repositorio remoto y extraer las actualizaciones en su sistema local.

Pero tenga en cuenta que GitHub tiene un límite estricto de 25 MB por archivo y un límite flexible de 1 GB por repositorio.

¡Gracias por leer este artículo! Deja algunos aplausos si te parece interesante! Si tiene alguna pregunta, puede contactarme en las redes sociales o enviarme un correo electrónico (bharathrajn98 [at] gmail [dot] com).