Classificação em tempo real dos modelos de machine learning em RReal-time scoring of R machine learning models

Esta arquitetura de referência mostra como implementar um serviço de previsão (síncrona) em tempo real no R com o Microsoft Machine Learning Server em execução no Azure Kubernetes Service (AKS).This reference architecture shows how to implement a real-time (synchronous) prediction service in R using Microsoft Machine Learning Server running in Azure Kubernetes Service (AKS). Esta arquitetura destina-se para ser genérico e adequada para qualquer modelo preditivo criado no R que pretende implementar como um serviço em tempo real.This architecture is intended to be generic and suited for any predictive model built in R that you want to deploy as a real-time service. Implantar essa solução.Deploy this solution.

ArquiteturaArchitecture

Classificação em tempo real de aprendizagem automática R modelos no Azure

Esta arquitetura de referência usa uma abordagem baseada em contentor.This reference architecture takes a container-based approach. Uma imagem do Docker é criada contendo R, bem como vários artefatos necessários para classificar dados novos.A Docker image is built containing R, as well as the various artifacts needed to score new data. Estes incluem o próprio objeto de modelo e um script de classificação.These include the model object itself and a scoring script. Esta imagem é enviada para um registo do Docker alojado no Azure e, em seguida, implementada num cluster de Kubernetes, também no Azure.This image is pushed to a Docker registry hosted in Azure, and then deployed to a Kubernetes cluster, also in Azure.

A arquitetura deste fluxo de trabalho inclui os seguintes componentes.The architecture of this workflow includes the following components.

  • [O Azure Container Registry] acr é utilizado para armazenar as imagens para este fluxo de trabalho.Azure Container Registry is used to store the images for this workflow. Registos criados com o registo de contentor podem ser geridos através do padrão [API do Docker Registry V2] docker e cliente.Registries created with Container Registry can be managed via the standard Docker Registry V2 API and client.

  • [Serviço Kubernetes do Azure] aks é utilizada para alojar a implementação e o serviço.Azure Kubernetes Service is used to host the deployment and service. Os clusters criados com o AKS podem ser geridos através da norma [API do Kubernetes] k-api e cliente (kubectl).Clusters created with AKS can be managed using the standard Kubernetes API and client (kubectl).

  • [Microsoft Machine Learning Server] mmls é usada para definir a API REST para o serviço e inclui modelo Operacionalização.Microsoft Machine Learning Server is used to define the REST API for the service and includes Model Operationalization. Este processo de servidor web orientada a serviço de escuta de solicitações, o que, em seguida, são entregues para outros processos em segundo plano que executam o código R para gerar os resultados.This service-oriented web server process listens for requests, which are then handed off to other background processes that run the actual R code to generate the results. Todos esses processos executam num único nó nesta configuração, o que é encapsulado num contêiner.All these processes run on a single node in this configuration, which is wrapped in a container. Para obter detalhes sobre como utilizar este serviço fora de um ambiente de desenvolvimento ou teste, contacte o seu representante da Microsoft.For details about using this service outside a dev or test environment, contact your Microsoft representative.

Considerações de desempenhoPerformance considerations

Cargas de trabalho do Machine learning tendem a ser computação intensiva, ao treinar e quando novos dados de classificação.Machine learning workloads tend to be compute-intensive, both when training and when scoring new data. Como regra prática, não tente executar mais de um processo de classificação por núcleo.As a rule of thumb, try not to run more than one scoring process per core. Machine Learning Server permite que defina o número de processos de R em execução em cada contentor.Machine Learning Server lets you define the number of R processes running in each container. A predefinição é cinco processos.The default is five processes. Ao criar um modelo relativamente simples, como uma regressão linear com um pequeno número de variáveis ou uma árvore de decisão pequenas, pode aumentar o número de processos.When creating a relatively simple model, such as a linear regression with a small number of variables, or a small decision tree, you can increase the number of processes. Monitorize a carga da CPU em nós do cluster para determinar o limite apropriado no número de contentores.Monitor the CPU load on your cluster nodes to determine the appropriate limit on the number of containers.

Um cluster com GPU ativada pode acelerar as alguns tipos de cargas de trabalho e, em particular a modelos de aprendizagem profunda.A GPU-enabled cluster can speed up some types of workloads, and deep learning models in particular. Nem todas as cargas de trabalho podem tirar partido das GPUs — apenas aqueles que fazem intenso usam de álgebra de matriz.Not all workloads can take advantage of GPUs — only those that make heavy use of matrix algebra. Por exemplo, modelos baseados em árvore, incluindo florestas aleatórias e priorização baseada em modelos, geralmente não derivam nenhuma vantagem GPUs.For example, tree-based models, including random forests and boosting models, generally derive no advantage from GPUs.

Alguns tipos de modelo como florestas aleatórios são altamente ponto de pode ser o paralelizada nas CPUs.Some model types such as random forests are massively parallelizable on CPUs. Nestes casos, Acelere a classificação de uma única solicitação ao distribuir a carga de trabalho entre vários núcleos.In these cases, speed up the scoring of a single request by distributing the workload across multiple cores. No entanto, ao fazê-lo pelo que reduz a capacidade para lidar com várias solicitações de pontuação tendo em conta um tamanho fixo de cluster.However, doing so reduces your capacity to handle multiple scoring requests given a fixed cluster size.

Em geral, os modelos do R de código-fonte aberto armazenam todos os seus dados na memória, por isso, certifique-se de que os nós tem memória suficiente para acomodar os processos que planeja executar em simultâneo.In general, open-source R models store all their data in memory, so ensure that your nodes have enough memory to accommodate the processes you plan to run concurrently. Se estiver a utilizar o Machine Learning Server de acordo com seus modelos, utilizar as bibliotecas de que consegue processar dados no disco, em vez de lê-lo para a memória.If you are using Machine Learning Server to fit your models, use the libraries that can process data on disk, rather than reading it all into memory. Isso pode ajudar a reduzir significativamente os requisitos de memória.This can help reduce memory requirements significantly. Independentemente de utilizar o Machine Learning Server ou o R de código aberto, monitorize os nós para garantir que seus processos de classificação não memória-fica sem.Regardless of whether you use Machine Learning Server or open-source R, monitor your nodes to ensure that your scoring processes are not memory-starved.

Considerações de segurançaSecurity considerations

encriptação de redeNetwork encryption

Nesta arquitetura de referência, o HTTPS é ativado para a comunicação com o cluster e um certificado de teste de [vamos encriptar] encrypt é utilizado.In this reference architecture, HTTPS is enabled for communication with the cluster, and a staging certificate from Let’s Encrypt is used. Para fins de produção, substitua o seu próprio certificado de uma autoridade de assinatura adequado.For production purposes, substitute your own certificate from an appropriate signing authority.

Autenticação e autorizaçãoAuthentication and authorization

Machine Learning Server [Operacionalização de modelo] operationalization requer a pedidos de autenticação de classificação.Machine Learning Server Model Operationalization requires scoring requests to be authenticated. Nesta implementação, um nome de utilizador e palavra-passe são utilizados.In this deployment, a username and password are used. Numa definição empresarial, pode ativar a autenticação com [do Azure Active Directory] AAD ou criar uma separada de front-end com [API Management do Azure] API.In an enterprise setting, you can enable authentication using Azure Active Directory or create a separate front end using Azure API Management.

Para o modelo de Operacionalização funcionar corretamente com Machine Learning Server em contentores, tem de instalar um certificado de JSON Web Token (JWT).For Model Operationalization to work correctly with Machine Learning Server on containers, you must install a JSON Web Token (JWT) certificate. Esta implementação utiliza um certificado fornecido pela Microsoft.This deployment uses a certificate supplied by Microsoft. Num ambiente de produção, fornece seu próprio.In a production setting, supply your own.

Para o tráfego entre o registo de contentor e o AKS, considere ativar [controlo de acesso baseado em funções] rbac (RBAC) para limitar os privilégios de acesso para apenas os que necessitam.For traffic between Container Registry and AKS, consider enabling role-based access control (RBAC) to limit access privileges to only those needed.

Armazenamento separadoSeparate storage

Esta arquitetura de referência agrupa o aplicativo (R) e os dados (objeto de modelo e script de classificação) numa única imagem.This reference architecture bundles the application (R) and the data (model object and scoring script) into a single image. Em alguns casos, pode ser vantajoso separar estes.In some cases, it may be beneficial to separate these. Pode colocar os dados de modelo e o código no ficheiro ou de Blobs do Azure armazenamentoe recuperá-los na inicialização do contentor.You can place the model data and code into Azure blob or file storage, and retrieve them at container initialization. Neste caso, certifique-se de que a conta de armazenamento está definida para permitir apenas acesso autenticado e exigirem HTTPS.In this case, ensure that the storage account is set to allow authenticated access only and require HTTPS.

Monitorização e considerações de registoMonitoring and logging considerations

Utilize o [dashboard do Kubernetes] dashboard para monitorizar o estado geral do cluster do AKS.Use the Kubernetes dashboard to monitor the overall status of your AKS cluster. Ver o painel de descrição geral do cluster no portal do Azure para obter mais detalhes.See the cluster’s overview blade in Azure portal for more details. O GitHub github recursos também mostram como abrir o dashboard do R.The GitHub resources also show how to bring up the dashboard from R.

Embora o dashboard dá-lhe uma vista de estado de funcionamento global do seu cluster, também é importante monitorizar o estado dos contentores individuais.Although the dashboard gives you a view of the overall health of your cluster, it’s also important to track the status of individual containers. Para tal, ative [Insights do Azure Monitor] monitor do painel de descrição geral do cluster no portal do Azure, ou consulte [Azure Monitor para contentores] monitor-containers(em pré-visualização).To do this, enable Azure Monitor Insights from the cluster overview blade in Azure portal, or see Azure Monitor for containers (in preview).

Considerações de custosCost considerations

Machine Learning Server é licenciado numa base por núcleo e todos os núcleos no cluster que executará a contagem de Machine Learning Server para isso.Machine Learning Server is licensed on a per-core basis, and all the cores in the cluster that will run Machine Learning Server count towards this. Se for um cliente de Machine Learning Server ou Microsoft SQL Server enterprise, contacte o seu representante da Microsoft para detalhes de preços.If you are an enterprise Machine Learning Server or Microsoft SQL Server customer, contact your Microsoft representative for pricing details.

Uma alternativa de código-fonte aberto para Machine Learning Server é técnico, um pacote de R que transforma o seu código numa API REST.An open-source alternative to Machine Learning Server is Plumber, an R package that turns your code into a REST API. Técnico é menos repleto de Machine Learning Server.Plumber is less fully featured than Machine Learning Server. Por exemplo, por padrão ele não inclui quaisquer funcionalidades que fornecem a autenticação de pedido.For example, by default it doesn't include any features that provide request authentication. Se usar técnico, recomenda-se que ative [Azure API Management] API para lidar com detalhes de autenticação.If you use Plumber, it’s recommended that you enable Azure API Management to handle authentication details.

Além de licenciamento, a principal consideração de custos é recursos de computação do cluster de Kubernetes.Besides licensing, the main cost consideration is the Kubernetes cluster's compute resources. O cluster tem de ser grande o suficiente para processar o volume de pedido esperado em períodos de pico, mas essa abordagem deixa recursos inativo noutras alturas.The cluster must be large enough to handle the expected request volume at peak times, but this approach leaves resources idle at other times. Para limitar o impacto dos recursos inativos, ativar a [dimensionamento automático horizontal] autoscaler para o cluster com a ferramenta de kubectl.To limit the impact of idle resources, enable the horizontal autoscaler for the cluster using the kubectl tool. Ou utilizar o AKS dimensionamento automático de clusters.Or use the AKS cluster autoscaler.

Implementar a soluçãoDeploy the solution

A implementação desta arquitetura de referência está disponível no GitHub.The reference implementation of this architecture is available on GitHub. Siga os passos aqui descritos para implementar um modelo preditivo simple como um serviço.Follow the steps described there to deploy a simple predictive model as a service.