PlatoBlockchain Veri Zekasını test etmek amacıyla modellerinizi Amazon SageMaker'a dağıtmak için gereken süreyi azaltın. Dikey Arama. Ai.

Modellerinizi test için Amazon SageMaker'a dağıtmak için geçen süreyi azaltın

Veri bilimcileri genellikle modellerini yerel olarak eğitir ve modellerini dağıtmak için uygun bir barındırma hizmeti arar. Ne yazık ki, önceden eğitilmiş modelleri buluta dağıtmak için belirlenmiş bir mekanizma veya kılavuz yok. Bu gönderide, eğitimli modelleri aşağıdakilere dağıtmaya bakacağız: Amazon Adaçayı Yapıcı dağıtım sürenizi azaltmak için barındırma.

SageMaker, tam olarak yönetilen bir makine öğrenimi (ML) hizmetidir. SageMaker ile makine öğrenimi modellerini hızla oluşturup eğitebilir ve bunları doğrudan üretime hazır barındırılan bir ortama dağıtabilirsiniz. Ayrıca, sunucuları yönetmenize gerek yoktur. Veri kaynaklarınıza kolay erişim sağlayan entegre bir Jupyter not defteri ortamına sahip olursunuz. Veri analizi yapabilir, modellerinizi eğitebilir ve kendi algoritmalarınızı kullanarak test edebilir veya birden çok makineye yayılmış büyük veri kümelerine karşı verimli bir şekilde çalışacak şekilde optimize edilmiş SageMaker tarafından sağlanan ML algoritmalarını kullanabilirsiniz. Eğitim ve barındırma, minimum ücret ve ön taahhüt olmaksızın kullanım dakikalarına göre faturalandırılır.

Çözüme genel bakış

Veri bilimcileri bazen IDE'lerini kullanarak modelleri yerel olarak eğitir ve bu modelleri dağıtım için ML mühendislik ekibine gönderir veya yalnızca güçlü makinelerde yerel olarak tahminler yürütür. Bu gönderide, modelleri SageMaker'a dağıtma sürecini basitleştiren bir Python kitaplığı tanıtıyoruz. hosting gerçek zamanlı veya sunucusuz uç noktalarda.

Bu Python kitaplığı, veri bilimcilerine, düşük seviyeli SageMaker işlevlerinin hiçbirini bilmeye gerek kalmadan SageMaker'ı hızlı bir şekilde kullanmaya başlamaları için basit bir arabirim sağlar.

Tercih ettiğiniz IDE kullanılarak yerel olarak eğitilmiş modelleriniz varsa ve bulutun ölçeğinden yararlanmak istiyorsanız, modelinizi SageMaker'a dağıtmak için bu kitaplığı kullanabilirsiniz. SageMaker ile, bulut tabanlı bir makine öğrenimi platformunun tüm ölçeklendirme avantajlarına ek olarak, amaca yönelik eğitim araçlarına (dağıtılmış eğitim, hiperparametre ayarlama), deney yönetimi, model yönetimi, sapma algılama, model açıklanabilirliği ve diğer pek çok şeye erişebilirsiniz. makine öğrenimi yaşam döngüsünün herhangi bir alanında size yardımcı olabilecek yetenekler. Makine öğrenimi için en popüler üç çerçeveden birini seçebilirsiniz: Scikit-learn, PyTorch ve TensorFlow ve istediğiniz bilgi işlem türünü seçebilirsiniz. Bu kitaplığın kullanıcılarının karmaşık kararlar almaya veya yeni kavramlar öğrenmeye gerek kalmadan modellerini dağıtabilmeleri için yol boyunca varsayılanlar sağlanır. Bu gönderide, bu kitaplığa nasıl başlayacağınızı ve ML modellerinizi SageMaker barındırmada nasıl optimize edeceğinizi gösteriyoruz.

Kütüphane şurada bulunabilir: GitHub deposu.

SageMaker Geçiş Araç Seti

The SageMakerMigration class, GitHub'da yayınlanan bir Python kitaplığı aracılığıyla kullanılabilir. Bu kitaplığı kurmak için talimatlar havuzda verilmiştir; ortamınızı doğru şekilde kurmak için BENİOKU'yu izlediğinizden emin olun. Bu kitaplığı kurduktan sonra, bu yazının geri kalanı onu nasıl kullanabileceğinizden bahseder.

The SageMakerMigration sınıfı, aşağıdaki şekilde gösterildiği gibi, modelinizi SageMaker'a dağıtmak için gereken adımları önemli ölçüde azaltan SageMaker API'leri üzerinden yüksek düzeyli soyutlamalardan oluşur. Bu, geliştiricilerin hızlı bir şekilde başlayabilmeleri ve SageMaker'ı test edebilmeleri için deneme amaçlıdır. Üretim geçişleri için tasarlanmamıştır.

Scikit-learn, PyTorch ve TensorFlow modelleri için bu kitaplık, eğitilmiş modellerin bir SageMaker gerçek zamanlı uç noktasına veya sunucusuz uç noktasına dağıtılmasını destekler. SageMaker'daki çıkarım seçenekleri hakkında daha fazla bilgi edinmek için bkz. Çıkarım için Modelleri Dağıt.

Gerçek zamanlı ve sunucusuz uç noktalar

Gerçek zamanlı çıkarım, gerçek zamanlı, etkileşimli, düşük gecikme gereksinimlerinizin olduğu çıkarım iş yükleri için idealdir. Modelinizi SageMaker barındırma hizmetlerine dağıtabilir ve çıkarım için kullanılabilecek bir uç nokta elde edebilirsiniz. Bu uç noktalar tamamen yönetilir ve otomatik ölçeklendirmeyi destekler.

SageMaker Sunucusuz Çıkarım, makine öğrenimi modellerini dağıtmanızı ve ölçeklendirmenizi kolaylaştıran amaca yönelik oluşturulmuş bir çıkarım seçeneğidir. Sunucusuz Çıkarım, trafikteki sıçramalar arasında boşta kalma süreleri olan ve soğuk başlatmaları tolere edebilen iş yükleri için idealdir. Sunucusuz uç noktalar, bilgi işlem kaynaklarını otomatik olarak başlatır ve trafiğe bağlı olarak ölçeklendirerek, örnek türlerini seçme veya ölçeklendirme ilkelerini yönetme ihtiyacını ortadan kaldırır. Bu, sunucuları seçme ve yönetmenin farklılaşmamış ağır yükünü ortadan kaldırır.

Kullanım durumunuza bağlı olarak, her zaman açık olan bir örneğe sahip olmadan ve maliyete neden olmadan modelinizi SageMaker'da hızlı bir şekilde barındırmak isteyebilirsiniz; bu durumda sunucusuz bir uç nokta harika bir çözümdür.

Eğitilmiş modelinizi ve çıkarım komut dosyanızı hazırlayın

SageMaker'da dağıtmak istediğiniz modeli belirledikten sonra, modelin SageMaker'a doğru biçimde sunulduğundan emin olmalısınız. SageMaker uç noktaları genellikle iki bileşenden oluşur: eğitilmiş model yapıtı (.pth, .pkl vb.) ve bir çıkarım betiği. Çıkarım komut dosyası her zaman zorunlu değildir, ancak sağlanmazsa, kullandığınız sunum kapsayıcısının varsayılan işleyicileri uygulanır. Çıkarım için giriş/çıkış işlevselliğinizi özelleştirmeniz gerekiyorsa, bu betiği sağlamanız önemlidir.

Eğitilmiş model yapısı, yalnızca kaydedilmiş bir Scikit-learn, PyTorch veya TensorFlow modelidir. Scikit-learn için bu genellikle bir turşu dosyasıdır, PyTorch için bu bir .pt veya .pth dosyasıdır ve TensorFlow için bu, varlıklar, .pb dosyaları ve diğer değişkenleri içeren bir klasördür.

Genel olarak, modelinizin girdiyi nasıl işlediğini ve çıkarımı nasıl gerçekleştirdiğini ve yanıtınız için çıktı biçimini kontrol edebilmeniz gerekir. SageMaker ile bir çıkarım komut dosyası Bu özelleştirmeyi eklemek için SageMaker tarafından kullanılan herhangi bir çıkarım betiği, aşağıdaki dört işleyici işlevinden bir veya daha fazlasına sahip olmalıdır: model_fn, input_fn, predict_fn, ve output_fn.

Bu dört işlevin aşağıdakiler için geçerli olduğunu unutmayın: PyTorch ve Scikit-öğrenme konteynerler özellikle. TensorFlow ile entegre olduğu için biraz farklı işleyicilere sahiptir. Akış Sunumu. TensorFlow ile bir çıkarım betiği için iki model işleyicileri: input_handler ve output_handler. Yine, bunlar, birlikte çalışabileceğiniz aynı ön işleme ve son işleme amacına sahiptir, ancak bunlarla bütünleşmek için biraz farklı şekilde yapılandırılmışlardır. Akış Sunumu. PyTorch modelleri için model_fn, çıkarım betiğinde bulunması zorunlu bir işlevdir.

model_fn

Bu, SageMaker uç noktanızı çağırdığınızda ilk çağrılan işlevdir. Modeli yüklemek için kodunuzu yazdığınız yer burasıdır. Örneğin:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

Çerçeveye ve modelin türüne bağlı olarak bu kod değişebilir, ancak işlevin başlatılmış bir model döndürmesi gerekir.

girdi_fn

Bu, uç noktanız çağrıldığında çağrılan ikinci işlevdir. Bu işlev, çıkarım için uç noktaya gönderilen verileri alır ve modelin bir tahmin oluşturması için gereken biçime ayrıştırır. Örneğin:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

The request_body modelden çıkarım oluşturmak için kullanılacak verileri içerir ve bu fonksiyonda gerekli formatta olması için ayrıştırılır.

tahmin_fn

Bu, modeliniz çağrıldığında çağrılan üçüncü işlevdir. Bu işlev, döndürülen önceden işlenmiş giriş verilerini alır. input_fn ve döndürülen modeli kullanır model_fn tahminde bulunmak için. Örneğin:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

isteğe bağlı olarak ekleyebilirsiniz output_fn çıktısını ayrıştırmak için predict_fn müşteriye iade etmeden önce. fonksiyon imzası def output_fn(prediction, content_type).

Önceden eğitilmiş modelinizi SageMaker'a taşıyın

Eğitilmiş model dosyanızı ve çıkarım betiğinizi aldıktan sonra, bu dosyaları aşağıdaki gibi bir klasöre koymalısınız:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

Modeliniz ve çıkarım betiğiniz hazırlanıp bu klasör yapısına kaydedildikten sonra modeliniz SageMaker üzerinde dağıtıma hazırdır. Aşağıdaki koda bakın:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

Uç noktanızı dağıttıktan sonra, kullanmayacağınız kaynakları SageMaker konsolu veya konsol aracılığıyla temizlediğinizden emin olun. silme_bitiş noktası Boto3 API çağrısı.

Sonuç

SageMaker Migration Toolkit projesinin amacı, veri bilimcilerin bulut tabanlı çıkarımdan yararlanmak için modellerini SageMaker'a yerleştirmelerini kolaylaştırmaktır. Depo, iş yüklerini SageMaker'a geçirmek için daha fazla seçeneği geliştirmeye ve desteklemeye devam edecek. Kod açık kaynak kodludur ve çekme istekleri ve sorunları yoluyla topluluk katkılarını memnuniyetle karşılıyoruz.

Check out GitHub deposu SageMaker Migration Toolkit'in kullanımı hakkında daha fazlasını keşfetmek ve projeye eklemek için örnekler veya özellik istekleri eklemekten çekinmeyin!


yazarlar hakkında

PlatoBlockchain Veri Zekasını test etmek amacıyla modellerinizi Amazon SageMaker'a dağıtmak için gereken süreyi azaltın. Dikey Arama. Ai.Kirit Thadaka Amazon SageMaker Service SA ekibinde çalışan bir ML Çözümleri Mimarıdır. Kirit, AWS'ye katılmadan önce, erken aşamadaki yapay zeka girişimlerinde çalışarak ve ardından bir süre yapay zeka araştırması, MLOps ve teknik liderlikte çeşitli rollerde danışmanlık yaparak geçirdi.

PlatoBlockchain Veri Zekasını test etmek amacıyla modellerinizi Amazon SageMaker'a dağıtmak için gereken süreyi azaltın. Dikey Arama. Ai.Ram Vegiraju SageMaker Servis ekibine sahip bir ML Mimarıdır. Müşterilerin AI/ML çözümlerini Amazon SageMaker'da oluşturmasına ve optimize etmesine yardımcı olmaya odaklanıyor. Boş zamanlarında seyahat etmeyi ve yazmayı sever.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi