サブロウ丸

サブロウ丸

主にプログラミングと数学

MLBench: Distributed Machine Learning Benchmark

機械学習の分散フレームワークのベンンチマーク。アルゴリズムなどは限られたものを利用する。ハードウェア(GPU-CPUメモリ)、並列(worker)数、ネットワーク帯域は可変なのでこれらの性能評価に用いることができる。

website

documentation

github

実行自体はgoogle cloud と (デバッグとして) Kubernetes + kind が用意されている。また、適切にmlbenchのAPIを使えば自身で計測したい処理を書いてmlbenchのフレームワークベンチマーク計測を行うことが可能 (https://mlbench.readthedocs.io/en/latest/tutorials.html#tutorials)。 dashbordとして実行結果を見たり、GUI的にベンチマーク実行を行うことも可能みたい。

タスク (ベンチマーク)

執筆時点において、mlbenchに用意されているベンチマークは下記。

Task0: 基礎的なCommunication Backendパフォーマンス

  • allReduce処理など

Task1: 画像分類

1a. Resnet-20, CIFAR-10

  • モデル
    • 文字通り20層のResNet
  • データセット
    • 評価: クラスごとにランダムに選択された1000枚の画像を含む10,000枚の画像
    • 訓練: 残りの50,000枚の画像はトレーニングサンプル
  • 訓練
    • optimizer: 同期型のSGD
    • number of machines: k = 1, 2, 4, 8, 16, 32
    • そのほか: epoch数やbatchサイズ、学習率、loss関数、データ前処理は決められている
    • フレームワーク: pytorchとtensorflow
    • スケーリングタスク: 1ノード1プロセス、1プロセス1GPU

Task2: Linear Learning

2.a ロジスティック回帰

  • 訓練
    • マシンの数k = 1, 2, 4, 8, 16
    • そのほか: epoch数やbatchサイズ、学習率、loss関数、データ前処理は決められている

Task3: 言語モデリング

3a. LSTM, Wikitext2

  • モデル
  • データセット(Wikitext2)
    • 訓練: 2,088,628 token
    • 検証: 217646 token
    • vocabulary: 33278語
  • 訓練
    • optimizer: 同期型のSGD
    • そのほか: epoch数やbatchサイズ、学習率、loss関数、データ前処理は決められている

Task4: 機械翻訳

4.a LSTM、WMT16 EN-DE

  • モデル
  • データセット(EN-DNのパラレルコーパス)
    • 訓練: 最大長75 token
    • 検証: 最大長150 token
  • 訓練
    • optimizer: 同期型のAdam
    • 前処理は固定(前処理後のデータ提供もある)
    • そのほか: epoch数やbatchサイズ、学習率、loss関数は決められている

4.b Transformer, WMT17 EN-DE

"Attention Is AllYouneed"のモデルにもとづくベンチマーク

  • モデル
    • Transformer
  • データセット(EN-DNのパラレルコーパス)
    • 訓練, 検証: 最大長80 token
  • 訓練
    • optimizer: 同期型のAdam
    • 前処理は固定(前処理後のデータ提供もある)
    • そのほか: epoch数やbatchサイズ、学習率、loss関数は決められている

実行

実行自体はgoogle cloud と (デバッグとして) Kubernetes + kind が用意されている。また、適切にmlbenchのAPIを使えば自作のベンチマーク関数も実行できる