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:
Esta etapa tem diferenças dependendo do tipo de modelo de machine learning usado:
Se você quiser receber explicações de um modelo treinado de maneira personalizada, siga as etapas Como configurar explicações baseadas em exemplo ou Como configurar explicações baseadas em recursos para criar um
Model
compatível com a Vertex Explainable AI.Se você quiser receber explicações de um modelo de regressão ou classificação tabular do AutoML,treine um modelo do AutoML em um conjunto de dados tabular. Não é necessária uma configuração específica para usar a Vertex Explainable AI. As explicações para modelos de previsão não são compatíveis.
Para receber explicações de um modelo de classificação de imagem do AutoML, treine um modelo do AutoML em um conjunto de dados de imagens e ative as explicações ao implantar o modelo. Não é necessária uma configuração específica para usar a Vertex Explainable AI. As explicações para modelos de detecção de objetos não são compatíveis.
Se você quiser receber explicações on-line, implante o
Model
criado na etapa anterior em um recursoEndpoint
.
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:
Para modelos de classificação de imagem do AutoML, leia Como receber previsões on-line de modelos do AutoML.
Para modelos de classificação e regressão tabular do AutoML, leia Como receber previsões on-line de modelos do AutoML.
Para modelos treinados personalizados, leia Como receber previsões on-line de modelos treinados personalizados.
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 modelopreview
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
- Com base nas explicações que você receber, saiba como ajustar
Model
para melhorar as explicações. - Teste um notebook de exemplo que demonstre a Vertex Explainable AI em dados tabulares ou de imagem.