Cómo cargar archivos grandes a Google Colab y cuadernos remotos de Jupyter

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

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

Transferencia de archivos grandes

El método más eficaz para transferir archivos de gran tamaño es utilizar 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. Transferir 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 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 "Conjunto de datos" en el directorio de inicio a un archivo "conjunto de datos.tar", desde su terminal Linux.

tar -cvf dataset.tar ~/Dataset

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

Paso 2: clona el repositorio

Abra Google Colab y comience un nuevo cuaderno.

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

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

Paso 3: crea 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 portátil.

Paso 4: transferir contenido

Descarga a Colab desde Dropbox:

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

!bash dropbox_uploader.sh download 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 con el que desea guardar el archivo 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 ampliar 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 pueda acceder a Google Drive desde otros servicios de portátiles de 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 tiene que asignar ID y atributos individualmente a cada imagen. Por 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 "Conjunto de datos" en el directorio de inicio a un archivo "conjunto de datos.tar", desde su terminal Linux.

tar -cvf dataset.tar ~/Dataset

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

Paso 2: instalar dependencias

Abra Google Colab y comience un nuevo cuaderno. Instale 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á utilizando Colab).

import os from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from google.colab import auth from oauth2client.client import GoogleCredentials

Paso 3: autorice el SDK de Google

Para Google Colab:

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

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

You will get a prompt as shown below. Follow the link to obtain the key. Copy and paste it in the input box and press enter.

For other Jupyter notebook services (Ex: Paperspace Gradient):

Some of the following steps are obtained from PyDrive’s quickstart guide.

Go to APIs Console and make your own project. Then, search for ‘Google Drive API’, select the entry, and click ‘Enable’. Select ‘Credentials’ from the left menu, click ‘Create Credentials’, select ‘OAuth client ID’. You should see a menu such as the image shown below:

Set “Application Type” to “Other”. Give an appropriate name and click “Save”.

Download the OAuth 2.0 client ID you just created. Rename it to client_secrets.json

Upload this JSON file to your notebook. You can do this by clicking the “Upload” button from the homepage of the notebook (Shown Below). (Note: Do not use this button to upload your dataset, as it will be extremely time consuming.)

Now, execute the following commands:

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

The rest of the procedure is similar to that of Google Colab.

Step 4: Obtain your File’s ID

Enable link sharing for the file you want to transfer. Copy the link. You may get a link such as this:

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

Copy only the bold part of the above link.

Step 5: Transfer contents

Download to Colab from Google Drive:

Execute the following commands. Here, YOUR_FILE_ID is obtained in the previous step, and DOWNLOAD.tar is the name (or path) you want to save the file as.

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

Upload to Google Drive from Colab:

Execute the following commands. Here, FILE_ON_COLAB.txt is the name (or path) of the file on Colab, and DRIVE.txt is the name (or path) you want to save the file as (On Google Drive).

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

Transferring Smaller Files

Occasionally, you may want to pass just one csv file and don’t want to go through this entire hassle. No worries — there are much simpler methods for that.

1. Google Colab files module

Google Colab has its inbuilt files module, with which you can upload or download files. You can import it by executing the following:

from google.colab import files

To Upload:

Use the following command to upload files to Google Colab:

files.upload()

You will be presented with a GUI with which you can select the files you want to upload. It is not recommended to use this method for files of large sizes. It is very slow.

To Download:

Use the following command to download a file from Google Colab:

files.download('example.txt')

This feature works best in Google Chrome. In my experience, it only worked once on Firefox, out of about 10 tries.

2. GitHub

This is a “hack-ish” way to transfer files. You can create a GitHub repository with the small files that you want to transfer.

Once you create the repository, you can just clone it in Google Colab. You can then push your changes to the remote repository and pull the updates onto your local system.

But do note that GitHub has a hard limit of 25MB per file, and a soft limit of 1GB per repository.

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