RunInference 指標
此範例示範並說明使用 RunInference 轉換來使用機器學習模型執行推論時可用的不同指標。此範例使用一個管線,該管線讀取句子清單、將文字符號化,並使用基於轉換器的模型 distilbert-base-uncased-finetuned-sst-2-english
和 RunInference
將文字片段分類為兩個類別。
當您使用 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
檔案中設定 Google Cloud 變數,例如 PROJECT_ID
、REGION
和其他變數。若要使用 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 指標
如先前所述,我們使用 Dataflow 在 CPU 和 GPU 上對 RunInference 的效能進行基準測試。您可以在 Google Cloud 主控台中查看這些指標,或者您可以使用以下行來列印指標
下圖顯示在 GPU 上使用 Dataflow 時,Google Cloud 主控台中不同指標的快照
一些常用於基準測試的指標包括
num_inferences
:表示傳遞至run_inference()
的元素總數。inference_batch_latency_micro_secs_MEAN
:表示執行所有範例批次的推論所花費的平均時間,以微秒為單位。inference_request_batch_size_COUNT
:表示所有範例批次中所有範例 (從beam.BatchElements
建立) 中要傳遞至run_inference()
的樣本總數。inference_request_batch_byte_size_MEAN
:表示所有範例批次中所有範例的所有元素 (從beam.BatchElements
建立) 的平均大小,以便傳遞至run_inference()
。此指標以位元組為單位。model_byte_size_MEAN
:表示載入和初始化模型所消耗的平均記憶體量,以位元組為單位。load_model_latency_milli_secs_MEAN
:表示載入和初始化模型所花費的平均時間,以毫秒為單位。
您也可以推導出其他相關指標,例如以下範例。
推論所花費的總時間
=num_inferences x inference_batch_latency_micro_secs_MEAN
上次更新時間:2024/10/31
您是否找到所有您要尋找的內容?
這些內容是否都實用且清楚?是否有任何您想要變更的內容?請告訴我們!