Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri

Amazon Adaçayı Yapıcı geliştiricilerin ve veri bilimcilerinin her ölçekte makine öğrenimi (ML) modellerini hızla ve zahmetsizce oluşturmasına, eğitmesine ve dağıtmasına olanak tanıyan, tümüyle yönetilen bir hizmettir. SageMaker, hizmete yapılan API çağrıları aracılığıyla modellerin üretime doğrudan dağıtılmasını kolaylaştırır. Modeller, sağlam ve ölçeklenebilir dağıtımlar için kapsayıcılar halinde paketlenir. Her ne kadar SageMaker Python SDK, AWS SDK'ları, SageMaker konsolu ve Amazon SageMaker Stüdyosu ML modellerini geniş ölçekte eğitme ve dağıtma sürecini basitleştirmek için dizüstü bilgisayarlar kullanan müşteriler, oyun alanı testleri için modellerini dağıtmanın ve üretim dağıtımlarını optimize etmenin daha iyi yollarını aramaya devam ediyor.

SageMaker'ı kullanarak modelleri paketleme ve dağıtma sürecini basitleştirmek için iki yeni yöntem başlatıyoruz.

Bu yazıda yeni SageMaker Python SDK'sını tanıtıyoruz ModelBuilder Bu deneyim, veri bilimcileri gibi yeni SageMaker kullanıcılarının öğrenme eğrisini en aza indirmeyi amaçlarken aynı zamanda deneyimli MLOps mühendislerinin SageMaker barındırma hizmetlerinin kullanımını en üst düzeye çıkarmasına yardımcı olur. İlk kurulum ve dağıtımın karmaşıklığını azaltır ve SageMaker'ın tüm özelliklerinden yararlanmaya yönelik en iyi uygulamalar konusunda rehberlik sağlar. Bu yeni SageMaker özelliği için ayrıntılı bilgi ve GitHub örnekleri sağlıyoruz.

Diğer yeni lansman ise SageMaker Studio'daki yeni etkileşimli dağıtım deneyimini kullanmaktır. Bunu Bölüm 2'de tartışıyoruz.

Modelleri bir SageMaker uç noktasına dağıtmak, modeli bir SageMaker uç noktasında barındırılmaya hazır hale getirmek için bir dizi adım gerektirir. Bu, model yapıtlarının doğru formatta ve yapıda elde edilmesini, çıkarım kodunun oluşturulmasını ve model resmi URL'si gibi temel ayrıntıların belirtilmesini içerir. Amazon Basit Depolama Hizmeti (Amazon S3) model yapılarının konumu, serileştirme ve seri durumdan çıkarma adımları ve gerekli AWS Kimlik ve Erişim Yönetimi Uygun erişim izinlerini kolaylaştırmak için (IAM) rolleri. Bunu takiben uç nokta yapılandırması, çıkarım türünün belirlenmesini ve örnek türleri, sayımlar ve model değişkenleri arasındaki trafik dağıtımı gibi ilgili parametrelerin yapılandırılmasını gerektirir.

SageMaker hosting'i kullanırken müşterilerimize daha fazla yardımcı olmak için yeni ModelBuilder Modelleri SageMaker uç noktalarına dağıtırken aşağıdaki temel faydaları sağlayan SageMaker Python SDK'daki sınıf:

  • Dağıtım deneyimini çerçeveler arasında birleştirir – Yeni deneyim, PyTorch, TensorFlow ve XGBoost gibi farklı çerçeveler kullanılarak oluşturulan modellerin dağıtımı için tutarlı bir iş akışı sağlar. Bu, dağıtım sürecini basitleştirir.
  • Model dağıtımını otomatikleştirir – Uygun konteynerlerin seçilmesi, bağımlılıkların yakalanması ve serileştirme/seri durumdan çıkarmanın yönetilmesi gibi görevler otomatikleştirilerek dağıtım için gereken manuel çaba azaltılır.
  • Yerelden SageMaker tarafından barındırılan uç noktaya sorunsuz bir geçiş sağlar – Minimal kod değişiklikleriyle modeller, yerel testlerden SageMaker uç noktasında dağıtıma kolayca geçirilebilir. Canlı günlükler hata ayıklamayı sorunsuz hale getirir.

Genel olarak SageMaker ModelBuilder düşük seviyeli ayrıntıları ele alarak SageMaker çıkarımı için model paketleme sürecini basitleştirir ve kolaylaştırır ve uç noktaların test edilmesi, doğrulanması ve optimizasyonu için araçlar sağlar. Bu, geliştirici üretkenliğini artırır ve hataları azaltır.

Aşağıdaki bölümlerde bu yeni özelliğin ayrıntılarına derinlemesine bakacağız. Ayrıca modellerin SageMaker barındırma hizmetine nasıl dağıtılacağını da tartışıyoruz. ModelBuilderbu da süreci basitleştirir. Ardından, hem geleneksel makine öğrenimi modellerini hem de üretken yapay zeka kullanım örneklerini güçlendiren temel modelleri dağıtmak için farklı çerçevelere yönelik birkaç örnek üzerinden size yol göstereceğiz.

SageMaker ModelBuilder'ı tanıma

Yeni ModelBuilder XGBoost veya PyTorch gibi çerçeveler kullanılarak oluşturulan makine öğrenimi modellerini alıp bunları SageMaker'da dağıtıma hazır modellere dönüştürmeye odaklanan bir Python sınıfıdır. ModelBuilder Bir sağlar build() Yapıları model sunucusuna göre üreten işlev ve deploy() yerel olarak veya bir SageMaker uç noktasına dağıtma işlevi. Bu özelliğin sunulması, modellerin SageMaker ortamıyla entegrasyonunu basitleştirerek performans ve ölçeklenebilirlik açısından optimize eder. Aşağıdaki şemada bunun nasıl yapıldığı gösterilmektedir ModelBuilder üst düzeyde çalışır.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

ModelBuilder sınıfı

The Model Oluşturucu sınıf özelleştirme için farklı seçenekler sunar. Ancak çerçeve modelini dağıtmak için model oluşturucu yalnızca modeli, girdiyi, çıktıyı ve rolü bekler:

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

Şema Oluşturucu

The Şema Oluşturucu class, uç noktanız için giriş ve çıkışı tanımlamanıza olanak tanır. Şema oluşturucunun, giriş ve çıkışı serileştirmek ve seri durumdan çıkarmak için karşılık gelen sıralama işlevlerini oluşturmasına olanak tanır. Aşağıdaki sınıf dosyası özelleştirme için tüm seçenekleri sağlar:

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

Ancak çoğu durumda yalnızca örnek giriş ve çıkış işe yarayacaktır. Örneğin:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

Örnek giriş ve çıkış sağlayarak, SchemaBuilder gerekli dönüşümleri otomatik olarak belirleyerek entegrasyon sürecini daha basit hale getirebilir. Daha gelişmiş kullanım durumları için, hem giriş hem de çıkış için özel çeviri işlevleri sağlama esnekliği vardır ve bu da daha karmaşık veri yapılarının da verimli bir şekilde işlenebilmesini sağlar. Bunu aşağıdaki bölümlerde farklı modelleri çeşitli çerçevelerle dağıtarak göstereceğiz. ModelBuilder.

Yerel mod deneyimi

Bu örnekte, kullandığımız ModelBuilder XGBoost modelini yerel olarak dağıtmak için. Yerel test ile SageMaker uç noktasına dağıtım arasında geçiş yapmak için Modu kullanabilirsiniz. İlk önce XGBoost modelini (yerel olarak veya SageMaker'da) eğitiyoruz ve model yapıtlarını çalışma dizininde saklıyoruz:

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

Daha sonra gerçek model nesnesini ileterek bir ModelBuilder nesnesi yaratırız. SchemaBuilder ihtiyaç duyulan serileştirmeyi çıkarmak için örnek test giriş ve çıkış nesnelerini (modeli eğitirken ve test ederken kullandığımız giriş ve çıkışın aynısı) kullanır. Kullandığımızı unutmayın Mode.LOCAL_CONTAINER Yerel bir dağıtım belirtmek için. Bundan sonra, diyoruz inşa etmek desteklenen çerçeve kapsayıcı görüntüsünü otomatik olarak tanımlamanın yanı sıra bağımlılıkları tarama işlevi. Aşağıdaki koda bakın:

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

Son olarak, arayabiliriz deploy Model nesnesindeki işlev, aynı zamanda daha kolay hata ayıklama için canlı günlük kaydı da sağlar. Model yerel olarak dağıtılacağı için örnek türünü veya sayısını belirtmeniz gerekmez. Bu parametreleri sağladıysanız bunlar dikkate alınmayacaktır. Bu işlev, test verileriyle tahmin yapmak için kullanabileceğimiz tahmin nesnesini döndürecektir:

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

İsteğe bağlı olarak, modelin yüklenmesini ve ön işlemeyi ve son işlemeyi kullanarak da kontrol edebilirsiniz. InferenceSpec. Bu yazının ilerleyen kısımlarında daha fazla ayrıntı vereceğiz. Kullanma LOCAL_CONTAINER betiğinizi bir SageMaker uç noktasına dağıtmadan önce yerel olarak test etmenin harika bir yoludur.

Bakın model oluşturucu-xgboost.ipynb kullanarak hem yerel olarak hem de bir SageMaker uç noktasına dağıtımı test etmek için örnek ModelBuilder.

Geleneksel modelleri SageMaker uç noktalarına dağıtın

Aşağıdaki örneklerde nasıl kullanılacağını gösteriyoruz ModelBuilder geleneksel makine öğrenimi modellerini dağıtmak için.

XGBoost modelleri

Önceki bölüme benzer şekilde, XGBoost modelini SageMaker uç noktasına dağıtmak için mode parametre oluştururken ModelBuilder nesne:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

SageMaker uç noktalarına dağıtım yaparken, örnek türünü ve örnek sayısını belirtmeniz gerektiğini unutmayın. deploy fonksiyonu.

Bakın model oluşturucu-xgboost.ipynb bir XGBoost modelini dağıtmak için örnek.

Triton modelleri

Sen kullanabilirsiniz ModelBuilder PyTorch modellerini sunmak için Triton Çıkarım Sunucusu. Bunun için belirtmeniz gerekir model_server parametre olarak ModelServer.TRITON, bir model geçirin ve bir SchemaBuilder modelden örnek girdiler ve çıktılar gerektiren nesne. ModelBuilder gerisini sizin için halledecektir.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

Bakın model oluşturucu-triton.ipynb Triton ile bir model dağıtmak için.

Sarılma Yüz modelleri

Bu örnekte, Hugging Face tarafından sağlanan önceden eğitilmiş bir transformatör modelinin SageMaker'a nasıl dağıtılacağını gösteriyoruz. Sarılma Yüzünü kullanmak istiyoruz pipeline modeli yüklemek için özel bir çıkarım spesifikasyonu oluşturuyoruz. ModelBuilder:

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

Çıkarım iş yükünün giriş ve çıkışını da tanımlayarak tanımlarız. SchemaBuilder model giriş ve çıkışına dayalı nesne:

schema = SchemaBuilder(value,output)

Daha sonra şunu yaratırız: ModelBuilder diğer örnekte gösterildiği gibi aynı mantığı izleyerek modeli bir SageMaker uç noktasına yerleştirin ve dağıtın:

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

Bakın model oluşturucu-kucaklayanface.ipynb Hugging Face boru hattı modelini dağıtmak için.

Temel modellerini SageMaker uç noktalarına dağıtın

Aşağıdaki örneklerde nasıl kullanılacağını gösteriyoruz ModelBuilder temel modellerin konuşlandırılması. Daha önce bahsedilen modellerde olduğu gibi, gereken tek şey model kimliğidir.

sarılma yüz hub

Bir temel modelini dağıtmak istiyorsanız sarılma yüz hub, tek yapmanız gereken önceden eğitilmiş model kimliğini geçmek. Örneğin, aşağıdaki kod parçacığı, meta-lama/Llama-2-7b-hf Yerel olarak modelleyin. Modu şu şekilde değiştirebilirsiniz: Mode.SAGEMAKER_ENDPOINT SageMaker uç noktalarına dağıtmak için.

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

Hugging Face Hub'daki kapılı modeller için Hugging Face Hub aracılığıyla erişim talep etmeniz ve ilgili anahtarı ortam değişkeni olarak ileterek kullanmanız gerekir. HUGGING_FACE_HUB_TOKEN. Bazı Hugging Face modelleri güvenilir uzaktan kod gerektirebilir. kullanılarak bir ortam değişkeni olarak da ayarlanabilir. HF_TRUST_REMOTE_CODE. Varsayılan olarak, ModelBuilder Sarılma Yüzü Metin Oluşturma Çıkarımı (TGI) Hugging Face modelleri için temel kap olarak konteyner. AWS Büyük Model Çıkarımı'nı kullanmak istiyorsanız (LMI) kapsayıcılarıayarlayabilirsiniz model_server parametre olarak ModelServer.DJL_SERVING yapılandırdığınızda ModelBuilder nesne.

Düzgün bir özelliği ModelBuilder kullandığınızda konteyner parametrelerinin yerel ayarını çalıştırma yeteneğidir. LOCAL_CONTAINER modu. Bu özellik yalnızca çalıştırılarak kullanılabilir. tuned_model = model.tune().

Bakın demo-model-oluşturucu-sarılmayüz-llama2.ipynb Hugging Face Hub modelini dağıtmak için.

Adaçayı Yapıcı Hızlı Başlangıç

Amazon SageMaker Hızlı Başlangıç ayrıca bir dizi önceden eğitilmiş temel modeli sunar. Tıpkı Hugging Face Hub'dan bir model dağıtma işleminde olduğu gibi, model kimliği gereklidir. Bir SageMaker JumpStart modelini bir SageMaker uç noktasına dağıtmak, aşağıdaki kodu çalıştırmak kadar basittir:

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

Mevcut tüm SageMaker JumpStart model kimlikleri için bkz. Önceden eğitilmiş Model Tablosu ile Yerleşik Algoritmalar. Bakın model oluşturucu-jumpstart-falcon.ipynb SageMaker JumpStart modelini dağıtmak için.

Çıkarım bileşeni

ModelBulder modelleri dağıtmak için SageMaker'daki yeni çıkarım bileşeni özelliğini kullanmanıza olanak tanır. Çıkarım bileşenleri hakkında daha fazla bilgi için bkz. SageMaker'ın En Son Özelliklerini Kullanarak Model Dağıtım Maliyetlerini Ortalama %50 Azaltın. Dağıtım için çıkarım bileşenlerini kullanabilirsiniz. ModelBuilder belirterek endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED içinde deploy() yöntem. Ayrıca şunları da kullanabilirsiniz: tune() Optimum sayıda hızlandırıcıyı getiren ve gerekirse değiştiren yöntem.

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

Bakın model-oluşturucu-çıkarım-bileşeni.ipynb Bir modeli çıkarım bileşeni olarak dağıtmak için.

ModelBuilder Sınıfını Özelleştirin

The ModelBuilder sınıf kullanarak model yüklemeyi özelleştirmenize olanak tanır InferenceSpec.

Ek olarak, veri yükünü ve yanıt serileştirmesini ve seri durumdan çıkarma işlemlerini kontrol edebilir ve aşağıdakileri kullanarak ön işlemeyi ve son işlemeyi özelleştirebilirsiniz: CustomPayloadTranslator. Ayrıca SageMaker'da model dağıtımı için önceden oluşturulmuş konteynerlerimizi genişletmeniz gerektiğinde şunları kullanabilirsiniz: ModelBuilder Model paketleme sürecini yönetmek. Aşağıdaki bölümde, bu yetenekler hakkında daha fazla ayrıntı sağlıyoruz.

ÇıkarımBelirtimi

ÇıkarımBelirtimi ek bir kişiselleştirme katmanı sunar. Modelin nasıl yüklendiğini ve gelen çıkarım isteklerini nasıl ele alacağını tanımlamanıza olanak tanır. Başından sonuna kadar InferenceSpecile, varsayılan yükleme mekanizmalarını atlayarak modelleriniz için özel yükleme prosedürlerini tanımlayabilirsiniz. Bu esneklik, özellikle standart dışı modellerle veya özel çıkarım hatlarıyla çalışırken faydalıdır. Çağırma yöntemi, modelin gelen istekleri (ön işleme ve son işleme) nasıl işleyeceğini size uyarlama yeteneği sağlayacak şekilde özelleştirilebilir. Bu özelleştirme, çıkarım sürecinin modelin özel ihtiyaçlarıyla uyumlu olmasını sağlamak için gerekli olabilir. Aşağıdaki koda bakın:

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

Aşağıdaki kod bu sınıfın kullanımına ilişkin bir örneği göstermektedir:

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

ÖzelPayloadÇeviricisi

SageMaker uç noktaları çağrılırken veriler, farklı MIME türlerine sahip HTTP verileri aracılığıyla gönderilir. Örneğin, çıkarım için uç noktaya gönderilen bir görüntünün istemci tarafında bayta dönüştürülmesi ve HTTP yükü aracılığıyla uç noktaya gönderilmesi gerekir. Uç nokta veri yükünü aldığında, bayt dizesini model tarafından beklenen veri türüne (aynı zamanda şu şekilde de bilinir) geri seri hale getirmesi gerekir: sunucu tarafı seri durumdan çıkarma). Model tahmini tamamladıktan sonra, sonuçların HTTP yükü aracılığıyla kullanıcıya veya istemciye geri gönderilebilecek baytlara serileştirilmesi gerekir. İstemci yanıt bayt verilerini aldığında, bayt verilerini JSON gibi beklenen veri biçimine geri dönüştürmek için istemci tarafında seri durumdan çıkarma işlemi gerçekleştirmesi gerekir. En azından, aşağıdakiler için verileri dönüştürmeniz gerekir (aşağıdaki şemada numaralandırıldığı gibi):

  1. Çıkarım isteği serileştirme (istemci tarafından gerçekleştirilir)
  2. Çıkarım isteği seri durumdan çıkarma (sunucu veya algoritma tarafından işlenir)
  3. Modelin veri yüküne karşı çağrılması
  4. Yanıt verisi geri gönderiliyor
  5. Çıkarım yanıtı serileştirmesi (sunucu veya algoritma tarafından işlenir)
  6. Çıkarım yanıtı seri durumdan çıkarma (istemci tarafından gerçekleştirilir)

Aşağıdaki diyagram, çağırma işlemi sırasında serileştirme ve seri durumdan çıkarma sürecini göstermektedir.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Aşağıdaki kod parçacığında bir örnek gösteriyoruz: CustomPayloadTranslator sırasıyla istemci ve sunucu tarafında hem serileştirme hem de seri durumdan çıkarma işlemlerini gerçekleştirmek için ek özelleştirme gerektiğinde:

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

içinde demo-model-oluşturucu-pytorch.ipynb dizüstü bilgisayarında, bir PyTorch modelinin SageMaker uç noktasına nasıl kolayca dağıtılacağını gösteriyoruz. ModelBuilder ile CustomPayloadTranslator ve InferenceSpec sınıf.

Dağıtım için sahne modeli

Modeli çıkarım için veya model kaydında hazırlamak istiyorsanız şunu kullanabilirsiniz: model.create() or model.register(). Etkinleştirilen model hizmette oluşturulur ve daha sonra dağıtabilirsiniz. Aşağıdaki koda bakın:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

Özel kapsayıcılar kullanın

SageMaker sağlar önceden oluşturulmuş Docker görüntüleri yerleşik algoritmaları ve eğitim ve çıkarım için kullanılan desteklenen derin öğrenme çerçeveleri için. Önceden oluşturulmuş bir SageMaker konteyneri tüm gereksinimlerinizi karşılamıyorsa mevcut görüntüyü ihtiyaçlarınızı karşılayacak şekilde genişletebilirsiniz. Önceden oluşturulmuş bir görüntüyü genişleterek, sıfırdan bir görüntü oluşturmak zorunda kalmadan dahil edilen derin öğrenme kitaplıklarını ve ayarlarını kullanabilirsiniz. Önceden oluşturulmuş kapsayıcıların nasıl genişletileceği hakkında daha fazla ayrıntı için SageMaker belgesine bakın. ModelBuilder önceden oluşturulmuş Docker konteynerlerimizden genişletilen kendi konteynerlerinizi getirirken kullanım örneklerini destekler.

Bu durumda kendi kapsayıcı görüntünüzü kullanmak için alanları ayarlamanız gerekir. image_uri ve model_server tanımlarken ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

İşte, image_uri Hesabınızda saklanan kapsayıcı görüntüsü ARN olacaktır Amazon Elastik Konteyner Kayıt Defteri (Amazon ECR) deposu. Bir örnek şu şekilde gösterilmektedir:

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

Zaman image_uri sırasında ayarlanır ModelBuilder oluşturma işleminde, görüntü URI'si sağlandığında görüntünün otomatik algılanması atlanır. Eğer model_server ModelBuilder'da ayarlanmamışsa bir doğrulama hata mesajı alırsınız, örneğin:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

Bu yazının yayımlandığı tarihte, ModelBuilder bizim tarafımızdan genişletilen kendi konteynerlerinizi getirmenizi destekler önceden oluşturulmuş DLC kapsayıcı görüntüleri veya aşağıdaki gibi model sunucularla oluşturulmuş kaplar Derin Java Kitaplığı (DJL), Metin Oluşturma Çıkarımı (TGI), TorchServis, ve Triton çıkarım sunucusu.

Özel bağımlılıklar

Çalışırken ModelBuilder.build(), varsayılan olarak Python ortamınızı otomatik olarak bir requirements.txt Dosyayı açar ve aynı bağımlılığı konteynere yükler. Ancak bazen yerel Python ortamınız konteynerdeki ortamla çakışabilir. ModelBuilder özel yapılandırmalarınızı sağlamanıza izin vererek bu tür bağımlılık çakışmalarını düzeltmek amacıyla yakalanan bağımlılıkları değiştirmeniz için basit bir yol sağlar ModelBuilder. Bunun yalnızca TorchServe ve Triton için geçerli olduğunu unutmayın. InferenceSpec. Örneğin Python sözlüğü olan giriş parametresi bağımlılıklarını ModelBuilder'da şu şekilde belirtebilirsiniz:

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

Aşağıdaki alanları tanımlıyoruz:

  • Oto – Ortamınızdaki bağımlılıkları otomatik olarak yakalamaya çalışıp çalışmayacağınız.
  • gereksinimleri – Kendinize giden yolun bir dizisi requirements.txt dosya. (Bu isteğe bağlıdır.)
  • görenek – Eklemek veya değiştirmek istediğiniz diğer özel bağımlılıkların listesi. (Bu isteğe bağlıdır.)

Aynı modül birden fazla yerde belirtilmişse, custom en yüksek önceliğe sahip olacak, o zaman requirements, ve auto en düşük önceliğe sahip olacaktır. Örneğin, otomatik algılama sırasında şunu varsayalım: ModelBuilder algılar numpy==1.25Ve requirements.txt belirten dosya sağlanmıştır numpy>=1.24,<1.26. Ayrıca özel bir bağımlılık da vardır: custom = ["numpy==1.26.1"]. Bu durumda, numpy==1.26.1 kapsayıcıya bağımlılıklar yüklediğimizde seçilecektir.

Temizlemek

Modelleri test etmeyi tamamladığınızda, en iyi uygulama olarak, uç noktaya artık ihtiyaç duyulmaması durumunda maliyetten tasarruf etmek için uç noktayı silin. Takip edebilirsiniz Temizlemek Demo not defterlerinin her birindeki bölüm veya demo tarafından oluşturulan modeli ve uç noktayı silmek için aşağıdaki kodu kullanın:

predictor.delete_model()
predictor.delete_endpoint()

Sonuç

Yeni SageMaker ModelBuilder yeteneği, ML modellerinin SageMaker'da üretime dağıtılması sürecini basitleştirir. ModelBuilder, perde arkasındaki birçok karmaşık ayrıntıyı ele alarak yeni kullanıcılar için öğrenme eğrisini azaltır ve deneyimli kullanıcılar için kullanımı en üst düzeye çıkarır. Yalnızca birkaç satır kodla, XGBoost, PyTorch, Triton ve Hugging Face gibi yerleşik çerçevelere sahip modellerin yanı sıra SageMaker JumpStart tarafından sağlanan modelleri SageMaker'daki sağlam, ölçeklenebilir uç noktalara dağıtabilirsiniz.

Tüm SageMaker kullanıcılarının bu yeni özelliği denemelerini şu adrese başvurarak teşvik ediyoruz: Model Oluşturucu dokümantasyon sayfası. ModelBuilder artık tüm SageMaker kullanıcılarının kullanımına ücretsiz olarak sunuluyor. Modellerinizin daha hızlı konuşlandırılmasını sağlamak için bu basitleştirilmiş iş akışından yararlanın. ModelBuilder'ın model geliştirme yaşam döngünüzü nasıl hızlandırdığını duymak için sabırsızlanıyoruz!

Sirisha Upadhyayala, Raymond Liu, Gary Wang, Dhawal Patel, Deepak Garg ve Ram Vegiraju'ya özel teşekkürler.


yazarlar hakkında

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.melanie li, PhD, Sidney, Avustralya merkezli AWS'de Kıdemli Yapay Zeka/ML Uzmanı TAM'dir. Kurumsal müşterilerin AWS'de en son teknolojiye sahip AI/ML araçlarını kullanarak çözümler oluşturmasına yardımcı olur ve en iyi uygulamalarla makine öğrenimi çözümlerini tasarlama ve uygulama konusunda rehberlik sağlar. Boş zamanlarında doğayı keşfetmeyi, ailesi ve arkadaşlarıyla vakit geçirmeyi çok seviyor.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Marc Karp Amazon SageMaker Hizmet ekibinde çalışan bir Makine Öğrenimi Mimarıdır. Müşterilerin makine öğrenimi iş yüklerini uygun ölçekte tasarlamasına, devreye almasına ve yönetmesine yardımcı olmaya odaklanır. Boş zamanlarında seyahat etmekten ve yeni yerler keşfetmekten keyif alıyor.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Sam Edwards, AWS Sidney'de makine öğrenimi ve Amazon SageMaker konusunda uzmanlaşmış bir Bulut Mühendisidir (AI/ML). Müşterilerin makine öğrenimi iş akışlarıyla ilgili sorunları çözmelerine yardımcı olma ve onlar için yeni çözümler yaratma konusunda tutkulu. İş dışında raket sporları yapmaktan ve seyahat etmekten hoşlanıyor.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Raghu Rameşa Amazon SageMaker Hizmet ekibinde Kıdemli ML Çözümleri Mimarıdır. Müşterilerin makine öğrenimi üretim iş yüklerini geniş ölçekte oluşturmasına, dağıtmasına ve SageMaker'a taşımasına yardımcı olmaya odaklanıyor. Makine öğrenimi, yapay zeka ve bilgisayarla görme alanlarında uzmanlaşmıştır ve UT Dallas'ta Bilgisayar Bilimleri alanında yüksek lisans derecesine sahiptir. Boş zamanlarında seyahat etmekten ve fotoğraf çekmekten hoşlanıyor.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Shiva Raaj Kotini Amazon SageMaker çıkarım ürün portföyünde Baş Ürün Yöneticisi olarak çalışmaktadır. Çıkarım için SageMaker'da model dağıtımı, performans ayarlama ve optimizasyon konularına odaklanıyor.

Klasik ML ve LLM'leri Amazon SageMaker ile kolayca paketleyin ve dağıtın, bölüm 1: PySDK İyileştirmeleri | Amazon Web Hizmetleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Mohan Gandi AWS'de Kıdemli Yazılım Mühendisidir. Son 10 yıldır AWS'de çalışıyor ve EMR, EFA ve RDS gibi çeşitli AWS hizmetlerinde çalıştı. Şu anda, SageMaker Çıkarım Deneyimini geliştirmeye odaklanmıştır. Boş zamanlarında yürüyüş yapmaktan ve maratonlardan hoşlanır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi