运行推理指标

此示例演示并解释了使用 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()))

运行推理指标

如前所述,我们在 CPU 和 GPU 上使用 Dataflow 对 RunInference 的性能进行了基准测试。您可以在 Google Cloud 控制台中查看这些指标,或者可以使用以下代码行打印指标

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

下图显示了在 Google Cloud 控制台中使用 Dataflow 在 GPU 上时不同指标的快照

RunInference GPU metrics rendered on Dataflow

一些用于基准测试的常用指标是

您还可以推导出其他相关指标,例如以下示例。