Azure üzerinde gerçek zamanlı bir öneri API'si oluşturunBuild a real-time recommendation API on Azure

Bu başvuru mimarisi, Azure Databricks kullanarak bir öneri modeli eğitmek ve Azure Cosmos DB, Azure Machine Learning ve Azure Kubernetes Service (AKS) kullanarak API olarak dağıtma işlemi gösterilmektedir.This reference architecture shows how to train a recommendation model using Azure Databricks and deploy it as an API by using Azure Cosmos DB, Azure Machine Learning, and Azure Kubernetes Service (AKS). Bu mimari, ürünler, filmler ve haberler için öneriler de dahil olmak üzere çoğu öneri altyapısı senaryoları için genelleştirilmiş olmalıdır.This architecture can be generalized for most recommendation engine scenarios, including recommendations for products, movies, and news.

Bu mimari için bir başvuru uygulaması kullanılabilir GitHub.A reference implementation for this architecture is available on GitHub.

Film önerileri eğitim için makine öğrenme modeli mimarisi

Senaryo: Bir medya kuruluş filminin veya video öneriler, kullanıcılara sağlamak istiyor.Scenario: A media organization wants to provide movie or video recommendations to its users. Kişiselleştirilmiş öneriler sağlayarak, kuruluşun artan tıklama oranları, site ve daha yüksek kullanıcı memnuniyeti üzerindeki artan engagement dahil olmak üzere çeşitli iş hedeflerini karşılar.By providing personalized recommendations, the organization meets several business goals, including increased click-through rates, increased engagement on site, and higher user satisfaction.

Bu başvuru mimarisinde eğitim ve belirli bir kullanıcı için en iyi 10 film önerileri sağlayan bir gerçek zamanlı öneren hizmeti API'si dağıtmak içindir.This reference architecture is for training and deploying a real-time recommender service API that can provide the top 10 movie recommendations for a given user.

Bu öneri modeli için veri akışı aşağıdaki gibidir:The data flow for this recommendation model is as follows:

  1. Kullanıcı davranışlarını izleyin.Track user behaviors. Örneğin, bir kullanıcı bir filmi derecelendirir veya bir ürün veya haber makalesinin tıklamasının ardından arka uç hizmeti günlüğe kaydedebilirsiniz.For example, a backend service might log when a user rates a movie or clicks a product or news article.

  2. Verileri Azure Databricks'e kullanılabilir bir durumdan yükleme veri kaynağı.Load the data into Azure Databricks from an available data source.

  3. Veri hazırlama ve eğitim ve modeli eğitmek için test etme halinde bölün.Prepare the data and split it into training and testing sets to train the model. ([Bu kılavuzda] guide veri bölmek için seçenekleri açıklar.)(This guide describes options for splitting data.)

  4. Uygun [Spark işbirliğine dayalı filtreleme] als veriler için model.Fit the Spark Collaborative Filtering model to the data.

  5. Kalitesini derecelendirme ve sıralama ölçümleri kullanarak modeli değerlendirin.Evaluate the quality of the model using rating and ranking metrics. ([Bu kılavuzda] eval-guide Değerlendirmeli, öneren üzerinde ölçümleri hakkında ayrıntılar sağlar.)(This guide provides details about the metrics you can evaluate your recommender on.)

  6. İlk 10 öneriler her kullanıcı ve depolama, Azure Cosmos DB'de önbelleği olarak önceden hesaplar.Precompute the top 10 recommendations per user and store as a cache in Azure Cosmos DB.

  7. API hizmeti, kapsayıcılı hale getirme ve API dağıtmak için Azure Machine Learning API'leri kullanarak AKS'ye dağıtma.Deploy an API service to AKS using the Azure Machine Learning APIs to containerize and deploy the API.

  8. Arka uç hizmeti bir kullanıcı tarafından bir istek aldığında, API üst 10 öneriler alın ve bunları kullanıcıya göstermek için AKS barındırılan önerileri çağırın.When the backend service gets a request from a user, call the recommendations API hosted in AKS to get the top 10 recommendations and display them to the user.

MimariArchitecture

Bu mimari aşağıdaki bileşenlerden oluşur:This architecture consists of the following components:

Azure Databricks.Azure Databricks. Databricks Spark kümesi üzerinde öneren modeli eğitmek ve girdi verilerini hazırlamak için kullanılan bir geliştirme ortamıdır.Databricks is a development environment used to prepare input data and train the recommender model on a Spark cluster. Azure Databricks, çalıştırmak ve not defterleri için herhangi bir veri işleme veya makine öğrenimi görevlerini üzerinde işbirliği yapmak için etkileşimli bir çalışma alanı da sağlar.Azure Databricks also provides an interactive workspace to run and collaborate on notebooks for any data processing or machine learning tasks.

[Azure Kubernetes hizmeti] aks (AKS).Azure Kubernetes Service (AKS). AKS dağıtma ve makine öğrenme modeli hizmeti API'si bir Kubernetes kümesi üzerinde kullanıma hazır hale getirmek için kullanılır.AKS is used to deploy and operationalize a machine learning model service API on a Kubernetes cluster. AKS kapsayıcılı modeli, aktarım hızı gereksinimleri, kimlik ve erişim yönetimi ve günlüğe kaydetme ve sistem durumu izleme karşılayan ölçeklenebilirlik sağlayarak barındırır.AKS hosts the containerized model, providing scalability that meets your throughput requirements, identity and access management, and logging and health monitoring.

Azure Cosmos DB.Azure Cosmos DB. Cosmos DB, her kullanıcı için en iyi 10 önerilen filmler depolamak için kullanılan bir Global olarak dağıtılmış veritabanı hizmetidir.Cosmos DB is a globally distributed database service used to store the top 10 recommended movies for each user. Azure Cosmos DB bu senaryo için uygundur çünkü belirli bir kullanıcı için ilk önerilen öğeleri okumak için düşük gecikme (99. yüzdebirlik dilimde 10 MS'nin) sağlar.Azure Cosmos DB is well-suited for this scenario, because it provides low latency (10 ms at 99th percentile) to read the top recommended items for a given user.

Azure Machine Learning hizmeti.Azure Machine Learning Service. Bu hizmet, izlemek ve makine öğrenimi modelleri, yönetebilir ve ardından paketini ve bu modelleri ölçeklenebilir bir AKS ortamına dağıtmak için kullanılır.This service is used to track and manage machine learning models, and then package and deploy these models to a scalable AKS environment.

Microsoft Recommenders.Microsoft Recommenders. Bu açık kaynaklı depo yardımcı program kodunu içerir ve kullanıcılara yardımcı olmak için örnekleri oluşturma, değerlendirme ve öneren sistem faaliyete kullanmaya başlayın.This open-source repository contains utility code and samples to help users get started in building, evaluating, and operationalizing a recommender system.

Performansla ilgili önemli noktalarPerformance considerations

Performans önerileri, genellikle bir kullanıcı isteğinin kritik yolu sitenizde kalan gerçek zamanlı öneriler, bir birincil husus olmasıdır.Performance is a primary consideration for real-time recommendations, because recommendations usually fall in the critical path of the request a user makes on your site.

AKS ve Azure Cosmos DB bileşimi önerileri orta ölçekli bir iş yükü için en düşük yüklerle sağlamak için iyi bir başlangıç noktası sağlamak bu mimari sağlar.The combination of AKS and Azure Cosmos DB enables this architecture to provide a good starting point to provide recommendations for a medium-sized workload with minimal overhead. Bu mimari, 200 eş zamanlı kullanıcısı olan bir yük testi altında yaklaşık 60 MS ORTANCA bir gecikme süresiyle önerileri sağlar ve saniye başına 180 isteklerin bir işleme gerçekleştirir.Under a load test with 200 concurrent users, this architecture provides recommendations at a median latency of about 60 ms and performs at a throughput of 180 requests per second. Yük testi varsayılan dağıtım yapılandırması karşı çalıştırıldı (3 x D3 v2 AKS kümesi ile 12 Vcpu, bellek ve 11.000 42 GB [istek birimi (RU) saniye başına] ru Azure Cosmos DB için sağlanan).The load test was run against the default deployment configuration (a 3x D3 v2 AKS cluster with 12 vCPUs, 42 GB of memory, and 11,000 Request Units (RUs) per second provisioned for Azure Cosmos DB).

Performans grafiği

Aktarım Hızı grafiği

Azure Cosmos DB veritabanı gereksinimlerini uygulamanızı toplantı içinde fayda ve anahtar teslim küresel dağıtım için önerilir.Azure Cosmos DB is recommended for its turnkey global distribution and usefulness in meeting any database requirements your app has. İçin biraz daha hızlı gecikme, kullanmayı [Azure Redis Cache] redis aramaları sunmak için Azure Cosmos DB yerine.For slightly faster latency, consider using Azure Redis Cache instead of Azure Cosmos DB to serve lookups. Redis önbelleği, yüksek oranda arka uç depolarında kullanan sistemlerinin performansı geliştirebilir.Redis Cache can improve performance of systems that rely highly on data in back-end stores.

Ölçeklenebilirlik konusunda dikkat edilmesi gerekenlerScalability considerations

Spark kullanmayı planlamıyor veya dağıtım ihtiyacınız olmayan burada küçük bir iş yükü varsa, kullanmayı [veri bilimi sanal makinesi] dsvm (DSVM) Azure Databricks yerine.If you don't plan to use Spark, or you have a smaller workload where you don't need distribution, consider using Data Science Virtual Machine (DSVM) instead of Azure Databricks. DSVM derin öğrenme çerçeveleri ve makine öğrenimi ve veri bilimi için Araçlar ile bir Azure sanal makinesidir.DSVM is an Azure virtual machine with deep learning frameworks and tools for machine learning and data science. Olarak Azure Databricks ile bir DSVM içinde oluşturduğunuz herhangi bir model AKS Azure Machine Learning aracılığıyla bir hizmet olarak kullanıma hazır hale getirdiniz.As with Azure Databricks, any model you create in a DSVM can be operationalized as a service on AKS via Azure Machine Learning.

Eğitim sırasında Azure Databricks daha büyük bir sabit boyutlu Spark kümesi sağlayın veya yapılandırma otomatik ölçeklendirme.During training, provision a larger fixed-size Spark cluster in Azure Databricks or configure autoscaling. Otomatik ölçeklendirme etkin olduğunda, Databricks kümenizdeki yük izler ve ölçeklendirilebilir ve gerektiğinde listeler.When autoscaling is enabled, Databricks monitors the load on your cluster and scales up and downs when required. Sağlama veya büyük veri boyutu ve, varsa daha büyük bir küme ölçeklendirme istediğiniz veri hazırlık veya görevleri modelleme için gereken süreyi azaltmak.Provision or scale out a larger cluster if you have a large data size and you want to reduce the amount of time it takes for data preparation or modeling tasks.

Performans ve aktarım hızı gereksinimlerinizi karşılayacak şekilde AKS kümesini ölçeklendirin.Scale the AKS cluster to meet your performance and throughput requirements. Sayısını azaltmak için dikkatli [pod'ların] scale kümenin tam olarak yararlanmak ve ölçeklendirmek için [düğümleri] nodes talebi karşılamak için kümedeki Hizmetinizi.Take care to scale up the number of pods to fully utilize the cluster, and to scale the nodes of the cluster to meet the demand of your service. Performans ve öneren hizmetinizin aktarım hızı gereksinimleri karşılayacak şekilde kümenizi ölçeklendirme konusunda daha fazla bilgi için bkz. Azure Container Service kümeleri ölçeklendirme.For more information on how to scale your cluster to meet the performance and throughput requirements of your recommender service, see Scaling Azure Container Service Clusters.

Azure Cosmos DB performansını yönetmek için gereken saniye başına okuma sayısını tahmin etmek ve sayısını sağlamak [RU / saniye] ru (verim) gerekli.To manage Azure Cosmos DB performance, estimate the number of reads required per second, and provision the number of RUs per second (throughput) needed. İçin en iyi yöntemleri kullanın bölümleme ve yatay ölçeklendirme.Use best practices for partitioning and horizontal scaling.

Maliyetle ilgili konularCost considerations

Bu senaryoda maliyeti ana sürücüleri şunlardır:The main drivers of cost in this scenario are:

  • Eğitim için gerekli Azure Databricks küme boyutu.The Azure Databricks cluster size required for training.
  • AKS kümesi boyutu performans gereksinimlerinizi karşılamak için gerekli.The AKS cluster size required to meet your performance requirements.
  • Azure Cosmos DB performans gereksinimlerinizi karşılayacak şekilde RU.Azure Cosmos DB RUs provisioned to meet your performance requirements.

Azure Databricks maliyetleri daha az sıklıkta yeniden eğitme ve Spark kümesi kullanımda olmadığında kapatma yönetin.Manage the Azure Databricks costs by retraining less frequently and turning off the Spark cluster when not in use. AKS ve Azure Cosmos DB maliyetleri, aktarım hızı ve performansı, site tarafından gerekli bağlıdır ve sitenizde trafik hacmine bağlı olarak yukarı ve aşağı ölçeklendirir.The AKS and Azure Cosmos DB costs are tied to the throughput and performance required by your site and will scale up and down depending on the volume of traffic to your site.

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

Bu mimariyi dağıtmak için takip Azure Databricks yönergeleri Kurulum belge.To deploy this architecture, follow the Azure Databricks instructions in the setup document. Kısaca, yönergeler şunları gerektirir:Briefly, the instructions require you to:

  1. Oluşturma bir Azure Databricks çalışma alanı.Create an Azure Databricks workspace.

  2. Azure databricks'te aşağıdaki yapılandırma ile yeni bir küme oluşturun:Create a new cluster with the following configuration in Azure Databricks:

    • Küme modunu: StandartCluster mode: Standard
    • Databricks çalışma zamanı sürümü: 4.3 (Apache Spark 2.3.1, Scala 2.11 içerir)Databricks Runtime Version: 4.3 (includes Apache Spark 2.3.1, Scala 2.11)
    • Python sürümü: 3Python Version: 3
    • Sürücü türü: Standart_DS3_v2Driver Type: Standard_DS3_v2
    • Çalışan türü: Standart_DS3_v2 (min ve Maks gerektiği gibi)Worker Type: Standard_DS3_v2 (min and max as required)
    • Sonlandırma auto: (gerektiği gibi)Auto Termination: (as required)
    • Config spark: (gerektiği gibi)Spark Config: (as required)
    • Ortam değişkenlerini: (gerektiği gibi)Environment Variables: (as required)
  3. İçinde bir kişisel erişim belirteci oluşturma Azure Databricks çalışma alanı.Create a personal access token within the Azure Databricks workspace. Azure Databricks bkz [belgeleri] adbauthentication Ayrıntılar için.See the Azure Databricks authentication documentation for details.

  4. Kopya [Microsoft Recommenders] github bir ortamı depoya Burada, yürütebilir betikleri (örneğin, yerel bilgisayarınıza bir).Clone the Microsoft Recommenders repository into an environment where you can execute scripts (for example, your local computer).

  5. İzleyin hızlı yükleme kurulum yönergeleri [ilgili kitaplıkları yükleme] setup Azure Databricks üzerinde.Follow the Quick install setup instructions to install the relevant libraries on Azure Databricks.

  6. İzleyin hızlı yükleme kurulum yönergeleri kullanıma hazır hale getirme için Azure Databricks hazırlama.Follow the Quick install setup instructions to prepare Azure Databricks for operationalization.

  7. İçeri aktarma [ALS film kullanıma hazır hale getirme not defteri] als-example çalışma alanınıza.Import the ALS Movie Operationalization notebook into your workspace. Azure Databricks çalışma alanınıza oturum açtıktan sonra aşağıdakileri yapın:After logging into your Azure Databricks Workspace, do the following:

    a.a. Tıklayın giriş çalışma alanı'nın sol tarafındaki.Click Home on the left side of the workspace.

    b.b. Boşluk giriş dizininize sağ tıklayın.Right-click on white space in your home directory. Seçin alma.Select Import.

    c.c. Seçin URLve metin alanına aşağıdakini yapıştırın: https://github.com/Microsoft/Recommenders/blob/master/notebooks/05_operationalize/als_movie_o16n.ipynbSelect URL, and paste the following into the text field: https://github.com/Microsoft/Recommenders/blob/master/notebooks/05_operationalize/als_movie_o16n.ipynb

    d.d. İçeri Aktar’a tıklayın.Click Import.

  8. Azure databricks'te not defterini açın ve yapılandırılmış bir kümeye ekleyin.Open the notebook within Azure Databricks and attach the configured cluster.

  9. Belirli bir kullanıcı için en önemli 10 film önerileri sağlayan bir öneri API oluşturmak için gereken Azure kaynakları oluşturmak için Not defterini çalıştırın.Run the notebook to create the Azure resources required to create a recommendation API that provides the top-10 movie recommendations for a given user.

Spark'ı kullanan bir başvuru mimarisi de derledik ve yürütmek için Azure Databricks zamanlanmış işlemleri toplu Puanlama.We have also built a reference architecture that uses Spark and Azure Databricks to execute scheduled batch-scoring processes. Bu başvuru mimarisi, yeni bir öneri düzenli olarak oluşturmak için önerilen bir yaklaşım anlamak için bkz.See that reference architecture to understand a recommended approach for generating new recommendations routinely.