Hochladen großer Dateien auf Google Colab und entfernte Jupyter-Notizbücher

Wenn Sie noch nichts davon gehört haben, ist Google Colab eine Plattform, die häufig zum Testen von ML-Prototypen auf der kostenlosen K80-GPU verwendet wird . Wenn Sie davon gehört haben, haben Sie es wahrscheinlich probiert. Möglicherweise sind Sie jedoch wegen der Komplexität bei der Übertragung großer Datenmengen verärgert.

In diesem Blog werden einige der Methoden zusammengestellt, die ich zum Hochladen und Herunterladen großer Dateien von Ihrem lokalen System auf Google Colab als nützlich erachtet habe . Ich habe auch zusätzliche Methoden hinzugefügt, die nützlich sein können, um kleinere Dateien mit weniger Aufwand zu übertragen. Einige der Methoden können auf andere entfernte Jupyter-Notebook-Dienste wie Paperspace Gradient erweitert werden.

Große Dateien übertragen

Die effizienteste Methode zum Übertragen großer Dateien ist die Verwendung eines Cloud-Speichersystems wie Dropbox oder Google Drive .

1. Dropbox

Dropbox bietet bis zu 2 GB freien Speicherplatz pro Konto. Dadurch wird eine Obergrenze für die Datenmenge festgelegt, die Sie jederzeit übertragen können. Die Übertragung per Dropbox ist relativ einfach . Sie können dieselben Schritte auch für andere Notebook-Dienste ausführen , z. B. für Paperspace Gradient .

Schritt 1: Archivieren und hochladen

Das Hochladen einer großen Anzahl von Bildern (oder Dateien) einzeln dauert sehr lange, da Dropbox (oder Google Drive) jedem Bild einzeln IDs und Attribute zuweisen muss. Daher empfehle ich, dass Sie zuerst Ihren Datensatz archivieren.

Eine mögliche Methode zur Archivierung besteht darin, den Ordner mit Ihrem Dataset in eine '.tar'-Datei zu konvertieren. Das folgende Codefragment zeigt, wie Sie einen Ordner mit dem Namen "Dataset" im Ausgangsverzeichnis von Ihrem Linux-Terminal aus in eine "dataset.tar" -Datei konvertieren.

tar -cvf dataset.tar ~/Dataset

Alternativ können Sie WinRar oder 7zip verwenden, je nachdem, was für Sie am bequemsten ist. Laden Sie das archivierte Dataset in Dropbox hoch.

Schritt 2: Klonen Sie das Repository

Öffnen Sie Google Colab und starten Sie ein neues Notizbuch.

Klonen Sie dieses GitHub-Repository. Ich habe den Originalcode so geändert, dass er das Dropbox-Zugriffstoken aus dem Notizbuch hinzufügen kann. Führen Sie die folgenden Befehle nacheinander aus .

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

Schritt 3: Erstellen Sie ein Zugriffstoken

Führen Sie den folgenden Befehl aus, um die Anweisungen zur Ersteinrichtung anzuzeigen.

!bash dropbox_uploader.sh

Es werden Anweisungen zum Abrufen des Zugriffstokens angezeigt und Sie werden aufgefordert, den folgenden Befehl auszuführen. Ersetzen Sie die fetten Buchstaben durch Ihr Zugriffstoken und führen Sie dann Folgendes aus:

!echo "INPUT_YOUR_ACCESS_TOKEN_HERE" > token.txt

Execute ! Bash dropbox_uploader.sh wieder Ihr Google Colab Dropbox - Konto zu verknüpfen. Jetzt können Sie Dateien vom Notebook herunterladen und hochladen.

Schritt 4: Inhalt übertragen

Von Dropbox auf Colab herunterladen:

Führen Sie den folgenden Befehl aus. Das Argument ist der Name der Datei in Dropbox.

!bash dropbox_uploader.sh download YOUR_FILE.tar

Von Colab auf Dropbox hochladen:

Führen Sie den folgenden Befehl aus. Das erste Argument (result_on_colab.txt) ist der Name der Datei, die Sie hochladen möchten. Das zweite Argument (dropbox.txt) ist der Name, unter dem Sie die Datei in Dropbox speichern möchten.

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

2. Google Drive

Google Drive bietet bis zu 15 GB kostenlosen Speicherplatz für jedes Google-Konto. Dadurch wird eine Obergrenze für die Datenmenge festgelegt, die Sie jederzeit übertragen können. Sie können dieses Limit jederzeit auf größere Beträge erweitern. Colab vereinfacht den Authentifizierungsprozess für Google Drive.

Abgesehen davon habe ich auch die erforderlichen Änderungen hinzugefügt, die Sie vornehmen können, damit Sie auch von anderen Python-Notebook-Diensten auf Google Drive zugreifen können.

Schritt 1: Archivieren und hochladen

Genau wie bei Dropbox dauert das Hochladen einer großen Anzahl von Bildern (oder Dateien) einzeln sehr lange, da Google Drive jedem Bild IDs und Attribute einzeln zuweisen muss. Daher empfehle ich, dass Sie zuerst Ihren Datensatz archivieren.

Eine mögliche Methode zur Archivierung besteht darin, den Ordner mit Ihrem Dataset in eine '.tar'-Datei zu konvertieren. Das folgende Codefragment zeigt, wie Sie einen Ordner mit dem Namen "Dataset" im Ausgangsverzeichnis von Ihrem Linux-Terminal aus in eine "dataset.tar" -Datei konvertieren.

tar -cvf dataset.tar ~/Dataset

Und wieder können Sie WinRar oder 7zip verwenden, wenn Sie es vorziehen. Laden Sie das archivierte Dataset auf Google Drive hoch.

Schritt 2: Installieren Sie Abhängigkeiten

Öffnen Sie Google Colab und starten Sie ein neues Notizbuch. Installieren Sie PyDrive mit dem folgenden Befehl:

!pip install PyDrive

Importieren Sie die erforderlichen Bibliotheken und Methoden (Die fett gedruckten Importe sind nur für Google Colab erforderlich. Importieren Sie sie nicht, wenn Sie Colab nicht verwenden.)

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

Schritt 3: Autorisieren Sie das Google SDK

Für Google Colab:

Jetzt müssen Sie Google SDK autorisieren, um von Colab aus auf Google Drive zuzugreifen. Führen Sie zunächst die folgenden Befehle aus:

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.

Vielen Dank für das Lesen dieses Artikels! Lass ein paar Klatschen, wenn du es interessant findest! Wenn Sie Fragen haben, können Sie mich in den sozialen Medien kontaktieren oder mir eine E-Mail senden (bharathrajn98 [at] gmail [dot] com).