Если вы не слышали об этом, Google Colab - это платформа, которая широко используется для тестирования прототипов машинного обучения на ее бесплатном графическом процессоре K80. Если вы слышали об этом, скорее всего, вы дали ему шанс. Но вы могли бы разозлиться из-за сложности передачи больших наборов данных.

В этом блоге собраны некоторые методы, которые я считаю полезными для загрузки и загрузки больших файлов из вашей локальной системы в Google Colab. . Я также включил дополнительные методы, которые могут быть полезны для передачи файлов меньшего размера с меньшими усилиями. Некоторые из методов можно распространить на другие удаленные сервисы записной книжки Jupyter, такие как Paperspace Gradient.

Передача больших файлов

Самый эффективный способ передачи больших файлов - использование облачной системы хранения, такой как Dropbox или Google Диск.

1. Dropbox

Dropbox предлагает до 2 ГБ бесплатного пространства для хранения на одну учетную запись. Это устанавливает верхний предел объема данных, которые вы можете передать в любой момент. Перенести через Dropbox относительно проще. Вы также можете выполнить те же действия для других сервисов записных книжек, например Paperspace Gradient.

Шаг 1. Архивирование и загрузка

Загрузка большого количества изображений (или файлов) по отдельности займет очень много времени, поскольку Dropbox (или Google Диск) должен индивидуально назначать идентификаторы и атрибуты каждому изображению. Поэтому я рекомендую вам сначала заархивировать свой набор данных.

Один из возможных методов архивирования - преобразовать папку, содержащую ваш набор данных, в файл «.tar». В приведенном ниже фрагменте кода показано, как преобразовать папку с именем «Dataset» в домашнем каталоге в файл «dataset.tar» с вашего терминала Linux.

tar -cvf dataset.tar ~/Dataset

В качестве альтернативы вы можете использовать WinRar или 7zip, что вам удобнее. Загрузите заархивированный набор данных в Dropbox.

Шаг 2. Клонируйте репозиторий

Откройте Google Colab и начните новую записную книжку.

Клонируйте этот репозиторий GitHub. Я изменил исходный код, чтобы он мог добавлять токен доступа Dropbox из записной книжки. Выполните следующие команды одну за другой.

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

Шаг 3. Создайте токен доступа

Выполните следующую команду, чтобы увидеть инструкции по начальной настройке.

!bash dropbox_uploader.sh

Он отобразит инструкции о том, как получить токен доступа, и попросит вас выполнить следующую команду. Замените жирные буквы своим токеном доступа, затем выполните:

!echo "INPUT_YOUR_ACCESS_TOKEN_HERE" > token.txt

Запустите ! Bash dropbox_uploader.sh еще раз, чтобы связать свою учетную запись Dropbox с Google Colab. Теперь вы можете скачивать и выгружать файлы из записной книжки.

Шаг 4. Перенесите содержимое

Загрузить в Colab из Dropbox:

Выполните следующую команду. Аргумент - это имя файла в Dropbox.

!bash dropbox_uploader.sh download YOUR_FILE.tar

Загрузить в Dropbox из Colab:

Выполните следующую команду. Первый аргумент (result_on_colab.txt) - это имя файла, который вы хотите загрузить. Второй аргумент (dropbox.txt) - это имя, которое вы хотите сохранить для файла, как в Dropbox.

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

2. Google Диск

Google Диск предлагает до 15 ГБ бесплатного хранилища для каждой учетной записи Google. Это устанавливает верхний предел объема данных, которые вы можете передать в любой момент. Вы всегда можете увеличить этот лимит до более крупных сумм. Colab упрощает процесс аутентификации для Google Диска.

При этом я также включил необходимые изменения, которые вы можете выполнить, чтобы вы могли получить доступ к Google Диску и из других сервисов записных книжек Python.

Шаг 1. Архивирование и загрузка

Как и в случае с Dropbox, загрузка большого количества изображений (или файлов) по отдельности займет очень много времени, поскольку Google Диск должен индивидуально назначать идентификаторы и атрибуты каждому изображению. Поэтому я рекомендую вам сначала заархивировать свой набор данных.

Один из возможных методов архивирования - преобразовать папку, содержащую ваш набор данных, в файл «.tar». В приведенном ниже фрагменте кода показано, как преобразовать папку с именем «Dataset» в домашнем каталоге в файл «dataset.tar» с вашего терминала Linux.

tar -cvf dataset.tar ~/Dataset

И снова вы можете использовать WinRar или 7zip, если хотите. Загрузите заархивированный набор данных на Google Диск.

Шаг 2. Установите зависимости

Откройте Google Colab и начните новую записную книжку. Установите PyDrive с помощью следующей команды:

!pip install PyDrive

Импортируйте необходимые библиотеки и методы (полужирный импорт требуется только для Google Colab. Не импортируйте их, если вы не используете Colab).

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

Шаг 3. Авторизуйте Google SDK

Для Google Colab:

Теперь вам нужно авторизовать Google SDK для доступа к Google Диску из Colab. Сначала выполните следующие команды:

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

Вы получите подсказку, как показано ниже. Перейдите по ссылке, чтобы получить ключ. Скопируйте и вставьте его в поле ввода и нажмите ввод.

Для других сервисов блокнотов Jupyter (например, Paperspace Gradient):

Некоторые из следующих шагов взяты из Руководства по быстрому запуску PyDrive.

Зайдите в Консоль API и создайте свой собственный проект. Затем найдите Google Drive API, выберите запись и нажмите Включить. Выберите Учетные данные в меню слева, нажмите Создать учетные данные, выберите Идентификатор клиента OAuth. Вы должны увидеть меню, подобное изображенному ниже:

Установите «Тип приложения» на «Другое». Дайте подходящее имя и нажмите «Сохранить».

Загрузите только что созданный идентификатор клиента OAuth 2.0. Переименуйте его в client_secrets.json.

Загрузите этот файл JSON в свой блокнот. Вы можете сделать это, нажав кнопку «Загрузить» на главной странице записной книжки (показано ниже). (Примечание. Не используйте эту кнопку для загрузки набора данных, так как это займет очень много времени.)

Теперь выполните следующие команды:

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

В остальном процедура аналогична процедуре Google Colab.

Шаг 4. Получите идентификатор своего файла

Включите доступ по ссылке для файла, который хотите передать. Скопируйте ссылку. Вы можете получить такую ​​ссылку:

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

Скопируйте только жирную часть приведенной выше ссылки.

Шаг 5. Перенесите содержимое

Загрузить в Colab с Google Диска:

Выполните следующие команды. Здесь YOUR_FILE_ID, полученный на предыдущем шаге, а DOWNLOAD.tar - это имя (или путь), под которым вы хотите сохранить файл.

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

Загрузить на Google Диск из Colab:

Выполните следующие команды. Здесь FILE_ON_COLAB.txt - это имя (или путь) файла в Colab, а DRIVE.txt - это имя (или путь), под которым вы хотите сохранить файл. (На Google Диске).

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

Передача файлов меньшего размера

Иногда вам может понадобиться передать только один CSV-файл, и вам не захочется проделывать все эти хлопоты. Не беспокойтесь - для этого есть гораздо более простые методы.

1. Модуль файлов Google Colab

Google Colab имеет встроенный модуль файлов, с помощью которого вы можете загружать или скачивать файлы. Вы можете импортировать его, выполнив следующие действия:

from google.colab import files

Для загрузки:

Используйте следующую команду для загрузки файлов в Google Colab:

files.upload()

Вам будет представлен графический интерфейс, с помощью которого вы сможете выбрать файлы, которые хотите загрузить. Не рекомендуется использовать этот метод для файлов большого размера. Это очень медленно.

Для загрузки:

Используйте следующую команду, чтобы загрузить файл из Google Colab:

files.download('example.txt')

Эта функция лучше всего работает в Google Chrome. По моему опыту, в Firefox это сработало только один раз из 10 попыток.

2. GitHub

Это «хакерский» способ передачи файлов. Вы можете создать репозиторий GitHub с небольшими файлами, которые хотите передать.

Создав репозиторий, вы можете просто клонировать его в Google Colab. Затем вы можете отправить свои изменения в удаленный репозиторий и загрузить обновления в свою локальную систему.

Но обратите внимание, что GitHub имеет жесткое ограничение в 25 МБ на файл и мягкое ограничение в 1 ГБ на репозиторий.

Спасибо, что прочитали эту статью! Оставьте несколько хлопков, если вам это интересно! Если у вас есть какие-либо вопросы, вы можете написать мне в социальных сетях или отправить мне электронное письмо (bharathrajn98 [at] gmail [dot] com).