ความฉลาดทางข้อมูลเชิงกำเนิด

ปรับขนาดปริมาณงานแมชชีนเลิร์นนิงของคุณบน Amazon ECS ที่ขับเคลื่อนโดยอินสแตนซ์ AWS Trainium | บริการเว็บอเมซอน

วันที่:

การรันปริมาณงาน Machine Learning (ML) ด้วยคอนเทนเนอร์กำลังกลายเป็นเรื่องปกติ คอนเทนเนอร์สามารถสรุปได้อย่างสมบูรณ์ไม่เพียงแค่โค้ดการฝึกอบรมของคุณเท่านั้น แต่ยังรวมไปถึงการพึ่งพาทั้งหมดลงไปจนถึงไลบรารีฮาร์ดแวร์และไดรเวอร์อีกด้วย สิ่งที่คุณได้รับคือสภาพแวดล้อมการพัฒนา ML ที่มีความสอดคล้องและพกพาได้ เมื่อใช้คอนเทนเนอร์ การปรับขนาดบนคลัสเตอร์จะง่ายขึ้นมาก

ในช่วงปลายปี 2022 AWS ประกาศความพร้อมใช้งานทั่วไปของ อินสแตนซ์ Amazon EC2 Trn1 ขับเคลื่อนด้วย การฝึกอบรม AWS ตัวเร่งความเร็วซึ่งมีจุดประสงค์เพื่อการฝึกอบรมการเรียนรู้เชิงลึกที่มีประสิทธิภาพสูง อินสแตนซ์ Trn1 ช่วยประหยัดค่าใช้จ่ายในการฝึกอบรมได้มากถึง 50% เมื่อเทียบกับอินสแตนซ์อื่นๆ ที่เทียบเคียงได้ อเมซอน อีลาสติก คอมพิวท์ คลาวด์ อินสแตนซ์ (Amazon EC2) นอกจากนี้ AWS Neuron SDK เปิดตัวเพื่อปรับปรุงการเร่งความเร็วนี้ โดยให้เครื่องมือแก่นักพัฒนาในการโต้ตอบกับเทคโนโลยีนี้ เช่น การคอมไพล์ รันไทม์ และโปรไฟล์ เพื่อให้ได้การฝึกโมเดลที่มีประสิทธิภาพสูงและคุ้มค่า

บริการ Amazon Elastic Container (Amazon ECS) คือบริการประสานคอนเทนเนอร์ที่มีการจัดการเต็มรูปแบบ ซึ่งช่วยให้การปรับใช้งาน การจัดการ และการปรับขนาดแอปพลิเคชันในคอนเทนเนอร์ของคุณง่ายขึ้น เพียงอธิบายแอปพลิเคชันของคุณและทรัพยากรที่จำเป็น จากนั้น Amazon ECS จะเปิดตัว ตรวจสอบ และปรับขนาดแอปพลิเคชันของคุณผ่านตัวเลือกการประมวลผลที่ยืดหยุ่นพร้อมการผสานรวมอัตโนมัติกับบริการ AWS ที่รองรับอื่นๆ ที่แอปพลิเคชันของคุณต้องการ

ในโพสต์นี้ เราจะแสดงวิธีรันงานการฝึกอบรม ML ในคอนเทนเนอร์โดยใช้ Amazon ECS เพื่อปรับใช้ จัดการ และปรับขนาดปริมาณงาน ML ของคุณ

ภาพรวมโซลูชัน

เราแนะนำคุณผ่านขั้นตอนระดับสูงดังต่อไปนี้:

  1. จัดเตรียมคลัสเตอร์ ECS ของอินสแตนซ์ Trn1 ด้วย การก่อตัวของ AWS Cloud.
  2. สร้างคอนเทนเนอร์อิมเมจแบบกำหนดเองด้วย Neuron SDK แล้วส่งไป การลงทะเบียน Amazon Elastic Container (อเมซอน อีซีอาร์).
  3. สร้างคำจำกัดความของงานเพื่อกำหนดงานการฝึก ML ที่จะรันโดย Amazon ECS
  4. รันงาน ML บน Amazon ECS

เบื้องต้น

เพื่อปฏิบัติตาม ความคุ้นเคยกับบริการหลักของ AWS เช่น Amazon EC2 และ Amazon ECS ถือเป็นนัย

จัดเตรียมคลัสเตอร์ ECS ของอินสแตนซ์ Trn1

ในการเริ่มต้นให้เปิดสิ่งที่ให้ไว้ เทมเพลต CloudFormationซึ่งจะจัดเตรียมทรัพยากรที่จำเป็น เช่น VPC, คลัสเตอร์ ECS และอินสแตนซ์ EC2 Trainium

เราใช้ Neuron SDK เพื่อรันปริมาณงานการเรียนรู้เชิงลึก การอนุมาน AWS และอินสแตนซ์ที่ใช้ Trainium โดยจะสนับสนุนคุณในวงจรการพัฒนา ML แบบครบวงจรเพื่อสร้างโมเดลใหม่ ปรับให้เหมาะสม จากนั้นปรับใช้สำหรับการใช้งานจริง หากต้องการฝึกโมเดลของคุณด้วย Trainium คุณจะต้องติดตั้ง Neuron SDK บนอินสแตนซ์ EC2 ซึ่งงาน ECS จะทำงานเพื่อแมป NeuronDevice ที่เชื่อมโยงกับฮาร์ดแวร์ รวมถึงอิมเมจ Docker ที่จะถูกส่งไปยัง Amazon ECR เพื่อเข้าถึงคำสั่ง เพื่อฝึกโมเดลของคุณ

Amazon Linux 2 หรือ Ubuntu 20 เวอร์ชันมาตรฐานไม่ได้ติดตั้งไดรเวอร์ AWS Neuron ไว้ด้วย ดังนั้นเราจึงมีสองตัวเลือกที่แตกต่างกัน

ตัวเลือกแรกคือใช้ Deep Learning Amazon Machine Image (DLAMI) ที่ติดตั้ง Neuron SDK ไว้แล้ว มีตัวอย่างให้ดูที่ repo GitHub. คุณสามารถเลือก DLAMI ตาม ระบบปฏิบัติการ. จากนั้นรันคำสั่งต่อไปนี้เพื่อรับ AMI ID:

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

ผลลัพธ์จะเป็นดังนี้:

ami-06c40dd4f80434809

AMI ID นี้สามารถเปลี่ยนแปลงได้เมื่อเวลาผ่านไป ดังนั้นโปรดใช้คำสั่งเพื่อรับ AMI ID ที่ถูกต้อง

ตอนนี้คุณสามารถเปลี่ยน AMI ID นี้ในสคริปต์ CloudFormation และใช้ Neuron SDK ที่พร้อมใช้งานได้ เมื่อต้องการทำเช่นนี้ ให้มองหา EcsAmiId in Parameters:

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

ตัวเลือกที่สองคือการสร้างอินสแตนซ์ที่กรอก userdata ฟิลด์ระหว่างการสร้างสแต็ก คุณไม่จำเป็นต้องติดตั้งเนื่องจาก CloudFormation จะตั้งค่านี้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ คู่มือการตั้งค่าเซลล์ประสาท.

สำหรับโพสต์นี้ เราใช้ตัวเลือกที่ 2 ในกรณีที่คุณต้องการใช้รูปภาพที่กำหนดเอง ทำตามขั้นตอนต่อไปนี้:

  1. เปิดเทมเพลต CloudFormation ที่ให้มา
  2. สำหรับ ชื่อคีย์ป้อนชื่อคู่คีย์ที่คุณต้องการ จากนั้นระบบจะโหลดพารามิเตอร์ล่วงหน้า สำหรับโพสต์นี้เราใช้ trainium-key.
  3. ป้อนชื่อสำหรับสแต็กของคุณ
  4. หากคุณกำลังวิ่งอยู่ใน us-east-1 ภูมิภาค คุณสามารถเก็บค่าไว้ได้ ชื่อ ALB และ AZID ตามค่าเริ่มต้น

หากต้องการตรวจสอบว่า Availability Zone ใดในภูมิภาคที่มี Trn1 ให้รันคำสั่งต่อไปนี้:

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

  1. Choose ถัดไป และสร้างสแต็กให้เสร็จสิ้น

เมื่อสแต็กเสร็จสมบูรณ์ คุณสามารถย้ายไปยังขั้นตอนถัดไปได้

เตรียมและพุชอิมเมจ ECR ด้วย Neuron SDK

Amazon ECR คือรีจีสทรีคอนเทนเนอร์ที่มีการจัดการเต็มรูปแบบซึ่งมีการโฮสต์ประสิทธิภาพสูง ดังนั้นคุณจึงสามารถปรับใช้อิมเมจและอาร์ติแฟกต์ของแอปพลิเคชันได้อย่างน่าเชื่อถือทุกที่ เราใช้ Amazon ECR เพื่อจัดเก็บอิมเมจ Docker แบบกำหนดเองซึ่งประกอบด้วยสคริปต์และแพ็คเกจ Neuron ที่จำเป็นในการฝึกโมเดลด้วยงาน ECS ที่ทำงานบนอินสแตนซ์ Trn1 คุณสามารถสร้างที่เก็บ ECR โดยใช้ไฟล์ อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI) หรือ คอนโซลการจัดการ AWS. สำหรับโพสต์นี้ เราใช้คอนโซล ทำตามขั้นตอนต่อไปนี้:

  1. บนคอนโซล Amazon ECR ให้สร้างพื้นที่เก็บข้อมูลใหม่
  2. สำหรับ การตั้งค่าการมองเห็น¸ เลือก ส่วนตัว.
  3. สำหรับ ชื่อที่เก็บ, ป้อนชื่อ
  4. Choose สร้างที่เก็บ.

ตอนนี้คุณมีพื้นที่เก็บข้อมูลแล้ว มาสร้างและพุชอิมเมจกัน ซึ่งสามารถสร้างในเครื่อง (ในแล็ปท็อปของคุณ) หรือใน AWS Cloud9 สิ่งแวดล้อม. เรากำลังฝึกอบรมโมเดล Perceptron หลายชั้น (MLP) สำหรับรหัสต้นฉบับ โปรดดูที่ บทช่วยสอนการฝึกอบรม Perceptron หลายชั้น.

  1. คัดลอก รถไฟ.py และ model.py ไฟล์เข้าในโครงการ

สามารถใช้งานร่วมกับ Neuron ได้แล้ว ดังนั้นคุณไม่จำเป็นต้องเปลี่ยนโค้ดใดๆ

  1. 5 สร้าง a ไฟล์นักเทียบท่า ที่มีคำสั่งให้ติดตั้ง Neuron SDK และสคริปต์การฝึก:
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"]

หากต้องการสร้าง Dockerfile ของคุณเองโดยใช้ Neuron โปรดดูที่ พัฒนาบนอินสแตนซ์ตัวเร่งความเร็ว AWS MLซึ่งคุณจะพบคำแนะนำสำหรับเฟรมเวิร์ก OS และ ML อื่นๆ

  1. 6. สร้างอิมเมจแล้วพุชไปที่ Amazon ECR โดยใช้โค้ดต่อไปนี้ (ระบุภูมิภาค ID บัญชี และที่เก็บ ECR ของคุณ):
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

หลังจากนี้ เวอร์ชันอิมเมจของคุณควรปรากฏในที่เก็บ ECR ที่คุณสร้างขึ้น

รันงานการฝึกอบรม ML เป็นงาน ECS

หากต้องการรันงานการฝึกอบรม ML บน Amazon ECS คุณต้องสร้างไฟล์ คำจำกัดความของงาน. จำเป็นต้องมีคำจำกัดความของงานเพื่อเรียกใช้คอนเทนเนอร์ Docker ใน Amazon ECS

  1. บนคอนโซล Amazon ECS ให้เลือก คำจำกัดความของงาน ในบานหน้าต่างนำทาง
  2. เกี่ยวกับ สร้างคำจำกัดความของงานใหม่ เมนูให้เลือก สร้างคำจำกัดความของงานใหม่ด้วย JSON.

คุณสามารถใช้สิ่งต่อไปนี้ เทมเพลตคำจำกัดความของงาน เป็นพื้นฐาน โปรดทราบว่าในช่องรูปภาพ คุณสามารถใช้อันที่สร้างในขั้นตอนก่อนหน้าได้ ตรวจสอบให้แน่ใจว่ามีรหัสบัญชีของคุณและชื่อที่เก็บ ECR

เพื่อให้แน่ใจว่าติดตั้ง Neuron แล้ว คุณสามารถตรวจสอบระดับเสียงได้หรือไม่ /dev/neuron0 ถูกแมปในบล็อกอุปกรณ์ แผนที่นี้จะเป็นหนึ่งเดียว NeuronDevice ทำงานบนอินสแตนซ์ trn1.2xlarge ที่มีสองคอร์

  1. สร้างคำจำกัดความของงานของคุณโดยใช้เทมเพลตต่อไปนี้:
{ "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"
}

คุณยังสามารถทำขั้นตอนนี้ให้เสร็จสิ้นบน AWS CLI ได้โดยใช้สิ่งต่อไปนี้ คำจำกัดความของงาน หรือด้วยคำสั่งต่อไปนี้:

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"
}]'

รันงานบน Amazon ECS

หลังจากที่เราสร้างคลัสเตอร์ ECS พุชอิมเมจไปยัง Amazon ECR และสร้างคำจำกัดความของงาน เราจะเรียกใช้คำจำกัดความของงานเพื่อฝึกโมเดลบน Amazon ECS

  1. บนคอนโซล Amazon ECS ให้เลือก เครือข่ายวิสาหกิจ ในบานหน้าต่างนำทาง
  2. เปิดคลัสเตอร์ของคุณ
  3. เกี่ยวกับ งาน เลือกแท็บ เรียกใช้งานใหม่.

  1. สำหรับ ประเภทการเปิดตัวเลือก EC2.

  1. สำหรับ ประเภทการสมัครให้เลือก งาน.
  2. สำหรับ ครอบครัวให้เลือกคำจำกัดความของงานที่คุณสร้างขึ้น

  1. ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร ระบบเครือข่าย ให้ระบุ VPC ที่สร้างโดยสแต็ก CloudFormation ซับเน็ต และกลุ่มความปลอดภัย

  1. Choose สร้างบัญชีตัวแทน.

คุณสามารถตรวจสอบงานของคุณได้บนคอนโซล Amazon ECS

คุณยังสามารถรันงานโดยใช้ AWS CLI ได้ด้วย:

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> "] }}'

ผลลัพธ์จะมีลักษณะเหมือนภาพหน้าจอต่อไปนี้

ท่านสามารถตรวจสอบรายละเอียดงานอบรมผ่านทาง อเมซอน คลาวด์วอตช์ กลุ่มบันทึก

หลังจากที่คุณฝึกแบบจำลองของคุณแล้ว คุณสามารถจัดเก็บแบบจำลองเหล่านั้นไว้ได้ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (อเมซอน เอส3).

ทำความสะอาด

เพื่อหลีกเลี่ยงค่าใช้จ่ายเพิ่มเติม คุณสามารถเปลี่ยนกลุ่ม Auto Scaling เป็นได้ กำลังการผลิตขั้นต่ำ และ ความจุที่ต้องการ เป็นศูนย์ เพื่อปิดอินสแตนซ์ Trainium หากต้องการล้างข้อมูลทั้งหมด ให้ลบสแต็ก CloudFormation เพื่อลบทรัพยากรทั้งหมดที่สร้างโดยเทมเพลตนี้

สรุป

ในโพสต์นี้ เราได้แสดงวิธีใช้ Amazon ECS เพื่อปรับใช้งานการฝึกอบรม ML ของคุณ เราสร้างเทมเพลต CloudFormation เพื่อสร้างคลัสเตอร์ ECS ของอินสแตนซ์ Trn1 สร้างอิมเมจ Docker แบบกำหนดเอง พุชไปที่ Amazon ECR และรันงานการฝึก ML บนคลัสเตอร์ ECS โดยใช้อินสแตนซ์ Trainium

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Neuron และสิ่งที่คุณสามารถทำได้ด้วย Trainium โปรดดูแหล่งข้อมูลต่อไปนี้:


เกี่ยวกับผู้เขียน

กิลเฮอร์เม ริชชี เป็นสถาปนิกโซลูชันสตาร์ทอัพอาวุโสบน Amazon Web Services ซึ่งช่วยสตาร์ทอัพปรับปรุงและปรับต้นทุนแอปพลิเคชันให้เหมาะสม ด้วยประสบการณ์กว่า 10 ปีกับบริษัทต่างๆ ในภาคการเงิน ปัจจุบันเขาทำงานร่วมกับทีมผู้เชี่ยวชาญด้าน AI/ML

เอวานโดร ฟรังโก เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญ AI/ML ที่ทำงานเกี่ยวกับ Amazon Web Services เขาช่วยให้ลูกค้า AWS เอาชนะความท้าทายทางธุรกิจที่เกี่ยวข้องกับ AI/ML นอกเหนือจาก AWS เขามีประสบการณ์มากกว่า 15 ปีในการทำงานด้านเทคโนโลยี ตั้งแต่การพัฒนาซอฟต์แวร์ โครงสร้างพื้นฐาน ไร้เซิร์ฟเวอร์ ไปจนถึงการเรียนรู้ของเครื่อง

แมทธิว แมคคลีน เป็นผู้นำทีมสถาปัตยกรรมโซลูชัน Annapurna ML ที่ช่วยให้ลูกค้านำผลิตภัณฑ์ AWS Trainium และ AWS Inferentia มาใช้ เขาหลงใหลเกี่ยวกับ Generative AI และได้ช่วยเหลือลูกค้าในการนำเทคโนโลยี AWS มาใช้งานในช่วง 10 ปีที่ผ่านมา

จุด_img

ข่าวกรองล่าสุด

จุด_img

แชทกับเรา

สวัสดี! ฉันจะช่วยคุณได้อย่างไร?