เพิ่มประสิทธิภาพสูงสุดและลดค่าใช้จ่ายในการฝึกอบรมการเรียนรู้เชิงลึกด้วย AWS Trainium และ Amazon SageMaker

เพิ่มประสิทธิภาพสูงสุดและลดค่าใช้จ่ายในการฝึกอบรมการเรียนรู้เชิงลึกด้วย AWS Trainium และ Amazon SageMaker

โหนดต้นทาง: 2010875

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

SageMaker เป็นบริการ ML ที่มีการจัดการเต็มรูปแบบซึ่งช่วยให้นักพัฒนาและนักวิทยาศาสตร์ข้อมูลสร้าง ฝึกฝน และปรับใช้โมเดล ML ได้อย่างง่ายดาย SageMaker ได้นำเสนอตัวเลือกการประมวลผลที่กว้างและลึกที่สุดซึ่งมีตัวเร่งฮาร์ดแวร์สำหรับการฝึกอบรม ML รวมถึง G5 (เอ็นวิเดีย A10G) อินสแตนซ์และ P4d (เอ็นวิเดีย A100) ตัวอย่าง.

ความต้องการด้านการประมวลผลที่เพิ่มขึ้นนั้นต้องการพลังการประมวลผลที่รวดเร็วและคุ้มค่ามากขึ้น เพื่อลดเวลาการฝึกโมเดลเพิ่มเติมและช่วยให้ผู้ปฏิบัติงานด้าน ML สามารถทำซ้ำได้เร็วขึ้น AWS ได้คิดค้นสิ่งใหม่ๆ ทั้งชิป เซิร์ฟเวอร์ และการเชื่อมต่อศูนย์ข้อมูล อินสแตนซ์ Trn1 ใหม่ขับเคลื่อนโดย การฝึกอบรม AWS ชิปนำเสนอประสิทธิภาพราคาที่ดีที่สุดและการฝึกอบรมโมเดล ML ที่เร็วที่สุดบน AWS ทำให้ต้นทุนต่ำกว่าถึง 50% ในการฝึกโมเดลการเรียนรู้เชิงลึกบนอินสแตนซ์ที่ใช้ GPU ที่เทียบเคียงได้โดยไม่มีความแม่นยำลดลง

ในโพสต์นี้ เราจะแสดงวิธีที่คุณสามารถเพิ่มประสิทธิภาพและลดต้นทุนโดยใช้อินสแตนซ์ Trn1 กับ SageMaker

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

งานการฝึกอบรมของ SageMaker รองรับอินสแตนซ์ ml.trn1 ซึ่งขับเคลื่อนโดยชิป Trainium ซึ่งสร้างขึ้นเพื่อจุดประสงค์สำหรับแอปพลิเคชันการฝึกอบรม ML ที่มีประสิทธิภาพสูงในระบบคลาวด์ คุณสามารถใช้อินสแตนซ์ ml.trn1 บน SageMaker เพื่อฝึกการประมวลผลภาษาธรรมชาติ (NLP) คอมพิวเตอร์วิทัศน์ และโมเดลผู้แนะนำทั่วทั้ง ชุดแอปพลิเคชันที่กว้างเช่น การรู้จำเสียง คำแนะนำ การตรวจจับการฉ้อโกง การจัดประเภทรูปภาพและวิดีโอ และการพยากรณ์ อินสแตนซ์ ml.trn1 มีชิป Trainium สูงสุด 16 ชิป ซึ่งเป็นชิป ML รุ่นที่สองที่สร้างโดย AWS หลังจาก การอนุมาน AWS. ml.trn1 อินสแตนซ์เป็นรายการแรก อเมซอน อีลาสติก คอมพิวท์ คลาวด์ อินสแตนซ์ (Amazon EC2) ที่มีแบนด์วิธเครือข่าย Elastic Fabric Adapter (EFA) สูงสุด 800 Gbps สำหรับข้อมูลที่มีประสิทธิภาพและการทำงานแบบขนานของโมเดล แต่ละอินสแตนซ์ ml.trn1.32xl มีหน่วยความจำแบนด์วิธสูง 512 GB ส่งมอบพลังการประมวลผล FP3.4/BF16 ได้สูงสุด 16 เพตาฟล็อป และมี NeuronLink ซึ่งเป็นอินสแตนซ์ภายใน แบนด์วิดท์สูง การเชื่อมต่อระหว่างกันแบบไม่ปิดกั้น .

Trainium มีให้ใช้งานในสองรูปแบบและสามารถใช้ได้ในสหรัฐอเมริกาฝั่งตะวันออก (เวอร์จิเนียเหนือ) และฝั่งตะวันตกของสหรัฐอเมริกา (ออริกอน)

ตารางต่อไปนี้สรุปคุณสมบัติของอินสแตนซ์ Trn1

ขนาดอินสแตนซ์ เทรนเนี่ยม
ช่วยดำเนินการ
คันเร่ง
หน่วยความจำ
(กิกะไบต์)
vCPU ตัวอย่าง
หน่วยความจำ
(จีบี)
เครือข่าย
แบนด์วิดธ์
(กิกะบิตต่อวินาที)
เอฟเอ และ
อาร์ดีเอ็มเอ
ระบบขอใช้บริการ
trn1.2xlarge 1 32 8 32 ถึง 12.5 ไม่
trn1.32xlarge 16 512 128 512 800 ใช่
trn1n.32xlarge (เร็วๆ นี้) 16 512 128 512 1600 ใช่

มาทำความเข้าใจวิธีใช้ Trainium กับ SageMaker ด้วยตัวอย่างง่ายๆ เราจะฝึกโมเดลการจัดประเภทข้อความด้วยการฝึก SageMaker และ PyTorch โดยใช้ Hugging Face Transformers Library

เราใช้ชุดข้อมูลรีวิวของ Amazon ซึ่งประกอบด้วยรีวิวจาก amazon.com ข้อมูลครอบคลุมระยะเวลา 18 ปี ประกอบด้วยรีวิวประมาณ 35 ล้านรายการจนถึงเดือนมีนาคม 2013 บทวิจารณ์ประกอบด้วยข้อมูลผลิตภัณฑ์และผู้ใช้ การให้คะแนน และบทวิจารณ์แบบข้อความธรรมดา รหัสต่อไปนี้เป็นตัวอย่างจาก AmazonPolarity ชุดทดสอบ:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

สำหรับโพสต์นี้ เราใช้เฉพาะฟิลด์เนื้อหาและป้ายกำกับเท่านั้น ช่องเนื้อหาเป็นบทวิจารณ์แบบข้อความอิสระ และช่องป้ายกำกับเป็นค่าไบนารีที่มี 1 หรือ 0 สำหรับบทวิจารณ์เชิงบวกหรือเชิงลบ ตามลำดับ

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

รายละเอียดการใช้งาน

เรามาเริ่มกันที่ส่วนประกอบต่างๆ ที่เกี่ยวข้องในการฝึกโมเดลให้ละเอียดยิ่งขึ้น:

  • การฝึกอบรม AWS - ที่แกนหลักแต่ละอัน ตัวอย่าง Trainium มีอุปกรณ์ Trainium ในตัว Trn1.2xlarge มีอุปกรณ์ Trainium 1 เครื่อง และ Trn1.32xlarge มีอุปกรณ์ Trainium 16 เครื่อง อุปกรณ์ Trainium แต่ละชิ้นประกอบด้วยการประมวลผล (2 NeuronCore-v2), หน่วยความจำอุปกรณ์ HBM ขนาด 32 GB และ NeuronLink เพื่อการสื่อสารระหว่างอุปกรณ์ที่รวดเร็ว แต่ละ NeuronCore-v2 ประกอบด้วยหน่วยประมวลผลต่างชนิดกันที่เป็นอิสระอย่างสมบูรณ์พร้อมเอนจินแยก (เทนเซอร์/เวกเตอร์/สเกลาร์/GPSIMD) GPSIMD เป็นตัวประมวลผลอเนกประสงค์ที่ตั้งโปรแกรมได้อย่างสมบูรณ์ ซึ่งคุณสามารถใช้เพื่อใช้งานตัวดำเนินการแบบกำหนดเองและเรียกใช้งานโดยตรงบนกลไก NeuronCore
  • การฝึกอบรม Amazon SageMaker – SageMaker มอบประสบการณ์การฝึกอบรมที่มีการจัดการเต็มรูปแบบเพื่อให้ฝึกโมเดลได้อย่างง่ายดายโดยไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐาน เมื่อคุณใช้ SageMaker Training ระบบจะทำงานทุกอย่างที่จำเป็นสำหรับงานฝึกอบรม เช่น โค้ด คอนเทนเนอร์ และข้อมูล ในโครงสร้างพื้นฐานการประมวลผลที่แยกจากสภาพแวดล้อมการเรียกใช้ ซึ่งช่วยให้เราทำการทดลองแบบคู่ขนานและทำซ้ำได้อย่างรวดเร็ว SageMaker ให้ งูหลาม SDK เพื่อเปิดงานฝึกอบรม ตัวอย่างในโพสต์นี้ใช้ SageMaker Python SDK เพื่อทริกเกอร์งานฝึกอบรมโดยใช้ Trainium
  • AWS เซลล์ประสาท – เนื่องจาก Trainium NeuronCore มีกลไกประมวลผลของตัวเอง เราจึงต้องการกลไกในการรวบรวมรหัสการฝึกอบรมของเรา เดอะ AWS เซลล์ประสาท คอมไพเลอร์ใช้โค้ดที่เขียนใน Pytorch/XLA และปรับแต่งให้ทำงานบนอุปกรณ์ Neuron คอมไพเลอร์ Neuron ถูกรวมเป็นส่วนหนึ่งของ Deep Learning Container ที่เราจะใช้สำหรับการฝึกอบรมโมเดลของเรา
  • ไพทอร์ช/XLA - นี้ แพ็คเกจ Python ใช้คอมไพเลอร์การเรียนรู้เชิงลึก XLA เพื่อเชื่อมต่อเฟรมเวิร์กการเรียนรู้เชิงลึกของ PyTorch และตัวเร่งความเร็วบนคลาวด์เช่น Trainium การสร้างเครือข่าย PyTorch ใหม่หรือการแปลงเครือข่ายที่มีอยู่ให้ทำงานบนอุปกรณ์ XLA ต้องใช้โค้ดเฉพาะของ XLA เพียงไม่กี่บรรทัด เราจะดูกรณีการใช้งานของเราว่าเราต้องทำการเปลี่ยนแปลงอะไรบ้าง
  • การฝึกอบรมแบบกระจาย – เพื่อดำเนินการฝึกอบรมอย่างมีประสิทธิภาพบน NeuronCores หลายตัว เราจำเป็นต้องมีกลไกเพื่อกระจายการฝึกอบรมไปยัง NeuronCores ที่มี SageMaker รองรับ torchrun ด้วยอินสแตนซ์ Trainium ซึ่งสามารถใช้เพื่อรันหลายกระบวนการเทียบเท่ากับจำนวนของ NeuronCores ในคลัสเตอร์ สิ่งนี้ทำได้โดยการส่งพารามิเตอร์การกระจายไปยังตัวประมาณค่าของ SageMaker ดังต่อไปนี้ ซึ่งจะเริ่มต้นการฝึกอบรมแบบกระจายข้อมูลแบบขนานโดยที่โมเดลเดียวกันถูกโหลดลงใน NeuronCores ต่างๆ ที่ประมวลผลชุดข้อมูลที่แยกจากกัน:
distribution={"torch_distributed": {"enabled": True}}

การเปลี่ยนแปลงสคริปต์จำเป็นต้องทำงานบน Trainium

มาดูการเปลี่ยนแปลงโค้ดที่จำเป็นในการนำสคริปต์ PyTorch ที่ใช้ GPU มาใช้เพื่อทำงานบน Trainium ในระดับสูง เราต้องทำการเปลี่ยนแปลงต่อไปนี้:

  1. แทนที่อุปกรณ์ GPU ด้วยอุปกรณ์ Pytorch/XLA เนื่องจากเราใช้การกระจายคบเพลิง เราจำเป็นต้องเริ่มต้นการฝึกด้วย XLA เป็นอุปกรณ์ดังนี้:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. เราใช้แบ็กเอนด์แบบกระจายของ PyTorch/XLA เพื่อเชื่อมโยง API แบบกระจายของ PyTorch กับความหมายในการสื่อสาร XLA
  3. เราใช้ PyTorch/XLA MpDeviceLoader สำหรับไปป์ไลน์การนำเข้าข้อมูล MpDeviceLoader ช่วยปรับปรุงประสิทธิภาพโดยการซ้อนทับสามขั้นตอน: การติดตาม การคอมไพล์ และการโหลดชุดข้อมูลไปยังอุปกรณ์ เราจำเป็นต้องห่อตัวโหลดข้อมูล PyTorch ด้วย MpDeviceDataLoader ดังนี้:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. เรียกใช้ขั้นตอนการเพิ่มประสิทธิภาพโดยใช้ API ของ XLA ตามที่แสดงในรหัสต่อไปนี้ สิ่งนี้รวมการไล่ระดับสีระหว่างคอร์และออกการคำนวณขั้นตอนของอุปกรณ์ XLA
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. แมป CUDA APIs (ถ้ามี) กับ PyTorch API ทั่วไป
  6. แทนที่เครื่องมือเพิ่มประสิทธิภาพที่หลอมรวม CUDA (ถ้ามี) ด้วยทางเลือก PyTorch ทั่วไป

ตัวอย่างทั้งหมดซึ่งฝึกโมเดลการจัดประเภทข้อความโดยใช้ SageMaker และ Trainium มีอยู่ในรายการต่อไปนี้ repo GitHub. ไฟล์สมุดบันทึก ปรับแต่ง Transformers สำหรับแบบจำลองการจำแนกอาคารโดยใช้ SageMaker และ Trainium.ipynb เป็นจุดเริ่มต้นและมีคำแนะนำทีละขั้นตอนเพื่อเรียกใช้การฝึกอบรม

การทดสอบเกณฑ์มาตรฐาน

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

ตารางต่อไปนี้สรุปผลการเปรียบเทียบเกณฑ์มาตรฐานของเรา

รุ่น ประเภทอินสแตนซ์ ราคา (ต่อโหนด * ชั่วโมง) ปริมาณงาน (การวนซ้ำ/วินาที) การตรวจสอบความถูกต้อง เวลาที่เรียกเก็บเงินได้ (วินาที) ค่าฝึกอบรมเป็น $
การจำแนกประเภทฐานของ BERT ml.trn1.32xlarge 24.725 6.64 0.984 6033 41.47
การจำแนกประเภทฐานของ BERT ml.p4d.24xlarge 37.69 5.44 0.984 6553 68.6

ผลลัพธ์แสดงให้เห็นว่าอินสแตนซ์ Trainium มีค่าใช้จ่ายน้อยกว่าอินสแตนซ์ P4d ซึ่งให้ปริมาณงานและความแม่นยำที่ใกล้เคียงกัน เมื่อฝึกโมเดลเดียวกันด้วยข้อมูลอินพุตและพารามิเตอร์การฝึกเดียวกัน ซึ่งหมายความว่าอินสแตนซ์ Trainium มอบประสิทธิภาพด้านราคาที่ดีกว่าอินสแตนซ์ P4D ที่ใช้ GPU ด้วยตัวอย่างง่ายๆ เช่นนี้ เราจะเห็นว่า Trainium มีเวลาฝึกอบรมเร็วขึ้นประมาณ 22% และต้นทุนลดลงสูงสุด 50% สำหรับอินสแตนซ์ P4d

ปรับใช้โมเดลที่ผ่านการฝึกอบรม

หลังจากที่เราฝึกโมเดลแล้ว เราสามารถปรับใช้กับอินสแตนซ์ประเภทต่างๆ เช่น CPU, GPU หรือ AWS Inferentia ประเด็นสำคัญที่ควรทราบคือโมเดลที่ผ่านการฝึกอบรมไม่ได้ขึ้นอยู่กับฮาร์ดแวร์พิเศษในการปรับใช้และทำการอนุมาน SageMaker มีกลไกในการปรับใช้โมเดลที่ผ่านการฝึกอบรมโดยใช้ทั้งกลไกตามเวลาจริงหรือแบบกลุ่ม ตัวอย่างสมุดบันทึกใน repo GitHub มีโค้ดเพื่อปรับใช้โมเดลที่ผ่านการฝึกอบรมเป็นปลายทางแบบเรียลไทม์โดยใช้อินสแตนซ์ ml.c5.xlarge (อิง CPU)

สรุป

ในโพสต์นี้ เราดูวิธีใช้ Trainium และ SageMaker เพื่อตั้งค่าและฝึกโมเดลการจัดประเภทอย่างรวดเร็วซึ่งช่วยประหยัดต้นทุนได้มากถึง 50% โดยไม่ลดทอนความแม่นยำ คุณสามารถใช้ Trainium สำหรับกรณีการใช้งานที่หลากหลายที่เกี่ยวข้องกับการฝึกอบรมล่วงหน้าหรือการปรับแต่งแบบจำลองที่ใช้ Transformer สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรองรับสถาปัตยกรรมรุ่นต่างๆ โปรดดูที่ แนวทางความพอดีของสถาปัตยกรรมแบบจำลอง.


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

อรุณกุมารโลกนาถ เป็น Senior ML Solutions Architect กับทีม Amazon SageMaker Service เขามุ่งเน้นที่การช่วยลูกค้าสร้าง ฝึกอบรม และโยกย้ายปริมาณงานการผลิต ML ไปยัง SageMaker ตามขนาด เขาเชี่ยวชาญด้าน Deep Learning โดยเฉพาะในด้าน NLP และ CV นอกเวลาทำงาน เขาชอบวิ่งและเดินป่า

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

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

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

ประทับเวลา:

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