このページでは、折れ線グラフの設定について詳しく説明します。折れ線グラフの操作の詳細については、Line plots overviewを参照してください.
X軸の範囲は、wandb.Run.log() でログした任意の整数値または浮動小数点値に設定できます。
利用可能な時間ベースの X軸 オプション:
- Step:
wandb.Run.log() が呼び出されるたびに増加します。モデルからログされたトレーニング step 数を反映します。 (デフォルト)
- Relative Time (Wall): プロセスの開始からの経過時間です。run を開始して 1 日間一時停止し、その後再開してログすると、その時点は 24 時間として表示されます。
- Relative Time (Process): 実行中のプロセス内での経過時間です。run を開始して 10 秒間実行し、1 日間一時停止してから再開すると、その時点は 10 秒として表示されます。
- Wall Time: グラフ上の最初の run の開始から経過した分数です。
- X range: デフォルトでは、X軸の最小値から最大値までが使用されます。最小値と最大値はカスタマイズできます.
Y軸の変数には、wandb.Run.log()でログした任意の整数値または浮動小数点値を設定できます。単一の値、値の配列、または値のヒストグラムを指定します。ある変数で 1500 個を超えるデータ点をログした場合、W&B は 1500 点までサンプリングします。
Runs table で run の色を変更すると、Y軸の線の色をカスタマイズできます。
利用可能な Y軸オプション:
- Y range: デフォルトでは、メトリクスの最小の正の値 (0 を含む) からメトリクスの最大値までの範囲になります。最小値と最大値はカスタマイズできます。
データポイントの表示に使用するサンプリングモードを選択します。
スムージング係数 を 0 から 1 の間で設定します。0 はスムージングなし、1 は最大のスムージングです。
利用可能なスムージング method:
- 時間加重 EMA (デフォルト) : 以前の点の重みを指数関数的に減衰させることで、時系列データを平滑化する手法です。
- 移動平均: 指定した x 値の前後のウィンドウ内にある点の平均値で、その点を置き換えます。
- ガウシアン: 点の加重平均を計算します。このとき、重みはガウス分布に従い、標準偏差はスムージングのパラメーターとして指定されます。
- スムージングなし
詳細については、折れ線グラフのスムージングを参照してください。
デフォルトのプロットの最小値および最大値のスケールから外れ値を除外するように、プロットのスケールを再調整します。この設定の影響は、プロットのサンプリングモードによって異なります。
- ランダムサンプリングモード: 外れ値を無視すると、5% 未満および 95% を超える点はプロットから除外されます。
- フルフィデリティモード: 外れ値を無視すると、すべての点が表示され、各 bucket の最後の値まで圧縮されたうえで、5% 未満および 95% を超える領域が網掛け表示されます。
デフォルトでは、プロットには Runs リストまたは Runs セットの先頭 10 件の Runs または Runs グループのみが表示されます。表示する Runs またはグループを制御するには、並び順を変更します。
Workspace では、設定に関係なく、最大 1000 件の run までしか表示できません。
プロットスタイルを選択します。
- 折れ線グラフ
- エリアプロット
- パーセンテージエリアプロット:
チャートタイプは Data タブで設定します。詳しくは を参照してください。
グループ化を有効にすると、すべての Runs を集約できます。また、特定の変数でグループ化することもできます。Runs table でグループ化を有効にすると、グループが自動的にグラフに反映されます。
- Group runs: プロットで Runs のグループ化を有効にします。下記のプロットの網掛け範囲を設定するには必須です。
- Group by: 必要に応じて column を選択します。その column で同じ値を持つすべての Runs が同じグループにまとめられます。
- Aggregation: グラフ上の線の値です。オプションは、グループの平均、中央値、最小値、最大値です。
- Range: 高忠実度の折れ線グラフの網掛け領域を設定します。オプションは Min/Max、Std Dev、Std Err、None です。
タイトルと凡例の表示設定を行います。
- パネルタイトル: パネル上部に表示されるタイトル。
- X軸タイトル: X軸のラベル。
- Y軸タイトル: Y軸のラベル。
- 凡例: 凡例の表示/非表示を切り替え、位置を設定します。
凡例をカスタマイズすると、ログされた任意の設定値や、作成日時、そのrunを作成したユーザーなど、runsのメタデータを表示できます。
凡例名のテンプレートを定義します。
- 歯車アイコンをクリックして、プロットの設定を開きます。
- Display preferences タブに移動します。
- Advanced legend を展開し、凡例テンプレートを指定します。
- Apply をクリックします。
[[ ]] 内に値を設定すると、チャートにカーソルを合わせたときに、クロスヘアにポイント固有の値を表示できます。
- 歯車アイコンをクリックして、プロットの設定を開きます。
- Display preferences タブに移動します。
- タブの下部で、プロットの1つ以上のメトリクスに対してポイント固有の値を設定します。
- Apply をクリックします。
[[ ]] 内でサポートされる値:
| Value | 意味 |
|---|
${x} | X 値 |
${y} | Y 値 (スムージング調整を含む) |
${original} | Y 値 (スムージング調整を含まない) |
${mean} | グループ化された Runs の平均値 |
${stddev} | グループ化された Runs の標準偏差 |
${min} | グループ化された Runs の最小値 |
${max} | グループ化された Runs の最大値 |
${percent} | 全体に占める割合 (積み上げエリアチャートの場合) |
ログしたメトリクス、設定値、サマリー統計を使って、折れ線グラフを作成または変換する数式を記述できます。たとえば、2 つのメトリクスの差を計算したり、設定値を使ってメトリクスを再スケーリングしたり、メトリクスの対数をプロットしたりできます。式は、ログする各 step ごとに評価されます。
以下のセクションでは、式内で値を参照する方法と、カスタム式で使用できる演算子や関数について説明します。折れ線グラフでは、x 軸、y 軸、またはその両方に式を使用できます。
一般的なユースケースと式の例については、以下の 式の例 セクションを参照してください。
- project の Workspace にアクセスします。
- + Add panel ボタンをクリックし、Line plot を選択します。
- Data タブをクリックします。X 軸と Y 軸の両方について、折れ線グラフにプロットするデータを選択します。
- Expressions タブをクリックします。
- Y 軸 フィールドまたは X 軸 フィールドに式を入力します。
- Apply をクリックして設定を保存し、折れ線グラフを表示します。
- 変換する折れ線グラフを開きます。
- パネルを編集するには、プロットの右上にある歯車アイコンをクリックします。
- Expressions タブをクリックします。
- Y-axis フィールドまたは X-axis フィールドに式を入力します。
- Apply をクリックして設定を保存し、更新後の折れ線グラフを表示します。
次の表では、折れ線グラフの式で、ログされたメトリクス、設定パラメーター、サマリー統計を参照する方法を説明します。
| タイプ | 構文 | 説明 | 例 |
|---|
| メトリクス | ${metric_name} | ログされたメトリクスを名前で参照します。 | ${val/accuracy}, ${"accuracy"} |
| 設定パラメーター | ${config:param_name} | ${config:} プレフィックスを使用して設定値を参照します。 | ${config:lr}, ${config:batch_size} |
| サマリー統計 | ${summary:stat_name} | summary: プレフィックスを使用してサマリーフィールドを参照します。 | ${summary:final_accuracy}, ${summary:best_loss} |
/、-、スペースなどの特殊文字や空白を含むメトリクス名、設定パラメーター、またはサマリーフィールドを参照する場合は、${...} を使用してエスケープします。
たとえば、val/accuracy という名前のメトリクスをログした場合は、除算演算子との混同を避けるため、${val/accuracy} として参照します。dropout-rate という名前の設定パラメーターをログした場合は、${config:dropout-rate} として参照します。best loss という名前のサマリーフィールドをログした場合は、${summary:best loss} として参照します。
ドット記法を使用して、次の構文でネストされた設定値にアクセスします。
${config:parent.child.grandchild}
ここで、parent、child、grandchild は、入れ子になった設定ディクショナリのキーです。
たとえば、次のような入れ子のディクショナリを含む設定をログするとします。
config = {
"model": {
"type": "resnet",
"layers": 50
},
"training": {
"batch_size": 32,
"learning_rate": 0.001
}
}
with wandb.init(project="my-project", config=config) as run:
...
モデルのタイプは ${config:model.type} で参照できます。バッチサイズは ${config:training.batch_size} で参照できます。
別の例として、ネストされた辞書を含む次の設定を考えてみましょう。
config:
optimizer:
value:
lr: 0.001
weight_decay: 0.01
model:
value:
hidden_size: 768
学習率は${config:optimizer.value.lr}、モデルの隠れサイズは${config:model.value.hidden_size}、重み減衰は${config:optimizer.value.weight_decay}で参照できます。
W&B では、折れ線グラフの式で次の演算子をサポートしています。
| カテゴリ | 演算子 |
|---|
| 算術演算 | +, -, *, /, % (剰余) , ** (累乗) |
| 比較 | ==, !=, ===, !==, <, >, <=, >= |
| ビット演算 | |, ^, &, <<, >>, >>> |
| 論理 | ||, && |
JavaScript のすべての数学関数と定数がサポートされています。詳細については、MDN Math documentation を参照してください。以下の表では、折れ線グラフの式でよく使用される関数と定数をまとめています。
| 定数 | 説明 |
|---|
e | オイラー数 |
pi | 円周率 |
ln2 | 2 の自然対数 |
ln10 | 10 の自然対数 |
log2e | e の 2 を底とする対数 |
log10e | e の 10 を底とする対数 |
sqrt2 | 2 の平方根 |
sqrt1_2 | 1/2 の平方根 |
次の表に、使用可能な算術関数と統計関数を示します。
| 関数 | 説明 |
|---|
| abs(x) | 絶対値 |
| ceil(x) | 天井関数 (最も近い整数に切り上げ) |
| floor(x) | 床関数 (最も近い整数に切り下げ) |
| round(x) | 最も近い整数に丸める |
| min(x, y, …) | 最小値 |
| max(x, y, …) | 最大値 |
| sqrt(x) | 平方根 |
次の表に、使用できる対数関数と指数関数を示します。
| Function | Description |
|---|
| log(x) | 自然対数 (底 e) |
| log10(x) | 常用対数 (底 10) |
| log2(x) | 底 2 の対数 |
| exp(x) | 指数関数 (e^x) |
| pow(x, y) | べき乗関数 (x^y) |
次の表は、使用可能な三角関数を示します。
| 関数 | 説明 |
|---|
| sin(x) | 正弦 |
| cos(x) | 余弦 |
| tan(x) | 正接 |
| asin(x) | アークサイン (逆正弦) |
| acos(x) | アークコサイン (逆余弦) |
| atan(x) | アークタンジェント (逆正接) |
| atan2(y, x) | 2引数のアークタンジェント |
次の表に、利用可能な双曲線関数を示します。
| 関数 | 説明 |
|---|
| sinh(x) | 双曲線正弦 |
| cosh(x) | 双曲線余弦 |
| tanh(x) | 双曲線正接 |
以下は、折れ線グラフの軸で使用する式の例です。これらはあくまで例示です。前のセクションで説明した演算子と関数を任意に組み合わせて、ニーズに合った複雑な式を作成できます。
以下の例では、summary metrics に accuracy と loss が含まれ、それぞれ次の値を持つものとします。
{
"accuracy": 0.7829240801794489,
"loss": 0.2194763318905079
}
ここで、設定が次のようになっているとします。
config = {
"epochs": 100,
"optimizer": {
"value": {
"lr": 0.001,
"weight_decay": 0.01
}
}
}
定数を加算して、accuracy メトリクスを縦方向にシフトします。次の例では、accuracy を 1 だけ上方にシフトします。
メトリクスを一定の値だけ縦方向にシフトします。ここでは、学習率 (lr) を使用します。
accuracy+${config:optimizer.value.lr}
メトリクスの正弦値を計算します。次の例では、損失メトリクスの正弦値を計算します。
正弦関数を適用して、メトリクスを位相シフトします。たとえば、正弦関数を適用して、損失メトリクスを 2 だけ位相シフトします。
batch_size という名の設定パラメーターを使って、accuracy メトリクスを再スケーリングします。
${accuracy} / ${config:batch_size}
2 つのメトリクスのうち小さい方を計算します。次の例では、損失と精度のうち小さい方を計算します。
2つのメトリクスの二乗和の平方根を計算します。次の例では、損失と accuracy の二乗和の平方根を計算します。
sqrt(loss ** 2 + accuracy ** 2)
損失の指数を計算します。次の例では、損失メトリクスの指数を計算します。
sqrt(loss*100)+sqrt(loss*100000)
式では、${summary:metric_name} 構文を使用して summary のメトリクス値を参照することもできます。例:sqrt(${summary:loss}*100)+sqrt(${summary:loss}*100000)
正規表現を使用すると、複数のメトリクスをまとめて表示する単一の折れ線グラフを作成できます (今後ログされる、パターンに一致するメトリクスも含まれます) 。詳しくは、折れ線グラフを追加するを参照してください。
例:
- 各レイヤーのメトリクスごとに個別のパネルを作成する代わりに、1 つのパネルにまとめて表示できます。たとえば、
layer_0_loss、layer_1_loss、layer_2_loss のように一貫した命名でメトリクスをログする場合は、layer_\d+_loss のような正規表現を使用して、すべてのレイヤーの損失を 1 つのプロットに表示できます。
- 共通の命名パターンを持つすべてのメトリクスに一致させることもできます。たとえば:
train_.* は、train_loss、train_accuracy、train_f1_score など、すべてのトレーニングメトリクスに一致します
.*_accuracy は、train_accuracy、val_accuracy、test_accuracy のような、異なるデータセットにまたがる精度メトリクスに一致します
- 必要なメトリクスだけに一致させるには、選択を使用します。たとえば、非キャプチャグループ
(?:layer_0|layer_10)_loss は、途中のレイヤーを除外し、1 番目と 10 番目のレイヤーの損失にのみ一致します。
正規表現内のキャプチャグループによって、複数メトリクスのパネルがどのように作成されるかが決まります。これを想定していないと、この挙動はわかりにくい場合があります。
-
キャプチャグループを使うと複数のパネルが作成される
正規表現にキャプチャグループを構成する丸括弧が含まれている場合、UI はそのグループでキャプチャされた各一意の値ごとに個別のパネルを作成します。
たとえば、式
(layer_0|layer_10)_loss にはキャプチャグループが含まれているため、2 つの別々のパネルが作成されます。
layer_0 に一致するメトリクスのパネル
layer_10 に一致するメトリクスのパネル
-
非キャプチャグループを使うとメトリクスは同じパネルにまとまる
複数の選択肢に一致させつつ別々のパネルを作成したくない場合は、
?: 構文の非キャプチャグループを使用します。式 (?:layer_0|layer_10)_loss は前の例と同じメトリクスに一致しますが、それらを 1 つのパネルにまとめて表示します。
違いは次のとおりです。
(layer_0|layer_10)_loss - レイヤーごとに 1 つずつ、合計 2 つのパネルを作成します。
(?:layer_0|layer_10)_loss - 両方のレイヤーをまとめて表示する 1 つのパネルを作成します。
これにより、分析内容に応じて適切な方法を柔軟に選べます。メトリクスを別々のパネルに分けたい場合はキャプチャグループを使用します。メトリクスを 1 つのプロット上でまとめて比較したい場合は非キャプチャグループを使用します。