Configuração do Projeto do Aplicativo ML

Depois de criar a infraestrutura para o Aplicativo de ML de amostra, você pode usar o projeto de Aplicativo de ML de amostra como modelo para começar a criar, implantar e operar seus próprios Aplicativos de ML.

Este projeto inclui as melhores práticas de desenvolvimento e fornece a CLI mlapp, uma ferramenta que simplifica o desenvolvimento de Aplicativos de ML. Para criar um Aplicativo de ML, use a CLI mlapp, o Terraform, o OCI SDK ou a CLI do OCI. Não é possível criar um Aplicativo de ML na Console, mas você pode exibir Aplicativos de ML e seus detalhes lá.

Ao iniciar seu projeto com o projeto de Aplicativo de ML de amostra, você pode avançar sua Implementação de Aplicativo de ML para produção. O projeto é criado usando a experiência adquirida ao ajudar as organizações a implantar com sucesso seus aplicativos na produção.

O projeto de amostra do Aplicativo ML está disponível aqui: sample-project.

Clone esse projeto para usá-lo como base para sua Implementação de Aplicativo de ML.

O projeto inclui documentação nos arquivos README.md, nos quais você pode encontrar informações detalhadas sobre o projeto e seus componentes.

Estrutura do Projeto

O projeto consiste em duas partes principais:

  • A pasta de infraestrutura automatiza a criação de recursos dos quais o Aplicativo de ML de amostra depende.
  • A pasta do Aplicativo ML contém o Aplicativo ML de amostra, incluindo sua configuração, implementação e a CLI mlapp.

Configurando Recursos de Pré-Requisitos

Antes de começar a criar e implantar o Aplicativo ML, você precisa criar os recursos necessários dos quais o Aplicativo ML de amostra depende (por exemplo, logs, grupos de logs, um projeto do Data Science e uma sub-rede). Esse processo pode ser automatizado seguindo estas etapas:

  1. Prepare a pasta do ambiente.
    Você pode usar a pasta de ambiente dev padrão (environments/dev) ou usá-la como modelo para criar o ambiente personalizado. Para criar o ambiente personalizado:
    1. Faça uma cópia da pasta do ambiente de desenvolvimento (environments/dev).
    2. Renomeie a pasta copiada para corresponder ao nome do ambiente.
  2. Configure o ambiente.
    1. Navegue até a pasta do ambiente (por exemplo, environments/dev).
    2. Edite o arquivo input_variables.tfvars para definir as definições do ambiente.
  3. Execute o Terraform para criar recursos.
    1. Inicialize o Terraform na pasta do ambiente:
      terraform init
    2. Aplique a configuração para criar os recursos:
      terraform apply -var- file input_variables.tfvars
    3. Se necessário, destrua os recursos criados:
      terraform destroy -var- file input_variables.tfvars
    Observação

    Não reutilize recursos em diferentes ambientes, pois você pode interromper o isolamento do ambiente. Por exemplo, o compartilhamento de um recurso entre ambientes de desenvolvimento e controle de qualidade pode causar problemas no desenvolvimento que podem tornar o ambiente de controle de qualidade inutilizável, atrasando a implantação para produção.

Configurando o Ambiente de Aplicativos ML

  1. Prepare a pasta do ambiente.
    Você pode usar a pasta de ambiente dev padrão (environments/dev) ou usá-la como modelo para criar o ambiente personalizado. Para criar o ambiente personalizado:
    1. Faça uma cópia da pasta do ambiente de desenvolvimento (environments/dev).
    2. Renomeie a pasta copiada para corresponder ao nome do ambiente.
  2. Configure o ambiente.
    Na pasta de configuração do ambiente:
    1. Edite o arquivo env-config.yaml.
    2. Edite o arquivo testdata-instance.json (o namespace do Object Storage, depois que o sinal de arroba ('@') precisar ser atualizado para corresponder à tenancy).
  3. Definir referências de recursos.
    1. Edite o arquivo arguments.yaml na pasta de configuração do ambiente para definir referências aos recursos dos quais o aplicativo depende.
    2. Na pasta infrastructure/environments/<your environment>, execute
      terraform output
    3. Copie a saída (excluindo a última linha) e cole-a em arguments.yaml, substituindo = por :.

Configurando e Inicializando a CLI do mlapp

  1. Configurar o Projeto do Aplicativo ML.
    1. Navegue até a pasta do aplicativo.
    2. Edite o arquivo application-def.yaml para definir o nome e a descrição do Aplicativo ML e sua implementação.
    3. Crie default_env para definir o ambiente como padrão (isso elimina a necessidade de especificá-lo na linha de comando ao usar a CLI mlapp). Você pode copiar ml-application/default_env.example para ml-application/default_env e armazenar o nome do ambiente lá.
  2. Inicialize o ambiente.
    Na pasta ml-application, execute:
    source ./mlapp init

    Esse comando adiciona o script mlapp à variável PATH, permitindo que você execute a CLI com mlapp em vez de ./mlapp.

Construindo e Implantando a Aplicação

Com tudo configurado, agora você pode começar a criar e implantar o aplicativo.

Observação

Saiba mais sobre os comandos da CLI mlapp executando:
mlapp -h
  1. Crie o aplicativo.
    mlapp build
  2. Implante o aplicativo.
    mlapp deploy
  3. Instancie o aplicativo.
    mlapp instantiate
  4. acionar uma execução do pipeline de treinamento.
    mlapp trigger
  5. Teste o serviço preditivo.
    mlapp predict
Depois de executar um comando da CLI mlapp, verifique os resultados navegando para Aplicativos de ML na Console/Análise e IA/Aprendizado de Máquina do OCI.

Usar Tags Definidas e de Formato Livre

O aplicativo de amostra ilustra como usar tags definidas e de formato livre para garantir o isolamento do tenant e permitir o rastreamento de recursos de tempo de execução, especificamente modelos.

As tags definidas são usadas para associar identificadores específicos do tenant a recursos como implantações de modelo, buckets de armazenamento e modelos.
Adicionar uma tag definida a um bucket
resource "oci_objectstorage_bucket" "data_storage_bucket" {
  compartment_id = var.app_impl.compartment_id
  namespace      = data.oci_objectstorage_namespace.this.namespace
  name           = "ml-app-fetal-risk-bucket-${var.app_instance.id}"
  access_type    = "NoPublicAccess"
 
  # To allow Instance (tenant) isolation
  defined_tags   = {"MlApplications.MlApplicationInstanceId" = var.app_instance.id}
}
Para recursos de runtime criados dinamicamente com base no código (como modelos), adicione uma tag definida e uma tag de formato livre. A tag de formato livre vincula o recurso à instância, permitindo a exclusão automática quando a instância é removida.
Adicionar tags definidas e de formato livre a um modelo
model_id = xgb_model.save(display_name='fetal_health_model',
                          # needed for tenant isolation
                          defined_tags={"MlApplications": {"MlApplicationInstanceId": instance_id}},
                          # needed for ML App to be able to track created model
                          freeform_tags={"MlApplicationInstance": instance_id})