Valós idejű ajánlási API létrehozása az Azure-ban

Cosmos DB
Databricks
Kubernetes Service
Machine Learning

Ez a hivatkozási architektúra bemutatja, hogyan lehet betanítani egy ajánlási modellt a Azure Databricks használatával és API-ként telepíteni a Azure Cosmos DB, a Azure Machine Learning és az Azure Kubernetes Service (ak) használatával.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). Ez az architektúra általánosítható a legtöbb ajánlási motor esetében, beleértve a termékekkel, filmekkel és hírekkel kapcsolatos javaslatokat is.This architecture can be generalized for most recommendation engine scenarios, including recommendations for products, movies, and news.

Az architektúrához tartozó referenciák a githubon érhetők elA reference implementation for this architecture is available on GitHub

A Machine learning-modell architektúrája képzési film ajánlásaihoz

Forgatókönyv: A média-szervezet a felhasználóknak szóló film-vagy videó-ajánlásokat szeretne biztosítani.Scenario: A media organization wants to provide movie or video recommendations to its users. Személyre szabott javaslatok megadásával a szervezet több üzleti célt is kielégít, többek között a megnövekedett átkattintási arányokat, a nagyobb részvételt a helyszínen, és nagyobb felhasználói elégedettséget biztosít.By providing personalized recommendations, the organization meets several business goals, including increased click-through rates, increased engagement on site, and higher user satisfaction.

Ez a hivatkozási architektúra olyan valós idejű Ajánlói szolgáltatási API betanítására és üzembe helyezésére szolgál, amely az adott felhasználó számára az első 10 filmre vonatkozó javaslatot nyújt.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.

A javaslati modell adatáramlása a következő:The data flow for this recommendation model is as follows:

  1. Felhasználói viselkedés nyomon követése.Track user behaviors. Előfordulhat például, hogy egy háttér-szolgáltatás akkor jelentkezhet be, amikor egy felhasználó megértékel egy filmet, vagy rákattint egy termékre vagy hírekre.For example, a backend service might log when a user rates a movie or clicks a product or news article.

  2. Az adatok betöltése a Azure Databricksba egy elérhető adatforrásból.Load the data into Azure Databricks from an available data source.

  3. Készítse elő az adatfeldolgozást, és ossza ki a modell betanítására szolgáló képzési és tesztelési csoportokkal.Prepare the data and split it into training and testing sets to train the model. (Ez az útmutató az adatfelosztási lehetőségeket ismerteti.)(This guide describes options for splitting data.)

  4. Illeszkedjen a Spark együttműködési szűrési modellhez az adathalmazhoz.Fit the Spark Collaborative Filtering model to the data.

  5. Értékelje ki a modell minőségét a minősítési és rangsorolási mérőszámok használatával.Evaluate the quality of the model using rating and ranking metrics. (Ez az útmutató részletesen ismerteti azokat a mérőszámokat, amelyekkel kiértékelheti az ajánlót.)(This guide provides details about the metrics you can evaluate your recommender on.)

  6. Előre számítsa ki felhasználónként az első 10 javaslatot, és tárolja gyorsítótárként a Azure Cosmos DBban.Precompute the top 10 recommendations per user and store as a cache in Azure Cosmos DB.

  7. Az API-t a Azure Machine Learning API-k használatával üzembe helyezheti az tárolóba helyezése-ben, és üzembe helyezheti az API-t.Deploy an API service to AKS using the Azure Machine Learning APIs to containerize and deploy the API.

  8. Ha a háttérrendszer kérést kap egy felhasználótól, hívja meg az AK-ban üzemeltetett javaslatok API-t, hogy megkapják az első 10 javaslatot, és megjelenítik azokat a felhasználónak.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.

ArchitektúraArchitecture

Ez az architektúra a következő összetevőkből áll:This architecture consists of the following components:

Azure Databricks.Azure Databricks. A Databricks egy fejlesztési környezet, amely a bemeneti adatok előkészítésére és a javasolt modell betanítására szolgál a Spark-fürtön.Databricks is a development environment used to prepare input data and train the recommender model on a Spark cluster. A Azure Databricks egy interaktív munkaterületet is biztosít a notebookokon való futtatáshoz és az adatfeldolgozási és gépi tanulási feladatok végrehajtásához.Azure Databricks also provides an interactive workspace to run and collaborate on notebooks for any data processing or machine learning tasks.

Azure Kubernetes szolgáltatás (ak).Azure Kubernetes Service (AKS). A Kubernetes-fürtön a Machine learning Model Service API üzembe helyezéséhez és működővé tenni használható.AKS is used to deploy and operationalize a machine learning model service API on a Kubernetes cluster. Az AK üzemelteti a tároló modellt, amely méretezhetőséget biztosít, amely megfelel az átviteli követelményeknek, az identitás-és hozzáférés-kezelésnek, valamint a naplózási és állapot-figyelésnek.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. A Cosmos DB egy globálisan elosztott adatbázis-szolgáltatás, amely az első 10 ajánlott mozgóképet tárolja az egyes felhasználók számára.Cosmos DB is a globally distributed database service used to store the top 10 recommended movies for each user. Azure Cosmos DB kiválóan alkalmas ehhez a forgatókönyvhöz, mert alacsony késést biztosít (10 MS a esetek 99% percentilis esetében), hogy beolvassa az adott felhasználó legfontosabb ajánlott elemeit.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.Azure Machine Learning. Ezzel a szolgáltatással nyomon követheti és kezelheti a gépi tanulási modelleket, majd becsomagolhatja és üzembe helyezheti ezeket a modelleket egy skálázható AK-környezetbe.This service is used to track and manage machine learning models, and then package and deploy these models to a scalable AKS environment.

Microsoft-ajánlások.Microsoft Recommenders. Ez a nyílt forráskódú adattár segédprogram-kódot és mintákat tartalmaz, amelyek segítségével a felhasználók megkezdhetik az ajánló rendszer kialakítását, értékelését és végrehajtott.This open-source repository contains utility code and samples to help users get started in building, evaluating, and operationalizing a recommender system.

A teljesítménnyel kapcsolatos megfontolásokPerformance considerations

A teljesítmény elsődleges szempont a valós idejű javaslatok esetében, mivel a javaslatok általában a felhasználó által a webhelyre irányuló kérelem kritikus elérési útjára esnek.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.

Az AK és a Azure Cosmos DB kombinációja lehetővé teszi, hogy ez az architektúra jó kiindulási pontot biztosítson a minimális terheléssel rendelkező, közepes méretű munkaterhelésre vonatkozó javaslatok biztosításához.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. Az 200 egyidejű felhasználókkal rendelkező terhelési teszt alatt ez az architektúra javaslatokat nyújt a 60 MS-ra vonatkozó átlagos késéssel kapcsolatban, és a másodpercenkénti 180-kérelmeket hajtja végre.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. A terhelési teszt az alapértelmezett telepítési konfiguráción (egy 3x D3 v2 AK-beli fürtön, 12 vCPU, 42 GB memóriával, valamint a másodpercenként kiosztott, 11 000 -es kérelem-egységekkel (RUs) lett futtatva Azure Cosmos db).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).

Teljesítmény grafikonja

Átviteli sebesség grafikonja

A Azure Cosmos DB a kulcsrakész globális terjesztéséhez és az alkalmazás által használt adatbázis-követelmények teljesítéséhez ajánlott.Azure Cosmos DB is recommended for its turnkey global distribution and usefulness in meeting any database requirements your app has. Kissé gyorsabb késésesetén érdemes lehet az Azure cache -t használni a Redis Azure Cosmos db helyett a keresések kiszolgálásához.For slightly faster latency, consider using Azure Cache for Redis instead of Azure Cosmos DB to serve lookups. Az Azure cache for Redis képes javítani a háttérbeli tárolókban lévő adatokon alapuló rendszerek teljesítményét.Azure Cache for Redis can improve performance of systems that rely highly on data in back-end stores.

Méretezési szempontokScalability considerations

Ha nem tervezi a Spark használatát, vagy ha kisebb munkaterhelésre van szüksége, és nincs szükség terjesztésre, érdemes Data Science Virtual Machine (DSVM) használatát Azure Databricks helyett.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. A DSVM egy olyan Azure-beli virtuális gép, amely mély tanulási keretrendszereket és eszközöket biztosít a gépi tanuláshoz és az adatelemzéshez.DSVM is an Azure virtual machine with deep learning frameworks and tools for machine learning and data science. Ahogy a Azure Databricks esetében, a DSVM létrehozott összes modell működőképes lehet az AK-ban lévő szolgáltatásként Azure Machine Learningn keresztül.As with Azure Databricks, any model you create in a DSVM can be operationalized as a service on AKS via Azure Machine Learning.

A betanítás során hozzon létre egy nagyobb, rögzített méretű Spark-fürtöt Azure Databricks vagy konfigurálja az automatikus skálázást.During training, provision a larger fixed-size Spark cluster in Azure Databricks or configure autoscaling. Ha engedélyezve van az automatikus skálázás, a Databricks figyeli a fürt terhelését, és ha szükséges, fel-és leskálázást hajt végre.When autoscaling is enabled, Databricks monitors the load on your cluster and scales up and downs when required. Nagyobb fürt kiépítése vagy felskálázása, ha nagy adatmérettel rendelkezik, és csökkenteni szeretné az adatelőkészítési vagy modellezési feladatokhoz szükséges időt.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.

Méretezze át az AK-fürtöt a teljesítményre és az átviteli sebességre vonatkozó követelmények teljesítése érdekében.Scale the AKS cluster to meet your performance and throughput requirements. Gondoskodjon a hüvelyek számának a fürt teljes kihasználásához, valamint a fürt csomópontjainak méretezéséhez a szolgáltatás igényének kielégítése érdekében.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. További információ arról, hogyan méretezheti a fürtöt az ajánló szolgáltatás teljesítmény-és átviteli követelményeinek kielégítése érdekében: Azure Container Service fürtök skálázása.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.

A Azure Cosmos DB teljesítményének kezeléséhez adja meg a másodpercenkénti olvasási műveletek számát, és adja meg az RUs másodpercenkénti számát (átviteli sebesség).To manage Azure Cosmos DB performance, estimate the number of reads required per second, and provision the number of RUs per second (throughput) needed. Használjon ajánlott eljárásokat a particionáláshoz és a horizontális skálázáshoz.Use best practices for partitioning and horizontal scaling.

Költségekkel kapcsolatos szempontokCost considerations

Ebben a forgatókönyvben a fő díjszabási illesztőprogramok a következők:The main drivers of cost in this scenario are:

  • A betanításhoz szükséges Azure Databricks-fürt mérete.The Azure Databricks cluster size required for training.
  • A teljesítménnyel kapcsolatos követelmények teljesítéséhez szükséges AK-fürt mérete.The AKS cluster size required to meet your performance requirements.
  • Azure Cosmos DB RUs kiépítve, hogy megfeleljen a teljesítmény követelményeinek.Azure Cosmos DB RUs provisioned to meet your performance requirements.

A Azure Databricks költségeket ritkábban kell átképzéssel kezelni, és a Spark-fürtöt kikapcsolva, ha nincs használatban.Manage the Azure Databricks costs by retraining less frequently and turning off the Spark cluster when not in use. Az AK-s és a Azure Cosmos DB költségek a helyhez szükséges teljesítményhez és teljesítményhez vannak kötve, és a hely felé irányuló adatforgalom mennyiségétől függően fel-és leskálázásra kerülnek.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.

A megoldás üzembe helyezéseDeploy the solution

Az architektúra üzembe helyezéséhez kövesse a telepítési dokumentum Azure Databricks utasításait.To deploy this architecture, follow the Azure Databricks instructions in the setup document. Röviden, az utasításokhoz a következőket kell tennie:Briefly, the instructions require you to:

  1. Hozzon létre egy Azure Databricks munkaterületet.Create an Azure Databricks workspace.

  2. Hozzon létre egy új fürtöt a következő konfigurációval a Azure Databricksban:Create a new cluster with the following configuration in Azure Databricks:

    • Fürt üzemmódja: standardCluster mode: Standard
    • Databricks Runtime verziója: 4,3 (tartalmazza Apache Spark 2.3.1, Scala 2,11)Databricks Runtime Version: 4.3 (includes Apache Spark 2.3.1, Scala 2.11)
    • Python-verzió: 3Python Version: 3
    • Illesztőprogram típusa: standard _ DS3 _ v2Driver Type: Standard_DS3_v2
    • Feldolgozó típusa: standard _ DS3 _ v2 (minimum és Max, ha szükséges)Worker Type: Standard_DS3_v2 (min and max as required)
    • Automatikus befejezés: (igény szerint)Auto Termination: (as required)
    • Spark-konfiguráció: (igény szerint)Spark Config: (as required)
    • Környezeti változók: (szükség szerint)Environment Variables: (as required)
  3. Hozzon létre egy személyes hozzáférési jogkivonatot a Azure Databricks munkaterületen.Create a personal access token within the Azure Databricks workspace. A részletekért tekintse meg a Azure Databricks hitelesítési dokumentációját .See the Azure Databricks authentication documentation for details.

  4. A Microsoft Ajánlói tárház klónozása egy olyan környezetben, ahol parancsfájlokat (például a helyi számítógépet) lehet végrehajtani.Clone the Microsoft Recommenders repository into an environment where you can execute scripts (for example, your local computer).

  5. Kövesse a gyors telepítési telepítési útmutatót a megfelelő kódtárak telepítéséhez Azure Databrickson.Follow the Quick install setup instructions to install the relevant libraries on Azure Databricks.

  6. A operacionalizálási Azure Databricks előkészítéséhezkövesse a gyors telepítés telepítési útmutatóját.Follow the Quick install setup instructions to prepare Azure Databricks for operationalization.

  7. Importálja az ALS Movie operacionalizálási notebookot a munkaterületre.Import the ALS Movie Operationalization notebook into your workspace. A Azure Databricks munkaterületre való bejelentkezés után tegye a következőket:After logging into your Azure Databricks Workspace, do the following:

    a.a. Kattintson a munkaterület bal oldalán található Home (Kezdőlap ) elemre.Click Home on the left side of the workspace.

    b.b. Kattintson a jobb gombbal a saját könyvtárának üres területére.Right-click on white space in your home directory. Válassza az Importálás lehetőséget.Select Import.

    c.c. Válassza ki az URL-címet, és illessze be a következőt a szövegmezőbe: https://github.com/Microsoft/Recommenders/blob/master/examples/05_operationalize/als_movie_o16n.ipynbSelect URL, and paste the following into the text field: https://github.com/Microsoft/Recommenders/blob/master/examples/05_operationalize/als_movie_o16n.ipynb

    d.d. Kattintson az Importálás gombra.Click Import.

  8. Nyissa meg Azure Databrickson belül a jegyzetfüzetet, és csatolja a konfigurált fürtöt.Open the notebook within Azure Databricks and attach the configured cluster.

  9. Futtassa a jegyzetfüzetet, és hozzon létre egy ajánlási API létrehozásához szükséges Azure-erőforrásokat, amely az adott felhasználóhoz tartozó legjobb 10 filmre vonatkozó ajánlásokat biztosít.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.

Olyan hivatkozási architektúrát is készítettünk, amely a Spark és a Azure Databricks használatával ütemezett Batch-pontozási folyamatokathajt végre.We have also built a reference architecture that uses Spark and Azure Databricks to execute scheduled batch-scoring processes. Tekintse meg a hivatkozási architektúrát az új javaslatok rutinos létrehozásához javasolt megközelítés megismeréséhez.See that reference architecture to understand a recommended approach for generating new recommendations routinely.