Azure'da Python makine öğrenimi, toplu Puanlama modelleriBatch scoring of Python machine learning models on Azure

Bu başvuru mimarisi, Azure Machine Learning hizmetini 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 Machine Learning Service. Çö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 tahmin etmek için kullanılması gereken kullanan anomali algılama modelleri ile ilişkili olduğu varsayılır bir önceden tanımlanmış bir zaman aralığı içinde toplanır, ölçüler, bir dizi için bir anomali olup olmadığını karşılık.Each device is assumed to be associated with pretrained 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 bu çözüm Puanlama işleri yürütürken aynı veri dosyasını kullanır.For simplicity, this solution uses the same data file when executing scoring jobs.

Bu başvuru mimarisi, bir zamanlamaya göre tetiklenen iş yükleri için tasarlanmıştır.This reference architecture is designed for workloads that are triggered on a schedule. İşlem, aşağıdaki adımları içerir:Processing involves the following steps:

  1. Sensör okumaları alımı için Azure Event Hubs'a gönderme.Send sensor readings for ingestion to Azure Event Hubs.
  2. Akış işleme gerçekleştirmek ve ham veri depolayın.Perform stream processing and store the raw data.
  3. İş sürüyor başlamaya hazır olan Machine Learning kümesi verileri gönderin.Send the data to a Machine Learning cluster that is ready to start taking work. Kümedeki her düğüm, belirli bir algılayıcı için bir Puanlama işi çalıştırır.Each node in the cluster runs a scoring job for a specific sensor.
  4. Puanlama işleri Machine Learning Python betiklerini kullanarak paralel olarak çalışan Puanlama, işlem hattı.Execute the scoring pipeline, which runs the scoring jobs in parallel using Machine Learning Python scripts. İşlem hattı oluşturulur, yayımlanan ve önceden tanımlı bir zaman aralığı üzerinde çalışmak üzere zamanlanmış.The pipeline is created, published, and scheduled to run on a predefined interval of time.
  5. Tahminler üretmek ve daha sonraki kullanımların için Blob Depolama alanında depolayabilirsiniz.Generate predictions and store them in Blob storage for later consumption.

MimariArchitecture

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

Azure Event Hubs.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 SQL veritabanı.Azure SQL Database. Sensör okumaları verileri SQL veritabanı'na yüklenir.Data from the sensor readings is loaded into SQL Database. SQL (tablolu ve yapılandırılmış) işlenen, akış verileri depolamak için bir tanıdık yoludur, ancak diğer veri depolarına kullanılabilir.SQL is a familiar way to store the processed, streamed data (which is tabular and structured), but other data stores can be used.

Azure Machine Learning hizmeti.Azure Machine Learning Service. Machine Learning, eğitim, Puanlama, dağıtma ve uygun ölçekte makine öğrenimi modelleri yönetmek için bir bulut hizmetidir.Machine Learning is a cloud service for training, scoring, deploying, and managing machine learning models at scale. Machine Learning, toplu Puanlama bağlamında, 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ı bir sanal makine kümesi oluşturur.In the context of batch scoring, Machine Learning creates a cluster of virtual machines on demand with an automatic scaling option, where each node in the cluster runs a scoring job for a specific sensor. Puanlama işi kuyruğa alındı ve makine öğrenimi tarafından yönetilen Python betiğini adımları olarak paralel olarak yürütülür.The scoring jobs are executed in parallel as Python-script steps that are queued and managed by Machine Learning. Bu adımları oluşturulur, yayımlanan ve önceden tanımlı bir zaman aralığı üzerinde çalışacak şekilde zamanlanan bir Machine Learning işlem hattı'nın bir parçasıdır.These steps are part of a Machine Learning pipeline that is created, published, and scheduled to run on a predefined interval of time.

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 [01_create_resources.ipynb] create-resources dizüstü bilgisayar.The models are uploaded to Blob storage in the 01_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 kapsayıcı kayıt defteri.Azure Container Registry. Puanlama Python [betik] pyscript 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.

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.

Sanal makinelerde çekirdekler karşı paralelleştirmekParallelizing across VMs versus 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 makine öğrenimi işlem hattı adım gönderilir.For convenience in this scenario, one scoring task is submitted within a single Machine Learning pipeline step. Ancak, aynı işlem hattı adımın 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 pipeline step. Bu gibi durumlarda birden çok veri kümelerini okuma ve bu tek adımlı yürütme sırasında için Puanlama betiğine 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-step execution.

Yönetim değerlendirmeleriManagement considerations

  • İşleri izleme.Monitor 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ümedeki düğümlerinin durumunu incelemek için kullanın [Azure portalı] portal yönetmek için machine learning çalışma alanı.To inspect the state of the nodes in the cluster, use the Azure Portal to manage the machine learning workspace. Bir düğüm etkin değil ya da bir iş başarısız oldu, hata günlüklerini BLOB depolamaya kaydedilir ve işlem hatlarını bölümünde de erişilebilir.If a node is inactive or a job has failed, the error logs are saved to blob storage, and are also accessible in the Pipelines section. Zengin izleme için günlükleri'ne bağlan Application Insights, ya da küme 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 cluster and its jobs.
  • Günlüğe kaydetme.Logging. Machine Learning hizmeti tüm stdout/stderr ilişkili Azure depolama hesabına kaydeder.Machine Learning Service logs all stdout/stderr to the associated Azure Storage account. Kolayca günlük dosyalarını görüntülemek için bir depolama gezinme gibi aracını Azure Depolama Gezgini.To easily view the log files, use a storage navigation tool such as Azure Storage Explorer.

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. İşlem kümesi boyutu kuyruğundaki bağlı olarak yukarı ve aşağı ölçeklendirir.The compute cluster size scales up and down depending on the jobs in the queue. Otomatik program aracılığıyla Python SDK'sı compute'nın sağlama yapılandırması değiştirerek ölçeklendirmeyi etkinleştirebilirsiniz.Enable automatic scaling programmatically through the Python SDK by modifying the compute’s provisioning configuration. Veya [Azure CLI] cli kümesinin otomatik ölçeklendirme parametrelerini ayarlamak için.Or use the Azure CLI to set the automatic scaling parameters of the cluster.

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 günde yalnızca birkaç kez durumda veya daha az önemli maliyet tasarrufları sağlar.If the batch scoring process happens only 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 maliyeti doğurur için 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 incurs 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).

DağıtımDeployment

Bu başvuru mimarisini dağıtmak için açıklanan adımları izleyin. GitHub deposunu.To deploy this reference architecture, follow the steps described in the GitHub repo.