Ver as explicações

Neste guia, descrevemos como receber explicações de um recurso Model na Vertex AI. Há duas maneiras de ter acesso às explicações:

  • Explicação on-line: solicitações síncronas à API Vertex AI, semelhante às previsões on-line que retornam previsões com atribuições de recursos.

  • Explicação em lote: solicitações assíncronas à API Vertex AI que retornam previsões com atribuições de recursos. As explicações em lote são uma parte opcional das solicitações de previsão em lote.

Antes de começar

Antes de ver as explicações, faça o seguinte:

  1. Esta etapa tem diferenças dependendo do tipo de modelo de machine learning usado:

  2. Se você quiser receber explicações on-line, implante o Model criado na etapa anterior em um recurso Endpoint.

Ver explicações on-line

Para explicações on-line, siga a maioria das etapas que você usaria para receber previsões on-line. No entanto, em vez de enviar uma solicitação projects.locations.endpoints.predict à API Vertex AI, envie uma solicitação projects.locations.endpoints.explain.

Os guias a seguir fornecem instruções detalhadas para preparar e enviar solicitações de explicação on-line:

Receber explicações em lote

Somente explicações em lote com base em recursos são suportadas. Não é possível receber explicações em lote com base em exemplos.

Para explicações em lote, defina o campo generateExplanation como true ao criar um job de previsão em lote.

Para instruções detalhadas sobre como preparar e criar jobs de previsão em lote, leia Como conseguir previsões em lote.

Receba explicações localmente sobre os notebooks gerenciados pelo usuário do Vertex AI Workbench

Nos notebooks gerenciados pelo usuário do Vertex AI Workbench, é possível gerar explicações para seu modelo treinado e personalizado executando o Vertex Explainable AI no kernel local ou no ambiente de execução do seu notebook sem implantar o modelo na Vertex AI para conferir explicações. Com o uso de explicações locais, é possível testar diferentes configurações da Vertex Explainable AI sem ajustar a implantação do modelo do Vertex AI para cada alteração. Isso facilita e agiliza a avaliação do impacto do uso de valores de referência diferentes, tentando diferentes configurações de visualização para suas explicações ou ajustando o número de etapas ou caminhos usados para o algoritmo.

As explicações locais estão disponíveis apenas dentro de notebooks gerenciados pelo usuário. Portanto, esse recurso não funciona em notebooks do Jupyter executados fora de uma instância de notebooks gerenciados pelo usuário.

Para gerar explicações localmente em uma instância de notebooks gerenciada pelo usuário:

  • Criar uma instância de notebooks gerenciados pelo usuário
  • Inicie o ambiente do JupyterLab na instância de notebooks gerenciada pelo usuário e crie ou importe um notebook.
  • Salve o artefato do modelo no ambiente local do notebook ou em um bucket do Cloud Storage.
  • Gere e salve metadados para descrever seu modelo e configurar sua solicitação de explicação.

Acessar explicações simultâneas

A Explainable AI oferece suporte a explicações simultâneas. Explicações simultâneas permitem solicitar explicações baseadas em atributos e exemplos do mesmo endpoint de modelo implantado sem precisar implantar seu modelo separadamente para cada método de explicação.

Para receber explicações simultâneas, faça o upload do seu modelo e configure as explicações com base em exemplos ou com base em recursos. Em seguida, implante o modelo normalmente.

Após a implantação do modelo, é possível solicitar as explicações configuradas normalmente. Além disso, é possível solicitar explicações simultâneas especificando concurrent_explanation_spec_override.

Ao usar explicações simultâneas, observe o seguinte:

  • Explicações simultâneas estão disponíveis usando apenas a versão v1beta1 da API. Se você estiver usando o SDK Vertex para Python, precisará usar o modelo preview para usar explicações simultâneas.
  • Explicações baseadas em exemplos não podem ser solicitadas após a implantação com explicações baseadas em recursos. Se você quiser explicações baseadas em exemplo e em recursos, implante o modelo usando as explicações baseadas em exemplo e solicite as baseadas em recurso usando o campo de explicação simultânea.
  • As Explicações em lote não são compatíveis com Explicações simultâneas. As Explicações on-line são a única maneira de usar esse recurso.

Usar o SDK do Explainable AI em notebooks gerenciados pelo usuário

O SDK do Explainable AI é pré-instalado nas instâncias de notebooks gerenciados pelo usuário. No seu notebook, é possível usar o SDK do Explainable AI para salvar o artefato do modelo e identificar automaticamente os metadados sobre as entradas e saídas do modelo para a solicitação de explicação. Também é possível especificar outros parâmetros para configurar a solicitação de explicação e visualizar os resultados.

É possível salvar modelos e metadados no ambiente local do notebook ou em um bucket do Cloud Storage. Se você estiver usando o TensorFlow, poderá usar o método save_model_with_metadata() para inferir entradas e saídas do modelo e salvar esses metadados de explicação com o modelo.

Em seguida, carregue o modelo no SDK do Explainable AI usando load_model_from_local_path(). Se necessário, ajuste a configuração para o algoritmo específico do Vertex Explainable AI. Por exemplo, é possível alterar o número de caminhos a serem usados para Sampled Shapley ou o número de etapas a serem usadas em gradientes integrados ou XRAI.

Por fim, chame explain() com instâncias de dados e visualize as atribuições de recursos.

Use o código de exemplo a seguir para ver explicações locais para um modelo do TensorFlow 2 em uma instância de notebooks gerenciados pelo usuário:

# This sample code only works within a user-managed notebooks instance.
import explainable_ai_sdk
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder

metadata_and_model_builder = SavedModelMetadataBuilder('LOCAL_PATH_TO_MODEL')
metadata_and_model_builder.save_model_with_metadata('LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT')

# Load the model and adjust the configuration for Explainable AI parameters
num_paths = 20
model_artifact_with_metadata = explainable_ai_sdk.load_model_from_local_path(
    'LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT',
    explainable_ai_sdk.SampledShapleyConfig(num_paths))

# Explainable AI supports generating explanations for multiple predictions
instances = [{feature_a: 10, feature_2: 100,...}, ... ]
explanations = model_artifact_with_metadata.explain(instances)
explanations[0].visualize_attributions()

Para mais informações sobre o SDK do Explainable AI, incluindo diferentes configurações e parâmetros, consulte o arquivo config.py do SDK no GitHub. Saiba mais sobre os notebooks gerenciados pelo usuário Vertex AI Workbench.

Solução de problemas

Esta seção descreve etapas de solução de problemas que podem ser úteis se você tiver problemas ao receber explicações.

Erro: índice de lista fora do intervalo

Se você receber a seguinte mensagem de erro ao solicitar explicações:

"error": "Explainability failed with exception: listindex out of range"

Verifique se você não está transmitindo uma matriz vazia para um campo que precisa de uma matriz de objetos. Por exemplo, se field1 aceitar uma matriz de objetos, o corpo da solicitação a seguir poderá resultar em um erro:

{
  "instances": [
    {
      "field1": [],
    }
  ]
}

Em vez disso, verifique se a matriz não está vazia, por exemplo:

{
  "instances": [
    {
      "field1": [
        {}
      ],
    }
  ]
}

A seguir