Googleの 新しくオープンソース化されたColaboratory のセッション間でファイルを保持する方法を見つけた人はいますか?
サンプルノートブックを使用して、Googleドライブインスタンスからcsvファイルを正常に認証および転送し、/ tmp、〜、および〜/ datalabに格納しました。 Pandasはディスク上でも問題なく読み取ることができます。しかし、セッションがタイムアウトすると、ファイルシステム全体が消去され、新しいVMがスピンされますアップ、ダウンロードしたファイルなし。
Googleの Colaboratory Faq を考えると、これは驚くことではないでしょう。
Q:コードはどこで実行されますか?ブラウザウィンドウを閉じると、実行状態はどうなりますか?
A:アカウント専用の仮想マシンでコードが実行されます。仮想マシンは、しばらくアイドル状態になるとリサイクルされ、システムによって強制される最大の有効期間があります。
それを考えると、これは機能かもしれません(つまり、「共同作業で問題なく動作するGoogle Cloud Storageを使用してください」)。ツールを最初に使用したとき、は、My File/Colab NotebooksGoogleドライブフォルダは、ノートブックが実行されていたVMインスタンスにもロードされます:/
あなたの解釈は正しいです。 VMは一時的なものであり、非アクティブ期間が過ぎるとリサイクルされます。 VM自体には永続データのメカニズムはありません。
データを保持するには、ドライブ、GCS、またはその他のクラウドホスティングプロバイダーなど、VMの外部のどこかにデータを保存する必要があります。
外部ソースからデータをロードおよび保存するためのいくつかのレシピは、 I/Oサンプルノート で利用できます。
これが最善のソリューションであるかどうかはわかりませんが、次のような自動認証を使用してColabとドライブ間でデータを同期できます。 https://Gist.github.com/rdinse/159f5d77f13d03e0183cb8f7154b170a
Clouderizer は、長いセットアップ(ホストとしてのみgoogle colabを使用するため)と作業するための小さなスペースを犠牲にして、データの永続性を提供します。
しかし、私の意見では、進行状況を保存するのを忘れた場合、ファイルを「リサイクル」するよりも最善です。
コードの前に置いて、コードを実行する前に常にファイルをダウンロードします
!wget -q http://www.yoursite.com/file.csv
セッション全体の保存と復元に興味がある人のために、ここで使用しているスニペットを紹介します。
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)