AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.

AWS dağıtımında tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme

Günümüzde birçok AWS müşterisi, kurumsal kullanıma hazır makine öğrenimi (ML) platformlarını şu platformlarda oluşturuyor: Amazon Elastik Kubernetes Hizmeti (Amazon EKS) kullanarak AWS'de Kubeflow (Kubeflow'un AWS'ye özgü bir dağıtımı), bilgisayarla görme, doğal dili anlama, konuşma çevirisi ve finansal modelleme dahil olmak üzere birçok kullanım durumunda.

İle açık kaynaklı Kubeflow v1.6.1'in son sürümü, Kubeflow topluluğu, kurumsal kullanım örnekleri için Kubeflow'un bu büyük ölçekli benimsenmesini desteklemeye devam ediyor. En son sürüm, Kubernetes v1.22 desteği, PyTorch için birleştirilmiş Python SDK, MXNet, MPI, Kubeflow'un dağıtılmış Eğitim Operatöründe XGBoost, model hizmeti için yeni ClusterServingRuntime ve ServingRuntime CRD'leri ve çok daha fazlası gibi birçok yeni heyecan verici özellik içerir.

AWS 1.6.1'de Kubeflow'un yakın zamanda kullanıma sunulmasıyla AWS'nin Kubeflow'a yaptığı katkılar, tüm yukarı akış açık kaynaklı Kubeflow özelliklerini destekler ve son derece güvenilir, güvenli, taşınabilir ve ölçeklenebilir makine öğrenimi sistemleri.

Bu gönderide, AWS v1.6.1'de yeni Kubeflow özelliklerini ele alıyoruz ve size şunları sunmak için tek bir platformda toplanmış üç önemli entegrasyonu vurguluyoruz:

Bu blogdaki kullanım örneği, özellikle hibrit makine öğrenimi mimarileri oluşturmanıza olanak tanıyan mevcut Kubernetes iş akışlarınıza eklenebilecek AWS'de Kubeflow ile SageMaker entegrasyonuna odaklanacaktır.

AWS'de Kubeflow

AWS 1.6.1'de Kubeflow, mevcut yeteneklerin üzerine aşağıdaki AWS hizmetlerinin eklenmesiyle Kubeflow'u kullanmak için açık bir yol sağlar:

  • SageMaker Operators for Kubernetes (ACK) ve SageMaker Components for Kubeflow Pipelines kullanarak hibrit makine öğrenimi iş akışlarını çalıştırmak için Kubeflow ile SageMaker Entegrasyonu.
  • Otomatik devreye alma seçenekleri, Kustomize betikleri ve Helm çizelgeleri kullanılarak iyileştirildi ve basitleştirildi.
  • Mevcut tüm uygulamalar için Terraform kullanılarak AWS üzerinde Kubeflow için Kod Olarak Altyapı (IaC) tek tıkla devreye alma desteği eklendi dağıtım seçenekleri. Bu komut dosyası, aşağıdaki AWS kaynaklarının oluşturulmasını otomatikleştirir:
  • Için destek AWS Özel Bağlantı ticari olmayan Bölge kullanıcılarının ilgili S3 uç noktalarına bağlanmasına olanak tanıyan Amazon S3 için.
  • İle entegrasyon eklendi Prometheus için Amazon Tarafından Yönetilen Hizmet (AMP) ve Amazon Tarafından Yönetilen Grafana AWS'de Kubeflow ile ölçümleri izlemek için.
  • TensorFlow 2.10.0 ve PyTorch 1.12.1 tabanlı en yeni derin öğrenme kapsayıcı görüntüleri ile Kubeflow not defteri sunucu kapsayıcıları güncellendi.
  • Dağıtılmış olarak çalıştırmak için AWS DLC'leri ile entegrasyon Eğitim ve sonuç iş yükleri.

Aşağıdaki mimari şeması, Kubeflow on AWS'de Kubeflow denetimi ve veri düzlemi bileşenleri için kullanılabilen tüm hizmet entegrasyonlarının (zaten bahsedilenler dahil) hızlı bir anlık görüntüsüdür. Kubeflow kontrol düzlemi, bulutta Kubernetes uygulamalarını çalıştırmak ve ölçeklendirmek için kullanılan yönetilen bir konteyner hizmeti olan Amazon EKS'nin üstüne kurulur. Bu AWS hizmet entegrasyonları, Kubeflow kontrol düzleminin kritik parçalarını Kubernetes'ten ayırmanıza olanak tanıyarak güvenli, ölçeklenebilir, dayanıklı ve maliyeti optimize edilmiş bir tasarım sağlar. Bu hizmet entegrasyonlarının açık kaynaklı Kubeflow'a kattığı değer hakkında daha fazla ayrıntı için bkz. AWS'de Kubeflow ile Kubernetes üzerinde ölçeklenebilir bir makine öğrenimi sistemi oluşturun ve dağıtın.

Kubeflow on AWS 1.6.1 temel özelliklerinin kuruluşunuza nasıl yardımcı olabileceğini daha ayrıntılı olarak ele alalım.

AWS'de Kubeflow özellik ayrıntıları

Kubeflow 1.6.1 sürümüyle, farklı türden müşteriler için hangi seçeneği seçerseniz seçin Kubeflow'u kullanmaya başlamanızı kolaylaştıran daha iyi araçlar sağlamaya çalıştık. Bu araçlar iyi bir başlangıç ​​noktası sağlar ve ihtiyaçlarınıza tam olarak uyacak şekilde değiştirilebilir.

Dağıtım seçenekleri

Farklı müşteri kullanım durumları için farklı dağıtım seçenekleri sunuyoruz. Burada, Kubeflow dağıtımınızı hangi AWS hizmetleriyle entegre etmek istediğinizi seçebilirsiniz. Dağıtım seçeneklerini daha sonra değiştirmeye karar verirseniz, yeni dağıtım için yeni bir yükleme yapmanızı öneririz. Aşağıdaki dağıtım seçenekleri mevcuttur:

Kubeflow'u minimum değişiklikle dağıtmak istiyorsanız, vanilya dağıtım seçeneği. Kullanılabilir tüm dağıtım seçenekleri Kustomize, Helm veya Terraform kullanılarak kurulabilir.

Ayrıca, bu dağıtım seçeneklerinden herhangi birinin üzerine kurulabilen farklı eklenti dağıtımlarımız da mevcuttur:

Kurulum seçenekleri

Hangi dağıtım seçeneğinin ihtiyaçlarınıza en uygun olduğuna karar verdikten sonra, bu dağıtımları nasıl kurmak istediğinizi seçebilirsiniz. Hem uzmanlara hem de yeni gelenlere hizmet etme çabası içinde, farklı düzeylerde otomasyon ve konfigürasyona sahibiz.

Seçenek 1: Terraform (IaC)

Bu, bir EKS kümesi ve ilgili tüm AWS altyapı kaynaklarını oluşturur ve ardından Kubeflow'u Terraform kullanarak tek bir komutta dağıtır. Dahili olarak bu, EKS planlarını ve Helm çizelgelerini kullanır.

Bu seçenek aşağıdaki avantajlara sahiptir:

  • Kuruluşlara, belirli Kubeflow bileşen yapılandırmaları hakkında endişelenmek zorunda kalmadan Amazon EKS ve Kubeflow'u tek bir komutla dağıtma esnekliği sağlar. Bu, teknoloji değerlendirmesinin, prototip oluşturmanın ve ürün geliştirme yaşam döngüsünün hızlandırılmasına son derece yardımcı olacak ve terraform modüllerini kullanma ve projeye özel ihtiyaçları karşılayacak şekilde değiştirme esnekliği sağlayacaktır.
  • Terraform'u bulut stratejilerinin merkezine alan birçok kuruluş, artık bulut hedeflerine ulaşmak için Kubeflow on AWS Terraform çözümünü kullanabilir.

2. Seçenek: Özelleştirme veya Dümen Haritaları:

Bu seçenek, Kubeflow'u iki adımlı bir süreçte dağıtmanıza olanak tanır:

  1. Amazon EKS, Amazon RDS, Amazon S3 ve Amazon Cognito gibi AWS kaynaklarını, AWS dağıtımına dahil olan otomatik komut dosyaları aracılığıyla veya manuel olarak adım adım kılavuz.
  2. Helm çizelgelerini veya Kustomize'u kullanarak Kubeflow dağıtımlarını kurun.

Bu seçenek aşağıdaki avantajlara sahiptir:

  • Bu yükleme seçeneğinin temel amacı, Kubeflow ile ilgili Kubernetes yapılandırmaları sağlamaktır. Bu nedenle, mevcut EKS kümelerini veya Amazon RDS, Amazon S3 ve Amazon Cognito gibi ilgili AWS kaynaklarından herhangi birini oluşturmayı veya getirmeyi ve AWS üzerinde Kubeflow ile çalışacak şekilde yapılandırmayı ve yönetmeyi seçebilirsiniz.
  • Açık kaynaklı bir Kustomize Kubeflow bildiriminden AWS Kubeflow dağıtımına geçmek daha kolaydır.

Aşağıdaki diyagram, her iki seçeneğin mimarisini göstermektedir.

AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.

SageMaker ile entegrasyon

SageMaker, makine öğrenimi iş akışlarını yönetmek için özel olarak tasarlanmış ve optimize edilmiş, tam olarak yönetilen bir hizmettir. Altyapı yönetiminin farklılaştırılmamış ağır yüklerini ortadan kaldırır ve makine öğrenimi modeli oluşturma, eğitim ve çıkarım için kümeleri yönetmek üzere BT ve DevOps'a yatırım yapma ihtiyacını ortadan kaldırır.

Taşınabilirlik gereksinimleri veya şirket içi standart kısıtlamaları olan birçok AWS müşterisi, eğitim ve çıkarım iş yüklerini çalıştıran tekrarlanabilir makine öğrenimi ardışık düzenleri kurmak için Amazon EKS'yi kullanır. Ancak bu, geliştiricilerin temel makine öğrenimi altyapısını optimize etmek, yüksek kullanılabilirlik ve güvenilirlik sağlamak ve uygun güvenlik ve düzenleme gereksinimlerine uymak için özel kod yazmasını gerektirir. Bu nedenle bu müşteriler, model eğitimi ve dağıtımları için maliyeti optimize edilmiş ve yönetilen altyapı için SageMaker'ı kullanmak ve standardizasyon ve taşınabilirliği korumak için orkestrasyon ve makine öğrenimi ardışık düzenleri için Kubernetes'i kullanmaya devam etmek istiyor.

AWS, bu ihtiyacı karşılamak için aşağıdaki iki seçeneği kullanarak modelleri Amazon EKS'den SageMaker'da eğitmenize, ayarlamanıza ve dağıtmanıza olanak tanır:

  • tabanlı olan Kubernetes için Amazon SageMaker ACK Operatörleri Kubernet'ler için AWS Denetleyicileri (ACK) çerçevesi. ACK, Kubernetes kullanıcılarının yalnızca Kubernetes API'sini kullanarak veritabanları veya mesaj kuyrukları gibi AWS kaynaklarını tedarik etmesine olanak tanıyan Kubernetes özel denetleyicileri oluşturmak için standartlaştırma getiren AWS stratejisidir. SageMaker ACK Operatörleri, SageMaker konsolunda oturum açmadan SageMaker'da makine öğrenimi modellerini eğitmek, ayarlamak ve dağıtmak için Kubernetes'i kontrol düzlemi olarak kullanan makine öğrenimi geliştiricileri ve veri bilimcileri için kolaylaştırır.
  • The Kubeflow Pipelines için SageMaker Bileşenleri, SageMaker'ı Kubeflow Pipelines'ın taşınabilirliği ve düzenlemesi ile entegre etmenize olanak tanır. SageMaker bileşenleri ile ardışık düzen iş akışındaki her iş, yerel Kubernetes kümesi yerine SageMaker üzerinde çalışır. Bu, Kubeflow Pipelines'ınızdan yerel SageMaker eğitimi, ayarlama, uç nokta devreye alma ve toplu dönüştürme işleri oluşturmanıza ve izlemenize olanak tanır, böylece veri işleme ve eğitim işleri dahil olmak üzere tüm bilgi işlemi Kubernetes kümesinden SageMaker'ın makine öğrenimi için optimize edilmiş yönetilen hizmetine taşımanıza olanak tanır.

AWS v1.6.1'de Kubeflow ile başlayarak, mevcut tüm Kubeflow dağıtım seçenekleri, her iki Amazon SageMaker entegrasyon seçeneğini varsayılan olarak tek bir platformda bir araya getirir. Bu, artık SageMaker işlerini, özel SageMaker kaynağını göndererek bir Kubeflow Notebook sunucusundan veya SageMaker bileşenlerini kullanarak Kubeflow işlem hattı adımından SageMaker ACK işleçlerini kullanarak gönderebileceğiniz anlamına gelir.

SageMaker Components'ın iki sürümü vardır – Boto3 (AWS SDK for AWS SDK for Python) tabanlı sürüm 1 bileşenleri ve SageMaker Operator for K8s (ACK) tabanlı sürüm 2 bileşenleri. Yeni SageMaker bileşenleri sürüm 2, en son SageMaker eğitim api'lerini destekler ve bileşenin bu sürümüne daha fazla SageMaker özelliği eklemeye devam edeceğiz. Bununla birlikte, eğitim için Sagemaker bileşenleri sürüm 2'yi ve hiperparametre ayarlama, işleri işleme, barındırma ve daha pek çok şey gibi diğer SageMaker özellikleri için sürüm 1'i birleştirme esnekliğine sahipsiniz.

Prometheus ve Grafana ile entegrasyon

Prometheus, Kubernetes kümelerinde çalışacak şekilde yapılandırabileceğiniz açık kaynaklı bir ölçüm toplama aracıdır. Ana Prometheus sunucusu, Kubernetes kümelerinde çalışırken, düzenli olarak pod uç noktalarını sıyırır.

Kubeflow Pipelines (KFP) ve Notebook gibi Kubeflow bileşenleri, çalıştırılan deney sayısı veya not defteri sayısı gibi bileşen kaynaklarının izlenmesine olanak sağlamak için Prometheus metrikleri yayar.

Bu ölçümler, Kubernetes kümesinde çalışan bir Prometheus sunucusu tarafından toplanabilir ve Prometheus Sorgu Dili (PromQL) kullanılarak sorgulanabilir. Prometheus'un desteklediği özellikler hakkında daha fazla ayrıntı için şuraya göz atın: Prometheus belgeleri.

AWS dağıtımında Kubeflow, aşağıdaki AWS tarafından yönetilen hizmetlerle entegrasyon için destek sağlar:

  1. Amazon Tarafından Yönetilen Prometheus (AMP) Prometheusmüşterilerin konteyner ortamlarını ölçekte güvenli bir şekilde izlemesini kolaylaştıran konteyner altyapısı ve konteynerler için uygulama ölçümleri için uyumlu izleme hizmeti. AMP'yi kullanarak AWS, üçüncü taraf ISV'ler ve BT portföyünüzdeki diğer kaynaklar dahil olmak üzere gözlemlenebilirlik sisteminizdeki birden çok veri kaynağından toplanan ölçümlerinizi, günlüklerinizi ve izlerinizi görselleştirebilir, analiz edebilir ve bunlarla ilgili alarm verebilirsiniz.
  2. Açık kaynağa dayalı, tümüyle yönetilen ve güvenli bir veri görselleştirme hizmeti olan Amazon Managed Grafana grafana müşterilerin birden çok veri kaynağından uygulamaları için operasyonel metrikleri, günlükleri ve izleri anında sorgulamasına, ilişkilendirmesine ve görselleştirmesine olanak tanıyan bir proje. Amazon Tarafından Yönetilen Grafana, otomatikleştirilmiş sürüm güncellemeleri ve güvenlik yamaları ile kullanım talepleri arttıkça bilgi işlem ve veritabanı altyapısını otomatik olarak ölçeklendirerek Grafana'nın operasyonel yönetiminin yükünü boşaltır.

Kubeflow on AWS dağıtımı, Prometheus ölçümlerinin uygun ölçekte güvenli bir şekilde alınmasını ve görselleştirilmesini kolaylaştırmak için Amazon Managed Service for Prometheus ve Amazon Managed Grafana entegrasyonu için destek sağlar.

Aşağıdaki metrikler alınır ve görselleştirilebilir:

Amazon Managed Service for Prometheus'u ve Amazon Managed Grafana'yı Kubeflow kümeniz için yapılandırmak üzere bkz. AWS'de Kubeflow ile ölçümleri izlemek için Prometheus, Amazon Managed Service for Prometheus ve Amazon Managed Grafana'yı kullanın.

Çözüme genel bakış

Bu kullanım durumunda, Terraform yükleme seçeneğini kullanarak Kubeflow vanilya dağıtımını kullanıyoruz. Kurulum tamamlandığında Kubeflow dashboarda giriş yapıyoruz. Panodan, bir görüntü sınıflandırma modeli için dağıtılmış eğitim çalıştırmak üzere SageMaker'ı kullanan bir Kubeflow ardışık düzeni ve model dağıtımı için bir SageMaker uç noktası oluşturmak üzere bir Kubeflow Jupyter not defteri sunucusunu çalıştırıyoruz.

Önkoşullar

Aşağıdaki ön koşulları karşıladığınızdan emin olun:

  • Bir var AWS hesabı.
  • İçinde olduğunuzdan emin olun us-west-2 Bu örneği çalıştırmak için bölge.
  • ile etkileşim için Google Chrome'u kullanın. AWS Yönetim Konsolu ve Kubeflow.
  • Hizmet Kotaları konsolunu kullanarak hesabınızın ml.p3.2xlarge için SageMaker Eğitimi kaynak türü sınırının 2'ye yükseltildiğinden emin olun.
  • İsteğe bağlı olarak kullanabilirsiniz AWS Bulut9, tüm işleri web tarayıcınızdan tamamlamayı sağlayan bulut tabanlı bir entegre geliştirme ortamı (IDE). Kurulum talimatları için bkz. Cloud9 IDE'yi kurun. AWS Cloud18.04 ayarlarında platform olarak Ubuntu Server 9'ü seçin.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.Ardından AWS Cloud9 ortamınızdan artı işaretini seçin ve yeni terminal açın.

Ayrıca bir yapılandırma AWS Komut Satırı Arayüzü (AWS CLI) profili. Bunu yapmak için, bir erişim anahtarı kimliğine ve gizli erişim anahtarına ihtiyacınız vardır. AWS Kimlik ve Erişim Yönetimi (BEN) kullanıcı yönetici ayrıcalıklarına (mevcut yönetilen politikayı ekleyin) ve programlı erişime sahip hesap. Aşağıdaki koda bakın:

aws configure --profile=kubeflow

AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

cloud9'un AWS kaynaklarını çağırmak için kullanacağı izinleri doğrulayın.

aws sts get-caller-identity

AWS CLI profilinde yapılandırdığınız yönetici kullanıcı arn'sini gördüğünüzü aşağıdaki çıktıdan doğrulayın. Bu örnekte "kubeflow-user"

{
    "UserId": "*******",
    "Account": "********",
    "Arn": "arn:aws:iam::*******:user/kubeflow-user"
}

AWS'de Amazon EKS ve Kubeflow'u kurun

AWS'de Amazon EKS ve Kubeflow'u yüklemek için aşağıdaki adımları tamamlayın:

  1. AWS'de Kubeflow dağıtmak için ortamınızı kurun:
    #Clone the awslabs/kubeflow-manifests and the kubeflow/manifests repositories and check out the release branches of your choosing
    export KUBEFLOW_RELEASE_VERSION=v1.6.1
    export AWS_RELEASE_VERSION=v1.6.1-aws-b1.0.0
    git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
    git checkout ${AWS_RELEASE_VERSION}
    git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
    
    export MANIFEST_DIR=$PWD

    #Install the necessary tools with the following command:
    make install-tools
    source ~/.bash_profile

  2. AWS'de ve Terraform kullanarak EKS gibi ilgili AWS kaynaklarında Kubeflow'un normal sürümünü dağıtın. EKS düğüm grubunda kullanılan EBS birimlerinin varsayılan olarak şifrelenmediğini lütfen unutmayın:
    #Define the following environment variables
    
    #Region to create the cluster in
    export CLUSTER_REGION=us-west-2
    #Name of the cluster to create
    export CLUSTER_NAME=

    cd deployments/vanilla/terraform
    
    #Save the variables to a .tfvars file
    cat < sample.auto.tfvars
    cluster_name="${CLUSTER_NAME}"
    cluster_region="${CLUSTER_REGION}"
    EOF
    
    #Run the following one-click command to deploy terraform to install EKS infrastructure and Kubeflow
    make deploy

Kubeflow İzinlerini Ayarlayın

  1. kullanarak SageMaker, S3 ve IAM api çağrıları yapmak için Not Defteri bölmesine ve Pipeline bileşen bölmesine izinler ekleyin. kubeflow_iam_permissions.sh komut.
    export NAMESPACE=kubeflow-user-example-com
    
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/kubeflow_iam_permissions.sh
    chmod +x kubeflow_iam_permissions.sh
    ./kubeflow_iam_permissions.sh $NAMESPACE $CLUSTER_NAME $CLUSTER_REGION

  2. SageMaker eğitim işinin kullanarak S3 hizmetinden eğitim veri kümesine erişmesini sağlamak için SageMaker yürütme rolü oluşturun sagemaker_role.sh komut.
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/sagemaker_role.sh
    chmod +x sagemaker_role.sh
    ./sagemaker_role.sh

Kubeflow panosuna erişin

Kubeflow panosuna erişmek için aşağıdaki adımları tamamlayın:

  1. Aşağıdaki komutları çalıştırarak URL'lerinizi genel internete maruz bırakmadan Kubeflow kontrol panelini Cloud9 ortamında yerel olarak çalıştırabilirsiniz.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. Klinik Çalışan Uygulamayı Önizle.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  3. Chrome'da ayrı bir sekme olarak açmak için Kubeflow panosunun köşesindeki simgeyi seçin.
  4. Varsayılan kimlik bilgilerini girin (user@example.com/12341234) Kubeflow kontrol panelinde oturum açmak için.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.

Kubeflow on AWS ortamını kurun

Kubeflow panosunda oturum açtıktan sonra, doğru ad alanına sahip olduğunuzdan emin olun (kubeflow-user-example-com) seçildi. Kubeflow on AWS ortamınızı kurmak için aşağıdaki adımları tamamlayın:

  1. Kubeflow kontrol panelinde, Defterler Gezinti bölmesinde.
  2. Klinik Yeni Defter.
  3. İçin Name, girmek aws-nb.
  4. İçin Jüpiter Docket Görüntüsü, resmi seç jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (mevcut olan en son jupyter-pytorch DLC görüntüsü).
  5. İçin işlemci, girmek 1.
  6. İçin Bellek, girmek 5.
  7. İçin GPU'lar, bırak Hayır.
  8. üzerinde herhangi bir değişiklik yapmayın. çalışma alanı ve Veri Hacimleri bölümleri.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  9. seç Kubeflow Pipelines'a erişime izin ver içinde yapılandırmaları bölümüne gidin ve Başlat'ı seçin.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  10. Not defterinizin başarıyla oluşturulduğunu doğrulayın (birkaç dakika sürebilir).AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  11. Klinik Sosyal medya JupyterLab'da oturum açmak için.
  12. girerek repoyu klonlayın https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git içinde Bir depoyu klonla alan.
  13. Klinik klon.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.

Dağıtılmış bir eğitim örneği çalıştırın

Jupyter not defterini kurduktan sonra, klasörden aşağıdaki üst düzey adımları kullanarak tüm demoyu çalıştırabilirsiniz. eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training klonlanmış depoda:

  1. PyTorch Dağıtılmış Veri Paralel (DDP) eğitim komut dosyasını çalıştırın – PyTorch DDP eğitim komut dosyasına bakın cifar10-distributed-gpu-final.py, eğitimi çok düğümlü bir CPU ve GPU kümesine dağıtmak için örnek bir evrişimli sinir ağı ve mantığı içerir.
  2. Kubeflow ardışık düzeni oluşturma – Not defterini çalıştırın STEP1.0_create_pipeline_k8s_sagemaker.ipynb SageMaker'da modelleri çalıştıran ve dağıtan bir ardışık düzen oluşturmak için. İlk not defteri hücresinin bir parçası olarak SageMaker kitaplığını kurduğunuzdan emin olun ve not defteri hücrelerinin geri kalanını çalıştırmadan önce çekirdeği yeniden başlatın.
  3. Bir SageMaker uç noktası çağırın – Not defterini çalıştırın STEP1.1_invoke_sagemaker_endpoint.ipynb önceki not defterinde oluşturulan SageMaker model çıkarım uç noktasını çağırmak ve test etmek için.

Sonraki bölümlerde, bu adımların her birini ayrıntılı olarak tartışacağız.

PyTorch DDP eğitim komut dosyasını çalıştırın

Dağıtılmış eğitimin bir parçası olarak, CIFAR10 veri seti üzerinde çalışan basit bir evrişimsel sinir ağı tarafından oluşturulan bir sınıflandırma modeli eğitiyoruz. eğitim komut dosyası cifar10-distributed-gpu-final.py yalnızca açık kaynak kitaplıkları içerir ve hem Kubernetes hem de SageMaker eğitim kümelerinde GPU cihazlarında veya CPU örneklerinde çalışmak üzere uyumludur. Not defteri örneklerimizi çalıştırmadan önce eğitim komut dosyasının birkaç önemli yönüne bakalım.

Biz kullanın torch.distributed kümedeki düğümler arasında çok işlemli paralellik için PyTorch desteği ve iletişim temellerini içeren modül:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

Evrişimli, maksimum havuzlama ve doğrusal katmanların bir kombinasyonunu kullanarak basit bir görüntü sınıflandırma modeli oluşturuyoruz. relu model eğitiminin ileri geçişinde aktivasyon işlevi uygulanır:

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

Eğitim kümesinde GPU'lar varsa komut dosyası eğitimi CUDA cihazlarında çalıştırır ve cihaz değişkeni varsayılan CUDA cihazını tutar:

device = "cuda" if torch.cuda.is_available() else "cpu"
...

PyTorch kullanarak dağıtılmış eğitimi çalıştırmadan önce DistributedDataParallel dağıtılmış işlemeyi birden çok düğümde çalıştırmak için, dağıtılmış ortamı çağırarak başlatmanız gerekir. init_process_group. Bu, eğitim kümesinin her makinesinde başlatılır.

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

Sınıflandırıcı modelini somutlaştırıyoruz ve modeli hedef cihaza kopyalıyoruz. Dağıtılmış eğitimin birden çok düğümde çalışması etkinleştirilirse, DistributedDataParallel sınıf, birden fazla makinede senkronize dağıtılmış eğitime izin veren model nesnesi etrafında bir sarmalayıcı nesne olarak kullanılır. Girdi verileri parti boyutunda bölünür ve her makineye ve her cihaza modelin bir kopyası yerleştirilir. Aşağıdaki koda bakın:

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

Kubeflow ardışık düzeni oluşturma

Dizüstü bilgisayar şunları kullanır: Kubeflow Boru Hatları SDK'sı ve makine öğrenimi iş akışı işlem hatlarını belirtmek ve çalıştırmak için sağlanan Python paketleri kümesi. Bu SDK'nın bir parçası olarak, etki alanına özgü dil (DSL) paketi dekoratörünü kullanıyoruz dsl.pipeline, bir ardışık düzen döndürmek için Python işlevlerini süsleyen.

Kubeflow işlem hattı, SageMaker ACK Operatörlerini kullanarak eğitimi SageMaker'a göndermek için SageMaker V2 bileşenini kullanır. SageMaker model oluşturma ve model dağıtımı, Boto1 tabanlı SageMaker bileşenleri olan SageMaker V3 bileşenini kullanır. Seçtiğiniz esnekliği göstermek için bu örnekte her iki bileşenin bir kombinasyonunu kullanıyoruz.

  1. Aşağıdaki kodu kullanarak SageMaker bileşenlerini yükleyin:
    # Loads SageMaker training components v2 for Kubeflow pipeline from the URL
    sagemaker_train_ack_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/d4aaa03035f221351ebe72fbd74fcfccaf25bb66/components/aws/sagemaker/TrainingJob/component.yaml')
    
    # Loads SageMaker components v1 for Kubeflow pipeline from the URL
    sagemaker_model_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/model/component.yaml')
    sagemaker_deploy_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/deploy/component.yaml')

    Aşağıdaki kodda, SageMaker dağıtılmış eğitimini iki kullanarak çalıştırdığımız Kubeflow işlem hattını oluşturuyoruz. ml.p3.2xlarge örnekler:

    # Create Kubeflow Pipeline using Amazon SageMaker Service
    @dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
    def pytorch_cnn_pipeline(region=target_region,
    train_image=aws_dlc_sagemaker_train_image,
    serving_image=aws_dlc_sagemaker_serving_image,
    learning_rate='0.01',
    pytorch_backend='gloo',
    training_job_name=pytorch_distributed_jobname,
    instance_type='ml.p3.2xlarge',
    instance_count='2',
    network_isolation='False',
    traffic_encryption='False',
    ):
    
    # Step to run training on SageMaker using SageMaker Components V2 for Pipeline.
    training = sagemaker_train_ack_op(
    region=region,
    algorithm_specification=(f'{{ '
    f'"trainingImage": "{train_image}",'
    '"trainingInputMode": "File"'
    f'}}'),
    training_job_name=training_job_name,
    hyper_parameters=(f'{{ '
    f'"backend": "{pytorch_backend}",'
    '"batch-size": "64",'
    '"epochs": "10",'
    f'"lr": "{learning_rate}",'
    '"model-type": "custom",'
    '"sagemaker_container_log_level": "20",'
    '"sagemaker_program": "cifar10-distributed-gpu-final.py",'
    f'"sagemaker_region": "{region}",'
    f'"sagemaker_submit_directory": "{source_s3}"'
    f'}}'),
    resource_config=(f'{{ '
    f'"instanceType": "{instance_type}",'
    f'"instanceCount": {instance_count},'
    '"volumeSizeInGB": 50'
    f'}}'),
    input_data_config=training_input(datasets),
    output_data_config=training_output(bucket_name),
    enable_network_isolation=network_isolation,
    enable_inter_container_traffic_encryption=traffic_encryption,
    role_arn=role,
    stopping_condition={"maxRuntimeInSeconds": 3600}
    )
    
    model_artifact_url = get_s3_model_artifact_op(
    training.outputs["model_artifacts"]
    ).output
    
    # This step creates SageMaker Model which refers to model artifacts and inference script to deserialize the input image
    create_model = sagemaker_model_op(
    region=region,
    model_name=training_job_name,
    image=serving_image,
    model_artifact_url=model_artifact_url,
    network_isolation=network_isolation,
    environment=(f'{{ '
    '"SAGEMAKER_CONTAINER_LOG_LEVEL": "20",'
    '"SAGEMAKER_PROGRAM": "inference.py",'
    f'"SAGEMAKER_REGION": "{region}",'
    f'"SAGEMAKER_SUBMIT_DIRECTORY": "{model_artifact_url}"'
    f'}}'),
    role=role
    )
    
    # This step creates SageMaker Endpoint which will be called to run inference
    prediction = sagemaker_deploy_op(
    region=region,
    model_name_1=create_model.output,
    instance_type_1='ml.c5.xlarge'
    )
    
    #Disable pipeline cache
    training.execution_options.caching_strategy.max_cache_staleness = "P0D"

    İşlem hattı tanımlandıktan sonra, Kubeflow Pipelines SDK'larını kullanarak işlem hattını bir Argo YAML belirtimine göre derleyebilirsiniz. kfp.compiler paket. Bu işlem hattını, Pipelines hizmet uç noktasını çağıran ve doğrudan not defterinden uygun kimlik doğrulama başlıklarını ileten Kubeflow Pipelines SDK istemcisini kullanarak çalıştırabilirsiniz. Aşağıdaki koda bakın:

    # DSL Compiler that compiles pipeline functions into workflow yaml.
    kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")
    
    # Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
    client = kfp.Client()
    
    experiment = client.create_experiment(name="ml_workflow")
    
    # Run a specified pipeline
    my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")
    
    # Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

  2. Seçin Ayrıntıları çalıştır Kubeflow ardışık düzenini görüntülemek için son hücrenin altındaki bağlantı. Aşağıdaki ekran görüntüsü, SageMaker eğitim ve devreye alma bileşeni için boru hattı ayrıntılarımızı göstermektedir.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  3. Eğitim işi adımını seçin ve Kayıtlar sekmesinde, SageMaker günlüklerine erişmek için CloudWatch günlükleri bağlantısını seçin.
    Aşağıdaki ekran görüntüsü, iki ml.p3.2xlarge örneğinin her biri için CloudWatch günlüklerini gösterir.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  4. Günlükleri görmek için gruplardan herhangi birini seçin.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.
  5. seçerek SageMaker bitiş noktasını yakalayın. Sagemaker – Dağıtım Modeli adım ve kopyalama endpoint_name çıktı yapay değeri.AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.

Bir SageMaker uç noktası çağırın

Defter STEP1.1_invoke_sagemaker_endpoint.ipynb önceki adımda oluşturulan SageMaker çıkarım uç noktasını çağırır. Uç nokta adını güncellediğinizden emin olun:

# Invoke SageMaker Endpoint. * Ensure you update the endpoint
# You can grab the SageMaker Endpoint name by either 1) going to the pipeline visualization of Kubeflow console and click the component for deployment, or 2) Go to SageMaker console and go to the list of endpoints, and then substitute the name to the EndpointName='...' in this cell.

endpointName=''

response = client.invoke_endpoint(EndpointName=endpointName,
ContentType='application/x-image',
Body=payload)

pred = json.loads(response['Body'].read().decode())

output_vector_list=pred['score']

# Get outout vector of 10 classes
output_vector = output_vector_list[0]

# Find the class with highest probability
max=output_vector[0]
index = 0
for i in range(1,len(output_vector)):
if output_vector[i] > max:
max = output_vector[i]
index = i

print(f'Index of the maximum value is : {index}')

labels = ['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']

print(labels[index])

Temizlemek

Kaynaklarınızı temizlemek için aşağıdaki adımları tamamlayın:

  1. AWS kaynaklarını silmek için AWS Cloud9'da aşağıdaki komutları çalıştırın:
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. IAM rolünü sil "sagemakerrole” aşağıdaki AWS CLI komutunu kullanarak:
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    aws iam delete-role --role-name sagemakerrole

  3. Aşağıdaki AWS CLI komutunu kullanarak SageMaker uç noktasını silin:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

Özet

Bu gönderide, AWS 1.6.1'de Kubeflow'un kurumsal düzeyde yapay zeka ve makine öğrenimi kullanım durumlarının ihtiyacını karşılamak için yerel AWS tarafından yönetilen hizmet entegrasyonları aracılığıyla sağladığı değeri vurguladık. Terraform, Kustomize veya Helm kullanarak çeşitli hizmet entegrasyonlarıyla Kubeflow'u AWS'ye yüklemek için çeşitli dağıtım seçenekleri arasından seçim yapabilirsiniz. Bu gönderideki kullanım örneği, bir görüntü sınıflandırma modeli için dağıtılmış eğitim çalıştırmak üzere bir SageMaker tarafından yönetilen eğitim kümesi ve model dağıtımı için SageMaker uç noktası kullanan SageMaker ile bir Kubeflow entegrasyonunu gösterdi.

Ayrıca kullanılabilir hale getirdik örnek boru hattı örneği en son SageMaker bileşenlerini kullanan; bunu doğrudan Kubeflow kontrol panelinden çalıştırabilirsiniz. Bu boru hattı şunları gerektirir: Amazon S3 verileri ve SageMaker yürütme IAM rolü gerekli girdiler olarak

AWS'de Kubeflow'u kullanmaya başlamak için şu adresteki mevcut AWS ile entegre dağıtım seçeneklerine bakın: AWS'de Kubeflow. takip edebilirsiniz AWS Labs deposu Kubeflow'a yapılan tüm AWS katkılarını izlemek için. Ayrıca bizi şu adreste de bulabilirsiniz: Kubeflow #AWS Slack Kanalı; buradaki geri bildiriminiz, Kubeflow projesine katkıda bulunmak için sonraki özelliklere öncelik vermemize yardımcı olacaktır.


yazarlar hakkında

AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.Kanwaljit Khurmi Amazon Web Services'de Kıdemli Çözüm Mimarıdır. AWS müşterileriyle birlikte çalışarak, AWS'yi kullanırken çözümlerinin değerini artırmalarına yardımcı olan rehberlik ve teknik yardım sağlar. Kanwaljit, kapsayıcılı ve makine öğrenimi uygulamaları konusunda müşterilere yardımcı olma konusunda uzmanlaşmıştır.

AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.Kartik Kalamadi Amazon AI'da Yazılım Geliştirme Mühendisi. Şu anda Kubeflow ve k8s için AWS SageMaker Denetleyicisi gibi Makine Öğrenimi Kubernetes açık kaynak projelerine odaklanmaktadır. Boş zamanlarımda PC Oyunları oynamayı ve Unity motorunu kullanarak VR ile uğraşmayı seviyorum.

AWS dağıtımı PlatoBlockchain Data Intelligence'da tek tıklamayla Kubeflow ile Amazon EKS ve Amazon SageMaker'da hibrit makine öğrenimi iş akışlarını etkinleştirme. Dikey Arama. Ai.Rahul Kharse Amazon Web Services'ta Yazılım Geliştirme Mühendisi. Çalışmaları, ölçeklenebilirliklerini, güvenilirliklerini ve güvenliklerini iyileştirmek için AWS hizmetlerini açık kaynaklı kapsayıcılı ML Ops platformlarıyla entegre etmeye odaklanmaktadır. Müşterilerin özellik taleplerine odaklanmanın yanı sıra Rahul, alandaki en son teknolojik gelişmeleri denemekten de keyif alıyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi