Como monitorar um modelo customizado com IBM watsonx.governance | by Leonardo Furnielis | Jul, 2024


Neste artigo, vamos demonstrar como monitorar um modelo em um provedor de Machine Learning customizado usando o IBM watsonx.governance (IBM Watson OpenScale). Embora você possa usar qualquer mecanismo de implementação de modelo, aqui criaremos um container com Python Flask.

  • Implementação do servidor de aplicação: Implementa o servidor de aplicação usando VM ou Code Engine na IBM Cloud.
  • Configuração do watsonx.governance: Com o Jupyter Notebook configura o watsonx.governance. (diretório do Github).
  • Monitoramento do modelo: O watsonx.governance é usado para monitorar a qualidade do modelo de Machine Learning e suas transações (scoring).

Usaremos o Code Engine na IBM Cloud para simular um framework de Machine Learning personalizado existente. Siga as instruções abaixo para criar o container do modelo e fazer upload da imagem no Container Registry da IBM Cloud.

  1. Crie o container do modelo utilizando o código. (Para mais detalhes sobre como implementar um modelo scikit-learn em container, veja o artigo “Implemente um modelo Scikit-learn em container”)
  2. Faça upload da imagem para o registry da IBM Cloud.
$ ibmcloud plugin install container-registry -r 'IBM Cloud'
$ ibmcloud login -a https://cloud.ibm.com

$ ibmcloud cr region-set global
$ ibmcloud cr namespace-add 'tutorial-watsonx-governance'
$ ibmcloud cr login

$ docker tag sample-model-container \
icr.io/tutorial-watsonx-governance/sample-model-container:latest
$ docker push icr.io/tutorial-watsonx-governance/sample-model-container:latest

$ ibmcloud cr image-list

  1. Abra o seu serviço do Code Engine.
  2. Na aba Projects -> Clique em Create +

Agora precisamos configurar a integração do Container Registry ao nosso projeto.

  1. Na aba Integrations -> Clique em Global . (utilizamos o registry na localidade global com o comando ibmcloud cr region-set global).
  2. Clique em Configure

Com a configuração do Container Registry no projeto Code Engine, vamos criar a nossa aplicação.

  1. Na aba Applications -> Clique em Create +
  2. Na aba Code -> Clique em Configure image
  3. No menu de configuração, selecione o Registry server (utilizamos o IBM Registry Global ).
  4. Selecione o Namespace e Repository para o deploy da aplicação.
  1. Na aba Image start options
  2. Ajuste a Listening port para 3000 , porta utilizada pela aplicação Flask.
  3. Clique em Create

Por último, armazene o endpoint (URL) gerado pelo Code Engine:

  1. Na aba Domain mappings
  2. IMPORTANTE: Anote o endpoint público da aplicação.

Para acessar o seu serviço do watsonx.governance via Jupyter Notebook, precisamos criar uma API key no painel do IBM Cloud.

  • No menu, clique em Gerenciar -> Acesso (IAM)
  1. Na aba Chaves de API
  2. Clique em Criar uma chave API da IBM Cloud
  3. Dê um nome a sua API Key.
  4. Clique em Criar

IMPORTANTE: Anote sua API key, você não poderá visualizá-la novamente.

Para que o watsonx.governance possa acessar os dados utilizados no treinamento do modelo, faça o upload do dataset em um bucket do COS.

  1. Abra o seu serviço do COS.
  2. Clique em Create bucket +
  • Neste artigo vamos utilizar a segunda opção Quickly get started
  • Dê um nome ao seu bucket.
  • Faça upload do dataset de treinamento credit_risk_training.csv
  1. Na aba Configuration
  2. IMPORTANTE: Anote sua apikey e resource_instance_id

Abra o Jupyter Notebook e execute o código para configurar o watsonx.governance e criar o monitor de qualidade do modelo.

  1. Execute o bloco 1 , e adicione a API_KEY criada no Passo 2
  2. Execute o bloco 2
  3. No bloco 3e 3.1 vamos criar o nosso provedor de Machine Learning customizado.

4. Com o provedor de Machine Learning criado, no bloco 3.2 crie a Subscription do seu modelo.

5. Adicione suas credenciais:

  • SCORING_ENDPOINT_URL: Endpoint da aplicação Code Engine criada no Passo 1 . Adicione o seguinte path ao endpoint: /api/v1/predict . ex.: https://application.us-south.codeengine.appdomain.cloud/api/v1/predict
  • COS_API_KEY_ID: API Key do COS criado no Passo 3
  • COS_RESOURCE_CRN: Resource CRN criado no Passo 3
  • BUCKET_NAME: Nome do bucket criado no Passo 3

6. Agora vamos executar chamadas ao modelo, e registrar o resultado (payload logging) no watsonx.governance.

7. Por último, configure e execute alguns monitores de qualidade para o modelo.

  • Acurácia
  • Precisão
  • Recall
  • AUC

IMPORTANTE: Execute o Jupyter Notebook até o fim para efetuar o monitor de qualidade com o dataset de teste.

o IBM watsonx.governance é uma ferramenta poderosa para monitorar e garantir a qualidade de modelos de Machine Learning. Seguindo os passos descritos no artigo, é possível monitorar modelos de provedores customizados. Explore novos monitores para aprimorar ainda mais a robustez e transparência do seu modelo.

Recent Articles

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here