RunInferenceメトリクス
この例では、機械学習モデルを使用して推論を実行するためにRunInference変換を使用する際に利用できるさまざまなメトリクスを示し、説明します。この例では、文のリストを読み取り、テキストをトークン化し、トランスフォーマーベースのモデル`distilbert-base-uncased-finetuned-sst-2-english`と`RunInference`を使用してテキストを2つのクラスに分類するパイプラインを使用します。
Dataflowランナーでパイプラインを実行すると、CPUとGPUでさまざまなRunInferenceメトリクスが利用できます。この例では、両方のタイプのメトリクスを示します。
- この例の完全なコードはGitHubにあります。
- 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最小パイプライン例のセットアップ手順に従ってください。
- CPUを使用したDataflow:`python main.py --mode cloud --device CPU`
- GPUを使用したDataflow:`python main.py --mode cloud --device GPU`
パイプラインには、次の手順が含まれています。
- `beam.Create`を使用して、入力として使用するテキストのリストを作成します。
- テキストをトークン化します。
- RunInferenceを使用して推論を実行します。
- 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コンソールで確認できます。または、次の行を使用してメトリクスを出力できます。
次の画像は、GPUでDataflowを使用する場合のGoogle Cloudコンソールでのさまざまなメトリクスのスナップショットです。
ベンチマークによく使用されるメトリクスには、次のものがあります。
`num_inferences`:`run_inference()`に渡された要素の総数を表します。
`inference_batch_latency_micro_secs_MEAN`:すべてのバッチの例で推論を実行するのにかかった平均時間をマイクロ秒単位で表します。
`inference_request_batch_size_COUNT`: `run_inference()`に渡されるすべてのバッチの例(`beam.BatchElements`から作成)のサンプルの総数を表します。
`inference_request_batch_byte_size_MEAN`:`run_inference()`に渡されるすべてのバッチの例(`beam.BatchElements`から作成)のすべてのサンプルのすべての要素の平均サイズを表します。このメトリクスはバイト単位で測定されます。
`model_byte_size_MEAN`:モデルのロードと初期化に消費された平均メモリをバイト単位で表します。
`load_model_latency_milli_secs_MEAN`:モデルのロードと初期化に費やされた平均時間をミリ秒単位で表します。
次の例のように、他の関連メトリクスを導き出すこともできます。
- `推論にかかった合計時間` = `num_inferences x inference_batch_latency_micro_secs_MEAN`
最終更新日:2024/10/31
お探しの情報はすべて見つかりましたか?
すべて役に立ち、明確でしたか?変更したいことはありますか?お知らせください!