原因は前処理の一部に実行の度に結果が変わってしまう部分があったため。random seedは固定していたがそれでもだめなところがあった。
それは、以下のようにglobでファイルを取得している箇所。
for p in Path("/path/to").glob("*"): ...
Dockerコンテナにsshでログインしてpythonスクリプトを実行する分には変わらないが、SageMakerからProcessing Jobを起動して前処理をすると何故か取得するファイルの順序が実行の度に変わる。。そうすると、データセットの中のファイルの順序が変わり、学習の再現性が低くなってしまう。
以下のようにsortすると毎回同じ順序でファイルパスを取得出来るようになった。
for p in sorted(Path("/path/to").glob("*")): ...
参考: