Azure üzerinde R machine learning, gerçek zamanlı Puanlama modelleriReal-time scoring of R machine learning models on Azure

Bu başvuru mimarisi, Microsoft Machine Learning sunucusu çalıştıran Azure Kubernetes Service (AKS) kullanarak R (zaman uyumlu) gerçek zamanlı öngörü hizmeti uygulamak nasıl gösterir.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). Bu mimari, genel ve gerçek zamanlı bir hizmet olarak dağıtmak istediğiniz R yerleşik Tahmine dayalı bir model için uygun olması beklenir.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. Bu çözümü dağıtın .Deploy this solution.

Azure Machine Learning alternatif: Bu mimari, saf bir R deneyimi sağlar.Azure Machine Learning alternative: This architecture provides a pure R experience. Kullanmaz Python yönelik Azure Machine Learning Hizmetleri (AzureML SDK), uygun ölçekte yapay ZEKA çözümleri geliştirme için bir yetişkin bulut hizmet.It doesn't use the Python oriented Azure Machine Learning Services (AzureML SDK), which is a mature cloud service for developing AI solutions at scale. AzureML SDK'sı, geliştirme ve dağıtım kapsayıcılı Puanlama komut dosyası için kolay bir yol sağlar.AzureML SDK provides an easy path for development and deployment of containerized scoring scripts. Sağladığımız bir alternatif çözüm nasıl kullanılacağını gösteren Conda için R yükleme ve AzureML SDK'sı aracılığıyla yararlanmak için R paketleri rpy2 Python paketi.We provide an alternative solution that shows how to use Conda to install R and R packages to leverage AzureML SDK via the rpy2 Python package. Bu seçenekte, R modellerinin çalışır hale getirme kullanarak Flask bilmeniz gerekmez ve kendi veri bilimi projeleri için hem R hem de Python dilleri kullanarak deneyimliyseniz takımlar için yararlı olabilecek AzureML SDK uzmanlığı kullanabilirsiniz değerdir.The value in using this alternative to operationalize R models is that you don't need to know Flask, and you can reuse AzureML SDK expertise, which can be useful for teams that are comfortable using both R and Python languages for their data science projects. Bu alternatif mimari uygulamasıdır github'da.The implementation of this alternative architecture is available on GitHub.

MimariArchitecture

Azure üzerinde R machine learning, gerçek zamanlı Puanlama modelleri

Bu başvuru mimarisi, kapsayıcı tabanlı bir yaklaşımda alır.This reference architecture takes a container-based approach. R yanı sıra yeni verileri puanlamak için gereken çeşitli yapıtlar içeren bir Docker görüntüsü oluşturulur.A Docker image is built containing R, as well as the various artifacts needed to score new data. Bunlar, model nesnesi ve bir Puanlama komut dosyası içerir.These include the model object itself and a scoring script. Bu görüntü, Azure'da barındırılan ve sonra da azure'da bir Kubernetes kümesinde dağıtılan bir Docker kayıt defterine gönderilir.This image is pushed to a Docker registry hosted in Azure, and then deployed to a Kubernetes cluster, also in Azure.

Bu iş akışı mimarisi, aşağıdaki bileşenleri içerir.The architecture of this workflow includes the following components.

  • [Azure Container Registry] acr bu iş akışı için görüntüleri depolamak için kullanılır.Azure Container Registry is used to store the images for this workflow. Kayıt defterleri ile Container Registry oluşturdunuz aracılığıyla yönetilebilir [Docker kayıt defteri V2 API'si] docker ve istemci.Registries created with Container Registry can be managed via the standard Docker Registry V2 API and client.

  • [Azure Kubernetes hizmeti] aks dağıtım ve hizmeti barındırmak için kullanılır.Azure Kubernetes Service is used to host the deployment and service. AKS ile oluşturulan kümeler, standart kullanılarak yönetilebilir [Kubernetes API] k-api ve istemci (kubectl).Clusters created with AKS can be managed using the standard Kubernetes API and client (kubectl).

  • [Microsoft Machine Learning sunucusu] mmls içerir ve hizmeti REST API tanımlamak için kullanılan modeli kullanıma hazır hale getirme.Microsoft Machine Learning Server is used to define the REST API for the service and includes Model Operationalization. Bu hizmet odaklı web sunucusu işlemi daha sonra teslim sonuçları oluşturmak için gerçek R kodunu çalıştıran diğer arka plan işlemleri edilmeden isteklerini dinler.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. Tüm bu işlemler, bu yapılandırmada, bir kapsayıcıda sarmalandıktan tek bir düğümde çalıştırın.All these processes run on a single node in this configuration, which is wrapped in a container. Bu hizmet bir geliştirme veya test ortamına dışında kullanma hakkında daha fazla bilgi için Microsoft temsilcinize başvurun.For details about using this service outside a dev or test environment, contact your Microsoft representative.

Performansla ilgili önemli noktalarPerformance considerations

Makine öğrenimi iş yükleri, hem eğitim ve puanlama yeni veriler, bilgi işlem açısından yoğun olma eğilimindedir.Machine learning workloads tend to be compute-intensive, both when training and when scoring new data. Bir kural karşısında, çekirdek başına birden fazla Puanlama işlem çalıştırmayı deneyin.As a rule of thumb, try not to run more than one scoring process per core. Machine Learning sunucusu her bir kapsayıcıda çalıştırılan R işlemleri sayısı tanımlamanızı sağlar.Machine Learning Server lets you define the number of R processes running in each container. Beş işlemleri varsayılandır.The default is five processes. Bir doğrusal regresyonla değişkenleri az sayıda ya da bir küçük karar ağacı gibi göreceli olarak basit bir model oluştururken işlem sayısını artırabilirsiniz.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. Uygun kapsayıcı sayısı sınırı belirlemek için küme düğümlerinde CPU yükü izleyin.Monitor the CPU load on your cluster nodes to determine the appropriate limit on the number of containers.

GPU özellikli bir küme iş yükleri ve derin öğrenme modellerini özellikle bazı türlerini hızlandırabilirsiniz.A GPU-enabled cluster can speed up some types of workloads, and deep learning models in particular. Tüm iş yükleri Gpu'lar yararlanabilirsiniz — yalnızca o ağır olun matris Cebir kullanın.Not all workloads can take advantage of GPUs — only those that make heavy use of matrix algebra. Örneğin, modelleri, yükseltme ve rastgele ormanları dahil olmak üzere ağaç tabanlı model, genellikle GPU'ları herhangi bir avantaj sağlamaz türetilir.For example, tree-based models, including random forests and boosting models, generally derive no advantage from GPUs.

CPU üzerinde yüksek düzeyde paralelleştirilebilir rastgele ormanları gibi bazı model türleri.Some model types such as random forests are massively parallelizable on CPUs. Bu gibi durumlarda tek bir istekte birden çok çekirdek arasında iş yükünü dağıtarak Puanlama yukarı hızlandırın.In these cases, speed up the scoring of a single request by distributing the workload across multiple cores. Ancak, bunun yapılması, böylece bir sabit küme boyutu verilen birden çok Puanlama istekleri işlemek için kapasitenizi azaltır.However, doing so reduces your capacity to handle multiple scoring requests given a fixed cluster size.

Genel olarak, açık kaynaklı R modellerinin tüm verilerini bellekte depolar, böylece düğümlerinizi, aynı anda çalıştırmayı planladığınız işlemleri barındırmak için yeterli belleğe sahip olun.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. Modellerinizi sığdırmak için Machine Learning sunucusu kullanıyorsanız, diskteki verileri işleyebilir kitaplıkları kullanmak yerine, okuma tüm belleğe.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. Bu işlem, bellek gereksinimleri önemli ölçüde azaltmaya yardımcı olabilir.This can help reduce memory requirements significantly. Machine Learning sunucusu veya açık kaynak R kullanmadığınıza bakılmaksızın, Puanlama işlemlerinizi değil bellek-starved emin emin olmak için düğümlerinizin izleyin.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.

Güvenlikle ilgili dikkat edilmesi gerekenlerSecurity considerations

Ağ şifrelemesiNetwork encryption

Bu başvuru mimarisinde, küme ve hazırlama bir sertifika ile iletişim için HTTPS etkin [şimdi şifrelemek] encrypt kullanılır.In this reference architecture, HTTPS is enabled for communication with the cluster, and a staging certificate from Let’s Encrypt is used. Üretim için uygun bir imzalama yetkilisinden kendi sertifikanızı değiştirin.For production purposes, substitute your own certificate from an appropriate signing authority.

Kimlik doğrulama ve yetkilendirmeAuthentication and authorization

Machine Learning sunucusu [modeli kullanıma hazır hale getirme] operationalization Puanlama istekleri doğrulanmasını gerektirir.Machine Learning Server Model Operationalization requires scoring requests to be authenticated. Bu dağıtımda, bir kullanıcı adı ve parola kullanılır.In this deployment, a username and password are used. Bir kuruluş ortamında, kimlik doğrulaması kullanarak etkinleştirebilirsiniz [Azure Active Directory] azure-ad veya oluşturma kullanarak ayrı ön uç [Azure API Management] API.In an enterprise setting, you can enable authentication using Azure Active Directory or create a separate front end using Azure API Management.

Model ile Machine Learning sunucusu kapsayıcılarında düzgün çalışması kullanıma hazır hale getirme için bir JSON Web Token (JWT) sertifikası yüklemeniz gerekir.For Model Operationalization to work correctly with Machine Learning Server on containers, you must install a JSON Web Token (JWT) certificate. Bu dağıtım, Microsoft tarafından sağlanan bir sertifika kullanıyor.This deployment uses a certificate supplied by Microsoft. Bir üretim ayarında kendi sağlayın.In a production setting, supply your own.

AKS ile kapsayıcı kayıt defteri arasındaki trafik için etkinleştirmeyi düşünün [rol tabanlı erişim denetimi] rbac yalnızca gerekli erişim ayrıcalıkları sınırlamak için (RBAC).For traffic between Container Registry and AKS, consider enabling role-based access control (RBAC) to limit access privileges to only those needed.

Ayrı depolamaSeparate storage

Bu başvuru mimarisinde, tek bir resme (R) uygulama ve verileri (model nesnesi ve puanlama komut dosyası) oluşturur.This reference architecture bundles the application (R) and the data (model object and scoring script) into a single image. Bazı durumlarda, bu ayırmak yararlı olabilir.In some cases, it may be beneficial to separate these. Azure blob veya dosya kod ve model veri yerleştirebilirsiniz depolamave kapsayıcı başlatma sırasında saklayabilirsiniz.You can place the model data and code into Azure blob or file storage, and retrieve them at container initialization. Bu durumda, depolama hesabı yalnızca kimliği doğrulanmış erişim izin vermek ve HTTPS'yi zorunlu tutmak için ayarlandığından emin olun.In this case, ensure that the storage account is set to allow authenticated access only and require HTTPS.

İzleme ve günlüğe kaydetme konularıMonitoring and logging considerations

Kullanım [Kubernetes panosunu] dashboard AKS kümenizin genel durumunu izlemek için.Use the Kubernetes dashboard to monitor the overall status of your AKS cluster. Azure Portalı'nda kümenin genel bakış dikey daha fazla ayrıntı için bkz.See the cluster’s overview blade in Azure portal for more details. GitHub github kaynakları da r Pano görüntülemek nasıl GösterThe GitHub resources also show how to bring up the dashboard from R.

Pano kümenizin genel sistem durumu görünümünü verir ancak aynı zamanda kapsayıcılara durumunu izlemek önemlidir.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. Bunu yapmak için etkinleştirme [Azure İzleyici Insights] monitor Azure portalında veya bkz. küme genel bakış dikey penceresinden [kapsayıcılar için Azure İzleyici] monitor-containers.To do this, enable Azure Monitor Insights from the cluster overview blade in Azure portal, or see Azure Monitor for containers (in preview).

Maliyetle ilgili konularCost considerations

Machine Learning sunucusu, çekirdek başına temel ve Machine Learning sunucusu sayısı bu doğru çalışır kümedeki tüm çekirdekler üzerinde lisanslanır.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. Kurumsal Machine Learning sunucusu ya da Microsoft SQL Server müşterisiyseniz, fiyatlandırma ayrıntıları için Microsoft temsilcinize başvurun.If you are an enterprise Machine Learning Server or Microsoft SQL Server customer, contact your Microsoft representative for pricing details.

Machine Learning sunucusu açık kaynaklı alternatif Plumber, kodunuzu bir REST API'ye dönüştüren bir R paketi.An open-source alternative to Machine Learning Server is Plumber, an R package that turns your code into a REST API. Plumber Machine Learning sunucusu daha az tam olarak öne çıkan.Plumber is less fully featured than Machine Learning Server. Örneğin, varsayılan olarak, isteği kimlik doğrulaması sağlayan herhangi bir özellik içermiyor.For example, by default it doesn't include any features that provide request authentication. Plumber kullanırsanız, etkinleştirmeniz önerilir [Azure API Management] API kimlik doğrulaması ayrıntılarını işlemek için.If you use Plumber, it’s recommended that you enable Azure API Management to handle authentication details.

Lisanslama yanı sıra, göz önünde bulundurarak maliyet ana Kubernetes küme işlem kaynakları olur.Besides licensing, the main cost consideration is the Kubernetes cluster's compute resources. Küme yoğun saatlerde beklenen istek hacmini işlemeye yetecek kadar büyük olması gerekir, ancak bu yaklaşım kaynakları boşta diğer zamanlarda bırakır.The cluster must be large enough to handle the expected request volume at peak times, but this approach leaves resources idle at other times. Boşta kalan kaynakları etkisini sınırlamak için etkinleştirme [yatay otomatik ölçeklendiricinin] autoscaler kubectl Aracı'nı kullanarak küme için.To limit the impact of idle resources, enable the horizontal autoscaler for the cluster using the kubectl tool. Veya AKS ölçeklendiriciyi küme.Or use the AKS cluster autoscaler.

Çözümü dağıtmaDeploy the solution

Bu mimarinin başvuru uygulaması edinilebilir GitHub.The reference implementation of this architecture is available on GitHub. Hizmet olarak basit bir tahmin modeli dağıtmak için burada açıklanan adımları izleyin.Follow the steps described there to deploy a simple predictive model as a service.