Amazon SageMaker ile binlerce makine öğrenimi modelinin eğitimini ve çıkarımını ölçeklendirin | Amazon Web Hizmetleri

Amazon SageMaker ile binlerce makine öğrenimi modelinin eğitimini ve çıkarımını ölçeklendirin | Amazon Web Hizmetleri

Makine öğrenimi (ML) çok çeşitli sektörlerde giderek daha yaygın hale geldikçe, kuruluşlar müşterilerinin farklı ihtiyaçlarını karşılamak için çok sayıda makine öğrenimi modeli eğitme ve sunma ihtiyacı duyuyor. Özellikle hizmet olarak yazılım (SaaS) sağlayıcıları için, binlerce modeli verimli ve uygun maliyetli bir şekilde eğitme ve hizmet verme yeteneği, hızla gelişen bir pazarda rekabet gücünü korumak için çok önemlidir.

Binlerce modeli eğitmek ve bunlara hizmet vermek, sağlam ve ölçeklenebilir bir altyapı gerektirir. Amazon Adaçayı Yapıcı yardım edebilir. SageMaker, geliştiricilerin ve veri bilimcilerin makine öğrenimi modellerini hızlı bir şekilde oluşturmasına, eğitmesine ve dağıtmasına olanak tanırken AWS Bulut altyapısını kullanmanın maliyet tasarrufu sağlayan avantajlarını sunan, tam olarak yönetilen bir platformdur.

Bu yazıda, aşağıdakiler dahil SageMaker özelliklerini nasıl kullanabileceğinizi keşfediyoruz: Amazon SageMaker İşlemeBinlerce modeli uygun maliyetli bir şekilde eğitmek ve hizmet vermek için SageMaker eğitim işleri ve SageMaker çoklu model uç noktaları (MME'ler). Açıklanan çözüme başlamak için, aşağıdaki adreste bulunan not defterine başvurabilirsiniz. GitHub.

Kullanım örneği: Enerji tahmini

Bu gönderi için, müşterilerinin enerji tüketimlerini izleyerek ve tahminler sağlayarak daha sürdürülebilir olmalarına yardımcı olan bir ISV şirketi rolünü üstleniyoruz. Şirketimizin, enerji kullanımlarını daha iyi anlamak ve çevresel etkilerini nasıl azaltacakları konusunda bilinçli kararlar vermek isteyen 1,000 müşterisi var. Bunu yapmak için sentetik bir veri kümesi kullanıyoruz ve buna dayalı bir makine öğrenimi modeli eğitiyoruz. Peygamber her müşteri için enerji tüketimi tahminleri yapmak. SageMaker ile bu 1,000 modeli verimli bir şekilde eğitebilir ve sunarak müşterilerimize enerji kullanımlarına ilişkin doğru ve eyleme geçirilebilir içgörüler sağlayabiliriz.

Oluşturulan veri setinde üç özellik vardır:

  • Müşteri Kimliği – Bu, her müşteri için 0-999 arasında değişen bir tamsayı tanımlayıcıdır.
  • zaman damgası – Bu, enerji tüketiminin ölçüldüğü zamanı gösteren bir tarih/saat değeridir. Zaman damgaları, kodda belirtilen başlangıç ​​ve bitiş tarihleri ​​arasında rastgele oluşturulur.
  • tüketim – Bu, rastgele bir birimde ölçülen, enerji tüketimini gösteren bir kayan değerdir. Tüketim değerleri, sinüzoidal mevsimsellik ile 0–1,000 arasında rastgele oluşturulur.

Çözüme genel bakış

Binlerce makine öğrenimi modelini verimli bir şekilde eğitmek ve sunmak için aşağıdaki SageMaker özelliklerini kullanabiliriz:

  • SageMaker İşleme – SageMaker Processing, girdi verileriniz üzerinde veri işleme ve model değerlendirme görevlerini gerçekleştirmenizi sağlayan, tamamen yönetilen bir veri hazırlama hizmetidir. SageMaker Processing'i, ham verileri eğitim ve çıkarım için gereken formata dönüştürmek ve modellerinizin toplu ve çevrimiçi değerlendirmelerini çalıştırmak için kullanabilirsiniz.
  • SageMaker eğitim işleri – Modelleri çeşitli algoritmalar ve girdi veri türleri üzerinde eğitmek ve eğitim için gereken bilgi işlem kaynaklarını belirlemek için SageMaker eğitim işlerini kullanabilirsiniz.
  • SageMaker MME'leri – Çok modelli uç noktalar, birden çok modeli tek bir uç noktada barındırmanıza olanak tanır, bu da tek bir API kullanarak birden çok modelden tahmin sunmayı kolaylaştırır. SageMaker MME'leri, birden fazla modelden tahminler sunmak için gereken uç nokta sayısını azaltarak zamandan ve kaynaklardan tasarruf sağlayabilir. MME'ler, hem CPU hem de GPU destekli modellerin barındırılmasını destekler. Senaryomuzda 1,000 model kullandığımızı unutmayın, ancak bu, hizmetin kendisinin bir sınırlaması değildir.

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

açıklanan süreci görüntüleyen mimari

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

  1. Verileri önceden işlemek ve müşteri başına tek bir CSV dosyası oluşturmak ve bunu depolamak için SageMaker Processing kullanıyoruz. Amazon Basit Depolama Hizmeti (Amazon S3).
  2. SageMaker eğitim işi, SageMaker İşleme işinin çıktısını okumak ve onu eğitim örneklerine sırayla dağıtmak için yapılandırılır. Bununla da elde edilebileceğini unutmayın. Amazon SageMaker Ardışık Düzenleri.
  3. Model yapıları, eğitim işi tarafından Amazon S3'te depolanır ve doğrudan SageMaker MME'den sunulur.

Eğitimi binlerce modele göre ölçeklendirin

Binlerce modelin eğitimini ölçeklendirmek mümkündür. distribution parametresi EğitimGirdi SageMaker Python SDK'da, bir eğitim işi için verilerin birden çok eğitim örneğine nasıl dağıtılacağını belirtmenize olanak tanıyan bir sınıf. için üç seçenek vardır. distribution parametre: FullyReplicated, ShardedByS3Key, ve ShardedByRecord. ShardedByS3Key seçeneği, eğitim verilerinin S3 nesne anahtarı tarafından parçalandığı, her eğitim örneğinin verilerin benzersiz bir alt kümesini aldığı ve yinelemeden kaçınıldığı anlamına gelir. Veriler SageMaker tarafından eğitim konteynerlerine kopyalandıktan sonra, müşteri dosyası başına benzersiz bir model eğitmek için klasör ve dosya yapısını okuyabiliriz. Aşağıda örnek bir kod parçacığı verilmiştir:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Her SageMaker eğitim işi, kaydedilen modeli saklar. /opt/ml/model bir klasörde arşivlemeden önce eğitim kapsayıcısının klasörü model.tar.gz dosyasına dönüştürür ve eğitim işi tamamlandıktan sonra bunu Amazon S3'e yükler. Uzman kullanıcılar ayrıca bu işlemi SageMaker Pipelines ile otomatikleştirebilir. Aynı eğitim işi aracılığıyla birden çok modeli depolarken, SageMaker tek bir model oluşturur. model.tar.gz eğitilmiş tüm modelleri içeren dosya. Bu, modele hizmet etmek için önce arşivi açmamız gerektiği anlamına gelir. Bunu önlemek için kullandığımız kontrol noktaları bireysel modellerin durumunu kaydetmek için. SageMaker, eğitim işi sırasında oluşturulan kontrol noktalarını Amazon S3'e kopyalama işlevi sağlar. Burada, kontrol noktalarının önceden belirlenmiş bir konuma kaydedilmesi gerekir, varsayılan konum şu şekildedir: /opt/ml/checkpoints. Bu kontrol noktaları, eğitime daha sonra devam etmek için veya bir uç noktada dağıtılacak bir model olarak kullanılabilir. SageMaker eğitim platformunun eğitim veri kümeleri, model yapıları, kontrol noktaları ve AWS Cloud depolama ile SageMaker'daki eğitim işleri arasındaki çıktılar için depolama yollarını nasıl yönettiğine ilişkin üst düzey bir özet için bkz. Eğitim Veri Kümeleri, Kontrol Noktaları, Model Yapıtları ve Çıktıları için Amazon SageMaker Eğitim Depolama Klasörleri.

Aşağıdaki kod hayali bir kullanır model.save() içinde işlev train.py eğitim mantığını içeren komut dosyası:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

SageMaker MME'leri ile çıkarımı binlerce modele göre ölçeklendirin

SageMaker MME'leri, hizmet verilecek tüm modellerin bir listesini içeren bir uç nokta yapılandırması oluşturarak ve ardından bu uç nokta yapılandırmasını kullanarak bir uç nokta oluşturarak aynı anda birden çok modele hizmet vermenize olanak tanır. Her yeni model eklediğinizde uç noktayı yeniden konuşlandırmanıza gerek yoktur çünkü uç nokta, belirtilen S3 yollarında depolanan tüm modellere otomatik olarak hizmet verecektir. Bu ile elde edilir Çoklu Model Sunucu (MMS), yeni MME kapsayıcı API'lerinin gereksinimlerini karşılayan ön uç sağlamak için kaplara kurulabilen makine öğrenimi modellerine hizmet veren açık kaynaklı bir çerçeve. Ayrıca, aşağıdakiler de dahil olmak üzere diğer model sunucuları kullanabilirsiniz: TorchServis ve Triton. MMS, özel kapsayıcınıza şu şekilde yüklenebilir: SageMaker Çıkarım Araç Seti. Dockerfile dosyanızı MMS içerecek şekilde nasıl yapılandıracağınız ve onu modellerinize hizmet vermek için nasıl kullanacağınız hakkında daha fazla bilgi edinmek için bkz. SageMaker Çok Modelli Uç Noktaları için Kendi Kapsayıcınızı Oluşturun.

Aşağıdaki kod parçacığı, SageMaker Python SDK kullanılarak bir MME'nin nasıl oluşturulacağını gösterir:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

MME canlı olduğunda, tahminler oluşturmak için onu çağırabiliriz. Çağrılar, aşağıdaki kod parçacığında gösterildiği gibi herhangi bir AWS SDK'da ve SageMaker Python SDK'da yapılabilir:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Bir model çağrılırken, model ilk olarak bulut sunucusuna Amazon S3'ten yüklenir ve bu, yeni bir model çağrılırken soğuk başlatmayla sonuçlanabilir. Sık kullanılan modeller, düşük gecikmeli çıkarım sağlamak için bellekte ve diskte önbelleğe alınır.

Sonuç

SageMaker, binlerce ML modelini eğitmek ve hizmet vermek için güçlü ve uygun maliyetli bir platformdur. SageMaker İşleme, eğitim işleri ve MME'ler dahil olmak üzere özellikleri, kuruluşların AWS Bulut altyapısını kullanmanın maliyet tasarrufu sağlayan avantajlarından yararlanırken, aynı zamanda büyük ölçekte binlerce modeli verimli bir şekilde eğitip hizmet vermesine olanak tanır. SageMaker'ı binlerce modeli eğitmek ve sunmak için nasıl kullanacağınız hakkında daha fazla bilgi edinmek için bkz. Veri işleme, Amazon SageMaker ile Model Eğitin ve Birden çok modeli tek bir kapsayıcıda tek bir uç noktanın arkasında barındırın.


Yazarlar Hakkında

Davide'nin resmiDavide Gallitelli EMEA bölgesinde AI/ML için Uzman Çözüm Mimarıdır. Merkezi Brüksel'dedir ve Benelüks genelindeki müşterilerle yakın işbirliği içinde çalışmaktadır. Çok küçük yaşlardan beri geliştiricidir, 7 yaşında kodlamaya başlar. Üniversitede AI/ML öğrenmeye başladı ve o zamandan beri ona aşık oldu.

Maurits'in resmiMaurits de Groot Amazon Web Services'ta Amsterdam merkezli bir Çözüm Mimarıdır. Makine öğrenimi ile ilgili konularda çalışmayı seviyor ve yeni girişimlere karşı bir tercihi var. Boş zamanlarında kayak yapmaktan ve squash oynamaktan hoşlanır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi