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.
- 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
.
- 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
einstance_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
einstance_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
Tipo de Componente | Recursos do OCI Permitidos | Observações |
---|---|---|
Componentes do aplicativo |
Data Science
|
Os componentes multitenant são compartilhados entre todas as Instâncias do Aplicativo ML em uma implementação. Serviço Data Science:
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
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 ( |
Os recursos de tenant único são criados exclusivamente para cada Instância do Aplicativo ML (cliente SaaS).
|
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
- 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
- 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.
- 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
- descrição: a versão do pacote ML Applications. Esse valor é mostrado como um campo
- 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
forfalse
).
-
tipo
- 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).
-
tipo
- 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
Atributos Obrigatórios do Terraform
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
...
}
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