136 lines
5.9 KiB
Markdown
136 lines
5.9 KiB
Markdown
<!--Copyright 2020 The HuggingFace Team. All rights reserved.
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
|
||
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||
specific language governing permissions and limitations under the License.
|
||
|
||
⚠️ Note that this file is in Markdown but contain specific syntax for our doc-builder (similar to MDX) that may not be
|
||
rendered properly in your Markdown viewer.
|
||
|
||
-->
|
||
|
||
|
||
# コールバック数
|
||
|
||
コールバックは、PyTorch のトレーニング ループの動作をカスタマイズできるオブジェクトです。
|
||
トレーニング ループを検査できる [`Trainer`] (この機能は TensorFlow にはまだ実装されていません)
|
||
状態を確認し (進捗レポート、TensorBoard または他の ML プラットフォームへのログ記録など)、決定を下します (初期段階など)。
|
||
停止中)。
|
||
|
||
コールバックは、返される [`TrainerControl`] オブジェクトを除けば、「読み取り専用」のコード部分です。
|
||
トレーニング ループ内では何も変更できません。トレーニング ループの変更が必要なカスタマイズの場合は、次のことを行う必要があります。
|
||
[`Trainer`] をサブクラス化し、必要なメソッドをオーバーライドします (例については、[trainer](trainer) を参照してください)。
|
||
|
||
デフォルトでは、`TrainingArguments.report_to` は `"all"` に設定されているため、[`Trainer`] は次のコールバックを使用します。
|
||
|
||
- [`DefaultFlowCallback`] は、ログ記録、保存、評価のデフォルトの動作を処理します。
|
||
- [`PrinterCallback`] または [`ProgressCallback`] で進行状況を表示し、
|
||
ログ (最初のログは、[`TrainingArguments`] を通じて tqdm を非アクティブ化する場合に使用され、そうでない場合に使用されます)
|
||
2番目です)。
|
||
- [`~integrations.TensorBoardCallback`] (PyTorch >= 1.4 を介して) tensorboard にアクセスできる場合
|
||
またはテンソルボードX)。
|
||
- [`~integrations.WandbCallback`] [wandb](https://www.wandb.com/) がインストールされている場合。
|
||
- [`~integrations.CometCallback`] [comet_ml](https://www.comet.ml/site/) がインストールされている場合。
|
||
- [mlflow](https://www.mlflow.org/) がインストールされている場合は [`~integrations.MLflowCallback`]。
|
||
- [`~integrations.NeptuneCallback`] [neptune](https://neptune.ai/) がインストールされている場合。
|
||
- [`~integrations.AzureMLCallback`] [azureml-sdk](https://pypi.org/project/azureml-sdk/) の場合
|
||
インストールされています。
|
||
- [`~integrations.CodeCarbonCallback`] [codecarbon](https://pypi.org/project/codecarbon/) の場合
|
||
インストールされています。
|
||
- [`~integrations.ClearMLCallback`] [clearml](https://github.com/allegroai/clearml) がインストールされている場合。
|
||
- [`~integrations.DagsHubCallback`] [dagshub](https://dagshub.com/) がインストールされている場合。
|
||
- [`~integrations.FlyteCallback`] [flyte](https://flyte.org/) がインストールされている場合。
|
||
- [`~integrations.DVCLiveCallback`] [dvclive](https://www.dvc.org/doc/dvclive) がインストールされている場合。
|
||
|
||
パッケージがインストールされているが、付随する統合を使用したくない場合は、`TrainingArguments.report_to` を、使用したい統合のみのリストに変更できます (例: `["azure_ml", "wandb"]`) 。
|
||
|
||
コールバックを実装するメインクラスは [`TrainerCallback`] です。それは、
|
||
[`TrainingArguments`] は [`Trainer`] をインスタンス化するために使用され、それにアクセスできます。
|
||
[`TrainerState`] を介してトレーナーの内部状態を取得し、トレーニング ループ上でいくつかのアクションを実行できます。
|
||
[`TrainerControl`]。
|
||
|
||
## 利用可能なコールバック
|
||
|
||
ライブラリで利用可能な [`TrainerCallback`] のリストは次のとおりです。
|
||
|
||
[[autodoc]] integrations.CometCallback
|
||
- setup
|
||
|
||
[[autodoc]] DefaultFlowCallback
|
||
|
||
[[autodoc]] PrinterCallback
|
||
|
||
[[autodoc]] ProgressCallback
|
||
|
||
[[autodoc]] EarlyStoppingCallback
|
||
|
||
[[autodoc]] integrations.TensorBoardCallback
|
||
|
||
[[autodoc]] integrations.WandbCallback
|
||
- setup
|
||
|
||
[[autodoc]] integrations.MLflowCallback
|
||
- setup
|
||
|
||
[[autodoc]] integrations.AzureMLCallback
|
||
|
||
[[autodoc]] integrations.CodeCarbonCallback
|
||
|
||
[[autodoc]] integrations.NeptuneCallback
|
||
|
||
[[autodoc]] integrations.ClearMLCallback
|
||
|
||
[[autodoc]] integrations.DagsHubCallback
|
||
|
||
[[autodoc]] integrations.FlyteCallback
|
||
|
||
[[autodoc]] integrations.DVCLiveCallback
|
||
- setup
|
||
|
||
## TrainerCallback
|
||
|
||
[[autodoc]] TrainerCallback
|
||
|
||
以下は、カスタム コールバックを PyTorch [`Trainer`] に登録する方法の例です。
|
||
|
||
```python
|
||
class MyCallback(TrainerCallback):
|
||
"A callback that prints a message at the beginning of training"
|
||
|
||
def on_train_begin(self, args, state, control, **kwargs):
|
||
print("Starting training")
|
||
|
||
|
||
trainer = Trainer(
|
||
model,
|
||
args,
|
||
train_dataset=train_dataset,
|
||
eval_dataset=eval_dataset,
|
||
callbacks=[MyCallback], # We can either pass the callback class this way or an instance of it (MyCallback())
|
||
)
|
||
```
|
||
|
||
コールバックを登録する別の方法は、次のように `trainer.add_callback()` を呼び出すことです。
|
||
|
||
```python
|
||
trainer = Trainer(...)
|
||
trainer.add_callback(MyCallback)
|
||
# Alternatively, we can pass an instance of the callback class
|
||
trainer.add_callback(MyCallback())
|
||
```
|
||
|
||
## TrainerState
|
||
|
||
[[autodoc]] TrainerState
|
||
|
||
## TrainerControl
|
||
|
||
[[autodoc]] TrainerControl
|
||
|
||
|