Amazon SageMaker PlatoBlockchain Veri Zekası'ndaki çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımı. Dikey Arama. Ai.

Amazon SageMaker'da çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımı 

Makine öğreniminin (ML), çok çeşitli endüstrileri etkileyen ve her gün milyarlarca kullanıcıyı etkileyen teknolojinin en başarılı ve yaygın uygulamalarından biri olduğu kanıtlanmıştır. ML'nin her sektörde hızlı bir şekilde benimsenmesiyle şirketler, düşük gecikmeli tahminleri ve yüksek kullanılabilirliği desteklerken aynı zamanda kaynak kullanımını en üst düzeye çıkarma ve ilgili maliyetleri azaltma konusunda zorluklarla karşı karşıya kalıyor. Her ML çerçevesinin kendi bağımlılıkları olduğundan ve her çerçeve için dağıtım adımları farklı olduğundan, farklı çerçevelerde oluşturulan modellerin üretimde dağıtılması ve uç noktaların her birinin yönetilmesi giderek daha karmaşık hale gelir.

Amazon Adaçayı Yapıcı çok kapsayıcılı uç noktalar (MCE'ler), modelleri farklı çerçeveler üzerinde gruplandırmamıza ve bunları aynı ana bilgisayara dağıtarak tek bir uç nokta oluşturmamıza olanak tanır. Modelleri oluşturmak için kullandığınız farklı çerçeveler için kapsayıcılar sağlayabilirsiniz ve SageMaker bu kapsayıcıların tümünü alıp tek bir uç noktanın arkasına yerleştirir. Örneğin, aynı veya tamamen farklı kullanım senaryolarına hizmet eden iki özel uç noktaya yüklenmiş bir PyTorch ve TensorFlow modeliniz olabilir ve bu modellerin her ikisinde de, kaynakları sınırına kadar kullanmayan aralıklı gelen trafiğe sahip olabilirsiniz. Böyle bir senaryoda, bunları kapsayıcılar kullanarak bir MCE kullanarak tek bir uç noktada bir araya toplayabilir, böylece her iki modelin farklı uç noktalardan hizmet vermesi nedeniyle ortaya çıkan maliyetleri azaltırken kaynak kullanımını iyileştirebilirsiniz.

Çok kapsayıcılı uç noktalar, farklı makine öğrenimi çerçeveleri, model sunucuları ve aynı veya farklı kullanım senaryosuna hizmet eden algoritmalar üzerine kurulu 15'e kadar modeli dağıtmak için ölçeklenebilir ve uygun maliyetli bir çözüm sağlar; bu, çeşitli makine öğrenimi çerçeveleri veya aracılar üzerine kurulu modellere sahip olabileceğiniz anlamına gelir tüm bu kapsayıcılar ve modellerdeki adımlar. Tüm bu modellere doğrudan çağrı yoluyla ayrı ayrı erişilebilir veya bir modelin çıktısının bir sonrakinin girdisi olduğu seri çağrı kullanılarak bir ardışık düzene birleştirilebilir.

Bu yazıda, SageMaker'da çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımının nasıl gerçekleştirileceğini tartışıyoruz.

MCE çağırma kalıpları

SageMaker MCE doğrudan çağırma, ilgisiz modelleri bir MCE uç noktasına bağladığınız veya performanslarını ölçmek için bir MCE uç noktasının arkasındaki modeller arasında bir A/B testi çalıştırdığınız durumlarda kullanışlıdır. Belirli kapsayıcıyı doğrudan API çağrısında arayabilir ve o modelden tahmin alabilirsiniz.

Seri çağırma ile 2 ila 15 kapsayıcıyı bir araya getirebilirsiniz ve birinin çıktısı sırayla sonraki kabın girişi olur. Örneğin, ara tahmin için Scikit-learn modelinin kullanıldığı ve sonucun nihai çıkarım için TensorFlow modeline beslendiği çok adımlı bir tahmin hattınız varsa bu ideal bir kullanım durumudur. Bunları farklı uç noktalar olarak dağıtmak ve bunları düzenleyen ve birden fazla API çağrısı yapan başka bir uygulama veya iş yerine, bunları bir SageMaker MCE olarak dağıtabilir, mantığı soyutlayabilir ve SageMaker'ın bir konteyner arasındaki veri aktarımını yönettiği seri çağrı için ayarlayabilirsiniz. otomatik olarak diğerine aktarılır ve son kabın çıktısını API isteğinde bulunan müşteriye gönderir.

SageMaker MCE seri çağırma, SageMaker seri çıkarım hattından temel olarak farklıdır (daha fazla ayrıntı aşağıdaki bölümlerde bulunmaktadır). Bir seri çıkarım hattı daha çok veri ön işleme, bir model topluluğu oluşturma, hangi modelin çağrılacağını belirlemek için koşullu kontroller uygulama veya tahminin aşağı akış uygulamalarına gönderilmeden önce iş mantığını içeren tahminin sonradan işlenmesi gibi karmaşık makine öğrenimi iş akışlarını düzenlemek için hedeflenir. . Buna karşılık, MCE seri çağırma, çıkarım için 2 ila 14 modeli bir ardışık düzende birleştirmek üzere tasarlanmıştır; her model, bir önceki modelin tahminini girdi olarak alır.

Bir MCE'deki tüm kapsayıcılar her zaman hizmette ve bellektedir, dolayısıyla uç nokta çağrılırken soğuk başlatma olmaz. MCE'ler aynı zamanda uç nokta kullanımını iyileştirir ve maliyetleri artırır çünkü modeller tek bir uç noktanın arkasında dağıtılır ve her modelin ayrı bilgi işlem kaynaklarını kullanması yerine temel bilgi işlem örneğini paylaşır.

Birkaç kullanım örneğine bakalım ve ML çıkarımını optimize etmek için SageMaker MCE'leri nasıl kullanabileceğinizi görelim.

SageMaker MCE'ler için kullanım örnekleri

Duygu sınıflandırması için biri İngilizce, diğeri Almanca için olmak üzere iki modelinizin olduğunu ve bu modellerin günün farklı saatlerinde gelen trafikle farklı coğrafyalara hizmet verdiğini varsayalım. 24/7 çalışan iki uç noktaya sahip olmak yerine, her ikisini de bir MCE kullanarak tek bir uç noktaya dağıtabilir ve doğrudan çağrıyı kullanarak bunlara erişebilir, böylece kaynak kullanımınızı ve maliyetlerinizi optimize edebilirsiniz. Aşağıdaki koda bakın:

englishModel = {
   'Image': container1,
   'ContainerHostname': englishModel }; ...
 
germanModel = {
   'Image': container2,
   'ContainerHostname': germanModel }; ...
 
sm.create_model(
   InferenceExecutionConfig = {'Mode': 'Direct'},
   Containers = [englishModel, germanModel], ...)
sm.create_endpoint_config(EndpointConfigName = ‘my-mce-epc’,
    ProductionVariants=[{
        'InstanceType':        ‘ml.m4.xlarge’,
        'InitialInstanceCount': 2,
        'InitialVariantWeight': 1,
        'ModelName':            ‘my-multi-model-name’,
        'VariantName':          'AllTraffic'}])
sm.create_endpoint(EndpointName = ‘my-mce-endpoint’, 
                  EndpointConfigName = ‘my-mce-epc’)

Bu örnekte iki modelimiz var (englishModel ve germanModel) ve kapsayıcıları SageMaker'da tanımlarız create_model oluşturmak ve tanımlamak InferenceExecutionConfig 'Doğrudan' olarak. Artık çıkarım için uç noktayı çağırabilir ve tanımlayabiliriz. TargetContainerHostname olarak ya da englishModel or germanModel API çağrısını yapan müşteriye bağlı olarak:

sm.invoke_endpoint(        
   EndpointName = endpoint_name,
   TargetContainerHostname = englishModel,
   Body = body, ...)

Modeller arasındaki performansı karşılaştırmak amacıyla A/B testleri çalıştırmak için MCE içinden doğrudan çağırmayı da kullanabilirsiniz.

Aşağıdaki şema mimarimizi göstermektedir.

Benzer şekilde, diğer makine öğrenimi kullanım durumlarında, eğitilen model bir isteği işlemek için kullanıldığında, model, çıkarım için algoritmaya aktarılmadan önce önceden işlenmesi (örneğin, özelleştirilmesi) gereken bir formattaki verileri alır. ML algoritmaları birbirine zincirlendiğinde, bir modelin çıktısı, nihai sonuca ulaşmadan önce bir sonraki modelin girdisi olarak hizmet eder. Bu durumda, konteynerlerin birbirleriyle create_model Modellerin her birini farklı uç noktalara dağıtmak ve tüm bu modeller ile API çağrıları arasındaki veri akışını kolaylaştırmak için bağımsız bir mantık yazmak yerine yapıyı oluşturun. Aşağıdaki diyagram bu mimariyi göstermektedir.

Amazon SageMaker PlatoBlockchain Veri Zekası'ndaki çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımı. Dikey Arama. Ai.

Bu kullanım durumu için aşağıdaki kodu kullanıyoruz:

sm_model = PipelineModel(name=model_name, role=aws_role, models=[Processing-1, Processing-2, Inference-1, Inference-2]) 

predictor = sm_model.deploy(initial_instance_count=1, instance_type="ml.c4.xlarge")                  
response = runtime.invoke_endpoint( 
EndpointName=predictor.endpoint,                                
    Body=body,...)

Bu örnekte iki işleme konteynerimiz var (Processing-1 ve Processing-2) özellik işleme ve veri dönüştürmeleri için ve iki çıkarım kapsayıcısı (Inference-1 ve Inference-2) önceden işlenmiş veriler üzerinde ML modeli tahminlerini çalıştırmak için. PipelineModel örneği, verilerle ilgili çıkarım isteklerini işleyen dört kapsayıcıdan oluşan doğrusal bir diziden oluşan çıkarım hattını tanımlamanıza olanak tanır. Kapsayıcılar aynı örnek üzerinde aynı yerde konumlandırıldığından, düşük gecikmeyle çıkarım yapmanıza olanak tanır.

Çok sayıda model için çoklu model uç noktalarını ölçeklendirin

SageMaker çoklu model uç noktalarının faydaları, model birleştirmenin ölçeğine bağlı olarak artar. İki modeli tek uç noktayla barındırırken maliyet tasarruflarını görebilirsiniz; yüzlerce veya binlerce modelin kullanıldığı kullanım durumlarında ise tasarruflar çok daha fazladır.

MCE uç noktalarını ölçeklendirmek de basittir. SageMakerVariantInvocationsPerInstance Bir model uç noktasının her bir örneğinin, bir modeli tanımlamak için dakika başına ortalama kaç kez çağrıldığını veren önceden tanımlanmış ölçüm. TargetScaling politika. SageMaker, iş yükünüzdeki değişikliklere yanıt olarak bir model için sağlanan bulut sunucusu sayısını dinamik olarak ayarlar. İş yükü arttığında, otomatik ölçeklendirme daha fazla örneği çevrimiçi hale getirir ve istekleri karşılamaya devam etmek için hedef modeller ve kapsayıcılarla yüklenir. İş yükü azaldığında, otomatik ölçeklendirme gereksiz örnekleri kaldırır ve model kapsayıcılarının yükünü boşaltır; böylece kapsayıcılar kaynakları tüketmez ve kullanmadığınız bulut sunucuları için ödeme yapmazsınız. Belirli bir modele karşı ilk isteği tamamlama süresi, modeli indirmek için ek bir gecikmeye (soğuk başlangıç ​​adı verilir) maruz kalır. Amazon Basit Depolama Hizmeti (Amazon S3) ve belleğe yükleyin. Sonraki çağrılar, model zaten yüklendiğinden ek yük olmadan tamamlanır. Aşağıdaki koda bakın:

# AutoScaling client
asg = boto3.client('application-autoscaling')

# Resource type is variant and the unique identifier is the resource ID.
resource_id=f"endpoint/{endpoint_name}/variant/AllTraffic"

# scaling configuration
response = asg.register_scalable_target(
    ServiceNamespace='sagemaker', #
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount', 
    MinCapacity=1,
    MaxCapacity=4
)
#Target Scaling
response = asg.put_scaling_policy(
    PolicyName=f'Request-ScalingPolicy-{endpoint_name}',
    ServiceNamespace='sagemaker',
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount',
    PolicyType='TargetTrackingScaling',
    TargetTrackingScalingPolicyConfiguration={
        'TargetValue': 70.0, # Threshold
        'PredefinedMetricSpecification': {
            'PredefinedMetricType': 'SageMakerVariantInvocationsPerInstance',
        },
        'ScaleInCooldown': 300, # duration until scale in
        'ScaleOutCooldown': 60 # duration between scale out
    }
)

Önceki örnek politika yapılandırmasını izleyerek, SageMakerVariantInvocationsPerInstance Her örneğin bir değeri olacak şekilde değişken örneklerin sayısını ayarlamak için önceden tanımlanmış metrik InvocationsPerInstance 70'in ölçüsü.

Ayrıca SageMaker MCE'lerini kendi özel ölçümümüze göre de ölçeklendirebiliriz: CPUUtilization, MemoryUtilization, GPUUtilization, GPUMemoryUtilizationya da DiskUtilizationBelirli bir kaynağın kullanımına bağlı olarak örnek sayısını artırmak veya azaltmak için. Daha fazla bilgi için bkz. Amazon SageMaker Modellerini Otomatik Olarak Ölçeklendirin.

Her kapsayıcıdaki modelin, her çıkarım isteğinde benzer işlem ve gecikme gereksinimleri sergilemesi önerilir; çünkü MCE'ye giden trafik, yüksek CPU kullanım modelinden düşük CPU kullanım modeline geçerse ancak genel çağrı hacmi aynı kalırsa uç nokta, uç nokta ölçeği genişletmez ve yüksek CPU kullanım modeline yönelik tüm istekleri karşılamaya yetecek sayıda örnek olmayabilir.

Güvenli MCE'ler

Doğrudan çağrılı MCE'ler için, bellek ve depolama birimi paylaşılarak birden fazla kapsayıcı tek bir örnekte barındırılır. Kapsayıcıların güvenliğini sağlamak, isteklerin hedef kapsayıcılara doğru şekilde eşlenmesini sağlamak ve kullanıcılara hedef kapsayıcılara doğru erişim sağlamak önemlidir. Kısıtlayabilirsiniz invoke_endpoint kullanarak bir MCE içindeki sınırlı sayıda kapsayıcıya erişim sagemaker:TargetContainerHostname AWS Kimlik ve Erişim Yönetimi (IAM) durum anahtarı. SageMaker'ın kullanım alanları IAM rolleri İzin verilen veya reddedilen eylemleri ve kaynakları ve eylemlere izin verilen veya reddedilen koşulları belirtmek için kullandığınız IAM kimliğine dayalı politikaları sağlamak. Aşağıdaki politikalar, bir uç nokta içindeki belirli kapsayıcılara yapılan çağrıların nasıl sınırlandırılacağını gösterir:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetContainerHostname": ["customIps*", "common*"]
                }
            }
        }
    ]
}

Amazon CloudWatch ölçümlerini kullanarak çok modelli uç noktaları izleyin

Fiyat ve performans arasında denge kurmak için çok modelli uç noktaları kendi uygulamanızdaki modeller ve temsili trafikle test etmek isteyeceksiniz. SageMaker ek ölçümler sağlar Amazon Bulut İzleme çok modelli uç noktalar için uç nokta kullanımını ve önbellek isabet oranını belirleyebilir ve uç noktanızı optimize edebilirsiniz. Metrikler aşağıdaki gibidir:

  • ModelYükleniyorBeklemeZamanı – Bir çağrı isteğinin, çıkarımı gerçekleştirmek için hedef modelin indirilmesini veya yüklenmesini beklediği zaman aralığı.
  • ModelBoşaltmaZamanı – Modelin konteynerden boşaltılması için gereken zaman aralığı UnloadModel API çağrısı.
  • ModelİndirmeZamanı – Modelin Amazon S3'ten indirilmesi için geçen süre.
  • ModelYüklemeSüresi – Modelin konteyner aracılığıyla yüklenmesi için gereken zaman aralığı LoadModel API çağrısı.
  • ModelÖnbellekHit - Sayısı InvokeEndpoint Modelin zaten yüklendiği uç noktaya gönderilen istekler. alarak Average istatistik, modelin önceden yüklendiği isteklerin oranını gösterir.
  • YüklenenModelSayısı – Uç noktadaki kapsayıcılara yüklenen modellerin sayısı. Bu ölçüm örnek başına yayınlanır. Average 1 dakikalık bir süreye sahip istatistik size örnek başına yüklenen ortalama model sayısını ve Sum istatistik size uç noktadaki tüm örneklerde yüklenen modellerin toplam sayısını söyler. Bir modeli uç noktada birden çok kapsayıcıya yükleyebildiğinizden, bu metriğin izlediği modellerin mutlaka benzersiz olması gerekmez.

Ayrıca bir bulut sunucusunda çalışan her kapsayıcı tarafından kullanılan birkaç başka ölçüm de vardır; örneğin Invocations sayısını belirten InvokeEndpoint Uç nokta içindeki bir konteynere gönderilen istekler, ContainerLatency SageMaker'dan görüntülendiği gibi, bir seri çağrıdaki hedef kapsayıcının veya tüm kapsayıcıların yanıt vermesi için bir uç noktanın alacağı sürenin verilmesi ve CPUUtilization ve MemoryUtilizaton CPU birimlerini ve bellek yüzdesini gösterir.

Sonuç

Gönderide, SageMaker çok kapsayıcılı uç noktalarının maliyetleri ve kaynak kullanımını optimize etmede nasıl yardımcı olabileceğini tartıştık. MCE'lerin ne zaman kullanılacağına ilişkin örnekler aşağıdakileri içerir, ancak bunlarla sınırlı değildir:

  • Bir örneğin tam kapasitesini doyurmak için yeterli trafiğe sahip olmayan farklı çerçevelerdeki (TensorFlow, PyTorch ve Scikit-learn gibi) modelleri barındırma
  • Farklı makine öğrenimi algoritmaları (öneriler, tahmin veya sınıflandırma gibi) ve işleyici işlevleriyle aynı çerçevedeki modelleri barındırma
  • A/B testi gibi senaryolar için farklı çerçeve sürümlerinde (TensorFlow 1.x ve TensorFlow 2.x gibi) çalışan benzer mimarilerin karşılaştırmaları

SageMaker MCE'ler, gerçek zamanlı uç noktalarda 15'e kadar konteynerin dağıtılmasını ve düşük gecikme süreli çıkarım ve maliyet tasarrufu için bunları bağımsız olarak çağırmayı destekler. Modeller, kendi bağımsız servis yığınlarıyla tamamen heterojen olabilir. Bu kapsayıcıları her istek için sırayla veya bağımsız olarak çağırabilirsiniz. Farklı çerçevelerden birden fazla modeli tek bir örnekte güvenli bir şekilde barındırmak, modelleri özel tek örnekli uç noktalarda barındırmaya kıyasla %90'a kadar maliyet tasarrufu sağlayabilir.


yazarlar hakkında

Amazon SageMaker PlatoBlockchain Veri Zekası'ndaki çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımı. Dikey Arama. Ai.Dhaval Patel AWS'de Baş Makine Öğrenimi Mimarıdır. Dağıtılmış bilgi işlem ve yapay zeka ile ilgili sorunlar üzerinde büyük işletmelerden orta ölçekli girişimlere kadar çeşitli kuruluşlarla çalıştı. NLP ve bilgisayarla görme alanları dahil olmak üzere derin öğrenmeye odaklanmaktadır. Müşterilerin Amazon SageMaker'da yüksek performanslı model çıkarımı yapmasına yardımcı olur.

Amazon SageMaker PlatoBlockchain Veri Zekası'ndaki çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımı. Dikey Arama. Ai.vikram elango Virginia, ABD merkezli Amazon Web Services'te Kıdemli Yapay Zeka/Makine Öğrenimi Uzmanı Çözüm Mimarıdır. Vikram, küresel finans ve sigorta sektörü müşterilerine, makine öğrenimi uygulamalarını geniş ölçekte oluşturma ve dağıtma konusunda tasarım ve düşünce liderliği konusunda yardımcı oluyor. Şu anda doğal dil işleme, sorumlu yapay zeka, çıkarım optimizasyonu ve makine öğrenimini kuruluş genelinde ölçeklendirme konularına odaklanıyor. Boş zamanlarında ailesiyle birlikte seyahat etmekten, yürüyüş yapmaktan, yemek pişirmekten ve kamp yapmaktan hoşlanıyor.

Amazon SageMaker PlatoBlockchain Veri Zekası'ndaki çoklu çerçeve modelleriyle uygun maliyetli makine öğrenimi çıkarımı. Dikey Arama. Ai.Saurabh Trikande Amazon SageMaker Inference için Kıdemli Ürün Yöneticisidir. Müşterilerle çalışma konusunda tutkulu ve makine öğrenimini demokratikleştirme hedefiyle motive oluyor. Karmaşık makine öğrenimi uygulamaları, çok kiracılı makine öğrenimi modelleri, maliyet optimizasyonları ve derin öğrenme modellerinin dağıtımını daha erişilebilir hale getirmeyle ilgili temel zorluklara odaklanıyor. Saurabh boş zamanlarında yürüyüş yapmaktan, yenilikçi teknolojiler hakkında bilgi edinmekten, TechCrunch'ı takip etmekten ve ailesiyle vakit geçirmekten hoşlanıyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi