概要
AWS SageMakerで学習インスタンスで学習したモデルをpickleをsave、notebook側でloadをしようとしたら、エラーが出たので対処方法を紹介する。
cloudpickleをつかう
pickleでは、シリアライズする側で
グローバル変数またはその変数を参照しているオブジェクトが
名前空間内に存在しない環境でシリアライズできない。
cloudpickle.dump(predictor, open('%s/model'% model_dir, 'wb'))
cloudpickleのバージョンは1.3.0
学習インスタンスではデフォルトが1.5.0になっている。
notebook側は1.3.0である。notebookを1.5.0にあげてもエラーがでたため、学習インスタンス側をバージョンダウンさせる必要がある。
このため、デプロイする際も学習インスタンス同様cloudpickleのバージョンを1.3.0に指定する。
まとめ
簡単なメモ書きになってしまったが、cloudpickleでエラーになった場合は
バージョンを確認すると良い。