estruturas de aprendizado de máquina customizadas

Você pode usar sua estrutura personalizada de aprendizado de máquina para concluir 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, a detecção de desvio e a função de devios automáticos para avaliações de modelos. A estrutura de aprendizado de máquina personalizada deve ter equivalência com o IBM watsonx.ai Runtime.

As seguintes estruturas personalizadas de aprendizado de máquina oferecem suporte a avaliações de modelos:

Detalhes do suporte da estrutura
Estrutura Tipo de problema Tipo de dados
Equivalente ao tempo de execução IBM watsonx.ai Classificação Estruturado
Equivalente ao tempo de execução IBM watsonx.ai Regressão Estruturado

Para um modelo que não seja equivalente ao IBM watsonx.ai Runtime, você deve criar um wrapper para o modelo personalizado que exponha os pontos de extremidade da API REST necessários. Também deve-se fazer a ponte entre a entrada / saída entre Watson OpenScale e o mecanismo de aprendizado de máquina customizado real.

Quando um mecanismo de aprendizado de máquina customizado é a melhor escolha para mim?

Um mecanismo de aprendizado de máquina customizado é a melhor escolha quando as situações a seguir são verdadeiras:

  • Você não está usando nenhum produto imediatamente disponível para servir seus modelos de aprendizado de máquina. Você tem um sistema para atender aos seus modelos e não existe suporte direto para essa função nas avaliações de modelos.
  • O mecanismo de veiculação que você está usando de um fornecedor terceirizado ainda não é compatível com avaliações de modelos. Neste caso, considere desenvolver um mecanismo de aprendizado de máquina customizado como um wrapper para suas implementações originais ou nativas.

Como isso funciona

A imagem a seguir mostra o suporte ao ambiente customizado:

Como o gráfico de trabalhos personalizados é exibido. Ele mostra caixas para o ambiente personalizado com a API do cliente e a API Watson OpenScale

Também é possível referenciar os links a seguir:

API de criação de log de carga útil do Watson OpenScale

SDK do cliente Python

Python SDK

  • Critérios de entrada para o modelo suportar monitores

    No exemplo a seguir, seu modelo usa um vetor de recurso, que é essencialmente uma coleção de campos nomeados e seus valores, como uma entrada.

    {
    "fields": [
        "name",
        "age",
        "position"
    ],
    "values": [
        [
            "john",
            33,
            "engineer"
        ],
        [
            "mike",
            23,
            "student"
        ]
    ]
    
    

    O campo “age” pode ser avaliado para equidade.

    Se a entrada for um tensor ou uma matriz, que é transformada a partir do espaço de recursos de entrada, esse modelo não poderá ser avaliado. Por extensão, os modelos de deep learning com entradas de texto ou de imagem não podem ser manipulados para detecção e mitigação de propensão.

    Adicionalmente, os dados de treinamento devem ser carregados para suportar a Explicabilidade.

    Para explicabilidade no texto, o texto completo deve ser um dos recursos. A explicabilidade em imagens para um modelo Customizado não é suportada na liberação atual.

  • Critérios de saída para o modelo suportar monitores

    Seu modelo fornece a saída do vetor de recurso de entrada ao lado das probabilidades de predição de várias classes nesse modelo.

    {
    "fields": [
        "name",
        "age",
        "position",
        "prediction",
        "probability"
    ],
    "labels": [
        "personal",
        "camping"
    ],
    "values": [
        [
            "john",
            33,
            "engineer",
            "personal",
            [
                0.6744664422398081,
                0.3255335577601919
            ]
        ],
        [
            "mike",
            23,
            "student"
            "camping",
            [
                0.2794765664946941,
                0.7205234335053059
            ]
        ]
    ]
    }
    

    Neste exemplo, "personal” e “camping” são as classes possíveis, e as pontuações em cada saída de pontuação são atribuídas a ambas as classes. Se as probabilidades de predição estão ausentes, funciona a detecção de propensão, mas a remoção automática de propensão não.

    Você pode acessar a saída de avaliação de um ponto de extremidade de avaliação ao vivo que pode ser chamado com a API REST para avaliações de modelo. Para o CUSTOMML, Amazon SageMaker, e IBM watsonx.ai Runtime, Watson OpenScale se conecta diretamente aos endpoints de pontuação nativos.

Mecanismo de aprendizagem de máquina customizado

Um mecanismo de aprendizado de máquina customizado fornece as capacidades de infraestrutura e hospedagem para modelos de aprendizado de máquina e aplicativos da web. Os mecanismos personalizados de aprendizado de máquina compatíveis com as avaliações de modelos devem estar em conformidade com os seguintes requisitos:

  • Exponha dois tipos de terminais da API de REST:

    • terminal de descoberta (lista GET de implementações e detalhes)
    • terminais de pontuação (pontuação on-line e em tempo real)
  • Todos os terminais precisam ser compatíveis com a especificação do swagger para serem suportados.

  • A carga útil de entrada e a saída para/da implementação devem ser compatíveis com o formato de arquivo JSON que está descrito na especificação.

Watson OpenScale suporta apenas os formatos de autenticação BasicAuth, none ou apiKey.

Para ver a especificação dos pontos de extremidade da API REST, consulte a API REST.

Adição de um mecanismo de aprendizado de máquina personalizado

Você pode configurar avaliações de modelos para trabalhar com um provedor de aprendizado de máquina personalizado usando um dos seguintes métodos:

Explorar mais

Você pode usar o monitor de aprendizado de máquina personalizado para criar uma maneira de interagir com outros serviços.

Especificando uma Instância de Serviço ML Customizada

Sua primeira etapa para configurar as avaliações de modelo é especificar uma instância de serviço. Sua instância de serviço é onde você armaza seus modelos e implementações de IA.

Conecte sua Instância de serviço customizado

Os modelos e as implementações de IA são conectados em uma instância de serviço para avaliações de modelos. É possível conectar um serviço customizado. Para conectar seu serviço, vá para a guia Configurar " O ícone da guia de configuração, adicione um provedor de aprendizado de máquina e clique no ícone Editar " O ícone da guia de configuração. Além de um nome, descrição e especificação do tipo de ambiente Pré-produção ou Produção, deve-se fornecer as informações a seguir que são específicas para este tipo de instância de serviço:

  • Nome de Usuário
  • Senha
  • Terminal da API que usa o formato https://host:port, como https://custom-serve-engine.example.net:8443

Escolha se deve se conectar às suas implementações solicitando uma lista ou inserindo terminais de pontuação individuais.

Solicitando a lista de implementações

Se você selecionou o ladrilho Solicitar a lista de implementações, insira suas credenciais e o Terminal de API, em seguida, salve sua configuração.

Fornecendo terminais de pontuação individuais

Se você selecionou o ladrilho Inserir terminais de pontuação individual, insira suas credenciais para o Terminal de API, salve sua configuração.

Agora você está pronto para selecionar modelos implementados e configurar seus monitores. Seus modelos implantados são listados 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.

Exemplos do mecanismo de aprendizado de máquina customizado

Use as ideias a seguir para configurar o seu próprio mecanismo de aprendizado de máquina customizado.

Python e flask

É possível usar Python e flask para servir o modelo scikit-learn.

Para gerar o modelo de detecção de desvio, deve-se usar o scikit-learn versão 0.20.2 no bloco de notas.

O app pode ser implementado localmente para propósitos de teste e como um aplicativo na IBM Cloud.

Node.js

Também é possível localizar um exemplo de um mecanismo de aprendizado de máquina customizado que está gravado no Node.js aqui.

Padrão de código End2end

Padrão de código que mostra um exemplo de implantação de mecanismo personalizado de end2end e integração com avaliações de modelo.

Criação de log de carga útil com o mecanismo de aprendizado da máquina

Para configurar o registro de carga útil para um watsonx.ai Runtime que não seja da IBM ou para um mecanismo de aprendizado de máquina personalizado, você deve associar o mecanismo de ML como personalizado.

Inclua seu mecanismo de aprendizado de máquina customizado

Um mecanismo de Runtime non-watsonx.ai é adicionado como personalizado usando metadados e não há integração direta com o serviço de Runtime watsonx.ai que não seja da IBM. Você pode adicionar mais de um mecanismo de aprendizado de máquina para avaliações de modelos usando o método " wos_client.service_providers.add.

CUSTOM_ENGINE_CREDENTIALS = {
    "url": "***",
    "username": "***",
    "password": "***",
}

wos_client.service_providers.add(
        name=SERVICE_PROVIDER_NAME,
        description=SERVICE_PROVIDER_DESCRIPTION,
        service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
        credentials=CustomCredentials(
            url= CUSTOM_ENGINE_CREDENTIALS['url'],
            username= CUSTOM_ENGINE_CREDENTIALS['username'],
            password= CUSTOM_ENGINE_CREDENTIALS['password'],
        ),
        background_mode=False
    ).result

É possível ver o seu provedor de serviços com o comando a seguir:

client.service_providers.get(service_provider_id).result.to_dict()

Ligação de ML genérica

Configurar segurança com uma chave de API

Para configurar a segurança de seu mecanismo de aprendizado de máquina personalizado, você pode usar IBM Cloud e IBM Cloud Pak for Data como provedores de autenticação para suas avaliações de modelo. É possível usar a URL https://iam.cloud.ibm.com/identity/token para gerar um token de IAM para IBM Cloud e usar a URL https://<$hostname>/icp4d-api/v1/authorize para gerar um token para Cloud Pak for Data.

É possível usar a solicitação POST /v1/deployments/{deployment_id}/online para implementar sua API de pontuação nos formatos a seguir:

Solicitação

{
	"input_data": [{
		"fields": [
			"name",
			"age",
			"position"
		],
		"values": [
			[
			"john",
			 33,
			"engineer"
			],
			[
			"mike",
			 23,
			"student"
			]
		]
	}]
}

Resposta

{
	"predictions": [{
		"fields": [
			"name",
			"age",
			"position",
			"prediction",
			"probability"
		],
		"labels": [
			"personal",
			"camping"
		],
		"values": [
			[
			"john",
			 33,
			"engineer",
			"personal",
			[
			0.6744664422398081,
			0.32553355776019194
			]
			],
			[
			"mike",
			 23,
			"student",
			"camping",
			[
			0.2794765664946941,
			0.7205234335053059
			]
			]
		]
	}]
}

Incluir assinatura customizada

Para incluir uma assinatura customizada, execute o comando a seguir:

custom_asset = Asset(
        asset_id=asset['entity']['asset']['asset_id'],
        name=asset['entity']['asset']['name'],
        url = "dummy_url",
        asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
        problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
        input_data_type=InputDataType.STRUCTURED,
    )
deployment = AssetDeploymentRequest(
        deployment_id=asset['metadata']['guid'],
        url=asset['metadata']['url'],
        name=asset['entity']['name'],
        deployment_type=asset['entity']['type'],
        scoring_endpoint =  scoring_endpoint
    )
asset_properties = AssetPropertiesRequest(
        prediction_field='predicted_label',
        probability_fields = ["probability"],
        training_data_reference=None,
        training_data_schema=None,
        input_data_schema=None,
        output_data_schema=output_schema,
    )
result = ai_client.subscriptions.add(
        data_mart_id=cls.datamart_id,
        service_provider_id=cls.service_provider_id,
        asset=custom_asset,
        deployment=deployment,
        asset_properties=asset_properties,
        background_mode=False
    ).result

Para obter a lista de assinatura, execute o comando a seguir:

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

Para ativar a criação de log de carga útil na assinatura, execute o comando a seguir:

request_data = {'fields': feature_columns, 
                'values': [[payload_values]]}

Para obter detalhes de criação de log, execute o comando a seguir:

response_data = {'fields': list(result['predictions'][0]),
                 'values': [list(x.values()) for x in result['predictions']]}

Pontuação e criação de log de carga útil

  • Pontue o seu modelo.

  • Armazene a solicitação e a resposta na tabela de criação de log de carga útil

    records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)]
    
    subscription.payload_logging.store(records=records_list)
    

Para linguagens diferentes do Python, também é possível registrar carga útil usando uma API de REST.