Azure'da Python toplu Puanlama modelleriBatch scoring of Python models on Azure

Bu başvuru mimarisi, Azure Batch AI'ı kullanarak paralel bir zamanlamaya göre çok sayıda model Puanlama batch için ölçeklenebilir bir çözüm oluşturma işlemi gösterilmektedir.This reference architecture shows how to build a scalable solution for batch scoring many models on a schedule in parallel using Azure Batch AI. Çözüm, bir şablon olarak kullanılabilir ve farklı sorunları genelleştirebilirsiniz.The solution can be used as a template and can generalize to different problems.

Bu mimari için bir başvuru uygulaması kullanılabilir GitHub.A reference implementation for this architecture is available on GitHub.

Azure'da Python toplu Puanlama modelleri

Senaryo: Bu çözüm, burada her cihazın sensör okumaları sürekli olarak gönderir, bir IOT ayarı cihazları çok fazla sayıda işlemi izler.Scenario: This solution monitors the operation of a large number of devices in an IoT setting where each device sends sensor readings continuously. Her cihaz, anomali algılama önceden eğitilmiş tahmin etmek için kullanılacak olup bir önceden tanımlanmış bir zaman aralığı içinde toplanır, ölçüler, bir dizi için bir anomali veya karşılık modellerini varsayılır.Each device is assumed to have pre-trained anomaly detection models that need to be used to predict whether a series of measurements, that are aggregated over a predefined time interval, correspond to an anomaly or not. Gerçek dünya senaryolarında bu şekilde filtrelenebilen ve eğitim veya gerçek zamanlı Puanlama kullanılan önce toplanan gereken sensör okumaları akışı olabilir.In real-world scenarios, this could be a stream of sensor readings that need to be filtered and aggregated before being used in training or real-time scoring. Kolaylık olması için çözüm Puanlama işleri yürütürken aynı veri dosyasını kullanır.For simplicity, the solution uses the same data file when executing scoring jobs.

MimariArchitecture

Bu mimari aşağıdaki bileşenlerden oluşur:This architecture consists of the following components:

Azure Event Hubs'a.Azure Event Hubs. Bu ileti alma hizmeti olay iletileri saniye başına milyonlarca alabilen.This message ingestion service can ingest millions of event messages per second. Bu mimaride, algılayıcılar, olay hub'ına veri akışı gönderin.In this architecture, sensors send a stream of data to the event hub.

Azure Stream Analytics.Azure Stream Analytics. Olay işleme motorudur.An event-processing engine. Bir Stream Analytics işi, verileri olay hub'ından akışları ve akış işleme gerçekleştirir okur.A Stream Analytics job reads the data streams from the event hub and performs stream processing.

Azure Batch AI.Azure Batch AI. Bu dağıtılmış bilgi işlem altyapısı eğitmek ve makine öğrenimi ve yapay ZEKA modellerini ölçeğe uygun, Azure'da test etmek için kullanılır.This distributed computing engine is used to train and test machine learning and AI models at scale in Azure. Batch AI, Batch AI kümedeki her düğüme bir Puanlama işi belirli bir algılayıcı için çalıştığı bir otomatik ölçeklendirme seçeneği ile isteğe bağlı sanal makineleri oluşturur.Batch AI creates virtual machines on demand with an automatic scaling option, where each node in the Batch AI cluster runs a scoring job for a specific sensor. Puanlama Python [betik] python-script nerede ilgili sensör verilerini okuyan, tahminlerin oluşturur ve bunları Blob Depolama alanında depolar kümedeki her düğümde oluşturulan Docker kapsayıcıları içinde çalışır.The scoring Python script runs in Docker containers that are created on each node of the cluster, where it reads the relevant sensor data, generates predictions and stores them in Blob storage.

Azure Blob Depolama.Azure Blob Storage. BLOB kapsayıcıları, çıkış Öngörüler pretrained modelleri ve verileri depolamak için kullanılır.Blob containers are used to store the pretrained models, the data, and the output predictions. Modelleri, Blob depolama alanına yüklenir [oluşturma_resources.ipynb] create-resources dizüstü bilgisayar.The models are uploaded to Blob storage in the create_resources.ipynb notebook. Bunlar [bir sınıf SVM] one-class-svm modelleri, farklı cihazlar için farklı algılayıcı değerlerini temsil eden veriler üzerinde eğitilir.These one-class SVM models are trained on data that represents values of different sensors for different devices. Bu çözüm, veri değerleri, sabit bir zaman aralığı içinde toplanır varsayar.This solution assumes that the data values are aggregated over a fixed interval of time.

Azure Logic Apps.Azure Logic Apps. Bu çözüm, saatlik Batch AI işleri çalıştıran bir mantıksal uygulama oluşturur.This solution creates a Logic App that runs hourly Batch AI jobs. Logic Apps iş akışı çalışma zamanı ve çözüm için zamanlama oluşturmak için kolay bir yol sağlar.Logic Apps provides an easy way to create the runtime workflow and scheduling for the solution. Bir Python kullanarak Batch AI işleri gönderilen [betik] script bir Docker kapsayıcısı içinde de çalışır.The Batch AI jobs are submitted using a Python script that also runs in a Docker container.

Azure kapsayıcı kayıt defteri.Azure Container Registry. Docker görüntülerini Batch AI ve Logic Apps için kullanılır ve oluşturulan [oluşturma_resources.ipynb] create-resources Not Defteri, sonra da kapsayıcı kayıt defterine gönderilir.Docker images are used in both Batch AI and Logic Apps and are created in the create_resources.ipynb notebook, then pushed to Container Registry. Bu görüntüleri barındıran ve diğer Azure Hizmetleri aracılığıyla kapsayıcı örneği için kullanışlı bir yol sağlar — Logic Apps ve Batch AI bu çözümde.This provides a convenient way to host images and instantiate containers through other Azure services—Logic Apps and Batch AI in this solution.

Performansla ilgili önemli noktalarPerformance considerations

Standart Python modelleri için CPU iş yükünü işlemek yeterli olduğunu genellikle bağımlıdır.For standard Python models, it's generally accepted that CPUs are sufficient to handle the workload. Bu mimaride, CPU kullanılır.This architecture uses CPUs. Ancak için derin öğrenme iş yüklerinin, GPU'ları genellikle daha iyi performans gösterir CPU hatırı sayılır miktarda — CPU büyük bir küme genellikle karşılaştırılabilir performansı elde etmek için gereklidir.However, for deep learning workloads, GPUs generally outperform CPUs by a considerable amount—a sizeable cluster of CPUs is usually needed to get comparable performance.

Vm'leri vs Çekirdekte paralelleştirmekParallelizing across VMs vs cores

Toplu iş modunda işlemleri çok sayıda model Puanlama çalıştırırken, sanal makinelerde paralel hale işleri gerekir.When running scoring processes of many models in batch mode, the jobs need to be parallelized across VMs. İki yaklaşım mümkündür:Two approaches are possible:

  • Düşük maliyetli sanal makineleri kullanarak daha büyük bir küme oluşturun.Create a larger cluster using low-cost VMs.

  • Yüksek her kullanılabilir daha fazla çekirdeğe sahip sanal makineleri gerçekleştirme kullanarak daha küçük bir küme oluşturun.Create a smaller cluster using high performing VMs with more cores available on each.

Genel olarak, standart Python modellerini Puanlama ayrıntılı öğrenme modellerini Puanlama olarak olarak zorlu değil ve küçük bir küme çok sayıda kuyruğa alınmış modelleri verimli bir şekilde işleyebilir olması gerekir.In general, scoring of standard Python models is not as demanding as scoring of deep learning models, and a small cluster should be able to handle a large number of queued models efficiently. Veri kümesi boyutları artış küme düğümlerinin sayısını artırabilirsiniz.You can increase the number of cluster nodes as the dataset sizes increase.

Bu senaryoda kolaylık sağlamak için bir Puanlama görev içinde tek bir Batch AI işi gönderilir.For convenience in this scenario, one scoring task is submitted within a single Batch AI job. Ancak, aynı Batch AI işi içinde birden çok veri öbekleri puanlamak için daha verimli olabilir.However, it can be more efficient to score multiple data chunks within the same Batch AI job. Bu gibi durumlarda birden çok veri kümelerini okuyun ve bunları tek bir Batch AI iş yürütme sırasında için Puanlama betiği yürütmek için özel kod yazın.In those cases, write custom code to read in multiple datasets and execute the scoring script for those during a single Batch AI job execution.

Dosya sunucularıFile servers

Batch AI kullanırken, senaryonuz için gereken aktarım hızına bağlı olarak birden çok depolama seçeneği seçebilirsiniz.When using Batch AI, you can choose multiple storage options depending on the throughput needed for your scenario. Düşük aktarım hızı gereksinimleri olan iş yükleri için blob depolama kullanan yeterli olmalıdır.For workloads with low throughput requirements, using blob storage should be enough. Alternatif olarak, Batch AI'ı da destekler bir Batch AI dosya sunucusu, küme düğümlerinde için merkezi olarak erişilebilir depolama konumu sağlamak için otomatik olarak bağlanabilir bir yönetilen, tek düğümlü NFS işler.Alternatively, Batch AI also supports a Batch AI File Server, a managed, single-node NFS, which can be automatically mounted on cluster nodes to provide a centrally accessible storage location for jobs. Çoğu durumda, yalnızca bir dosya sunucusu bir çalışma alanında gereklidir ve farklı dizinlere, eğitim işleri için verileri ayırabilirsiniz.For most cases, only one file server is needed in a workspace, and you can separate data for your training jobs into different directories.

Tek düğümlü NFS iş yükleriniz için uygun değilse, Batch AI dahil olmak üzere diğer depolama seçeneklerinde destekler [Azure dosyaları] azure-files ve Gluster veya Lustre bir dosya sistemi gibi özel çözümler.If a single-node NFS isn't appropriate for your workloads, Batch AI supports other storage options, including Azure Files and custom solutions such as a Gluster or Lustre file system.

Yönetim değerlendirmeleriManagement considerations

Batch AI işleri izlemeMonitoring Batch AI jobs

Çalışan işlerin ilerlemesini izlemek önemlidir, ancak etkin düğümden oluşan bir küme arasında izlemek zor olabilir.It's important to monitor the progress of running jobs, but it can be a challenge to monitor across a cluster of active nodes. Küme durumunun genel bir fikir edinmek için şu adrese gidin Batch AI dikey [Azure portalı] portal kümedeki düğümlerinin durumunu denetlemek için.To get a sense of the overall state of the cluster, go to the Batch AI blade of the Azure Portal to inspect the state of the nodes in the cluster. Bir düğüm etkin değil ya da bir iş başarısız oldu, hata günlüklerini BLOB depolamaya kaydedilir ve ayrıca erişilebilen işleri Portal dikey penceresi.If a node is inactive or a job has failed, the error logs are saved to blob storage, and are also accessible in the Jobs blade of the portal.

Zengin izleme için günlükleri'ne bağlan Application Insights, ya da Batch AI kümesi ve kendi işlerinde durumu için yoklama için ayrı işlemler çalıştırılır.For richer monitoring, connect logs to Application Insights, or run separate processes to poll for the state of the Batch AI cluster and its jobs.

Batch AI günlüğe kaydetmeLogging in Batch AI

Batch AI, ilişkili Azure depolama hesabına tüm stdout/stderr günlüğe kaydeder.Batch AI logs all stdout/stderr to the associated Azure storage account. Günlük dosyalarının gezinmeyi kolaylaştırmak için bir depolama gezinme gibi aracını Azure Depolama Gezgini.For easy navigation of the log files, use a storage navigation tool such as Azure Storage Explorer.

Bu başvuru mimarisini dağıtmak, daha basit bir günlüğe kaydetme sistemi ayarlamak için seçeneğiniz vardır.When you deploy this reference architecture, you have the option to set up a simpler logging system. Bu seçenekle, aşağıda gösterildiği gibi blob kapsayıcısını aynı dizine farklı işleri arasında tüm günlükleri kaydedilir.With this option, all the logs across the different jobs are saved to the same directory in your blob container as shown below. Bu günlükler, işlem iyileştirmek nasıl daha iyi bir fikir böylece ne her bir iş ve her bir görüntü için işlemek için sürdüğünü izlemek için kullanın.Use these logs to monitor how long it takes for each job and each image to process, so you have a better sense of how to optimize the process.

Azure Depolama Gezgini

Maliyetle ilgili konularCost considerations

Bu başvuru mimarisinde kullanılan en pahalı işlem kaynaklarını bileşenlerdir.The most expensive components used in this reference architecture are the compute resources.

Batch AI kümesi boyutu kuyruğundaki bağlı olarak yukarı ve aşağı ölçeklendirir.The Batch AI cluster size scales up and down depending on the jobs in the queue. Etkinleştirebilirsiniz [otomatik ölçeklendirme] automatic-scaling iki yoldan biriyle Batch AI ile.You can enable automatic scaling with Batch AI in one of two ways. Bunu programlı parçası olan .env dosyasında yapılandırılabilir yapabileceğiniz dağıtım adımları, veya Küme oluşturulduktan sonra doğrudan portal içinde ölçeklendirme formülü değiştirebilirsiniz.You can do so programmatically, which can be configured in the .env file that is part of the deployment steps, or you can change the scale formula directly in the portal after the cluster is created.

Sıfır düğümden oluşan bir kümede varsayılan durumu (minimum), bu nedenle hemen işleme gerektirmeyen iş için otomatik ölçeklendirme formülü yapılandırın.For work that doesn't require immediate processing, configure the automatic scaling formula so the default state (minimum) is a cluster of zero nodes. Bu yapılandırma ile küme sıfır düğümleri ile başlar ve yalnızca, işleri kuyrukta algıladığında ölçeklendirilebilir.With this configuration, the cluster starts with zero nodes and only scales up when it detects jobs in the queue. Bu ayar, toplu işlem Puanlama yalnızca işlem günde birkaç kez durumda veya daha az önemli maliyet tasarrufları sağlar.If the batch scoring process only happens a few times a day or less, this setting enables significant cost savings.

Otomatik ölçeklendirme birbirine çok yakın gerçekleşen toplu işlemler için uygun olmayabilir.Automatic scaling may not be appropriate for batch jobs that happen too close to each other. Yukarı ve başlatma ve kapalı küme için gereken süreyi de bir maliyet tabi şekilde, bir batch iş yükü önceki işlemi bittikten sonra yalnızca birkaç dakika ile başlıyorsa, daha düşük işleri arasında çalışan küme tutmak maliyetli olabilir.The time that it takes for a cluster to spin up and spin down also incur a cost, so if a batch workload begins only a few minutes after the previous job ends, it might be more cost effective to keep the cluster running between jobs. Bağlı olup olmadığını Puanlama işlemleri yüksek sıklıkta (örneğin, her saat) veya daha az sıklıkta çalışacak şekilde zamanlanan üzerinde (örneğin, ayda bir kez).That depends on whether scoring processes are scheduled to run at a high frequency (every hour, for example), or less frequently (once a month, for example).

Çözümü dağıtmaDeploy the solution

Bu mimarinin başvuru uygulaması edinilebilir GitHub.The reference implementation of this architecture is available on GitHub. Batch AI kullanarak işlemi paralel olarak çok sayıda model Puanlama için ölçeklenebilir bir çözüm oluşturmak için kurulum adımlarını izleyin.Follow the setup steps there to build a scalable solution for scoring many models in parallel using Batch AI.