Управление файлами в Google Colab



Книга Управление файлами в Google Colab

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-команды (!).


Для просмотра структуры директории воспользуйтесь панелью файлового менеджера слева. 


Просмотр директорий в Colab

Как загружать и скачивать файлы в/из Google Colab 


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


Однако Colab предоставляет разные варианты подключения к практически любому источнику данных. Посмотрим, как это происходит. 


Обращение к GitHub из Google Colab 


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


Клонирование репозитория GitHub 


Клонирование репозитория Github в среду Colab происходит по такому же принципу, как и на локальный компьютер, а именно с помощью git clone. По завершении этой процедуры обновите менеджер файлов для просмотра содержимого. 


И теперь файлы можно читать точно так же, как и на локальном компьютере. 


Клонирование репозитория в Colab 

Скачивание отдельных файлов непосредственно с GitHub 


Если для работы нужно лишь несколько файлов, а не весь репозиторий, то можно обойтись без его клонирования в Colab и скачать эти файлы непосредственно с GitHub.


Для этого: 


  1. Кликните на файл в репозитории. 
  2. Кликните на View Raw. 
  3. Скопируйте URL необработанного файла. 
  4. Используйте этот URL как местоположение файла. 

Чтение файлов, скаченных в Colab 

Обращение к локальной файловой системе через Google Colab  


Читать и записывать файлы из/в локальную файловую систему можно с помощью менеджера или кода Python. 


Обращение к локальным файлам через менеджер файлов 


Загрузка файлов из локальной файловой системы через менеджер 


Для загрузки любых файлов из локальной файловой системы в текущую рабочую директорию Colab можно воспользоваться опцией Upload в верхней части панели менеджера файлов.


Для загрузки файлов напрямую в поддиректорию нужно: 


  1. Кликнуть на три точки, появляющиеся при наведении курсора на каталог. 
  2. Выбрать опцию Upload. 

Загрузка файлов из локальной системы в Colab 

3. Выбрать файлы для загрузки из диалогового окна File Upload. 


4. Подождать завершения загрузки, процесс выполнения которой отображается в нижней части панели менеджера файлов. 


Процесс выполнения загрузки в Colab 

По окончании процесса загрузки читать файлы можно привычным для вас способом. 


Чтение файлов, загруженных в Colab 

Скачивание файлов в локальную файловую систему через менеджер файлов 


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


Скачивание файлов из Colab в локальную систему 

Обращение к локальной файловой системе посредством кода Python 


Для осуществления этого шага предварительно требуется импортировать модуль files из google.colab library:


from google.colab import files

Загрузка файлов из локальной файловой системы посредством кода Python 


Применяем метод загрузки объекта files:


uploaded = files.upload()

В результате открывается диалоговое окно File Upload: 


Загрузка файлов в Colab программным способом 

Выбираем файлы для загрузки и ждем завершения. Ход ее выполнения отображается: 


Процесс программной загрузки файлов 

Объект 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 на локальный диск. Процесс выполнения отображается, и по его завершении можно выбрать на локальном компьютере место для сохранения файла.  


Скачивание файлов из 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. 


Монтирование Google Диска в Colab 

По окончании монтирования получаем сообщение “Mounted at /content/gdrive” (”Смонтировано в/содержимое/gdrive”), после чего можно просматривать содержимое диска из панели менеджера файлов. 


Изучение содержимого Google Диска в Colab 

Теперь взаимодействовать с Google Диск можно точно так же, как и с каталогом в среде Colab. Любые изменения, связанные с этим каталогом, будут сразу же отображаться на Google Диске, файлы которого вы можете читать как и любые другие. 


Кроме того, можно даже напрямую делать запись из Colab на Google Диск, применяя обычные операции с файлами/каталогами.


! touch "/content/gdrive/My Drive/sample_file.txt"

Эта команда создаст файл на Google Диске, который отобразится на панели менеджера файлов при ее обновлении: 


Загрузка файла из Colab на Google Диск

Загрузка файла из Colab на Google Диск 

Обращение к Google Таблицам из Google Colab 


Для обращения к Google Таблицам: 


  1. Прежде всего, необходимо аутентифицировать аккаунт для соединения с Colab. С этой целью выполняем следующий код: 

from google.colab import auth
auth.authenticate_user()

2. В результате получаем ссылку для аутентификации и открываем ее. 


3. Выбираем аккаунт Google для соединения. 


4. Разрешаем Google Cloud SDK доступ к вашему аккаунту Google. 


5. Наконец, копируем отображаемый код, вставляем его в текстовое окно и нажимаем Enter. 


Аутентификация Google Cloud SDK

Для взаимодействия с Google Таблицами потребуется импортировать предустановленную библиотеку gspread. Чтобы разрешить ей доступ к вашему аккаунту Google воспользуемся методом GoogleCredentials из предустановленной библиотеки oauth2client.client:


import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

После выполнения кода в текущей рабочей директории будет создан файл adc.json с учетными данными, которые нужны gspread для получения доступа к вашему аккаунту Google.


Файл adc.json для Google Таблиц 

Теперь создавайте или скачивайте Google таблицы напрямую из среды Colab. 


Создание/обновление Google таблицы в Colab 


  1. Создаем рабочую книгу с помощью метода create объекта gc:

wb = gc.create('demo')

2. Как только она готова, можно ее посмотреть на sheets.google.com


Загрузка таблиц из Colab в Google Tаблицы 

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


ws = gc.open('demo').sheet1

4. Затем выбираем ячейки для заполнения: 


Обновление таблиц в Google Tаблицах в Colab (1)

5. Таким образом мы создаем список ячеек с индексами (R1C1) и значениями (на данный момент пустыми). Можно изменить отдельные ячейки, обновив их атрибут значения: 


Обновление таблиц в Google Таблицах в Colab (2)

6. Для обновления этих ячеек в рабочей таблице применяем метод update_cells


Обновление таблиц в Google Таблицах в Colab (3) 

7. Все изменения отображаются в вашей Google таблице. 


Просмотр изменений 

Скачивание данных из Google таблицы 


1. Открываем рабочую книгу с помощью методаopen объекта gc


wb = gc.open('demo')

2. Затем считываем все строки отдельной рабочей таблицы, задействуя метод get_all_values


Скачивание таблиц из Google Таблиц в Colab 

3. Для загрузки этих данных в датафрейм задействуем метод from_record объекта DataFrame


Создание датафрейма из скаченных Google Таблиц 

Обращение к 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. 


Аутентификация Google Could SDK

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:


Конфигурация AWS

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-токена.  


  1. Для создания API-токена заходим в My Account, после чего  —  Create New API Token. 
  2. Открываем файл kaggle.json и копируем его содержимое в виде {"username":"########", "key":"################################"}. 
  3. Выполняем следующие команды в 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 и приступать к программированию. 


Полезные информационные ресурсы 





2676   0  

Comments

    Ничего не найдено.