บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker

การปรับใช้โมเดลแมชชีนเลิร์นนิง (ML) สามารถมีความต้องการด้านประสิทธิภาพและเวลาแฝงที่สูงมากสำหรับธุรกิจในปัจจุบัน กรณีการใช้งาน เช่น การตรวจจับการฉ้อโกงและตำแหน่งโฆษณา เป็นตัวอย่างที่มิลลิวินาทีมีความสำคัญและมีความสำคัญต่อความสำเร็จของธุรกิจ ต้องเป็นไปตามข้อตกลงระดับการบริการที่เข้มงวด (SLA) และคำขอทั่วไปอาจต้องใช้หลายขั้นตอน เช่น การประมวลผลล่วงหน้า การแปลงข้อมูล ตรรกะการเลือกแบบจำลอง การรวมแบบจำลอง และการประมวลผลภายหลัง ในระดับนี้ มักจะหมายถึงการรักษาปริมาณการรับส่งข้อมูลปริมาณมากในขณะที่รักษาเวลาแฝงให้ต่ำ รูปแบบการออกแบบทั่วไป ได้แก่ ไปป์ไลน์การอนุมานแบบอนุกรม ensembles (scatter-gather) และเวิร์กโฟลว์ตรรกะทางธุรกิจ ซึ่งส่งผลให้เวิร์กโฟลว์ทั้งหมดของคำขอเป็น Directed Acyclic Graph (DAG) อย่างไรก็ตาม เนื่องจากเวิร์กโฟลว์มีความซับซ้อนมากขึ้น อาจส่งผลให้เวลาตอบสนองโดยรวมเพิ่มขึ้น ซึ่งอาจส่งผลเสียต่อประสบการณ์ของผู้ใช้ปลายทางและเป็นอันตรายต่อเป้าหมายทางธุรกิจ ไทรทันสามารถจัดการกับกรณีการใช้งานเหล่านี้โดยที่โมเดลหลายรุ่นประกอบกันในไปป์ไลน์ที่มีเทนเซอร์อินพุตและเอาต์พุตเชื่อมต่อระหว่างกัน ช่วยให้คุณจัดการกับเวิร์กโหลดเหล่านี้ได้

ในขณะที่คุณประเมินเป้าหมายของคุณที่เกี่ยวข้องกับการอนุมานแบบจำลอง ML อาจมีการพิจารณาตัวเลือกมากมาย แต่มีเพียงไม่กี่ตัวเลือกที่มีความสามารถและได้รับการพิสูจน์แล้ว อเมซอน SageMaker กับ เซิร์ฟเวอร์การอนุมานไทรทัน. SageMaker ที่มี Triton Inference Server เป็นตัวเลือกยอดนิยมสำหรับลูกค้าจำนวนมาก เนื่องจากสร้างขึ้นโดยมีวัตถุประสงค์เพื่อเพิ่มปริมาณงานและการใช้ฮาร์ดแวร์ให้เกิดประโยชน์สูงสุดด้วยเวลาแฝงในการอนุมานที่ต่ำมาก (มิลลิวินาทีหลักเดียว) มีเฟรมเวิร์ก ML ที่รองรับมากมาย (รวมถึง TensorFlow, PyTorch, ONNX, XGBoost และ NVIDIA TensorRT) และแบ็กเอนด์โครงสร้างพื้นฐาน รวมถึง NVIDIA GPUs, CPU และ การอนุมาน AWS. นอกจากนี้ Triton Inference Server ยังผสานรวมกับ SageMaker ซึ่งเป็นบริการ ML แบบ end-to-end ที่มีการจัดการเต็มรูปแบบ ซึ่งให้ตัวเลือกการอนุมานแบบเรียลไทม์สำหรับการโฮสต์โมเดล

ในโพสต์นี้ เราจะพูดถึงการปรับใช้เวิร์คโหลดชุดตรวจจับการฉ้อโกงไปยัง SageMaker ด้วยเซิร์ฟเวอร์ Triton Inference

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

จำเป็นสำหรับโครงการใดๆ ที่จะต้องมีรายการข้อกำหนดและการประเมินความพยายาม เพื่อที่จะประมาณต้นทุนรวมของโครงการ สิ่งสำคัญคือต้องประเมินผลตอบแทนจากการลงทุน (ROI) ที่สนับสนุนการตัดสินใจขององค์กร ข้อควรพิจารณาบางประการเมื่อย้ายปริมาณงานไปยัง Triton ได้แก่:

การประมาณค่าความพยายามเป็นหัวใจสำคัญในการพัฒนาซอฟต์แวร์ และการวัดมักขึ้นอยู่กับอินพุตที่ไม่สมบูรณ์ ไม่แน่นอน และมีเสียงรบกวน ปริมาณงาน ML ไม่แตกต่างกัน ปัจจัยหลายอย่างจะส่งผลต่อสถาปัตยกรรมสำหรับการอนุมาน MLซึ่งรวมถึง:

  • งบประมาณเวลาในการตอบสนองฝั่งไคลเอ็นต์ – ระบุเวลารอสูงสุดแบบไปกลับฝั่งไคลเอ็นต์ที่ยอมรับได้สำหรับการตอบกลับการอนุมาน ซึ่งโดยทั่วไปจะแสดงเป็นเปอร์เซ็นต์ไทล์ สำหรับปริมาณงานที่ต้องใช้งบประมาณเวลาแฝงใกล้ระดับสิบมิลลิวินาที การถ่ายโอนเครือข่ายอาจมีราคาแพง ดังนั้นการใช้แบบจำลองที่ขอบจะเหมาะสมกว่า
  • ขนาดการแจกจ่ายข้อมูล – Payload มักเรียกกันว่า เนื้อหาข้อความคือข้อมูลคำขอที่ส่งจากไคลเอนต์ไปยังแบบจำลอง เช่นเดียวกับข้อมูลการตอบสนองที่ส่งจากแบบจำลองไปยังไคลเอนต์ ขนาดเพย์โหลดมักมีผลกระทบอย่างมากต่อเวลาแฝง และควรพิจารณาด้วย
  • รูปแบบข้อมูล – ระบุวิธีการส่งเพย์โหลดไปยังโมเดล ML รูปแบบสามารถอ่านได้โดยมนุษย์ เช่น JSON และ CSV อย่างไรก็ตาม ยังมีรูปแบบไบนารี ซึ่งมักจะถูกบีบอัดและมีขนาดเล็กกว่า นี่เป็นการแลกเปลี่ยนระหว่างค่าโสหุ้ยในการบีบอัดและขนาดการถ่ายโอน หมายความว่ารอบ CPU และเวลาแฝงจะถูกเพิ่มในการบีบอัดหรือขยายขนาด เพื่อบันทึกไบต์ที่ถ่ายโอนผ่านเครือข่าย โพสต์นี้แสดงวิธีใช้ทั้งรูปแบบ JSON และไบนารี
  • ต้องใช้ชุดซอฟต์แวร์และส่วนประกอบ – สแต็กคือชุดของส่วนประกอบที่ทำงานร่วมกันเพื่อรองรับแอปพลิเคชัน ML รวมถึงระบบปฏิบัติการ รันไทม์ และเลเยอร์ซอฟต์แวร์ Triton มาพร้อมกับเฟรมเวิร์ก ML ยอดนิยมในตัวที่เรียกว่า แบ็กเอนด์เช่น ONNX, TensorFlow, FIL, OpenVINO, Python ดั้งเดิม และอื่นๆ คุณยังสามารถเขียน a แบ็กเอนด์ที่กำหนดเอง สำหรับส่วนประกอบพื้นบ้านของคุณเอง โพสต์นี้จะกล่าวถึงโมเดล XGBoost และการประมวลผลข้อมูลล่วงหน้า ซึ่งเราย้ายไปยัง NVIDIA ที่จัดเตรียมแบ็คเอนด์ของ FIL และ Python Triton ไว้ตามลำดับ

ปัจจัยทั้งหมดเหล่านี้ควรมีบทบาทสำคัญในการประเมินประสิทธิภาพของเวิร์กโหลดของคุณ แต่ในกรณีนี้ เราจะเน้นที่งานที่จำเป็นในการย้ายโมเดล ML ของคุณเพื่อโฮสต์ใน SageMaker ด้วย Triton Inference Server โดยเฉพาะอย่างยิ่ง เราใช้ตัวอย่างของชุดการตรวจจับการฉ้อโกงที่ประกอบด้วยโมเดล XGBoost พร้อมตรรกะการประมวลผลล่วงหน้าที่เขียนด้วย Python

เซิร์ฟเวอร์การอนุมาน NVIDIA Triton

Triton Inference Server ได้รับการออกแบบมาตั้งแต่ต้นเพื่อให้ทีมสามารถปรับใช้ เรียกใช้ และปรับขนาดโมเดล AI ที่ผ่านการฝึกอบรมจากเฟรมเวิร์กบนโครงสร้างพื้นฐานที่ใช้ GPU หรือ CPU นอกจากนี้ ยังได้รับการปรับให้เหมาะสมเพื่อเสนอการอนุมานประสิทธิภาพสูงตามขนาดด้วยคุณสมบัติต่างๆ เช่น การแบ่งกลุ่มแบบไดนามิก การรันพร้อมกัน การกำหนดค่าโมเดลที่เหมาะสมที่สุด ชุดโมเดล และการรองรับอินพุตการสตรีม

ไดอะแกรมต่อไปนี้แสดงตัวอย่างไปป์ไลน์ NVIDIA Triton ทั้งมวล

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ปริมาณงานควรคำนึงถึงความสามารถที่ Triton มอบให้พร้อมกับโฮสติ้ง SageMaker เพื่อเพิ่มผลประโยชน์ที่เสนอให้สูงสุด ตัวอย่างเช่น Triton รองรับ HTTP และ a ซี เอพีไอซึ่งช่วยให้มีความยืดหยุ่นและการเพิ่มประสิทธิภาพเพย์โหลดเมื่อจำเป็น ดังที่ได้กล่าวไว้ก่อนหน้านี้ Triton รองรับเฟรมเวิร์กยอดนิยมหลายตัวตั้งแต่เริ่มต้น รวมถึง TensorFlow, PyTorch, ONNX, XGBoost และ NVIDIA TensorRT เฟรมเวิร์กเหล่านี้ได้รับการสนับสนุนผ่านแบ็กเอนด์ของ Triton และในกรณีที่แบ็กเอนด์ไม่สนับสนุนกรณีการใช้งานของคุณซึ่งเกิดขึ้นได้ยาก Triton ช่วยให้คุณติดตั้งและรวมเข้าด้วยกันได้อย่างง่ายดาย.

แผนภาพต่อไปนี้แสดงตัวอย่างสถาปัตยกรรม NVIDIA Triton

NVIDIA Triton บน SageMaker

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

ภายใต้ร่มที่โฮสต์ SageMaker นั้นยังมีชุดของ SageMaker inference Deep Learning Containers (DLC) ซึ่งมาพร้อมกับซอฟต์แวร์เซิร์ฟเวอร์รุ่นที่เหมาะสมล่วงหน้าสำหรับเฟรมเวิร์ก ML ที่เกี่ยวข้อง สิ่งนี้ช่วยให้คุณบรรลุประสิทธิภาพการอนุมานสูงโดยไม่ต้องตั้งค่าเซิร์ฟเวอร์โมเดล ซึ่งมักจะเป็นลักษณะทางเทคนิคที่ซับซ้อนที่สุดของการปรับใช้โมเดล และโดยทั่วไปไม่ได้เป็นส่วนหนึ่งของชุดทักษะของนักวิทยาศาสตร์ข้อมูล เซิฟเวอร์การอนุมานไทรทันอยู่ในขณะนี้ ใช้ได้ บน SageMaker DLC

ตัวเลือกที่หลากหลาย ความเป็นโมดูล และความสะดวกในการใช้งานเฟรมเวิร์กการให้บริการต่างๆ ทำให้ SageMaker และ Triton เป็นคู่หูที่ทรงพลัง

รองรับแบ็คเอนด์ NVIDIA FIL

กับ รุ่น 22.05 ของไทรทันตอนนี้ NVIDIA รองรับโมเดลฟอเรสต์ที่ฝึกโดยเฟรมเวิร์ก ML ยอดนิยมหลายตัว รวมถึง XGBoost, LightGBM, Scikit-learn และ cuML เมื่อใช้ FIL แบ็กเอนด์สำหรับ Triton คุณควรตรวจสอบให้แน่ใจว่าสนับสนุนสิ่งประดิษฐ์ของแบบจำลองที่คุณระบุ ตัวอย่างเช่น FIL รองรับ model_type xgboost, xgboost_json, lightgbm,หรือ treelite_checkpointซึ่งระบุว่าโมเดลที่ระบุอยู่ในรูปแบบไบนารี XGBoost, รูปแบบ XGBoost JSON, รูปแบบข้อความ LightGBM หรือรูปแบบไบนารี Treelite ตามลำดับ

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

นอกเหนือจากการตรวจสอบให้แน่ใจว่าคุณมีรูปแบบโมเดลที่เหมาะสมแล้ว ควรพิจารณาอื่นๆ ด้วย แบ็กเอนด์ FIL สำหรับ Triton มีตัวเลือกที่กำหนดค่าได้สำหรับนักพัฒนาเพื่อปรับแต่งปริมาณงานและเพิ่มประสิทธิภาพการทำงานของโมเดล การกำหนดค่า dynamic_batching อนุญาตให้ Triton เก็บคำขอฝั่งไคลเอ็นต์และแบทช์ไว้ที่ฝั่งเซิร์ฟเวอร์ เพื่อใช้การคำนวณแบบขนานของ FIL อย่างมีประสิทธิภาพในการอนุมานทั้งแบตช์เข้าด้วยกัน ทางเลือก max_queue_delay_microseconds เสนอการควบคุมระยะเวลาที่ Triton ต้องรอเพื่อสร้างชุดงานอย่างปลอดภัยเมื่อเกิดความล้มเหลว FIL มาพร้อมกับตัวอธิบาย Shapley ซึ่งสามารถเปิดใช้งานได้โดยการกำหนดค่า treeshap_output; อย่างไรก็ตาม คุณควรจำไว้ว่าเอาต์พุตของ Shapley นั้นส่งผลเสียต่อประสิทธิภาพเนื่องจากขนาดเอาต์พุต ที่สำคัญอีกประการหนึ่งคือ storage_type เพื่อแลกเปลี่ยนระหว่างรอยเท้าหน่วยความจำและรันไทม์ ตัวอย่างเช่น การใช้ที่เก็บข้อมูลเป็น SPARSE สามารถลดการใช้หน่วยความจำ ในขณะที่ DENSE สามารถลดประสิทธิภาพการรันโมเดลของคุณโดยใช้หน่วยความจำที่สูงขึ้น การตัดสินใจเลือกที่ดีที่สุดสำหรับแต่ละรายการขึ้นอยู่กับปริมาณงานและงบประมาณเวลาในการตอบสนองของคุณ เราจึงขอแนะนำให้พิจารณาตัวเลือกทั้งหมดใน FIL แบ็กเอนด์ FAQ และ รายการการกำหนดค่าที่มีอยู่ใน FIL.

ขั้นตอนในการโฮสต์โมเดลบน triton

มาดูกรณีการใช้งานการตรวจจับการฉ้อโกงของเราเป็นตัวอย่างของสิ่งที่ควรพิจารณาเมื่อย้ายปริมาณงานไปยัง Triton

ระบุภาระงานของคุณ

ในกรณีการใช้งานนี้ เรามีรูปแบบการตรวจจับการฉ้อโกงที่ใช้ในระหว่างขั้นตอนการชำระเงินของลูกค้ารายย่อย ไปป์ไลน์การอนุมานใช้อัลกอริธึม XGBoost พร้อมตรรกะการประมวลผลล่วงหน้าซึ่งรวมถึงการเตรียมข้อมูลสำหรับการประมวลผลล่วงหน้า

ระบุตัวชี้วัดประสิทธิภาพปัจจุบันและเป้าหมายและเป้าหมายอื่น ๆ ที่อาจนำไปใช้

คุณอาจพบว่าเวลาในการอนุมานตั้งแต่ต้นจนจบใช้เวลานานเกินไปที่จะยอมรับได้ เป้าหมายของคุณอาจเป็นการเปลี่ยนจากเวลาแฝงหลายสิบมิลลิวินาทีไปเป็นเวลาในการตอบสนองแบบตัวเลขเดียวสำหรับคำขอปริมาณเท่ากันและปริมาณงานที่เกี่ยวข้องกัน คุณพิจารณาว่าเวลาส่วนใหญ่ถูกใช้ไปโดยการประมวลผลข้อมูลล่วงหน้าและโมเดล XGBoost ปัจจัยอื่นๆ เช่น ขนาดเครือข่ายและเพย์โหลดมีบทบาทน้อยที่สุดในโอเวอร์เฮดที่เกี่ยวข้องกับเวลาการอนุมานแบบต้นทางถึงปลายทาง

ย้อนกลับเพื่อดูว่า Triton สามารถโฮสต์ปริมาณงานของคุณตามความต้องการของคุณหรือไม่

ในการพิจารณาว่า Triton สามารถตอบสนองความต้องการของคุณได้หรือไม่ คุณต้องการให้ความสนใจกับประเด็นหลักสองประการที่เป็นปัญหา ประการแรกคือต้องแน่ใจว่า Triton สามารถให้บริการด้วยตัวเลือกส่วนหน้าที่ยอมรับได้ เช่น HTTP หรือ C API

ดังที่กล่าวไว้ก่อนหน้านี้ การพิจารณาว่า Triton รองรับแบ็กเอนด์ที่สามารถให้บริการสิ่งประดิษฐ์ของคุณได้หรือไม่ Triton รองรับจำนวน แบ็กเอนด์ ที่ได้รับการปรับแต่งเพื่อรองรับเฟรมเวิร์กต่างๆ เช่น PyTorch และ TensorFlow ตรวจสอบเพื่อให้แน่ใจว่ารุ่นของคุณรองรับและคุณมีรูปแบบรุ่นที่เหมาะสมตามที่ Triton คาดหวัง ในการดำเนินการนี้ ก่อนอื่นให้ตรวจสอบว่าแบ็กเอนด์ Triton รองรับรูปแบบใดบ้าง ในหลายกรณี การดำเนินการนี้ไม่ต้องการการเปลี่ยนแปลงใดๆ สำหรับโมเดล ในกรณีอื่นๆ โมเดลของคุณอาจต้องการการแปลงเป็นรูปแบบอื่น ขึ้นอยู่กับรูปแบบต้นทางและเป้าหมาย มีตัวเลือกต่างๆ เช่น การแปลง a ไฟล์ Python pickle เพื่อใช้รูปแบบจุดตรวจไบนารีของ Treelite.

สำหรับกรณีการใช้งานนี้ เราจะกำหนด FIL แบ็กเอนด์ สามารถรองรับรุ่น XGBoost ได้โดยไม่จำเป็นต้องเปลี่ยนแปลงใดๆ และเราสามารถใช้ Python แบ็กเอนด์ สำหรับการประมวลผลล่วงหน้า ด้วยคุณสมบัติทั้งมวลของ Triton คุณสามารถปรับปริมาณงานของคุณให้เหมาะสมยิ่งขึ้นโดยหลีกเลี่ยงการเรียกเครือข่ายที่มีค่าใช้จ่ายสูงระหว่างอินสแตนซ์ที่โฮสต์

สร้างแผนและประเมินความพยายามที่จำเป็นในการใช้ Triton สำหรับการโฮสต์

มาพูดถึงแผนการย้ายโมเดลของคุณไปที่ Triton การปรับใช้ Triton ทุกครั้งต้องการสิ่งต่อไปนี้:

  • สิ่งประดิษฐ์แบบจำลองที่แบ็กเอนด์ Triton ต้องการ
  • ไฟล์การกำหนดค่าไทรทัน
  • โฟลเดอร์ที่เก็บโมเดลที่มีโครงสร้างที่เหมาะสม

เราแสดงตัวอย่างวิธีสร้างการพึ่งพาการปรับใช้เหล่านี้ในภายหลังในโพสต์นี้

เรียกใช้แผนและตรวจสอบผลลัพธ์

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

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

การดำเนินงาน

ทีนี้มาดูรายละเอียดการใช้งานกัน สำหรับสิ่งนี้ เราได้เตรียมโน้ตบุ๊กสองเครื่องที่เป็นตัวอย่างของสิ่งที่คาดหวังได้ ดิ โน๊ตบุ๊คเครื่องแรก แสดงการฝึกของโมเดล XGBoost ที่กำหนด รวมถึงลอจิกการประมวลผลล่วงหน้าที่ใช้สำหรับทั้งเวลาการฝึกและการอนุมาน ดิ สมุดโน้ตตัวที่สอง แสดงให้เห็นว่าเราเตรียมสิ่งประดิษฐ์ที่จำเป็นสำหรับการใช้งานบนไทรทันอย่างไร

สมุดบันทึกเล่มแรกจะแสดงสมุดบันทึกที่มีอยู่ในองค์กรของคุณซึ่งใช้ RAPIDS ชุดไลบรารีและเคอร์เนล RAPIDS Conda อินสแตนซ์นี้ทำงานบนประเภทอินสแตนซ์ G4DN ที่จัดหาให้โดย AWS ซึ่งเป็น GPU ที่เร่งความเร็วโดยใช้โปรเซสเซอร์ NVIDIA T4

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

งานการประมวลผลล่วงหน้าในตัวอย่างนี้ได้รับประโยชน์จากการเร่งความเร็ว GPU และใช้ไลบรารี cuML และ cuDF อย่างหนัก ตัวอย่างของสิ่งนี้อยู่ในโค้ดต่อไปนี้ ซึ่งเราแสดงการเข้ารหัสฉลากตามหมวดหมู่โดยใช้ cuML นอกจากนี้เรายังสร้าง label_encoders.pkl ไฟล์ที่เราสามารถใช้เพื่อทำให้เป็นอนุกรมของตัวเข้ารหัสและใช้สำหรับการประมวลผลล่วงหน้าในช่วงเวลาการอนุมาน

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

โน้ตบุ๊กเครื่องแรกจบลงด้วยการฝึกโมเดล XGBoost ของเราและบันทึกสิ่งประดิษฐ์ตามนั้น

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ในสถานการณ์สมมตินี้ รหัสการฝึกอบรมมีอยู่แล้วและไม่จำเป็นต้องเปลี่ยนแปลงโมเดลในขณะฝึก นอกจากนี้ แม้ว่าเราจะใช้การเร่งความเร็ว GPU สำหรับการประมวลผลล่วงหน้าระหว่างการฝึก แต่เราวางแผนที่จะใช้ CPU สำหรับการประมวลผลล่วงหน้าในเวลาอนุมาน เราจะอธิบายเพิ่มเติมในภายหลังในโพสต์

มาต่อกันที่โน้ตบุ๊กตัวที่สองกันและระลึกถึงสิ่งที่เราต้องการเพื่อให้ Triton ใช้งานได้สำเร็จ

อันดับแรก เราต้องการอาร์ติแฟกต์ของโมเดลที่แบ็กเอนด์ต้องการ ไฟล์ที่เราจำเป็นต้องสร้างสำหรับชุดนี้ ได้แก่:

  • สิ่งประดิษฐ์ก่อนการประมวลผล (model.py, label_encoders.pkl)
  • สิ่งประดิษฐ์โมเดล XGBoost (xgboost.json)

แบ็กเอนด์ Python ใน Triton ต้องการให้เราใช้สภาพแวดล้อม Conda เป็นการพึ่งพา ในกรณีนี้ เราใช้แบ็คเอนด์ Python เพื่อประมวลผลข้อมูลดิบล่วงหน้าก่อนป้อนลงในโมเดล XGBoost ที่รันในแบ็คเอนด์ FIL แม้ว่าในตอนแรกเราจะใช้ไลบรารี RAPIDS cuDF และ cuML เพื่อทำการประมวลผลข้อมูลล่วงหน้า (ตามที่อ้างอิงก่อนหน้านี้โดยใช้ GPU ของเรา) ที่นี่เราใช้ Pandas และ Scikit-learn เป็นการพึ่งพาการประมวลผลล่วงหน้าสำหรับเวลาอนุมาน (โดยใช้ CPU ของเรา) เราทำสิ่งนี้ด้วยเหตุผลสามประการ:

  • เพื่อแสดงวิธีสร้างสภาพแวดล้อม Conda สำหรับการพึ่งพาของคุณและวิธีจัดแพ็คเกจใน รูปแบบที่คาดไว้ โดยแบ็กเอนด์ Python ของ Triton
  • โดยการแสดงโมเดลการประมวลผลล่วงหน้าที่ทำงานในแบ็กเอนด์ Python บน CPU ในขณะที่โมเดล XGBoost ทำงานบน GPU ในแบ็กเอนด์ FIL เราแสดงให้เห็นว่าแต่ละรุ่นในไปป์ไลน์ทั้งมวลของ Triton สามารถทำงานบนแบ็กเอนด์เฟรมเวิร์กที่แตกต่างกันได้อย่างไร และทำงานบนฮาร์ดแวร์ที่แตกต่างกันได้อย่างไร การกำหนดค่า
  • โดยเน้นว่าไลบรารี RAPIDS (cuDF, cuML) เข้ากันได้กับซีพียูคู่กันอย่างไร (Pandas, Scikit-learn) ด้วยวิธีนี้เราสามารถแสดงวิธี LabelEncoders สร้างขึ้นใน cuML สามารถใช้ใน Scikit-learn และในทางกลับกัน โปรดทราบว่าหากคุณคาดว่าจะประมวลผลข้อมูลแบบตารางจำนวนมากล่วงหน้าในช่วงเวลาอนุมาน คุณยังคงสามารถใช้ RAPIDS เพื่อเร่งความเร็วของ GPU ได้

จำได้ว่าเราสร้าง label_encoders.pkl ไฟล์ในโน้ตบุ๊กเครื่องแรก การเข้ารหัสหมวดหมู่ทำอย่างอื่นไม่ได้นอกจากรวมไว้ในของเรา model.py ไฟล์สำหรับการประมวลผลล่วงหน้า

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ในการสร้างไฟล์ model.py ที่จำเป็นสำหรับแบ็กเอนด์ Triton Python เรายึดตาม การจัดรูปแบบที่แบ็กเอนด์ต้องการ และรวมตรรกะ Python ของเราในการประมวลผลเทนเซอร์ขาเข้าและใช้ตัวเข้ารหัสป้ายกำกับที่อ้างอิงก่อนหน้านี้ คุณสามารถตรวจสอบ ไฟล์ ใช้สำหรับการประมวลผลล่วงหน้า

สำหรับรุ่น XGBoost ไม่จำเป็นต้องทำอะไรอีก เราฝึกโมเดลในโน้ตบุ๊กเครื่องแรก และแบ็คเอนด์ FIL ของ Triton ไม่ต้องใช้ความพยายามเพิ่มเติมสำหรับรุ่น XGBoost

ต่อไป เราต้องการไฟล์การกำหนดค่าไทรทัน แต่ละรุ่นในชุด Triton ต้องใช้ a config.pbtxt ไฟล์. นอกจากนี้เรายังสร้าง config.pbtxt ไฟล์สำหรับทั้งมวล ไฟล์เหล่านี้ช่วยให้ Triton ทราบข้อมูลเมตาเกี่ยวกับวงดนตรีที่มีข้อมูล เช่น อินพุตและเอาต์พุตที่เราคาดหวัง รวมทั้งช่วยกำหนด DAG ที่เชื่อมโยงกับวงดนตรี

สุดท้าย ในการปรับใช้โมเดลบน Triton เราจำเป็นต้องมีโฟลเดอร์ที่เก็บโมเดลของเราเพื่อให้มีโครงสร้างโฟลเดอร์ที่เหมาะสม Triton มีข้อกำหนดเฉพาะสำหรับโครงร่างที่เก็บโมเดล ภายในไดเร็กทอรีที่เก็บโมเดลระดับบนสุด แต่ละโมเดลมีไดเร็กทอรีย่อยของตัวเองที่มีข้อมูลสำหรับโมเดลที่เกี่ยวข้อง แต่ละไดเร็กทอรีโมเดลใน Triton ต้องมีไดเร็กทอรีย่อยที่เป็นตัวเลขอย่างน้อยหนึ่งไดเร็กทอรีซึ่งแสดงถึงเวอร์ชันของโมเดล สำหรับกรณีการใช้งานของเรา โครงสร้างที่ได้ควรมีลักษณะดังนี้

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

หลังจากที่เรามีข้อกำหนดเบื้องต้นสามข้อนี้แล้ว เราจะสร้างไฟล์บีบอัดเป็นแพ็กเกจสำหรับการปรับใช้และอัปโหลดไปที่ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (อเมซอน เอส3).

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ตอนนี้ เราสามารถสร้างโมเดล SageMaker จากที่เก็บโมเดลที่เราอัปโหลดไปยัง Amazon S3 ในขั้นตอนก่อนหน้าได้แล้ว

ในขั้นตอนนี้ เรายังมีตัวแปรสภาพแวดล้อมเพิ่มเติมอีกด้วย SAGEMAKER_TRITON_DEFAULT_MODEL_NAMEซึ่งระบุชื่อรุ่นที่จะโหลดโดยไทรทัน ค่าของคีย์นี้ควรตรงกับชื่อโฟลเดอร์ในแพ็คเกจรุ่นที่อัปโหลดไปยัง Amazon S3 ตัวแปรนี้เป็นทางเลือกในกรณีของโมเดลเดียว ในกรณีของรุ่นทั้งมวล ต้องระบุคีย์นี้เพื่อให้ Triton เริ่มทำงานใน SageMaker

นอกจากนี้ คุณสามารถตั้งค่า SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT และ SAGEMAKER_TRITON_THREAD_COUNT เพื่อเพิ่มประสิทธิภาพการนับด้าย ค่าคอนฟิกูเรชันทั้งสองแบบช่วยปรับจำนวนเธรดที่รันบน CPU ของคุณ ดังนั้นคุณจึงสามารถใช้ประโยชน์ได้ดีขึ้นโดยการเพิ่มค่าเหล่านี้สำหรับ CPU ที่มีจำนวนคอร์มากขึ้น ในกรณีส่วนใหญ่ ค่าเริ่มต้นมักจะทำงานได้ดี แต่อาจคุ้มค่าที่จะทดลองดูว่าสามารถเพิ่มประสิทธิภาพให้กับปริมาณงานของคุณได้หรือไม่

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ด้วยโมเดลก่อนหน้านี้ เราสร้างการกำหนดค่าปลายทางซึ่งเราสามารถระบุประเภทและจำนวนอินสแตนซ์ที่เราต้องการในปลายทางได้

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

สุดท้ายนี้ เราใช้การกำหนดค่าปลายทางก่อนหน้าเพื่อสร้างตำแหน่งข้อมูล SageMaker ใหม่และรอให้การปรับใช้เสร็จสิ้น สถานะเปลี่ยนเป็น InService หลังจากปรับใช้สำเร็จแล้ว

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

แค่นั้นแหละ! ปลายทางของคุณพร้อมสำหรับการทดสอบและตรวจสอบแล้ว ณ จุดนี้ คุณอาจต้องการใช้เครื่องมือต่างๆ เพื่อช่วยปรับประเภทอินสแตนซ์และการกำหนดค่าของคุณให้เหมาะสมเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด รูปต่อไปนี้แสดงตัวอย่างของการได้รับที่สามารถทำได้โดยใช้แบ็คเอนด์ FIL สำหรับรุ่น XGBoost บน Triton

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

สรุป

ในโพสต์นี้ เราจะแนะนำคุณเกี่ยวกับการปรับใช้ปริมาณงานของชุด XGBoost กับ SageMaker ด้วยเซิร์ฟเวอร์ Triton Inference การย้ายปริมาณงานไปยัง Triton บน SageMaker อาจเป็นผลตอบแทนจากการลงทุนที่เป็นประโยชน์ เช่นเดียวกับการนำเทคโนโลยีมาใช้ กระบวนการและแผนการตรวจสอบถือเป็นกุญแจสำคัญ และเราให้รายละเอียดขั้นตอนห้าขั้นตอนเพื่อแนะนำคุณเกี่ยวกับสิ่งที่ต้องพิจารณาเมื่อย้ายปริมาณงานของคุณ นอกจากนี้ เรายังเจาะลึกถึงขั้นตอนที่จำเป็นในการปรับใช้วงดนตรีที่ใช้การประมวลผลล่วงหน้าของ Python และโมเดล XGBoost บน Triton บน SageMaker

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

คุณสามารถค้นหาสมุดบันทึกที่ใช้สำหรับตัวอย่างนี้ได้ที่ GitHub.


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

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.เจมส์พาร์ค เป็นสถาปนิกโซลูชันที่ Amazon Web Services เขาทำงานร่วมกับ Amazon.com เพื่อออกแบบ สร้าง และปรับใช้โซลูชันเทคโนโลยีบน AWS และมีความสนใจเป็นพิเศษใน AI และการเรียนรู้ของเครื่อง ในเวลาว่าง เขาชอบค้นหาวัฒนธรรมใหม่ๆ ประสบการณ์ใหม่ๆ และติดตามเทรนด์เทคโนโลยีล่าสุดอยู่เสมอ

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI. เจียหงหลิว เป็น Solution Architect ในทีม Cloud Service Provider ที่ NVIDIA เขาช่วยลูกค้าในการใช้การเรียนรู้ด้วยเครื่องและโซลูชัน AI ที่ใช้ประโยชน์จากการประมวลผลแบบเร่งความเร็วของ NVIDIA เพื่อจัดการกับความท้าทายในการฝึกอบรมและการอนุมาน ในยามว่าง เขาสนุกกับการพับกระดาษ โปรเจกต์ทำเอง และเล่นบาสเก็ตบอล

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.กษิติซ กุปตะ เป็นสถาปนิกโซลูชันที่ NVIDIA เขาสนุกกับการให้ความรู้แก่ลูกค้าคลาวด์เกี่ยวกับเทคโนโลยี GPU AI ที่ NVIDIA นำเสนอและช่วยเหลือพวกเขาในการเร่งการเรียนรู้ด้วยเครื่องและแอปพลิเคชันการเรียนรู้เชิงลึก นอกเวลางาน เขาชอบวิ่ง เดินป่า และชมสัตว์ป่า

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.บรูโน อากีอาร์ เดอ เมโล เป็นวิศวกรพัฒนาซอฟต์แวร์ที่ Amazon.com ซึ่งเขาช่วยทีมวิทยาศาสตร์ในการสร้าง ปรับใช้ และเผยแพร่ปริมาณงาน ML เขามีความสนใจในการใช้เครื่องมือและลักษณะที่ควบคุมได้ภายในขั้นตอนการสร้างแบบจำลอง/การออกแบบ ML ที่ต้องพิจารณาและวัดด้วยข้อมูลเชิงลึกว่าประสิทธิภาพการดำเนินการแบบจำลองมีความสำคัญพอๆ กับประสิทธิภาพคุณภาพของแบบจำลอง โดยเฉพาะอย่างยิ่งในกรณีการใช้งานที่มีข้อจำกัดด้านเวลาแฝง ในเวลาว่าง เขาชอบดื่มไวน์ เล่นเกมกระดาน และทำอาหาร

บรรลุการโฮสต์ที่มีเวลาแฝงต่ำสำหรับโมเดล ML แบบอิงแผนผังการตัดสินใจบนเซิร์ฟเวอร์ NVIDIA Triton Inference บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.เอลิยูธ ไตรอานา เป็น Developer Relations Manager ที่ NVIDIA เขาเชื่อมโยงผู้นำผลิตภัณฑ์ Amazon และ AWS นักพัฒนา และนักวิทยาศาสตร์กับนักเทคโนโลยีและผู้นำผลิตภัณฑ์ของ NVIDIA เพื่อเร่งปริมาณงาน Amazon ML/DL, ผลิตภัณฑ์ EC2 และบริการ AWS AI นอกจากนี้ Eliuth ยังเป็นนักขี่จักรยานเสือภูเขา นักเล่นสกี และนักเล่นโป๊กเกอร์ที่หลงใหล

ประทับเวลา:

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

ลดความซับซ้อนในการพัฒนาโมเดลแมชชีนเลิร์นนิ่งแบบวนซ้ำโดยเพิ่มคุณสมบัติให้กับกลุ่มคุณสมบัติที่มีอยู่ใน Amazon SageMaker Feature Store

โหนดต้นทาง: 1603886
ประทับเวลา: สิงหาคม 1, 2022