Сохранение данных в Google Colaboratory

Кто-нибудь придумал способ сохранить файлы, сохраненные на всех сеансах, в Google недавно открытую Colaboratory?

Используя образцы ноутбуков, я успешно аутентифицирую и переношу CSV файлы из своего экземпляра Google Диска и спрятал их в /tmp, my ~ и ~/datalab. Панды могут читать их просто отлично от диска. Но как только сеанс заканчивается, похоже, что вся файловая система уничтожена, а новая виртуальная машина развернута без загруженных файлов.

Я думаю, это неудивительно, учитывая Google Colaboratory Faq:

Q: Где мой код выполнен? Что произойдет с моим состоянием выполнения, если я закрою окно браузера?

A: Код выполняется на виртуальной машине, посвященной вашей учетной записи. Виртуальные машины перерабатываются в режиме ожидания на некоторое время и имеют максимальный срок службы, обеспечиваемый системой.

Учитывая это, возможно, это функция (например, "используйте Google Cloud Storage, которая отлично работает в Colaboratory")? Когда я впервые использовал этот инструмент, я надеялся, что любые файлы.csv, которые были в папке Google Диска My File/Colab Notebooks, также будут загружены на экземпляр VM, в котором работал ноутбук:/

Ответ 1

Ваша интерпретация верна. Виртуальные машины эфемерны и перерабатываются после периодов бездействия. Там нет механизма для постоянных данных на самой виртуальной машине прямо сейчас.

Чтобы данные сохранялись, вам нужно хранить их где-то за пределами виртуальной машины, например, Drive, GCS или любого другого поставщика облачного хостинга.

Некоторые рецепты загрузки и сохранения данных из внешних источников доступны в записной книжке примера ввода/вывода.

Ответ 2

Не уверен, что это лучшее решение, но вы можете синхронизировать данные между Colab и Drive с автоматической аутентификацией, например: https://gist.github.com/rdinse/159f5d77f13d03e0183cb8f7154b170a

Ответ 3

Clouderizer может обеспечить некоторую настойчивость данных за счет длительной настройки (поскольку вы используете google colab только как хост) и мало места для работы.

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

Ответ 4

Как вы указали, файловая система Google Colab Laboratory эфемерна. Существуют обходные пути, хотя существуют задержки в сети и накладные расходы на код: например, вы можете использовать стандартный код в своих записных книжках для монтирования внешних файловых систем, таких как GDrive (см. Их примерную записную книжку).

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

Ответ 5

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

! wget -q http://www.yoursite.com/file.csv

Ответ 6

Если кто-то заинтересован в сохранении и восстановлении всего сеанса, вот фрагмент, который я использую, который может оказаться полезным:

import os
import dill
from google.colab import drive

backup_dir = 'drive/My Drive/colab_sessions'
backup_file = 'notebook_env.db'
backup_path = backup_dir + '/' + backup_file

def init_drive():
  # create directory if not exist
  drive.mount('drive')
  if not os.path.exists(backup_dir):
    !mkdir backup_dir

def restart_kernel():
  os._exit(00)

def save_session():
  init_drive()
  dill.dump_session(backup_path)

def load_session():
  init_drive()
  dill.load_session(backup_path)