Nagy fájlok feltöltése a Google Colab és a távoli Jupyter notebookokba

Ha még nem hallott róla, a Google Colab egy olyan platform, amelyet széles körben használnak az ML prototípusainak tesztelésére az ingyenes K80 GPU-ján . Ha hallottál róla, akkor nagy eséllyel lőttél. De lehet, hogy elkeseredett a nagy adatkészletek átadásának összetettsége miatt.

Ez a blog néhány olyan módszert összeállít, amelyet hasznosnak találtam nagy fájlok feltöltésére és letöltésére a helyi rendszerből a Google Colabba . Olyan további módszereket is felvettem, amelyek hasznosak lehetnek kisebb fájlok kevesebb erőfeszítéssel történő átviteléhez . Néhány módszer kiterjeszthető más távoli Jupyter notebook szolgáltatásokra, például a Paperspace Gradient-re.

Nagy fájlok átvitele

A nagy fájlok átvitelére a leghatékonyabb módszer egy felhőalapú tároló rendszer, például a Dropbox vagy a Google Drive használata .

1. Dropbox

A Dropbox számlánként legfeljebb 2 GB szabad tárhelyet kínál. Ez felső korlátot szab az adatátvitelre, amelyet bármikor átvihet. A Dropboxon keresztül történő átvitel viszonylag könnyebb . Ugyanezeket a lépéseket követheti más notebook szolgáltatásokhoz is , például a Paperspace Gradienthez .

1. lépés: Archiválás és feltöltés

Nagyszámú kép (vagy fájl) külön-külön történő feltöltése nagyon hosszú időt vesz igénybe, mivel a Dropboxnak (vagy a Google Drive-nak) minden képhez külön kell hozzárendelnie az azonosítókat és az attribútumokat. Ezért azt javaslom, hogy először archiválja az adatkészletet.

Az archiválás egyik lehetséges módja az adatkészletet tartalmazó mappa konvertálása '.tar' fájlba. Az alábbi kódrészlet bemutatja, hogyan lehet a saját könyvtárában lévő „Dataset” nevű mappát konvertálni „dataset.tar” fájlba a Linux terminálról.

tar -cvf dataset.tar ~/Dataset

Alternatív megoldásként használhatja a WinRar vagy a 7zip alkalmazást, bármi is kényelmesebb az Ön számára. Töltse fel az archivált adatkészletet a Dropboxba.

2. lépés: klónozza a tárat

Nyissa meg a Google Colab alkalmazást, és indítson új jegyzetfüzetet.

Klónozza ezt a GitHub adattárat. Módosítottam az eredeti kódot, hogy hozzá lehessen adni a Dropbox hozzáférési tokent a notebookról. Végezze el egyesével az alábbi parancsokat .

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

3. lépés: Hozzon létre hozzáférési tokent

A kezdeti telepítési utasítások megtekintéséhez hajtsa végre a következő parancsot.

!bash dropbox_uploader.sh

Megjeleníti a hozzáférési token megszerzésére vonatkozó utasításokat, és a következő parancs végrehajtását kéri. Cserélje ki a félkövér betűket a hozzáférési jogkivonatára, majd hajtsa végre a következőket:

!echo "INPUT_YOUR_ACCESS_TOKEN_HERE" > token.txt

Futtassa újra a ! Bash dropbox_uploader.sh fájlt , hogy összekapcsolja Dropbox-fiókját a Google Colab-tal. Most letölthet és feltölthet fájlokat a notebookról.

4. lépés: Tartalom átvitele

Letöltés a Colab-ba a Dropbox-ból:

Hajtsa végre a következő parancsot. Az argumentum a Dropbox fájl neve.

!bash dropbox_uploader.sh download YOUR_FILE.tar

Feltöltés Dropboxba a Colab-ból:

Hajtsa végre a következő parancsot. Az első argumentum (result_on_colab.txt) a feltölteni kívánt fájl neve. A második argumentum (dropbox.txt) az a név, amellyel a fájlt a Dropboxba szeretné menteni.

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

2. Google Drive

A Google Drive akár 15 GB ingyenes tárhelyet kínál minden Google-fiókhoz. Ez felső korlátot szab az adatátvitelre, amelyet bármikor átvihet. Ezt a korlátot mindig nagyobb összegekre bővítheti. A Colab leegyszerűsíti a Google Drive hitelesítési folyamatát.

Ennek ellenére belefoglaltam a szükséges módosításokat, amelyeket végre tud hajtani, hogy a Python notebook egyéb szolgáltatásaiból is elérhesse a Google Drive-ot.

1. lépés: Archiválás és feltöltés

Csakúgy, mint a Dropbox esetében, nagyszámú kép (vagy fájl) külön-külön történő feltöltése is nagyon hosszú időt vesz igénybe, mivel a Google Drive-nak minden képhez külön kell hozzárendelnie az azonosítókat és az attribútumokat. Ezért azt javaslom, hogy először archiválja az adatkészletet.

Az archiválás egyik lehetséges módja az adatkészletet tartalmazó mappa konvertálása '.tar' fájlba. Az alábbi kódrészlet bemutatja, hogyan lehet a saját könyvtárában lévő „Dataset” nevű mappát konvertálni „dataset.tar” fájlba a Linux terminálról.

tar -cvf dataset.tar ~/Dataset

És ismét használhatja a WinRar vagy a 7zip programot, ha úgy tetszik. Töltse fel az archivált adatkészletet a Google Drive-ra.

2. lépés: Telepítse a függőségeket

Nyissa meg a Google Colab alkalmazást, és indítson új jegyzetfüzetet. Telepítse a PyDrive programot a következő paranccsal:

!pip install PyDrive

Importálja a szükséges könyvtárakat és módszereket (a félkövér importálás csak a Google Colab esetében szükséges. Ne importálja azokat, ha nem a Colabot használja).

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

3. lépés: Engedélyezze a Google SDK-t

A Google Colab esetében:

Most engedélyeznie kell a Google SDK-t, hogy hozzáférjen a Google Drive-hoz a Colab segítségével. Először hajtsa végre a következő parancsokat:

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.

Köszönjük, hogy elolvasta ezt a cikket! Hagyj néhány tapsot, ha érdekes! Ha bármilyen kérdése van, megüthet a közösségi médiában, vagy küldhet egy e-mailt (bharathrajn98 [at] gmail [dot] com).