<style>
.ui-infobar, #doc.markdown-body { max-width: 1000px; }
</style>
# グラチャレ2022 2回目
## 予備日(10/5 水)
計算資源:512 node (2048 GPUs) 6h
目的:負荷実験、でかいやつをみんなで投げる練習、ExRCDB-21k/baseのスケールアップ実験、BS調査
### 投げるもの
#### Pre Training + Resume
| PT dataset | base config | shard | amp | model | epochs | BS | LR | resorce | who | status | Time |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| ExRCDB-21k | CVPR22 | o | o | Base | 90 | 8192 | 1e-3 | 512 GPUs | Takashima | D | 15 h |
| ExRCDB-21k | CVPR22 | o | o | Base | 90 | 8192 | 1e-3 | 128 GPUs | Takashima | D | 50? h |
| ExRCDB-21k | CVPR22 | x | o | Base | 90 | 8192 | 1e-3 | 128 GPUs | Takashima | D | 50? h |
| - | - | - | - | - | - | - | - | - | - | - |
| ExRCDB-21k | CVPR22 | o | o | Tiny | 90 | 8192 | 8e-3 | 512 GPUs | Omi | D | 5 h |
| ExRCDB-21k | CVPR22 | o | o | Tiny | 90 | 8192 | 8e-3 | 128 GPUs | Wang | D | 25? h |
| - | - | - | - | - | - | - | - | - | - | - |
| ExRCDB-21k | CVPR22+Clipping(0.25) | o | o | Base | 90 | 16384 | 2e-3 | 256 GPUs | Zhang | WR (later) | 25? h |
| ExRCDB-21k | CVPR22+Clipping(0.25) | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Zhang | D | 9.5 h |
<!-- | ExRCDB-21k | CVPR22+Clipping | o | o | Tiny | 90 | 8192 \* 4 | 32e-3 | 512 GPUs | W | 7? h | -->
実行コマンド:qsub -g gae50969 -ar 14410 scripts/pretrain_exrcdb_wds_for_gc.sh
### 当日メモ
- 最初複数人で投げる時、Permission Errorでちょっとこける。ディレクトリ作った人が権限を付与する必要あり。
- 投げてから3時間後、Base clipping 512GPUsがloss NaNでこける。おそらくampの問題。
- ampを外して正常なlossのところからresume
- 同様の問題が、他の実行でも発生。(Base clipping 256GPUs, Base 512GPUs)
- こちらも途中の正常なlossのところからampを外してresumeした。
- ampを外すと、スループットが約1/2〜3/4ぐらいまで落ちる
- できればampをつけた状態で正常な学習を行えるようになりたいが。**今後の課題。**
- 後で張と議論↓
- とりあえずampは使わなでこれらのresumeは回すことに。ampが正常に使える実装ができたらそちらで回し始める。
- 結果として、Tinyはこけずに進み、512GPUs, BS=8192(lbs=16)のTinyは、5時間で事前学習実行が完了した。
## 予備日の後始末
### 投げるもの
#### Resume(上の表)
#### Fine Tuning
| PT dataset | model | BS | LR | resorce | CIFAR-10 | CIFAR-100 | ImageNet-1k |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| ExRCDB-21k | Base | 8192 | 1e-3 | 512 GPUs | 97.68 (97.75) | 86.05 (86.44) | 82.53 (82.62) |
| ExRCDB-21k <br> from 28-eps-ckpt (not NaN) | Base | 8192 | 1e-3 | 512 GPUs | 95.99 (96.06) | 82.95 (83.19) | 82.57 (82.70) |
| ExRCDB-21k | Base | 8192 | 1e-3 | 128 GPUs | 97.83 (97.95) | 86.11 (86.37) | 82.48 (82.62) |
| ExRCDB-21k <br> no shard, ra | Base | 8192 | 1e-3 | 128 GPUs | 97.61 (97.70) | 86.57 (86.68) |last : 82.44 (82.51) <br> best : **82.63 (82.65**) |
| - | - | - | - | - | - | - | - |
| ExRCDB-21k | Tiny | 8192 | 8e-3 | 512 GPUs | 97.21 (97.28) | 84.33 (84.48) | 73.75 (73.79) |
| ExRCDB-21k | Tiny | 8192 | 8e-3 | 128 GPUs | 97.24 (97.30) | 84.30 (84.41) | 73.74 (73.79) |
| - | - | - | - | - | - | - | - |
| ExRCDB-21k <br> clipping | Base | 16384 | 2e-3 | 256 GPUs | W | W | W |
| ExRCDB-21k <br> clipping | Base | 32768 | 4e-3 | 512 GPUs | 96.14 (96.42) | 84.10 (84.16) | 82.68 (82.68) |
## 本番(10/19 水)
計算資源:1088 node (4352 GPUs) 24h = 512GPUs 24h x 8 + 256GPUs (予備)
目的:
- ViT-Baseでの各種21kPTに対して、ImageNet-1k FT(N=384)
- BCE / LWN / Clippingの検証
- 21k規模の追加データセットで事前学習
- (ワンインスタンス系の実験)
実行コマンド:qsub -g gae50969 -ar 14401 scripts/pretrain_exrcdb_wds_for_gc_with_bce_lwn.sh
statusの番号が早い順に投げる。1からスタート。空き次第次のものを投げる。Running中にはjob idを書き込む。(qdelしやすくするため)
### メインで投げるもの(メインの4096 GPUsを用いて回すもの)
#### Pre Training + Resume (512GPUs 15h x 3 + 512GPUs 9.5h x 7 = 512GPUs 24h x 5)
| PT dataset | option| shard | amp | model | epochs | BS | LR | resorce | who | status | Time |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| ExRCDB-21k | BCE | o | o | Base | 90 | 8192 | 1e-3 | 512 GPUs | Zhang | D | 21.5 h |
| ExRCDB-21k | LWN | o | o | Base | 90 | 8192 | 1e-3 | 512 GPUs | Zhang | NaN -> D | 15.5 h |
| ExRCDB-21k | BCE+LWN | o | o | Base | 90 | 8192 | 1e-3 | 512 GPUs | Zhang | ~~10822267~~ | - h |
| ExRCDB-21k | BCE, clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Zhang | ~~10822282~~ | - h |
| ExRCDB-21k | LWN, clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Zhang | NaN -> D | 11.5 h |
| ExRCDB-21k | BCE+LWN, clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Zhang | ~~10822470~~ | - h |
| - | - | - | - | - | - | - | - | - | - | - |
| ExRCDB-21k_v2 | clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Takashima | NaN -> D | 8.5 h |
| ExRCDB-21k_v3 | clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Takashima | NaN -> D | 9 h |
| ExRCDB-21k_v4 | clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Takashima | NaN -> D | 11 h |
| ExRCDB-21k_v5 | clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Takashima | NaN -> D | 8.5 h |
| ExRCDB-21k_v6 | clipping | o | o | Base | 90 | 32768 | 4e-3 | 512 GPUs | Takashima | NaN -> D | 9 h |
shardはできたら適用させる。グラチャレ中にshard化してもらうのもアリ。→間に合った。v6だけグラチャレ中にshard化
ExRCDB-21k baseline : nami[0-20], line_num[1-200], vertex[200-1000], 線の太さ[1]
##### 各データセットにおけるbaselineとの差分
ExRCDB-21k_v2 : nami[0-40], line_num[64]
ExRCDB-21k_v3 : line_num[64], 線の太さ[3]
ExRCDB-21k_v4 : nami[2-20], 線の太さ[3]
ExRCDB-21k_v5 : vertexをinstance拡張に使う
ExRCDB-21k_v6 : 内輪郭にも振動を与えたもの(Hayamizu super ver.)
Hyamizu Super ver. の説明
- perlin noiseの変動を[0, 4]→[1, 3]
- 特徴のない丸い形状が生成されるのをおさえつつ,最外郭が出すぎないように設定
- 内輪郭振動と外輪郭振動を一致
- 内輪郭と外輪郭のおおまかな形を一致させることで外輪郭が見えなくなってもある程度予測可能に設定
- 振幅の変更
- 外郭の振幅を1と0.5に設定.内郭は5と2.5
- (最外郭は振動が累積するので最内郭より小さめに設定しています)
- perlin noiseの影響を全体的に底上げ
- 振動を合成した後,1.5をかけて変化を大きくする
- カラー範囲を[0, 255]→[1, 255]
- 0かつ線の本数1本だと何も描画されない可能性があるため,最低値を1に設定
#### Fine Tuning (ImageNet-1k) (128GPUs 24h x 4 = 512GPUs 24h x 1)
| PT dataset | model | PT BS | PT LR | resorce | N | status | Time |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| ExRCDB-21k (512GPUs) | Base | 8192 | 1e-3 | 128 GPUs | 384 | 83.38 (83.48) | xh |
| ExRCDB-21k <br> clipping (512GPUs) | Base | 32768 | 4e-3 | 128 GPUs | 384 | 83.49 (83.71) | xh |
| OFDB-21k | Base | 1024 | 5e-4 | 128 GPUs | 384 | 83.09 (83.12) | xh |
| OIN-21k | Base | 1024 | 1e-3 | 128 GPUs | 384 | 82.31 (82.33) | xh |
| ExRCDB-21k (512GPUs) | Base <br> no amp | 8192 | 1e-3 | 128 GPUs | 384 | 83.33 (83.43) | xh |
| ExRCDB-21k <br> clipping (512GPUs) | Base <br> no amp | 32768 | 4e-3 | 128 GPUs | 384 | 83.48 (83.69) | xh |
| OFDB-21k | Base <br> no amp | 1024 | 5e-4 | 128 GPUs | 384 | 10824233 W | xh |
| OIN-21k | Base <br> no amp | 1024 | 1e-3 | 128 GPUs | 384 | 10824234 W | xh |
### サブで投げるもの(残りの256 GPUsのうち壊れていないものを用いて回すもの)
#### Pre Training + Resume
| PT dataset | base config | shard | amp | model | epochs | BS | LR | resorce | who | status | Time |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| OFDB-21k baseline | Nakamura | x | o | Base | 30476 | 2048 | 1e-3 | 128 GPUs | Takashima | 10836940 | xh |
| OFDB-21k baseline | Nakamura | x | o | Base | 15238 | 2048 | 1e-3 | 128 GPUs | Takashima | D | 22.5 h |
| OFDB-21k | Nakamura | x | o | Swin -Base | 15238 | 1024 | 5e-4 | 128 GPUs | Takashima | D | xh |
| OIN-21k | Nakamura | x | o | Swin-Base | 15238 | 1024 | 5e-4 | 128 GPUs | Takashima | NaN -> 10832045 | xh |
#### Fine Tuning (今回流し終わったやつの)
| PT dataset | PT option | model | PT BS | PT LR | CIFAR-10 | CIFAR-100 | ImageNet-1k |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| ExRCDB-21k | BCE | Base | 8192 | 1e-3 | 98.31 (98.40) | 84.57 (84.80) | 81.09 (81.24) |
| ExRCDB-21k | LWN | Base | 8192 | 1e-3 | 97.68 (97.79) | 86.09 (86.44) | 82.42 (82.57) |
| ExRCDB-21k | LWN, Clipping | Base | 32768 | 4e-3 | 96.17 (96.67) | 84.00 (84.18) | 82.54 (82.69) |
| - | - | - | - | - | - | - | - |
| ExRCDB-21k_v2 | Clipping | Base | 32768 | 4e-3 | 96.08 (96.16) | 84.09 (84.18) | 82.40 (82.54) |
| ExRCDB-21k_v3 | Clipping | Base | 32768 | 4e-3 | 96.70 (96.78) | 84.88 (84.99) | 82.58 (82.58) |
| ExRCDB-21k_v4 | Clipping | Base | 32768 | 4e-3 | 97.00 (97.14) | 84.78 (84.89) | 82.43 (82.57) |
| ExRCDB-21k_v5 | Clipping | Base | 32768 | 4e-3 | 96.62 (97.04) | 84.99 (85.18) | 82.52 (82.69) |
| ExRCDB-21k_v6 | Clipping | Base | 32768 | 4e-3 | 96.92 (97.00) | 84.48 (84.76) | 82.49 (82.66) |
それでも余ったら、表中の適当なImageNet-1k FTを回す!↓
- pretrain_deit_tiny_RCDB1k_nami_amplitude_lr5.0e-4_epochs300_bs1024_amp -> ImageNet-1k FT 73.92 (73.81)
- pretrain_deit_tiny_RCDB1k_nami_2-20_line_1-200_lr5.0e-4_epochs300_bs1024_amp -> ImageNet-1k FT 73.91 (73.79)
- pretrain_deit_tiny_RCDB1k_nami_2-40_line_1-200_lr5.0e-4_epochs300_bs1024_amp -> ImageNet-1k FT 73.72 (73.67)
- pretrain_deit_tiny_RCDB1k_nami_2-20_line_60-200_lr5.0e-4_epochs300_bs1024_amp -> ImageNet-1k FT 73.93 (73.83)
- pretrain_deit_tiny_RCDB1k_nami_instance_lr5.0e-4_epochs300_bs1024_amp -> ImageNet-1k FT 73.58 (73.42)
- pretrain_deit_tiny_RCDB1k_vertex_instance_lr5.0e-4_epochs300_bs1024_amp -> ImageNet-1k FT 74.05 (74.02)
#### 本番中メモ
- 11:36
- 103 nodes (412 GPUs)が最初から故障
- 先生に修理依頼を出していただく運びになりかけたが、しばらくすると40ノードぐらいに故障ノードが減って、とりあえずよしとした。
- 512GPUs×7で実験が回っている。(新しいデータセットではまだ回ってない)
- bceの挙動やLWNはまだ未検証なので、新しいデータセットについてはclippingだけを噛ませて回す運びになった。
- LWN, BCEのPT実験のタスクは張に任せる
- 12:00
- 512GPUsx8で実験が回りだす
- LWNを適用させるとスループットが半分ぐらいになる現象を確認(clipping時)
- GPUが遊んだら、終わったやつのFTを流せるだけ流す方針
- 13:45-17:30
- 高島、対面講義にて離脱。B4と張にタスクの監視を依頼
- 18:00
- ExRCDB-21k PT-> ImageNet-1k FT N=384のlossがNaNに
- とりあえずFT 2つをqdelしておいて、最初からampなしで回し始める。後でresumeした方がよさそう。
- 残り2つもNaNになったので、それらも最初からampなしで回し始める。
- 最初からやるのは、途中からamp外して行ったものとどれぐらい差が出るのか今の段階で見極めたいため。後で、途中からもampなしでresume回したい。→22:30に空いたので回し始める
- ~~21:00~~ 21:30
- 中間報告
- v5が空いた分、v6を回す
- v2, v3が続けて終わる見込み、ImageNet-1k FT (N=384)のampのresumeと、ワンインスタンスのサブタスクを回す見込み。
- 後は空いたそばから、終わった分のFTとかImageNet-1k FTを回していく。GPUなるべくたくさん使って良い。
- v4, baselineがおそらく2時間後の23:00とかに終わる。
- 21:10
- と思ったら、v2が謎のエラーで落ちてる。cuda通信エラー?回しなおす。これが何回か時間をおいて発生
- 深夜
- GPUが空いたら適当なImageNet-1k FTを投げる
- swin PTやらImageNet-1k FTやらいろんなのがamp NaNで落ちるので、回し直し
- また、なぜか資源が空いておりかつ故障ノードがない状況にも関わらずQWが続くことが多々あった。何回かqdelして再投入すると通る
- 全体の9割以上のGPUを常に使い続けている状況を保つ
- 4:10
- 高島 仮眠
- 30minに1回ぐらいでlogを見て、謎エラーやNaNで落ちていたら回しなおす。
- 7:00
- この辺りから近江くんにlogの監視を頼んでいたため、休む
- 9:00
- 近江くんからの報告で状況を把握。v6のPTが終わっており1割ほどGPUに空きができていたが、あと少しなのでこのままstay
- 11:00
- グラチャレ終了。上記表に実行状況を追記保存、resumeとFTに備える