Azure'da gerçek zamanlı öneri API'si oluşturma

Cosmos DB
Databricks
Kubernetes Hizmeti
Machine Learning

Bu başvuru mimarisi, Azure Databricks kullanarak bir öneri modelini eğitip azure Cosmos DB, Azure Machine Learning ve Azure Kubernetes Service (AKS) kullanarak modeli API olarak dağıtmayı gösterir. Bu mimarinin başvuru uygulaması için bkz. GitHub'da Gerçek Zamanlı Öneri API'si Oluşturma .

Mimari

Film önerilerini eğiten makine öğrenmesi modelinin mimarisini gösteren diyagram.

Bu mimarinin bir Visio dosyasını indirin.

Bu başvuru mimarisi, bir kullanıcıya en iyi 10 film önerisi sağlayabilecek gerçek zamanlı bir önerilen hizmet API'sini eğitme ve dağıtmaya yöneliktir.

Veri akışı

  1. Kullanıcı davranışlarını izleme. Örneğin, bir arka uç hizmeti, bir kullanıcı bir filmi fiyatladığında veya bir ürüne veya haber makalesine tıkladığında günlüğe kaydedilebilir.
  2. Verileri kullanılabilir bir veri kaynağından Azure Databricks'e yükleyin.
  3. Verileri hazırlayın ve modeli eğitmek için eğitim ve test kümelerine bölün. (Bu kılavuzda verileri bölme seçenekleri açıklanmaktadır.)
  4. Spark İşbirliğine Dayalı Filtreleme modelini verilere sığdırın.
  5. Derecelendirme ve derecelendirme ölçümlerini kullanarak modelin kalitesini değerlendirin. (Bu kılavuzda , önerinizi değerlendirmek için kullanabileceğiniz ölçümlerle ilgili ayrıntılar sağlanır.)
  6. Kullanıcı başına en iyi 10 öneriyi önceden derleyip Azure Cosmos DB'de önbellek olarak depolayın.
  7. API'yi kapsayıcıya almak ve dağıtmak için Machine Learning API'lerini kullanarak AKS'ye bir API hizmeti dağıtın.
  8. Arka uç hizmeti bir kullanıcıdan istek aldığında, ilk 10 öneriyi almak ve bunları kullanıcıya görüntülemek için AKS'de barındırılan öneriler API'sini çağırın.

Bileşenler

  • Azure Databricks. Databricks, bir Spark kümesinde giriş verilerini hazırlamak ve önerilen modeli eğitmek için kullanılan bir geliştirme ortamıdır. Azure Databricks ayrıca herhangi bir veri işleme veya makine öğrenmesi görevi için not defterlerini çalıştırmak ve üzerinde işbirliği yapmak için etkileşimli bir çalışma alanı sağlar.
  • Azure Kubernetes Service (AKS). AKS, Kubernetes kümesinde makine öğrenmesi modeli hizmet API'sini dağıtmak ve kullanıma hazır hale getirmek için kullanılır. AKS kapsayıcılı modeli barındırır ve aktarım hızı gereksinimlerinizi, kimlik ve erişim yönetiminizi ve günlüğe kaydetme ve sistem durumu izlemenizi karşılayan ölçeklenebilirlik sağlar.
  • Azure Cosmos DB. Azure Cosmos DB, her kullanıcı için en çok önerilen 10 filmi depolamak için kullanılan genel olarak dağıtılmış bir veritabanı hizmetidir. Azure Cosmos DB, belirli bir kullanıcı için en çok önerilen öğeleri okumak için düşük gecikme süresi (yüzde 99'da 10 ms) sağladığından bu senaryo için uygundur.
  • Makine Öğrenmesi. Bu hizmet, makine öğrenmesi modellerini izlemek ve yönetmek ve ardından bu modelleri paketleyip ölçeklenebilir bir AKS ortamına dağıtmak için kullanılır.
  • Microsoft Önerenler. Bu açık kaynak deposu, kullanıcıların önerilen bir sistemi oluşturmaya, değerlendirmeye ve kullanıma almaya başlamalarına yardımcı olmak için yardımcı program kodu ve örnekler içerir.

Senaryo ayrıntıları

Bu mimari, ürünler, filmler ve haberler için öneriler de dahil olmak üzere çoğu öneri altyapısı senaryosu için genelleştirilebilir.

Olası kullanım örnekleri

Senaryo: Medya kuruluşu, kullanıcılarına film veya video önerileri sağlamak ister. Kişiselleştirilmiş öneriler sağlayarak, kuruluş artan tıklama oranları, web sitesinde daha fazla katılım ve daha yüksek kullanıcı memnuniyeti de dahil olmak üzere çeşitli iş hedeflerini karşılar.

Bu çözüm perakende sektörü ve medya ve eğlence sektörleri için iyileştirilmiştir.

Dikkat edilmesi gerekenler

Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure Well-Architected Framework'ün yapı taşlarını uygular. Daha fazla bilgi için bkz. Microsoft Azure Well-Architected Framework.

Azure Databricks'te Spark modellerinin toplu puanlaması , zamanlanmış toplu puanlama işlemlerini yürütmek için Spark ve Azure Databricks kullanan bir başvuru mimarisini açıklar. Yeni öneriler oluşturmak için bu yaklaşımı öneririz.

Performans verimliliği

Performans verimliliği, kullanıcılar tarafından anlamlı bir şekilde yerleştirilen talepleri karşılamak amacıyla iş yükünüzü ölçeklendirme becerisidir. Daha fazla bilgi için bkz . Performans verimliliği sütununa genel bakış.

Öneriler genellikle web sitenizdeki bir kullanıcı isteğinin kritik yolunda olduğundan, gerçek zamanlı öneriler için performans önemli bir noktadır.

AKS ve Azure Cosmos DB'nin birleşimi, bu mimarinin en düşük ek yüke sahip orta ölçekli bir iş yüküne yönelik öneriler sağlamak için iyi bir başlangıç noktası sağlamasına olanak tanır. 200 eşzamanlı kullanıcının yük testi altında, bu mimari yaklaşık 60 ms ortanca gecikme süresinde öneriler sağlar ve saniyede 180 istek aktarım hızıyla performans gösterir. Yük testi varsayılan dağıtım yapılandırmasına (12 vCPU, 42 GB bellek ve Azure Cosmos DB için sağlanan saniyede 11.000 İstek Birimi (RU) ile 3x D3 v2 AKS kümesi) karşı çalıştırıldı.

Performans grafiği

Aktarım hızı grafiği

Azure Cosmos DB, uygulamanızın sahip olduğu tüm veritabanı gereksinimlerini karşılamak için anahtar teslimi genel dağıtımı ve kullanışlılığı için önerilir. Gecikme süresini biraz azaltmak için aramalara hizmet vermek için Azure Cosmos DB yerine Redis için Azure Cache kullanmayı göz önünde bulundurun. Redis için Azure Cache, arka uç depolarındaki verilere yoğun olarak bağımlı olan sistemlerin performansını artırabilir.

Ölçeklenebilirlik

Spark kullanmayı planlamıyorsanız veya dağıtım gerektirmeyen daha küçük bir iş yükünüz varsa Azure Databricks yerine bir Veri Bilimi Sanal Makinesi (DSVM) kullanmayı göz önünde bulundurun. DSVM, derin öğrenme çerçeveleri ve makine öğrenmesi ve veri bilimi araçlarına sahip bir Azure sanal makinesidir. Azure Databricks'te olduğu gibi, DSVM'de oluşturduğunuz tüm modeller Machine Learning aracılığıyla AKS'de hizmet olarak kullanıma hazır hale getirilebilir.

Eğitim sırasında Azure Databricks'te daha büyük bir sabit boyutlu Spark kümesi sağlayın veya otomatik ölçeklendirmeyi yapılandırın. Otomatik ölçeklendirme etkinleştirildiğinde Databricks kümenizdeki yükü izler ve gerektiğinde ölçeği büyütüp küçültür. Büyük bir veri boyutunuz varsa ve veri hazırlama veya modelleme görevleri için gereken süreyi azaltmak istiyorsanız, daha büyük bir kümeyi sağlayın veya ölçeklendirin.

Performans ve aktarım hızı gereksinimlerinizi karşılamak için AKS kümesini ölçeklendirin. Kümeyi tam olarak kullanmak için pod sayısını artırmaya ve hizmetinizin talebini karşılamak için kümenin düğümlerini ölçeklendirmeye dikkat edin. Aks kümesinde otomatik ölçeklendirmeyi de ayarlayabilirsiniz. Daha fazla bilgi için bkz. Modeli Azure Kubernetes Service kümesine dağıtma.

Azure Cosmos DB performansını yönetmek için saniye başına gereken okuma sayısını tahmin edin ve saniye başına RU sayısını (aktarım hızı) sağlayın. Bölümleme ve yatay ölçeklendirme için en iyi yöntemleri kullanın.

Maliyet iyileştirmesi

Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimliliği artırmanın yollarını gözden geçmektir. Daha fazla bilgi için bkz. Maliyet iyileştirme sütununa genel bakış.

Bu senaryoda maliyetin ana etmenleri şunlardır:

  • Eğitim için gereken Azure Databricks küme boyutu.
  • Performans gereksinimlerinizi karşılamak için gereken AKS kümesi boyutu.
  • Performans gereksinimlerinizi karşılamak için sağlanan Azure Cosmos DB RU'ları.

Azure Databricks maliyetlerini daha az sıklıkta yeniden eğiterek ve spark kümesini kullanımda değilken kapatarak yönetin. AKS ve Azure Cosmos DB maliyetleri, sitenizin gerektirdiği aktarım hızına ve performansa bağlıdır ve sitenize gelen trafik hacmine bağlı olarak ölçeği artırıp azaltacaktır.

Bu senaryoyu dağıtın

Bu mimariyi dağıtmak için kurulum belgesindekiAzure Databricks yönergelerini izleyin. Kısaca yönergeler şunları gerektirir:

  1. Azure Databricks çalışma alanı oluşturun.
  2. Azure Databricks'te aşağıdaki yapılandırmayla yeni bir küme oluşturun:
    • Küme modu: Standart
    • Databricks çalışma zamanı sürümü: 4.3 (Apache Spark 2.3.1, Scala 2.11 içerir)
    • Python sürümü: 3
    • Sürücü türü: Standard_DS3_v2
    • Çalışan türü: Standard_DS3_v2 (gereken en az ve en yüksek)
    • Otomatik sonlandırma: (gerektiği gibi)
    • Spark yapılandırması: (gerektiği gibi)
    • Ortam değişkenleri: (gerektiği gibi)
  3. Azure Databricks çalışma alanında kişisel erişim belirteci oluşturun. Ayrıntılar için Bkz. Azure Databricks kimlik doğrulaması belgeleri .
  4. Microsoft Recommenders deposunu betikleri (örneğin, yerel bilgisayarınız) yürütebileceğiniz bir ortama kopyalayın.
  5. Azure Databricks'e ilgili kitaplıkları yüklemek için Hızlı yükleme kurulum yönergelerini izleyin.
  6. Azure Databricks'i kullanıma hazır hale getirmek içinHızlı yükleme kurulum yönergelerini izleyin.
  7. ALS Movie Operationalization not defterini çalışma alanınıza aktarın. Azure Databricks çalışma alanınızda oturum açtıktan sonra aşağıdakileri yapın:
    1. Çalışma alanının sol tarafındaki Giriş'e tıklayın.
    2. Giriş dizininizdeki boşluklara sağ tıklayın. İçeri aktar'ı seçin.
    3. URL'yi seçin ve aşağıdakileri metin alanına yapıştırın:https://github.com/Microsoft/Recommenders/blob/master/examples/05_operationalize/als_movie_o16n.ipynb
    4. İçeri Aktar’a tıklayın.
  8. Not defterini Azure Databricks'in içinde açın ve yapılandırılan kümeyi ekleyin.
  9. Belirli bir kullanıcı için ilk 10 film önerisini sağlayan bir öneri API'sini oluşturmak için gereken Azure kaynaklarını oluşturmak için not defterini çalıştırın.

Sonraki adımlar