ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

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

โพสต์นี้เขียนร่วมกับ Chaim Rand จาก Mobileye

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

เพื่อแก้ไขปัญหานี้ ในเดือนกรกฎาคม 2022 เรา เปิดตัว กระจุกต่างกันสำหรับ อเมซอน SageMaker การฝึกโมเดล ซึ่งช่วยให้คุณเริ่มงานการฝึกที่ใช้อินสแตนซ์ประเภทต่างๆ ในงานเดียวได้ ซึ่งช่วยให้สามารถถ่ายส่วนต่างๆ ของไปป์ไลน์การประมวลผลข้อมูลล่วงหน้าไปที่ เพิ่มประสิทธิภาพคอมพิวเตอร์ ประเภทอินสแตนซ์ ในขณะที่งาน Deep Neural Network (DNN) ยังคงทำงานต่อไป GPU หรือการประมวลผลแบบเร่ง ประเภทอินสแตนซ์ เกณฑ์มาตรฐานของเราแสดงให้เห็นถึงประสิทธิภาพด้านราคาสูงถึง 46% หลังจากเปิดใช้งานคลัสเตอร์ที่ต่างกันในการฝึกอบรมโมเดลคอมพิวเตอร์วิทัศน์ TensorFlow ที่ผูกกับ CPU

สำหรับกรณีการใช้งานที่คล้ายกัน Mobileyeซึ่งเป็นบริษัทพัฒนาเทคโนโลยียานยนต์อัตโนมัติได้แบ่งปันสิ่งนี้:

“ด้วยการย้ายการฝึกโมเดลคอมพิวเตอร์วิทัศน์การเรียนรู้เชิงลึกที่ผูกกับ CPU ให้ทำงานบนอินสแตนซ์หลายประเภท (ตัวเร่ง CPU และ GPU/ML) โดยใช้ tf.data.service โซลูชันพื้นฐานที่เราสร้างขึ้น เราสามารถลดเวลาในการฝึกอบรมลง 40% ในขณะที่ลดต้นทุนในการฝึกลง 30% เรารู้สึกตื่นเต้นกับคลัสเตอร์ที่แตกต่างกันซึ่งทำให้เราสามารถเรียกใช้โซลูชันนี้บน Amazon SageMaker”

— วิศวกรรม AI, Mobileye

ในโพสต์นี้ เราจะพูดถึงหัวข้อต่อไปนี้:

  • คลัสเตอร์ที่แตกต่างกันช่วยขจัดปัญหาคอขวดของ CPU ได้อย่างไร
  • เมื่อใดควรใช้กลุ่มที่แตกต่างกันและทางเลือกอื่น
  • การใช้งานอ้างอิงใน PyTorch และ TensorFlow
  • ผลการเปรียบเทียบประสิทธิภาพ
  • กระจุกที่แตกต่างกันที่ Mobileye

ของ AWS อินสแตนซ์การคำนวณแบบเร่ง ตระกูลรวมถึงตัวเร่งความเร็วจากชิปแบบกำหนดเองของ AWS (การอนุมาน AWS, การฝึกอบรม AWS), เอ็นวิเดีย (GPUs), และ คันเร่ง Gaudi จาก Habana Labs (บริษัท Intel) โปรดทราบว่าในโพสต์นี้ เราใช้คำว่า GPU และตัวเร่งความเร็วแทนกันได้

คลัสเตอร์ที่ต่างกันจะขจัดปัญหาคอขวดในการประมวลผลข้อมูลอย่างไร

นักวิทยาศาสตร์ด้านข้อมูลที่ฝึกโมเดลการเรียนรู้เชิงลึกมีเป้าหมายเพื่อเพิ่มประสิทธิภาพของการฝึกอบรมและลดเวลาการฝึกอบรม เพื่อให้บรรลุเป้าหมายนี้ เป้าหมายการเพิ่มประสิทธิภาพขั้นพื้นฐานประการหนึ่งคือการมีการใช้งาน GPU สูง ซึ่งเป็นทรัพยากรที่แพงที่สุดและหายากภายใน อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (Amazon EC2) อินสแตนซ์ สิ่งนี้อาจท้าทายยิ่งขึ้นด้วยปริมาณงาน ML ที่รวมการเผยแพร่ไปข้างหน้าและข้างหลังของโมเดลเครือข่ายนิวรัลที่ใช้ GPU แบบคลาสสิกกับงานที่ต้องใช้ CPU สูง เช่น การประมวลผลข้อมูลและการเสริมในคอมพิวเตอร์วิทัศน์ หรือการเรียกใช้การจำลองสภาพแวดล้อมในการเรียนรู้แบบเสริมกำลัง ภาระงานเหล่านี้อาจจบลงด้วยการผูกมัดกับ CPU ซึ่งการมี CPU มากขึ้นจะส่งผลให้มีปริมาณงานสูงขึ้นและการฝึกอบรมเร็วขึ้นและถูกกว่าเนื่องจากตัวเร่งความเร็วที่มีอยู่ไม่ได้ใช้งานเพียงบางส่วน ในบางกรณี ปัญหาคอขวดของ CPU สามารถแก้ไขได้โดยเปลี่ยนไปใช้อินสแตนซ์ประเภทอื่นที่มีอัตราส่วน CPU:GPU สูงกว่า อย่างไรก็ตาม มีบางสถานการณ์ที่อาจไม่สามารถเปลี่ยนไปใช้อินสแตนซ์ประเภทอื่นได้เนื่องจากสถาปัตยกรรมของตระกูล ที่เก็บข้อมูล หรือการพึ่งพาเครือข่าย

ในสถานการณ์เช่นนี้ คุณต้องเพิ่มปริมาณพลังงาน CPU โดยผสมประเภทอินสแตนซ์: อินสแตนซ์ที่มี GPU ร่วมกับ CPU เมื่อรวมกันแล้ว ส่งผลให้อัตราส่วน CPU:GPU โดยรวมสูงขึ้น ก่อนหน้านี้ งานฝึกอบรม SageMaker ถูกจำกัดให้มีอินสแตนซ์ของประเภทอินสแตนซ์ที่เลือกเพียงประเภทเดียว ด้วยคลัสเตอร์ที่แตกต่างกันของ SageMaker นักวิทยาศาสตร์ด้านข้อมูลสามารถเรียกใช้งานการฝึกอบรมได้อย่างง่ายดายด้วยอินสแตนซ์หลายประเภท ซึ่งช่วยให้สามารถถ่ายโอนงาน CPU ที่มีอยู่บางส่วนจากอินสแตนซ์ GPU ไปยังอินสแตนซ์ CPU ที่เพิ่มประสิทธิภาพการประมวลผลโดยเฉพาะ ส่งผลให้มีการใช้ GPU เพิ่มขึ้น เร็วขึ้นและมีค่าใช้จ่ายมากขึ้น การฝึกอบรมที่มีประสิทธิภาพ นอกจากนี้ ด้วยพลังของ CPU ที่เพิ่มขึ้น คุณสามารถมีงานประมวลผลล่วงหน้าที่ทำแบบออฟไลน์ได้ เนื่องจากขั้นตอนเบื้องต้นในการฝึกอบรมจะกลายเป็นส่วนหนึ่งของงานการฝึกอบรมของคุณ ทำให้สามารถทำซ้ำและทดสอบทั้งการประมวลผลข้อมูลล่วงหน้าและสมมติฐานการฝึกอบรม DNN และไฮเปอร์พารามิเตอร์ได้เร็วขึ้น

ตัวอย่างเช่น พิจารณาประเภทอินสแตนซ์ GPU ที่ทรงพลัง ml.p4d.24xlarge (96 vCPU, 8 x NVIDIA A100 GPU) โดยมีอัตราส่วน CPU:GPU 12:1 สมมติว่างานการฝึกอบรมของคุณต้องการ 20 vCPU เพื่อประมวลผลข้อมูลล่วงหน้าให้เพียงพอเพื่อให้ GPU หนึ่งตัวใช้งานได้ 100% ดังนั้น เพื่อให้ GPU ทั้ง 8 ตัวใช้งานได้ 100% คุณต้องมีประเภทอินสแตนซ์ 160 vCPU อย่างไรก็ตาม ml.p4d.24xlarge นั้นสั้นที่ 64 vCPU หรือ 40% ซึ่งจำกัดการใช้งาน GPU ไว้ที่ 60% ดังที่แสดงไว้ทางด้านซ้ายของแผนภาพต่อไปนี้ การเพิ่มอินสแตนซ์ ml.p4d.24xlarge อื่นจะช่วยได้ไหม ไม่ เพราะอัตราส่วน CPU:GPU ของงานจะยังคงเท่าเดิม

ด้วยคลัสเตอร์ที่แตกต่างกัน เราสามารถเพิ่มสอง ml.c5.18xlarge (72 vCPU) ดังที่แสดงทางด้านขวาของไดอะแกรม vCPU รวมสุทธิในคลัสเตอร์นี้คือ 210 (96+2*72) ทำให้อัตราส่วน CPU:GPU เป็น 30:1 อินสแตนซ์ที่เพิ่มประสิทธิภาพการประมวลผลแต่ละรายการเหล่านี้จะถูกออฟโหลดด้วยงานที่ต้องใช้ CPU มากในการประมวลผลล่วงหน้า และจะอนุญาตให้ใช้ GPU อย่างมีประสิทธิภาพ แม้จะมีค่าใช้จ่ายเพิ่มเติมของ ml.c5.18xlarge แต่การใช้งาน GPU ที่สูงขึ้นทำให้สามารถประมวลผลได้เร็วขึ้น ดังนั้นจึงได้ประโยชน์จากประสิทธิภาพด้านราคาที่สูงขึ้น

เมื่อใดควรใช้กลุ่มที่แตกต่างกันและทางเลือกอื่น

ในส่วนนี้ เราจะอธิบายวิธีระบุคอขวดของ CPU และหารือเกี่ยวกับการแก้ปัญหาโดยใช้ประเภทอินสแตนซ์ที่เพิ่มขึ้นเทียบกับคลัสเตอร์ที่ต่างกัน

วิธีที่รวดเร็วในการระบุคอขวดของ CPU คือการตรวจสอบ CPU และ GPU เมตริกการใช้งาน สำหรับงานฝึกอบรม SageMaker ใน อเมซอน คลาวด์วอตช์. คุณสามารถเข้าถึงมุมมองเหล่านี้ได้จาก คอนโซลการจัดการ AWS ภายในไฮเปอร์ลิงก์ตัววัดอินสแตนซ์ของหน้างานการฝึกอบรม เลือกเมตริกที่เกี่ยวข้องและเปลี่ยนจากความละเอียด 5 นาทีเป็น 1 นาที โปรดทราบว่ามาตราส่วนคือ 100% ต่อ vCPU หรือ GPU ดังนั้นอัตราการใช้งานสำหรับอินสแตนซ์ที่มี 4 vCPU/GPU อาจสูงถึง 400% รูปต่อไปนี้เป็นตัวอย่างหนึ่งจากตัววัด CloudWatch โดยที่ CPU ถูกใช้งานประมาณ 100% ซึ่งบ่งชี้ถึงคอขวดของ CPU ในขณะที่ GPU ถูกใช้งานน้อยเกินไป

ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

สำหรับการวินิจฉัยโดยละเอียด เรียกใช้งานการฝึกอบรมด้วย ดีบักเกอร์ Amazon SageMaker เพื่อสร้างโปรไฟล์สถานะการใช้ทรัพยากร สถิติ และการทำงานของเฟรมเวิร์ก โดยเพิ่มการกำหนดค่าตัวสร้างโปรไฟล์เมื่อคุณสร้างตัวประมาณ SageMaker โดยใช้ SageMaker Python SDK หลังจากที่คุณส่งงานฝึกอบรม ตรวจทานผลลัพธ์ รายงานตัวสร้างโปรไฟล์ สำหรับคอขวดของ CPU

หากคุณสรุปว่างานของคุณอาจได้รับประโยชน์จากอัตราส่วนการประมวลผล CPU:GPU ที่สูงขึ้น ก่อนอื่นให้พิจารณาขยายเป็นอินสแตนซ์ประเภทอื่นในกลุ่มอินสแตนซ์เดียวกัน หากมี ตัวอย่างเช่น หากคุณกำลังฝึกโมเดลของคุณบน ml.g5.8xlarge (32 vCPU, 1 GPU) ให้พิจารณาขยายได้ถึง ml.g5.16xlarge (64 vCPU, 1 GPU) หรือหากคุณกำลังฝึกโมเดลของคุณโดยใช้อินสแตนซ์ multi-GPU ml.g5.12xlarge (48 vCPU, 4 GPUs) ให้พิจารณาขยายได้ถึง ml.g5.24xlarge (96 vCPU, 4 GPUs) อ้างถึง G5 ข้อกำหนดตระกูลอินสแตนซ์สำหรับรายละเอียดเพิ่มเติม

บางครั้ง การขยายขนาดอาจไม่ใช่ตัวเลือก เนื่องจากไม่มีประเภทอินสแตนซ์ที่มีอัตราส่วน vCPU:GPU สูงกว่าในกลุ่มอินสแตนซ์เดียวกัน ตัวอย่างเช่น หากคุณกำลังฝึกโมเดลใน ml.trn1.32xlarge, ml.p4d.24xlarge หรือ ml.g5.48xlarge คุณควรพิจารณาคลัสเตอร์ที่แตกต่างกันสำหรับการฝึกโมเดล SageMaker

นอกจากการขยายขนาดแล้ว เราต้องการทราบว่ามีทางเลือกเพิ่มเติมสำหรับคลัสเตอร์ที่ต่างกัน เช่น NVIDIA DALIซึ่งถ่ายก่อนการประมวลผลภาพไปยัง GPU สำหรับข้อมูลเพิ่มเติม โปรดดูที่ เอาชนะปัญหาคอขวดในการประมวลผลข้อมูลล่วงหน้าด้วย TensorFlow Data Service, NVIDIA DALI และวิธีการอื่นๆ.

เพื่อให้การตัดสินใจง่ายขึ้น ให้ดูผังงานต่อไปนี้

ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิธีใช้คลัสเตอร์ที่แตกต่างกันของ SageMaker

ในการเริ่มต้นอย่างรวดเร็ว คุณสามารถข้ามไปยังตัวอย่าง TensorFlow หรือ PyTorch ที่ให้ไว้ในโพสต์นี้โดยตรง

ในส่วนนี้ เราจะแนะนำวิธีการใช้คลัสเตอร์ที่แตกต่างกันของ SageMaker ด้วยตัวอย่างง่ายๆ เราคิดว่าคุณรู้วิธีฝึกโมเดลด้วย SageMaker Python SDK และคลาส Estimator แล้ว ถ้าไม่ใช่ โปรดดูที่ การใช้ SageMaker Python SDK ก่อนดำเนินการต่อ

ก่อนหน้าฟีเจอร์นี้ คุณเริ่มต้นคลาส Estimator ของงานฝึกอบรมด้วย InstanceCount และพารามิเตอร์ InstanceType ซึ่งถือว่าคุณมีอินสแตนซ์ประเภทเดียวเท่านั้น (คลัสเตอร์ที่เป็นเนื้อเดียวกัน) ด้วยการเปิดตัวของคลัสเตอร์ที่แตกต่างกัน เราได้แนะนำใหม่ sagemaker.instance_group.InstanceGroup ระดับ. ซึ่งแสดงถึงกลุ่มของอินสแตนซ์ประเภทใดประเภทหนึ่งหรือมากกว่า ซึ่งออกแบบมาเพื่อมีบทบาทเชิงตรรกะ (เช่น การประมวลผลข้อมูลหรือการปรับเครือข่ายประสาทเทียมให้เหมาะสม คุณสามารถมีกลุ่มได้ตั้งแต่ XNUMX กลุ่มขึ้นไป และระบุชื่อที่กำหนดเองสำหรับแต่ละกลุ่มอินสแตนซ์ ได้แก่ อินสแตนซ์ ชนิดและจำนวนอินสแตนซ์ของแต่ละกลุ่มอินสแตนซ์ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การใช้ SageMaker Python SDK และ การใช้ SageMaker API ระดับต่ำ.

หลังจากที่คุณกำหนดกลุ่มอินสแตนซ์แล้ว คุณต้องแก้ไขสคริปต์การฝึกของคุณเพื่ออ่าน SageMaker ข้อมูลสภาพแวดล้อมการฝึกอบรม ซึ่งรวมถึงคอนฟิกูเรชันคลัสเตอร์ที่ต่างกัน การกำหนดค่าประกอบด้วยข้อมูล เช่น กลุ่มอินสแตนซ์ปัจจุบัน โฮสต์ปัจจุบันในแต่ละกลุ่ม และกลุ่มที่โฮสต์ปัจจุบันอาศัยอยู่ตามอันดับ คุณสามารถสร้างตรรกะในสคริปต์การฝึกอบรมของคุณเพื่อกำหนดกลุ่มอินสแตนซ์ให้กับงานการฝึกอบรมและการประมวลผลข้อมูลบางอย่าง นอกจากนี้ สคริปต์การฝึกอบรมของคุณยังต้องดูแลการสื่อสารกลุ่มระหว่างอินสแตนซ์หรือกลไกการโหลดข้อมูลแบบกระจาย (เช่น tf.data.service ใน TensorFlow หรือทั่วไป gRPC ไคลเอนต์-เซิร์ฟเวอร์) หรือกรอบงานอื่นใด (เช่น Apache Spark).

มาดูตัวอย่างง่ายๆ ของการเริ่มต้นงานการฝึกที่แตกต่างกันและการอ่านการกำหนดค่าสภาพแวดล้อมขณะรันไทม์

  1. เมื่อกำหนดและเริ่มต้นงานการฝึก เรากำหนดค่ากลุ่มอินสแตนซ์สองกลุ่มที่ใช้เป็นอาร์กิวเมนต์สำหรับตัวประมาณ SageMaker:
    from sagemaker.instance_group import InstanceGroup
    data_group = InstanceGroup("data_group", "ml.c5.18xlarge", 2)
    dnn_group = InstanceGroup("dnn_group", "ml.p4d.24xlarge", 1)
    
    from sagemaker.pytorch import PyTorch
    estimator = PyTorch(...,
        entry_point='launcher.py',
        instance_groups=[data_group, dnn_group]
    )
  2. บนสคริปต์การฝึกอบรมจุดเริ่มต้น (ชื่อ launcher.py) เราอ่านการกำหนดค่าคลัสเตอร์ที่ต่างกันเพื่อดูว่าอินสแตนซ์จะเรียกใช้การประมวลผลล่วงหน้าหรือโค้ด DNN:
    from sagemaker_training import environment
    env = environment.Environment()
    if env.current_instance_group == 'data_group': ...;

ด้วยเหตุนี้ เรามาสรุปงานที่ SageMaker ทำในนามของคุณ และงานที่คุณรับผิดชอบ

SageMaker ทำงานต่อไปนี้:

  1. จัดเตรียมอินสแตนซ์ประเภทต่างๆ ตามคำจำกัดความกลุ่มอินสแตนซ์
  2. จัดเตรียมช่องสัญญาณเข้าในกลุ่มอินสแตนซ์ทั้งหมดหรือเฉพาะ
  3. แจกจ่ายสคริปต์การฝึกอบรมและการพึ่งพาไปยังอินสแตนซ์
  4. ตั้งค่าคลัสเตอร์ MPI ในกลุ่มอินสแตนซ์เฉพาะ หากกำหนดไว้

คุณมีหน้าที่รับผิดชอบงานต่อไปนี้:

  1. แก้ไขสคริปต์งานเริ่มการฝึกของคุณเพื่อระบุกลุ่มอินสแตนซ์
  2. ใช้ไปป์ไลน์ข้อมูลแบบกระจาย (เช่น tf.data.service).
  3. แก้ไขสคริปต์จุดเริ่มต้นของคุณ (ดู launcher.py ในสมุดบันทึกตัวอย่าง) ให้เป็นจุดเริ่มต้นเดียวที่จะทำงานบนอินสแตนซ์ทั้งหมด ตรวจหากลุ่มอินสแตนซ์ที่กำลังทำงานอยู่ และทริกเกอร์การทำงานที่เกี่ยวข้อง (เช่น การประมวลผลข้อมูลหรือการเพิ่มประสิทธิภาพ DNN)
  4. เมื่อสิ้นสุดรอบการฝึก คุณต้องตรวจสอบให้แน่ใจว่ากระบวนการจุดเริ่มต้นของคุณออกจากอินสแตนซ์ทั้งหมดในกลุ่มอินสแตนซ์ทั้งหมด นี่เป็นสิ่งสำคัญเนื่องจาก SageMaker รอให้อินสแตนซ์ทั้งหมดดำเนินการเสร็จสิ้นก่อนที่จะทำเครื่องหมายงานว่าเสร็จสมบูรณ์และหยุดการเรียกเก็บเงิน ดิ launcher.py สคริปต์ในโน้ตบุ๊กตัวอย่าง TensorFlow และ PyTorch มีการใช้งานอ้างอิงของอินสแตนซ์กลุ่มข้อมูลการส่งสัญญาณเพื่อออกเมื่ออินสแตนซ์กลุ่ม DNN ทำงานเสร็จ

ตัวอย่างสมุดบันทึกสำหรับคลัสเตอร์ที่แตกต่างกันของ SageMaker

ในส่วนนี้ เราจะนำเสนอบทสรุปของ ตัวอย่างโน๊ตบุ๊ค สำหรับทั้งเฟรมเวิร์ก TensorFlow และ PyTorch ML ในสมุดบันทึก คุณจะพบรายละเอียดการนำไปใช้ คำแนะนำวิธีการทำงานของโค้ด ข้อมูลโค้ดที่คุณสามารถใช้ซ้ำในสคริปต์การฝึกอบรม แผนภาพโฟลว์ และการวิเคราะห์การเปรียบเทียบราคา

โปรดทราบว่าในทั้งสองตัวอย่าง คุณไม่ควรคาดหวังให้โมเดลมาบรรจบกันอย่างมีความหมาย จุดประสงค์ของเราคือการวัดท่อข้อมูลและปริมาณงานการปรับเครือข่ายประสาทเทียมที่แสดงในช่วงเวลา/ขั้นตอนเท่านั้น คุณต้องเปรียบเทียบด้วยโมเดลและชุดข้อมูลของคุณเองเพื่อสร้างผลประโยชน์ด้านประสิทธิภาพราคาที่ตรงกับปริมาณงานของคุณ

คลัสเตอร์ที่แตกต่างกันโดยใช้ตัวโหลดข้อมูลแบบกระจายตาม tf.data.service (TensorFlow)

สมุดบันทึก สาธิตวิธีการใช้คลัสเตอร์ที่แตกต่างกันสำหรับการฝึกอบรม SageMaker โดยใช้ TensorFlow's tf.data.service ไปป์ไลน์ข้อมูลแบบกระจายตาม เราฝึกโมเดลคอมพิวเตอร์วิทัศน์การเรียนรู้เชิงลึก เรสเน็ต50 ที่ต้องการการเสริมข้อมูลที่ใช้ CPU มาก มันใช้ ฮอร์โวด สำหรับความเท่าเทียมของข้อมูลแบบกระจาย GPU หลายตัว

เราเรียกใช้ปริมาณงานในสองการกำหนดค่า: อันดับแรกเป็นคลัสเตอร์ที่เป็นเนื้อเดียวกัน อินสแตนซ์ ml.p4d.24xlarge เดี่ยว โดยใช้มาตรฐาน tf.data ไปป์ไลน์ที่แสดงคอขวดของ CPU ที่นำไปสู่การใช้งาน GPU ที่ต่ำลง ในการรันครั้งที่สอง เราเปลี่ยนจากประเภทอินสแตนซ์เดียวไปเป็นสองกลุ่มอินสแตนซ์โดยใช้คลัสเตอร์ที่แตกต่างกันของ SageMaker การดำเนินการนี้จะลดการประมวลผลข้อมูลบางส่วนไปยังอินสแตนซ์ CPU เพิ่มเติม (โดยใช้ tf.data.service).

จากนั้นเราจะเปรียบเทียบการกำหนดค่าที่เป็นเนื้อเดียวกันและต่างกันและค้นหาประโยชน์ด้านประสิทธิภาพราคาที่สำคัญ ดังที่แสดงในตารางต่อไปนี้ งานที่แตกต่างกัน (86ms/ขั้นตอน) เร็วกว่างานที่เป็นเนื้อเดียวกัน 2.2 เท่า (192ms/ขั้นตอน) ทำให้การฝึกแบบจำลองมีราคาถูกลง 46%

ตัวอย่างที่ 1 (TF) มล.p4d.24xl มล.c5.18xl ราคาต่อชั่วโมง* เวลาเดินเฉลี่ย ราคาต่อขั้นตอน การปรับปรุงประสิทธิภาพราคา
เหมือนกัน 1 0 $37.688 ms 192 $0.201 .
ต่างกัน 1 2 $45.032 ms 86 $0.108 ลด 46%

* ราคาต่อชั่วโมงอิงจาก us-east-1 ราคาตามต้องการของ SageMaker

การเพิ่มความเร็วนี้เกิดขึ้นได้โดยใช้ vCPU พิเศษที่จัดเตรียมโดยกลุ่มข้อมูล และการประมวลผลล่วงหน้าที่เร็วขึ้น ดู สมุดบันทึก สำหรับรายละเอียดเพิ่มเติมและกราฟ

คลัสเตอร์ที่แตกต่างกันโดยใช้ตัวโหลดข้อมูลแบบกระจายตามไคลเอนต์-เซิร์ฟเวอร์ gRPC (PyTorch)

สมุดบันทึก สาธิตปริมาณงานตัวอย่างโดยใช้คลัสเตอร์ที่แตกต่างกันสำหรับการฝึกอบรม SageMaker โดยใช้ตัวโหลดข้อมูลแบบกระจายตามเซิร์ฟเวอร์ gRPC ตัวอย่างนี้ใช้ GPU ตัวเดียว เราใช้โมเดล PyTorch ตามข้อมูลต่อไปนี้ ตัวอย่าง MNIST อย่างเป็นทางการ. รหัสการฝึกอบรมได้รับการแก้ไขให้หนักในการประมวลผลข้อมูลล่วงหน้า เราฝึกโมเดลนี้ทั้งในโหมดคลัสเตอร์ที่เป็นเนื้อเดียวกันและต่างกัน และเปรียบเทียบประสิทธิภาพของราคา

ในตัวอย่างนี้ เราถือว่าปริมาณงานไม่ได้รับประโยชน์จาก GPU หลายตัว และมีการพึ่งพาสถาปัตยกรรม GPU เฉพาะ (NVIDIA V100). เราดำเนินการฝึกอบรมทั้งที่เป็นเนื้อเดียวกันและต่างกัน และพบประโยชน์ด้านประสิทธิภาพด้านราคาที่สำคัญ ดังแสดงในตารางต่อไปนี้ งานที่แตกต่างกัน (1.19 วินาที/ขั้นตอน) เร็วกว่างานที่เป็นเนื้อเดียวกัน 6.5 เท่า (0.18 วินาที/ขั้นตอน) ทำให้การฝึกแบบจำลองมีราคาถูกลง 77%

ตัวอย่างที่ 2 (PT) มล.p3.2xl มล.c5.9xl ราคาต่อชั่วโมง* เวลาเดินเฉลี่ย ราคาต่อขั้นตอน การปรับปรุงประสิทธิภาพราคา
เหมือนกัน 1 0 $3.825 ms 1193 $0.127 .
ต่างกัน 1 1 $5.661 ms 184 $0.029 ลด 77%

* ราคาต่อชั่วโมงอิงจาก us-east-1 ราคาตามต้องการของ SageMaker

สิ่งนี้เป็นไปได้เพราะด้วยจำนวน CPU ที่สูงขึ้น เราจึงสามารถใช้ตัวโหลดข้อมูล 32 คน (เทียบกับ 8 คนด้วย ml.p3.2xlarge) เพื่อประมวลผลข้อมูลล่วงหน้าและเก็บ GPU ให้ใกล้เคียงกับ 100% ที่ใช้เป็นระยะๆ ดู สมุดบันทึก สำหรับรายละเอียดเพิ่มเติมและกราฟ

กระจุกที่แตกต่างกันที่ Mobileye

Mobileye ซึ่งเป็นบริษัทของ Intel ได้พัฒนา Advanced Driver Assistance Systems (ADAS) และเทคโนโลยียานยนต์อัตโนมัติโดยมีเป้าหมายในการปฏิวัติอุตสาหกรรมการขนส่ง ทำให้ถนนปลอดภัยยิ่งขึ้น และช่วยชีวิตผู้คน เทคโนโลยีเหล่านี้เปิดใช้งานโดยใช้โมเดลคอมพิวเตอร์วิชันซิสเต็ม (CV) ที่ซับซ้อนซึ่งได้รับการฝึกฝนโดยใช้ SageMaker กับข้อมูลจำนวนมากที่จัดเก็บไว้ใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (อเมซอน เอส3). โมเดลเหล่านี้ใช้เทคนิค Deep Learning Neural Network ที่ล้ำสมัย

เราสังเกตเห็นว่าสำหรับหนึ่งในรุ่น CV ของเรา คอขวดของ CPU นั้นส่วนใหญ่เกิดจากการประมวลผลข้อมูลล่วงหน้าจำนวนมากซึ่งนำไปสู่การใช้งาน GPU ต่ำเกินไป สำหรับปริมาณงานเฉพาะนี้ เราเริ่มมองหาโซลูชันทางเลือก ประเมินเทคโนโลยีไปป์ไลน์ข้อมูลแบบกระจายด้วยคลัสเตอร์ที่แตกต่างกันตามอินสแตนซ์ EC2 และนำเสนอการใช้งานอ้างอิงสำหรับทั้งสอง TensorFlow และ ไพทอร์ช. การเปิดตัวคลัสเตอร์ที่แตกต่างกันของ SageMaker ช่วยให้เราสามารถเรียกใช้งานนี้และปริมาณงานที่คล้ายกันบน SageMaker เพื่อให้ได้ประโยชน์ด้านประสิทธิภาพด้านราคาที่ดีขึ้น

สิ่งที่ควรพิจารณา

ด้วยการเปิดตัวคุณสมบัติคลัสเตอร์ที่แตกต่างกัน SageMaker ให้ความยืดหยุ่นมากขึ้นในการผสมและจับคู่ประเภทอินสแตนซ์ภายในงานการฝึกอบรมของคุณ อย่างไรก็ตาม ให้พิจารณาสิ่งต่อไปนี้เมื่อใช้คุณสมบัตินี้:

  • คุณลักษณะคลัสเตอร์ที่ต่างกันมีอยู่ใน SageMaker ไพทอร์ช และ TensorFlow คลาสตัวประมาณกรอบงาน เฟรมเวิร์กที่รองรับคือ PyTorch v1.10 หรือใหม่กว่า และ TensorFlow v2.6 หรือใหม่กว่า
  • กลุ่มอินสแตนซ์ทั้งหมดใช้อิมเมจ Docker เดียวกัน
  • กลุ่มอินสแตนซ์ทั้งหมดใช้สคริปต์การฝึกอบรมเดียวกัน ดังนั้น สคริปต์การฝึกอบรมของคุณควรได้รับการแก้ไขเพื่อตรวจสอบว่ากลุ่มอินสแตนซ์ใดอยู่ในกลุ่มและแยกทำงานตามลำดับ
  • ชื่อโฮสต์ของอินสแตนซ์การฝึก (เช่น alog-1, algo-2 และอื่นๆ) จะถูกสุ่มกำหนด และไม่ได้ระบุว่าพวกเขาอยู่ในกลุ่มอินสแตนซ์ใด ในการรับบทบาทของอินสแตนซ์ เราแนะนำให้สมัครสมาชิกกลุ่มอินสแตนซ์ระหว่างรันไทม์ สิ่งนี้มีความเกี่ยวข้องเมื่อตรวจสอบบันทึกใน คลาวด์วอทช์เนื่องจากชื่อสตรีมบันทึก [training-job-name]/algo-[instance-number-in-cluster]-[epoch_timestamp] มีชื่อโฮสต์
  • กลยุทธ์การฝึกอบรมแบบกระจาย (โดยปกติคือคลัสเตอร์ MPI) สามารถใช้ได้กับกลุ่มอินสแตนซ์เดียวเท่านั้น
  • SageMaker จัดการสระน้ำอุ่น และ SageMaker โหมดท้องถิ่น ไม่สามารถใช้กับการฝึกคลัสเตอร์ที่แตกต่างกันได้ในขณะนี้

สรุป

ในโพสต์นี้ เราได้พูดคุยกันถึงเวลาและวิธีการใช้คุณลักษณะคลัสเตอร์ที่แตกต่างกันของการฝึกอบรม SageMaker เราแสดงให้เห็นการปรับปรุงประสิทธิภาพราคา 46% ในกรณีการใช้งานจริง และช่วยให้คุณเริ่มต้นได้อย่างรวดเร็วด้วยตัวโหลดข้อมูลแบบกระจาย (tf.data.service และไคลเอนต์-เซิร์ฟเวอร์ gRPC) การใช้งาน คุณสามารถใช้การใช้งานเหล่านี้โดยมีการเปลี่ยนแปลงโค้ดเพียงเล็กน้อยในสคริปต์การฝึกอบรมที่มีอยู่

ในการเริ่มต้นให้ลองใช้ .ของเรา ตัวอย่างโน๊ตบุ๊ค. หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัตินี้ โปรดดูที่ ฝึกโดยใช้คลัสเตอร์ที่แตกต่างกัน.


เกี่ยวกับผู้แต่ง

ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.กิลี นาชุม เป็นสถาปนิกอาวุโสด้านโซลูชัน AI/ML Specialist Solutions ซึ่งทำงานเป็นส่วนหนึ่งของทีม EMEA Amazon Machine Learning Gili หลงใหลเกี่ยวกับความท้าทายในการฝึกโมเดลการเรียนรู้เชิงลึก และการเรียนรู้ของเครื่องกำลังเปลี่ยนแปลงโลกอย่างที่เรารู้ๆ กันอย่างไร ในเวลาว่าง Gili สนุกกับการเล่นปิงปอง

ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.หรุชิเคช กังกูร์ เป็นสถาปนิกโซลูชันหลักสำหรับสตาร์ทอัพ AI/ML ที่มีความเชี่ยวชาญทั้ง ML Training และ AWS Networking เขาช่วยสตาร์ทอัพในเทคโนโลยียานยนต์อัตโนมัติ, วิทยาการหุ่นยนต์, CV, NLP, MLOps, ML Platform และ Robotics Process Automation เพื่อดำเนินธุรกิจอย่างมีประสิทธิภาพและประสิทธิผลบน AWS ก่อนที่จะร่วมงานกับ AWS Hrushikesh ได้รับประสบการณ์ในอุตสาหกรรมมากกว่า 20 ปีในด้านแพลตฟอร์มคลาวด์และข้อมูลเป็นหลัก

ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.กัล โอศรี เป็นผู้จัดการผลิตภัณฑ์อาวุโสในทีม Amazon SageMaker เขามีประสบการณ์ 7 ปีในการทำงานเกี่ยวกับเครื่องมือ เฟรมเวิร์ก และบริการของแมชชีนเลิร์นนิง

ปรับปรุงประสิทธิภาพด้านราคาของการฝึกโมเดลของคุณโดยใช้คลัสเตอร์ต่างกันของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ชัย แรนด์ เป็นผู้พัฒนาอัลกอริธึมแมชชีนเลิร์นนิงที่ทำงานเกี่ยวกับการเรียนรู้เชิงลึกและเทคโนโลยีการมองเห็นด้วยคอมพิวเตอร์สำหรับโซลูชันยานยนต์อัตโนมัติที่ Mobileye บริษัท Intel ตรวจสอบของเขา Blog.

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS

ปรับต้นทุนการปรับใช้ให้เหมาะสมของโมเดลพื้นฐาน Amazon SageMaker JumpStart ด้วยจุดสิ้นสุดแบบอะซิงโครนัสของ Amazon SageMaker อเมซอนเว็บเซอร์วิส

โหนดต้นทาง: 1885621
ประทับเวลา: กันยายน 5, 2023