AI技術Day 14(マルチGPU学習、HyperParameter Tuning、PyTorch Troubleshooting)


1.今日のスケジュール


1)授業
2)ピアセッション
3)勤務時間(課題説明)

2.学習内容


PyTorch


第8課:マルチGPU学習

  • Single vs. Multi
  • GPU vs. Node
  • Single Node Single GPU
  • Single Node Multi GPU
  • Multi Node Multi GPU
  • Model parallel vs Data parellel


    学習を
  • 多GPUに分散する2つの方法
    区分
  • 型番/データ
  • 区分
  • 型番は思ったより早い(AlexNet)
  • 型のボトルネック、パイプラインの困難などの原因で、モデル並列化は難易度の高い挑戦
  • に直面している.

    Model parallel


  • 位の場合は意味がありません.ある程度重ねて行うのがベストな並列化!
  • Data parallel


  • GPUにデータを割り当て、結果を平均します.

  • minbatch式と同様に、一度に複数のGPUで実行


  • PyTorchは、次の2つの方法を提供します.
  • DataParallel:単純にデータを割り当て、平均値をとる
  • GPU使用アンバランス問題,ブロックサイズ減少(GPUがボトルネック),GIL
  • 分散型DataParallel:CPUごとにプロセスを作成し、各GPUに割り当てる
  • デフォルトはDataParallelで、単一計算平均

  • 9講:HyperParameter Tuning


    Hyperparameter Tuning

  • 型自分で勉強しない値は人が指定します.
  • 学習率、モデルサイズ、オプティマイザなど
  • スーパーパラメータは、値
  • に大きく影響する場合がある.
  • 最後の0.01は、試してみる価値があります!
  • 最も基本的な方法-Grid vs random(メッシュのみがランダムに現れる部分に適用可能)
  • 最近は米黄色顔料の技法が主導している.
  • 12018年論文BOHB
  • Ray

  • マルチノード/マルチプロセッシングサポートモジュール
  • ML/DL並列処理モジュール
  • は、基本的に現在の分散パラレルML/DLモジュールの標準
  • である.
  • HyperParameter Searchは複数のモジュールを提供
  • 第10回:PyTorch Troubleshoting


    OOM(Out Of Memory)が解決しにくい原因。

  • なぜ起こったのか分かりにくい
  • がどこで起きたのか分かりにくい
  • Error遡及異常
  • メモリの移行状況がわかりにくい
  • ->簡単な解決策はGPU cleanを使用してバッチサイズを減らすことです!

    GPUtilの使用


    モジュール
  • nvidia-simiはGPUの状態を表示する
  • 実験室は環境の中でGPU状態
  • を表示しやすい
  • iterごとにメモリが増加していることを確認します!!
  • torch.cuda.空のcache()を書き込む

  • 未使用GPU上のキャッシュ
  • をクリアする.
  • 使用可能メモリ
  • DELと区別する必要がある
  • resetの代わりに使用可能な関数
  • トレーニングサイクルにテンソル形式で蓄積された変数は確認する必要がある.

  • テンソル変数はGPU上で
  • メモリを使用する
  • に対応する変数ループで演算すると、GPU上に計算パターン(メモリロック)が生成される
  • 1-dテンソルをPythonベースオブジェクトに変換して処理
  • delコマンドを正しく使用

  • を必要としない変数は、適切な削除が必要です.
  • pythonのメモリ配置特性は、サイクル終了時にメモリ
  • を占有する.
    for x in range(10):
        i = x
    print(i)

    実験可能なbatchサイズ


    学習
  • でOOMが発生した場合はbatchサイズ1で実験
  • を行ってみてください.
    oom = False
    try:
        run_model(batch_size)
    except RuntimeError:
        oom = True
    if oom:
        for _ in range(batch_size):
        	run_model(1)

    torch.No grad()の使用

  • インフォメーションポイントはTORCHです.No grad()構文を使用する
  • は、バックパスを介してスタックメモリから
  • を解放する.
    with torch.no_grad():
        for data, target in test_loader:
            output = network(data)
            test_loss += F.nll_loss(output, target, size_average=False).item()
            pred = output.data.max(1, keepdim=True)[1]
            correct += pred.eq(target.data.view_as(pred)).sum()

    予期しないエラーメッセージ

  • OOMに加えて、同様のエラー
  • が発生しました.
  • CUDN STATUS NOT INITまたは機器-側-assert等
  • cudaに関するエラーもOOMの一種であり、適切なコード処理
  • が必要である.

    それ以外は...

  • colabで大きなサイズを運転しないでください
  • linear, CNN, LSTM
  • CNNの大部分のエラーは大きさが合わないため発生した.
    寸法を
  • torchsummary等
  • に調整する.
  • テンソルの浮動小数点精度を16ビット
  • に低減することができる.

    3.ピアセッションのクリーンアップ


    4.課題実行プロセス

  • ジョブのコミット時間を誤って理解しました.
  • 勤務時間に聞いてから補強しましょう.
  • 選択課題について、週末はゆっくり見ます.
  • 5.回顧

  • 特別会議の時、他のチームはどのように勉強しましたか.知ってよかった.メリットはベンチマークテストをしたいことです.
  • 6.今週の回顧

  • パイトッチと親しくなって嬉しいです.
  • パイトースター、Nompi、Pandasともっと親しくなるべきだ...
  • は課題のために頑張って買ったようです.
  • 7.週末にやるべきこと

  • 資料と課題を整理してハブ
  • にアップロードする.
  • 課題
  • を選択する.
  • 必修科目の紹介と比較
  • Transformer論文を発表できるかどうか...
  • アーセナルのチェルシーに対する見方
  • 来週大会.心の准备について...