Den här referensarkitekturen visar hur du tränar en rekommendationsmodell med hjälp av Azure Databricks och distribuerar den som ett API med hjälp av Azure Cosmos DB, Azure Machine Learning och Azure Kubernetes Service (AKS). Den här arkitekturen kan generaliseras för de flesta rekommendationsmotorscenarier, inklusive rekommendationer för produkter, filmer och nyheter.
En referensimplementering för den här arkitekturen finns på GitHub

Scenario:En medieorganisation vill ge användarna film- eller videorekommendationer. Genom att tillhandahålla anpassade rekommendationer uppfyller organisationen flera affärsmål, inklusive ökade klickfrekvenser, ökat engagemang på webbplatsen och högre användarnöjdhet.
Den här referensarkitekturen är för träning och distribution av ett tjänst-API för realtidsrekommendationer som kan ge de 10 främsta filmrekommendationerna för en viss användare.
Dataflödet för den här rekommendationsmodellen är följande:
Spåra användarbeteenden. En backend-tjänst kan till exempel logga när en användare visar en film eller klickar på en produkt eller nyhetsartikel.
Läs in data i Azure Databricks från en tillgänglig datakälla.
Förbered data och dela upp dem i tränings- och testuppsättningar för att träna modellen. (Den här guiden beskriver alternativ för att dela data.)
Anpassa Spark Collaborative Filtering-modellen till data.
Utvärdera modellens kvalitet med hjälp av klassificerings- och rangordningsmått. (Den här guiden innehåller information om de mått som du kan utvärdera din rekommenderare på.)
Förbecompute the top 10 recommendations per user and store as a cache in Azure Cosmos DB.
Distribuera en API-tjänst till AKS med hjälp Azure Machine Learning API:er för att containerisera och distribuera API:et.
När backend-tjänsten får en begäran från en användare anropar du API:et för rekommendationer som finns i AKS för att hämta de 10 främsta rekommendationerna och visa dem för användaren.
Arkitektur
Den här arkitekturen består av följande komponenter:
Azure Databricks. Databricks är en utvecklingsmiljö som används för att förbereda indata och träna rekommendationsmodellen i ett Spark-kluster. Azure Databricks också en interaktiv arbetsyta där du kan köra och samarbeta med notebook-datorer för databehandling eller maskininlärningsuppgifter.
Azure Kubernetes Service (AKS). AKS används för att distribuera och operationalisera ett tjänst-API för maskininlärningsmodeller i ett Kubernetes-kluster. AKS är värd för den containeriserade modellen, vilket ger skalbarhet som uppfyller dataflödeskraven, identitets- och åtkomsthantering samt loggning och hälsoövervakning.
Azure Cosmos DB. Cosmos DB är en globalt distribuerad databastjänst som används för att lagra de 10 bästa rekommenderade filmerna för varje användare. Azure Cosmos DB passar bra för det här scenariot eftersom det ger låg latens (10 ms vid den 99:e percentilen) för att läsa de främsta rekommenderade objekten för en viss användare.
Azure Machine Learning. Den här tjänsten används för att spåra och hantera maskininlärningsmodeller och sedan paketera och distribuera dessa modeller till en skalbar AKS-miljö.
Microsoft Recommenders. Den här lagringsplatsen med öppen källkod innehåller verktygskod och exempel som hjälper användarna att komma igång med att skapa, utvärdera och operationalisera ett rekommendationssystem.
Saker att tänka på gällande prestanda
Prestanda är ett viktigt övervägande för realtidsrekommendationer, eftersom rekommendationer vanligtvis ligger i den kritiska vägen för den begäran som en användare gör på webbplatsen.
Kombinationen av AKS och Azure Cosmos DB ger den här arkitekturen en bra utgångspunkt för att ge rekommendationer för en medelstor arbetsbelastning med minimala omkostnader. Under ett belastningstest med 200 samtidiga användare ger den här arkitekturen rekommendationer med en medianfördröjning på cirka 60 ms och utför ett dataflöde på 180 begäranden per sekund. Belastningstestet har körts mot standarddistributionskonfigurationen (ett 3x D3 v2 AKS-kluster med 12 virtuella processorer, 42 GB minne och 11 000 enheter för programbegäran (RU:er) per sekund som etablerats för Azure Cosmos DB).


Azure Cosmos DB rekommenderas för den nyckelfärdiga globala distributionen och användbarheten för att uppfylla alla databaskrav som din app har. För något snabbare svarstider bördu överväga att använda Azure Cache for Redis stället för Azure Cosmos DB för att visa uppslag. Azure Cache for Redis kan förbättra prestanda för system som är starkt beroende av data i backend-lager.
Skalbarhetsöverväganden
Om du inte planerar att använda Spark, eller om du har en mindre arbetsbelastning där du inte behöver distribution, kan du överväga att använda Data Science Virtual Machine (DSVM) i stället för Azure Databricks. DSVM är en virtuell Azure-dator med djupinlärningsramverk och verktyg för maskininlärning och datavetenskap. Precis som Azure Databricks kan alla modeller som du skapar i en DSVM operationaliseras som en tjänst i AKS via Azure Machine Learning.
Under träningen etablerar du ett större Spark-kluster med fast storlek Azure Databricks konfigurera autoskalning. När autoskalning är aktiverat övervakar Databricks belastningen på klustret och skalar upp och ned när det behövs. Etablera eller skala ut ett större kluster om du har en stor datastorlek och du vill minska den tid det tar för dataförberedelse- eller modelleringsuppgifter.
Skala AKS-klustret för att uppfylla dina krav på prestanda och dataflöde. Var noga med att skala upp antalet poddar för att utnyttja klustret fullt ut och skala noderna i klustret för att möta efterfrågan på din tjänst. Du kan också ange autoskalning i AKS-kluster. Se Distribuera en modell till ett Azure Kubernetes Service kluster.
För att Azure Cosmos DB prestandan beräknar du antalet läsningar som krävs per sekund och etablerar det antal RU:er per sekund (dataflöde) som behövs. Använd metodtips för partitionering och horisontell skalning.
Kostnadsöverväganden
De viktigaste kostnadsförarna i det här scenariot är:
- Den Azure Databricks klusterstorlek som krävs för träning.
- Den AKS-klusterstorlek som krävs för att uppfylla dina prestandakrav.
- Azure Cosmos DB RU:er som etablerats för att uppfylla dina prestandakrav.
Hantera Azure Databricks genom att träna om mindre ofta och stänga av Spark-klustret när det inte används. Kostnaderna för AKS och Azure Cosmos DB är knutna till det dataflöde och prestanda som krävs av webbplatsen och skalas upp och ned beroende på mängden trafik till webbplatsen.
Distribuera lösningen
Om du vill distribuera den här arkitekturen följer Azure Databricks i installationsdokumentet. Instruktionerna kräver att du:
Skapa en Azure Databricks arbetsyta.
Skapa ett nytt kluster med följande konfiguration i Azure Databricks:
- Klusterläge: Standard
- Databricks Runtime version: 4.3 (inklusive Apache Spark 2.3.1, Scala 2.11)
- Python-version: 3
- Drivrutinstyp: Standard_DS3_v2
- Arbetstyp: Standard_DS3_v2 (min och max efter behov)
- Automatisk avslutning: (efter behov)
- Spark-konfiguration: (efter behov)
- Miljövariabler: (efter behov)
Skapa en personlig åtkomsttoken i Azure Databricks arbetsytan. Mer information Azure Databricks finns i dokumentationen om Azure Databricks autentisering.
Klona Microsoft Recommenders-lagringsplatsen till en miljö där du kan köra skript (till exempel din lokala dator).
Följ installationsanvisningarna för snabbinstallation för att installera relevanta bibliotek på Azure Databricks.
Följ snabbinstallationsanvisningarna för att förbereda Azure Databricks för drift.
Importera anteckningsboken ALS Movie Operationalization till din arbetsyta. När du har loggat Azure Databricks arbetsytan gör du följande:
a. Klicka på Start till vänster på arbetsytan.
b. Högerklicka på tomt utrymme i arbetskatalogen. Välj Importera.
c. Välj URLoch klistra in följande i textfältet:
d. Klicka på Importera.
Öppna anteckningsboken i Azure Databricks och koppla det konfigurerade klustret.
Kör anteckningsboken för att skapa de Azure-resurser som krävs för att skapa ett rekommendations-API som ger de 10 främsta filmrekommendationerna för en viss användare.
Relaterade arkitekturer
Vi har också skapat en referensarkitektur som använder Spark och Azure Databricks för att köra schemalagda batchbedömningsprocesser. Se referensarkitekturen för att förstå en rekommenderad metod för att regelbundet generera nya rekommendationer.