Satış tahmini için R modelleriyle toplu puanlama

Azure Batch
Azure Blob Storage
Azure Container Instances
Azure Logic Apps
Azure Machine Learning

Bu başvuru mimarisi, Azure Batch kullanarak R modelleriyle toplu puanlama gerçekleştirmeyi gösterir. Azure Batch, doğası gereği paralel iş yükleriyle iyi çalışır ve iş zamanlaması ve işlem yönetimi içerir. Toplu çıkarım (puanlama), müşterileri segmentlere ayırmak, satış tahmini yapmak, müşteri davranışlarını tahmin etmek, bakımı tahmin etmek veya siber güvenliği geliştirmek için yaygın olarak kullanılır.

Azure'da R modelleriyle toplu puanlama işlemini gösteren mimari diyagramı.

Bu mimarinin bir Visio dosyasını indirin.

İş Akışı

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

Azure Batch , tahmin oluşturma işlerini bir sanal makine kümesinde paralel olarak çalıştırır. R'de uygulanan önceden eğitilmiş makine öğrenmesi modelleri kullanılarak tahminler yapılır. Azure Batch, kümeye gönderilen iş sayısına göre VM sayısını otomatik olarak ölçeklendirebilir. Her düğümde bir R betiği docker kapsayıcısı içinde çalıştırılarak verileri puanlar ve tahminler oluşturur.

Azure Blob Depolama giriş verilerini, önceden eğitilmiş makine öğrenmesi modellerini ve tahmin sonuçlarını depolar. Bu iş yükünün gerektirdiği performans için uygun maliyetli depolama alanı sunar.

Azure Container Instances isteğe bağlı olarak sunucusuz işlem sağlar. Bu durumda, tahminleri oluşturan Batch işlerini tetikleyen bir zamanlamaya göre bir kapsayıcı örneği dağıtılır. Batch işleri, doAzureParallel paketi kullanılarak bir R betiğinden tetiklenir. İşler tamamlandıktan sonra kapsayıcı örneği otomatik olarak kapatılır.

Azure Logic Apps , kapsayıcı örneklerini bir zamanlamaya göre dağıtarak iş akışının tamamını tetikler. Logic Apps'teki Azure Container Instances bağlayıcısı, bir örneğin bir dizi tetikleyici olayı üzerine dağıtılmasını sağlar.

Bileşenler

Çözüm ayrıntıları

Aşağıdaki senaryo perakende satış tahminini temel alsa da mimarisi, R modellerini kullanarak daha büyük ölçekte tahmin oluşturulmasını gerektiren tüm senaryolar için genelleştirilebilir. Bu mimari için bir başvuru uygulaması GitHub'da kullanılabilir.

Olası kullanım örnekleri

Bir süpermarket zincirinin önümüzdeki çeyrekte ürünlerin satışını tahmin etmesi gerekiyor. Tahmin, şirketin tedarik zincirini daha iyi yönetmesini ve mağazalarının her birinde ürünlere olan talebi karşılayabilmesini sağlar. Şirket, önceki haftadan yeni satış verileri kullanıma sunuldukça ve gelecek üç aylık dönem için ürün pazarlama stratejisi ayarlandıkça tahminlerini her hafta güncelleştirir. Bireysel satış tahminlerinin belirsizliğini tahmin etmek için nicel tahminler oluşturulur.

İşleme aşağıdaki adımları içerir:

  1. Azure mantıksal uygulaması, tahmin oluşturma işlemini haftada bir tetikler.

  2. Mantıksal uygulama, Batch kümesindeki puanlama işlerini tetikleyen zamanlayıcı Docker kapsayıcısını çalıştıran bir Azure Container Instance başlatır.

  3. Puanlama işleri Batch kümesinin düğümleri arasında paralel olarak çalışır. Her düğüm:

    1. Çalışan Docker görüntüsünü çeker ve bir kapsayıcı başlatır.

    2. Giriş verilerini ve önceden eğitilmiş R modellerini Azure Blob depolamadan okur.

    3. Tahmin oluşturmak için verileri puanlar.

    4. Tahmin sonuçlarını blob depolamaya yazar.

Aşağıdaki şekilde, bir mağazada dört ürün (SKU) için tahmin edilen satışlar gösterilmektedir. Siyah çizgi satış geçmişidir, kesikli çizgi ortanca (q50) tahminidir, pembe bant 25. ve 75. yüzdebirlik dilimleri temsil eder ve mavi bant 50. ve 95. yüzdebirlik dilimleri temsil eder.

R modelleriyle toplu puanlamadan satış tahminleri.

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Performans

Kapsayıcılı dağıtım

Bu mimariyle, tüm R betikleri Docker kapsayıcıları içinde çalıştırılır. Kapsayıcıları kullanmak, betiklerin her seferinde aynı R sürümü ve paket sürümleriyle tutarlı bir ortamda çalışmasını sağlar. Her birinin farklı bir R paketi bağımlılık kümesi olduğundan zamanlayıcı ve çalışan kapsayıcıları için ayrı Docker görüntüleri kullanılır.

Azure Container Instances, zamanlayıcı kapsayıcısını çalıştırmak için sunucusuz bir ortam sağlar. Zamanlayıcı kapsayıcısı, Azure Batch kümesinde çalışan tek tek puanlama işlerini tetikleyen bir R betiği çalıştırır.

Batch kümesinin her düğümü, puanlama betiğini yürüten çalışan kapsayıcısını çalıştırır.

İş yükünü paralelleştirme

R modelleriyle verileri toplu puanlarken, iş yükünü paralelleştirmeyi göz önünde bulundurun. Puanlama işleminin küme düğümleri arasında dağıtılabilmesi için giriş verilerinin bölümlenmesi gerekir. İş yükünüzü dağıtmak için en iyi seçeneği bulmak için farklı yaklaşımları deneyin. Büyük/küçük harf temelinde şunları göz önünde bulundurun:

  • Tek bir düğümün belleğinde ne kadar veri yüklenip işlenebileceği.
  • Her toplu işi başlatmanın yükü.
  • R modellerini yükleme yükü.

Bu örnekte kullanılan senaryoda model nesneleri büyüktür ve tek tek ürünler için tahmin oluşturmak yalnızca birkaç saniye sürer. Bu nedenle, ürünleri gruplandırabilir ve düğüm başına tek bir Batch işi yürütebilirsiniz. Her işin içindeki bir döngü, ürünler için sırayla tahminler oluşturur. Bu yöntem, bu iş yükünü paralel hale getirmek için en verimli yoldur. Çok sayıda daha küçük Batch işi başlatma ve R modellerini tekrar tekrar yükleme yükünden kaçınır.

Alternatif bir yaklaşım, ürün başına bir Batch işi tetiklemedir. Azure Batch otomatik olarak bir iş kuyruğu oluşturur ve düğümler kullanılabilir duruma geldikçe bunları kümede yürütülmek üzere gönderir. İş sayısına bağlı olarak kümedeki düğüm sayısını ayarlamak için otomatik ölçeklendirmeyi kullanın. Bu yaklaşım, her puanlama işleminin tamamlanması görece uzun sürüyorsa kullanışlıdır ve bu da işleri başlatma ve model nesnelerini yeniden yükleme yükünü ortadan kaldırmayı sağlar. Bu yaklaşımı uygulamak da daha kolaydır ve toplam iş yükünün boyutu önceden bilinmediyse dikkate alınması gereken önemli bir nokta olan otomatik ölçeklendirmeyi kullanma esnekliği sağlar.

Azure Batch işlerini izleme

Azure portalındaki Batch hesabının İşler bölmesinden Batch işlerini izleyin ve sonlandırın. Havuzlar bölmesinden tek tek düğümlerin durumu da dahil olmak üzere toplu iş kümesini izleyin.

doAzureParallel ile günlüğe kaydetme

doAzureParallel paketi, Azure Batch'te gönderilen her iş için tüm stdout/stderr günlüklerini otomatik olarak toplar. Bu günlükler, kurulum sırasında oluşturulan depolama hesabında bulunabilir. Bunları görüntülemek için Azure Depolama Gezgini veya Azure portalı gibi bir depolama gezinti aracı kullanın.

Geliştirme sırasında Batch işlerinde hızla hata ayıklamak için yerel R oturumunuzda günlükleri görüntüleyin. Daha fazla bilgi için bkz. Eğitim çalıştırmalarını yapılandırma ve gönderme kullanma.

Maliyet iyileştirme

Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.

Bu başvuru mimarisinde kullanılan işlem kaynakları en yüksek maliyetli bileşenlerdir. Bu senaryoda, iş her tetiklendiğinde sabit boyutlu bir küme oluşturulur ve iş tamamlandıktan sonra kapatılır. Maliyet yalnızca küme düğümleri başlatılırken, çalıştırılırken veya kapatılırken tahakkuk eder. Bu yaklaşım, tahminleri oluşturmak için gereken işlem kaynaklarının işten işe göre sabit kaldığı bir senaryo için uygundur.

İşi tamamlamak için gereken işlem miktarının önceden bilinmediği senaryolarda, otomatik ölçeklendirmeyi kullanmak daha uygun olabilir. Bu yaklaşımla, işin boyutuna bağlı olarak kümenin boyutu artırılır veya küçültülür. Azure Batch, doAzureParallel API'sini kullanarak kümeyi tanımlarken ayarlayabileceğiniz bir dizi otomatik ölçeklendirme formülünü destekler.

Bazı senaryolarda, işler arasındaki süre kümeyi kapatmak ve başlatmak için çok kısa olabilir. Bu gibi durumlarda, uygunsa kümenin işler arasında çalışmasını sağlayın.

Azure Batch ve doAzureParallel, düşük öncelikli VM'lerin kullanımını destekler. Bu VM'ler önemli bir indirimle birlikte gelir ancak diğer yüksek öncelikli iş yükleri tarafından uygun hale gelme riski vardır. Bu nedenle, kritik üretim iş yükleri için düşük öncelikli VM'lerin kullanılması önerilmez. Ancak bunlar deneysel veya geliştirme iş yükleri için yararlıdır.

Bu senaryoyu dağıtın

Bu başvuru mimarisini dağıtmak için GitHub deposunda açıklanan adımları izleyin.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.

Sonraki adımlar