Implementar controle de versão de modelo com Amazon Redshift ML | Amazon Web Services

Implementar controle de versão de modelo com Amazon Redshift ML | Amazon Web Services

Nó Fonte: 2360651

Amazon RedshiftML permite que analistas de dados, desenvolvedores e cientistas de dados treinem modelos de aprendizado de máquina (ML) usando SQL. Nas postagens anteriores, demonstramos como você pode usar o recurso de treinamento automático de modelo do Redshift ML para treinar classificação e regressão modelos. Redshift ML permite criar um modelo usando SQL e especificar seu algoritmo, como XGBoost. Você pode usar o Redshift ML para automatizar a preparação de dados, o pré-processamento e a seleção do seu tipo de problema (para obter mais informações, consulte Crie, treine e implante modelos de aprendizado de máquina no Amazon Redshift usando SQL com o Amazon Redshift ML). Você também pode trazer um modelo previamente treinado em Amazon Sage Maker para dentro Amazon RedShift via Redshift ML para inferência local. Para inferência local em modelos criados no SageMaker, o tipo de modelo ML deve ser compatível com Redshift ML. No entanto, inferência remota está disponível para tipos de modelo que não estão disponíveis nativamente no Redshift ML.

Com o tempo, os modelos de ML envelhecem e, mesmo que nada drástico aconteça, pequenas mudanças se acumulam. Os motivos comuns pelos quais os modelos de ML precisam ser treinados novamente ou auditados incluem:

  • Desvio de dados – Como seus dados mudaram ao longo do tempo, a precisão da previsão dos seus modelos de ML pode começar a diminuir em comparação com a precisão exibida durante os testes
  • Desvio de conceito – O algoritmo de ML que foi usado inicialmente pode precisar ser alterado devido a diferentes ambientes de negócios e outras necessidades em mudança

Talvez seja necessário atualizar o modelo regularmente, automatizar o processo e reavaliar a precisão aprimorada do seu modelo. No momento em que este livro foi escrito, o Amazon Redshift não era compatível com versionamento de modelos de ML. Nesta postagem, mostramos como você pode usar a funcionalidade traga seu próprio modelo (BYOM) do Redshift ML para implementar o controle de versão de modelos Redshift ML.

Usamos inferência local para implementar o versionamento de modelos como parte da operacionalização de modelos de ML. Presumimos que você tenha um bom entendimento dos seus dados e do tipo de problema mais aplicável ao seu caso de uso, e que tenha criado e implantado modelos em produção.

Visão geral da solução

Nesta postagem, usamos o Redshift ML para construir um modelo de regressão que prevê o número de pessoas que podem usar o serviço de compartilhamento de bicicletas da cidade de Toronto a qualquer hora do dia. O modelo leva em conta vários aspectos, incluindo feriados e condições climáticas, e como precisamos prever um resultado numérico, utilizamos um modelo de regressão. Usamos o desvio de dados como motivo para treinar novamente o modelo e usamos o controle de versão do modelo como parte da solução.

Depois que um modelo é validado e usado regularmente para executar previsões, você pode criar versões dos modelos, o que exige que você treine novamente o modelo usando um conjunto de treinamento atualizado e possivelmente um algoritmo diferente. O versionamento serve a dois propósitos principais:

  • Você pode consultar versões anteriores de um modelo para fins de solução de problemas ou auditoria. Isso permite garantir que seu modelo ainda mantenha alta precisão antes de mudar para uma versão de modelo mais recente.
  • Você pode continuar executando consultas de inferência na versão atual de um modelo durante o processo de treinamento do modelo da nova versão.

No momento em que este artigo foi escrito, o Redshift ML não tinha recursos de controle de versão nativos, mas você ainda pode obter controle de versão implementando algumas técnicas SQL simples usando o recurso BYOM. O BYOM foi introduzido para oferecer suporte a modelos SageMaker pré-treinados para executar consultas de inferência no Amazon Redshift. Neste post, usamos a mesma técnica BYOM para criar uma versão de um modelo existente construído usando Redshift ML.

A figura a seguir ilustra esse fluxo de trabalho.

Nas seções a seguir, mostramos como criar uma versão a partir de um modelo existente e, em seguida, realizar um novo treinamento do modelo.

Pré-requisitos

Como pré-requisito para implementar o exemplo desta postagem, você precisa configurar um cluster redshift or Sem servidor Amazon Redshift ponto final. Para obter as etapas preliminares para começar e configurar seu ambiente, consulte Crie, treine e implante modelos de aprendizado de máquina no Amazon Redshift usando SQL com o Amazon Redshift ML.

Usamos o modelo de regressão criado no post Construir modelos de regressão com Amazon Redshift ML. Assumimos que ele já foi implantado e usamos este modelo para criar novas versões e treinar novamente o modelo.

Crie uma versão do modelo existente

O primeiro passo é criar uma versão do modelo existente (o que significa salvar as alterações de desenvolvimento do modelo) para que um histórico seja mantido e o modelo esteja disponível para comparação posterior.

O código a seguir é o formato genérico da sintaxe do comando CREATE MODEL; na próxima etapa, você obterá as informações necessárias para usar este comando para criar uma nova versão:

CREATE MODEL model_name FROM ('job_name' | 's3_path' ) FUNCTION function_name ( data_type [, ...] ) RETURNS data_type IAM_ROLE { default } [ SETTINGS ( S3_BUCKET 'bucket', | --required KMS_KEY_ID 'kms_string') --optional ];

A seguir, coletamos e aplicamos os parâmetros de entrada ao código CREATE MODEL anterior ao modelo. Precisamos do nome do trabalho e dos tipos de dados dos valores de entrada e saída do modelo. Nós os coletamos executando o show model comando em nosso modelo existente. Execute o seguinte comando no Amazon Redshift Query Editor v2:

show model predict_rental_count;

Observe os valores para Nome do trabalho do AutoML, Tipos de parâmetros de função, e as Coluna de Destino (trip_count) da saída do modelo. Usamos esses valores no comando CREATE MODEL para criar a versão.

A instrução CREATE MODEL a seguir cria uma versão do modelo atual usando os valores coletados de nosso show model comando. Anexamos a data (o formato de exemplo é AAAAMMDD) ao final do modelo e dos nomes das funções para rastrear quando esta nova versão foi criada.

CREATE MODEL predict_rental_count_20230706 FROM 'redshiftml-20230706171639810624' FUNCTION predict_rental_count_20230706 (int4, int4, int4, int4, int4, int4, int4, numeric, numeric, int4)
RETURNS float8 IAM_ROLE default
SETTINGS (
S3_BUCKET '<<your S3 Bucket>>');

Este comando pode levar alguns minutos para ser concluído. Quando terminar, execute o seguinte comando:

show model predict_rental_count_20230706;

Podemos observar o seguinte na saída:

  • Nome do trabalho do AutoML é igual à versão original do modelo
  • Nome da Função mostra o novo nome, como esperado
  • Tipo de inferência mostra Local, que designa que isso é BYOM com inferência local

Você pode executar consultas de inferência usando ambas as versões do modelo para validar as saídas de inferência.

A captura de tela a seguir mostra a saída da inferência do modelo usando a versão original.

A captura de tela a seguir mostra a saída da inferência do modelo usando a cópia da versão.

Como você pode ver, as saídas de inferência são as mesmas.

Agora você aprendeu como criar uma versão de um modelo Redshift ML previamente treinado.

Treine novamente seu modelo Redshift ML

Depois de criar uma versão de um modelo existente, você poderá treinar novamente o modelo existente simplesmente criando um novo modelo.

Você pode criar e treinar um novo modelo usando o mesmo comando CREATE MODEL, mas usando diferentes parâmetros de entrada, conjuntos de dados ou tipos de problemas, conforme aplicável. Para esta postagem, treinaremos novamente o modelo em conjuntos de dados mais recentes. Nós anexamos _new ao nome do modelo para que seja semelhante ao modelo existente para fins de identificação.

No código a seguir, usamos o comando CREATE MODEL com um novo conjunto de dados disponível no training_data tabela:

CREATE MODEL predict_rental_count_new
FROM training_data
TARGET trip_count
FUNCTION predict_rental_count_new
IAM_ROLE 'arn:aws:iam::<accountid>:role/RedshiftML'
PROBLEM_TYPE regression
OBJECTIVE 'mse'
SETTINGS (s3_bucket 'redshiftml-<your-account-id>', s3_garbage_collect off, max_runtime 5000);

Execute o seguinte comando para verificar o status do novo modelo:

show model predict_rental_count_new;

Substitua o modelo Redshift ML existente pelo modelo retreinado

A última etapa é substituir o modelo existente pelo modelo retreinado. Fazemos isso eliminando a versão original do modelo e recriando um modelo usando a técnica BYOM.

Primeiro, verifique seu modelo retreinado para garantir que as pontuações MSE/RMSE permaneçam estáveis ​​entre as execuções de treinamento do modelo. Para validar os modelos, você pode executar inferências por cada uma das funções do modelo no seu conjunto de dados e comparar os resultados. Usamos as consultas de inferência fornecidas em Construir modelos de regressão com Amazon Redshift ML.

Após a validação, você pode substituir seu modelo.

Comece coletando os detalhes do predict_rental_count_new modelo.

Note o Nome do trabalho do AutoML valor, o Tipos de parâmetros de função valores, e o Coluna de Destino nome na saída do modelo.

Substitua o modelo original eliminando o modelo original e, em seguida, criando o modelo com o modelo original e os nomes das funções para garantir que as referências existentes aos nomes do modelo e das funções funcionem:

drop model predict_rental_count;
CREATE MODEL predict_rental_count
FROM 'redshiftml-20230706171639810624' FUNCTION predict_rental_count(int4, int4, int4, int4, int4, int4, int4, numeric, numeric, int4)
RETURNS float8 IAM_ROLE default
SETTINGS (
S3_BUCKET ’<<your S3 Bucket>>’);

A criação do modelo deverá ser concluída em alguns minutos. Você pode verificar o status do modelo executando o seguinte comando:

show model predict_rental_count;

Quando o status do modelo é ready, a versão mais recente predict_rental_count do seu modelo existente está disponível para inferência e a versão original do modelo de ML predict_rental_count_20230706 está disponível para referência, se necessário.

Por favor, consulte isso Repositório GitHub para obter scripts de amostra para automatizar o controle de versão do modelo.

Conclusão

Nesta postagem, mostramos como você pode usar o recurso BYOM do Redshift ML para fazer o versionamento do modelo. Isso permite que você tenha um histórico de seus modelos para poder comparar as pontuações dos modelos ao longo do tempo, responder a solicitações de auditoria e executar inferências enquanto treina um novo modelo.

Para obter mais informações sobre a construção de modelos diferentes com Redshift ML, consulte Amazon RedshiftML.


Sobre os autores

Rohit Bansal é um arquiteto de soluções especialista em análise na AWS. Ele é especializado no Amazon Redshift e trabalha com clientes para criar soluções analíticas de última geração usando outros serviços do AWS Analytics.

Phil Bates é Arquiteto de Soluções Senior Analytics Specialist na AWS. Ele tem mais de 25 anos de experiência na implementação de soluções de armazenamento de dados em larga escala. Ele é apaixonado por ajudar os clientes em sua jornada na nuvem e usar o poder do ML em seu data warehouse.

Carimbo de hora:

Mais de Grandes dados da AWS