การอนุมานแบบไร้เซิร์ฟเวอร์ของ Amazon SageMaker เป็นตัวเลือกการอนุมานที่มีจุดประสงค์เพื่อให้คุณปรับใช้และปรับขนาดโมเดลการเรียนรู้ของเครื่อง (ML) ได้ง่าย มีรูปแบบการจ่ายตามการใช้งาน ซึ่งเหมาะสำหรับบริการที่มีการเรียกใช้ปลายทางไม่บ่อยและคาดเดาไม่ได้ ต่างจากปลายทางการโฮสต์แบบเรียลไทม์ซึ่งได้รับการสนับสนุนจากอินสแตนซ์ที่ทำงานมายาวนาน ทรัพยากรการประมวลผลสำหรับปลายทางแบบไร้เซิร์ฟเวอร์นั้นได้รับการจัดเตรียมตามความต้องการ ดังนั้นจึงไม่จำเป็นต้องเลือกประเภทอินสแตนซ์หรือจัดการนโยบายการปรับขนาด
สถาปัตยกรรมระดับสูงต่อไปนี้แสดงให้เห็นว่าปลายทางแบบไร้เซิร์ฟเวอร์ทำงานอย่างไร ลูกค้าเรียกใช้ปลายทางซึ่งได้รับการสนับสนุนโดยโครงสร้างพื้นฐานที่มีการจัดการของ AWS
อย่างไรก็ตาม จุดปลายแบบไร้เซิร์ฟเวอร์มีแนวโน้มที่จะเริ่มระบบเย็นในลำดับวินาที ดังนั้นจึงเหมาะสำหรับปริมาณงานที่ไม่สม่ำเสมอหรือที่คาดการณ์ไม่ได้
เพื่อช่วยตรวจสอบว่าปลายทางแบบไร้เซิร์ฟเวอร์เป็นตัวเลือกการปรับใช้ที่เหมาะสมจากมุมมองด้านต้นทุนและประสิทธิภาพหรือไม่ เราได้พัฒนา ชุดเครื่องมือเปรียบเทียบการอนุมานแบบไร้เซิร์ฟเวอร์ของ SageMakerซึ่งทดสอบการกำหนดค่าปลายทางต่างๆ และเปรียบเทียบการกำหนดค่าที่เหมาะสมที่สุดกับอินสแตนซ์โฮสติ้งแบบเรียลไทม์ที่เปรียบเทียบกันได้
ในบทความนี้ เราจะแนะนำชุดเครื่องมือและให้ภาพรวมของการกำหนดค่าและผลลัพธ์
ภาพรวมโซลูชัน
คุณสามารถดาวน์โหลดชุดเครื่องมือและติดตั้งได้จาก repo GitHub. เริ่มต้นง่าย: เพียงติดตั้งไลบรารี สร้าง a รุ่น SageMakerและระบุชื่อโมเดลของคุณพร้อมกับไฟล์ที่จัดรูปแบบบรรทัด JSON ที่มีชุดตัวอย่างพารามิเตอร์การเรียกใช้ รวมถึงเนื้อหาเพย์โหลดและประเภทเนื้อหา มีฟังก์ชันอำนวยความสะดวกเพื่อแปลงรายการอาร์กิวเมนต์การเรียกใช้ตัวอย่างเป็นไฟล์บรรทัด JSON หรือไฟล์ pickle สำหรับเพย์โหลดไบนารี เช่น รูปภาพ วิดีโอ หรือเสียง
ติดตั้งชุดเครื่องมือ
ขั้นแรกให้ติดตั้งไลบรารีการเปรียบเทียบในสภาพแวดล้อม Python ของคุณโดยใช้ pip:
คุณสามารถเรียกใช้รหัสต่อไปนี้จากan สตูดิโอ Amazon SageMaker ตัวอย่าง, อินสแตนซ์โน้ตบุ๊ก SageMaker, หรือกรณีใดๆ กับ การเข้าถึงแบบเป็นโปรแกรม ให้กับ AWS และความเหมาะสม AWS Identity และการจัดการการเข้าถึง (IAM) สิทธิ์ สิทธิ์ IAM ที่จำเป็นได้รับการบันทึกไว้ใน repo GitHub. สำหรับคำแนะนำเพิ่มเติมและนโยบายตัวอย่างสำหรับ IAM โปรดดูที่ Amazon SageMaker ทำงานร่วมกับ IAM . อย่างไร. รหัสนี้เรียกใช้การวัดประสิทธิภาพด้วยชุดพารามิเตอร์เริ่มต้นในแบบจำลองที่คาดหวังอินพุต CSV พร้อมระเบียนตัวอย่างสองรายการ แนวทางปฏิบัติที่ดีคือการจัดหาชุดตัวอย่างที่เป็นตัวแทนเพื่อวิเคราะห์ว่าปลายทางทำงานอย่างไรกับเพย์โหลดอินพุตต่างๆ
นอกจากนี้ คุณสามารถเรียกใช้การวัดประสิทธิภาพเป็นงานการประมวลผล SageMaker ซึ่งอาจเป็นตัวเลือกที่น่าเชื่อถือมากขึ้นสำหรับการวัดประสิทธิภาพที่ทำงานยาวนานขึ้นพร้อมการเรียกใช้จำนวนมาก ดูรหัสต่อไปนี้:
โปรดทราบว่าการดำเนินการนี้จะมีค่าใช้จ่ายเพิ่มเติมในการเรียกใช้อินสแตนซ์การประมวลผล SageMaker ml.m5.large ในช่วงระยะเวลาของการเปรียบเทียบ
ทั้งสองวิธียอมรับพารามิเตอร์จำนวนหนึ่งเพื่อกำหนดค่า เช่น รายการการกำหนดค่าหน่วยความจำเพื่อวัดประสิทธิภาพและจำนวนครั้งที่เรียกใช้การกำหนดค่าแต่ละรายการ ในกรณีส่วนใหญ่ ตัวเลือกเริ่มต้นควรเพียงพอสำหรับจุดเริ่มต้น แต่อ้างอิงถึง repo GitHub สำหรับรายการที่สมบูรณ์และคำอธิบายของแต่ละพารามิเตอร์
การกำหนดค่าการเปรียบเทียบ
ก่อนที่จะเจาะลึกถึงสิ่งที่เบนช์มาร์กทำและผลลัพธ์ที่ได้ สิ่งสำคัญคือต้องเข้าใจแนวคิดหลักสองสามข้อในการกำหนดค่าปลายทางแบบไร้เซิร์ฟเวอร์
มี สองตัวเลือกการกำหนดค่าที่สำคัญ: MemorySizeInMB
และ MaxConcurrency
. MemorySizeInMB
กำหนดค่าจำนวนหน่วยความจำที่จัดสรรให้กับอินสแตนซ์ และสามารถเป็น 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB หรือ 6144 MB จำนวนของ vCPU ยังปรับสัดส่วนตามสัดส่วนของจำนวนหน่วยความจำที่จัดสรร ดิ MaxConcurrency
พารามิเตอร์ปรับจำนวนคำขอพร้อมกันที่ปลายทางสามารถให้บริการได้ กับ MaxConcurrency
จาก 1 จุดปลายแบบไร้เซิร์ฟเวอร์สามารถประมวลผลคำขอได้ครั้งละหนึ่งคำขอเท่านั้น
เพื่อสรุป, MemorySizeInMB
พารามิเตอร์มีกลไกสำหรับการปรับขยายในแนวตั้ง ช่วยให้คุณปรับหน่วยความจำและทรัพยากรการประมวลผลเพื่อรองรับโมเดลขนาดใหญ่ ในขณะที่ MaxConcurrency
มีกลไกสำหรับความสามารถในการปรับขนาดในแนวนอน ซึ่งช่วยให้ปลายทางของคุณสามารถประมวลผลคำขอที่เกิดขึ้นพร้อมกันได้มากขึ้น
ค่าใช้จ่ายในการดำเนินการปลายทางจะพิจารณาจากขนาดหน่วยความจำเป็นส่วนใหญ่ และไม่มีค่าใช้จ่ายที่เกี่ยวข้องกับการเพิ่มการทำงานพร้อมกันสูงสุด อย่างไรก็ตาม มีการจำกัดบัญชีสำหรับแต่ละภูมิภาคสำหรับการทำงานพร้อมกันสูงสุดในทุกปลายทาง อ้างถึง จุดปลายและโควต้าของ SageMaker สำหรับขีดจำกัดล่าสุด
ผลลัพธ์การเปรียบเทียบ
ด้วยเหตุนี้ เป้าหมายของการเปรียบเทียบปลายทางแบบไร้เซิร์ฟเวอร์คือการกำหนดการตั้งค่าขนาดหน่วยความจำที่คุ้มค่าและเชื่อถือได้มากที่สุด และการทำงานพร้อมกันสูงสุดขั้นต่ำที่สามารถจัดการกับรูปแบบการรับส่งข้อมูลที่คาดหวังของคุณ
โดยค่าเริ่มต้น เครื่องมือจะเรียกใช้การวัดประสิทธิภาพสองแบบ อย่างแรกคือเกณฑ์มาตรฐานด้านความเสถียร ซึ่งปรับใช้จุดปลายสำหรับการกำหนดค่าหน่วยความจำแต่ละรายการที่ระบุ และเรียกใช้ปลายทางแต่ละจุดด้วยเพย์โหลดตัวอย่างที่มีให้ เป้าหมายของการวัดประสิทธิภาพนี้คือการกำหนดการตั้งค่า MemorySizeInMB ที่มีประสิทธิภาพและเสถียรที่สุด เกณฑ์มาตรฐานจะรวบรวมเวลาแฝงของการเรียกใช้และคำนวณต้นทุนต่อการเรียกใช้ที่คาดหวังสำหรับแต่ละปลายทาง จากนั้นจะเปรียบเทียบค่าใช้จ่ายกับอินสแตนซ์การโฮสต์แบบเรียลไทม์ที่คล้ายคลึงกัน
เมื่อการเปรียบเทียบเสร็จสิ้น เครื่องมือจะสร้างเอาต์พุตหลายรายการในค่าที่ระบุ result_save_path
ไดเร็กทอรีที่มีโครงสร้างไดเร็กทอรีต่อไปนี้:
พื้นที่ benchmarking_report
ไดเร็กทอรีมีรายงานรวมที่มีผลลัพธ์สรุปทั้งหมดที่เราร่างไว้ในโพสต์นี้ ไดเร็กทอรีเพิ่มเติมประกอบด้วยเอาต์พุตแบบ raw และระดับกลางที่คุณสามารถใช้สำหรับการวิเคราะห์เพิ่มเติม อ้างถึง repo GitHub สำหรับคำอธิบายโดยละเอียดยิ่งขึ้นของสิ่งประดิษฐ์เอาต์พุตแต่ละรายการ
มาตรวจสอบผลลัพธ์การเปรียบเทียบจริงสองสามรายการสำหรับปลายทางที่ให้บริการคอมพิวเตอร์วิทัศน์รุ่น MobileNetV2 TensorFlow หากคุณต้องการทำซ้ำตัวอย่างนี้ โปรดดูที่ ตัวอย่างโน๊ตบุ๊ค ไดเร็กทอรีใน GitHub repo
เอาต์พุตแรกภายในรายงานที่รวมเป็นตารางสรุปที่ให้เมตริกเวลาแฝงต่ำสุด เฉลี่ย ปานกลาง และเวลาแฝงสูงสุดสำหรับแต่ละรายการ MemorySizeInMB
การกำหนดค่าขนาดหน่วยความจำสำเร็จ ดังแสดงในตารางต่อไปนี้ เวลาแฝงของการร้องขอโดยเฉลี่ย (invocation_latency_mean
) ปรับปรุงอย่างต่อเนื่องเนื่องจากการกำหนดค่าหน่วยความจำเพิ่มขึ้นเป็น 3072 MB แต่หลังจากนั้นก็หยุดปรับปรุง
นอกเหนือจากสถิติเชิงพรรณนาระดับสูงแล้ว ยังมีแผนภูมิที่แสดงการกระจายของเวลาแฝงตามที่สังเกตได้จากไคลเอนต์สำหรับการกำหนดค่าหน่วยความจำแต่ละรายการ อีกครั้ง เราสามารถสังเกตได้ว่าการกำหนดค่า 1024 MB นั้นไม่ได้มีประสิทธิภาพเท่ากับตัวเลือกอื่นๆ แต่ประสิทธิภาพในการกำหนดค่า 2048 ขึ้นไปนั้นไม่แตกต่างกันมากนัก
อเมซอน คลาวด์วอตช์ มีเมตริกที่เกี่ยวข้องกับการกำหนดค่าปลายทางแต่ละรายการด้วย ตัววัดสำคัญอย่างหนึ่งที่นี่คือ ModelSetupTime
ซึ่งวัดระยะเวลาที่ใช้ในการโหลดโมเดลเมื่อจุดปลายถูกเรียกใช้ในสถานะเย็น เมตริกอาจไม่ปรากฏในรายงานทุกครั้งเมื่อมีการเปิดใช้ปลายทางในสถานะอบอุ่น อา cold_start_delay
พารามิเตอร์พร้อมใช้งานสำหรับการระบุจำนวนวินาทีที่จะเข้าสู่โหมดสลีปก่อนเริ่มการวัดประสิทธิภาพบนปลายทางที่ปรับใช้ การตั้งค่าพารามิเตอร์นี้เป็นตัวเลขที่สูงกว่า เช่น 600 วินาที จะเพิ่มโอกาสในการเรียกใช้สถานะเย็นและเพิ่มโอกาสในการจับเมตริกนี้ นอกจากนี้ ตัวชี้วัดนี้มีแนวโน้มที่จะถูกจับด้วยเกณฑ์มาตรฐานการเรียกใช้พร้อมกัน ซึ่งเราจะพูดถึงในภายหลังในหัวข้อนี้
ตารางต่อไปนี้แสดงตัววัดที่ CloudWatch จับสำหรับการกำหนดค่าหน่วยความจำแต่ละรายการ
แผนภูมิถัดไปแสดงประสิทธิภาพและการแลกเปลี่ยนต้นทุนของการกำหนดค่าหน่วยความจำแบบต่างๆ บรรทัดหนึ่งแสดงค่าใช้จ่ายโดยประมาณของการเรียกใช้ปลายทาง 1 ล้านครั้ง และอีกบรรทัดแสดงเวลาแฝงของการตอบกลับโดยเฉลี่ย เมตริกเหล่านี้สามารถแจ้งการตัดสินใจของคุณว่าการกำหนดค่าปลายทางใดที่คุ้มค่าที่สุด ในตัวอย่างนี้ เราเห็นว่าเวลาแฝงเฉลี่ยแบนราบหลังจาก 2048 MB ในขณะที่ค่าใช้จ่ายยังคงเพิ่มขึ้น ซึ่งบ่งชี้ว่าสำหรับรุ่นนี้ การกำหนดค่าขนาดหน่วยความจำ 2048 จะเหมาะสมที่สุด
ผลลัพธ์สุดท้ายของเกณฑ์มาตรฐานด้านต้นทุนและความเสถียรคือการกำหนดค่าหน่วยความจำที่แนะนำ พร้อมด้วยตารางที่เปรียบเทียบค่าใช้จ่ายในการดำเนินการปลายทางแบบไร้เซิร์ฟเวอร์กับอินสแตนซ์โฮสติ้ง SageMaker ที่เปรียบเทียบกันได้ จากข้อมูลที่รวบรวมได้ เครื่องมือระบุว่าการกำหนดค่า 2048 MB เป็นการกำหนดค่าที่เหมาะสมที่สุดสำหรับโมเดลนี้ แม้ว่าการกำหนดค่า 3072 จะให้เวลาแฝงที่ดีขึ้นประมาณ 10 มิลลิวินาที ซึ่งมาพร้อมกับต้นทุนที่เพิ่มขึ้น 30% จาก 4.55 ดอลลาร์ เป็น 5.95 ดอลลาร์ต่อคำขอ 1 ล้านคำขอ นอกจากนี้ ผลลัพธ์ยังแสดงให้เห็นว่าจุดสิ้นสุดแบบไร้เซิร์ฟเวอร์จะช่วยประหยัดได้ถึง 88.72% เมื่อเทียบกับอินสแตนซ์การโฮสต์แบบเรียลไทม์ที่เปรียบเทียบกันได้ เมื่อมีคำขอเรียกใช้รายเดือนน้อยกว่า 1 ล้านครั้ง และทำลายแม้กระทั่งปลายทางแบบเรียลไทม์หลังจาก 8.5 ล้านคำขอ
เกณฑ์มาตรฐานประเภทที่สองเป็นทางเลือกและการทดสอบต่างๆ MaxConcurency
การตั้งค่าภายใต้รูปแบบการจราจรที่แตกต่างกัน เกณฑ์มาตรฐานนี้มักจะรันโดยใช้ค่าที่เหมาะสมที่สุด MemorySizeInMB
การกำหนดค่าจากเกณฑ์มาตรฐานความเสถียร พารามิเตอร์หลักสองประการสำหรับการวัดประสิทธิภาพนี้คือรายการของ MaxConcurency
การตั้งค่าเพื่อทดสอบพร้อมกับรายการตัวคูณไคลเอนต์ ซึ่งกำหนดจำนวนไคลเอนต์พร้อมกันจำลองที่ปลายทางถูกทดสอบด้วย
ตัวอย่างเช่น โดยการตั้งค่า concurrency_benchmark_max_conc parameter
ถึง [4, 8] และ concurrency_num_clients_multiplier
ถึง [1, 1.5, 2] ปลายทางสองจุดถูกเปิดใช้งาน: หนึ่งจุดที่มี MaxConcurency
ของ 4 และอีก 8 จุดปลายทางแต่ละจุดจะถูกเปรียบเทียบด้วย (MaxConcurency
x ตัวคูณ) จำนวนไคลเอนต์พร้อมกันจำลอง ซึ่งสำหรับปลายทางที่มีการทำงานพร้อมกัน 4 ตัวแปลเพื่อโหลดเกณฑ์มาตรฐานการทดสอบด้วย 4, 6 และ 8 ไคลเอนต์พร้อมกัน
ผลลัพธ์แรกของการวัดประสิทธิภาพนี้คือตารางที่แสดงตัววัดเวลาแฝง ข้อยกเว้นการควบคุมปริมาณ และธุรกรรมต่อตัววัดวินาที (TPS) ที่เกี่ยวข้องกับแต่ละรายการ MaxConcurrency
การกำหนดค่าด้วยจำนวนไคลเอนต์พร้อมกันที่แตกต่างกัน ตัวชี้วัดเหล่านี้ช่วยกำหนดความเหมาะสม MaxConcurrency
การตั้งค่าเพื่อรองรับปริมาณการจราจรที่คาดหวัง ในตารางต่อไปนี้ เราจะเห็นว่าปลายทางที่กำหนดค่าด้วยการทำงานพร้อมกันสูงสุดที่ 8 สามารถจัดการไคลเอ็นต์พร้อมกันได้สูงสุด 16 เครื่องโดยมีข้อยกเว้นการควบคุมปริมาณเพียง 2,500 รายการจากคำขอ 24 รายการที่ทำธุรกรรมเฉลี่ย XNUMX รายการต่อวินาที
เอาต์พุตชุดถัดไปจะมีแผนภูมิสำหรับแต่ละรายการ MaxConcurrency
การตั้งค่าแสดงการกระจายเวลาแฝงภายใต้โหลดต่างๆ ในตัวอย่างนี้ เราจะเห็นว่าปลายทางที่มี a MaxConcurrency
การตั้งค่า 4 สามารถประมวลผลคำขอทั้งหมดได้สำเร็จโดยมีไคลเอ็นต์พร้อมกันสูงสุด 8 เครื่องโดยมีเวลาแฝงในการเรียกใช้เพิ่มขึ้นน้อยที่สุด
ผลลัพธ์สุดท้ายให้ตารางที่มีตัววัด CloudWatch สำหรับแต่ละรายการ MaxConcurrency
การกำหนดค่า ไม่เหมือนกับตารางก่อนหน้านี้ที่แสดงการกระจายเวลาแฝงสำหรับการกำหนดค่าหน่วยความจำแต่ละรายการ ซึ่งอาจไม่แสดงการเริ่มเย็นทุกครั้ง ModelSetupTime
เมตริก เมตริกนี้มีแนวโน้มที่จะปรากฏในตารางนี้มากกว่าเนื่องจากมีคำขอคำขอจำนวนมากขึ้นและมีมากขึ้น MaxConcurrency
.
สรุป
ในบทความนี้ เราได้แนะนำ SageMaker Serverless Inference Benchmarking Toolkit และให้ภาพรวมของการกำหนดค่าและผลลัพธ์ เครื่องมือนี้สามารถช่วยให้คุณตัดสินใจได้อย่างมีข้อมูลมากขึ้นเกี่ยวกับการอนุมานแบบไร้เซิร์ฟเวอร์โดยโหลดการทดสอบการกำหนดค่าต่างๆ ด้วยรูปแบบการรับส่งข้อมูลที่สมจริง ลองใช้ชุดเครื่องมือการเปรียบเทียบด้วยโมเดลของคุณเองเพื่อดูประสิทธิภาพและการประหยัดต้นทุนที่คุณจะได้รับจากการปรับใช้ปลายทางแบบไร้เซิร์ฟเวอร์ โปรดดูที่ repo GitHub สำหรับเอกสารเพิ่มเติมและสมุดบันทึกตัวอย่าง
แหล่งข้อมูลเพิ่มเติม
เกี่ยวกับผู้แต่ง
ไซม่อน ซามาริน เป็นสถาปนิกโซลูชัน AI/ML ซึ่งมุ่งเน้นหลักในการช่วยลูกค้าดึงคุณค่าจากสินทรัพย์ข้อมูลของตน ในเวลาว่าง Simon สนุกกับการใช้เวลาอยู่กับครอบครัว อ่านนิยายวิทยาศาสตร์ และทำงานในโครงการบ้าน DIY ต่างๆ
ดาวัล พาเทล เป็นหัวหน้าสถาปนิก Machine Learning ที่ AWS เขาได้ทำงานร่วมกับองค์กรต่างๆ ตั้งแต่องค์กรขนาดใหญ่ไปจนถึงสตาร์ทอัพขนาดกลางในปัญหาที่เกี่ยวข้องกับการคำนวณแบบกระจายและปัญญาประดิษฐ์ เขามุ่งเน้นไปที่การเรียนรู้อย่างลึกซึ้งรวมถึง NLP และโดเมนวิชันซิสเต็ม เขาช่วยให้ลูกค้าบรรลุการอนุมานแบบจำลองประสิทธิภาพสูงบน SageMaker
ริชาบห์ เรย์ เชาดูรี เป็นผู้จัดการผลิตภัณฑ์อาวุโสของ Amazon SageMaker โดยเน้นที่การอนุมานของแมชชีนเลิร์นนิง เขาหลงใหลในการสร้างสรรค์และสร้างประสบการณ์ใหม่สำหรับลูกค้าแมชชีนเลิร์นนิงบน AWS เพื่อช่วยปรับขนาดปริมาณงาน ในเวลาว่าง เขาชอบท่องเที่ยวและทำอาหาร พบกับเขาได้ที่ LinkedIn.
- ขั้นสูง (300)
- AI
- ไอ อาร์ต
- เครื่องกำเนิดไออาร์ท
- หุ่นยนต์ไอ
- อเมซอน SageMaker
- ชุดเครื่องมือเปรียบเทียบการอนุมานแบบไร้เซิร์ฟเวอร์ของ Amazon SageMaker
- ปัญญาประดิษฐ์
- ใบรับรองปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ในการธนาคาร
- หุ่นยนต์ปัญญาประดิษฐ์
- หุ่นยนต์ปัญญาประดิษฐ์
- ซอฟต์แวร์ปัญญาประดิษฐ์
- AWS Machine Learning AWS
- blockchain
- การประชุม blockchain ai
- เหรียญอัจฉริยะ
- ปัญญาประดิษฐ์สนทนา
- การประชุม crypto ai
- ดัล-อี
- การเรียนรู้ลึก ๆ
- google ai
- เรียนรู้เครื่อง
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- เกมเพลโต
- เพลโตดาต้า
- เพลโตเกม
- ขนาดไอ
- วากยสัมพันธ์
- ลมทะเล