อเมซอน SageMaker ปลายทางหลายรุ่น (MME) เป็นวิธีที่ปรับขนาดได้และคุ้มค่าในการปรับใช้โมเดลแมชชีนเลิร์นนิง (ML) จำนวนมาก ช่วยให้คุณสามารถปรับใช้ ML หลายรุ่นในคอนเทนเนอร์ที่ให้บริการเดียวหลังจุดสิ้นสุดเดียว จากนั้น SageMaker จะจัดการโหลดและยกเลิกการโหลดโมเดลและปรับขนาดทรัพยากรในนามของคุณตามรูปแบบการรับส่งข้อมูลของคุณ คุณจะได้รับประโยชน์จากการแชร์และใช้ทรัพยากรโฮสติ้งซ้ำ และลดภาระการดำเนินงานในการจัดการโมเดลจำนวนมาก
ในเดือนพฤศจิกายน 2022, MMEs เพิ่มการรองรับสำหรับ GPUs ซึ่งช่วยให้คุณเรียกใช้หลายรุ่นบนอุปกรณ์ GPU เครื่องเดียวและปรับขนาดอินสแตนซ์ GPU หลังจุดสิ้นสุดเดียว สิ่งนี้ตอบสนองความต้องการ MME ที่แข็งแกร่งสำหรับโมเดลโครงข่ายประสาทเทียมเชิงลึก (DNN) ที่ได้รับประโยชน์จากการประมวลผลแบบเร่งความเร็วด้วย GPU ซึ่งรวมถึงการมองเห็นด้วยคอมพิวเตอร์ (CV) การประมวลผลภาษาธรรมชาติ (NLP) และแบบจำลอง AI กำเนิด เหตุผลสำหรับความต้องการรวมถึงต่อไปนี้:
- โมเดล DNN มักจะมีขนาดใหญ่และซับซ้อน และยังคงเติบโตอย่างรวดเร็ว ยกตัวอย่างโมเดล NLP หลายโมเดลมีพารามิเตอร์เกินพันล้านตัว ซึ่งต้องใช้ GPU เพื่อตอบสนองความต้องการความหน่วงต่ำและปริมาณงานสูง
- เราสังเกตเห็นความต้องการที่เพิ่มขึ้นในการปรับแต่งโมเดลเหล่านี้เพื่อมอบประสบการณ์ที่เป็นส่วนตัวให้กับผู้ใช้แต่ละราย เมื่อจำนวนของโมเดลเหล่านี้เพิ่มขึ้น จึงมีความจำเป็นสำหรับโซลูชันที่ง่ายกว่าในการปรับใช้และดำเนินการโมเดลจำนวนมากตามขนาด
- อินสแตนซ์ GPU มีราคาแพงและคุณต้องการใช้อินสแตนซ์เหล่านี้ซ้ำให้มากที่สุดเพื่อเพิ่มการใช้งาน GPU สูงสุดและลดต้นทุนการดำเนินงาน
แม้ว่าเหตุผลทั้งหมดนี้จะชี้ไปที่ MME ที่มี GPU เป็นตัวเลือกที่เหมาะสมที่สุดสำหรับรุ่น DNN แต่ขอแนะนำให้ทำการทดสอบโหลดเพื่อค้นหาการกำหนดค่าปลายทางที่เหมาะสมซึ่งตรงตามข้อกำหนดกรณีการใช้งานของคุณ ปัจจัยหลายอย่างสามารถส่งผลต่อผลการทดสอบโหลด เช่น ประเภทอินสแตนซ์ จำนวนอินสแตนซ์ ขนาดโมเดล และสถาปัตยกรรมโมเดล นอกจากนี้ การทดสอบโหลดยังช่วยชี้แนะกลยุทธ์การปรับขนาดอัตโนมัติโดยใช้เมตริกที่เหมาะสม แทนที่จะใช้วิธีลองผิดลองถูกซ้ำๆ
ด้วยเหตุผลดังกล่าว เราจึงรวบรวมโพสต์นี้เพื่อช่วยคุณทำการทดสอบโหลดที่เหมาะสมบน MME ด้วย GPU และค้นหาการกำหนดค่าที่ดีที่สุดสำหรับกรณีการใช้งาน ML ของคุณ เราแบ่งปันผลการทดสอบการโหลดของเราสำหรับโมเดล DNN ที่ได้รับความนิยมมากที่สุดใน NLP และ CV ที่โฮสต์โดยใช้ MME บนอินสแตนซ์ประเภทต่างๆ เราสรุปข้อมูลเชิงลึกและข้อสรุปจากผลการทดสอบของเรา เพื่อช่วยให้คุณตัดสินใจอย่างรอบรู้เกี่ยวกับการกำหนดค่าการปรับใช้ของคุณเอง ระหว่างทาง เรายังแชร์แนวทางที่แนะนำในการดำเนินการทดสอบโหลดสำหรับ MME บน GPU เครื่องมือและเทคนิคที่แนะนำจะกำหนดจำนวนโมเดลที่เหมาะสมที่สุดที่สามารถโหลดได้ต่อประเภทอินสแตนซ์ และช่วยให้คุณได้รับประสิทธิภาพด้านราคาที่ดีที่สุด
ภาพรวมโซลูชัน
สำหรับคำแนะนำเกี่ยวกับ MME และ MME ด้วย GPU โปรดดูที่ สร้างปลายทางหลายรุ่น และ เรียกใช้โมเดลการเรียนรู้เชิงลึกหลายรายการบน GPU ด้วยตำแหน่งข้อมูลหลายรุ่นของ Amazon SageMaker. สำหรับบริบทของการทดสอบโหลดในโพสต์นี้ คุณสามารถดาวน์โหลดโค้ดตัวอย่างของเราได้จาก repo GitHub เพื่อสร้างผลลัพธ์ซ้ำหรือใช้เป็นเทมเพลตในการเปรียบเทียบแบบจำลองของคุณเอง มีโน้ตบุ๊กสองเครื่องใน repo: เครื่องหนึ่งสำหรับการทดสอบโหลดโมเดล CV และอีกเครื่องสำหรับ NLP หลายรุ่นที่มีขนาดและสถาปัตยกรรมที่แตกต่างกันได้รับการวัดประสิทธิภาพบนอินสแตนซ์ GPU ประเภทต่างๆ: ml.g4dn.2xlarge, ml.g5.2xlarge และ ml.p3.2xlarge สิ่งนี้ควรให้ผลการทำงานข้ามส่วนที่เหมาะสมในเมตริกต่อไปนี้สำหรับแต่ละอินสแตนซ์และประเภทโมเดล:
- จำนวนรุ่นสูงสุดที่สามารถโหลดลงในหน่วยความจำ GPU
- เวลาแฝงการตอบสนองแบบ end-to-end ที่สังเกตได้จากฝั่งไคลเอ็นต์สำหรับการสอบถามการอนุมานแต่ละรายการ
- ปริมาณสูงสุดของข้อความค้นหาต่อวินาทีที่ปลายทางสามารถประมวลผลได้โดยไม่มีข้อผิดพลาด
- ผู้ใช้ปัจจุบันสูงสุดต่ออินสแตนซ์ก่อนที่จะสังเกตคำขอที่ล้มเหลว
ตารางต่อไปนี้แสดงรายการรุ่นที่ทดสอบ
ใช้กรณี | ชื่อรุ่น | ขนาดบนดิสก์ | จำนวนพารามิเตอร์ |
CV | resnet50 |
100Mb | 25M |
CV | convnext_base |
352Mb | 88M |
CV | vit_large_patch16_224 |
1.2Gb | 304M |
NLP | bert-base-uncased |
436Mb | 109M |
NLP | roberta-large |
1.3Gb | 335M |
ตารางต่อไปนี้แสดงรายการอินสแตนซ์ GPU ที่ทดสอบ
ประเภทอินสแตนซ์ | ประเภท GPU | จำนวน GPU | หน่วยความจำ GPU (GiB) |
ml.g4dn.2xlarge | NVIDIA T4 GPU | 1 | 16 |
มล.g5.2xlarge | NVIDIA A10G เทนเซอร์คอร์ GPU | 1 | 24 |
ml.p3.2xlarge | NVIDIA® V100 เทนเซอร์คอร์ GPU | 1 | 16 |
ดังที่ได้กล่าวไว้ก่อนหน้านี้ ตัวอย่างโค้ด สามารถนำไปใช้กับโมเดลและประเภทอินสแตนซ์อื่นๆ ได้
โปรดทราบว่าขณะนี้ MME รองรับอินสแตนซ์ GPU เดียวเท่านั้น สำหรับรายการประเภทอินสแตนซ์ที่รองรับ โปรดดูที่ อัลกอริทึม เฟรมเวิร์ก และอินสแตนซ์ที่รองรับ.
ขั้นตอนการเปรียบเทียบประกอบด้วยขั้นตอนต่อไปนี้:
- ดึงโมเดลที่ฝึกไว้ล่วงหน้าจากฮับโมเดล
- เตรียมโมเดลอาร์ติแฟกต์สำหรับให้บริการบน SageMaker MME (ดู เรียกใช้โมเดลการเรียนรู้เชิงลึกหลายรายการบน GPU ด้วยตำแหน่งข้อมูลหลายรุ่นของ Amazon SageMaker สำหรับรายละเอียดเพิ่มเติม)
- ปรับใช้ SageMaker MME บนอินสแตนซ์ GPU
- กำหนดจำนวนรุ่นสูงสุดที่สามารถโหลดลงในหน่วยความจำ GPU ภายในเกณฑ์ที่กำหนด
- ใช้ Locust Load Testing Framework เพื่อจำลองการรับส่งข้อมูลที่สุ่มเรียกใช้โมเดลที่โหลดบนอินสแตนซ์
- รวบรวมข้อมูลและวิเคราะห์ผลลัพธ์
- หรือทำซ้ำขั้นตอนที่ 2-6 หลังจากคอมไพล์โมเดลเป็น TensorRT
ขั้นตอนที่ 4 และ 5 รับประกันการมองที่ลึกขึ้น โมเดลต่างๆ ภายใน SageMaker GPU MME จะถูกโหลดเข้าสู่หน่วยความจำในลักษณะไดนามิก ดังนั้นในขั้นตอนที่ 4 เราจึงอัปโหลดสิ่งประดิษฐ์แบบจำลองเริ่มต้นไปที่ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) และเรียกใช้โมเดลเพื่อโหลดลงในหน่วยความจำ หลังจากการเรียกใช้ครั้งแรก เราจะวัดปริมาณหน่วยความจำ GPU ที่ใช้ ทำสำเนาของโมเดลเริ่มต้น เรียกใช้สำเนาของโมเดลเพื่อโหลดลงในหน่วยความจำ และวัดจำนวนหน่วยความจำ GPU ทั้งหมดที่ใช้อีกครั้ง กระบวนการนี้จะเกิดขึ้นซ้ำจนกว่าจะถึงเกณฑ์เปอร์เซ็นต์ของการใช้หน่วยความจำ GPU ที่ระบุ สำหรับการวัดประสิทธิภาพ เราตั้งค่าเกณฑ์เป็น 90% เพื่อให้มีบัฟเฟอร์หน่วยความจำที่เหมาะสมสำหรับการอนุมานในแบทช์ที่ใหญ่ขึ้นหรือเว้นที่ว่างไว้เพื่อโหลดโมเดลอื่นๆ ที่ใช้งานไม่บ่อย
จำลองปริมาณการใช้งานของผู้ใช้
หลังจากที่เรากำหนดจำนวนรุ่นแล้ว เราสามารถเรียกใช้การทดสอบโหลดโดยใช้ กรอบการทดสอบ Locust Load. การทดสอบโหลดจะจำลองคำขอของผู้ใช้เป็นแบบจำลองแบบสุ่มและวัดเมตริกโดยอัตโนมัติ เช่น เวลาตอบสนองและปริมาณงาน
Locust รองรับรูปร่างการทดสอบการโหลดแบบกำหนดเองที่ให้คุณกำหนดรูปแบบการรับส่งข้อมูลแบบกำหนดเองได้ รูปร่างที่ใช้ในเกณฑ์มาตรฐานนี้จะแสดงในแผนภูมิต่อไปนี้ ใน 30 วินาทีแรก จุดสิ้นสุดจะอุ่นเครื่องด้วยผู้ใช้พร้อมกัน 10 คน หลังจากผ่านไป 30 วินาที ผู้ใช้ใหม่จะเกิดในอัตรา 20 คนต่อวินาที ซึ่งจะมีผู้ใช้พร้อมกัน 40 คนในเวลา 20 วินาที จากนั้นจุดสิ้นสุดจะได้รับการเปรียบเทียบอย่างต่อเนื่องกับผู้ใช้พร้อมกัน 60 คนจนถึงเวลา 40 วินาที ซึ่งจุดนั้น Locust จะเริ่มเพิ่มจำนวนผู้ใช้อีกครั้งที่ 200 คนต่อวินาทีจนกระทั่งมีผู้ใช้พร้อมกัน 200 คน รูปแบบการเพิ่มจำนวนขึ้นและการทดสอบอย่างต่อเนื่องนี้จะเกิดขึ้นซ้ำๆ จนกว่าจุดสิ้นสุดจะเพิ่มผู้ใช้พร้อมกันสูงสุด XNUMX คน ขึ้นอยู่กับกรณีการใช้งานของคุณ คุณอาจต้องการปรับรูปแบบการทดสอบโหลดใน locust_benchmark_sm.py เพื่อให้สะท้อนรูปแบบการรับส่งข้อมูลได้แม่นยำยิ่งขึ้น ตัวอย่างเช่น หากคุณต้องการโฮสต์โมเดลภาษาที่ใหญ่ขึ้น การทดสอบโหลดที่มีผู้ใช้พร้อมกัน XNUMX คนอาจไม่สามารถทำได้สำหรับโมเดลที่โฮสต์บนอินสแตนซ์เดียว ดังนั้นคุณอาจต้องการลดจำนวนผู้ใช้หรือเพิ่มจำนวนอินสแตนซ์ นอกจากนี้ คุณยังอาจต้องการขยายระยะเวลาของการทดสอบโหลดเพื่อวัดความเสถียรของเอ็นด์พอยต์ได้อย่างแม่นยำยิ่งขึ้นในระยะเวลาที่นานขึ้น
stages = [
{"duration": 30, "users": 10, "spawn_rate": 5},
{"duration": 60, "users": 20, "spawn_rate": 1},
{"duration": 90, "users": 40, "spawn_rate": 2},
…
]
โปรดทราบว่าเราได้เปรียบเทียบเฉพาะจุดสิ้นสุดกับโมเดลที่เป็นเนื้อเดียวกันซึ่งทั้งหมดทำงานบนฐานการให้บริการที่สอดคล้องกันโดยใช้ PyTorch หรือ TensorRT นี่เป็นเพราะ MME เหมาะที่สุดสำหรับการโฮสต์โมเดลจำนวนมากที่มีลักษณะคล้ายกัน เช่น การใช้หน่วยความจำและเวลาตอบสนอง เทมเพลตการเปรียบเทียบที่มีให้ใน repo GitHub ยังคงสามารถใช้เพื่อกำหนดว่าการให้บริการโมเดลที่แตกต่างกันบน MME จะให้ประสิทธิภาพและความเสถียรตามที่ต้องการหรือไม่
ผลลัพธ์เกณฑ์มาตรฐานสำหรับโมเดล CV
ใช้โน้ตบุ๊ก cv-benchmark.ipynb เพื่อรันการทดสอบโหลดสำหรับโมเดลการมองเห็นของคอมพิวเตอร์ คุณสามารถปรับชื่อรุ่นที่ได้รับการฝึกล่วงหน้าและพารามิเตอร์ประเภทอินสแตนซ์เพื่อทดสอบโหลดประสิทธิภาพบนชุดค่าผสมของรุ่นและประเภทอินสแตนซ์ต่างๆ เราตั้งใจทดสอบ CV สามรุ่นในขนาดต่างๆ ตั้งแต่เล็กที่สุดไปจนถึงใหญ่ที่สุด: resnet50
(25 ล้าน), convnext_base
(88M), และ vit_large_patch16_224
(304M). คุณอาจต้องปรับรหัสหากคุณเลือกรุ่นที่อยู่นอกรายการนี้ นอกจากนี้ โน้ตบุ๊กยังตั้งค่าเริ่มต้นของรูปร่างภาพที่ป้อนเป็นอิมเมจเทนเซอร์ขนาด 224x224x3 อย่าลืมปรับรูปร่างอินพุตให้เหมาะสม หากคุณต้องการเปรียบเทียบโมเดลที่ใช้รูปภาพที่มีขนาดต่างกัน
หลังจากดำเนินการผ่านโน้ตบุ๊กทั้งหมดแล้ว คุณจะได้รับการแสดงภาพการวิเคราะห์ประสิทธิภาพหลายรายการ สองรายการแรกให้รายละเอียดเกี่ยวกับประสิทธิภาพของโมเดลที่เกี่ยวข้องกับผู้ใช้พร้อมกันที่เพิ่มขึ้น ตัวเลขต่อไปนี้คือการแสดงภาพตัวอย่างที่สร้างขึ้นสำหรับ ResNet50
โมเดลที่ทำงานบน ml.g4dn.2xlarge เปรียบเทียบ PyTorch (ซ้าย) กับ TensorRT (ขวา) กราฟเส้นบนสุดแสดงเวลาแฝงของโมเดลและทรูพุตบนแกน y พร้อมจำนวนพนักงานไคลเอ็นต์ที่ทำงานพร้อมกันที่เพิ่มขึ้นซึ่งสะท้อนบนแกน x แผนภูมิแท่งด้านล่างแสดงจำนวนคำขอที่สำเร็จและล้มเหลว
เมื่อพิจารณาโมเดลการมองเห็นของคอมพิวเตอร์ทั้งหมดที่เราทดสอบ เราสังเกตเห็นสิ่งต่อไปนี้:
- เวลาแฝง (หน่วยเป็นมิลลิวินาที) จะสูงกว่า และปริมาณงาน (คำขอต่อวินาที) จะต่ำกว่าสำหรับรุ่นที่ใหญ่กว่า (
resnet50 > convnext_base > vit_large_patch16_224
). - เวลาแฝงที่เพิ่มขึ้นนั้นแปรผันตามจำนวนผู้ใช้ เนื่องจากคำขอจำนวนมากขึ้นอยู่ในคิวบนเซิร์ฟเวอร์การอนุมาน
- โมเดลขนาดใหญ่ใช้ทรัพยากรการประมวลผลมากกว่า และสามารถเข้าถึงขีดจำกัดทรูพุตสูงสุดโดยมีผู้ใช้น้อยกว่าโมเดลขนาดเล็ก สิ่งนี้สังเกตได้จาก
vit_large_patch16_224
ซึ่งบันทึกคำขอแรกที่ล้มเหลวที่ผู้ใช้พร้อมกัน 140 ราย มีขนาดใหญ่กว่าอีกสองรุ่นที่ทดสอบอย่างเห็นได้ชัด จึงมีคำขอที่ล้มเหลวโดยรวมมากที่สุดในการทำงานพร้อมกันที่สูงกว่าเช่นกัน นี่เป็นสัญญาณที่ชัดเจนว่าจุดสิ้นสุดจะต้องปรับขนาดเกินอินสแตนซ์เดียว หากเจตนาคือรองรับผู้ใช้พร้อมกันมากกว่า 140 ราย
ในตอนท้ายของการทำงานของโน้ตบุ๊ก คุณจะได้รับการเปรียบเทียบโดยสรุประหว่างโมเดล PyTorch กับ TensorRT สำหรับแต่ละเมตริกหลักทั้งสี่ จากการทดสอบเกณฑ์มาตรฐานของเรา โมเดล CV ทั้งหมดได้รับการเพิ่มประสิทธิภาพของโมเดลหลังจากการคอมไพล์ TensorRT การของเรา ResNet50
ตามตัวอย่างอีกครั้ง เวลาแฝงลดลง 32% ในขณะที่ปริมาณงานเพิ่มขึ้น 18% แม้ว่าจำนวนผู้ใช้พร้อมกันสูงสุดจะเท่าเดิมก็ตาม ResNet50
อีกสองรุ่นเห็นการปรับปรุง 14% ในจำนวนผู้ใช้พร้อมกันที่พวกเขาสามารถรองรับได้ อย่างไรก็ตาม การปรับปรุงประสิทธิภาพของ TensorRT มาจากค่าใช้จ่ายของการใช้หน่วยความจำที่สูงขึ้น ส่งผลให้ MME โหลดโมเดลน้อยลง ผลกระทบมีมากขึ้นสำหรับโมเดลที่ใช้เครือข่ายประสาทเทียม (CNN) ในความเป็นจริง โมเดล ResNet50 ของเราใช้หน่วยความจำ GPU ประมาณสองเท่าตั้งแต่ PyTorch ถึง TensorRT ส่งผลให้โหลดโมเดลน้อยลง 50% (46 เทียบกับ 23) เราจะวิเคราะห์พฤติกรรมนี้เพิ่มเติมในส่วนต่อไปนี้
ผลลัพธ์เกณฑ์มาตรฐานสำหรับโมเดล NLP
สำหรับรุ่น NLP ให้ใช้โน้ตบุ๊ก nlp-benchmark.ipynb เพื่อรันการทดสอบโหลด การตั้งค่าของโน้ตบุ๊กควรมีลักษณะคล้ายกันมาก เราทดสอบโมเดล NLP สองแบบ: bert-base-uncased (109M) และ roberta-large (335M) ทั้งโมเดลที่ผ่านการฝึกอบรมล่วงหน้าและโทเค็นไนเซอร์จะดาวน์โหลดได้จากฮับ Hugging Face และเพย์โหลดทดสอบจะถูกสร้างขึ้นจากโทเค็นไนเซอร์โดยใช้สตริงตัวอย่าง ความยาวลำดับสูงสุดเป็นค่าดีฟอลต์ที่ 128 หากคุณต้องการทดสอบสตริงที่ยาวขึ้น อย่าลืมปรับพารามิเตอร์นั้น การทำงานผ่านโน้ตบุ๊ก NLP จะสร้างการแสดงภาพชุดเดียวกัน: Pytorch (ซ้าย) กับ TensorRT (ขวา)
จากสิ่งเหล่านี้ เราสังเกตเห็นประโยชน์ด้านประสิทธิภาพที่มากขึ้นของ TensorRT สำหรับโมเดล NLP การ roberta-large
ตัวอย่างบนอินสแตนซ์ ml.g4dn.2xlarge เวลาแฝงในการอนุมานลดลงอย่างมากจาก 180 มิลลิวินาทีเป็น 56 มิลลิวินาที (เพิ่มขึ้น 70%) ในขณะที่ปริมาณงานเพิ่มขึ้น 406% จาก 33 คำขอต่อวินาทีเป็น 167 นอกจากนี้ จำนวนสูงสุดของการทำงานพร้อมกัน ผู้ใช้เพิ่มขึ้น 50%; ไม่พบคำขอที่ล้มเหลวจนกว่าเราจะเข้าถึงผู้ใช้พร้อมกัน 180 ราย เทียบกับ 120 รายสำหรับรุ่น PyTorch ดั้งเดิม ในแง่ของการใช้หน่วยความจำ เราเห็นโมเดลที่โหลดน้อยลงหนึ่งรุ่นสำหรับ TensorRT (จากเก้ารุ่นเป็นแปดรุ่น) อย่างไรก็ตาม ผลกระทบด้านลบนั้นน้อยกว่ามากเมื่อเทียบกับสิ่งที่เราสังเกตได้จากโมเดลที่อ้างอิงจาก CNN
การวิเคราะห์การใช้งานหน่วยความจำ
ตารางต่อไปนี้แสดงการวิเคราะห์ทั้งหมดเกี่ยวกับผลกระทบจากการใช้หน่วยความจำตั้งแต่ PyTorch ถึง TensorRT เราได้กล่าวไว้ก่อนหน้านี้ว่าโมเดลที่ใช้ CNN ได้รับผลกระทบในทางลบมากกว่า เดอะ ResNet50
โมเดลมีจำนวนโมเดลลดลงกว่า 50% ในอินสแตนซ์ GPU ทั้งสามประเภท Convnext_base
มีการลดลงที่มากขึ้นที่ประมาณ 70% ทั่วทั้งกระดาน ในทางกลับกัน ผลกระทบต่อรุ่นหม้อแปลงมีน้อยหรือผสมกัน vit_large_patch16_224
และ roberta-large
ลดลงเฉลี่ยประมาณ 20% และ 3% ตามลำดับ ในขณะที่ bert-base-uncased
มีการปรับปรุงประมาณ 40%
เมื่อพิจารณาจากจุดข้อมูลทั้งหมดโดยรวมเกี่ยวกับประสิทธิภาพที่เหนือกว่าในด้านเวลาแฝง ทรูพุต และความน่าเชื่อถือ และผลกระทบเล็กน้อยต่อจำนวนโมเดลสูงสุดที่โหลด เราขอแนะนำโมเดล TensorRT สำหรับสถาปัตยกรรมโมเดลที่ใช้หม้อแปลง สำหรับ CNN เราเชื่อว่าจำเป็นต้องมีการวิเคราะห์ประสิทธิภาพด้านต้นทุนเพิ่มเติมเพื่อให้แน่ใจว่าผลประโยชน์ด้านประสิทธิภาพมีมากกว่าต้นทุนของโครงสร้างพื้นฐานการโฮสต์เพิ่มเติม
กรณีการใช้งาน ML | สถาปัตยกรรม | ชื่อรุ่น | ประเภทอินสแตนซ์ | กรอบ | โหลดโมเดลสูงสุดแล้ว | ความแตกต่าง (%) | เฉลี่ย ความแตกต่าง (%) |
CV | ซีเอ็นเอ็น | Resnet50 |
ml.g4dn.2xlarge | ไพทอร์ช | 46 | -50% | -50% |
เทนเซอร์RT | 23 | ||||||
มล.g5.2xlarge | ไพทอร์ช | 70 | -51% | ||||
เทนเซอร์RT | 34 | ||||||
ml.p3.2xlarge | ไพทอร์ช | 49 | -51% | ||||
เทนเซอร์RT | 24 | ||||||
Convnext_base |
ml.g4dn.2xlarge | ไพทอร์ช | 33 | -50% | -70% | ||
เทนเซอร์RT | 10 | ||||||
มล.g5.2xlarge | ไพทอร์ช | 50 | -70% | ||||
เทนเซอร์RT | 16 | ||||||
ml.p3.2xlarge | ไพทอร์ช | 35 | -69% | ||||
เทนเซอร์RT | 11 | ||||||
หม้อแปลงไฟฟ้า | vit_large_patch16_224 |
ml.g4dn.2xlarge | ไพทอร์ช | 10 | -30% | -20% | |
เทนเซอร์RT | 7 | ||||||
มล.g5.2xlarge | ไพทอร์ช | 15 | -13% | ||||
เทนเซอร์RT | 13 | ||||||
ml.p3.2xlarge | ไพทอร์ช | 11 | -18% | ||||
เทนเซอร์RT | 9 | ||||||
NLP | Roberta-large |
ml.g4dn.2xlarge | ไพทอร์ช | 9 | -11% | -3% | |
เทนเซอร์RT | 8 | ||||||
มล.g5.2xlarge | ไพทอร์ช | 13 | 0% | ||||
เทนเซอร์RT | 13 | ||||||
ml.p3.2xlarge | ไพทอร์ช | 9 | 0% | ||||
เทนเซอร์RT | 9 | ||||||
Bert-base-uncased |
ml.g4dn.2xlarge | ไพทอร์ช | 26 | 62% | 40% | ||
เทนเซอร์RT | 42 | ||||||
มล.g5.2xlarge | ไพทอร์ช | 39 | 28% | ||||
เทนเซอร์RT | 50 | ||||||
ml.p3.2xlarge | ไพทอร์ช | 28 | 29% | ||||
เทนเซอร์RT | 36 |
ตารางต่อไปนี้แสดงผลลัพธ์การเปรียบเทียบแบบสมบูรณ์สำหรับเมตริกทั้งหมดในอินสแตนซ์ GPU ทั้งสามประเภท
ml.g4dn.2xlarge |
||||||||||||
ใช้กรณี | สถาปัตยกรรม | ชื่อรุ่น | จำนวนพารามิเตอร์ | กรอบ | โหลดโมเดลสูงสุดแล้ว | ความแตกต่าง (%) | เวลาแฝง (วินาที) | ความแตกต่าง (%) | ปริมาณงาน (qps) | ความแตกต่าง (%) | ผู้ใช้พร้อมกันสูงสุด | ความแตกต่าง (%) |
CV | ซีเอ็นเอ็น | resnet50 |
25M | ไพทอร์ช | 46 | -50% | 164 | -32% | 120 | 18% | 180 | NA |
เทนเซอร์RT | 23 | . | 111 | . | 142 | . | 180 | . | ||||
convnext_base |
88M | ไพทอร์ช | 33 | -70% | 154 | -22% | 64 | 102% | 140 | 14% | ||
เทนเซอร์RT | 10 | . | 120 | . | 129 | . | 160 | . | ||||
หม้อแปลงไฟฟ้า | vit_large_patch16_224 |
304M | ไพทอร์ช | 10 | -30% | 425 | -69% | 26 | 304% | 140 | 14% | |
เทนเซอร์RT | 7 | . | 131 | . | 105 | . | 160 | . | ||||
NLP | bert-base-uncased |
109M | ไพทอร์ช | 26 | 62% | 70 | -39% | 105 | 142% | 140 | 29% | |
เทนเซอร์RT | 42 | . | 43 | . | 254 | . | 180 | . | ||||
roberta-large |
335M | ไพทอร์ช | 9 | -11% | 187 | -70% | 33 | 406% | 120 | 50% | ||
เทนเซอร์RT | 8 | . | 56 | . | 167 | . | 180 | . |
มล.g5.2xlarge |
||||||||||||
ใช้กรณี | สถาปัตยกรรม | ชื่อรุ่น | จำนวนพารามิเตอร์ | กรอบ | โหลดโมเดลสูงสุดแล้ว | ความแตกต่าง (%) | เวลาแฝง (วินาที) | ความแตกต่าง (%) | ปริมาณงาน (qps) | ความแตกต่าง (%) | ผู้ใช้พร้อมกันสูงสุด | ความแตกต่าง (%) |
CV | ซีเอ็นเอ็น | resnet50 |
25M | ไพทอร์ช | 70 | -51% | 159 | -31% | 146 | 14% | 180 | 11% |
เทนเซอร์RT | 34 | . | 110 | . | 166 | . | 200 | . | ||||
convnext_base |
88M | ไพทอร์ช | 50 | -68% | 149 | -23% | 134 | 13% | 180 | 0% | ||
เทนเซอร์RT | 16 | . | 115 | . | 152 | . | 180 | . | ||||
หม้อแปลงไฟฟ้า | vit_large_patch16_224 |
304M | ไพทอร์ช | 15 | -13% | 149 | -22% | 105 | 35% | 160 | 25% | |
เทนเซอร์RT | 13 | . | 116 | . | 142 | . | 200 | . | ||||
NLP | bert-base-uncased |
109M | ไพทอร์ช | 39 | 28% | 65 | -29% | 183 | 38% | 180 | 11% | |
เทนเซอร์RT | 50 | . | 46 | . | 253 | . | 200 | . | ||||
roberta-large |
335M | ไพทอร์ช | 13 | 0% | 97 | -38% | 121 | 46% | 140 | 14% | ||
เทนเซอร์RT | 13 | . | 60 | . | 177 | . | 160 | . |
ml.p3.2xlarge |
||||||||||||
ใช้กรณี | สถาปัตยกรรม | ชื่อรุ่น | จำนวนพารามิเตอร์ | กรอบ | โหลดโมเดลสูงสุดแล้ว | ความแตกต่าง (%) | เวลาแฝง (วินาที) | ความแตกต่าง (%) | ปริมาณงาน (qps) | ความแตกต่าง (%) | ผู้ใช้พร้อมกันสูงสุด | ความแตกต่าง (%) |
CV | ซีเอ็นเอ็น | resnet50 |
25M | ไพทอร์ช | 49 | -51% | 197 | -41% | 94 | 18% | 160 | -12% |
เทนเซอร์RT | 24 | . | 117 | . | 111 | . | 140 | . | ||||
convnext_base |
88M | ไพทอร์ช | 35 | -69% | 178 | -23% | 89 | 11% | 140 | 14% | ||
เทนเซอร์RT | 11 | . 137 | 137 | . | 99 | . | 160 | . | ||||
หม้อแปลงไฟฟ้า | vit_large_patch16_224 |
304M | ไพทอร์ช | 11 | -18% | 186 | -28% | 83 | 23% | 140 | 29% | |
เทนเซอร์RT | 9 | . | 134 | . | 102 | . | 180 | . | ||||
NLP | bert-base-uncased |
109M | ไพทอร์ช | 28 | 29% | 77 | -40% | 133 | 59% | 140 | 43% | |
เทนเซอร์RT | 36 | . | 46 | . | 212 | . | 200 | . | ||||
roberta-large |
335M | ไพทอร์ช | 9 | 0% | 108 | -44% | 88 | 60% | 160 | 0% | ||
เทนเซอร์RT | 9 | . | 61 | . | 141 | . | 160 | . |
ตารางต่อไปนี้สรุปผลลัพธ์ของอินสแตนซ์ทุกประเภท อินสแตนซ์ ml.g5.2xlarge ให้ประสิทธิภาพที่ดีที่สุด ในขณะที่อินสแตนซ์ ml.p3.2xlarge โดยทั่วไปมีประสิทธิภาพต่ำกว่า แม้ว่าจะเป็นอินสแตนซ์ที่แพงที่สุดในสามตัวอย่างก็ตาม อินสแตนซ์ g5 และ g4dn แสดงให้เห็นถึงค่าที่ดีที่สุดสำหรับปริมาณงานการอนุมาน
ใช้กรณี | สถาปัตยกรรม | ชื่อรุ่น | จำนวนพารามิเตอร์ | กรอบ | ประเภทอินสแตนซ์ | โหลดโมเดลสูงสุดแล้ว | ความแตกต่าง (%) | เวลาแฝง (วินาที) | ความแตกต่าง (%) | ปริมาณงาน (qps) | ความแตกต่าง (%) | ผู้ใช้พร้อมกันสูงสุด |
CV | ซีเอ็นเอ็น | resnet50 |
25M | ไพทอร์ช | มล.g5.2xlarge | 70 | . | 159 | . | 146 | . | 180 |
. | . | . | . | . | ml.p3.2xlarge | 49 | . | 197 | . | 94 | . | 160 |
. | . | . | . | . | ml.g4dn.2xlarge | 46 | . | 164 | . | 120 | . | 180 |
CV | CN | resnet50 |
25M | เทนเซอร์RT | มล.g5.2xlarge | 34 | -51% | 110 | -31% | 166 | 14% | 200 |
. | . | . | . | . | ml.p3.2xlarge | 24 | -51% | 117 | -41% | 111 | 18% | 200 |
. | . | . | . | . | ml.g4dn.2xlarge | 23 | -50% | 111 | -32% | 142 | 18% | 180 |
NLP | หม้อแปลงไฟฟ้า | bert-base-uncased |
109M | ไพทอร์ช | มล.g5.2xlarge | 39 | . | 65 | . | 183 | . | 180 |
. | . | . | . | . | ml.p3.2xlarge | 28 | . | 77 | . | 133 | . | 140 |
. | . | . | . | . | ml.g4dn.2xlarge | 26 | . | 70 | . | 105 | . | 140 |
NLP | หม้อแปลงไฟฟ้า | bert-base-uncased |
109M | เทนเซอร์RT | มล.g5.2xlarge | 50 | 28% | 46 | -29% | 253 | 38% | 200 |
. | . | . | . | . | ml.p3.2xlarge | 36 | 29% | 46 | -40% | 212 | 59% | 200 |
. | . | . | . | . | ml.g4dn.2xlarge | 42 | 62% | 43 | -39% | 254 | 142% | 180 |
ทำความสะอาด
หลังจากที่คุณเสร็จสิ้นการทดสอบโหลดแล้ว ให้ล้างข้อมูลทรัพยากรที่สร้างขึ้นเพื่อหลีกเลี่ยงการเรียกเก็บเงินเพิ่มเติม ทรัพยากรหลักคือตำแหน่งข้อมูล SageMaker และไฟล์สิ่งประดิษฐ์แบบจำลองใน Amazon S3 เพื่อให้ง่ายสำหรับคุณ ไฟล์สมุดบันทึกมีรหัสล้างข้อมูลต่อไปนี้เพื่อช่วยคุณลบ:
สรุป
ในโพสต์นี้ เราได้แชร์ผลการทดสอบและการวิเคราะห์สำหรับโมเดลโครงข่ายประสาทเทียมเชิงลึกต่างๆ ที่ทำงานบนจุดสิ้นสุดหลายโมเดลของ SageMaker พร้อม GPU ผลลัพธ์และข้อมูลเชิงลึกที่เราแชร์ควรให้ส่วนข้ามของประสิทธิภาพที่เหมาะสมในเมตริกและประเภทอินสแตนซ์ต่างๆ ในกระบวนการนี้ เรายังแนะนำวิธีการที่เราแนะนำเพื่อเรียกใช้การทดสอบเกณฑ์มาตรฐานสำหรับ SageMaker MME ด้วย GPU เครื่องมือและโค้ดตัวอย่างที่เราจัดเตรียมไว้สามารถช่วยคุณเริ่มต้นการทดสอบเกณฑ์มาตรฐานได้อย่างรวดเร็ว และตัดสินใจอย่างมีข้อมูลมากขึ้นเกี่ยวกับวิธีโฮสต์โมเดล DNN หลายร้อยรุ่นบนฮาร์ดแวร์ประมวลผลแบบเร่งความเร็วอย่างคุ้มค่า หากต้องการเริ่มต้นการเปรียบเทียบโมเดลของคุณเองด้วยการรองรับ MME สำหรับ GPU โปรดดูที่ อัลกอริทึม เฟรมเวิร์ก และอินสแตนซ์ที่รองรับ และ repo GitHub สำหรับตัวอย่างและเอกสารเพิ่มเติม
เกี่ยวกับผู้แต่ง
เจมส์ หวู่ เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญด้าน AI/ML อาวุโสที่ AWS ช่วยลูกค้าออกแบบและสร้างโซลูชัน AI/ML งานของ James ครอบคลุมกรณีการใช้งาน ML ที่หลากหลาย โดยมีความสนใจหลักในด้านการมองเห็นคอมพิวเตอร์ การเรียนรู้เชิงลึก และการปรับขนาด ML ทั่วทั้งองค์กร ก่อนที่จะร่วมงานกับ AWS เจมส์เคยเป็นสถาปนิก นักพัฒนา และผู้นำด้านเทคโนโลยีมานานกว่า 10 ปี รวมถึง 6 ปีในด้านวิศวกรรมและ 4 ปีในอุตสาหกรรมการตลาดและการโฆษณา
วิกรม เอลังโก เป็นสถาปนิก AI/ML Specialist Solutions Architect ที่ Amazon Web Services ซึ่งตั้งอยู่ในเวอร์จิเนียสหรัฐอเมริกา Vikram ช่วยเหลือลูกค้าในอุตสาหกรรมการเงินและการประกันภัยด้วยการออกแบบ ความเป็นผู้นำทางความคิด เพื่อสร้างและปรับใช้แอปพลิเคชันการเรียนรู้ของเครื่องในวงกว้าง ปัจจุบันเขามุ่งเน้นไปที่การประมวลผลภาษาธรรมชาติ AI ที่รับผิดชอบ การเพิ่มประสิทธิภาพการอนุมาน และการปรับสเกล ML ทั่วทั้งองค์กร ในเวลาว่าง เขาสนุกกับการเดินทาง เดินป่า ทำอาหาร และตั้งแคมป์กับครอบครัว
ไซม่อน ซามาริน เป็นสถาปนิกโซลูชัน AI/ML ซึ่งมุ่งเน้นหลักในการช่วยลูกค้าดึงคุณค่าจากสินทรัพย์ข้อมูลของตน ในเวลาว่าง Simon สนุกกับการใช้เวลาอยู่กับครอบครัว อ่านนิยายวิทยาศาสตร์ และทำงานในโครงการบ้าน DIY ต่างๆ
ซอราภ ตรีกันเด เป็นผู้จัดการผลิตภัณฑ์อาวุโสสำหรับการอนุมานของ Amazon SageMaker เขาหลงใหลในการทำงานกับลูกค้าและมีแรงจูงใจโดยเป้าหมายของการทำให้แมชชีนเลิร์นนิงเป็นประชาธิปไตย เขามุ่งเน้นไปที่ความท้าทายหลักที่เกี่ยวข้องกับการปรับใช้งานแอปพลิเคชัน ML ที่ซับซ้อน โมเดล ML แบบหลายผู้เช่า การเพิ่มประสิทธิภาพต้นทุน และทำให้การปรับใช้โมเดลการเรียนรู้เชิงลึกสามารถเข้าถึงได้มากขึ้น ในเวลาว่าง Saurabh สนุกกับการเดินป่า เรียนรู้เกี่ยวกับเทคโนโลยีที่เป็นนวัตกรรม ติดตาม TechCrunch และใช้เวลากับครอบครัวของเขา
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- เพลโตบล็อคเชน Web3 Metaverse ข่าวกรอง ขยายความรู้. เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/machine-learning/achieve-high-performance-at-scale-for-model-serving-using-amazon-sagemaker-multi-model-endpoints-with-gpu/
- 10
- 100
- 11
- 2022
- 7
- a
- ความสามารถ
- เกี่ยวกับเรา
- เร่ง
- สามารถเข้าถึงได้
- ตาม
- แม่นยำ
- บรรลุ
- ข้าม
- ที่เพิ่ม
- นอกจากนี้
- เพิ่มเติม
- นอกจากนี้
- บุญธรรม
- การโฆษณา
- หลังจาก
- AI
- AI / ML
- อัลกอริทึม
- ทั้งหมด
- ช่วยให้
- แม้ว่า
- อเมซอน
- อเมซอน SageMaker
- Amazon Web Services
- จำนวน
- การวิเคราะห์
- วิเคราะห์
- และ
- อื่น
- การใช้งาน
- เข้าใกล้
- ประมาณ
- สถาปัตยกรรม
- สินทรัพย์
- รถยนต์
- อัตโนมัติ
- เฉลี่ย
- AWS
- บาร์
- ตาม
- เพราะ
- ก่อน
- หลัง
- กำลัง
- เชื่อ
- มาตรฐาน
- เกณฑ์มาตรฐาน
- การเปรียบเทียบ
- ประโยชน์
- ที่ดีที่สุด
- เกิน
- ที่ใหญ่กว่า
- พันล้าน
- คณะกรรมการ
- เพิ่ม
- ด้านล่าง
- กันชน
- สร้าง
- ภาระ
- กรณี
- กรณี
- ความท้าทาย
- ลักษณะ
- โหลด
- แผนภูมิ
- ชาร์ต
- ชัดเจน
- ไคลเอนต์
- ซีเอ็นเอ็น
- รหัส
- รวม
- เมื่อเทียบกับ
- เปรียบเทียบ
- การเปรียบเทียบ
- สมบูรณ์
- ซับซ้อน
- ความซับซ้อน
- ประกอบด้วย
- คำนวณ
- คอมพิวเตอร์
- วิสัยทัศน์คอมพิวเตอร์
- ข้อสรุป
- พร้อมกัน
- องค์ประกอบ
- คงเส้นคงวา
- บริโภค
- ถูกใช้
- การบริโภค
- ภาชนะ
- สิ่งแวดล้อม
- ต่อ
- แกน
- ราคา
- ค่าใช้จ่ายที่มีประสิทธิภาพ
- ครอบคลุม
- ข้าม
- ปัจจุบัน
- ขณะนี้
- ประเพณี
- ลูกค้า
- ข้อมูล
- จุดข้อมูล
- การตัดสินใจ
- ลึก
- การเรียนรู้ลึก ๆ
- ลึก
- ค่าเริ่มต้น
- ส่งมอบ
- ความต้องการ
- democratizing
- สาธิต
- ทั้งนี้ขึ้นอยู่กับ
- ปรับใช้
- ปรับใช้
- การใช้งาน
- การใช้งาน
- ออกแบบ
- ที่ต้องการ
- แม้จะมี
- รายละเอียด
- รายละเอียด
- กำหนด
- แน่นอน
- ผู้พัฒนา
- เครื่อง
- ต่าง
- DIY
- เอกสาร
- ดาวน์โหลด
- เป็นคุ้งเป็นแคว
- พลวัต
- แต่ละ
- ก่อน
- ง่ายดาย
- ทั้ง
- ปลายทาง
- ชั้นเยี่ยม
- Enterprise
- ทั้งหมด
- ความผิดพลาด
- แม้
- ตัวอย่าง
- ตัวอย่าง
- เกินกว่า
- ที่คาดหวัง
- แพง
- ประสบการณ์
- ขยายออก
- สารสกัด
- ใบหน้า
- ปัจจัย
- ล้มเหลว
- ครอบครัว
- แฟชั่น
- เป็นไปได้
- ตัวเลข
- ไฟล์
- ทางการเงิน
- หา
- ชื่อจริง
- โฟกัส
- มุ่งเน้น
- มุ่งเน้นไปที่
- ดังต่อไปนี้
- กรอบ
- กรอบ
- ราคาเริ่มต้นที่
- เต็ม
- ต่อไป
- โดยทั่วไป
- สร้าง
- สร้าง
- กำเนิด
- กำเนิด AI
- ได้รับ
- จะช่วยให้
- เป้าหมาย
- ไป
- GPU
- GPUs
- กราฟ
- การเจริญเติบโต
- ให้คำแนะนำ
- มือ
- ฮาร์ดแวร์
- ช่วย
- การช่วยเหลือ
- จะช่วยให้
- จุดสูง
- สูงกว่า
- เจ้าภาพ
- เป็นเจ้าภาพ
- โฮสติ้ง
- บ้าน
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- อย่างไรก็ตาม
- HTML
- HTTPS
- Hub
- ร้อย
- ในอุดมคติ
- ภาพ
- ส่งผลกระทบ
- ที่กระทบ
- การปรับปรุง
- การปรับปรุง
- in
- ประกอบด้วย
- รวมทั้ง
- เพิ่ม
- เพิ่มขึ้น
- เพิ่มขึ้น
- ที่เพิ่มขึ้น
- เป็นรายบุคคล
- อุตสาหกรรม
- อุตสาหกรรม
- มีอิทธิพล
- แจ้ง
- โครงสร้างพื้นฐาน
- แรกเริ่ม
- นวัตกรรม
- เทคโนโลยีที่เป็นนวัตกรรม
- อินพุต
- ข้อมูลเชิงลึก
- ตัวอย่าง
- ประกัน
- ความตั้งใจ
- อยากเรียนรู้
- แนะนำ
- บทนำ
- จะเรียก
- IT
- การร่วม
- คีย์
- ภาษา
- ใหญ่
- ที่มีขนาดใหญ่
- ใหญ่ที่สุด
- ความแอบแฝง
- ผู้นำ
- ความเป็นผู้นำ
- การเรียนรู้
- การออกจาก
- ความยาว
- ขีด จำกัด
- Line
- รายการ
- รายการ
- โหลด
- โหลด
- อีกต่อไป
- ดู
- ต่ำ
- เครื่อง
- เรียนรู้เครื่อง
- หลัก
- ทำ
- การทำ
- ผู้จัดการ
- จัดการ
- การจัดการ
- หลาย
- เครื่องหมาย
- การตลาด
- การตลาดและการโฆษณา
- แม็กซ์
- เพิ่ม
- สูงสุด
- วัด
- มาตรการ
- หน่วยความจำ
- กล่าวถึง
- วิธีการ
- ตัวชี้วัด
- ผู้เยาว์
- ผสม
- ML
- แบบ
- โมเดล
- ข้อมูลเพิ่มเติม
- มากที่สุด
- เป็นที่นิยม
- แรงบันดาลใจ
- MS
- หลาย
- ชื่อ
- โดยธรรมชาติ
- ประมวลผลภาษาธรรมชาติ
- จำเป็นต้อง
- เชิงลบ
- ในเชิงลบ
- เครือข่าย
- เครือข่ายประสาท
- ใหม่
- NLP
- สมุดบันทึก
- พฤศจิกายน
- จำนวน
- ตัวเลข
- ONE
- การดำเนินงาน
- การดำเนินงาน
- การเพิ่มประสิทธิภาพ
- สูงสุด
- ตัวเลือกเสริม (Option)
- เป็นต้นฉบับ
- อื่นๆ
- ด้านนอก
- ทั้งหมด
- ของตนเอง
- ก้าว
- พารามิเตอร์
- พารามิเตอร์
- หลงใหล
- แบบแผน
- รูปแบบ
- เปอร์เซ็นต์
- ดำเนินการ
- การปฏิบัติ
- ที่มีประสิทธิภาพ
- ระยะเวลา
- เลือก
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- จุด
- จุด
- ยอดนิยม
- เป็นไปได้
- โพสต์
- ก่อนหน้านี้
- ประถม
- ก่อน
- กระบวนการ
- การประมวลผล
- ผลิตภัณฑ์
- ผู้จัดการผลิตภัณฑ์
- โครงการ
- เหมาะสม
- ให้
- ให้
- ให้
- ใส่
- ไฟฉาย
- ปริมาณ
- ทางลาด
- กระโจน
- สุ่ม
- พิสัย
- รวดเร็ว
- คะแนน
- มาถึง
- ถึง
- ถึง
- การอ่าน
- เหมาะสม
- เหตุผล
- แนะนำ
- แนะนำ
- บันทึก
- ลด
- ลดลง
- สะท้อน
- สะท้อนให้เห็นถึง
- ความนับถือ
- ที่เกี่ยวข้อง
- ความเชื่อถือได้
- จำ
- ทำซ้ำ
- ซ้ำแล้วซ้ำอีก
- ขอ
- การร้องขอ
- ความต้องการ
- ต้อง
- แหล่งข้อมูล
- คำตอบ
- รับผิดชอบ
- ส่งผลให้
- ผลสอบ
- วิ่ง
- วิ่ง
- sagemaker
- การอนุมาน SageMaker
- เดียวกัน
- ที่ปรับขนาดได้
- ขนาด
- ปรับ
- Sci-Fi
- ที่สอง
- วินาที
- Section
- ระดับอาวุโส
- ลำดับ
- บริการ
- การให้บริการ
- ชุด
- การติดตั้ง
- หลาย
- รูปร่าง
- รูปร่าง
- Share
- ที่ใช้ร่วมกัน
- ใช้งานร่วมกัน
- น่า
- โชว์
- แสดง
- แสดงให้เห็นว่า
- ด้าน
- สัญญาณ
- อย่างมีความหมาย
- คล้ายคลึงกัน
- ไซมอน
- ง่าย
- เดียว
- ขนาด
- ขนาด
- เล็ก
- มีขนาดเล็กกว่า
- ทางออก
- โซลูชัน
- บาง
- ช่องว่าง
- ผู้เชี่ยวชาญ
- ที่ระบุไว้
- การใช้จ่าย
- Stability
- ข้อความที่เริ่ม
- อยู่
- คงที่
- ขั้นตอน
- ขั้นตอน
- ยังคง
- การเก็บรักษา
- กลยุทธ์
- แข็งแรง
- ที่ประสบความสำเร็จ
- อย่างเช่น
- สรุป
- สรุป
- เหนือกว่า
- สนับสนุน
- ที่สนับสนุน
- รองรับ
- ตาราง
- เอา
- การ
- TechCrunch
- เทคโนโลยี
- เทคโนโลยี
- เทมเพลต
- แม่แบบ
- เงื่อนไขการใช้บริการ
- ทดสอบ
- การทดสอบ
- พื้นที่
- ของพวกเขา
- ดังนั้น
- คิดว่า
- ความเป็นผู้นำทางความคิด
- สาม
- ธรณีประตู
- ตลอด
- ปริมาณงาน
- เวลา
- ไปยัง
- ร่วมกัน
- เครื่องมือ
- ด้านบน
- รวม
- การจราจร
- การเดินทาง
- การทดลอง
- สองครั้ง
- ชนิด
- เป็นปกติ
- สหรัฐอเมริกา
- ใช้
- ใช้กรณี
- ผู้ใช้งาน
- ผู้ใช้
- ความคุ้มค่า
- ต่างๆ
- virginia
- วิสัยทัศน์
- หมาย
- เว็บ
- บริการเว็บ
- อะไร
- ว่า
- ที่
- ในขณะที่
- ทั้งหมด
- กว้าง
- ช่วงกว้าง
- จะ
- ภายใน
- ไม่มี
- งาน
- แรงงาน
- การทำงาน
- จะ
- ปี
- ผล
- คุณ
- ของคุณ
- ลมทะเล