Implementar Casos de Uso de ML como Pacotes de Aplicativos de ML

Os provedores que desenvolvem uma nova Implementação de Aplicativo de ML precisam criar um novo pacote de aplicativos correspondente à implementação.

O Pacote de Aplicativos permite o empacotamento padrão da funcionalidade ML de uma forma independente do ambiente e da região. Isso o torna uma solução portátil que pode ser usada em qualquer tenancy, região ou ambiente. As dependências de infraestrutura (por exemplo, VCN e OCIDs de Log) específicas de uma região ou ambiente são fornecidas como argumentos de Pacote durante o processo de upload.

Os pacotes contêm todos os detalhes de implementação de um Aplicativo ML, como o Terraform, por exemplo, componentes e componentes do aplicativo, um descritor contendo informações de versão de implementação, um esquema de configuração e muito mais. Esses pacotes podem ser carregados ou implantados em recursos existentes de Implementação de Aplicativo de ML e, quando uma nova versão de um pacote é carregada, o serviço Aplicativos de ML cria automaticamente uma nova Versão de Implementação de Aplicativo de ML e inicia uma atualização de todas as Instâncias de Aplicativo de ML que usam o pacote.

O pacote contém componentes que implementam o caso de uso ML. Existem dois tipos de componente:
Componentes do aplicativo
Esses são os recursos que precisam ser criados por Implementação de Aplicativo de ML. O provisionamento de novas Implementações de Aplicativo de ML envolve a criação de componentes de aplicativo correspondentes. Os componentes do aplicativo são comuns a todas as instâncias da Implementação do Aplicativo de ML e não são criados ou recriados quando novas Instâncias do Aplicativo de ML são provisionadas.
Componentes da instância
Esses são os recursos que precisam ser criados por Instância do Aplicativo ML. O provisionamento de novas Instâncias de Aplicativo ML envolve a criação de componentes de instância correspondentes. Os componentes de instância são diferentes para todas as instâncias da Implementação do Aplicativo ML.

A configuração do Terraform para todos os componentes do aplicativo está presente no diretório application_components do pacote de aplicativos. Da mesma forma, o Terraform de todos os componentes de instância está presente no diretório instance_components.

Para tornar a distinção entre componentes de aplicativo e componentes de instância mais clara, considere que os provedores desejam desenvolver uma solução (Implementação de Aplicativo ML) para alguns casos de uso de Aplicativos ML, que envolve as seguintes partes:
Treinamento e implantação de um modelo
Os provedores escrevem um algoritmo de machine learning que treina um modelo de ML com base em alguns dados de treinamento. Os provedores usam Jobs para treinar o modelo, armazená-lo no Catálogo de Modelos e, em seguida, implantar o modelo.
Dados a serem usados para treinamento
O modelo é treinado nos dados do cliente (consumidor) que residem em um bucket do Object Storage na tenancy do consumidor. O job ML carrega dados do bucket do SO do consumidor para o bucket do Object Storage do provedor.

Neste exemplo, o job de ML é um componente do aplicativo e a configuração do Terraform para criar o job de ML faz parte do diretório application_components no pacote de aplicativos. À medida que o treinamento real acontece nos dados do consumidor, o treinamento é acionado quando uma nova Instância do Aplicativo ML da Implementação do Aplicativo ML é provisionada. Quando uma nova Instância do Aplicativo ML é criada, um novo processamento de job é criado e acionado, que carrega dados do bucket do Object Storage do consumidor no bucket do Object Storage do provedor, treina o modelo, armazena o modelo no catálogo de modelos e, em seguida, implanta o modelo. É necessário criar uma nova execução de job para cada instância (cliente). A execução do job é um componente de instância. Além disso, o bucket do Object Storage de destino é criado para cada instância, por isso é um componente de instância. Da mesma forma, a implantação de modelo também é um componente de instância.

A configuração do Terraform para componentes de aplicativos e componentes de instâncias pode ser parametrizada. Todos esses parâmetros necessários para o provisionamento de Aplicativos ML e Instância de Aplicativo ML podem ser especificados no arquivo descriptor.yaml. Por exemplo, a imagem do docker a ser usada com a execução do job pode ser parametrizada. O projeto do Data Science no qual o job deve ser criado pode ser parametrizado. Todos esses parâmetros que pertencem aos componentes do aplicativo e são necessários ao provisionar novas implementações podem ser especificados em packageArguments no arquivo descriptor.yaml. Em geral, o packageArguments pode ser usado para fornecer valores específicos do ambiente, como OCIDs de infraestrutura e alguns valores de dimensionamento específicos do ambiente.

Da mesma forma, o nome do bucket do sistema operacional de origem (da tenancy do consumidor) é necessário ao criar uma Instância do Aplicativo ML e pode ser diferente de instância para instância (do consumidor para o consumidor). Portanto, esse pode ser um parâmetro cujo valor é fornecido pelo consumidor durante a criação da Instância do Aplicativo ML. Todos esses parâmetros podem ser definidos em configurationSchema no arquivo descriptor.yaml.

Assim, a estrutura final de um diretório de pacote do Aplicativo é semelhante à seguinte:

  • <ml-app-package-name>-<version>.zip
    • application_components: o diretório com todas as definições de componentes do aplicativo.
    • instance_components: o diretório com todas as definições de componente da instância.
    • descriptor.yaml: o arquivo de descritor de pacote.
    • *.trigger.yaml: o arquivo de definição do trigger.

Algumas observações importantes sobre a estrutura do pacote do Aplicativo:

  • Os componentes Aplicativo e Instância devem ser definidos nos diretórios correspondentes.
  • Os diretórios application_components e instance_components são opcionais. Um pacote de aplicativos sem um diretório application_components ou instance_components é válido.
  • Os diretórios devem ser nomeados exatamente (minúsculas) como application_components e instance_components.
  • Os componentes cuja configuração do Terraform não está presente no diretório application_components não são considerados componentes do aplicativo.
  • Os componentes cuja configuração do Terraform não está presente no diretório instance_components não são considerados componentes de instância.
  • No momento, nem todos os recursos do OCI são suportados como componentes de aplicativo ou instância.
  • Um Job do Data Science é o componente de aplicativo suportado, enquanto o modelo do Data Science, a implantação do modelo, a execução do job, o bucket do Object Storage e o objeto são os componentes de instância suportados.

A próxima seção descreve o esquema do arquivo de descritor de pacote com mais detalhes.

Blocos de Criação de Aplicativos ML

Aplicativos de ML são criados usando outros recursos da OCI. A tabela a seguir lista os tipos de recursos permitidos:
Tipos de Recursos Permitidos
Tipo de Componente Recursos do OCI Permitidos Observações
Componentes do aplicativo Data Science
  • Job
  • Pipeline
  • Criar modelo
Serviço Data Flow
  • Aplicativo do Data Flow

Os componentes multitenant são compartilhados entre todas as Instâncias do Aplicativo ML em uma implementação.

Serviço Data Science:

  • Jobs e Pipelines geralmente são usados como componentes do aplicativo, definindo workflows ou tarefas executadas pelo aplicativo. Quando um workflow ou uma tarefa é acionada para um cliente, uma nova Execução de Pipeline ou de Job é criada, geralmente com parâmetros específicos do cliente fornecidos pelo trigger.
  • Modelos são usados como componentes do aplicativo quando um modelo pré-treinado pronto para uso está disponível para o aplicativo usar.

Os Aplicativos de Fluxo de Dados podem ser usados para transformar grandes

Eles podem ser usados como etapas dentro de um pipeline.

Quando um pipeline que contém uma etapa do serviço Data Flow é executado, ele cria e gerencia automaticamente uma nova execução do Aplicativo Data Flow associado a essa etapa. A execução do serviço Data Flow é tratada como qualquer outra etapa do pipeline. Quando concluída com sucesso, o pipeline continua sua execução, iniciando etapas posteriores como parte da orquestração do pipeline.

Para obter mais informações, consulte Integração do Serviço Data Flow.

Componentes da instância Data Science
  • Criar modelo
  • Implantação de modelo
  • Scheduler
    • Agendas
Serviço Object Storage
  • Bucket
  • Objeto
Observação:

Os acionadores do Aplicativo ML podem ser usados como componentes da instância.

Os acionadores de Aplicativos de ML não são Recursos do OCI, mas podem ser usados como componentes da instância.

Os acionadores são os pontos de entrada para fluxos de trabalho (como treinamento) definidos em seus aplicativos. Eles definem em quais condições um workflow é iniciado e garantem que ele seja iniciado com a identidade da Instância do Aplicativo ML (datasciencemlappinstance Controlador de Recursos).

Os recursos de tenant único são criados exclusivamente para cada Instância do Aplicativo ML (cliente SaaS).

  • Modelos são usados como componentes de instância quando um novo modelo é treinado especificamente para cada cliente usando seus dados.
  • As Implantações de Modelo servem como componentes de instância para expor modelos específicos do cliente como serviços.
  • Os Buckets funcionam como armazenamento específico do cliente para dados ingeridos, transformados ou processados.
  • Os objetos geralmente são usados para armazenar configurações específicas do cliente.
  • Programações permitem a execução periódica de workflows com base em um intervalo definido. Eles estão vinculados a Acionadores de Aplicativos de ML que eles chamam em intervalos programados.
Observação

Os Aplicativos de ML não impõem limites ao número de componentes que você pode usar. Embora um aplicativo possa exigir um pipeline, um acionador, um modelo e uma implantação de modelo, você pode criar aplicativos mais complexos, como aqueles com vários pipelines, acionadores, modelos e implantações de modelo. Por exemplo, cinco pipelines com cinco triggers, três modelos e três implantações de modelo. Além disso, os Aplicativos de ML podem ser criados sem pipelines ou implantações de modelo, se não forem necessários.

Arquivo de Descritor de Pacote

Veja a seguir um esquema para o descritor:
descriptorSchemaVersion
  • descrição: A versão do esquema do descritor de pacote que permite o desenvolvimento adicional do esquema. Ele tem uma versão principal e uma versão secundária (por exemplo, "1.0") em que a versão principal é aumentada para alterações incompatíveis com versões anteriores e a versão secundária para alterações compatíveis com versões anteriores.
  • obrigatório: verdadeiro
  • tipo: string
descrição
  • descrição: A descrição do pacote ML Application Implementation como o pacote específico ML Applications. Esse valor é mostrado como um campo de descrição na implementação de Aplicativos ML.
  • obrigatório: falso
  • tipo: string
mlApplicationVersion
  • descrição: A versão do contrato de Aplicativos ML (o campo de versão do recurso Versão de Aplicativos ML) que é implementada pelo pacote específico.
    Observação

    Este é um espaço reservado que será reservado para ser usado no futuro quando o recurso Versão de Aplicativos ML for introduzido. O valor fornecido é ignorado.
  • obrigatório: verdadeiro
  • tipo: string
packageVersion
  • descrição: a versão do pacote ML Applications. Esse valor é mostrado como um campo Package version na Implementação do Aplicativo ML.
  • obrigatório: verdadeiro
  • tipo: string
packageArguments
  • descrição: A lista de argumentos suportados. Os argumentos podem ser usados para fornecer valores específicos do ambiente, como OCIDs de infraestrutura e alguns valores de dimensionamento específicos do ambiente.
  • tipo: mapa (o nome do argumento é mapeado para as propriedades do argumento)
  • obrigatório: falso
  • propriedades do argumento:
    • tipo
      • obrigatório
      • tipo:
        • tipo: enum (string ou ocid)
        • obrigatório: verdadeiro
        • descrição: O tipo do valor do argumento.
      • Booliano (verdadeiro ou falso)
      • obrigatório: falso (o padrão é verdadeiro)
      • Descrição: Se o argumento específico é obrigatório ou não.
    • descrição
      • tipo: string
      • obrigatório: verdadeiro
      • descrição: A descrição do argumento.
    • validationRegexp
      • tipo: string
      • obrigatório: falso
      • descrição: A expressão regular usada para validação do valor do argumento.
    • defaultValue
      • tipo: string
      • obrigatório: falso
      • descrição: O valor usado se o argumento ou a propriedade do esquema de configuração não for especificada (ele só poderá ser especificado quando mandatory for false).
configurationSchema
  • descrição: O esquema da configuração que o consumidor deve fornecer como metadados da Instância do Aplicativo ML. Esse valor é mostrado como um campo configurationSchema na Implementação do Aplicativo ML.
  • tipo: mapa (o nome da propriedade de configuração é mapeado para as propriedades da propriedade de configuração)
  • obrigatório: falso
  • propriedades do argumento:
    • tipo
      • tipo: enum (string ou segredo)
      • obrigatório: verdadeiro
      • descrição: O tipo do valor de configuração.
    • obrigatório
      • tipo: Booleano (verdadeiro ou falso)
      • obrigatório: falso (o padrão é verdadeiro)
      • descrição: Se a propriedade de configuração específica é obrigatória ou não.
    • descrição
      • tipo: string
      • obrigatório: verdadeiro
      • descrição: a descrição da propriedade de configuração.
    • validationRegexp
      • tipo: string
      • obrigatório: falso
      • descrição: A expressão regular usada para validação do valor de configuração.
    • sampleValue
      • tipo: string
      • obrigatório: verdadeiro
      • descrição: O valor de amostra usado para validação de componentes da instância.
    • defaultValue
      • tipo: string
      • obrigatório: falso
      • descrição: O valor usado se o argumento ou a propriedade do esquema de configuração não for especificada (o obrigatório deve ser falso).

Atributos Obrigatórios do Terraform

Todas as definições de terraform de jobs de ciência de dados devem garantir que as execuções de job relacionadas sejam excluídas automaticamente ao excluir o job.
resource oci_datascience_job ingestion_job {
  ...
  delete_related_job_runs = true
  ...
}
Todas as definições de terraform de pipelines de ciência de dados devem garantir que as execuções de pipeline relacionadas sejam excluídas automaticamente ao excluir o pipeline.
resource oci_datascience_pipeline ingestion_pipeline {
  ...
  delete_related_pipeline_runs = true
  ...
}
Observação

A falha em especificar corretamente os atributos delete_related_xxx_runs bloqueia a exclusão da versão de Implementação do Aplicativo de ML. O provedor precisa remover os recursos de execução para desbloquear a exclusão.

Isolamento de Tenant e Versão do OCI SDK

O isolamento do tenant garante a segregação de dados e cargas de trabalho para cada cliente. O serviço Aplicativo ML propaga o controlador de recursos (identidade) de Instâncias de Aplicativo ML para cargas de trabalho (Pipeline ou Execuções de Job) iniciadas por triggers de Aplicativo ML.

A propagação do controlador de recursos da Instância do Aplicativo ML requer suporte correspondente nos SDKs do OCI:

  • Python SDK: Versão 2.126.4 ou posterior
  • Java SDK: Versão 3.44.4 ou mais recente