A compreensão da linguagem natural é aplicada em uma ampla variedade de casos de uso, desde chatbots e assistentes virtuais até tradução automática e resumo de texto. Para garantir que esses aplicativos sejam executados no nível de desempenho esperado, é importante que os dados nos ambientes de treinamento e produção sejam da mesma distribuição. Quando os dados usados para inferência (dados de produção) diferem dos dados usados durante o treinamento do modelo, encontramos um fenômeno conhecido como desvio de dados. Quando ocorre desvio de dados, o modelo não é mais relevante para os dados em produção e provavelmente tem um desempenho pior do que o esperado. É importante monitorar continuamente os dados de inferência e compará-los com os dados usados durante o treinamento.
Você pode usar Amazon Sage Maker para criar, treinar e implantar rapidamente modelos de aprendizado de máquina (ML) em qualquer escala. Como medida proativa contra a degradação do modelo, você pode usar Monitor de modelo do Amazon SageMaker para monitorar continuamente a qualidade de seus modelos de ML em tempo real. Com o Model Monitor, você também pode configurar alertas para notificar e acionar ações se for observado algum desvio no desempenho do modelo. A detecção precoce e proativa desses desvios permite que você tome ações corretivas, como coletar novos dados de treinamento, retreinar modelos e auditar sistemas upstream, sem precisar monitorar modelos manualmente ou criar ferramentas adicionais.
O Model Monitor oferece quatro tipos diferentes de recursos de monitoramento para detectar e mitigar o desvio do modelo em tempo real:
- Qualidade dos dados – Ajuda a detectar alterações nos esquemas de dados e nas propriedades estatísticas de variáveis independentes e alertas quando um desvio é detectado.
- Qualidade do modelo – Para monitorar características de desempenho do modelo, como exatidão ou precisão em tempo real, o Model Monitor permite que você ingerir os rótulos de verdade coletados de seus aplicativos. O Model Monitor mescla automaticamente as informações reais com os dados de previsão para calcular as métricas de desempenho do modelo.
- Viés do modelo –Model Monitor é integrado com Esclarecimento do Amazon SageMaker para melhorar a visibilidade de potenciais preconceitos. Embora seus dados ou modelo inicial possam não ser tendenciosos, mudanças no mundo podem causar o desenvolvimento de preconceitos ao longo do tempo em um modelo que já foi treinado.
- Explicabilidade do modelo – A detecção de desvio alerta quando ocorre uma mudança na importância relativa das atribuições de recursos.
Nesta postagem, discutimos os tipos de desvio de qualidade de dados aplicáveis a dados de texto. Também apresentamos uma abordagem para detectar desvios de dados em dados de texto usando Model Monitor.
Desvio de dados em PNL
O desvio de dados pode ser classificado em três categorias, dependendo se a mudança de distribuição está acontecendo no lado da entrada ou na saída, ou se a relação entre a entrada e a saída mudou.
Mudança de covariável
Em um artigo do mudança covariável, a distribuição dos insumos muda ao longo do tempo, mas a distribuição condicional P(y|x) não muda. Esse tipo de desvio é chamado de mudança de covariável porque o problema surge devido a uma mudança na distribuição das covariáveis (características). Por exemplo, em um modelo de classificação de spam de e-mail, a distribuição de dados de treinamento (corpora de e-mail) pode divergir da distribuição de dados durante a pontuação.
Mudança de rótulo
Embora a mudança covariável se concentre em mudanças na distribuição de recursos, mudança de rótulo concentra-se em mudanças na distribuição da variável de classe. Este tipo de mudança é essencialmente o inverso da mudança covariável. Uma maneira intuitiva de pensar sobre isso seria considerar um conjunto de dados desequilibrado. Se a proporção de e-mails de spam e não-spam em nosso conjunto de treinamento for de 50%, mas na realidade 10% de nossos e-mails não forem spam, então a distribuição do rótulo de destino mudou.
Mudança de conceito
Mudança de conceito é diferente da mudança de covariável e de rótulo porque não está relacionado à distribuição de dados ou à distribuição de classes, mas sim ao relacionamento entre as duas variáveis. Por exemplo, os spammers de e-mail costumam usar uma variedade de conceitos para passar pelos modelos de filtro de spam, e o conceito de e-mail usado durante o treinamento pode mudar com o passar do tempo.
Agora que entendemos os diferentes tipos de desvio de dados, vamos ver como podemos usar o Model Monitor para detectar mudanças covariáveis em dados de texto.
Visão geral da solução
Ao contrário dos dados tabulares, que são estruturados e limitados, os dados textuais são complexos, de alta dimensão e de formato livre. Para detectar desvios com eficiência na PNL, trabalhamos com incorporações, que são representações de baixa dimensão do texto. Você pode obter embeddings usando vários modelos de linguagem, como Word2Vec, e modelos baseados em transformadores, como BERT. Esses modelos projetam dados de alta dimensão em espaços de baixa dimensão, preservando a informação semântica do texto. Os resultados são vetores densos e contextualmente significativos, que podem ser usados para várias tarefas posteriores, incluindo monitoramento de desvio de dados.
Em nossa solução, usamos embeddings para detectar a mudança covariável de sentenças em inglês. Utilizamos o Model Monitor para facilitar o monitoramento contínuo de um classificador de texto implantado em um ambiente de produção. Nossa abordagem consiste nas seguintes etapas:
- Ajuste um modelo BERT usando SageMaker.
- Implante um classificador BERT ajustado como um endpoint em tempo real com captura de dados ativado.
- Crie um conjunto de dados de linha de base que consiste em uma amostra das frases usadas para treinar o classificador BERT.
- Crie uma trabalho de monitoramento personalizado do SageMaker para calcular a similaridade de cosseno entre os dados capturados na produção e o conjunto de dados de linha de base.
O diagrama a seguir ilustra o fluxo de trabalho da solução:
Ajustar um modelo BERT
Neste post, usamos Corpus de aceitabilidade linguística (CoLA), um conjunto de dados de 10,657 sentenças em inglês rotuladas como gramaticais ou não gramaticais da literatura linguística publicada. Usamos o treinamento SageMaker para ajustar um modelo BERT usando o conjunto de dados CoLa, definindo uma classe de estimador PyTorch. Para obter mais informações sobre como usar este SDK com PyTorch, consulte Use PyTorch com o SageMaker Python SDK. Chamando o fit()
método do estimador inicia o trabalho de treinamento:
Implantar o modelo
Depois de treinar nosso modelo, nós o hospedamos em um endpoint SageMaker. Para fazer o endpoint carregar o modelo e servir previsões, implementamos alguns métodos em train_deploy.py:
- model_fn () - Carrega o modelo salvo e retorna um objeto de modelo que pode ser usado para servir de modelo. O servidor de modelo SageMaker PyTorch carrega nosso modelo chamando
model_fn
. - input_fn () - Desserializa e prepara a entrada de previsão. Neste exemplo, nosso corpo de solicitação é primeiro serializado para JSON e, em seguida, enviado para o terminal de atendimento do modelo. Portanto, em
input_fn()
, primeiro desserializamos o corpo da solicitação formatado em JSON e retornamos a entrada como umtorch.tensor
, conforme exigido para BERT. - Predict_fn () – Executa a previsão e retorna o resultado.
Habilitar captura de dados do Model Monitor
Nós habilitamos Captura de dados do Monitor de Modelo para registrar os dados de entrada no Serviço de armazenamento simples da Amazon (Amazon S3) para referenciá-lo posteriormente:
Em seguida, criamos um endpoint SageMaker em tempo real com o modelo criado na etapa anterior:
Inferência
Executamos a previsão usando o objeto preditor que criamos na etapa anterior. Definimos o serializador e o desserializador JSON, que são usados pelo endpoint de inferência:
O endpoint em tempo real é configurado para capturar dados da solicitação, e a resposta e os dados são armazenados no Amazon S3. Você pode visualizar os dados capturados no cronograma de monitoramento anterior.
Crie uma linha de base
Usamos um modelo BERT ajustado para extrair recursos de incorporação de frases dos dados de treinamento. Usamos esses vetores como entradas de recursos de alta qualidade para comparar a distância do cosseno porque o BERT produz representação dinâmica de palavras com contexto semântico. Conclua as etapas a seguir para obter a incorporação de frases:
- Use um tokenizer BERT para obter IDs de token para cada token (
input_id
) na frase de entrada e na máscara para indicar quais elementos na sequência de entrada são tokens versus elementos de preenchimento (attention_mask_id
). Usamos o BERTtokenizer.encode_plus
função para obter esses valores para cada frase de entrada:
input_ids
e attention_mask_ids
são passados para o modelo e buscam os estados ocultos da rede. O hidden_states
tem quatro dimensões na seguinte ordem:
- Número da camada (BERT tem 12 camadas)
- Número do lote (1 frase)
- Índices de tokens de palavras
- Unidades ocultas (768 recursos)
- Use as duas últimas camadas ocultas para obter um único vetor (incorporação de frase) calculando a média de todos os tokens de entrada na frase:
- Converta a incorporação de frase como uma matriz NumPy e armazene-a em um local do Amazon S3 como uma linha de base usada pelo Model Monitor:
Roteiro de avaliação
O Model Monitor fornece um contêiner pré-construído com a capacidade de analisar os dados capturados de endpoints para conjuntos de dados tabulares. Se você quiser trazer seu próprio contêiner, o Model Monitor fornece pontos de extensão que você pode usar. Quando você cria um MonitoringSchedule
, o Model Monitor finalmente inicia os trabalhos de processamento. Portanto, o contêiner precisa estar ciente do contrato de trabalho de processamento. Precisamos criar um script de avaliação que seja compatível com o container insumos contratuais e outputs.
O Model Monitor usa código de avaliação em todas as amostras capturadas durante o cronograma de monitoramento. Para cada ponto de dados de inferência, calculamos a incorporação de frases usando a mesma lógica descrita anteriormente. A similaridade de cosseno é usada como uma métrica de distância para medir a similaridade de um ponto de dados de inferência e incorporações de frases na linha de base. Matematicamente, ele mede o ângulo cosseno entre dois vetores de incorporação de frases. Uma pontuação alta de similaridade de cosseno indica incorporações de frases semelhantes. Uma pontuação de similaridade de cosseno mais baixa indica desvio de dados. Calculamos uma média de todas as pontuações de similaridade de cosseno e, se for menor que o limite, será capturado no relatório de violação. Com base no caso de uso, você pode usar outras métricas de distância, como manhattan
or euclidean
para medir a similaridade de incorporações de frases.
O diagrama a seguir mostra como usamos o monitoramento de modelo SageMaker para estabelecer a linha de base e detectar desvio de dados usando similaridade de distância de cosseno.
A seguir está o código para cálculo das violações; o roteiro completo de avaliação está disponível em GitHub:
Medir o desvio de dados usando o Model Monitor
Nesta seção, nos concentramos em medir o desvio de dados usando o Model Monitor. Os monitores pré-construídos do Model Monitor são alimentados por Deequ, que é uma biblioteca construída sobre o Apache Spark para definir testes de unidade para dados, que medem a qualidade dos dados em grandes conjuntos de dados. Você não precisa de codificação para utilizar esses recursos de monitoramento pré-construídos. Você também tem a flexibilidade de monitorar modelos por meio de codificação para fornecer análises personalizadas. Você pode coletar e revisar todas as métricas emitidas pelo Model Monitor em Estúdio Amazon SageMaker, para que você possa analisar visualmente o desempenho do seu modelo sem escrever código adicional.
Em certos cenários, por exemplo, quando os dados não são tabulares, o trabalho de processamento padrão (desenvolvido por Deequ) não é suficiente porque oferece suporte apenas a conjuntos de dados tabulares. Os monitores pré-construídos podem não ser suficientes para gerar métricas sofisticadas para detectar desvios e podem exigir trazer suas próprias métricas. Nas próximas seções, descrevemos a configuração para trazer suas métricas criando um contêiner personalizado.
Crie o contêiner personalizado do Model Monitor
Usamos o roteiro de avaliação da seção anterior para construir um contêiner Docker e enviá-lo para Registro do Amazon Elastic Container (Amazon ECR):
Quando o contêiner Docker do cliente estiver no Amazon ECR, podemos agendar um trabalho de monitoramento de modelo e gerar um relatório de violações, conforme demonstrado nas próximas seções.
Agende um trabalho de monitoramento de modelo
Para agendar um trabalho de monitoramento de modelo, criamos uma instância do Model Monitor e no arquivo image_uri
, nos referimos ao contêiner Docker que criamos na seção anterior:
Agendamos o trabalho de monitoramento usando o create_monitoring_schedule
API. Você pode agendar o trabalho de monitoramento de hora em hora ou diariamente. Você configura o trabalho usando o destination
parâmetro, conforme mostrado no código a seguir:
Para descrever e listar o planejamento de monitoramento e suas execuções, você pode usar os seguintes comandos:
Relatório de violação de desvio de dados
Quando o trabalho de monitoramento do modelo for concluído, você poderá navegar até o caminho S3 de destino para acessar os relatórios de violação. Este relatório contém todas as entradas cuja pontuação média de cosseno (avg_cosine_score
) está abaixo do limite configurado como uma variável de ambiente THRESHOLD:0.5
no Monitor de modelo instância. Isto é uma indicação de que os dados observados durante a inferência estão ultrapassando a linha de base estabelecida.
O código a seguir mostra o relatório de violação gerado:
Finalmente, com base nesta observação, você pode configurar seu modelo para reciclagem. Você também pode ativar Serviço de notificação simples da Amazon (Amazon SNS) notificações para enviar alertas quando ocorrerem violações.
Conclusão
O Model Monitor permite que você mantenha a alta qualidade de seus modelos em produção. Nesta postagem, destacamos os desafios do monitoramento do desvio de dados em dados não estruturados, como texto, e fornecemos uma abordagem intuitiva para detectar o desvio de dados usando um script de monitoramento personalizado. Você pode encontrar o código associado à postagem no seguinte Repositório GitHub. Além disso, você pode personalizar a solução para utilizar outras métricas de distância, como discrepância média máxima (MMD), uma métrica de distância não paramétrica para calcular a distribuição marginal entre a distribuição de origem e de destino no espaço incorporado.
Sobre os autores
Vikram Elango é arquiteto de soluções especialista em IA/ML na Amazon Web Services, com sede na Virgínia, EUA. Vikram ajuda clientes do setor financeiro e de seguros com design e liderança inovadora para construir e implantar aplicativos de aprendizado de máquina em escala. Atualmente, ele está focado em processamento de linguagem natural, IA responsável, otimização de inferência e escalonamento de ML em toda a empresa. Nas horas vagas gosta de viajar, fazer caminhadas, cozinhar e acampar com a família.
Raghu Ramesha é arquiteto de soluções de ML da equipe do Amazon SageMaker Service. Ele se concentra em ajudar os clientes a migrar cargas de trabalho de produção de ML para o SageMaker em grande escala. Ele é especialista em domínios de aprendizado de máquina, IA e visão computacional, e possui mestrado em Ciência da Computação pela UT Dallas. Nas horas vagas gosta de viajar e fotografar.
Tony Chen é arquiteto de soluções de aprendizado de máquina na Amazon Web Services, ajudando os clientes a projetar recursos de aprendizado de máquina escalonáveis e robustos na nuvem. Como ex-cientista e engenheiro de dados, ele aproveita sua experiência para ajudar a resolver alguns dos problemas mais desafiadores que as organizações enfrentam com a operacionalização do aprendizado de máquina.
- '
- "
- 100
- 11
- 7
- Sobre
- Acesso
- Conta
- em
- ações
- Adicional
- AI
- Todos os Produtos
- já
- Apesar
- Amazon
- Amazon Sage Maker
- Amazon Web Services
- análise
- apache
- Apache Spark
- relevante
- aplicações
- disponível
- média
- AWS
- Linha de Base
- corpo
- construir
- Prédio
- camping
- casos
- Causar
- desafios
- alterar
- chatbots
- classificação
- Na nuvem
- código
- Codificação
- Coleta
- integrações
- Computar
- Ciência da Computação
- Visão de Computador
- Recipiente
- contém
- contínuo
- contract
- cozinha
- Criar
- Clientes
- Dallas
- dados,
- qualidade de dados
- cientista de dados
- Design
- Detecção
- desenvolver
- diferente
- discutir
- distância
- Estivador
- Container Docker
- Não faz
- domínios
- condução
- durante
- dinâmico
- Cedo
- encontro
- Ponto final
- engenheiro
- Inglês
- Empreendimento
- Meio Ambiente
- estabelecido
- exemplo
- vasta experiência
- Rosto
- família
- Característica
- Funcionalidades
- financeiro
- Primeiro nome
- Flexibilidade
- Foco
- focado
- formulário
- para a frente
- Gratuito
- função
- gerar
- GitHub
- ter
- ajudar
- ajuda
- Alta
- Destaque
- caminhadas
- Início
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- imagem
- executar
- importante
- Incluindo
- indústria
- INFORMAÇÕES
- com seguro
- indústria de seguro
- IT
- Trabalho
- Empregos
- Rótulos
- língua
- grande
- mais recente
- lança
- Liderança
- aprendizagem
- Nível
- aproveita as
- Biblioteca
- linguística
- Lista
- literatura
- carregar
- localização
- aprendizado de máquina
- maquina de tradução
- máscara
- a medida
- Métrica
- ML
- modelo
- modelos
- monitoração
- mais
- Linguagem Natural
- Processamento de linguagem natural
- rede
- PNL
- notificação
- Oferece
- ordem
- organizações
- Outros
- atuação
- fotografia
- Precisão
- predição
- Previsões
- presente
- Problema
- Produção
- projeto
- fornecer
- fornece
- Python
- pytorch
- qualidade
- alcance
- em tempo real
- Realidade
- registro
- Denunciar
- Relatórios
- resposta
- Resultados
- reciclagem
- Retorna
- reverso
- rever
- Execute
- corrida
- sábio
- Escala
- dimensionamento
- Ciência
- Sdk
- Serviços
- de servir
- conjunto
- mudança
- semelhante
- simples
- So
- Soluções
- Espaço
- espaços
- Spam
- especializada
- Unidos
- armazenamento
- loja
- suportes
- sistemas
- Target
- teste
- ensaio
- testes
- o mundo
- pensamento
- liderança de pensamento
- tempo
- token
- Tokens
- topo
- tocha
- tráfego
- Training
- Tradução
- Estados Unidos
- Ver
- Virgínia
- Virtual
- visibilidade
- visão
- esperar
- web
- serviços web
- Wikipedia
- sem
- Atividades:
- de gestão de documentos
- mundo
- escrita