Google Colaboratory — бесплатная среда Jupyter Notebook, которая выполняется на облачных серверах Google и позволяет использовать аппаратное оборудование бэкенда, например GPU and TPU. В результате вы можете работать со всеми возможностями Jupyter Notebook, не устанавливая его на локальной машине.
Colab поставляется (почти) со всеми настройками, позволяющими начать процесс программирования, за исключением датасетов. Как же с помощью Colab получить к ним доступ?
В данной статье мы рассмотрим:
- как загружать данные в Colab из разных источников;
- как произвести обратную запись из Colab в эти источники данных;
- ограничения Google Colab при работе с внешними файлами.
Операции с директориями и файлами в Google Colab
Поскольку Colab позволяет делать все, что угодно, в локально размещенном Jupyter Notebook, то появляется возможность работать с командами оболочки, такими как ls
, dir
, pwd
, cd
, cat
, echo
и т.д., с помощью магической команды для строки (%
) или bash-команды (!
).
Для просмотра структуры директории воспользуйтесь панелью файлового менеджера слева.
Как загружать и скачивать файлы в/из Google Colab
Поскольку блокнот Colab размещается на облачных серверах Google, то по умолчанию отсутствует прямой доступ к файлам на вашем локальном диске (в отличие от расположенного на компьютере блокнота) или в любой другой среде.
Однако Colab предоставляет разные варианты подключения к практически любому источнику данных. Посмотрим, как это происходит.
Обращение к GitHub из Google Colab
Вы можете либо клонировать весь репозиторий GitHub в среду Colab, либо получить доступ к отдельным файлам по их необработанной ссылке.
Клонирование репозитория GitHub
Клонирование репозитория Github в среду Colab происходит по такому же принципу, как и на локальный компьютер, а именно с помощью git clone
. По завершении этой процедуры обновите менеджер файлов для просмотра содержимого.
И теперь файлы можно читать точно так же, как и на локальном компьютере.
Скачивание отдельных файлов непосредственно с GitHub
Если для работы нужно лишь несколько файлов, а не весь репозиторий, то можно обойтись без его клонирования в Colab и скачать эти файлы непосредственно с GitHub.
Для этого:
- Кликните на файл в репозитории.
- Кликните на View Raw.
- Скопируйте URL необработанного файла.
- Используйте этот URL как местоположение файла.
Обращение к локальной файловой системе через Google Colab
Читать и записывать файлы из/в локальную файловую систему можно с помощью менеджера или кода Python.
Обращение к локальным файлам через менеджер файлов
Загрузка файлов из локальной файловой системы через менеджер
Для загрузки любых файлов из локальной файловой системы в текущую рабочую директорию Colab можно воспользоваться опцией Upload в верхней части панели менеджера файлов.
Для загрузки файлов напрямую в поддиректорию нужно:
- Кликнуть на три точки, появляющиеся при наведении курсора на каталог.
- Выбрать опцию Upload.
3. Выбрать файлы для загрузки из диалогового окна File Upload.
4. Подождать завершения загрузки, процесс выполнения которой отображается в нижней части панели менеджера файлов.
По окончании процесса загрузки читать файлы можно привычным для вас способом.
Скачивание файлов в локальную файловую систему через менеджер файлов
Кликните на три точки, появляющиеся при наведении курсора на имя файла и выберите опцию Download.
Обращение к локальной файловой системе посредством кода Python
Для осуществления этого шага предварительно требуется импортировать модуль files
из google.colab library
:
from google.colab import files
Загрузка файлов из локальной файловой системы посредством кода Python
Применяем метод загрузки объекта files
:
uploaded = files.upload()
В результате открывается диалоговое окно File Upload:
Выбираем файлы для загрузки и ждем завершения. Ход ее выполнения отображается:
Объект uploaded
является словарем, где имена файлов и их содержимое хранятся в виде пар “ключ-значение”:
По окончании загрузки считать его можно точно так же, как и любой другой файл из Colab:
df4 = pd.read_json("News_Category_Dataset_v2.json", lines=True)
Также есть способ считать его напрямую из директории uploaded
, используя библиотеку io
:
import io
df5 = pd.read_json(io.BytesIO(uploaded['News_Category_Dataset_v2.json']), lines=True)
Убедитесь, что имя файла соответствует тому файлу, который вы хотите скачать.
Скачивание файлов из Colab в локальную систему посредством кода Python
Применение метода download
объекта files
позволяет скачать любой файл из Colab на локальный диск. Процесс выполнения отображается, и по его завершении можно выбрать на локальном компьютере место для сохранения файла.
Обращение к Google Диску из Google Colab
Рассмотрим пошагово, как с помощью модуля drive
из google.colab
можно смонтировать весь Google Диск в Colab:
1. Выполняем следующий код с целью получения ссылки для аутентификации:
from google.colab import drive
drive.mount('/content/gdrive')
2. Открываем ссылку.
3. Выбираем аккаунт Google, диск которого нужно смонтировать.
4. Разрешаем Google Drive Stream доступ к вашему аккаунту Google.
5. Копируем отображенный код, вставляем его в текстовое окно, как показано ниже, и нажимаем Enter.
По окончании монтирования получаем сообщение “Mounted at /content/gdrive” (”Смонтировано в/содержимое/gdrive”), после чего можно просматривать содержимое диска из панели менеджера файлов.
Теперь взаимодействовать с Google Диск можно точно так же, как и с каталогом в среде Colab. Любые изменения, связанные с этим каталогом, будут сразу же отображаться на Google Диске, файлы которого вы можете читать как и любые другие.
Кроме того, можно даже напрямую делать запись из Colab на Google Диск, применяя обычные операции с файлами/каталогами.
! touch "/content/gdrive/My Drive/sample_file.txt"
Эта команда создаст файл на Google Диске, который отобразится на панели менеджера файлов при ее обновлении:
Обращение к Google Таблицам из Google Colab
Для обращения к Google Таблицам:
- Прежде всего, необходимо аутентифицировать аккаунт для соединения с Colab. С этой целью выполняем следующий код:
from google.colab import auth
auth.authenticate_user()
2. В результате получаем ссылку для аутентификации и открываем ее.
3. Выбираем аккаунт Google для соединения.
4. Разрешаем Google Cloud SDK доступ к вашему аккаунту Google.
5. Наконец, копируем отображаемый код, вставляем его в текстовое окно и нажимаем Enter.
Для взаимодействия с Google Таблицами потребуется импортировать предустановленную библиотеку gspread. Чтобы разрешить ей доступ к вашему аккаунту Google воспользуемся методом GoogleCredentials
из предустановленной библиотеки oauth2client.client:
import gspread
from oauth2client.client import GoogleCredentials
gc = gspread.authorize(GoogleCredentials.get_application_default())
После выполнения кода в текущей рабочей директории будет создан файл adc.json с учетными данными, которые нужны gspread для получения доступа к вашему аккаунту Google.
Теперь создавайте или скачивайте Google таблицы напрямую из среды Colab.
Создание/обновление Google таблицы в Colab
- Создаем рабочую книгу с помощью метода
create
объектаgc
:
wb = gc.create('demo')
2. Как только она готова, можно ее посмотреть на sheets.google.com.
3. Прежде всего, открываем рабочую книгу для записи в нее значений:
ws = gc.open('demo').sheet1
4. Затем выбираем ячейки для заполнения:
5. Таким образом мы создаем список ячеек с индексами (R1C1) и значениями (на данный момент пустыми). Можно изменить отдельные ячейки, обновив их атрибут значения:
6. Для обновления этих ячеек в рабочей таблице применяем метод update_cells
:
7. Все изменения отображаются в вашей Google таблице.
Скачивание данных из Google таблицы
1. Открываем рабочую книгу с помощью методаopen
объекта gc
:
wb = gc.open('demo')
2. Затем считываем все строки отдельной рабочей таблицы, задействуя метод get_all_values
:
3. Для загрузки этих данных в датафрейм задействуем метод from_record
объекта DataFrame
:
Обращение к Google Cloud Storage (GCS) из Google Colab
Для работы с GCS необходим проект Google Cloud (GCP). Вы можете создавать и подключаться к корзинам GCS в Colab через предустановленную утилиту командной строки gsutil
.
1. Сначала указываем ID проекта:
project_id = '<project_ID>'
2. Для доступа к GCS проводим аутентификацию вашего аккаунта Google:
from google.colab import auth
auth.authenticate_user()
3. Выполнив вышеуказанный код, получаем ссылку для аутентификации и открываем ее.
4. Выбираем аккаунт Google для соединения.
5. Разрешаем доступ Google Cloud SDK к вашему аккаунту Google.
6. Теперь копируем отображаемый код, вставляем его в текстовое окно и нажимаем Enter.
7. Затем настраиваем gsutil
для работы с проектом:
! gcloud config set project {project_id}
8. Вы можете создать корзину с помощью соответствующей команды mb
(“make bucket”). У корзин GCP должны быть универсальные уникальные имена, поэтому воспользуемся предустановленной библиотекой uuid
для создания такого рода ID:
import uuid
bucket_name = f'sample-bucket-{uuid.uuid1()}'
! gsutil mb gs://{bucket_name}
9. Как только корзина готова, загружаем в нее файл из среды Colab:
! gsutil cp /tmp/to_upload.txt gs://{bucket_name}/
10. По окончании загрузки файл становится видимым в браузере GCS для вашего проекта: https://console.cloud.google.com/storage/browser?project=<project_id>
! gsutil cp gs://{bucket_name}/{filename} {download_location}
По завершении скачивания файл отображается на панели менеджера файлов в Colab в указанном месте.
Обращение к AWS S3 из Google Colab
Для доступа к S3 из Colab потребуется создать аккаунт AWS, настроить IAM, а также сгенерировать ключ доступа и секретный ключ доступа. Необходимо также установить библиотеку awscli в среду Colab:
1. Устанавливаем библиотеку awscli:
! pip install awscli
2. После установки запускаем настройку AWS командой aws configure
:
3. Вводим access_key
и secret_access_key
в текстовое окно и нажимаем Enter:
Теперь можно скачивать любые файлы из S3:
! aws s3 cp s3://{bucket_name} ./{download_location} --recursive
--exclude "*" --include {filepath_on_s3}
filepath_on_s3
позволяет указать один файл или подобрать несколько файлов по шаблону.
Вам придет уведомление о завершении скачивания, после чего файлы будут доступны в заданном месте для дальнейшего использования.
Для загрузки файла просто поменяйте местами аргументы источника и назначения:
! aws s3 cp ./{upload_from} s3://{bucket_name} --recursive --exclude "*" --include {file_to_upload}
file_to_upload
позволяет указать один файл или подобрать несколько файлов по шаблону.
Вы получите уведомление об окончании загрузки, и загруженные файлы будут доступны в корзине S3 в заданном каталоге: https://s3.console.aws.amazon.com/s3/buckets/{bucket_name}/{folder}/?region={region}
Обращение к датасетам Kaggle из Google Colab
Для скачивания датасетов из Kaggle требуется наличие аккаунта и API-токена.
- Для создания API-токена заходим в My Account, после чего — Create New API Token.
- Открываем файл
kaggle.json
и копируем его содержимое в виде {"username":"########", "key":"################################"
}. - Выполняем следующие команды в Colab:
! mkdir ~/.kaggle #создаем каталог .kaggle в корневой директории
! echo '<PASTE_CONTENTS_OF_KAGGLE_API_JSON>' > ~/.kaggle/kaggle.json #записываем учетные данные kaggle API в kaggle.json
! chmod 600 ~/.kaggle/kaggle.json # устанавливаем разрешения
! pip install kaggle #устанавливаем библиотеку kaggle
4. После создания файла kaggle.json
в Colab и установки библиотеки Kaggle приступаем к поиску датасета с помощью следующей команды:
! kaggle datasets list -s {KEYWORD}
5. Скачиваем нужный датасет с помощью команды:
! kaggle datasets download -d {DATASET NAME} -p /content/kaggle/
Датасет будет загружен и доступен по указанному пути (в данном случае /content/kaggle/
).
Обращение к базам данных MySQL из Google Colab
1. Для работы с реляционными базами данных необходимо импортировать предустановленную библиотеку sqlalchemy.
import sqlalchemy
2. Вводим данные для подключения и создаем движок:
HOSTNAME = 'ENTER_HOSTNAME'
USER = 'ENTER_USERNAME'
PASSWORD = 'ENTER_PASSWORD'
DATABASE = 'ENTER_DATABASE_NAME'
connection_string = f'mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOSTNAME}/{MYSQL_DATABASE}'
engine = sqlalchemy.create_engine(connection_string)
3. Создаем SQL-запрос и загружаем его результаты в датафрейм с помощью pd.read_sql_query()
:
query = f"SELECT * FROM {DATABASE}.{TABLE}"
import pandas as pd
df = pd.read_sql_query(query, engine)
Ограничения Google Colab при работе с файлами
При работе с Colab важно помнить о том, что доступ к загружаемым файл ограничен по времени. Colab — это временная среда, в которой тайм-аут простоя составляет 90 минут, а абсолютный тайм-аут — 12 часов. Это значит, что отключение среды выполнения происходит в случае 90 минутного простоя или 12-ти часового использования. Такое отключение приводит к потери всех переменных, состояний, установленных пакетов и файлов, вследствие чего при повторном подключении вас ждет встреча с абсолютно новой и чистой средой.
Кроме того, дисковое пространство Colab ограничено 108 Гб, только 77 Гб из которых доступны пользователю. Этого объема достаточно для решения большинства задач, но вот при работе с крупными датасетами, например изображениями или видео, данное обстоятельство нельзя упускать из внимания.
Заключение
Google Colab — превосходный инструмент для тех, кто стремится обуздать мощь высокопроизводительных вычислительных ресурсов, таких как GPU, без оглядки на их стоимость.
В данной статье мы рассмотрели большинство способов, благодаря которым вы сможете максимально продуктивно работать с Google Colab, читая внешние файлы или данные в Google Colab и производя обратную запись из нее в эти внешние источники данных.
В зависимости от сценария использования или архитектуры данных вы можете запросто применять вышеописанные методы для подключения источника данных напрямую к Colab и приступать к программированию.
Полезные информационные ресурсы
- Getting Started with Google Colab | How to use Google Colab
- External data: Local Files, Drive, Sheets and Cloud Storage
- Importing Data to Google Colab — the CLEAN Way
- Get Started: 3 Ways to Load CSV files into Colab by A. Apte
- Downloading Datasets into Google Drive via Google Colab by Kevin Luk
Читайте также:
- ИИ: решение неверно поставленных задач
- Будущее практического применения чат-ботов
- Межорганизационный обмен данными
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Siddhant Sadangi: How To Manage Files in Google Colab