Troubleshoot Sweeps
Troubleshoot common error messages with the guidance suggested.
CommError, Run does not exist
and ERROR Error uploading
この2つのエラーメッセージが両方とも返される場合、W&B Run ID が定義されている可能性があります。例えば、Jupyter ノートブックや Python スクリプトのどこかに次のようなコードスニペットが定義されているかもしれません:
wandb.init(id="some-string")
W&B Sweeps では Run ID を設定することはできません。W&B が自動的にランダムでユニークな ID を生成するからです。
W&B Run ID はプロジェクト内でユニークである必要があります。
カスタムの名前を設定したい場合は、W&B を初期化する際に name
パラメータに名前を渡すことをお勧めします。例えば、テーブルやグラフに表示される読みやすい名前を設定できます:
wandb.init(name="a helpful readable run name")
Cuda out of memory
このエラーメッセージが表示された場合は、コードをプロセスベースの実行にリファクタリングしてください。具体的には、コードを Python スクリプトに書き直し、W&B Sweep Agent を W&B Python SDK ではなく CLI から呼び出します。
例えば、コードを書き直して train.py
という名前の Python スクリプトにすると仮定します。トレーニングスクリプト (train.py
) の名前を YAML Sweep configuration ファイル (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 Sweep を初期化します:
wandb sweep config.yaml
返された W&B Sweep ID をメモしておきます。次に、Sweep ジョブを CLI から wandb agent
を使用して開始します。Python SDK (wandb.agent
) ではなく CLI を使用します。以下のコードスニペットの sweep_ID
を前のステップで返された Sweep 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 ノートブックで、sweep の最適化に使用する 正確な メトリック名を使用してください。設定ファイルの詳細については、Define sweep configuration を参照してください。