Colabolatoryで UserWarning: An input could not be retrieved. It could be because a worker has died


Colaboratoryで学習をしようとしたら、少し学習が進んだタイミングで

UserWarning: An input could not be retrieved. It could be because a worker has died

が出てしまって学習が停止してしまうという自体が起こった。
ちょっと解決まで時間がかかったのでメモ。

状況

Google Driveをマウントして、ドライブからデータを読み込みCNNを回していた。

原因

Colabolatoryのファイルストリームが学習速度に追いついていない。

どうやらColabは不正利用防止のためか、あるところからFileStreamの速度を制限するっぽい?
そうなった場合、ファイルの読み込みに失敗するため上のようなエラーになるようだ。

<追記>
google driveは仮想的にマウントされてるに過ぎないために起こる問題のようです。

解決策

<追記>

ファイルをZipでDriveに置き、colab直下のcontent/にcpしてから解凍する方法が最も早いみたいです。
(体感ファイル容量というよりアクセス回数に依存して時間がかかるようです)

予めDriveからファイルをすべて読みこんでメモリに置く。

colabのメモリは潤沢なので今回はこのような手法をとった。これをやるとわかるがファイルの読み込みがなかなかに遅い。
colab直下のディレクトリ(colabのセッションごとに生成されるディレクトリ)に置いても大丈夫かも知れないが、そちらは未確認。

もっと良い方法などを知っている方がいれば教えていただけると幸いです。