RunInference 指標

此範例示範並說明使用 RunInference 轉換來使用機器學習模型執行推論時可用的不同指標。此範例使用一個管線,該管線讀取句子清單、將文字符號化,並使用基於轉換器的模型 distilbert-base-uncased-finetuned-sst-2-englishRunInference 將文字片段分類為兩個類別。

當您使用 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_IDNUM_WORKERS

setup.py 定義管線執行的套件和需求。

main.py 包含管線程式碼和用於執行管線的其他函數。

執行管線

安裝所需的套件。對於此範例,您需要存取 Google Cloud 專案,並且需要在 config.py 檔案中設定 Google Cloud 變數,例如 PROJECT_IDREGION 和其他變數。若要使用 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 指標

如先前所述,我們使用 Dataflow 在 CPU 和 GPU 上對 RunInference 的效能進行基準測試。您可以在 Google Cloud 主控台中查看這些指標,或者您可以使用以下行來列印指標

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

下圖顯示在 GPU 上使用 Dataflow 時,Google Cloud 主控台中不同指標的快照

RunInference GPU metrics rendered on Dataflow

一些常用於基準測試的指標包括

您也可以推導出其他相關指標,例如以下範例。