yag's blog

Twitter以上Zenn以下なことを書く場所

EOFError: Ran out of input

Zennやブログでは綺麗に纏めたことや成功したことをアウトプットしがちなので、ここでは駄目だったこともアウトプットしていこうと思う。

とある一連のPythonコードの中で、大量のドキュメントのsentence embeddingを計算して結果をpickleファイルに吐き出し、そのpickleファイルを別のPythonコードで読み込む流れがあったのだが、後者の方でどうしてもpickleファイルが読み込めない。エラーは以下の通り。

EOFError: Ran out of input

pickleファイルはwb/rbで読み書きされているので、ファイルのフォーマットとしては問題ないはず。でも読み込めない。気になる点を挙げるとするならば、pickleファイルは15GBくらいあり、小さいサイズのファイルで試しに書き出すと同一コードでも上手くいくというところ。Pythonが許容するpickleのファイルサイズやLinuxの何らかのulimitあたりに引っかかっているのではと思ったが、ざっくりと調べた限りでは分からなかった。

ちなみに、この1つ目のコードをフルで動かすとGPUマシンで8時間くらい必要で、デバッグイテレーションを回すのがほぼ困難という点も、課題解決の難しさに拍車をかけている。結果的に別のSerializationの方法でデータの受け渡しをすることにしたが、なんかモヤモヤしたものが残る。