スイープのトラブルシューティング
一般的なエラーメッセージに対処するための指針を提案します。
CommError, Run does not exist
および ERROR Error uploading
これら2つのエラーメッセージが両方とも返される場合、W&B Run IDが定義されている可能性があります。例として、JupyterノートブックやPythonスクリプトのどこかに以下のようなコードスニペットが定義されているかもしれません。
wandb.init(id="some-string")
W&Bスイープでは、Run IDを設定することはできません。なぜなら、Weights & Biasesは、W&Bスイープによって作成されたRunに対してランダムで一意のIDを自動的に生成するからです。
W&B Run IDは、プロジェクト内で一意である必要があります。
名前パラメータにカスタム名を設定して、テーブルやグラフに表示される名前を指定する場合は、Weights & Biasesを初期化する際に名前を渡すことをお勧めします。例えば、
wandb.init(name="a helpful readable run name")
Cuda out of memory
このエラーメッセージが表示された場合、プロセスベースの実行を使用するようにコードをリファクタリングしてください。具体的には、コードをPythonスクリプトに書き換え、W&B Python SDKの代わりにCLIからW&B スイープエージェントを呼び出します。
例として、コードをtrain.py
という名前のPythonスクリプトに書き換えたとします。トレーニングスクリプト(train.py
)の名前を、YAMLスイープ構成ファイル(この例ではconfig.yaml
)に追加します。
program: train.py
method: bayes
metric:
name: validation_loss
goal: maximize
parameters:
learning_rate:
min: 0.0001
max: 0.1
optimizer:
values: ["adam", "sgd"]
次に、train.py
Pythonスクリプトに以下を追加します。
if _name_ == "_main_":
train()
CLIに移動し、wandb sweepを使用してW&Bスイープを初期化します。
wandb sweep config.yaml
W&B スイープ ID をメモしておいてください。次に、Python SDK の wandb.agent
ではなく、CLI の wandb agent
を使ってスイープジョブを開始します。以下のコードスニペットで sweep_ID
を前のステップで返されたスイープ ID に置き換えてください。
wandb agent sweep_ID
anaconda 400 error
以下のエラーは、最適化するメトリックをログに記録しない場合に通常発生します。
wandb: ERROR Error while calling W&B API: anaconda 400 error:
{"code": 400, "message": "TypeError: bad operand type for unary -: 'NoneType'"}
YAML ファイルやネストされたディクショナリ内で、最適化する "metric" という名前のキーを指定します。このメトリックをログ(wandb.log
)に記録することを確認してください。さらに、Python スクリプトや Jupyter ノートブック内でスイープの最適化に定義した 正確な メトリック名を使用してください。設定ファイルの詳細については、スイープ設定の定義を参照してください。