MLOps no Microsoft Azure | Operações de ML no Microsoft Azure

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon

Fluxos de trabalho de aprendizagem. Aprendizado de máquina é a palavra da moda hoje em dia. Todo mundo parece querer pular para o ML atualmente. Muitas startups e startups implementam projetos de aprendizado de máquina de várias maneiras. Mas apenas uma parte desses produtos pode funcionar e ser mantida a longo prazo.

O que é DevOps?

O software deve ser construído e executado corretamente. Então, Como é o ciclo de vida completo de um produto de software?

Nós vamos, DevOps torna todo o processo de operação do software perfeito. Consiste em um conjunto de práticas e processos que trabalham juntos para automatizar e integrar todo o processo de desenvolvimento de software.

43170devops-3746085

Fonte da imagem

DevOps unifica o processo de desenvolvimento de software (Dev) e operação de software (Ops). DevOps torna a automação fácil, o monitoramento e o bom andamento da criação, o desenvolvimento, a integração, as provas, a implementação, o lançamento, manutenção, escala, a manutenção e gestão da infraestrutura de software.

Alguns objetivos principais do DevOps são ciclos de desenvolvimento curtos, fluido e rápido, implementação rápida, lançamentos estáveis ​​e siga as metas de negócios corretamente. Os defensores e profissionais do DevOps usam a arte do loop infinito (Acima) para representar o ciclo DevOps e mostrar como cada processo se relaciona com o outro. Isso também mostra como o desenvolvimento e as operações de software são uma função contínua.. Você precisa de colaboração e aprimoramento constantes ao longo do ciclo.

A implementação adequada de DevOps permite que as organizações façam mais. Integração contínua (LÁ) e entrega contínua (CD) ajudar as organizações a ver um desenvolvimento mais eficiente e maior frequência de implantação. Os tempos de reparo são reduzidos, falhas de segurança cibernética podem ser facilmente detectadas e facilitam a experimentação e testes.

Portanto, podemos dizer que o DevOps torna o processo geral de engenharia de software mais fácil de implementar e manter.

MLOps: DevOps para aprendizado de máquina

O MLOps empresta muitos dos princípios do DevOps em um esforço para tornar todo o ciclo de ML mais eficiente e fácil de operar.. O principal objetivo do MLOps é criar pipelines de ML automatizados e controlar tempos e outras métricas. Pipelines serão usados ​​para várias iterações ao longo do ciclo de vida do projeto AA.

35182mlops-1563661

Fonte da imagem

MLOps consiste em:

  1. Projeto
  2. Modelo de desenvolvimento
  3. Operações

A fase de design consiste em engenharia de requisitos, Priorização de casos de uso de ML, verificação de disponibilidade de dados e outras etapas.

O desenvolvimento do modelo inclui engenharia de aprendizado de máquina, modelagem, engenharia de dados e teste e validação de modelo.

Operações trata da implementação de modelos, Pipelines de CI / Monitoramento e manutenção de CD e modelo.

Vamos agora ver como é o cenário geral de MLOps para Azure MLOps.

Microsoft Azure MLOps

Azure MLOps segue os objetivos de:

  • Desenvolvimento e experimentação de modelo mais rápidos
  • Implementação mais rápida de modelos em produção
  • Controle de qualidade e rastreamento de linhagem do início ao fim

As ferramentas MLOps ajudam a rastrear alterações na fonte de dados ou pipelines de dados, o código, Modelos SDK, etc. O ciclo de vida se torna mais fácil e eficiente com a automação, fluxos de trabalho repetíveis e ativos que podem ser reutilizados continuamente.

Os serviços de aprendizado de máquina do Azure nos permitem criar pipelines de aprendizado de máquina reproduzíveis. Ambientes de software para treinamento e implantação de modelo também são reutilizáveis. Esses pipelines nos permitem atualizar modelos, testar novos modelos e implementar continuamente novos modelos AA.

O processo típico de AA

O processo típico de aprendizado de máquina consiste em:

1. Coleta de dados

2. Modelo de treinamento

3. Embale o modelo

4. Valide o modelo

5. Implantar modelo

6. Modelo de monitor

7. Retreinar o modelo

Mas em muitos casos, o processo precisa de mais refinamento. Novos dados estão disponíveis e o código foi alterado. Vários processos estão em execução, cada um dos quais envolve uma grande quantidade de dados.

Em geral, muitos dos dados são desorganizados. Os dados brutos também devem ser condicionados.

Como os MLOps podem ajudar?

MLOps consiste em vários elementos. Alguns elementos notáveis ​​são a automação da implantação, monitoramento, teste de quadro, controle de versão de dados, etc. O MLOps tenta pegar os conceitos de DevOps e melhorar todo o processo de aprendizado de máquina.

Toda a arquitetura do Azure Machine Learning se parece com isto:

74542mlops-Integrated-pattern-1309921

Fonte da imagem

O MLOps deve fazer um processo coordenado que pode facilitar o fluxo de todo o processo e também oferecer suporte a ambientes de CI / CD em grande escala.

Os MLOps podem ajudar na automação, facilitando implementações de código. A validação também é facilitada com as melhores práticas de controle de qualidade do SWE. No caso de treinamento de modelo, se acharmos que nosso modelo precisa de reciclagem, podemos sempre voltar e fazer uma reciclagem do modelo.

O Azure Machine Learning tem muitos modelos pré-treinados específicos de domínio, como para:

Visão, fala, língua, procurar, etc.

Se falarmos sobre, o que exatamente são os Serviços de ML do Azure, é um pacote de serviços de nuvem do Azure junto com um kit de desenvolvimento de software Python / R, que nos permite preparar dados, construir modelos, gerenciar modelos, modelos de trem, rastrear experimentos e implementar modelos.

Existem muitos elementos envolvidos, vamos ver alguns deles.

Conjuntos de dados: registre os dados

Experimentos: Corridas de treinamento

Pipelines: Fluxo de trabalho de treinamento

Modelos: Modelos Registrados

Pontos finais: modelos implantados e endpoints de fluxo de trabalho de treinamento

Calcular: Computação Gerenciada

Ambientes: Ambientes definidos de formação e inferência.

Os serviços do Azure são construídos de forma que sejam compatíveis com DevOps e façam tudo funcionar corretamente.

Gerenciar o ciclo de vida do aprendizado de máquina com MLOps é muito fácil. Os modelos devem ser monitorados e retreinados. Os processos de MLOps facilitam resultados de negócios reais e, portanto, possibilitar um tempo mais rápido de lançamento no mercado e implementação de soluções baseadas em ML. Eles também aumentam a colaboração e o alinhamento entre as equipes.

Azure MLOps

O Azure Machine Learning tem os seguintes recursos de MLOps.

Crie pipelines de ML jogáveis

Podemos definir tubos reutilizáveis ​​e repetíveis. Todas as etapas que compreendem a coleta de dados e avaliação do modelo podem ser reutilizadas.

Ambientes de software reutilizáveis

As dependências de software de nossos projetos podem ser rastreadas e reproduzidas conforme necessário.

Registro, empacotar e implantar modelos de qualquer lugar

O registro do modelo torna as etapas acima muito fáceis de implementar. Os modelos têm nome e versão.

Capture dados de governança para um ciclo de vida de aprendizado de máquina de ponta a ponta

O Azure ML pode se integrar ao Git para rastrear nosso código. Podemos verificar de qual filial / repositório vem de nosso código. Nós também podemos rastrear, perfil e versão de nossos dados.

Alertas e notificações para eventos no ciclo de vida de AA

Azure ML lista marcos no Azure EventGrid, que pode ser usado para vários fins.

Monitore problemas operacionais

Podemos entender os dados que são enviados ao nosso modelo e as previsões que são retornadas. Para que possamos entender como o modelo está se saindo.

Automatize o ciclo de vida AA

O Azure Pipelines e o Github podem ser usados ​​para criar uma integração contínua e autônoma que treina um modelo. A maioria das etapas do ciclo de vida AA pode ser automatizada.

Então, como um pensamento geral, podemos entender que MLOps é um conceito em que usamos vários recursos para tornar toda a jornada do ML suave e eficiente.

Então, pensando em um fluxo de trabalho MLOps hipotético, primeiro, a equipe de ciência de dados e a equipe de desenvolvimento de aplicativos colaborariam para construir o aplicativo e também treinar o modelo. Mais tarde, o aplicativo será testado. paralelo, o modelo será validado. Mais tarde, o modelo será implementado e o aplicativo será lançado.

A aplicação e o modelo serão monitorados. Do processo geral de gerenciamento de modelos e aplicativos, podemos realizar análises de desempenho. Dependendo das necessidades, também podemos treinar novamente o modelo.

Vejamos um exemplo de projeto de ML no Azure DevOps.

53703sample1-1910462

Os vários itens que discutimos são visíveis aqui.

16891sample2-9055568

Ao entrar em Repos, podemos verificar o código e outros arquivos.

Em relação aos tubos, vamos ver um pipeline executado com sucesso.

37058sample3-6569374

Podemos ver que todos os trabalhos foram executados corretamente.

Para o projeto AA de uma amostra particular, podemos ver os requisitos.

76125sample4-3444962

Podemos implementar os requisitos.

pip install azure-cli == 2.0.69
pip install --upgrade azureml-sdk[cli]
pip install -r requisitos.txt

Código para treinar o modelo:

Comece importando as coisas necessárias.

importar picles
de azureml.core import Workspace
de azureml.core.run import Executar
importar os
de sklearn.datasets import load_diabetes
de sklearn.linear_model import Ridge
de sklearn.metrics import mean_squared_error
de sklearn.model_selection import train_test_split
de sklearn.externals import joblib
importar numpy como np
importar json
subprocesso de importação
da digitação importar Tupla, Lista
# run_history_name ="devops"
# os.makedirs('./outputs', exist_ok = True)
# #ws.get_details()
# Comece a registrar os resultados para AML
# run = Run.start_logging(espaço de trabalho = ws, history_name = run_history_name)
run = Run.get_submitted_run()

Obtendo os dados.

X, y = load_diabetes(return_X_y = True)
colunas = ["era", "Gênero sexual", "bmi", "bp", "s1", "s2", "s3", "s4", "s5", "s6"]
X_train, X_test, y_train, y_test = train_test_split(X, e, test_size = 0.2, random_state = 0)
dados = {"Comboio": {"X": X_train, "e": y_train}, "teste": {"X": X_test, "e": y_test}}

A seguir, Treinamento.

# Aleatoriamente pic alfa
alphas = np.arange(0.0, 1.0, 0.05)
alpha = alphas[np.random.choice(alphas.shape[0], 1, substituir = False)][0]
imprimir(alfa)
run.log("alfa", alfa)
reg = Ridge(alpha = alpha)
reg.fit(dados["Comboio"]["X"], dados["Comboio"]["e"])
preds = reg.predict(dados["teste"]["X"])
run.log("mse", mean_squared_error(preds, dados["teste"]["e"]))
# Salvar modelo como parte do histórico de execução
model_name = "sklearn_regression_model.pkl"
# model_name = "."
com aberto(model_name, "wb") como arquivo:
    joblib.dump(valor = reg, filename = model_name)
# carregue o arquivo de modelo explicitamente em artefatos
run.upload_file(nome ="./saídas /" + model_name, path_or_stream = model_name)
imprimir("Carregou o modelo {} experimentar {}".formato(model_name, run.experiment.name))
dirpath = os.getcwd()
imprimir(dirpath)
# registrar o modelo
# run.log_model(file_name = model_name)
# imprimir('Registrou o modelo {} para correr a história {}'.formato(model_name, run.history.name))
imprimir("Os seguintes arquivos são carregados ")
imprimir(run.get_file_names())
run.complete()

Existem muitas diferenças significativas na forma como operamos aqui.

Mim, sendo um estudante, Eu não tinha exatamente um caso de negócios ou recursos monetários para trabalhar em um projeto de ML completo no Azure DevOps. O trabalho acima é feito tomando como referência.

Visite este Repo para referência: DevOpsForAI

conclusão

Os MLOps podem resolver muitos problemas relacionados ao ciclo de vida do aprendizado de máquina. Portanto, muitos dos desafios gerais também são resolvidos.

O MLOps é uma proposta muito atraente para as empresas executarem seus modelos de ML. O MLOps torna o trabalho entre equipes muito fácil e direto.

Estas são algumas das referências que usei para reunir conhecimento para este artigo. Leiam.

Referências:

1.https://docs.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment#create-reproducible-ml-pipelines

2. https://docs.microsoft.com/en-us/learn/modules/start-ml-lifecycle-mlops/1-introduction

3. https://docs.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper

4. https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/ai/mlops-python

Sobre mim:

Prateek Majumder

Ciência e análise de dados | Especialista em marketing digital | SEO | Criação de conteúdo

Conecte-se comigo no Linkedin.

Meus outros artigos sobre DataPeaker: Ligação.

Obrigado.

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.