Üretken Veri Zekası

AWS Trainium bulut sunucuları tarafından desteklenen Amazon ECS'de makine öğrenimi iş yüklerinizi ölçeklendirin | Amazon Web Hizmetleri

Tarih:

Makine öğrenimi (ML) iş yüklerini kapsayıcılarla çalıştırmak yaygın bir uygulama haline geliyor. Kapsayıcılar yalnızca eğitim kodunuzu değil, donanım kitaplıkları ve sürücülere kadar tüm bağımlılığı da tamamen kapsayabilir. Elde ettiğiniz şey tutarlı ve taşınabilir bir makine öğrenimi geliştirme ortamıdır. Kapsayıcılar sayesinde küme üzerinde ölçeklendirme çok daha kolay hale gelir.

2022'nin sonlarında AWS, şu özelliklerin genel kullanılabilirliğini duyurdu: Amazon EC2 Trn1 bulut sunucuları tarafından desteklenmektedir AWS Eğitimi Yüksek performanslı derin öğrenme eğitimi için özel olarak tasarlanmış hızlandırıcılar. Trn1 bulut sunucuları, diğer benzer bulut sunucularına göre eğitim maliyetlerinde %50'ye varan oranda tasarruf sağlar Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) örnekleri. Ayrıca AWS Nöron SDK'sı Bu hızlandırmayı geliştirmek için piyasaya sürüldü ve geliştiricilere, yüksek performanslı ve uygun maliyetli model eğitimleri elde etmek için derleme, çalışma zamanı ve profil gibi bu teknolojiyle etkileşimde bulunabilecekleri araçlar sağladı.

Amazon Elastik Konteyner Hizmeti (Amazon ECS), konteynerli uygulamaların dağıtımını, yönetimini ve ölçeklendirilmesini kolaylaştıran, tam olarak yönetilen bir konteyner düzenleme hizmetidir. Uygulamanızı ve gerekli kaynakları tanımlamanız yeterli; Amazon ECS, uygulamanızın ihtiyaç duyduğu diğer destekleyici AWS hizmetlerine otomatik entegrasyonlarla esnek bilgi işlem seçenekleri genelinde uygulamanızı başlatır, izler ve ölçeklendirir.

Bu gönderide, makine öğrenimi iş yükünüzü dağıtmak, yönetmek ve ölçeklendirmek için makine öğrenimi eğitim işlerinizi Amazon ECS kullanarak bir konteynerde nasıl çalıştıracağınızı gösteriyoruz.

Çözüme genel bakış

Aşağıdaki üst düzey adımlarda size yol gösteriyoruz:

  1. Trn1 bulut sunucularından oluşan bir ECS kümesini şu şekilde sağlayın: AWS CloudFormation.
  2. Neuron SDK ile özel bir kapsayıcı görüntüsü oluşturun ve bunu Amazon Elastik Konteyner Kayıt Defteri (Amazon ECR'si).
  3. Amazon ECS tarafından yürütülecek bir makine öğrenimi eğitim işini tanımlamak için bir görev tanımı oluşturun.
  4. ML görevini Amazon ECS'de çalıştırın.

Önkoşullar

Bunu takip etmek için, Amazon EC2 ve Amazon ECS gibi temel AWS hizmetlerine aşinalık ima edilmektedir.

Trn1 bulut sunucularından oluşan bir ECS kümesi sağlayın

Başlamak için sağlanan uygulamayı başlatın CloudFormation şablonuVPC, ECS kümesi ve EC2 Trainium bulut sunucusu gibi gerekli kaynakları sağlayacak.

Derin öğrenme iş yüklerini çalıştırmak için Neuron SDK'yı kullanıyoruz AWS Çıkarımları ve Trainium tabanlı örnekler. Yeni modeller oluşturmak, bunları optimize etmek ve ardından üretime dağıtmak için uçtan uca makine öğrenimi geliştirme yaşam döngünüzde sizi destekler. Modelinizi Trainium ile eğitmek için, ECS görevlerinin donanımla ilişkili NeuronDevice'i eşlemek üzere çalışacağı EC2 bulut sunucularına ve komutlara erişmek için Amazon ECR'ye aktarılacak Docker görüntüsüne Neuron SDK'yı yüklemeniz gerekir. Modelinizi eğitmek için.

Amazon Linux 2 veya Ubuntu 20'nin standart sürümleri, AWS Neuron sürücüleri yüklü olarak gelmez. Bu nedenle iki farklı seçeneğimiz var.

İlk seçenek, Neuron SDK'nın zaten yüklü olduğu bir Derin Öğrenme Amazon Makine Görüntüsü (DLAMI) kullanmaktır. Bir örneği şu adreste mevcuttur: GitHub repo. Aşağıdakilere göre bir DLAMI seçebilirsiniz: işletim sistemi. Ardından AMI Kimliğini almak için aşağıdaki komutu çalıştırın:

aws ec2 describe-images --region us-east-1 --owners amazon --filters 'Name=name,Values=Deep Learning AMI Neuron PyTorch 1.13.? (Amazon Linux 2) ????????' 'Name=state,Values=available' --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' --output text

Çıktı aşağıdaki gibi olacaktır:

ami-06c40dd4f80434809

Bu AMI Kimliği zamanla değişebilir; bu nedenle doğru AMI Kimliğini almak için komutu kullandığınızdan emin olun.

Artık CloudFormation betiğinde bu AMI ID'yi değiştirebilir ve kullanıma hazır Neuron SDK'yı kullanabilirsiniz. Bunu yapmak için arayın EcsAmiId in Parameters:

"EcsAmiId": { "Type": "String", "Description": "AMI ID", "Default": "ami-09def9404c46ac27c" }

İkinci seçenek, alanı dolduran bir örnek oluşturmaktır. userdata Yığın oluşturma sırasında alan. Bunu kurmanıza gerek yok çünkü CloudFormation bunu ayarlayacaktır. Daha fazla bilgi için bkz. Nöron Kurulum Kılavuzu.

Bu yazı için, özel bir görsel kullanmanız gerekebileceği ihtimaline karşı 2. seçeneği kullanıyoruz. Aşağıdaki adımları tamamlayın:

  1. Sağlanan CloudFormation şablonunu başlatın.
  2. İçin AnahtarAdı, istediğiniz anahtar çiftinin adını girin; parametreler önceden yüklenecektir. Bu yazı için şunu kullanıyoruz: trainium-key.
  3. Yığınınız için bir ad girin.
  4. Eğer koşuyorsan us-east-1 Bölge için değerleri saklayabilirsiniz ALB Adı ve AZID'ler varsayılan olarak.

Bölgedeki hangi Erişilebilirlik Alanının Trn1'in kullanılabilir olduğunu kontrol etmek için aşağıdaki komutu çalıştırın:

aws ec2 describe-instance-type-offerings --region us-east1 --location-type availability-zone --filter Name=instance-type,Values=trn1.2xlarge

  1. Klinik Sonraki ve yığın oluşturmayı tamamlayın.

Yığın tamamlandığında bir sonraki adıma geçebilirsiniz.

Neuron SDK ile bir ECR görüntüsü hazırlayın ve gönderin

Amazon ECR, yüksek performanslı barındırma sunan, tam olarak yönetilen bir konteyner kayıt defteridir; böylece uygulama görüntülerini ve yapıtlarını istediğiniz yere güvenilir bir şekilde dağıtabilirsiniz. Trn1 bulut sunucularında çalışan ECS işlerine sahip bir modeli eğitmek için gereken komut dosyalarımızı ve Neuron paketlerimizi içeren özel bir Docker görüntüsünü depolamak için Amazon ECR'yi kullanıyoruz. kullanarak bir ECR deposu oluşturabilirsiniz. AWS Komut Satırı Arayüzü (AWS CLI) veya AWS Yönetim Konsolu. Bu yazı için konsolu kullanıyoruz. Aşağıdaki adımları tamamlayın:

  1. Amazon ECR konsolunda yeni bir depo oluşturun.
  2. İçin Görünürlük ayarları¸ seç Özel.
  3. İçin depo adı, isim girin.
  4. Klinik Depo oluştur.

Artık bir veri havuzunuz olduğuna göre, yerel olarak (dizüstü bilgisayarınızda) veya bir dosyada oluşturulabilecek bir görüntü oluşturup aktaralım. AWS Bulut9 çevre. Çok katmanlı bir algılayıcı (MLP) modelini eğitiyoruz. Orijinal kod için bkz. Çok Katmanlı Perceptron Eğitim Eğitimi.

  1. Kopya tren.py ve model.py dosyaları bir projeye aktarın.

Zaten Neuron ile uyumludur, dolayısıyla herhangi bir kodu değiştirmenize gerek yoktur.

  1. 5. Oluşturmak Dockerfile Neuron SDK'yı ve eğitim komut dosyalarını yükleme komutlarına sahip olan:
FROM amazonlinux:2 RUN echo $'[neuron] n
name=Neuron YUM Repository n
baseurl=https://yum.repos.neuron.amazonaws.com n
enabled=1' > /etc/yum.repos.d/neuron.repo RUN rpm --import https://yum.repos.neuron.amazonaws.com/GPG-PUB-KEY-AMAZON-AWS-NEURON.PUB RUN yum install aws-neuronx-collectives-2.* -y
RUN yum install aws-neuronx-runtime-lib-2.* -y
RUN yum install aws-neuronx-tools-2.* -y
RUN yum install -y tar gzip pip
RUN yum install -y python3 python3-pip
RUN yum install -y python3.7-venv gcc-c++
RUN python3.7 -m venv aws_neuron_venv_pytorch # Activate Python venv
ENV PATH="/aws_neuron_venv_pytorch/bin:$PATH"
RUN python -m pip install -U pip
RUN python -m pip install wget
RUN python -m pip install awscli RUN python -m pip config set global.extra-index-url https://pip.repos.neuron.amazonaws.com
RUN python -m pip install torchvision tqdm torch-neuronx neuronx-cc==2.* pillow
RUN mkdir -p /opt/ml/mnist_mlp
COPY model.py /opt/ml/mnist_mlp/model.py
COPY train.py /opt/ml/mnist_mlp/train.py
RUN chmod +x /opt/ml/mnist_mlp/train.py
CMD ["python3", "/opt/ml/mnist_mlp/train.py"]

Neuron'u kullanarak kendi Docker dosyanızı oluşturmak için bkz. AWS ML hızlandırıcı örneğinde geliştirmeDiğer işletim sistemi ve makine öğrenimi çerçeveleri için kılavuzlar bulabileceğiniz yer.

  1. 6. Bir görüntü oluşturun ve ardından aşağıdaki kodu kullanarak bunu Amazon ECR'ye aktarın (Bölgenizi, hesap kimliğinizi ve ECR deponuzu sağlayın):
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin {your-account-id}.dkr.ecr.{your-region}.amazonaws.com docker build -t mlp_trainium . docker tag mlp_trainium:latest {your-account-id}.dkr.ecr.us-east-1.amazonaws.com/mlp_trainium:latest docker push {your-account-id}.dkr.ecr.{your-region}.amazonaws.com/{your-ecr-repo-name}:latest

Bundan sonra görüntü sürümünüz, oluşturduğunuz ECR deposunda görünür olmalıdır.

ML eğitim işini ECS görevi olarak çalıştırın

Amazon ECS'de makine öğrenimi eğitim görevini çalıştırmak için öncelikle bir görev tanımı. Amazon ECS'de Docker kapsayıcılarını çalıştırmak için bir görev tanımı gereklidir.

  1. Amazon ECS konsolunda şunu seçin: Görev tanımları Gezinti bölmesinde.
  2. Üzerinde Yeni görev tanımı oluştur menü seç JSON ile yeni görev tanımı oluşturun.

Aşağıdakileri kullanabilirsiniz görev tanımı şablonu temel olarak. Görüntü alanında önceki adımda oluşturulan görüntüyü kullanabileceğinizi unutmayın. Hesap kimliğinizi ve ECR deposu adınızı içerdiğinden emin olun.

Neuron'un kurulu olduğundan emin olmak için ses seviyesinin olup olmadığını kontrol edebilirsiniz. /dev/neuron0 cihazlar bloğunda eşlenir. Bu tek bir haritaya eşlenir NeuronDevice iki çekirdekli trn1.2xlarge örneğinde çalışıyor.

  1. Aşağıdaki şablonu kullanarak görev tanımınızı oluşturun:
{ "family": "mlp_trainium", "containerDefinitions": [ { "name": "mlp_trainium", "image": "{your-account-id}.dkr.ecr.us-east-1.amazonaws.com/{your-ecr-repo-name}", "cpu": 0, "memoryReservation": 1000, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "linuxParameters": { "capabilities": { "add": [ "IPC_LOCK" ] }, "devices": [ { "hostPath": "/dev/neuron0", "containerPath": "/dev/neuron0", "permissions": [ "read", "write" ] } ] }, , "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/task-logs", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "placementConstraints": [ { "type": "memberOf", "expression": "attribute:ecs.os-type == linux" }, { "type": "memberOf", "expression": "attribute:ecs.instance-type == trn1.2xlarge" } ], "requiresCompatibilities": [ "EC2" ], "cpu": "1024", "memory": "3072"
}

Bu adımı aşağıdakileri kullanarak AWS CLI'de de tamamlayabilirsiniz. görev tanımı veya aşağıdaki komutla:

aws ecs register-task-definition --family mlp-trainium --container-definitions '[{ "name": "my-container-1", "image": "{your-account-id}.dkr.ecr.us-east-1.amazonaws.com/{your-ecr-repo-name}", "cpu": 0, "memoryReservation": 1000, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/task-logs", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "linuxParameters": { "capabilities": { "add": [ "IPC_LOCK" ] }, "devices": [{ "hostPath": "/dev/neuron0", "containerPath": "/dev/neuron0", "permissions": ["read", "write"] }] }
}]' --requires-compatibilities EC2
--cpu "8192" --memory "16384" --placement-constraints '[{ "type": "memberOf", "expression": "attribute:ecs.instance-type == trn1.2xlarge"
}, { "type": "memberOf", "expression": "attribute:ecs.os-type == linux"
}]'

Görevi Amazon ECS'de çalıştırın

ECS kümesini oluşturduktan, görüntüyü Amazon ECR'ye aktarıp görev tanımını oluşturduktan sonra, Amazon ECS üzerinde bir model eğitmek için görev tanımını çalıştırıyoruz.

  1. Amazon ECS konsolunda şunu seçin: Kümeleri Gezinti bölmesinde.
  2. Kümenizi açın.
  3. Üzerinde Görevler sekmesini seçin Yeni görev çalıştır.

  1. İçin Başlatma türü, seçmek EC2.

  1. İçin Uygulama türüseçin Görev.
  2. İçin aile, oluşturduğunuz görev tanımını seçin.

  1. içinde bölümünde CloudFormation yığını, alt ağ ve güvenlik grubu tarafından oluşturulan VPC'yi belirtin.

  1. Klinik oluşturmak.

Görevinizi Amazon ECS konsolunda izleyebilirsiniz.

Görevi AWS CLI'yi kullanarak da çalıştırabilirsiniz:

aws ecs run-task --cluster <your-cluster-name> --task-definition <your-task-name> --count 1 --network-configuration '{"awsvpcConfiguration": {"subnets": ["<your-subnet-name> "], "securityGroups": ["<your-sg-name> "] }}'

Sonuç aşağıdaki ekran görüntüsüne benzeyecektir.

Ayrıca eğitim işinin ayrıntılarını şu adresten kontrol edebilirsiniz: Amazon Bulut İzleme günlük grubu.

Modellerinizi eğittikten sonra bunları depolayabilirsiniz. Amazon Basit Depolama Hizmeti (Amazon S3).

Temizlemek

Ek masraflardan kaçınmak için Otomatik Ölçeklendirme grubunu şu şekilde değiştirebilirsiniz: Minimum kapasite ve İstenilen kapasite Trainium örneklerini kapatmak için sıfıra ayarlayın. Tam bir temizlik yapmak için CloudFormation yığınını silin ve bu şablon tarafından oluşturulan tüm kaynakları kaldırın.

Sonuç

Bu yazıda makine öğrenimi eğitim işlerinizi dağıtmak için Amazon ECS'yi nasıl kullanacağınızı gösterdik. ECS Trn1 bulut sunucuları kümesini oluşturmak için bir CloudFormation şablonu oluşturduk, özel bir Docker görüntüsü oluşturduk, bunu Amazon ECR'ye aktardık ve bir Trainium bulut sunucusu kullanarak ECS kümesinde makine öğrenimi eğitim işini çalıştırdık.

Neuron ve Trainium ile neler yapabileceğiniz hakkında daha fazla bilgi için aşağıdaki kaynaklara göz atın:


Yazarlar Hakkında

Guilherme Ricci Amazon Web Services'te Kıdemli Başlangıç ​​Çözümleri Mimarıdır ve yeni kurulan şirketlerin uygulamalarının maliyetlerini modernleştirmesine ve optimize etmesine yardımcı olur. Finans sektöründeki şirketlerde 10 yılı aşkın tecrübesiyle şu anda AI/ML uzmanlarından oluşan bir ekiple çalışmaktadır.

Evandro Franco Amazon Web Services üzerinde çalışan bir AI/ML Uzman Çözüm Mimarıdır. AWS müşterilerinin AWS'nin yanı sıra AI/ML ile ilgili iş zorluklarının üstesinden gelmesine yardımcı oluyor. Yazılım geliştirme, altyapı, sunucusuz çalışma ve makine öğrenimine kadar teknolojiyle ilgili 15 yılı aşkın süredir çalışıyor.

Matthew McClean Müşterilerin AWS Trainium ve AWS Inferentia ürünlerini benimsemelerine yardımcı olan Annapurna ML Çözüm Mimarisi ekibine liderlik ediyor. Üretken yapay zeka konusunda tutkulu ve son 10 yıldır müşterilerin AWS teknolojilerini benimsemelerine yardımcı oluyor.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?