ลิขสิทธิ์ของ Amazon SageMaker Toolkits
ผู้เขียน: วิเกศ ปันเดย์
คุณทราบหรือไม่ว่าAmazon SageMakerมี"ชุดเครื่องมือ" ที่แตกต่างกันถึง 8 แบบซึ่งทำให้กระบวนการสร้างคอนเทนเนอร์การฝึกอบรม/การอนุมานและเรียกใช้โค้ดบน SageMaker นั้นง่ายกว่ามาก ไม่ว่าคุณจะใช้คอนเทนเนอร์ที่ SageMaker จัดหาให้หรือสร้างคอนเทนเนอร์ของคุณเอง (BYOC) ชุดเครื่องมือเหล่านี้มีบทบาทสำคัญมาก
หากคุณกำลังทำงานกับ SageMaker ความเข้าใจของคุณเกี่ยวกับชุดเครื่องมือเหล่านี้อาจอยู่ในประเภทใดประเภทหนึ่งเหล่านี้:
1. คุณไม่เคยได้ยินเรื่องนี้มาก่อน
2. คุณเคยได้ยินเรื่องนี้แต่ไม่รู้ว่ามีจุดประสงค์อะไร
3. คุณใช้ความพยายามเป็นพิเศษในการลงลึกในชุดเครื่องมือเหล่านี้และขุดค้นมากพอที่จะเรียกตัวเองว่าเป็นผู้เชี่ยวชาญ :)
บล็อกนี้ให้บริการแก่ผู้อ่านสองประเภทแรกเป็นส่วนใหญ่
เหตุใดจึงสำคัญที่คุณต้องรู้เกี่ยวกับเรื่องนี้
มีเหตุผลหลักสองประการที่คุณควรทราบเกี่ยวกับชุดเครื่องมือเหล่านี้:
1. ทำให้การดีบักการฝึกอบรมและ/หรือการอนุมานคอนเทนเนอร์และโค้ดสำหรับข้อผิดพลาดง่ายขึ้นมาก
2. คุณสามารถใช้ SageMaker ได้อย่างมีประสิทธิภาพมากขึ้น (และรวดเร็ว) โดยรู้ว่าคุณเข้าถึงตัวแปรสภาพแวดล้อมใดได้บ้าง ไลบรารีทั้งหมด (และเวอร์ชันของไลบรารี) ใดที่อยู่ในคอนเทนเนอร์การฝึก/การอนุมาน ฯลฯ และการนำไปใช้งานใดที่ SageMaker ได้ทำเพื่อโยงคอนเทนเนอร์และโค้ด ด้วยกัน.
ในบล็อกนี้ เราจะเจาะลึกเข้าไปในโลกของชุดเครื่องมือเหล่านี้และตอบคำถามต่อไปนี้:
- มีชุดเครื่องมืออะไรบ้าง?
- ทำไมคุณต้องการพวกเขา?
- จะทำอย่างไรถ้าคุณไม่ใช้ชุดเครื่องมือเหล่านี้
- ทำไมพวกเขาจำนวนมาก?
- เลือกใช้อย่างไรดี?
- เหตุใดชุดเครื่องมือจึงไม่สอดคล้องกันในเฟรมเวิร์ก/วงจรชีวิตของ ML (รายละเอียดเพิ่มเติมในส่วนต่อไป)
SageMaker มีชุดเครื่องมือที่แตกต่างกัน 8 ชุด (ใช่ คุณอ่านไม่ผิด!) เพื่อช่วยคุณขณะทำงานใน SageMaker พวกเขาให้ความสำคัญกับขั้นตอนการฝึกอบรมและการอนุมานเป็นหลัก ด้วยความช่วยเหลือของไดอะแกรมด้านล่าง เรามาทำความเข้าใจว่าพวกมันเรียงซ้อนกันอย่างไรในลำดับชั้น:
อย่างที่คุณเห็น ชุดเครื่องมือแบ่งออกเป็นสองส่วน (การฝึกอบรมและการอนุมาน) ในทางเทคนิคชุดเครื่องมือเหล่านี้คือแพ็คเกจ python ซึ่งคุณสามารถติดตั้งผ่านpipใน Dockerfile ของคุณ
N OTE : หากคุณสังเกตเห็นว่าชุดเครื่องมือ Hugface-training-toolkitและtensorflow-inference-toolkitsหายไปจากแผนภาพด้านบน อ่านต่อไปจนจบบล็อกแล้วคุณจะพบคำตอบของปริศนานี้เช่นกัน :) สำหรับตอนนี้ เรามาทำความเข้าใจเพิ่มเติมเกี่ยวกับชุดเครื่องมือเหล่านี้กัน
1. ชุดเครื่องมือการฝึกอบรม
นี่คือแพ็คเกจที่คุณต้องเพิ่มในไฟล์ Docker เพื่อทำให้คอนเทนเนอร์ของคุณรองรับการทำงานบน SageMaker เพื่อการฝึกอบรม
- ชุดเครื่องมือการฝึกอบรม SageMaker (หลัก)
- ชุดเครื่องมือการฝึกอบรม SageMaker TensorFlow (ขยายชุดเครื่องมือการฝึกอบรม sagemaker)
- ชุดเครื่องมือการฝึกอบรม SageMaker PyTorch (ขยายชุดเครื่องมือการฝึกอบรม sagemaker)
- ชุดเครื่องมือการฝึกอบรม SageMaker MXNet (ขยายชุดเครื่องมือการฝึกอบรม sagemaker)
นี่คือแพ็คเกจที่คุณต้องเพิ่มในไฟล์ Docker ของคุณเพื่อทำให้คอนเทนเนอร์ของคุณรองรับการทำงานบน SageMaker เพื่อวัตถุประสงค์ในการอนุมาน
- ชุดเครื่องมือการอนุมานของ SageMaker (พาเรนต์)
- ชุดเครื่องมือการอนุมาน SageMaker PyTorch (ขยายชุดเครื่องมือการอนุมานของ sagemaker)
- ชุดเครื่องมือการอนุมาน SageMaker MXNet (ขยายชุดเครื่องมือการอนุมานของ sagemaker)
- ชุดเครื่องมือการอนุมาน SageMaker Huggingface (ขยายชุดเครื่องมือการอนุมานของ sagemaker)
SageMaker ต้องการโครงสร้างโฟลเดอร์เฉพาะเพื่อให้อยู่ภายในคอนเทนเนอร์ ซึ่งเก็บข้อมูลอินพุต การกำหนดค่า โมเดล บันทึก ฯลฯ สิ่งสำคัญอีกประการหนึ่งคือการใช้ตัวแปรสภาพแวดล้อมของ SageMaker ในโค้ดและคอนเทนเนอร์การฝึกอบรม
ตัวแปรสภาพแวดล้อมเหล่านี้อนุญาตให้รหัสการฝึกอบรมเข้าถึงตำแหน่งข้อมูลอินพุต ตำแหน่งเอาต์พุตโมเดล ตำแหน่งการกำหนดค่า ฯลฯ หากต้องการทราบข้อมูลเพิ่มเติม โปรดดูที่โฟลเดอร์พื้นที่จัดเก็บการฝึกอบรม Amazon SageMaker สำหรับชุดข้อมูลการฝึกอบรม จุดตรวจสอบ สิ่งประดิษฐ์โมเดล และเอาต์พุต
หากคุณเพิ่งติดตั้งชุดเครื่องมือเหล่านี้ภายในคอนเทนเนอร์ของคุณ โครงสร้างโฟลเดอร์ทั้งหมดจะถูกติดตั้งอย่างถูกต้องในคอนเทนเนอร์ โดยเปิดใช้งานตัวแปรสภาพแวดล้อม SageMaker ทั้งหมดเพื่อให้รหัสการฝึกอบรมของคุณเข้าถึงได้ หากต้องการทราบข้อมูลเพิ่มเติม โปรดดูการใช้ชุดเครื่องมือการฝึกอบรมและการอนุมานของ SageMaker
โดยสรุปแล้ว ชุดเครื่องมือเหล่านี้เป็นสิ่งที่ต้องมี หากคุณต้องการลดความซับซ้อนของการพัฒนาคอนเทนเนอร์ และใช่ คอนเทนเนอร์ที่จัดเตรียมโดย SageMaker ยังมีชุดเครื่องมือเหล่านี้ติดตั้งไว้ล่วงหน้าด้วย
จะทำอย่างไรถ้าคุณไม่ใช้ชุดเครื่องมือเหล่านี้
คุณยังสามารถทำให้คอนเทนเนอร์ของคุณรองรับการทำงานบน SageMaker ได้ มันเป็นเพียงการทำงานด้วยตนเองมากขึ้น คุณต้องใช้ ตัวแปร WORKDIRและENVด้วยตนเองในไฟล์ Dockerfile ของคุณเพื่อให้ทำงานได้
ทำไมพวกเขาจำนวนมาก?
นี่คือสาเหตุบางประการที่ทำให้มีจำนวนมาก:
- ข้อกำหนดสำหรับคอนเทนเนอร์การฝึกอบรมจะแตกต่างจากคอนเทนเนอร์การอนุมาน เช่น คุณไม่จำเป็นต้องมีเว็บเซิร์ฟเวอร์ในคอนเทนเนอร์การฝึก แต่คุณต้องการในคอนเทนเนอร์การอนุมาน และนั่นเป็นสาเหตุที่ชุดเครื่องมือถูกจัดอยู่ในสองลำดับชั้น
- เฟรมเวิร์กต่างๆ เช่น TensorFlow, PyTorch เป็นต้น มีการกำหนดค่าและการตั้งค่าที่แตกต่างกันเพื่อลบล้างค่าเริ่มต้นและปรับแต่งความสามารถในการฝึกอบรมและการอนุมาน
- มันขึ้นอยู่กับหลักการความรับผิดชอบเดียวจากโลกของการพัฒนาซอฟต์แวร์ แพ็คเกจควรทำสิ่งเดียวเท่านั้นและทำถูกต้อง SageMaker อาจสร้างคอนเทนเนอร์ monolith เดียวที่มีทุกอย่างอยู่ในนั้น แต่การจัดการและแพตช์คอนเทนเนอร์นั้นอาจเป็นฝันร้าย
sagemaker-training-toolkitและsagemaker-inference-toolkitเป็นชุดเครื่องมือพื้นฐานที่สามารถใช้กับเฟรมเวิร์กหรือไลบรารีใดๆ ที่คุณต้องการใช้ภายในคอนเทนเนอร์ของคุณ ชุดเครื่องมือเหล่านี้มีฟังก์ชันการทำงานของ SageMaker ทั้งหมดที่คุณต้องการเพื่อเรียกใช้คอนเทนเนอร์ของคุณบน SageMaker
ในขณะที่หากคุณวางแผนที่จะสร้างคอนเทนเนอร์ TensorFlow, PyTorch, Huggingface หรือ MxNet ของคุณเอง คุณสามารถใช้ชุดเครื่องมือที่เกี่ยวข้องซึ่งจัดเตรียมโดย SageMaker และข้ามชุดเครื่องมือการฝึกอบรมพื้นฐานและการอนุมาน นี่เป็นเพราะชุดเครื่องมือเฉพาะของเฟรมเวิร์กขยายจากชุดเครื่องมือพื้นฐาน ดังนั้นคุณจึงได้รับฟังก์ชันการทำงานทั้งหมดของชุดเครื่องมือพื้นฐานเช่นกัน
ตัวอย่างเช่นเมื่อคุณใช้sagemaker-tensorflow-training-toolkitคุณสามารถกำหนดค่าตัวแปรสภาพแวดล้อมบางอย่าง เช่น:
— SAGEMAKER_PARAMETER_SERVER_ENABLED,
— SAGEMAKER_DISTRIBUTED_DATAPARALLEL_ENABLED
— SAGEMAKER_MULTI_WORKER_MIRRORED_STRATEGY_ENABLED
ในทำนองเดียวกัน เมื่อใช้sagemaker-pytorch-training-toolkitคุณจะสามารถเข้าถึงตัวแปรสภาพแวดล้อมเช่น:
— LAUNCH_SMDATAPARALLEL_ENV_NAME
— LAUNCH_MPI_ENV_NAME
—
LAUNCH_PYTORCH_DDP_ENV_NAME — LAUNCH_PYTORCH_XLA_ENV_NAME
— LAUNCH_TORCH_DISTRIBUTED_ENV_NAME
N OTE : คุณยังสามารถเลือกที่จะสร้างเฟรมเวิร์กคอนเทนเนอร์ของคุณเองด้วยชุดเครื่องมือพื้นฐานเท่านั้น โดยที่คุณไม่ได้วางแผนที่จะใช้การกำหนดค่า/ปรับแต่งเฟรมเวิร์กใด ๆ ดังที่กล่าวไว้ข้างต้น
เหตุใดชุดเครื่องมือจึงไม่สอดคล้องกันในเฟรมเวิร์ก/วงจรชีวิตของ ML
คุณจะสังเกตได้ว่าไม่มีtensorflow-inference-toolkitหรือHugface -training-toolkit อะไรคือสาเหตุของสิ่งนั้น? ให้แบ่งตามกรอบ:
ทำไมไม่มีชุดเครื่องมือการอนุมานของเทนเซอร์โฟลว์
สาเหตุหลักเป็นเพราะ TensorFlow ใช้TensorFlow Servingเป็นกลไกการให้บริการ และคุณสามารถติดตั้งไลบรารีนี้และปรับแต่งได้ตามต้องการ ไม่จำเป็นต้องใช้ SageMaker เพื่อจัดเตรียมตัวเลือกการปรับแต่งเหล่านั้น
แต่คุณยังต้องการชุดเครื่องมือการอนุมานของ sagemakerในไฟล์ Docker ของคุณ ดังนั้นคุณจึงใช้การตั้งค่าเฉพาะของ SageMaker ทั้งหมดบนคอนเทนเนอร์ของคุณโดยอัตโนมัติ
ทำไมไม่มีชุดเครื่องมือฝึกกอดหน้า?
เนื่องจาก Hugface ไม่ได้ให้การใช้งานโมเดลของตัวเอง แต่ให้การใช้งานเฉพาะของ PyTorch และ TensorFlow
ดังนั้น หากคุณต้องการฝึกโมเดล Hugface คุณสามารถใช้ชุดเครื่องมือtensorflow-training-toolkitหรือpytorch-training-toolkitขึ้นอยู่กับว่าเฟรมเวิร์กใดที่คุณเลือกทำงานกับ Hugface ดังนั้นจึงไม่จำเป็นต้องใช้ชุดเครื่องมือฝึกการกอดหน้า
แต่คุณยังคงต้องการชุดเครื่องมือการอนุมานการกอดเฟซเพราะมันมีตัวแปรสภาพแวดล้อมเฉพาะของฮักเฟซเช่นHF_TASKหรือHF_MODEL_IDเป็นต้น
บทสรุป
โดยสรุปแล้ว ชุดเครื่องมือเหล่านี้เป็นวิธีที่ยอดเยี่ยมในการลดความซับซ้อนของกระบวนการพัฒนาโมเดล เนื่องจากมีการตั้งค่ามากมายให้คุณใช้งานได้ทันที หากคุณสงสัยในการอ่านรายละเอียดเกี่ยวกับเวลา/วิธีการ BYOC โปรดดูบล็อกของฉันเกี่ยวกับเหตุใดจึงต้องนำคอนเทนเนอร์ของคุณเองมาใช้กับ Amazon SageMaker และวิธีทำให้ถูกต้อง
หากคุณชอบสิ่งที่คุณอ่าน อย่าลังเลที่จะแบ่งปันกับเครือข่ายของคุณ





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)