Microsoft Azure Machine Learning Python SDK v2 用于在运营期间收集模型数据
项目描述
Microsoft Azure Machine Learning Data Collection SDK v2 for model monitoring
azureml-ai-monitoring
软件包提供了一个SDK,用于启用模型数据收集器(MDC),允许客户在数据预处理管道的任意点收集数据。客户可以利用SDK在 score.py
中记录数据,在数据转换之前、期间和之后记录到所需的目标。
快速入门
首先,在 score.py
中导入 azureml-ai-monitoring
软件包
import pandas as pd
import json
from azureml.ai.monitoring import Collector
def init():
global inputs_collector, outputs_collector
# instantiate collectors with appropriate names, make sure align with deployment spec
inputs_collector = Collector(name='model_inputs')
outputs_collector = Collector(name='model_outputs')
def run(data):
# json data: { "data" : { "col1": [1,2,3], "col2": [2,3,4] } }
pdf_data = preprocess(json.loads(data))
# tabular data: { "col1": [1,2,3], "col2": [2,3,4] }
input_df = pd.DataFrame(pdf_data)
# collect inputs data, store correlation_context
context = inputs_collector.collect(input_df)
# perform scoring with pandas Dataframe, return value is also pandas Dataframe
output_df = predict(input_df)
# collect outputs data, pass in correlation_context so inputs and outputs data can be correlated later
outputs_collector.collect(output_df, context)
return output_df.to_dict()
def preprocess(json_data):
# preprocess the payload to ensure it can be converted to pandas DataFrame
return json_data["data"]
def predict(input_df):
# process input and return with outputs
...
return output_df
创建一个带有基本镜像 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
和 conda 依赖项的环境,然后构建该环境。
channels:
- conda-forge
dependencies:
- python=3.8
- pip=22.3.1
- pip:
- azureml-defaults==1.38.0
- azureml-ai-monitoring
name: model-env
创建一个带有自定义日志记录功能(已启用 model_inputs 和 model_outputs)以及您刚刚构建的环境的部署,请根据您的场景更新yaml文件。
#source ../configs/model-data-collector/data-storage-basic-OnlineDeployment.YAML
$schema: http://azureml/sdk-2-0/OnlineDeployment.json
endpoint_name: my_endpoint #unchanged
name: blue #unchanged
model: azureml:my-model-m1:1 #azureml:models/<name>:<version> #unchanged
environment: azureml:custom-logging-env@latest #unchanged
data_collector:
collections:
model_inputs:
enabled: 'True'
model_outputs:
enabled: 'True'
可配置的错误处理器
默认情况下,当出现意外行为(如未启用自定义日志记录、未启用收集、不支持的数据类型)时,我们将引发异常,如果您想要可配置的 on_error,您可以使用以下方法进行操作
collector = Collector(name="inputs", on_error=lambda e: logging.info("ex:{}".format(e)))
变更日志
v1.0.0 (2024.4.25)
公告
- 发布官方版本 v1.0.0。
v0.1.0b4 (2023.8.21)
改进
- 当队列满时改进错误信息。
- 增加消息队列以处理更多请求。
v0.1.0b3 (2023.5.15)
改进
- 修复 install_requires
- 修复分类器
- 修复 README
v0.1.0b2 (2023.5.9)
新特性
- 支持本地捕获
v0.1.0b1 (2023.4.25)
新特性
- 支持为 pandas Dataframe 收集模型数据。