RunInferenceメトリクス

この例では、機械学習モデルを使用して推論を実行するためにRunInference変換を使用する際に利用できるさまざまなメトリクスを示し、説明します。この例では、文のリストを読み取り、テキストをトークン化し、トランスフォーマーベースのモデル`distilbert-base-uncased-finetuned-sst-2-english`と`RunInference`を使用してテキストを2つのクラスに分類するパイプラインを使用します。

Dataflowランナーでパイプラインを実行すると、CPUとGPUでさまざまなRunInferenceメトリクスが利用できます。この例では、両方のタイプのメトリクスを示します。

次の図は、パイプライン全体のファイル構造を示しています。

runinference_metrics/
├── pipeline/
│   ├── __init__.py
│   ├── options.py
│   └── transformations.py
├── __init__.py
├── config.py
├── main.py
└── setup.py

`pipeline/transformations.py`には、`beam.DoFn`のコードとパイプラインに使用される追加関数が含まれています。

`pipeline/options.py`には、Dataflowパイプラインを設定するためのパイプラインオプションが含まれています。

`config.py`は、Google Cloudの`PROJECT_ID`や`NUM_WORKERS`など、複数回使用される変数を定義します。

`setup.py`は、パイプラインを実行するためのパッケージと要件を定義します。

`main.py`には、パイプラインコードとパイプラインの実行に使用される追加関数が含まれています。

パイプラインの実行

必要なパッケージをインストールします。この例では、Google Cloudプロジェクトへのアクセスと、`config.py`ファイルで`PROJECT_ID`、`REGION`などのGoogle Cloud変数を構成する必要があります。GPUを使用するには、GitHubのPyTorch GPU最小パイプライン例のセットアップ手順に従ってください。

  1. CPUを使用したDataflow:`python main.py --mode cloud --device CPU`
  2. GPUを使用したDataflow:`python main.py --mode cloud --device GPU`

パイプラインには、次の手順が含まれています。

  1. `beam.Create`を使用して、入力として使用するテキストのリストを作成します。
  2. テキストをトークン化します。
  3. RunInferenceを使用して推論を実行します。
  4. RunInferenceの出力を後処理します。
  with beam.Pipeline(options=pipeline_options) as pipeline:
    _ = (
        pipeline
        | "Create inputs" >> beam.Create(inputs)
        | "Tokenize" >> beam.ParDo(Tokenize(cfg.TOKENIZER_NAME))
        | "Inference" >>
        RunInference(model_handler=KeyedModelHandler(model_handler))
        | "Decode Predictions" >> beam.ParDo(PostProcessor()))

RunInferenceメトリクス

前述のように、CPUとGPUの両方でDataflowを使用してRunInferenceのパフォーマンスをベンチマークしました。これらのメトリクスはGoogle Cloudコンソールで確認できます。または、次の行を使用してメトリクスを出力できます。

metrics = pipeline.result.metrics().query(beam.metrics.MetricsFilter())

次の画像は、GPUでDataflowを使用する場合のGoogle Cloudコンソールでのさまざまなメトリクスのスナップショットです。

RunInference GPU metrics rendered on Dataflow

ベンチマークによく使用されるメトリクスには、次のものがあります。

次の例のように、他の関連メトリクスを導き出すこともできます。