Estruturas do Microsoft Azure ML Service
Você pode usar o Microsoft Azure ML Service para realizar o registro de carga útil, o registro de feedback e para medir a precisão do desempenho, a detecção de viés de tempo de execução, a explicabilidade e a função de autodebias para avaliações de modelos.
As seguintes estruturas do Serviço Microsoft Azure Machine Learning são compatíveis para avaliações de modelos:
Tabela 1. Detalhes do suporte da estrutura
| Estrutura | Tipo de problema | Tipo de dados |
|---|---|---|
| Native | Classificação | Estruturado |
| scikit-learn | Classificação | Estruturado |
| scikit-learn | Regressão | Estruturado |
Para gerar o modelo de detecção de desvio, deve-se usar o scikit-learn versão 0.20.2 no Notebooks.
Azure Endpoints automatizados Machine Learning e Azure são gerenciados com notebooks para avaliações de modelos.
Adição do serviço de ML Microsoft Azure
Você pode configurar avaliações de modelos para trabalhar com o Serviço de ML Microsoft Azure usando um dos seguintes métodos:
- Na primeira vez em que estiver adicionando um provedor de aprendizado de máquina, você poderá usar a interface de configuração. Para obter mais informações, consulte Especificando uma instância do Microsoft Azure ML Service.
- Também é possível incluir seu provedor de aprendizado de máquina usando o Python SDK. Deve-se usar esse método se você deseja ter mais de um provedor. Para obter informações adicionais, consulte Incluir seu mecanismo de aprendizado de máquina Microsoft Azure.
Vários pontos de extremidade REST são chamados e são necessários para interagir com o Serviço de ML Azure. Para fazer isso, você deve vincular o serviço Azure Machine Learning.
- Crie uma Entidade do Serviço do Active Directory do Azure.
- Especifique os detalhes da credencial quando você adicionar a associação de serviço do Serviço de ML Azure, seja por meio da interface do usuário ou do Python SDK.
Requisitos para solicitação de JSON e arquivos de resposta
Para que as avaliações de modelo funcionem com o Serviço de ML Azure, as implantações de serviço da Web que você cria devem atender a determinados requisitos. As implementações de serviços da web que você cria devem aceitar as solicitações JSON e retornar respostas JSON, de acordo com os requisitos a seguir.
Formato de solicitação JSON de serviço da web necessário
- O corpo da solicitação da API de REST deve ser um documento JSON que contém uma matriz JSON de objetos JSON
- A matriz JSON deve ser denominada
"input". - Cada objeto JSON pode incluir apenas pares de chave e valor simples, em que os valores podem ser uma sequência, um número,
true,falseounull - Os valores não podem ser um objeto ou matriz JSON
- Cada objeto JSON na matriz deve todos ter as mesmas chaves (e, portanto, número de chaves) especificado, independentemente de haver um valor não
nulldisponível
O arquivo JSON de amostra a seguir atende aos requisitos anteriores e pode ser usado como um modelo para criação de seus próprios arquivos de solicitação JSON:
{
"input": [
{
"field1": "value1",
"field2": 31,
"field3": true,
"field4": 2.3
},
{
"field1": "value2",
"field2": 15,
"field3": false,
"field4": 0.1
},
{
"field1": null,
"field2": 5,
"field3": true,
"field4": 6.1
}
]
}
Formato de resposta JSON de serviço da web necessário
Anote os itens a seguir quando você criar um arquivo de resposta JSON:
O corpo de resposta da API de REST deve ser um documento JSON que contém uma matriz JSON de objetos JSON
A matriz JSON deve ser denominada
"output".Cada objeto JSON pode incluir apenas pares de valor e chave, em que os valores podem ser uma sequência, um número,
true,false,nullou uma matriz que não contém nenhum outro objeto JSON ou matrizesOs valores não podem ser um objeto JSON
Cada objeto JSON na matriz deve todos ter as mesmas chaves (e número de chaves) especificado, independentemente de haver um valor não
nulldisponívelPara modelos de classificação: o serviço da web deve retornar uma matriz de probabilidades para cada classe e a ordenação das probabilidades deve ser consistente para cada objeto JSON na matriz
- Exemplo: suponha que você tenha um modelo de classificação binária que prevê o risco de crédito, em que as classes são
RiskouNo Risk - Para cada resultado retornado de volta na matriz "output", os objetos devem conter um par de chave-valor que inclua as probabilidades em ordem fixa, no formato:
{ "output": [ { "Scored Probabilities": ["Risk" probability,"No Risk" probability ] }, { "Scored Probabilities": ["Risk" probability,"No Risk" probability ] } ]- Exemplo: suponha que você tenha um modelo de classificação binária que prevê o risco de crédito, em que as classes são
Para ser consistente com ferramentas visuais Azure ML que são usadas no Azure ML Studio e no Service, use os nomes da chave a seguir:
- o nome de chave
"Scored Labels"para a chave de saída que denota o valor previsto do modelo - o nome de chave
"Scored Probabilities"para a chave de saída que denota uma matriz de probabilidades para cada classe
O arquivo JSON de amostra a seguir atende aos requisitos anteriores e pode ser usado como um modelo para a criação de seus próprios arquivos de resposta JSON:
{
"output": [
{
"Scored Labels": "No Risk",
"Scored Probabilities": [
0.8922524675865824,
0.10774753241341757
]
},
{
"Scored Labels": "No Risk",
"Scored Probabilities": [
0.8335192848546905,
0.1664807151453095
]
}
]
}
Blocos de notas de amostra
Os Blocos de Notas a seguir mostram como trabalhar com o Microsoft Azure ML Service:
Especificando uma instância do Microsoft Azure ML Service
Sua primeira etapa para configurar as avaliações de modelo é especificar uma instância do Serviço de ML Microsoft Azure. Sua instância do Azure ML Service é o local em que você armazena seus modelos e implementações de IA.
Os modelos e as implantações de IA são conectados em uma instância do Serviço de ML Azure para avaliações de modelos. Para conectar seu serviço, vá para a guia Configure
, adicione um provedor de aprendizado de máquina e clique no ícone Edit
. Além de um nome e descrição e se o ambiente é Pré-produção ou Produção, deve-se fornecer as informações a seguir:
- ID do cliente: o valor de sequência real de seu ID do cliente, que verifica quem você é e autentica e autoriza chamadas que você faz para o Azure Service.
- Segredo do cliente: o valor real da sequência do segredo, que verifica quem você é e autentica e autoriza chamadas que você faz para o Azure Service.
- Locatário: o seu ID do locatário corresponde à sua organização e é uma instância dedicada do Azure AD. Para localizar o ID do locatário, passe o cursor do mouse sobre seu nome da conta para obter o diretório e o ID do locatário, ou selecione Azure Active Directory > Propriedades > ID do diretório no portal Azure.
- ID da assinatura: credenciais de assinatura que identificam com exclusividade a sua assinatura do Microsoft Azure. O ID da assinatura faz parte do URI para cada chamada de serviço.
Consulte Como usar o portal para criar um aplicativo do Azure AD e uma entidade de serviço que possa acessar recursos para obter instruções sobre como obter as suas credenciais do Microsoft Azure.
Agora você está pronto para selecionar modelos implementados e configurar seus monitores. Seus modelos implantados no painel do Insights, onde você pode clicar em Add to dashboard (Adicionar ao painel). Selecione as implementações que deseja monitorar e clique em Configurar.
Para obter mais informações, consulte Configurar monitores.
Criação de log de carga útil com o mecanismo do Microsoft Azure ML Service
Inclua seu mecanismo do Microsoft Azure ML Service
Um mecanismo de tempo de execução watsonx.ai que não seja da IBM é vinculado como Personalizado e consiste em metadados. Não há integração direta com o serviço de tempo de execução watsonx.ai que não seja da IBM.
service_type = "azure_machine_learning_service"
added_service_provider_result = wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type = service_type,
credentials=AzureCredentials(
subscription_id= AZURE_ENGINE_CREDENTIALS['subscription_id'],
client_id = AZURE_ENGINE_CREDENTIALS['client_id'],
client_secret= AZURE_ENGINE_CREDENTIALS['client_secret'],
tenant = AZURE_ENGINE_CREDENTIALS['tenant']
),
background_mode=False
).result
É possível ver a sua ligação de serviços com o comando a seguir:
client.service_providers.list()
A saída de amostra:
uid name service_type created
410e730f-8462-45fe-8b41-a029d6d6043a My Azure ML Service engine azure_machine_learning_service2019-06-10T22:10:29.398Z
Incluir assinatura do Microsoft Azure ML Service
Incluir assinatura
asset_deployment_details = wos_client.service_providers.list_assets(data_mart_id=data_mart_id, service_provider_id=service_provider_id).result
asset_deployment_details
deployment_id=''
for model_asset_details in asset_deployment_details['resources']:
if model_asset_details['metadata']['guid']==deployment_id:
break
azure_asset = Asset(
asset_id=model_asset_details["entity"]["asset"]["asset_id"],
name=model_asset_details["entity"]["asset"]["name"],
url=model_asset_details["entity"]["asset"]["url"],
asset_type=model_asset_details['entity']['asset']['asset_type'] if 'asset_type' in model_asset_details['entity']['asset'] else 'model',
input_data_type=InputDataType.STRUCTURED,
problem_type=ProblemType.BINARY_CLASSIFICATION
)
deployment_scoring_endpoint = model_asset_details['entity']['scoring_endpoint']
scoring_endpoint = ScoringEndpointRequest(url = model_asset_details['entity']['scoring_endpoint']['url'],request_headers = model_asset_details['entity']['scoring_endpoint']['request_headers'],
credentials = None)
deployment = AssetDeploymentRequest(
deployment_id=model_asset_details['metadata']['guid'],
url=model_asset_details['metadata']['url'],
name=model_asset_details['entity']['name'],
description=model_asset_details['entity']['description'],
deployment_type=model_asset_details['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
label_column="Risk ",
prediction_field='Scored Labels',
probability_fields=['Scored Probabilities'],
training_data_reference=training_data_reference,
training_data_schema=None,
input_data_schema=None,
output_data_schema=None,
)
subscription_details = wos_client.subscriptions.add(
data_mart_id=data_mart_id,
service_provider_id=service_provider_id,
asset=azure_asset,
deployment=deployment,
asset_properties=asset_properties,
background_mode=False
).result
Obter lista de assinaturas
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Ativar a criação de log de carga útil
Ativar a criação de log de carga útil na assinatura
payload_data_set_id = None
payload_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING,
target_target_id=subscription_id,
target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
Obter detalhes da criação de log
subscription.payload_logging.get_details()
Pontuação e criação de log de carga útil
Pontue o seu modelo. Para obter um exemplo completo, consulte Trabalhando com o Azure Machine Learning Service Engine Notebook.
Armazene a solicitação e a resposta na tabela de criação de log de carga útil:
wos_client.data_sets.store_records(data_set_id=payload_data_set_id, request_body=[PayloadRecord(
scoring_id=str(uuid.uuid4()),
request=request_data,
response=response_data,
response_time=460
)])
Para linguagens diferentes de Python, também é possível registrar a carga útil usando uma API de REST.