Сохранение данных в 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)