Como usar a Ferramenta What-If

Use a Ferramenta What-If (WIT, na sigla em inglês) [página em inglês] em ambientes de notebook para inspecionar modelos do AI Platform Prediction em um painel interativo. A ferramenta se integra ao TensorBoard, aos notebooks do Jupyter e do Colab e ao JupyterHub. Ela também vem pré-instalada nas instâncias do TensorFlow de notebooks do Vertex AI Workbench gerenciados pelo usuário.

Nesta página, você verá como usar a ferramenta What-If com um modelo treinado já implantado no AI Platform. Saiba como implantar modelos.

Instalar a Ferramenta What-If

Veja como instalar witwidget (em inglês) em uma variedade de ambientes de notebook:

Notebooks gerenciados por usuários

O witwidget já está instalado em instâncias de notebooks gerenciados pelo usuário.

Carregue os tutoriais da Ferramenta What-If na sua instância do notebook clonando o repositório do tutorial da WIT (em inglês) na sua instância. Veja como clonar um repositório do GitHub em uma instância de notebooks gerenciados pelo usuário.

Notebook do Jupyter

Instale e ative a WIT para Jupyter por meio dos seguintes comandos:

pip install witwidget
jupyter nbextension install --py --symlink --sys-prefix witwidget
jupyter nbextension enable --py --sys-prefix witwidget

Para usar o TensorFlow com suporte a GPUs (tensorflow-gpu), instale a versão witwidget compatível:

pip install witwidget-gpu
jupyter nbextension install --py --symlink --sys-prefix witwidget
jupyter nbextension enable --py --sys-prefix witwidget

Basta executar esses comandos de instalação uma vez no ambiente do Jupyter. Posteriormente, sempre que você abrir um kernel do Jupyter, a Ferramenta What-If estará disponível.

Bloco do Colab

Instale o widget no ambiente de execução do notebook do kernel executando uma célula contendo:

!pip install witwidget

Para usar o TensorFlow com suporte a GPUs (tensorflow-gpu), instale a versão witwidget compatível:

!pip install witwidget-gpu

JupyterLab

Siga estas instruções para o JupyterLab fora dos notebooks gerenciados pelo usuário.

Instale e ative a WIT para JupyterLab executando uma célula contendo:

!pip install witwidget
!jupyter labextension install wit-widget
!jupyter labextension install @jupyter-widgets/jupyterlab-manager

Para compatibilidade com GPUs do TensorFlow, use o pacote witwidget-gpu:

!pip install witwidget-gpu
!jupyter labextension install wit-widget
!jupyter labextension install @jupyter-widgets/jupyterlab-manager

Talvez seja necessário executar comandos !sudo jupyter labextension ... dependendo da configuração do notebook.

Ajustar saídas de previsão para a Ferramenta What-If

Para os modelos em que a saída não corresponde ao que a ferramenta exige, você precisa definir uma função de ajuste de previsão no código.

São necessários os seguintes formatos de entrada:

  • Modelo de classificação: uma lista de pontuações de classe
  • Modelo de regressão: uma pontuação de regressão

Por exemplo, um modelo de classificação binária XGBoost retorna pontuações somente para a classe positiva. Como a ferramenta espera pontuações para cada classe, use a seguinte função de ajuste de previsão para conseguir uma lista com as pontuações negativas e positivas:

def adjust_prediction(pred):
  return [1 - pred, pred]

Defina a função de ajuste de previsão em uma célula de código do notebook antes de configurar a ferramenta What-If.

Configurar a ferramenta What-If

É possível usar a Ferramenta What-If para inspecionar um modelo ou comparar dois. Em WitConfigBuilder (em inglês), preencha os valores do projeto do Google Cloud, do modelo e versão do AI Platform Prediction e outros valores apropriados do seu modelo.

  1. Importe witwidget:

    import witwidget
    
  2. Crie um WitConfigBuilder (em inglês) para passar vários parâmetros sobre o modelo e o projeto do AI Platform Prediction para a Ferramenta What-If. É possível usar a Ferramenta What-If para inspecionar um modelo ou comparar modelos. Preencha os valores do projeto do Google Cloud, do modelo e versão do AI Platform Prediction e outros valores apropriados do modelo.

    Inspecionar um modelo

    Com este criador de configurações, você verá como usar a Ferramenta What-If para inspecionar um modelo. Veja o exemplo completo de notebook com um modelo XGBoost implantado (em inglês).

    Veja o código para WitConfigBuilder (em inglês) para mais detalhes sobre cada método.

    PROJECT_ID = 'YOUR_PROJECT_ID'
    MODEL_NAME = 'YOUR_MODEL_NAME'
    VERSION_NAME = 'YOUR_VERSION_NAME'
    TARGET_FEATURE = 'mortgage_status'
    LABEL_VOCAB = ['denied', 'approved']
    
    config_builder = (WitConfigBuilder(test_examples.tolist(), features.columns.tolist() + ['mortgage_status'])
      .set_ai_platform_model(PROJECT_ID, MODEL_NAME, VERSION_NAME, adjust_prediction=adjust_prediction)
      .set_target_feature(TARGET_FEATURE)
      .set_label_vocab(LABEL_VOCAB))
    

    Comparar modelos

    Com este criador de configurações, você verá como usar a Ferramenta What-If para inspecionar e comparar dois modelos. Veja o exemplo completo de notebook que compara os modelos Keras e scikit-learn implantados (em inglês).

    Veja o código para WitConfigBuilder (em inglês) para mais detalhes sobre cada método.

    PROJECT_ID = 'YOUR_PROJECT_ID'
    KERAS_MODEL_NAME = 'YOUR_KERAS_MODEL_NAME'
    KERAS_VERSION_NAME = 'VERSION_NAME_OF_YOUR_KERAS_MODEL'
    SKLEARN_MODEL_NAME = 'YOUR_SKLEARN_MODEL_NAME'
    SKLEARN_VERSION_NAME = 'VERSION_NAME_OF_YOUR_SKLEARN_MODEL'
    TARGET_FEATURE = 'quality'
    
    config_builder = (WitConfigBuilder(test_examples.tolist(), features.columns.tolist() + [TARGET_FEATURE])
     .set_ai_platform_model(PROJECT_ID, KERAS_MODEL_NAME, KERAS_VERSION_NAME)
     .set_predict_output_tensor('sequential').set_uses_predict_api(True)
     .set_target_feature(TARGET_FEATURE)
     .set_model_type('regression')
     .set_compare_ai_platform_model(PROJECT_ID, SKLEARN_MODEL_NAME, SKLEARN_VERSION_NAME))
    
  3. Passe o criador de configurações para o WitWidget e defina uma altura de exibição. A Ferramenta What-If mostra uma visualização interativa no notebook.

    WitWidget(config_builder, height=800)
    

A seguir