Vytvoření rozhraní API pro doporučení v reálném čase v Azure

Cosmos DB
Databricks
Kubernetes Service
Machine Learning

Tato referenční architektura ukazuje, jak vytrénovat model doporučení pomocí Azure Databricks a nasadit ho jako rozhraní API pomocí Azure Cosmos DB, Azure Machine Learning a Azure Kubernetes Service (AKS). Tuto architekturu je možné generalizovat pro většinu scénářů modulu doporučení, včetně doporučení pro produkty, filmy a zprávy.

Referenční implementace této architektury je k dispozici na GitHub

Architektura modelu strojového učení pro trénování doporučení filmů

Scénář:Mediální organizace chce svým uživatelům poskytnout doporučení k filmům nebo videím. Díky individuálním doporučením organizace splňuje několik obchodních cílů, včetně vyšší míry prokliků, většího zapojení na webu a vyšší spokojenosti uživatelů.

Tato referenční architektura je trénování a nasazení rozhraní API doporučovací služby v reálném čase, které může poskytnout 10 nejlepších filmových doporučení pro daného uživatele.

Tok dat pro tento model doporučení je následující:

  1. Sledování chování uživatelů Back-endová služba se může například protokolovat, když uživatel ocení film nebo klikne na produkt nebo zpravodajský článek.

  2. Načtěte data do Azure Databricks z dostupného zdroje dat.

  3. Připravte data a rozdělte je na trénovací a testovací sady pro trénování modelu. (Tatopříručka popisuje možnosti rozdělení dat.)

  4. Přizpůsobení modelu filtrování založeného na spolupráci Sparku k datům

  5. Vyhodnoťte kvalitu modelu pomocí metrik hodnocení a hodnocení. (Tatopříručka obsahuje podrobnosti o metrikách, podle které můžete doporučení vyhodnotit.)

  6. Předpočítat 10 nejlepších doporučení na uživatele a uložit jako mezipaměť v Azure Cosmos DB.

  7. Nasaďte službu API do AKS pomocí rozhraní API Azure Machine Learning k kontejnerizaci a nasazení rozhraní API.

  8. Když back-endová služba dostane požadavek od uživatele, zavolejte rozhraní API pro doporučení hostované v AKS, abyste si vyžádali 10 nejlepších doporučení a prozobrazili je uživateli.

Architektura

Tato architektura se skládá z následujících komponent:

Azure Databricks. Databricks je vývojové prostředí, které slouží k přípravě vstupních dat a trénování doporučovacích modelů v clusteru Spark. Azure Databricks také interaktivní pracovní prostor pro spouštění poznámkových bloků a spolupráci na těchto poznámkových blocích pro jakékoli úlohy zpracování dat nebo strojového učení.

Azure Kubernetes Service (AKS). AKS se používá k nasazení a zprovoznit rozhraní API služby modelu strojového učení v clusteru Kubernetes. AKS hostuje kontejnerizovaný model a poskytuje škálovatelnost, která splňuje vaše požadavky na propustnost, správu identit a přístupu a protokolování a monitorování stavu.

Azure Cosmos DB. Cosmos DB je globálně distribuovaná databázová služba používaná k ukládání 10 nejlepších doporučených filmů pro každého uživatele. Azure Cosmos DB je pro tento scénář vhodný, protože poskytuje nízkou latenci (10 ms na 99. percentilu) pro čtení nejlepších doporučených položek pro daného uživatele.

Azure Machine Learning. Tato služba se používá ke sledování a správě modelů strojového učení a pak tyto modely zabalí a nasadí do škálovatelného prostředí AKS.

Microsoft Recommenders. Toto open source úložiště obsahuje kód nástrojů a ukázky, které uživatelům pomůžou začít s vytvářením, vyhodnocováním a zprovozněním doporučovacího systému.

Otázky výkonu

Výkon je primárním aspektem doporučení v reálném čase, protože doporučení obvykle spadají do kritické cesty požadavku, který uživatel provádí na vašem webu.

Kombinace AKS a Azure Cosmos DB umožňuje této architektuře poskytnout dobrý výchozí bod pro doporučení pro úlohy střední velikosti s minimální režií. Při zátěžových testech s 200 souběžnými uživateli tato architektura poskytuje doporučení s střední latencí přibližně 60 ms a provádí s propustností 180 požadavků za sekundu. Zátěžový test se spouštěl s výchozí konfigurací nasazení (cluster AKS 3x D3 v2 s 12 virtuálními procesory, 42 GB paměti a 11 000 jednotek žádostí (RU) za sekundu zřízeným pro Azure Cosmos DB).

Graph výkonu

Graph propustnosti

Azure Cosmos DB se doporučuje pro globální distribuci na klíč a užitečnost při plnění všech databázových požadavků, které vaše aplikace má. Kvůli trochu rychlejší latencizvažte použití Azure Cache for Redis azure Cosmos DB k vyhledávání. Azure Cache for Redis výkon systémů, které vysoce spoléhají na data v back-endových úložištěch.

Aspekty zabezpečení

Pokud nemáte v plánu používat Spark nebo máte menší úlohu, u které nepotřebujete distribuci, zvažte místo Data Science Virtual Machine (DSVM) Azure Databricks. DSVM je virtuální počítač Azure s rozhraními a nástroji hlubokého učení pro strojové učení a datové vědy. Stejně jako Azure Databricks můžete jakýkoli model, který vytvoříte v DSVM, zprovozněn jako služba v AKS prostřednictvím Azure Machine Learning.

Během trénování získejte větší cluster Spark s pevnou velikostí Azure Databricks nakonfigurujte automatické škálování. Když je povolené automatické škálování, Databricks monitoruje zatížení clusteru a v případě potřeby škáluje nahoru a dolů. Pokud máte velké objemy dat a chcete zkrátit dobu, kterou trvá příprava nebo modelování dat, zř zda chcete větší cluster zřídit nebo škálovat na více velikosti.

Škálování clusteru AKS podle vašich požadavků na výkon a propustnost Při škálování počtu podů naplno využijte cluster a škálování uzlů clusteru tak, aby splňovaly požadavky vaší služby. Automatické škálování můžete také nastavit v clusteru AKS. Další informace najdete v tématu Nasazení modelu do Azure Kubernetes Service clusteru.

Pokud chcete spravovat výkon služby Azure Cosmos DB, odhadněte požadovaný počet čtení za sekundu a získejte potřebný počet POČTU RU za sekundu (propustnost). Použijte osvědčené postupy pro dělení a horizontální škálování.

Důležité informace o nákladech

Hlavní faktory nákladů v tomto scénáři jsou:

  • Velikost Azure Databricks clusteru vyžadované pro trénování.
  • Velikost clusteru AKS vyžadované ke splnění vašich požadavků na výkon.
  • Azure Cosmos DB jsou zřízené tak, aby splňovaly vaše požadavky na výkon.

Spravujte Azure Databricks nižší náklady tím, že budete méně často trénovat a vypnete cluster Spark, když se nevyuží. Náklady na služby AKS a Azure Cosmos DB jsou vázané na propustnost a výkon vyžadované vaším webem a budou se škálovat nahoru a dolů v závislosti na objemu provozu na vašem webu.

Nasazení řešení

Pokud chcete tuto architekturu nasadit, postupujte Azure Databricks v dokumentu o nastavení podle pokynů v tématu. Stručně řečeno, pokyny vyžadují, abyste:

  1. Vytvořte pracovní Azure Databricks.

  2. Vytvořte nový cluster s následující konfigurací v Azure Databricks:

    • Režim clusteru: Standard
    • Databricks Runtime verze: 4.3 (zahrnuje Apache Spark 2.3.1, Scala 2.11)
    • Verze Pythonu: 3
    • Typ ovladače: Standard_DS3_v2
    • Typ pracovního procesu: Standard_DS3_v2 (minimální a maximální podle potřeby)
    • Automatické ukončení: (podle potřeby)
    • Konfigurace Sparku: (podle potřeby)
    • Proměnné prostředí: (podle potřeby)
  3. V pracovním prostoru služby vytvořte token Azure Databricks přístupu. Podrobnosti najdete v Azure Databricks ověřování.

  4. Naklonování úložiště Microsoft Recommenders do prostředí, kde můžete spouštět skripty (například místní počítač).

  5. Postupujte podle pokynů pro rychlé nastavení instalace a nainstalujte příslušné knihovny do Azure Databricks.

  6. Postupujte podle pokynů k rychlé instalaci a připravte Azure Databricks na zprovoznění.

  7. Naimportujte do svého pracovního prostoru poznámkový blok PRO Zprovoznění filmu ALS. Po přihlášení do Azure Databricks pracovního prostoru proveďte následující:

    a. Na levé straně pracovního prostoru klikněte na Domů.

    b. Klikněte pravým tlačítkem na prázdné místo v domovském adresáři. Vyberte Importovat.

    c. Vyberte ADRESU URLa do textového pole vložte následující:

    d. Klikněte na Importovat.

  8. Otevřete poznámkový blok v rámci Azure Databricks a připojte nakonfigurovaný cluster.

  9. Spusťte poznámkový blok a vytvořte prostředky Azure potřebné k vytvoření rozhraní API pro doporučení, které poskytuje 10 nejlepších filmových doporučení pro daného uživatele.

Také jsme sestaví referenční architekturu, která používá Spark a Azure Databricks k provádění plánovaných procesů dávkového bodování. Pokud chcete porozumět doporučenému přístupu pro pravidelné generování nových doporučení, podívejte se na referenční architekturu.