Azure 'da gerçek zamanlı bir öneri API 'SI oluşturun

Cosmos DB
Databricks
Kubernetes Hizmeti
Machine Learning

bu başvuru mimarisinde, Azure Cosmos DB, Azure Machine Learning ve Azure kubernetes hizmeti (aks) kullanarak Azure Databricks kullanarak bir öneri modelinin nasıl eğileceği ve apı olarak nasıl dağıtılacağı gösterilmiştir. Bu mimari, ürün, film ve haberlere yönelik öneriler de dahil olmak üzere çoğu öneri altyapısı senaryosunda genelleştirilemez.

Bu mimari için bir başvuru uygulama GitHub kullanılabilir

Eğitim filmi için bir makine öğrenimi modelinin mimarisi

Senaryo: bir medya organizasyonu, kullanıcılarına film veya video önerileri sağlamak istiyor. Kuruluş, kişiselleştirilmiş öneriler sunarak, daha fazla tıklama ücretleri, site üzerinde daha fazla katılım ve Kullanıcı memnuniyeti dahil olmak üzere çeşitli iş hedeflerini karşılar.

Bu başvuru mimarisi, belirli bir kullanıcı için en iyi 10 film önerilerini sağlayabilecek gerçek zamanlı bir öneren hizmeti API 'sini eğitmek ve dağıtmakta.

Bu öneri modeli için veri akışı aşağıdaki gibidir:

  1. Kullanıcı davranışlarını izleyin. Örneğin, bir Kullanıcı bir filmi derecelendirirken veya bir ürün ya da haber makalesini tıklattığında arka uç hizmeti günlüğe kaydedilir.

  2. Verileri kullanılabilir bir veri kaynağındanAzure Databricks içine yükleyin.

  3. Modeli eğmek için verileri hazırlayın ve eğitim ve test kümelerine ayırın. (Bu kılavuzda verileri bölmek için seçenekler açıklanmaktadır.)

  4. Spark Işbirliğiyle filtreleme modelini verilere uydurun.

  5. Derecelendirme ve derecelendirme ölçümlerini kullanarak modelin kalitesini değerlendirin. (Bu kılavuz , öneren üzerinde değerlendirebileceğiniz ölçümler hakkında ayrıntılı bilgi sağlar.)

  6. kullanıcı başına en iyi 10 öneriyi önceden hesaplayın ve Azure Cosmos DB önbellek olarak depolayın.

  7. apı 'yi kapsayıcıya eklemek ve dağıtmak için Azure Machine Learning apı 'leri kullanarak aks 'e bir apı hizmeti dağıtın.

  8. Arka uç hizmeti bir kullanıcıdan bir istek aldığında, ilk 10 öneriyi almak ve bunları kullanıcıya göstermek için AKS 'de barındırılan öneriler API 'sini çağırın.

Mimari

Bu mimari aşağıdaki bileşenlerden oluşur:

Azure Databricks. Databricks, bir Spark kümesinde giriş verilerini hazırlamak ve öneren modelini eğitmek için kullanılan bir geliştirme ortamıdır. Azure Databricks Ayrıca, herhangi bir veri işleme veya makine öğrenimi görevi için not defterlerinde çalıştırmak ve işbirliği yapmak üzere etkileşimli bir çalışma alanı sağlar.

Azure Kubernetes hizmeti (aks). AKS, bir Kubernetes kümesinde makine öğrenimi model hizmeti API 'sini dağıtmak ve üzerinde işlem yapmak için kullanılır. AKS, işleme gereksinimlerinizi, kimlik ve erişim yönetimini, günlüğe kaydetmeyi ve sistem durumunu izlemeyi karşılayan ölçeklenebilirlik sağlayan Kapsayıcılı modeli barındırır.

Azure Cosmos DB. Cosmos DB, her kullanıcı için önerilen en iyi 10 filmleri depolamak için kullanılan küresel olarak dağıtılmış bir veritabanı hizmetidir. Azure Cosmos DB, belirli bir kullanıcı için önerilen en iyi öğeleri okumak üzere düşük gecikme süresi (99. yüzdebirlik) sağladığından bu senaryoya uygun hale gelir.

Azure Machine Learning. Bu hizmet, makine öğrenimi modellerini izlemek ve yönetmek için kullanılır ve bu modelleri, ölçeklenebilir bir AKS ortamına paketleyin ve dağıtır.

Microsoft Recommenders. Bu açık kaynaklı depo, kullanıcıların bir öneren sistemini oluşturma, değerlendirme ve kullanıma almaya başlamanıza yardımcı olan yardımcı program kodunu ve örneklerini içerir.

Performansla ilgili önemli noktalar

Öneriler, genellikle bir kullanıcının sitenizde yaptığı isteğin kritik yoluna düştiğinden, gerçek zamanlı önerilerin performansı birincil bir noktadır.

aks ve Azure Cosmos DB birleşimi, bu mimarinin, en az ek yük ile orta ölçekli bir iş yüküne yönelik öneriler sağlamak için iyi bir başlangıç noktası sağlamasını sağlar. 200 eşzamanlı kullanıcı içeren bir yük testi kapsamında, bu mimari yaklaşık 60 MS hakkında bir ortalama gecikme süresi ve saniye başına 180 dakikalık bir işlem performansı sağlar. yük testi, varsayılan dağıtım yapılandırmasında (12 vcpu ve 42 GB bellek içeren bir 3x D3 v2 aks kümesi ve Azure Cosmos DB için sağlanan saniyede 11.000 istek birimi (ru) ) için çalıştırıldı.

performans Graph

aktarım hızı Graph

Azure Cosmos DB, kendi anahtar genel dağıtımı ve uygulamanızın sahip olduğu herhangi bir veritabanı gereksinimini karşıladığı için önerilir. biraz daha hızlı gecikmede, aramalara yönelik Azure Cosmos DB yerine redin için Azure önbelleği kullanmayı göz önünde bulundurun. Redsıs için Azure önbelleği, arka uç depolarındaki verileri yüksek oranda kullanan sistemlerin performansını iyileştirebilir.

Ölçeklenebilirlik konusunda dikkat edilmesi gerekenler

Spark kullanmayı planlamıyorsanız veya dağıtıma ihtiyacınız olmayan daha küçük bir iş yükünüz varsa, Azure Databricks yerine veri bilimi sanal makinesi (dsvm) kullanmayı göz önünde bulundurun. DSVM, Machine Learning ve veri bilimi için derin öğrenme çerçeveleri ve araçları olan bir Azure sanal makinedir. Azure Databricks olduğu gibi, bir DSVM 'de oluşturduğunuz herhangi bir model, Azure Machine Learning aracılığıyla AKS 'de hizmet olarak etkinleştirilebilir.

Eğitim sırasında Azure Databricks daha büyük bir sabit boyutlu Spark kümesi sağlayın veya Otomatik ölçeklendirmeyiyapılandırın. Otomatik ölçeklendirme etkinleştirildiğinde, Databricks kümenizdeki yükü izler ve gerektiğinde ölçeği artırır ve azaltmalar. 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.

AKS kümesini performans ve verimlilik gereksinimlerinizi karşılayacak şekilde ölçeklendirin. Kümeden tamamen yararlanmak ve kümenin düğümlerini , hizmetinizin talebine uyacak şekilde ölçeklendirmek için, düğüm sayısının ölçeğini ölçeklendirin. Ayrıca AKS kümesinde otomatik ölçeklendirmeyi ayarlayabilirsiniz, bkz. bir modeli Azure Kubernetes hizmet kümesine dağıtma.

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

Maliyetle ilgili konular

Bu senaryodaki maliyetin ana sürücüleri şunlardır:

  • Eğitim için gereken Azure Databricks kümesi boyutu.
  • Performans gereksinimlerinizi karşılamak için AKS kümesi boyutu gereklidir.
  • Azure Cosmos DB RUs, performans gereksinimlerinizi karşılayacak şekilde sağlandı.

Azure Databricks maliyetlerini, daha az sıklıkta yeniden eğitileyerek ve kullanımda olmadığında Spark kümesini kapatarak yönetin. aks ve Azure Cosmos DB maliyetleri, siteniz için gereken işleme ve performansa bağlıdır ve sitenizin trafik hacmine bağlı olarak ölçeği ve ölçeği azaltır.

Çözümü dağıtma

Bu mimariyi dağıtmak için Kurulum belgesindeAzure Databricks yönergeleri izleyin. Kısaca yönergeler şunları gerektirir:

  1. Azure Databricks çalışma alanıoluşturun.

  2. Azure Databricks ' de aşağıdaki yapılandırmaya sahip yeni bir küme oluşturun:

    • Küme modu: Standart
    • Databricks Runtime sürüm: 4,3 (Apache Spark 2.3.1, Scala 2,11 dahil)
    • Python sürümü: 3
    • Sürücü türü: Standard_DS3_v2
    • Çalışan türü: Standard_DS3_v2 (gerekli olan en az ve en fazla)
    • Otomatik sonlandırma: (gerektiği şekilde)
    • Spark yapılandırması: (gerekli olduğu gibi)
    • Ortam değişkenleri: (gerektiği şekilde)
  3. Azure Databricks çalışma alanıiçinde bir kişisel erişim belirteci oluşturun. Ayrıntılar için Azure Databricks kimlik doğrulama belgelerine bakın.

  4. Microsoft Recommenders deposunu komut dosyalarını yürütebileceğiniz bir ortama (örneğin, Yerel bilgisayarınız) kopyalayın.

  5. Azure Databricks ilgili kitaplıkları yüklemek için hızlı yükleme kurulum yönergelerini izleyin.

  6. Azure Databricks işlemleştirme için hazırlamaküzere hızlı yükleme kurulum yönergelerini izleyin.

  7. ALS film Operationalization Not defterini çalışma alanınıza aktarın. Azure Databricks çalışma alanınızda oturum açtıktan sonra şunları yapın:

    a. Çalışma alanının sol tarafındaki giriş ' e tıklayın.

    b. Giriş dizininizde boşluk ' a sağ tıklayın. İçeri aktar'ı seçin.

    c. URL' yi seçin ve aşağıdakini metin alanına yapıştırın:

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

  8. Azure Databricks içinde Not defterini açın ve yapılandırılan kümeyi ekleyin.

  9. Belirli bir kullanıcı için en iyi 10 film önerilerini sağlayan bir öneri API 'SI oluşturmak için gereken Azure kaynaklarını oluşturmak üzere not defterini çalıştırın.

Ayrıca, zamanlanmış toplu Puanlama süreçleriniyürütmek için Spark ve Azure Databricks kullanan bir başvuru mimarisi geliştirdik. Düzenli olarak yeni öneriler oluşturmaya yönelik önerilen bir yaklaşımı anlamak için bkz. başvuru mimarisi.