บทคัดย่อ:
Docker containers เป็นรากฐานสำคัญของเวิร์กโฟลว์ปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (ML) สมัยใหม่ แต่ขนาดที่ใหญ่ของ ML images ทั่วไปมักส่งผลให้เกิดความล่าช้าในการเริ่มต้นอย่างมีนัยสำคัญ ซึ่งส่วนใหญ่มาจากการดึง image ระหว่าง cold starts บทความนี้นำเสนอกลยุทธ์ที่ใช้งานได้จริงเพื่อลดความล่าช้าในการเริ่มต้น โดยนำเสนอตั้งแต่การปรับแต่งง่ายๆ ไปจนถึงตัวเลือกขั้นสูง เราเริ่มต้นด้วยการปรับปรุงระดับ image เช่น การกำจัด dependencies ที่ไม่จำเป็นและการใช้ multi-stage builds เพื่อลดขนาด image จากนั้นเราจะสำรวจการปรับปรุงโครงสร้างพื้นฐาน โดยเน้นเป็นพิเศษที่ Seekable OCI (SOCI) สุดท้าย เราจะพูดถึงเทคนิคการถ่ายโอนความล่าช้า เช่น warm pools และ pre-pulled images กลยุทธ์เหล่านี้รวมกันเป็นชุดเครื่องมือที่ยืดหยุ่นสำหรับการปรับปรุงประสิทธิภาพของระบบ AI/ML ช่วยให้องค์กรสามารถสร้างสมดุลระหว่างความพยายามทางวิศวกรรมและข้อกำหนดด้านความล่าช้าเพื่อส่งมอบสภาพแวดล้อม containerized ที่เร็วขึ้น
Docker containers ได้กลายเป็นรากฐานสำคัญของการ deploy ซอฟต์แวร์สมัยใหม่เนื่องจากความสามารถในการพกพาและความสามารถในการรักษาความสอดคล้องในสภาพแวดล้อมที่หลากหลาย ในด้านปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (ML) การใช้ container มีบทบาทสำคัญมากยิ่งขึ้น: มันครอบคลุม frameworks, GPU drivers, custom dependencies และ runtime environments ที่จำเป็นสำหรับ training และ inference pipelines
แพลตฟอร์ม AI บนคลาวด์ เช่น Amazon SageMaker Studio พึ่งพาโครงสร้างพื้นฐาน Dockerized อย่างมากเพื่อสร้างสภาพแวดล้อมที่มั่นคงสำหรับการทดลองและการ deploy images เหล่านี้มักมีขนาดใหญ่ (มักเป็นหลายกิกะไบต์) เนื่องจากรวม data science toolkits, CUDA, distributed training libraries และ notebook interfaces ไว้ด้วยกัน ผลที่ตามมาคือความล่าช้าในการเริ่มต้น container กลายเป็นคอขวดด้านประสิทธิภาพที่สำคัญ โดยเฉพาะเมื่อ workloads จำเป็นต้องปรับขนาดแบบไดนามิกหรือเมื่อผู้ใช้คาดหวัง interactive sessions
ส่วนสำคัญของความล่าช้านี้ (มักอยู่ที่ 30-60% ขึ้นอยู่กับแบนด์วิดท์เครือข่ายและขนาด image) มาจากการดึง container image จาก registry ไปยัง compute instance ยิ่ง image ใหญ่เท่าใด ผู้ใช้หรือ workload ก็จะใช้เวลานานขึ้นเท่านั้นในการเห็นผลลัพธ์
บทความนี้สำรวจเทคนิคหลายอย่าง ตั้งแต่การปรับปรุง image ไปจนถึงโซลูชันระดับโครงสร้างพื้นฐาน เพื่อลดความล่าช้านี้และปรับปรุงการตอบสนอง เราจะทบทวนกลยุทธ์เหล่านี้ตามลำดับความซับซ้อนที่เพิ่มขึ้น ช่วยให้คุณเลือกสิ่งที่เหมาะสมที่สุดสำหรับความต้องการขององค์กรของคุณ
กลยุทธ์ด้านล่างนี้พัฒนาจากการเปลี่ยนแปลงขนาดเล็กที่เน้นที่ image ไปสู่การปรับปรุงโครงสร้างพื้นฐานและระดับ workload ที่กว้างขึ้น
วิธีที่เข้าถึงได้และคุ้มค่าที่สุดในการลดความล่าช้าการเริ่มต้น container คือการลดขนาดของ image ของคุณ images ที่เล็กกว่าจะดึงเร็วขึ้น เริ่มต้นเร็วขึ้น และใช้พื้นที่จัดเก็บน้อยลง กระบวนการนี้มักเริ่มต้นด้วยการประเมินเครื่องมือและ dependencies ที่วิศวกรหรือนักวิทยาศาสตร์ข้อมูลของคุณต้องการจริงๆ
ML images ขนาดใหญ่ (เช่น open-source SageMaker Distribution images) มักมีชุดเครื่องมือที่กว้างขวางครอบคลุมหลาย frameworks, versions และ workflows ในทางปฏิบัติ ทีมส่วนใหญ่ใช้เครื่องมือเหล่านี้เพียงบางส่วนเท่านั้น วิศวกรสามารถลดขนาด image ได้อย่างมากโดยการลบ Python packages, GPU libraries, system utilities และ bundled datasets ที่ไม่จำเป็นออก
แนวทางปฏิบัติบางอย่างประกอบด้วย:
แม้แต่การลดขนาดเพียงเล็กน้อยก็สามารถลดความล่าช้าในการเริ่มต้นได้อย่างมีนัยสำคัญ โดยเฉพาะในสภาพแวดล้อมที่มีการสร้าง containers บ่อยครั้ง
ในขณะที่การปรับปรุง image มุ่งเน้นไปที่การลดจำนวนข้อมูลที่ถ่ายโอน การปรับปรุงระดับถัดไปจะปรับปรุงวิธีการโหลดและจัดการ images ใน runtime การกำหนดค่าเครือข่าย, การตั้งค่า registry และความสามารถของ container runtime ล้วนมีส่วนกำหนดประสิทธิภาพการเริ่มต้น
การดึง Container อาจช้าลงเนื่องจากเส้นทางเครือข่ายที่ไม่มีประสิทธิภาพหรือคอขวดของทราฟฟิก การปรับปรุงประกอบด้วย:
การปรับแต่งเหล่านี้ช่วยปรับปรุงความสม่ำเสมอและลดความแปรปรวน อย่างไรก็ตาม การปรับปรุงที่สำคัญที่สุดในหมวดหมู่นี้มักมาจากการใช้ Seekable OCI (SOCI)
AWS's SOCI Snapshotter แนะนำวิธีการใหม่ในการเริ่มต้น containers แทนที่จะดึง image ทั้งหมดก่อนเปิดใช้งาน SOCI อนุญาตให้ container runtime ดึงเฉพาะ metadata ที่จำเป็นและชุด layers ขั้นต่ำที่จำเป็นในการเริ่มต้น container ในขณะที่ส่วนที่เหลือจะโหลดตามความต้องการ ด้านล่างเป็นมุมมองง่ายๆ ของความสัมพันธ์ระหว่าง container image และ SOCI index ที่เกี่ยวข้อง:
เทคนิคนี้ลดความล่าช้าในการเริ่มต้นที่รับรู้ได้อย่างมาก ตัวอย่างเช่น:
กลยุทธ์นี้มีประสิทธิภาพเป็นพิเศษสำหรับ AI/ML workloads ที่ images มี libraries ขนาดใหญ่ที่ไม่จำเป็นต้องใช้ทันทีเมื่อเปิดใช้งาน โดยการเลื่อนการดาวน์โหลด layers ที่ไม่ได้ใช้ SOCI ช่วยให้มีเวลาตอบสนองที่เร็วขึ้นในขณะที่รักษา workflow โดยรวมไว้เหมือนเดิม
สำหรับองค์กรที่พึ่งพา autoscaling ที่เร็วหรือสภาพแวดล้อม interactive notebook SOCI นำเสนออัตราส่วนผลกระทบต่อความพยายามที่สูงที่สุดในบรรดากลยุทธ์ระดับโครงสร้างพื้นฐาน
แนวทางที่ซับซ้อนที่สุดคือการหลีกเลี่ยงความล่าช้าในการดึง image โดยสิ้นเชิงโดยย้ายมันออกจากเส้นทางการดำเนินการของลูกค้า แทนที่จะปรับปรุงการดึงหรือลดขนาดข้อมูล การถ่ายโอนความล่าช้ามุ่งเน้นไปที่การทำให้ลูกค้าไม่ประสบกับ cold starts เลย
สิ่งนี้สามารถทำได้ผ่านการอุ่นเครื่องสภาพแวดล้อม compute ล่วงหน้าและการดึง images ล่วงหน้า
ในเทคนิคนี้ ผู้ให้บริการจะดูแลรักษา pool ของ instances "อุ่น" ที่กำลังทำงานอยู่แล้วและพร้อมให้บริการ user workloads เมื่อผู้ใช้หรืองานร้องขอ compute ระบบจะกำหนด warm instance แทนการจัดหา instance ใหม่ สิ่งนี้ลดความล่าช้าในการเริ่มต้น instance 100% สำหรับผู้ใช้ปลายทาง
Warm pools มีอยู่ในบริการที่มีการจัดการมากมาย:
pools เหล่านี้สามารถรักษา containers หรือ instances ให้พร้อมในระดับความพร้อมต่างๆ ขึ้นอยู่กับความต้องการในการดำเนินงาน
หากลูกค้าส่วนใหญ่พึ่งพา image ที่ใช้ร่วมกัน warm pool instances ยังสามารถกำหนดค่าให้ดึง image นั้นล่วงหน้าได้ เมื่อกำหนดให้กับผู้ใช้ instance กำลังทำงานอยู่แล้ว และ image ที่จำเป็นถูกแคชไว้ในเครื่องแล้ว วิธีนี้ลบเวลาการดึง image ออกอย่างสมบูรณ์ ให้ประสบการณ์การเริ่มต้นที่เร็วที่สุดเท่าที่เป็นไปได้
แนวทางเหล่านี้ได้รับการอธิบายอย่างละเอียดในงานของ Gillam, L. และ Porter, B. เกี่ยวกับการวิเคราะห์ประสิทธิภาพของสภาพแวดล้อม container ต่างๆ (2021) งานของพวกเขานำเสนอการเปรียบเทียบที่ชัดเจนของพฤติกรรม container แบบ cold เทียบกับ warm และสนับสนุนความถูกต้องของกลยุทธ์ warm-pooling
การถ่ายโอนความล่าช้าต้องใช้ต้นทุนในการดำเนินงาน รวมถึงความจุในการคำนวณ, logic การจัดการ และทรัพยากรที่ไม่ได้ใช้งาน อย่างไรก็ตาม สำหรับระบบที่ประสบการณ์ผู้ใช้หรือการปรับขนาดอย่างรวดเร็วมีความสำคัญสูงสุด ประโยชน์มักมีค่ามากกว่าต้นทุน
ความล่าช้าในการเริ่มต้น Container สามารถทำให้เวิร์กโฟลว์ AI/ML ช้าลงอย่างมากและลดประสบการณ์ผู้ใช้ในสภาพแวดล้อมแบบโต้ตอบ แม้ว่าเวลาการดึง image มักครอบงำความล่าช้านี้ แต่องค์กรสามารถเลือกจากโซลูชันที่หลากหลายเพื่อจัดการและบรรเทาปัญหา
แนวทางที่ใช้ความพยายามน้อย เช่น การปรับปรุง image ให้ผลลัพธ์ที่รวดเร็วด้วยภาระการดำเนินงานเพียงเล็กน้อย การปรับปรุงโครงสร้างพื้นฐาน โดยเฉพาะผ่านเทคโนโลยีอย่าง SOCI ช่วยให้สามารถลดความล่าช้าได้อย่างมากโดยไม่ต้องเปลี่ยนแปลงสถาปัตยกรรมหลัก การถ่ายโอนความล่าช้าให้เวลาเริ่มต้นที่เร็วที่สุดสำหรับผู้ใช้ แม้ว่าจะมาพร้อมกับต้นทุนและความซับซ้อนที่ต่อเนื่อง
ไม่ใช่ทุกกลยุทธ์ที่เหมาะสมกับทุกสภาพแวดล้อม สำหรับธุรกิจที่ความล่าช้าไม่ใช่ภารกิจสำคัญ การรักษา warm pool อาจไม่คุ้มค่ากับต้นทุนในการดำเนินงาน อย่างไรก็ตาม บริษัทที่ส่งมอบความสามารถ AI แบบเรียลไทม์, interactive notebooks หรือ microservices ที่ปรับขนาดแบบไดนามิกสามารถปรับปรุงความพึงพอใจของผู้ใช้ได้อย่างมากโดยการใช้เทคนิคเหล่านี้
ท้ายที่สุดแล้ว การเร่งการเริ่มต้น container ไม่ได้เป็นเพียงการปรับปรุงประสิทธิภาพ แต่ยังช่วยเพิ่มประสิทธิภาพนักพัฒนา ปรับปรุงประสบการณ์ผู้ใช้ และเสริมสร้างการตอบสนองของระบบที่ขับเคลื่อนด้วย AI สมัยใหม่
เอกสารอ้างอิง:
:::info เรื่องราวนี้ได้รับการเผยแพร่ภายใต้โปรแกรม Business Blogging ของ HackerNoon
:::
\


