Üretken Veri Zekası

Amazon SageMaker'da LLM dağıtım maliyetlerini ortalama %50 oranında azaltan yeni çıkarım yetenekleri için Kubernetes Operatörlerini kullanın | Amazon Web Hizmetleri

Tarih:

Yeni bir versiyonunu duyurmanın heyecanını yaşıyoruz. Kubernet'ler için Amazon SageMaker Operatörleri ile Kubernetes için AWS Denetleyicileri (ACK). ACK, her denetleyicinin bir AWS hizmeti API'si ile iletişim kurduğu Kubernetes özel denetleyicileri oluşturmaya yönelik bir çerçevedir. Bu denetleyiciler, Kubernetes kullanıcılarının yalnızca Kubernetes API'yi kullanarak paketler, veritabanları veya mesaj kuyrukları gibi AWS kaynaklarını tedarik etmesine olanak tanır.

Bırakın v1.2.9 SageMaker ACK Operatörleri için destek eklendi çıkarım bileşenlerişimdiye kadar yalnızca SageMaker API ve AWS Yazılım Geliştirme Kitleri (SDK'ler) aracılığıyla kullanılabiliyordu. Çıkarım bileşenleri, dağıtım maliyetlerini optimize etmenize ve gecikmeyi azaltmanıza yardımcı olabilir. Yeni çıkarım bileşeni yetenekleriyle, bir veya daha fazla temel modeli (FM) aynı cihaz üzerinde dağıtabilirsiniz. Amazon Adaçayı Yapıcı uç nokta ve her FM için kaç hızlandırıcının ve ne kadar hafızanın ayrıldığını kontrol edin. Bu, kaynak kullanımının iyileştirilmesine yardımcı olur, model dağıtım maliyetlerini ortalama %50 azaltır ve uç noktaları kullanım durumlarınızla birlikte ölçeklendirmenize olanak tanır. Daha fazla ayrıntı için bkz. Amazon SageMaker, temel model dağıtım maliyetlerini ve gecikmeyi azaltmaya yardımcı olmak için yeni çıkarım özellikleri ekliyor.

Çıkarım bileşenlerinin SageMaker denetleyicisi aracılığıyla kullanılabilirliği, Kubernetes'i kontrol düzlemleri olarak kullanan müşterilerin, modellerini SageMaker'da dağıtırken çıkarım bileşenlerinden yararlanmasına olanak tanır.

Bu yazıda, SageMaker çıkarım bileşenlerini dağıtmak için SageMaker ACK Operatörlerinin nasıl kullanılacağını gösteriyoruz.

ACK nasıl çalışır?

Göstermek ACK nasıl çalışır?kullanarak bir örneğe bakalım Amazon Basit Depolama Hizmeti (Amazon S3). Aşağıdaki diyagramda Alice Kubernetes kullanıcımızdır. Uygulaması, adlı bir S3 paketinin varlığına bağlıdır. my-bucket.

ACK Nasıl Çalışır?

İş akışı aşağıdaki adımlardan oluşur:

  1. Alice bir telefon görüşmesi yapar kubectl apply, bir Kubernetes'i tanımlayan bir dosya iletme özel kaynak S3 kovasını anlatıyor. kubectl apply adı verilen bu dosyayı geçer apaçık, Kubernetes denetleyici düğümünde çalışan Kubernetes API sunucusuna.
  2. Kubernetes API sunucusu, S3 kümesini açıklayan bildirimi alır ve Alice'in sahip olup olmadığını belirler. izinleri özel bir kaynak oluşturmak için tür s3.services.k8s.aws/Bucketve özel kaynağın doğru şekilde biçimlendirildiğinden emin olun.
  3. Alice yetkiliyse ve özel kaynak geçerliyse Kubernetes API sunucusu, özel kaynağı kendisine yazar. etcd Bilgi deposu.
  4. Daha sonra Alice'e özel kaynağın oluşturulduğunu belirten yanıt verir.
  5. Bu noktada ACK hizmeti kontrolör Normal bir Kubernetes bağlamında bir Kubernetes çalışan düğümünde çalışan Amazon S3 için Koza, yeni bir özel kaynağın olduğu bildirildi s3.services.k8s.aws/Bucket yaratıldı.
  6. Amazon S3 için ACK hizmet denetleyicisi daha sonra Amazon S3 API ile iletişim kurarak S3 CreateBucket API'si AWS'de paketi oluşturmak için.
  7. ACK hizmet denetleyicisi, Amazon S3 API ile iletişim kurduktan sonra özel kaynağın güncellemesini yapmak için Kubernetes API sunucusunu çağırır. durum Amazon S3'ten aldığı bilgilerle.

Anahtar bileşenler

Yeni çıkarım yetenekleri, SageMaker'ın gerçek zamanlı çıkarım uç noktalarına dayanmaktadır. Daha önce olduğu gibi, SageMaker uç noktasını, uç nokta için örnek tipini ve ilk örnek sayısını tanımlayan bir uç nokta yapılandırmasıyla oluşturursunuz. Model yeni bir yapıda, bir çıkarım bileşeninde yapılandırılmıştır. Burada, model yapıları, kapsayıcı görüntüsü ve konuşlandırılacak model kopyalarının sayısıyla birlikte, bir modelin her bir kopyasına ayırmak istediğiniz hızlandırıcı sayısını ve bellek miktarını belirtirsiniz.

Yeni çıkarım yeteneklerini şuradan kullanabilirsiniz: Amazon SageMaker Stüdyosu, SageMaker Python SDK'sı, AWS SDK'ları, ve AWS Komut Satırı Arayüzü (AWS CLI). Onlar tarafından da destekleniyorlar AWS CloudFormation. Artık bunları şununla da kullanabilirsiniz: Kubernetes için SageMaker Operatörleri.

Çözüme genel bakış

Bu demoda, SageMaker denetleyicisini kullanarak bir kopyasını dağıtacağız. Dolly v2 7B modeli ve bir kopyası FLAN-T5 XXL modeli itibaren Sarılma Yüz Modeli Hub Yeni çıkarım yeteneklerini kullanarak SageMaker'ın gerçek zamanlı uç noktasında.

Önkoşullar

Devam etmek için SageMaker ACK denetleyici v1.2.9 veya üzerinin kurulu olduğu bir Kubernetes kümesine sahip olmanız gerekir. Nasıl tedarik edileceğine ilişkin talimatlar için Amazon Elastik Kubernetes Hizmeti (Amazon EKS) kümesi Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) eksctl kullanılarak Linux tarafından yönetilen düğümler, bkz. Amazon EKS'yi kullanmaya başlama – eksctl. SageMaker denetleyicisinin kurulumuna ilişkin talimatlar için bkz. ACK SageMaker Denetleyicisi ile Makine Öğrenimi.

Yüksek Lisans'ı barındırmak için hızlandırılmış örneklere (GPU'lar) erişmeniz gerekir. Bu çözüm ml.g5.12xlarge'ın bir örneğini kullanır; AWS hesabınızda bu bulut sunucularının kullanılabilirliğini kontrol edebilir ve aşağıdaki ekran görüntüsünde gösterildiği gibi, gerektiğinde Hizmet Kotası artış talebi aracılığıyla bu bulut sunucularını talep edebilirsiniz.

Hizmet Kotası Artırma Talebi

Çıkarım bileşeni oluşturma

Çıkarım bileşeninizi oluşturmak için EndpointConfig, Endpoint, Model, ve InferenceComponent YAML dosyaları, bu bölümde gösterilenlere benzer. Kullanmak kubectl apply -f <yaml file> Kubernetes kaynaklarını oluşturmak için.

Kaynağın durumunu şu adresten listeleyebilirsiniz: kubectl describe <resource-type>; Örneğin, kubectl describe inferencecomponent.

Çıkarım bileşenini model kaynağı olmadan da oluşturabilirsiniz. bölümünde sağlanan kılavuza bakın. API belgeleri daha fazla ayrıntı için.

EndpointConfig YAML

EndpointConfig dosyasının kodu aşağıdadır:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: EndpointConfig
metadata:
  name: inference-component-endpoint-config
spec:
  endpointConfigName: inference-component-endpoint-config
  executionRoleARN: <EXECUTION_ROLE_ARN>
  productionVariants:
  - variantName: AllTraffic
    instanceType: ml.g5.12xlarge
    initialInstanceCount: 1
    routingConfig:
      routingStrategy: LEAST_OUTSTANDING_REQUESTS

Uç nokta YAML'si

Endpoint dosyasının kodu aşağıdadır:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Endpoint
metadata:
  name: inference-component-endpoint
spec:
  endpointName: inference-component-endpoint
  endpointConfigName: inference-component-endpoint-config

YAML modeli

Model dosyasının kodu aşağıdadır:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Model
metadata:
  name: dolly-v2-7b
spec:
  modelName: dolly-v2-7b
  executionRoleARN: <EXECUTION_ROLE_ARN>
  containers:
  - image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04
    environment:
      HF_MODEL_ID: databricks/dolly-v2-7b
      HF_TASK: text-generation
---
apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Model
metadata:
  name: flan-t5-xxl
spec:
  modelName: flan-t5-xxl
  executionRoleARN: <EXECUTION_ROLE_ARN>
  containers:
  - image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04
    environment:
      HF_MODEL_ID: google/flan-t5-xxl
      HF_TASK: text-generation

Çıkarım Bileşeni YAML'leri

Aşağıdaki YAML dosyalarında ml.g5.12xlarge örneğinin 4 GPU ile geldiği göz önüne alındığında, her modele 2 GPU, 2 CPU ve 1,024 MB bellek ayırıyoruz:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-dolly
spec:
  inferenceComponentName: inference-component-dolly
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: dolly-v2-7b
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 2
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-flan
spec:
  inferenceComponentName: inference-component-flan
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: flan-t5-xxl
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 2
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

Modelleri çağır

Artık modelleri aşağıdaki kodu kullanarak çağırabilirsiniz:

import boto3
import json

sm_runtime_client = boto3.client(service_name="sagemaker-runtime")
payload = {"inputs": "Why is California a great place to live?"}

response_dolly = sm_runtime_client.invoke_endpoint(
    EndpointName="inference-component-endpoint",
    InferenceComponentName="inference-component-dolly",
    ContentType="application/json",
    Accept="application/json",
    Body=json.dumps(payload),
)
result_dolly = json.loads(response_dolly['Body'].read().decode())
print(result_dolly)

response_flan = sm_runtime_client.invoke_endpoint(
    EndpointName="inference-component-endpoint",
    InferenceComponentName="inference-component-flan",
    ContentType="application/json",
    Accept="application/json",
    Body=json.dumps(payload),
)
result_flan = json.loads(response_flan['Body'].read().decode())
print(result_flan)

Çıkarım bileşenini güncelleme

Mevcut bir çıkarım bileşenini güncellemek için YAML dosyalarını güncelleyebilir ve ardından kubectl apply -f <yaml file>. Aşağıda güncelleştirilmiş bir dosya örneği verilmiştir:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-dolly
spec:
  inferenceComponentName: inference-component-dolly
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: dolly-v2-7b
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 4 # Update the numberOfCPUCoresRequired.
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

Çıkarım bileşenini silme

Mevcut bir çıkarım bileşenini silmek için şu komutu kullanın: kubectl delete -f <yaml file>.

Kullanılabilirlik ve fiyatlandırma

Yeni SageMaker çıkarım yetenekleri bugün AWS Bölgeleri ABD Doğu (Ohio, K. Virginia), ABD Batı (Oregon), Asya Pasifik (Jakarta, Mumbai, Seul, Singapur, Sidney, Tokyo), Kanada (Orta), Avrupa ()'da mevcuttur. Frankfurt, İrlanda, Londra, Stockholm), Orta Doğu (BAE) ve Güney Amerika (São Paulo). Fiyatlandırma ayrıntıları için şu adresi ziyaret edin: Amazon SageMaker Fiyatlandırması.

Sonuç

Bu yazıda SageMaker çıkarım bileşenlerini dağıtmak için SageMaker ACK Operatörlerinin nasıl kullanılacağını gösterdik. Kubernetes kümenizi çalıştırın ve yeni SageMaker çıkarım yeteneklerini kullanarak FM'lerinizi hemen dağıtın!


Yazarlar Hakkında

Rajesh Ramchander AWS'de Profesyonel Hizmetler alanında Baş Makine Öğrenimi Mühendisidir. Müşterilere, AI/ML ve GenAI yolculuklarının çeşitli aşamalarında, yeni başlayanlardan işlerini yapay zeka öncelikli bir stratejiyle yönetenlere kadar yardımcı oluyor.

Amit Arora Amazon Web Services'ta Yapay Zeka ve Makine Öğrenimi Uzmanı Mimardır ve kurumsal müşterilerin yeniliklerini hızla ölçeklendirmek için bulut tabanlı makine öğrenimi hizmetlerini kullanmalarına yardımcı olur. Ayrıca Washington DC'deki Georgetown Üniversitesi'nde MS veri bilimi ve analitik programında yardımcı öğretim görevlisidir.

Süryanş Singh AWS SageMaker'da Yazılım Geliştirme Mühendisidir ve AWS müşterileri için uygun ölçekte makine öğrenimi ile dağıtılan altyapı çözümleri geliştirmeye çalışmaktadır.

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.

John LiuJohn Liu Amazon SageMaker ekibinde bir Yazılım Geliştirme Mühendisidir. Mevcut çalışması, geliştiricilerin makine öğrenimi modellerini verimli bir şekilde barındırmasına ve çıkarım performansını iyileştirmesine yardımcı olmaya odaklanmaktadır. Mekânsal veri analizi ve toplumsal sorunları çözmek için yapay zekayı kullanma konusunda tutkulu.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?