Amazon SageMaker PlatoBlockchain Data Intelligence'da topluluk makine öğrenimi modellerini çalıştırın. Dikey Arama. Ai.

Amazon SageMaker'da topluluk makine öğrenimi modellerini çalıştırın

Makine öğreniminde (ML) model dağıtımı giderek daha karmaşık hale geliyor. Yalnızca tek bir ML modelini değil, topluluk iş akışları olarak temsil edilen büyük ML modeli gruplarını dağıtmak istiyorsunuz. Bu iş akışları birden fazla ML modelinden oluşur. Bu makine öğrenimi modellerini üretmek zordur çünkü çeşitli performans ve gecikme gereksinimlerine uymanız gerekir.

Amazon Adaçayı Yapıcı tek örnekli toplulukları destekler Triton Çıkarım Sunucusu. Bu yetenek, tek bir örneğe sığan model topluluklarını çalıştırmanıza olanak tanır. Sahne arkasında SageMaker, ultra düşük (tek basamaklı milisaniye) çıkarım gecikmesiyle verimi ve donanım kullanımını en üst düzeye çıkarmak amacıyla uç noktanın arkasındaki her örnekteki topluluğu yönetmek için Triton Çıkarım Sunucusundan yararlanıyor. Triton ile ayrıca desteklenen çok çeşitli makine öğrenimi çerçeveleri (TensorFlow, PyTorch, ONNX, XGBoost ve NVIDIA TensorRT dahil) ve GPU'lar, CPU'lar ve AWS Çıkarımları.

SageMaker'ın bu özelliği sayesinde, maliyetli ağ gecikmesini önleyerek ve topluluk çıkarım hatları için bilgi işlem ve veri yerelliğinin avantajlarından yararlanarak iş yüklerinizi optimize edebilirsiniz. Bu yazıda, Triton Inference Server'ı kullanmanın faydalarını ve bunun iş yükünüz için doğru seçenek olup olmadığına dair değerlendirmeleri tartışacağız.

Çözüme genel bakış

Triton Inference Server, ekiplerin eğitimli yapay zeka modellerini herhangi bir GPU veya CPU tabanlı altyapı üzerindeki herhangi bir çerçeveden dağıtmasına, çalıştırmasına ve ölçeklendirmesine olanak sağlamak için tasarlanmıştır. Buna ek olarak, dinamik gruplandırma, eşzamanlı çalıştırmalar, optimum model yapılandırması, model topluluğu yetenekleri ve akış girişleri desteği gibi özelliklerle uygun ölçekte yüksek performanslı çıkarım sunmak üzere optimize edilmiştir.

İş yükleri, modellerinin sunulabilmesini sağlamak için Triton'un sağladığı yetenekleri dikkate almalıdır. Triton, TensorFlow, PyTorch, ONNX, XGBoost ve NVIDIA TensorRT dahil olmak üzere bir dizi popüler çerçeveyi kullanıma hazır olarak destekler. Triton ayrıca çeşitli arka uçları da destekler Algoritmaların düzgün çalışması için bunlar gereklidir. Modellerinizin bu arka uçlar tarafından desteklendiğinden emin olmalısınız ve bir arka ucun desteklememesi durumunda Triton, kendi modelinizi uygulamanıza ve entegre etmenize izin verir. Ayrıca algoritma sürümünüzün desteklendiğini doğrulamalı ve model yapıtlarının ilgili arka uç tarafından kabul edilebilir olduğundan emin olmalısınız. Özel algoritmanızın desteklenip desteklenmediğini kontrol etmek için bkz. Triton Çıkarım Sunucusu Arka Ucu NVIDIA tarafından sağlanan yerel olarak desteklenen arka uçların listesi için.

Algoritmanız için yerel olarak desteklenen bir arka ucun mevcut olmaması gibi, modellerinizin veya model topluluklarınızın daha fazla çaba gerektirmeden Triton üzerinde çalışmadığı bazı senaryolar olabilir. Dikkate alınması gereken başka hususlar da vardır; örneğin, özellikle yük boyutunuz isteğinize göre büyük olduğunda, yük formatı ideal olmayabilir. Her zaman olduğu gibi beklentilerinizin karşılandığından emin olmak için bu iş yüklerini dağıttıktan sonra performansınızı doğrulamanız gerekir.

Bir görüntü sınıflandırma sinir ağı modelini ele alalım ve iş yüklerimizi nasıl hızlandırabileceğimizi görelim. Bu örnekte topluluğumuz bağlamında ön işlememizi hızlandırmak için NVIDIA DALI arka ucunu kullanıyoruz.

Triton model toplulukları oluşturun

Triton Inference Server, yapay zeka modellerinin uygun ölçekte dağıtımını basitleştirir. Triton Inference Server, ön işleme ve işlem sonrası işlem hatlarını oluşturmayı kolaylaştıran kullanışlı bir çözümle birlikte gelir. Triton Çıkarım Sunucusu platformu, verimliliği sağlarken ve verimi optimize ederken çıkarım sürecine katılan ardışık düzen topluluk modelleri oluşturmak için kullanabileceğiniz topluluk zamanlayıcıyı sağlar.

Triton Inference Server, model depolarındaki modelleri sunar. DALI ön işleme modelini, TensorFlow başlangıç ​​V3 modelini ve model topluluğu yapılandırmasını içeren topluluk modeli için model deposu düzenine bakalım. Her alt dizin, ilgili modellere ilişkin depo bilgilerini içerir. config.pbtxt dosyası, modeller için model yapılandırmasını açıklar. Her dizinin, modelin her sürümü için bir sayısal alt klasörü olması gerekir ve bu, Triton'un desteklediği belirli bir arka uç tarafından çalıştırılır.

NVIDIA Triton Model Havuzu

NVIDIA DALI

Bu yazı için model grubumuzda ön işleme modeli olarak NVIDIA Veri Yükleme Kütüphanesini (DALI) kullanıyoruz. NVIDIA DALI, derin öğrenme uygulamalarını hızlandırmak amacıyla veri yükleme ve ön işlemeye yönelik bir kitaplıktır. Görüntü, video ve ses verilerinin yüklenmesi ve işlenmesi için optimize edilmiş yapı taşlarından oluşan bir koleksiyon sağlar. Bunu, popüler derin öğrenme çerçevelerindeki yerleşik veri yükleyiciler ve veri yineleyiciler için taşınabilir bir yedek parça olarak kullanabilirsiniz.

NVIDIA Dali

Aşağıdaki kod, bir DALI arka ucu için model yapılandırmasını gösterir:

name: "dali"
backend: "dali"
max_batch_size: 256
input [
  {
    name: "DALI_INPUT_0"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "DALI_OUTPUT_0"
    data_type: TYPE_FP32
    dims: [ 299, 299, 3 ]
  }
]
parameters: [
  {
    key: "num_threads"
    value: { string_value: "12" }
  }
]

Başlangıç ​​V3 modeli

Bu yazı için DALI'nin Inception V3'lü bir model grubunda nasıl kullanıldığını gösteriyoruz. Inception V3 TensorFlow önceden eğitilmiş modeli, GraphDef formatında, adlı tek bir dosya olarak kaydedilir. model.graphdef. config.pbtxt dosya model adı, platform hakkında bilgi içerir, max_batch_sizeve girdi ve çıktı sözleşmeleri. ayarlamanızı öneririz. max_batch_size yapılandırmayı başlangıçtaki V3 modeli parti boyutundan daha küçük olacak şekilde ayarlayın. Etiket dosyasında 1,000 farklı sınıfa ait sınıf etiketleri bulunur. Başlangıç ​​sınıflandırma modeli etiketlerini şuraya kopyalıyoruz: inception_graphdef model deposundaki dizin. Etiketler dosyası, 1,000 sınıf etiketini içerir. IMAGEnet sınıflandırma veri seti

name: "inception_graphdef"
platform: "tensorflow_graphdef"
max_batch_size: 256
input [
  {
    name: "input"
    data_type: TYPE_FP32
    format: FORMAT_NHWC
    dims: [ 299, 299, 3 ]
  }
]
output [
  {
    name: "InceptionV3/Predictions/Softmax"
    data_type: TYPE_FP32
    dims: [ 1001 ]
    label_filename: "inception_labels.txt"
  }
]

Triton topluluğu

Aşağıdaki kod, DALI ön işleme ve görüntü sınıflandırmasına yönelik bir topluluk modelinin model yapılandırmasını gösterir:

name: "ensemble_dali_inception"
platform: "ensemble"
max_batch_size: 256
input [
  {
    name: "INPUT"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "OUTPUT"
    data_type: TYPE_FP32
    dims: [ 1001 ]
  }
]
ensemble_scheduling {
  step [
    {
      model_name: "dali"
      model_version: -1
      input_map {
        key: "DALI_INPUT_0"
        value: "INPUT"
      }
      output_map {
        key: "DALI_OUTPUT_0"
        value: "preprocessed_image"
      }
    },
    {
      model_name: "inception_graphdef"
      model_version: -1
      input_map {
        key: "input"
        value: "preprocessed_image"
      }
      output_map {
        key: "InceptionV3/Predictions/Softmax"
        value: "OUTPUT"
      }
    }
  ]
}

SageMaker uç noktası oluşturun

SageMaker uç noktaları Milisaniyelik yanıt süresinin gerekli olduğu durumlarda gerçek zamanlı barındırmaya olanak tanır. SageMaker, model barındırma yönetiminin benzersiz ağır yükünü üstlenir ve otomatik ölçeklendirme yeteneğine sahiptir. Buna ek olarak, modelinizin birden çok varyantını barındırma, modellerinizin A/B testleri, Amazon Bulut İzleme Model performansının gözlemlenebilirliğini sağlamak ve model sapmasını izlemek.

Yüklediğimiz model yapıtlarından bir SageMaker modeli oluşturalım Amazon Basit Depolama Hizmeti (Amazon S3).

Daha sonra ek bir ortam değişkeni de sağlıyoruz: SAGEMAKER_TRITON_DEFAULT_MODEL_NAMETriton tarafından yüklenecek modelin adını belirten. Bu anahtarın değeri, Amazon S3'e yüklenen model paketindeki klasör adıyla eşleşmelidir. Bu değişken, tek bir model kullandığınız durumlarda isteğe bağlıdır. Topluluk modellerinde Triton'un SageMaker'da başlatılması için bu anahtarın belirtilmesi gerekir.

Ek olarak, ayarlayabilirsiniz SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT ve SAGEMAKER_TRITON_THREAD_COUNT iplik sayımlarını optimize etmek için.

container = {
    "Image": triton_image_uri,
    "ModelDataUrl": model_uri,
    "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "ensemble_dali_inception"},
}
create_model_response = sm_client.create_model(
    ModelName=sm_model_name, ExecutionRoleArn=role, PrimaryContainer=container
)

Önceki modelle, uç noktada istediğimiz örneklerin türünü ve sayısını belirtebileceğimiz bir uç nokta konfigürasyonu oluşturuyoruz:

create_endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "InstanceType": instance_type,
            "InitialVariantWeight": 1,
            "InitialInstanceCount": 1,
            "ModelName": sm_model_name,
            "VariantName": "AllTraffic",
        }
    ],
)
endpoint_config_arn = create_endpoint_config_response["EndpointConfigArn"]

Bu uç nokta yapılandırmasını yeni bir SageMaker uç noktası oluşturmak ve dağıtımın bitmesini beklemek için kullanırız. Dağıtım başarılı olduğunda durum InService olarak değişir.

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name
)
endpoint_arn = create_endpoint_response["EndpointArn"]

Çıkarım yükü

Giriş veri yükü görüntüsü, ön işleme DALI hattından geçer ve Triton Inference Server tarafından sağlanan topluluk planlayıcısında kullanılır. Çıkarım uç noktasına aktarılacak yükü oluşturuyoruz:

payload = {
    "inputs": [
        {
            "name": "INPUT",
            "shape": rv2.shape,
            "datatype": "UINT8",
            "data": rv2.tolist(),
        }
    ]
}

Topluluk çıkarımı

Uç noktayı çalıştırdığımızda, yük formatı olarak JSON'u kullanarak bir çıkarım isteği gerçekleştirmek için örnek görüntüyü kullanabiliriz. Çıkarım isteği formatı için Triton, KFServing topluluğu standart çıkarım protokollerini kullanır.

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name, ContentType="application/octet-stream", Body=json.dumps(payload)
)
print(json.loads(response["Body"].read().decode("utf8")))

İle binary+json biçiminde, Triton'un ikili veri yükünü doğru şekilde ayrıştırmasına izin vermek için başlıktaki istek meta verilerinin uzunluğunu belirtmemiz gerekir. Bu, özel bir İçerik Türü başlığı kullanılarak yapılır application/vnd.sagemaker-triton.binary+json;json-header-size={}.

Bu, bir Inference-Header-Content-Length SageMaker'da özel başlıklara izin verilmediğinden bağımsız bir Triton sunucusunda başlık.

Tritonclient paketi, spesifikasyonun ayrıntılarını bilmek zorunda kalmadan yükün oluşturulmasına yönelik yardımcı yöntemler sağlar. Çıkarım isteğimizi, çıkarım için daha düşük gecikmeler sağlayan ikili biçime dönüştürmek için aşağıdaki yöntemleri kullanırız. GitHub'a bakın defter uygulama detayları için.

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType="application/vnd.sagemaker-triton.binary+json;json-header-size={}".format(
        header_length
    ),
    Body=request_body,
)

Sonuç

Bu yazıda, SageMaker'da tek bir bulut sunucusunda çalışan model topluluklarını nasıl üretebileceğinizi gösterdik. Bu tasarım modeli, herhangi bir ön işleme ve son işleme mantığını çıkarım tahminleriyle birleştirmek için yararlı olabilir. SageMaker, topluluk çıkarımını tüm ana çerçeveleri destekleyen bir bulut sunucusundaki tek bir kapsayıcıda çalıştırmak için Triton'u kullanır.

SageMaker'daki Triton toplulukları hakkında daha fazla örnek için bkz. GitHub repo. Denemek!


Yazarlar Hakkında

Amazon SageMaker PlatoBlockchain Data Intelligence'da topluluk makine öğrenimi modellerini çalıştırın. Dikey Arama. Ai.James Park Amazon Web Services'te Çözüm Mimarıdır. AWS'de teknoloji çözümleri tasarlamak, oluşturmak ve dağıtmak için Amazon.com ile birlikte çalışıyor ve yapay zeka ve makine öğrenimine özel ilgi duyuyor. Boş zamanlarında yeni kültürler araştırmaktan, yeni deneyimlerden ve son teknoloji trendlerini takip etmekten hoşlanıyor.

Amazon SageMaker PlatoBlockchain Data Intelligence'da topluluk makine öğrenimi modellerini çalıştırın. 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, 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ı olur. Ş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 Data Intelligence'da topluluk makine öğrenimi modellerini çalıştırın. 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