การพัฒนาล่าสุดในแมชชีนเลิร์นนิง (ML) ได้นำไปสู่โมเดลที่ใหญ่ขึ้นเรื่อยๆ ซึ่งบางโมเดลต้องใช้พารามิเตอร์หลายแสนล้านรายการ แม้ว่าโมเดลเหล่านี้จะมีประสิทธิภาพมากกว่า แต่การฝึกอบรมและการอนุมานเกี่ยวกับโมเดลเหล่านั้นจำเป็นต้องใช้ทรัพยากรในการคำนวณจำนวนมาก แม้จะมีไลบรารีการฝึกอบรมแบบกระจายขั้นสูงที่พร้อมใช้งาน แต่เป็นเรื่องปกติสำหรับงานฝึกอบรมและการอนุมานที่ต้องใช้ตัวเร่งความเร็วหลายร้อยตัว (GPU หรือชิป ML ที่สร้างขึ้นตามวัตถุประสงค์เฉพาะ เช่น การฝึกอบรม AWS และ การอนุมาน AWS) และดังนั้นจึงเป็นสิบหรือหลายร้อยกรณี
ในสภาพแวดล้อมแบบกระจายดังกล่าว ความสามารถในการสังเกตของทั้งสองอินสแตนซ์และชิป ML กลายเป็นกุญแจสำคัญในการปรับแต่งประสิทธิภาพของโมเดลอย่างละเอียดและการเพิ่มประสิทธิภาพต้นทุน หน่วยวัดช่วยให้ทีมเข้าใจพฤติกรรมปริมาณงานและเพิ่มประสิทธิภาพการจัดสรรทรัพยากรและการใช้ประโยชน์ วินิจฉัยความผิดปกติ และเพิ่มประสิทธิภาพโครงสร้างพื้นฐานโดยรวม สำหรับนักวิทยาศาสตร์ข้อมูล การใช้ชิป ML และความอิ่มตัวยังเกี่ยวข้องกับการวางแผนกำลังการผลิตด้วย
โพสต์นี้จะแนะนำคุณผ่าน รูปแบบการสังเกตแบบโอเพ่นซอร์สสำหรับ AWS Inferentiaซึ่งจะแสดงวิธีตรวจสอบประสิทธิภาพของชิป ML ที่ใช้ใน บริการ Amazon Elastic Kubernetes คลัสเตอร์ (Amazon EKS) โดยมีโหนดระนาบข้อมูลตาม อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (Amazon EC2) ประเภทอินสแตนซ์ อินฟ1 และ อินฟ2.
ลวดลายเป็นส่วนหนึ่งของ ตัวเร่งการสังเกต AWS CDKซึ่งเป็นชุดโมดูลที่เน้นความคิดเห็นเพื่อช่วยคุณตั้งค่าความสามารถในการสังเกตสำหรับคลัสเตอร์ Amazon EKS AWS CDK Observability Accelerator ได้รับการจัดระเบียบตามรูปแบบ ซึ่งเป็นหน่วยที่สามารถนำมาใช้ซ้ำได้สำหรับการปรับใช้ทรัพยากรหลายรายการ ชุดรูปแบบการสังเกตโอเพ่นซอร์สของเครื่องมือการสังเกตด้วย อเมซอน Managed Grafana แดชบอร์ด AWS Distro สำหรับ OpenTelemetry นักสะสมเพื่อรวบรวมตัวชี้วัดและ บริการจัดการของ Amazon สำหรับ Prometheus เพื่อจัดเก็บพวกเขา
ภาพรวมโซลูชัน
ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมโซลูชัน
โซลูชันนี้ปรับใช้คลัสเตอร์ Amazon EKS กับกลุ่มโหนดที่มีอินสแตนซ์ Inf1
ประเภท AMI ของกลุ่มโหนดคือ AL2_x86_64_GPU
ซึ่งใช้ไฟล์ Amazon EKS เพิ่มประสิทธิภาพ Amazon Linux AMI ที่เร่งความเร็วแล้ว- นอกเหนือจากการกำหนดค่า AMI ที่ปรับให้เหมาะสมกับ Amazon EKS แบบมาตรฐานแล้ว AMI แบบเร่งความเร็วยังรวม รันไทม์ของ NeuronX.
หากต้องการเข้าถึงชิป ML จาก Kubernetes รูปแบบจะปรับใช้ไฟล์ AWS เซลล์ประสาท ปลั๊กอินของอุปกรณ์
ตัววัดจะเปิดเผยต่อ Amazon Managed Service สำหรับ Prometheus โดย neuron-monitor
DaemonSet ซึ่งปรับใช้คอนเทนเนอร์ขั้นต่ำด้วย เครื่องมือของเซลล์ประสาท ติดตั้งแล้ว โดยเฉพาะ neuron-monitor
DaemonSet รันไฟล์ neuron-monitor
คำสั่งไพพ์เข้าไปใน neuron-monitor-prometheus.py
สคริปต์ที่แสดงร่วม (ทั้งสองคำสั่งเป็นส่วนหนึ่งของคอนเทนเนอร์):
คำสั่งใช้ส่วนประกอบต่อไปนี้:
neuron-monitor
รวบรวมตัวชี้วัดและสถิติจากแอปพลิเคชัน Neuron ที่ทำงานบนระบบและสตรีมข้อมูลที่รวบรวมไปยัง stdout รูปแบบ JSONneuron-monitor-prometheus.py
แมปและเปิดเผยข้อมูลการวัดและส่งข้อมูลทางไกลจากรูปแบบ JSON เป็นรูปแบบที่เข้ากันได้กับ Prometheus
ข้อมูลจะถูกแสดงเป็นภาพใน Amazon Managed Grafana โดยแดชบอร์ดที่เกี่ยวข้อง
การตั้งค่าที่เหลือเพื่อรวบรวมและแสดงภาพตัววัดด้วย Amazon Managed Service สำหรับ Prometheus และ Amazon Managed Grafana นั้นคล้ายคลึงกับการตั้งค่าที่ใช้ในรูปแบบโอเพ่นซอร์สอื่นๆ ซึ่งรวมอยู่ใน AWS Observability Accelerator for CDK
ที่เก็บ GitHub
เบื้องต้น
คุณต้องมีสิ่งต่อไปนี้เพื่อทำตามขั้นตอนในโพสต์นี้:
ตั้งค่าสภาพแวดล้อม
ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าสภาพแวดล้อมของคุณ:
- เปิดหน้าต่างเทอร์มินัลแล้วรันคำสั่งต่อไปนี้:
- รับรหัสพื้นที่ทำงานของพื้นที่ทำงาน Amazon Managed Grafana ที่มีอยู่:
ต่อไปนี้คือผลลัพธ์ตัวอย่างของเรา:
- กำหนดค่าของ
id
และendpoint
ให้กับตัวแปรสภาพแวดล้อมต่อไปนี้:
COA_AMG_ENDPOINT_URL
จำเป็นต้องรวม https://
.
- สร้างคีย์ Grafana API จากพื้นที่ทำงาน Amazon Managed Grafana:
- ตั้งค่าความลับใน ผู้จัดการระบบ AWS:
ข้อมูลลับนี้จะเข้าถึงได้โดยส่วนเสริมข้อมูลลับภายนอก และเปิดให้ใช้งานเป็นความลับของ Kubernetes ในคลัสเตอร์ EKS
บูตสภาพแวดล้อม AWS CDK
ขั้นตอนแรกในการปรับใช้ AWS CDK คือการบูตสภาพแวดล้อม คุณใช้ cdk bootstrap
คำสั่งใน AWS CDK CLI เพื่อเตรียมสภาพแวดล้อม (การรวมกันของบัญชี AWS และภูมิภาค AWS) ด้วยทรัพยากรที่ AWS CDK ต้องการเพื่อดำเนินการปรับใช้ในสภาพแวดล้อมนั้น จำเป็นต้องมีการบูทสแตรป AWS CDK สำหรับแต่ละบัญชีและการรวมภูมิภาค ดังนั้นหากคุณบูทสแตรป AWS CDK ในภูมิภาคแล้ว คุณไม่จำเป็นต้องดำเนินการบูทสแตรปซ้ำอีก
ปรับใช้โซลูชัน
ทำตามขั้นตอนต่อไปนี้เพื่อปรับใช้โซลูชัน:
- โคลน cdk-aws-ตัวเร่งความเร็วในการสังเกต พื้นที่เก็บข้อมูลและติดตั้งแพ็คเกจการพึ่งพา พื้นที่เก็บข้อมูลนี้มีโค้ด AWS CDK v2 ที่เขียนด้วย TypeScript
การตั้งค่าจริงสำหรับไฟล์ JSON แดชบอร์ด Grafana จะต้องระบุในบริบท AWS CDK คุณต้องอัปเดต context
ใน cdk.json
ไฟล์ที่อยู่ในไดเร็กทอรีปัจจุบัน ตำแหน่งของแดชบอร์ดถูกกำหนดโดย fluxRepository.values.GRAFANA_NEURON_DASH_URL
พารามิเตอร์และ neuronNodeGroup
ใช้เพื่อกำหนดประเภทอินสแตนซ์ หมายเลข และ ร้านค้า Amazon Elastic Block ขนาด (Amazon EBS) ที่ใช้สำหรับโหนด
- ป้อนข้อมูลโค้ดต่อไปนี้ลงใน
cdk.json
แทนที่context
:
คุณสามารถแทนที่ประเภทอินสแตนซ์ Inf1 ด้วย Inf2 และเปลี่ยนขนาดได้ตามต้องการ หากต้องการตรวจสอบความพร้อมใช้งานในภูมิภาคที่คุณเลือก ให้รันคำสั่งต่อไปนี้ (แก้ไข Values
ตามที่คุณเห็นสมควร):
- ติดตั้งการพึ่งพาโครงการ:
- รันคำสั่งต่อไปนี้เพื่อปรับใช้รูปแบบการสังเกตโอเพ่นซอร์ส:
ตรวจสอบโซลูชัน
ทำตามขั้นตอนต่อไปนี้เพื่อตรวจสอบความถูกต้องของโซลูชัน:
- เรียกใช้
update-kubeconfig
สั่งการ. คุณควรจะได้รับคำสั่งจากข้อความเอาท์พุตของคำสั่งก่อนหน้า:
- ตรวจสอบทรัพยากรที่คุณสร้าง:
ภาพหน้าจอต่อไปนี้แสดงผลลัพธ์ตัวอย่างของเรา
- ตรวจสอบให้แน่ใจ
neuron-device-plugin-daemonset
DaemonSet กำลังทำงาน:
ต่อไปนี้คือผลลัพธ์ที่คาดหวังของเรา:
- ยืนยันว่า
neuron-monitor
DaemonSet กำลังทำงาน:
ต่อไปนี้คือผลลัพธ์ที่คาดหวังของเรา:
- หากต้องการตรวจสอบว่าอุปกรณ์และแกนของ Neuron มองเห็นได้ ให้เรียกใช้
neuron-ls
และneuron-top
คำสั่งจาก เช่น พ็อดตรวจสอบเซลล์ประสาทของคุณ (คุณสามารถรับชื่อของพ็อดได้จากเอาต์พุตของkubectl get pods -A
):
ภาพหน้าจอต่อไปนี้แสดงผลลัพธ์ที่คาดหวังของเรา
ภาพหน้าจอต่อไปนี้แสดงผลลัพธ์ที่คาดหวังของเรา
แสดงภาพข้อมูลโดยใช้แดชบอร์ด Grafana Neuron
เข้าสู่ระบบพื้นที่ทำงาน Amazon Managed Grafana ของคุณแล้วไปที่ แผงควบคุม แผงหน้าปัด. คุณควรเห็นแดชบอร์ดชื่อ เซลล์ประสาท / มอนิเตอร์.
หากต้องการดูตัวชี้วัดที่น่าสนใจบนแดชบอร์ด Grafana เราใช้รายการต่อไปนี้:
นี่เป็นตัวอย่างเวิร์กโหลดที่คอมไพล์ ทอร์ชวิชัน รุ่น ResNet50 และรันการอนุมานซ้ำ ๆ ในลูปเพื่อสร้างข้อมูลการวัดและส่งข้อมูลทางไกล
หากต้องการตรวจสอบว่าปรับใช้พ็อดสำเร็จแล้ว ให้รันโค้ดต่อไปนี้:
คุณควรเห็นพ็อดชื่อ pytorch-inference-resnet50
.
หลังจากนั้นไม่กี่นาทีก็มองเข้าไปใน เซลล์ประสาท / มอนิเตอร์ แดชบอร์ด คุณควรเห็นเมตริกที่รวบรวมไว้คล้ายกับภาพหน้าจอต่อไปนี้
Grafana Operator และ Flux ทำงานร่วมกันเสมอเพื่อซิงโครไนซ์แดชบอร์ดของคุณกับ Git หากคุณลบแดชบอร์ดโดยไม่ได้ตั้งใจ แดชบอร์ดเหล่านั้นจะถูกจัดเตรียมใหม่โดยอัตโนมัติ
ทำความสะอาด
คุณสามารถลบสแต็ก AWS CDK ทั้งหมดได้ด้วยคำสั่งต่อไปนี้:
สรุป
ในโพสต์นี้ เราได้แสดงให้คุณเห็นถึงวิธีการแนะนำความสามารถในการสังเกตด้วยเครื่องมือโอเพ่นซอร์สในคลัสเตอร์ EKS ที่มี Data Plane ที่ใช้งาน EC2 Inf1 instance เราเริ่มต้นด้วยการเลือก AMI แบบเร่งความเร็วที่ปรับให้เหมาะสมกับ Amazon EKS สำหรับโหนด Data Plane ซึ่งรวมถึงรันไทม์คอนเทนเนอร์ Neuron ที่ให้การเข้าถึงอุปกรณ์ AWS Inferentia และ Trainium Neuron จากนั้น เพื่อเปิดเผยคอร์และอุปกรณ์ของ Neuron กับ Kubernetes เราได้ปรับใช้ปลั๊กอินอุปกรณ์ Neuron การรวบรวมและการแมปข้อมูลการวัดและส่งข้อมูลทางไกลจริงในรูปแบบที่เข้ากันได้กับ Prometheus ทำได้ผ่านทาง neuron-monitor
และ neuron-monitor-prometheus.py
- ตัววัดได้มาจาก Amazon Managed Service สำหรับ Prometheus และแสดงบนแดชบอร์ด Neuron ของ Amazon Managed Grafana
เราขอแนะนำให้คุณสำรวจรูปแบบความสามารถในการสังเกตเพิ่มเติมใน AWS Observability Accelerator สำหรับ CDK ที่เก็บ GitHub หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Neuron โปรดดูที่ เอกสารประกอบ AWS Neuron.
เกี่ยวกับผู้เขียน
ริคคาร์โด้ เฟรสชี่ เป็นสถาปนิกโซลูชันอาวุโสที่ AWS โดยมุ่งเน้นที่การปรับแอปพลิเคชันให้ทันสมัย เขาทำงานอย่างใกล้ชิดกับคู่ค้าและลูกค้าเพื่อช่วยพวกเขาเปลี่ยนแปลงภูมิทัศน์ด้าน IT ในการเดินทางสู่ AWS Cloud โดยการปรับโครงสร้างแอปพลิเคชันที่มีอยู่ใหม่และสร้างแอปพลิเคชันใหม่
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/machine-learning/open-source-observability-for-aws-inferentia-nodes-within-amazon-eks-clusters/