構成ファイルを使用して、標準の AllenNLP モデル トレーニングですべてのモデル/状態の重みのシリアル化を無効にしたいと考えていjsonnet
ます。
その理由は、Optuna を使用してハイパーパラメータの自動最適化を実行しているためです。数十のモデルをテストすると、ドライブがすぐにいっぱいになります。num_serialized_models_to_keep
に設定して、チェックポインターを既に無効にしています0
。
trainer +: {
checkpointer +: {
num_serialized_models_to_keep: 0,
},
中間メトリクスなどのロギングに関するデフォルトの動作が必要なため、に設定serialization_dir
したくありません。デフォルトのモデル状態、トレーニング状態、最適なモデルの重みの書き込みNone
を無効にしたいだけです。
上記で設定したオプション以外に、モデルの重みのすべてのシリアル化を無効にするデフォルトのトレーナーまたはチェックポインター オプションはありますか? API ドキュメントと Web ページを確認しましたが、何も見つかりませんでした。
そのようなオプションの機能を自分で定義する必要がある場合、AllenNLP のどの基本関数を Model サブクラスでオーバーライドする必要がありますか?
または、トレーニングが終了したときに中間モデル状態をクリーンアップするためのユーティリティはありますか?
編集: @petew の回答は、カスタム チェックポインターの解決策を示していますが、このコードを私のユースケースで見つけられるようにする方法が明確ではありませんallennlp train
。
以下のように、設定ファイルから custom_checkpointer を呼び出せるようにしたいと思います。
trainer +: {
checkpointer +: {
type: empty,
},
を呼び出すときにチェックポインターをロードするベストプラクティスは何allennlp train --include-package <$my_package>
ですか?
my_package/models
s やなどのサブディレクトリにサブモジュールを含む my_package がありmy_package/training
ます。カスタム チェックポインター コードを に配置したいmy_package/training/custom_checkpointer.py
私のメイン モデルは にありmy_package/models/main_model.py
ます。カスタム チェックポインターを使用するには、main_model クラスのコード/関数を編集またはインポートする必要がありますか?