یکی از محبوب ترین مدل های موجود امروزه XGBoost است. XGBoost با توانایی حل مشکلات مختلف مانند طبقه بندی و رگرسیون به گزینه ای محبوب تبدیل شده است که در دسته مدل های درختی نیز قرار می گیرد. در این پست، ما به عمق می پردازیم تا ببینیم چگونه آمازون SageMaker می تواند این مدل ها را با استفاده از سرور استنتاج تریتون NVIDIA. بارهای کاری استنتاج بلادرنگ می توانند سطوح مختلفی از نیازمندی ها و موافقت نامه های سطح خدمات (SLA) از نظر تأخیر و توان عملیاتی داشته باشند و می توانند با استفاده از نقاط پایانی بلادرنگ SageMaker برآورده شوند.
SageMaker فراهم می کند نقاط پایانی تک مدل، که به شما امکان می دهد یک مدل یادگیری ماشین واحد (ML) را در برابر یک نقطه پایانی منطقی استقرار دهید. برای موارد استفاده دیگر، میتوانید مدیریت هزینه و عملکرد را با استفاده از آن انتخاب کنید نقاط پایانی چند مدلی، که به شما امکان می دهد چندین مدل را برای میزبانی در پشت یک نقطه پایانی منطقی مشخص کنید. صرف نظر از گزینهای که انتخاب میکنید، نقاط پایانی SageMaker مکانیزم مقیاسپذیر را حتی برای خواستارترین مشتریان سازمانی فراهم میکند و در عین حال ارزش بسیاری از ویژگیها، از جمله انواع سایه, مقیاس بندی خودکارو ادغام بومی با CloudWatch آمازون (برای اطلاعات بیشتر مراجعه کنید معیارهای CloudWatch برای استقرار نقطه پایانی چند مدلی).
تریتون از پشتیبان های مختلف به عنوان موتور برای پشتیبانی از اجرا و ارائه مدل های مختلف ML برای استنتاج پشتیبانی می کند. برای هر استقرار Triton، بسیار مهم است که بدانید رفتار باطن چگونه بر حجم کاری شما تأثیر می گذارد و چه چیزی را باید انتظار داشت تا بتوانید موفق باشید. در این پست به شما کمک می کنیم تا این موضوع را درک کنید کتابخانه استنتاج جنگل (FIL).، که توسط Triton در SageMaker پشتیبانی می شود، تا بتوانید تصمیمی آگاهانه برای حجم کاری خود بگیرید و بهترین عملکرد و بهینه سازی هزینه ممکن را داشته باشید.
شیرجه عمیق به باطن FIL
تریتون پشتیبانی می کند باطن FIL برای ارائه مدل های درختی مانند XGBoost، LightGBM، یادگیری جنگل تصادفی, RAPIDS cuML جنگل تصادفیو هر مدل دیگری که توسط درختی. این مدلها مدتهاست که برای حل مسائلی مانند طبقهبندی یا رگرسیون استفاده میشوند. اگرچه این نوع مدلها به طور سنتی بر روی پردازندههای مرکزی اجرا میشوند، اما محبوبیت این مدلها و تقاضای استنتاج منجر به ایجاد تکنیکهای مختلفی برای افزایش عملکرد استنتاج شده است. پشتیبان FIL از بسیاری از این تکنیک ها با استفاده از ساختارهای cuML استفاده می کند و بر روی C++ و کتابخانه هسته CUDA برای بهینه سازی عملکرد استنتاج در شتاب دهنده های GPU ساخته شده است.
باطن FIL از کتابخانه های cuML برای استفاده از هسته های CPU یا GPU برای تسریع یادگیری استفاده می کند. برای استفاده از این پردازندهها، دادهها از حافظه میزبان (مثلا آرایههای NumPy) یا آرایههای GPU (uDF، Numba، cuPY یا هر کتابخانهای که از __cuda_array_interface__
) API. پس از مرحله بندی داده ها در حافظه، پشتیبان FIL می تواند پردازش را در تمام هسته های CPU یا GPU موجود انجام دهد.
رشته های پشتیبان FIL می توانند بدون استفاده از حافظه مشترک میزبان با یکدیگر ارتباط برقرار کنند، اما در بارهای کاری مجموعه، حافظه میزبان باید در نظر گرفته شود. نمودار زیر یک معماری زمانبندی گروهی را نشان میدهد که در آن شما میتوانید نواحی حافظه را تنظیم کنید، از جمله حافظه مشترک آدرسپذیر CPU که برای ارتباط بین فرآیندی بین تریتون (C++) و فرآیند پایتون (باطن پایتون) برای تبادل استفاده میشود. تانسورها (ورودی/خروجی) با باطن FIL.
Triton Inference Server گزینه های قابل تنظیمی را برای توسعه دهندگان فراهم می کند تا حجم کاری خود را تنظیم کنند و عملکرد مدل را بهینه کنند. پیکربندی dynamic_batching
به Triton اجازه می دهد تا درخواست های سمت کلاینت را نگه دارد و آنها را در سمت سرور دسته بندی کند تا به طور موثر از محاسبات موازی FIL برای استنتاج کل دسته با هم استفاده کند. گزینه max_queue_delay_microseconds
یک کنترل بی خطر از مدت زمان انتظار تریتون برای تشکیل یک دسته ارائه می دهد.
تعدادی دیگر برای FIL خاص وجود دارد گزینه های موجود که بر عملکرد و رفتار تأثیر می گذارد. ما پیشنهاد می کنیم با شروع شروع کنید storage_type
. هنگام اجرای backend بر روی GPU، FIL یک ساختار حافظه/داده جدید ایجاد می کند که نمایانگر درختی است که FIL می تواند بر عملکرد و ردپای آن تأثیر بگذارد. این از طریق پارامتر محیط قابل تنظیم است storage_type
، که دارای گزینه های متراکم، پراکنده و خودکار است. انتخاب گزینه متراکم حافظه GPU بیشتری مصرف می کند و همیشه عملکرد بهتری را به همراه ندارد، بنابراین بهتر است بررسی کنید. در مقابل، گزینه Sparse حافظه GPU کمتری مصرف می کند و احتمالاً می تواند به خوبی یا بهتر از متراکم عمل کند. انتخاب خودکار باعث میشود که مدل بهطور پیشفرض متراکم شود، مگر اینکه انجام این کار به میزان قابل توجهی بیشتر از حافظه پراکنده GPU مصرف کند.
وقتی صحبت از عملکرد مدل می شود، ممکن است بر روی آن تاکید کنید threads_per_tree
گزینه. یکی از مواردی که ممکن است در سناریوهای دنیای واقعی از آن غافل شوید این است threads_per_tree
می تواند تأثیر بیشتری بر توان عملیاتی نسبت به هر پارامتر دیگری داشته باشد. تنظیم آن بر روی هر توان 2 از 1 تا 32 قانونی است. پیشبینی مقدار بهینه برای این پارامتر دشوار است، اما زمانی که از سرور انتظار میرود با بار بالاتر یا پردازش اندازههای دسته بزرگتر سروکار داشته باشد، نسبت به زمانی که چند ردیف را در یک زمان پردازش میکند، از مقدار بیشتری بهره میبرد.
پارامتر دیگری که باید از آن آگاه بود این است algo
، که اگر روی GPU کار می کنید نیز موجود است. این پارامتر الگوریتم مورد استفاده برای پردازش درخواست های استنتاج را تعیین می کند. گزینه های پشتیبانی شده برای این هستند ALGO_AUTO
, NAIVE
, TREE_REORG
و BATCH_TREE_REORG
. این گزینهها تعیین میکنند که گرهها در یک درخت چگونه سازماندهی شدهاند و همچنین میتوانند منجر به افزایش عملکرد شوند. را ALGO_AUTO
گزینه پیش فرض به NAIVE
برای ذخیره سازی پراکنده و BATCH_TREE_REORG
برای ذخیره سازی متراکم
در نهایت، FIL با توضیح دهنده Shapley ارائه می شود که با استفاده از آن می توان آن را فعال کرد treeshap_output
پارامتر. با این حال، باید در نظر داشته باشید که خروجی های Shapley به دلیل اندازه خروجی آن به عملکرد آسیب می زند.
قالب مدل
در حال حاضر هیچ فرمت فایل استانداردی برای ذخیره مدل های مبتنی بر جنگل وجود ندارد. هر فریم ورک تمایل دارد قالب خود را تعریف کند. به منظور پشتیبانی از چندین فرمت فایل ورودی، FIL داده ها را با استفاده از منبع باز وارد می کند درختی کتابخانه این FIL را قادر میسازد تا از مدلهای آموزش دیده در چارچوبهای محبوب، مانند XGBoost و LightGBM. توجه داشته باشید که فرمت مدلی که ارائه می کنید باید در آن تنظیم شود model_type
مقدار پیکربندی مشخص شده در config.pbtxt
فایل.
Config.pbtxt
هر مدل در یک مخزن مدل باید شامل یک پیکربندی مدل باشد که اطلاعات مورد نیاز و اختیاری را در مورد مدل ارائه دهد. به طور معمول، این پیکربندی در a ارائه می شود config.pbtxt
فایل مشخص شده به عنوان Protobuf ModelConfig. برای کسب اطلاعات بیشتر در مورد تنظیمات پیکربندی، مراجعه کنید پیکربندی مدل. در زیر برخی از پارامترهای پیکربندی مدل آمده است:
- حداکثر_اندازه_دسته - این حداکثر اندازه دسته ای را که می توان به این مدل منتقل کرد تعیین می کند. به طور کلی، تنها محدودیت در اندازه دسته های ارسال شده به یک باطن FIL، حافظه موجود برای پردازش آنها است. برای اجراهای GPU، حافظه موجود با اندازه استخر حافظه CUDA Triton تعیین می شود، که می تواند از طریق یک آرگومان خط فرمان هنگام راه اندازی سرور تنظیم شود.
- ورودی – گزینههای موجود در این بخش تعداد ویژگیهای مورد انتظار برای هر نمونه ورودی را به تریتون میگویند.
- تولید – گزینه های این بخش به تریتون می گویند که برای هر نمونه چند مقدار خروجی وجود خواهد داشت. اگر
predict_proba
گزینه روی true تنظیم می شود، سپس یک مقدار احتمال برای هر کلاس برگردانده می شود. در غیر این صورت، یک مقدار بازگردانده می شود که نشان دهنده کلاس پیش بینی شده برای نمونه داده شده است. - instance_group – این تعیین می کند که چند نمونه از این مدل ایجاد می شود و از GPU یا CPU استفاده می کنند.
- نوع مدل – این رشته نشان می دهد که مدل در چه قالبی است (
xgboost_json
در این مثال، اماxgboost
,lightgbm
وtl_checkpoint
فرمت های معتبر نیز هستند). - predict_proba - اگر روی true تنظیم شود، مقادیر احتمال برای هر کلاس به جای یک پیشبینی کلاس برگردانده میشود.
- خروجی_کلاس - این مقدار برای مدلهای طبقهبندی درست و برای مدلهای رگرسیون false تنظیم شده است.
- آستانه - این یک آستانه امتیاز برای تعیین طبقه بندی است. چه زمانی
output_class
روی true تنظیم شده است، این باید ارائه شود، اگرچه اگر از آن استفاده نمی شودpredict_proba
نیز روی true تنظیم شده است. - storage_type – به طور کلی، استفاده از AUTO برای این تنظیم باید بیشتر موارد استفاده را برآورده کند. اگر ذخیره سازی خودکار انتخاب شده باشد، FIL مدل را با استفاده از یک نمایش پراکنده یا متراکم بر اساس اندازه تقریبی مدل بارگیری می کند. در برخی موارد، ممکن است بخواهید به صراحت این را روی SPARSE تنظیم کنید تا ردپای حافظه مدل های بزرگ را کاهش دهید.
سرور استنتاج تریتون در SageMaker
SageMaker اجازه می دهد تا شما می توانید هر دو نقطه پایانی تک مدل و چند مدل را با سرور استنتاج تریتون NVIDIA استقرار دهید. شکل زیر معماری سطح بالای سرور استنتاج تریتون را نشان می دهد. این مخزن مدل یک مخزن مبتنی بر سیستم فایل از مدل هایی است که تریتون برای استنتاج در دسترس قرار خواهد داد. درخواستهای استنتاج به سرور میرسند و به زمانبندی مناسب برای هر مدل هدایت میشوند. تریتون اجرا می کند چندین الگوریتم زمانبندی و دسته بندی که می تواند بر اساس مدل به مدل پیکربندی شود. زمانبندی هر مدل به صورت اختیاری دسته بندی درخواست های استنتاج را انجام می دهد و سپس درخواست ها را به آن ارسال می کند باطن مطابق با نوع مدل Backend استنتاج را با استفاده از ورودی های ارائه شده در درخواست های دسته ای برای تولید خروجی های درخواستی انجام می دهد. سپس خروجی ها برگردانده می شوند.
هنگام پیکربندی گروه های مقیاس خودکار خود برای نقاط پایانی SageMaker، ممکن است بخواهید در نظر بگیرید SageMakerVariantInvocationsPerInstance
به عنوان معیار اولیه برای تعیین ویژگی های مقیاس بندی گروه مقیاس خودکار شما. علاوه بر این، بسته به اینکه مدلهای شما روی GPU یا CPU اجرا میشوند، میتوانید از CPUUtilization یا GPUUtilization به عنوان معیارهای اضافی استفاده کنید. توجه داشته باشید که برای نقاط پایانی تک مدل، از آنجایی که مدلهای مستقر شده همه یکسان هستند، تنظیم خطمشیهای مناسب برای مطابقت با SLAهای خود نسبتاً ساده است. برای نقاط پایانی چند مدل، توصیه میکنیم مدلهای مشابه را در پشت نقطه پایانی معین به کار ببرید تا عملکرد قابل پیشبینی ثابتتری داشته باشید. در موارد استفاده که از مدلهایی با اندازهها و الزامات مختلف استفاده میشود، ممکن است بخواهید آن حجمهای کاری را در چندین نقطه پایانی چند مدل جدا کنید یا مدتی را صرف تنظیم دقیق خطمشی گروه مقیاسبندی خودکار خود کنید تا بهترین تعادل هزینه و عملکرد را به دست آورید.
برای لیستی از ظروف یادگیری عمیق NVIDIA Triton (DLC) که توسط استنتاج SageMaker پشتیبانی می شوند، به تصاویر ظروف یادگیری عمیق موجود.
بررسی نوت بوک SageMaker
برنامه های کاربردی ML پیچیده هستند و اغلب می توانند به پیش پردازش داده ها نیاز داشته باشند. در این نوت بوک، ما به نحوه استقرار یک مدل ML مبتنی بر درخت مانند XGBoost با استفاده از باطن FIL در تریتون در نقطه پایانی چند مدل SageMaker می پردازیم. ما همچنین نحوه پیادهسازی خط لوله استنتاج پیشپردازش داده مبتنی بر پایتون را برای مدل خود با استفاده از ویژگی مجموعه در تریتون توضیح میدهیم. این به ما امکان میدهد تا دادههای خام را از سمت مشتری ارسال کنیم و پیشپردازش داده و استنتاج مدل در نقطه پایانی Triton SageMaker برای عملکرد استنتاج بهینه اتفاق بیفتد.
ویژگی مجموعه مدل تریتون
سرور استنتاج تریتون استقرار مدلهای هوش مصنوعی را در مقیاس تولید ساده میکند. سرور استنتاج تریتون با راه حل مناسبی ارائه می شود که ساخت خطوط لوله پیش پردازش و پس پردازش را ساده می کند. پلت فرم سرور استنتاج تریتون، زمانبندی گروه را فراهم می کند، که مسئول خط لوله کردن مدل های شرکت کننده در فرآیند استنتاج و در عین حال اطمینان از کارایی و بهینه سازی توان عملیاتی است. استفاده از مدلهای گروهی میتواند از سربار انتقال تانسورهای میانی جلوگیری کند و تعداد درخواستهایی را که باید به تریتون ارسال شود به حداقل برساند.
در این نوت بوک، نحوه استفاده از ویژگی ensemble را برای ایجاد خط لوله پیش پردازش داده با استنتاج مدل XGBoost نشان می دهیم، و می توانید از آن برای اضافه کردن پس پردازش سفارشی به خط لوله استفاده کنید.
محیط را تنظیم کنید
ما با تنظیم محیط مورد نیاز شروع می کنیم. ما وابستگی های مورد نیاز برای بسته بندی خط لوله مدل خود را نصب می کنیم و استنتاج ها را با استفاده از سرور استنتاج تریتون اجرا می کنیم. ما نیز تعریف می کنیم هویت AWS و مدیریت دسترسی نقش (IAM) که به SageMaker به مصنوعات مدل و NVIDIA Triton دسترسی خواهد داشت. رجیستری ظروف الاستیک آمازون تصویر (Amazon ECR). کد زیر را ببینید:
یک محیط Conda برای پیش پردازش وابستگی ها ایجاد کنید
پشتیبان پایتون در تریتون ما را ملزم به استفاده از a می کند کندا محیطی برای هر گونه وابستگی اضافی در این مورد، ما از پشتیبان پایتون برای پیش پردازش داده های خام قبل از تغذیه آن به مدل XGBoost که در باطن FIL در حال اجرا است استفاده می کنیم. اگرچه ما در ابتدا از RAPIDS cuDF و cuML برای انجام پیش پردازش داده ها استفاده می کردیم، در اینجا از Pandas و scikit-learn به عنوان وابستگی های پیش پردازش در طول استنتاج استفاده می کنیم. ما این کار را به سه دلیل انجام می دهیم:
- ما نشان می دهیم که چگونه یک محیط Conda برای وابستگی های خود ایجاد کنید و چگونه آن را در بسته بندی کنید قالب مورد انتظار توسط باطن پایتون تریتون.
- با نشان دادن مدل پیش پردازش در حال اجرا در باطن پایتون در CPU در حالی که XGBoost بر روی GPU در باطن FIL اجرا میشود، نشان میدهیم که چگونه هر مدل در خط لوله گروه Triton میتواند بر روی یک چارچوب فریمورک متفاوت و همچنین پیکربندیهای سختافزاری متفاوت اجرا شود.
- این نشان می دهد که چگونه کتابخانه های RAPIDS (cuDF، cuML) با همتایان CPU خود (Pandas، scikit-learn) سازگار هستند. به عنوان مثال، ما می توانیم نشان دهیم که چگونه
LabelEncoders
ایجاد شده در cuML می تواند در scikit-learn و بالعکس استفاده شود.
ما دستورالعمل ها را دنبال می کنیم مستندات تریتون برای بسته بندی وابستگی های پیش پردازش (scikit-learn و Pandas) که در باطن پایتون به عنوان فایل TAR محیط Conda استفاده می شود. اسکریپت bash create_prep_env.sh فایل TAR محیط Conda را ایجاد می کند، سپس آن را به پوشه مدل پیش پردازش منتقل می کنیم. کد زیر را ببینید:
پس از اجرای اسکریپت قبلی، تولید می شود preprocessing_env.tar.gz
، که ما آن را در دایرکتوری پیش پردازش کپی می کنیم:
پیش پردازش را با باطن تریتون پایتون تنظیم کنید
برای پیش پردازش، از Triton's استفاده می کنیم باطن پایتون برای انجام پیش پردازش داده های جدولی (رمزگذاری طبقه ای) در حین استنتاج برای درخواست های داده خام وارد شده به سرور. برای اطلاعات بیشتر در مورد پیش پردازشی که در حین آموزش انجام شد، به ادامه مطلب مراجعه کنید دفترچه آموزشی.
باطن پایتون، پیش پردازش، پس پردازش و هر منطق سفارشی دیگری را قادر می سازد تا در پایتون پیاده سازی شود و با تریتون ارائه شود. استفاده از Triton در SageMaker ما را ملزم میکند که ابتدا یک پوشه مخزن مدل شامل مدلهایی که میخواهیم ارائه کنیم، راهاندازی کنیم. ما قبلاً یک مدل برای پیش پردازش داده های پایتون به نام پیش پردازش در راه اندازی کرده ایم cpu_model_repository
و gpu_model_repository
.
تریتون الزامات خاصی برای چیدمان مخزن مدل دارد. در دایرکتوری مخزن مدل سطح بالا، هر مدل فهرست فرعی خود را دارد که حاوی اطلاعات مدل مربوطه است. هر دایرکتوری مدل در تریتون باید حداقل یک زیردایرکتوری عددی داشته باشد که نسخه ای از مدل را نشان می دهد. مقدار 1 نشان دهنده نسخه 1 مدل پیش پردازش پایتون ما است. هر مدل توسط یک باطن خاص اجرا می شود، بنابراین در هر زیر شاخه نسخه باید مصنوع مدل مورد نیاز آن باطن وجود داشته باشد. برای این مثال، ما از باطن پایتون استفاده میکنیم، که نیاز دارد فایل پایتونی که در حال ارائه آن هستید مدل.py نامیده شود و فایل باید پیادهسازی شود. توابع خاص. اگر از Backend PyTorch استفاده می کردیم، یک فایل model.pt مورد نیاز بود و غیره. برای جزئیات بیشتر در مورد قراردادهای نامگذاری برای فایل های مدل، مراجعه کنید فایل های مدل.
La model.py فایل پایتون که ما در اینجا استفاده می کنیم، تمام منطق پیش پردازش داده های جدولی را برای تبدیل داده های خام به ویژگی هایی که می توانند به مدل XGBoost ما وارد شوند، پیاده سازی می کند.
هر مدل تریتون باید یک config.pbtxt
فایلی که پیکربندی مدل را توصیف می کند. برای کسب اطلاعات بیشتر در مورد تنظیمات پیکربندی، مراجعه کنید پیکربندی مدلاست. ما config.pbtxt فایل پشتیبان را به عنوان پایتون و تمام ستون های ورودی را برای داده های خام به همراه خروجی از پیش پردازش شده مشخص می کند که از 15 ویژگی تشکیل شده است. ما همچنین مشخص می کنیم که می خواهیم این مدل پیش پردازش پایتون را روی CPU اجرا کنیم. کد زیر را ببینید:
یک مدل ML مبتنی بر درخت برای باطن FIL تنظیم کنید
در مرحله بعد، ما دایرکتوری مدل را برای یک مدل ML مبتنی بر درخت مانند XGBoost تنظیم می کنیم که از پسوند FIL استفاده می کند.
طرح مورد انتظار برای cpu_memory_repository
و gpu_memory_repository
مشابه آنچه قبلا نشان دادیم هستند.
در اینجا، FIL
نام مدل است می توانیم نام دیگری مانند آن بگذاریم xgboost
اگر بخواهیم 1
زیر شاخه نسخه است که حاوی مصنوع مدل است. در این مورد، آن است xgboost.json
مدلی که ذخیره کردیم بیایید این طرح مورد انتظار را ایجاد کنیم:
ما باید فایل پیکربندی را داشته باشیم config.pbtxt
توصیف پیکربندی مدل برای مدل ML مبتنی بر درخت، به طوری که باطن FIL در تریتون بتواند نحوه سرویس دهی آن را درک کند. برای اطلاعات بیشتر به جدیدترین ژنریک مراجعه کنید گزینه های پیکربندی تریتون و گزینه های پیکربندی خاص برای باطن FIL. ما فقط روی چند مورد از رایج ترین و مرتبط ترین گزینه ها در این مثال تمرکز می کنیم.
ساختن config.pbtxt
برای model_cpu_repository
:
به طور مشابه، راه اندازی کنید config.pbtxt
برای model_gpu_repository
(توجه داشته باشید تفاوت این است USE_GPU = True
):
راهاندازی یک خط لوله استنتاج از پیشپردازش دادههای باطن پایتون و باطن FIL با استفاده از مجموعهها
اکنون ما آماده راه اندازی خط لوله استنتاج برای پیش پردازش داده ها و استنتاج مدل مبتنی بر درخت با استفاده از یک مدل مجموعه. یک مدل مجموعه نشان دهنده خط لوله ای از یک یا چند مدل و اتصال تانسورهای ورودی و خروجی بین آن مدل ها است. در اینجا ما از مدل مجموعه برای ایجاد خط لوله ای از پیش پردازش داده ها در پشتیبان پایتون و به دنبال آن XGBoost در باطن FIL استفاده می کنیم.
طرح مورد انتظار برای ensemble
دایرکتوری مدل شبیه به مواردی است که قبلا نشان دادیم:
ما مدل های گروه را ایجاد کردیم config.pbtxt پیروی از راهنمایی در مدل های گروه. مهمتر از همه، ما باید زمانبندی گروه را در آن راه اندازی کنیم config.pbtxt
، که جریان داده بین مدل های داخل مجموعه را مشخص می کند. زمانبندی گروه تانسورهای خروجی را در هر مرحله جمع آوری می کند و آنها را به عنوان تانسورهای ورودی برای مراحل دیگر مطابق با مشخصات ارائه می دهد.
مخزن مدل را بسته بندی کنید و در آمازون S3 آپلود کنید
در نهایت، به ساختار دایرکتوری مخزن مدل زیر می رسیم که شامل یک مدل پیش پردازش پایتون و وابستگی های آن به همراه مدل XGBoost FIL و مجموعه مدل است.
دایرکتوری و محتویات آن را به صورت بسته بندی می کنیم model.tar.gz
برای آپلود در سرویس ذخیره سازی ساده آمازون (Amazon S3). ما در این مثال دو گزینه داریم: استفاده از یک نمونه مبتنی بر CPU یا یک نمونه مبتنی بر GPU. یک نمونه مبتنی بر GPU زمانی مناسب تر است که به قدرت پردازش بالاتری نیاز دارید و می خواهید از هسته های CUDA استفاده کنید.
بسته مدل را برای یک نمونه مبتنی بر CPU (بهینه شده برای CPU) با کد زیر ایجاد و آپلود کنید:
بسته مدل را برای یک نمونه مبتنی بر GPU (بهینه شده برای GPU) با کد زیر ایجاد و آپلود کنید:
یک نقطه پایانی SageMaker ایجاد کنید
ما اکنون مصنوعات مدل را در یک سطل S3 ذخیره کرده ایم. در این مرحله می توانیم متغیر محیط اضافی را نیز ارائه کنیم SAGEMAKER_TRITON_DEFAULT_MODEL_NAME
، که نام مدل بارگذاری شده توسط تریتون را مشخص می کند. مقدار این کلید باید با نام پوشه در بسته مدل آپلود شده در Amazon S3 مطابقت داشته باشد. این متغیر در مورد یک مدل اختیاری است. در مورد مدل های گروهی، این کلید باید برای راه اندازی تریتون در SageMaker مشخص شود.
علاوه بر این، می توانید تنظیم کنید SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT
و SAGEMAKER_TRITON_THREAD_COUNT
برای بهینه سازی تعداد موضوعات
ما از مدل قبلی برای ایجاد یک پیکربندی نقطه پایانی استفاده می کنیم که در آن می توانیم نوع و تعداد نمونه های مورد نظر خود را در نقطه پایانی مشخص کنیم.
ما از این پیکربندی نقطه پایانی برای ایجاد یک نقطه پایانی SageMaker استفاده می کنیم و منتظر می مانیم تا استقرار به پایان برسد. با SageMaker MME، ما این گزینه را داریم که با تکرار این فرآیند چندین مدل مجموعه را میزبانی کنیم، اما برای این مثال به یک استقرار پایبند هستیم:
وضعیت به تغییر خواهد کرد InService
زمانی که استقرار موفقیت آمیز باشد.
مدل خود را که در نقطه پایانی SageMaker میزبانی شده است فراخوانی کنید
پس از اجرای نقطه پایانی، میتوانیم از برخی دادههای خام نمونه برای انجام استنتاج با استفاده از JSON به عنوان فرمت بار استفاده کنیم. برای فرمت درخواست استنتاج، تریتون از KFServing
استاندارد جامعه پروتکل های استنتاج. کد زیر را ببینید:
نوت بوک ارجاع شده در وبلاگ را می توان در مخزن GitHub.
بهترین شیوه
علاوه بر گزینه هایی برای تنظیم دقیق تنظیمات پشتیبان FIL که قبلاً ذکر کردیم، دانشمندان داده همچنین می توانند اطمینان حاصل کنند که داده های ورودی برای backend برای پردازش توسط موتور بهینه شده است. در صورت امکان، داده ها را در قالب ردیف اصلی در آرایه GPU وارد کنید. فرمت های دیگر نیاز به تبدیل داخلی دارند و چرخه هایی را اشغال می کنند و عملکرد را کاهش می دهند.
با توجه به نحوه نگهداری ساختارهای داده FIL در حافظه GPU، مراقب عمق درخت باشید. هرچه عمق درخت بیشتر باشد، ردپای حافظه GPU شما بزرگتر خواهد بود.
استفاده از instance_group_count
پارامتری برای اضافه کردن فرآیندهای کارگر و افزایش توان عملیاتی باطن FIL، که منجر به مصرف بیشتر حافظه CPU و GPU می شود. علاوه بر این، متغیرهای مخصوص SageMaker را که برای افزایش توان در دسترس هستند، در نظر بگیرید، مانند رشتههای HTTP، اندازه بافر HTTP، اندازه دستهای و حداکثر تاخیر.
نتیجه
در این پست، ما عمیقاً به باطن FIL که Triton Inference Server در SageMaker پشتیبانی میکند، میپردازیم. این باطن شتاب CPU و GPU مدل های درختی شما مانند الگوریتم محبوب XGBoost را فراهم می کند. گزینه های زیادی برای به دست آوردن بهترین عملکرد برای استنباط وجود دارد، مانند اندازه های دسته ای، فرمت های ورودی داده و سایر عواملی که می توانند برای برآورده کردن نیازهای شما تنظیم شوند. SageMaker به شما این امکان را می دهد که از این قابلیت با نقاط پایانی تک و چند مدلی برای متعادل کردن عملکرد و صرفه جویی در هزینه استفاده کنید.
ما شما را تشویق میکنیم که اطلاعات این پست را در نظر بگیرید و ببینید آیا SageMaker میتواند نیازهای میزبانی شما را برای ارائه مدلهای مبتنی بر درخت برآورده کند و نیازهای شما را برای کاهش هزینه و عملکرد بار کاری برآورده کند.
نوت بوک مورد اشاره در این پست را می توانید در نمونه های SageMaker پیدا کنید مخزن GitHub. علاوه بر این، میتوانید آخرین اسناد مربوط به باطن FIL را پیدا کنید GitHub.
درباره نویسنده
راغو رامشا یک معمار ارشد راه حل های ML با تیم خدمات آمازون SageMaker است. او بر کمک به مشتریان در ساخت، استقرار و انتقال بارهای کاری تولید ML به SageMaker در مقیاس متمرکز است. او در زمینه های یادگیری ماشین، هوش مصنوعی و بینایی کامپیوتر تخصص دارد و دارای مدرک کارشناسی ارشد در علوم کامپیوتر از UT Dallas است. در اوقات فراغت از مسافرت و عکاسی لذت می برد.
جیمز پارک یک معمار راه حل در خدمات وب آمازون است. او با Amazon.com برای طراحی، ساخت و استقرار راه حل های فناوری در AWS کار می کند و علاقه خاصی به هوش مصنوعی و یادگیری ماشین دارد. در اوقات فراغت خود از جستجوی فرهنگ های جدید، تجربیات جدید و به روز ماندن با آخرین روندهای فناوری لذت می برد.
داوال پاتل یک معمار اصلی یادگیری ماشین در AWS است. او با سازمانهایی از شرکتهای بزرگ گرفته تا استارتآپهای متوسط در زمینه مشکلات مربوط به محاسبات توزیعشده و هوش مصنوعی کار کرده است. او بر یادگیری عمیق، از جمله NLP و حوزه های بینایی کامپیوتر تمرکز می کند. او به مشتریان کمک می کند تا به استنباط مدل با عملکرد بالا در Amazon SageMaker دست یابند.
جیاهونگ لیو یک معمار راه حل در تیم ارائه دهنده خدمات ابری در NVIDIA است. او به مشتریان در اتخاذ راهحلهای یادگیری ماشین و هوش مصنوعی کمک میکند که از محاسبات تسریعشده NVIDIA برای رسیدگی به چالشهای آموزشی و استنتاج آنها استفاده میکند. او در اوقات فراغت خود از اوریگامی، پروژه های DIY و بازی بسکتبال لذت می برد.
کشیتیز گوپتا یک معمار راه حل در NVIDIA است. او از آموزش دادن به مشتریان ابری درباره فناوریهای هوش مصنوعی GPU که NVIDIA ارائه میکند و کمک به آنها در تسریع یادگیری ماشینی و برنامههای یادگیری عمیق لذت میبرد. خارج از محل کار، او از دویدن، پیاده روی و تماشای حیات وحش لذت می برد.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoAiStream. Web3 Data Intelligence دانش تقویت شده دسترسی به اینجا.
- ضرب کردن آینده با آدرین اشلی. دسترسی به اینجا.
- منبع: https://aws.amazon.com/blogs/machine-learning/hosting-ml-models-on-amazon-sagemaker-using-triton-xgboost-lightgbm-and-treelite-models/
- : دارد
- :است
- :نه
- :جایی که
- $UP
- 1
- 100
- 11
- 13
- 200
- 23
- 24
- 7
- 8
- 9
- a
- توانایی
- درباره ما
- شتاب دادن
- تسریع شد
- تسریع
- شتاب دهنده ها
- دسترسی
- مطابق
- بر این اساس
- حساب
- رسیدن
- در میان
- اضافه کردن
- اضافه
- اضافی
- نشانی
- آدرس پذیر
- تصویب
- پس از
- در برابر
- موافقت نامه
- AI
- الگوریتم
- معرفی
- تخصیص ها
- اجازه دادن
- اجازه می دهد تا
- در امتداد
- قبلا
- همچنین
- هر چند
- همیشه
- آمازون
- آمازون SageMaker
- آمازون خدمات وب
- Amazon.com
- مقدار
- an
- و
- هر
- API
- برنامه های کاربردی
- مناسب
- معماری
- هستند
- مناطق
- استدلال
- صف
- مصنوعی
- هوش مصنوعی
- AS
- کمک می کند
- At
- خودکار
- در دسترس
- اجتناب از
- AWS
- بخش مدیریت
- برج میزان
- مستقر
- بر هم زدن
- اساس
- بسکتبال
- BE
- زیرا
- شدن
- بوده
- قبل از
- شروع
- پشت سر
- در زیر
- سود
- بهترین
- بهتر
- میان
- بزرگتر
- بلاگ
- بدن
- هر دو
- بافر
- ساختن
- بنا
- ساخته
- اما
- by
- ++C
- نام
- CAN
- کارت
- مورد
- موارد
- دسته بندی
- علت
- چالش ها
- تغییر دادن
- مشخصات
- بررسی
- تراشه
- را انتخاب کنید
- انتخاب
- شهر:
- کلاس
- طبقه بندی
- مشتری
- مشتریان
- ابر
- رمز
- ستون ها
- COM
- می آید
- آینده
- مشترک
- ارتباط
- ارتباط
- انجمن
- سازگار
- پیچیده
- محاسبه
- کامپیوتر
- علم کامپیوتر
- چشم انداز کامپیوتر
- محاسبه
- پیکر بندی
- ارتباط
- در نظر بگیرید
- در نظر گرفته
- مصرف
- مصرف
- ظرف
- ظروف
- شامل
- محتویات
- کنتراست
- کنترل
- مناسب
- تبدیل
- تبدیل
- هسته
- متناظر
- هزینه
- کاهش هزینه
- صرفه جویی در هزینه
- پوشش
- ایجاد
- ایجاد شده
- ایجاد
- ضوابط
- بسیار سخت
- در حال حاضر
- سفارشی
- مشتریان
- چرخه
- دالاس
- داده ها
- تاریخ
- روز
- مقدار
- تصمیم
- عمیق
- یادگیری عمیق
- عمیق تر
- به طور پیش فرض
- پیش فرض
- درجه
- تاخیر
- خواستار
- خواسته
- بستگی دارد
- گسترش
- مستقر
- استقرار
- گسترش
- عمق
- طرح
- جزئیات
- مشخص کردن
- مشخص
- تعیین می کند
- تعیین
- توسعه دهندگان
- تفاوت
- مختلف
- توزیع شده
- محاسبات توزیع شده
- DIY
- do
- مستندات
- نمی کند
- عمل
- حوزه
- انجام شده
- فاخته
- دو
- در طی
- هر
- پیش از آن
- آموزش
- بهره وری
- موثر
- هر دو
- با تاکید بر
- را قادر می سازد
- تشویق
- پایان
- نقطه پایانی
- موتور
- موتورهای حرفه ای
- اطمینان حاصل شود
- حصول اطمینان از
- سرمایه گذاری
- شرکت
- تمام
- محیط
- خطاهای
- حتی
- هر
- مثال
- مثال ها
- مبادله
- انتظار
- انتظار می رود
- تجارب
- صادرات
- عوامل
- منصفانه
- آبشار
- غلط
- ویژگی
- امکانات
- تغذیه
- تغذیه
- کمی از
- شکل
- پرونده
- فایل ها
- پیدا کردن
- پایان
- نام خانوادگی
- جریان
- تمرکز
- تمرکز
- به دنبال
- به دنبال
- پیروی
- رد پا
- برای
- فرم
- قالب
- یافت
- چارچوب
- چارچوب
- تقلب
- رایگان
- از جانب
- بعلاوه
- عایدات
- سوالات عمومی
- تولید می کند
- دریافت کنید
- دادن
- داده
- GPU
- تا حد زیادی
- گروه
- گروه ها
- راهنمایی
- رخ دادن
- سخت
- سخت افزار
- آیا
- he
- کمک
- کمک
- کمک می کند
- اینجا کلیک نمایید
- در سطح بالا
- عملکرد بالا
- بالاتر
- های لایت
- خود را
- نگه داشتن
- دارای
- میزبان
- میزبانی
- میزبانی وب
- چگونه
- چگونه
- اما
- HTML
- HTTP
- HTTPS
- صدمه
- هویت
- شناسه
- IDX
- if
- تصویر
- تأثیر
- اثرات
- انجام
- اجرا
- پیاده سازی می کند
- واردات
- in
- شامل
- از جمله
- افزایش
- نشان می دهد
- اطلاعات
- اطلاع
- ورودی
- نصب
- نمونه
- دستورالعمل
- ادغام
- اطلاعات
- علاقه
- داخلی
- به
- IT
- ITS
- JPG
- json
- تنها
- نگاه داشتن
- کلید
- نوع
- دانستن
- بزرگ
- شرکت های بزرگ
- بزرگتر
- تاخیر
- آخرین
- طرح
- یاد گرفتن
- یادگیری
- کمترین
- رهبری
- قانونی
- کمتر
- سطح
- سطح
- قدرت نفوذ
- کتابخانه ها
- کتابخانه
- پسندیدن
- محدود
- لاین
- فهرست
- بار
- منطق
- منطقی
- طولانی
- دستگاه
- فراگیری ماشین
- ساخت
- مدیریت
- بسیاری
- کارشناسی ارشد
- مسابقه
- حداکثر
- بیشترین
- ممکن است..
- مکانیزم
- دیدار
- نشست
- حافظه
- ذکر شده
- بازرگان
- متریک
- قدرت
- مهاجرت
- ذهن
- ML
- حالت
- مدل
- مدل
- ماه
- بیش
- اکثر
- محبوبترین
- حرکت
- نقطه پایانی چند مدل
- چندگانه
- باید
- نام
- نامگذاری
- بومی
- نیاز
- نیازهای
- جدید
- nlp
- نه
- گره
- دفتر یادداشت
- اکنون
- عدد
- بی حس
- کارت گرافیک Nvidia
- گرفتن
- of
- ارائه
- پیشنهادات
- غالبا
- on
- ONE
- آنهایی که
- فقط
- منبع باز
- بهینه
- بهینه سازی
- بهینه سازی
- بهینه
- بهینه سازی
- گزینه
- گزینه
- or
- سفارش
- سازمان های
- سازمان یافته
- در اصل
- OS
- دیگر
- در غیر این صورت
- ما
- خارج
- تولید
- خارج از
- خود
- بسته
- بسته بندی
- پانداها
- موازی
- پارامتر
- پارامترهای
- شرکت کننده
- ویژه
- گذشت
- عبور می کند
- مسیر
- انجام
- کارایی
- انجام می دهد
- اجازه
- عکاسی
- خط لوله
- سکو
- افلاطون
- هوش داده افلاطون
- PlatoData
- بازی
- لطفا
- کثیف
- سیاست
- سیاست
- استخر
- محبوب
- محبوبیت
- ممکن
- احتمالا
- پست
- قدرت
- پیش بینی
- قابل پیش بینی
- پیش بینی
- پیش گویی
- پیش بینی
- قبلا
- اصلی
- اصلی
- مشکلات
- روند
- فرآیندهای
- در حال پردازش
- قدرت پردازش
- پردازنده ها
- تولید کردن
- تولید
- پروژه ها
- مناسب
- نیا
- ارائه
- ارائه
- ارائه دهنده
- فراهم می کند
- ارائه
- پــایتــون
- مارماهی
- تصادفی
- اعم
- نسبتا
- خام
- اماده
- دنیای واقعی
- زمان واقعی
- دلایل
- توصیه
- كاهش دادن
- اشاره
- بدون در نظر گرفتن
- منطقه
- مربوط
- مربوط
- جایگزین کردن
- مخزن
- نمایندگی
- نمایندگی
- نشان دهنده
- درخواست
- درخواست
- نیاز
- ضروری
- مورد نیاز
- نیاز
- پاسخ
- مسئوليت
- نتیجه
- نتایج
- نقش
- دویدن
- در حال اجرا
- s
- حکیم ساز
- استنباط SageMaker
- همان
- پس انداز
- مقیاس پذیر
- مقیاس
- مقیاس گذاری
- سناریوها
- زمان بندی
- علم
- دانشمندان
- یادگیری
- نمره
- بخش
- دیدن
- به دنبال
- انتخاب شد
- ارسال
- ارشد
- جداگانه
- خدمت
- سرویس
- ارائه دهنده خدمات
- خدمات
- خدمت
- تنظیم
- محیط
- تنظیمات
- شکل
- به اشتراک گذاشته شده
- باید
- نشان
- نشان می دهد
- طرف
- به طور قابل توجهی
- مشابه
- ساده
- تنها
- اندازه
- اندازه
- So
- راه حل
- مزایا
- حل
- حل کردن
- برخی از
- منبع
- تخصص دارد
- خاص
- مشخصات
- مشخص شده
- خرج کردن
- استاندارد
- شروع
- راه افتادن
- نوپا
- دولت
- وضعیت
- ثابت
- گام
- مراحل
- ذخیره سازی
- opbevare
- ذخیره شده
- ساده
- رشته
- ساختار
- موفق
- چنین
- نشان می دهد
- مناسب
- پشتیبانی
- پشتیبانی
- پشتیبانی از
- گرفتن
- تیم
- تکنیک
- فن آوری
- پیشرفته
- گفتن
- قوانین و مقررات
- نسبت به
- که
- La
- اطلاعات
- شان
- آنها
- سپس
- آنجا.
- اینها
- آنها
- چیز
- این
- کسانی که
- اگر چه؟
- سه
- آستانه
- توان
- زمان
- به
- امروز
- با هم
- سطح عالی
- به طور سنتی
- آموزش دیده
- آموزش
- انتقال
- سفر
- درخت
- روند
- تریتون
- درست
- دو
- نوع
- انواع
- به طور معمول
- فهمیدن
- آپلود شده
- آپلود
- us
- استفاده کنید
- استفاده
- کاربر
- با استفاده از
- استفاده می کند
- با استفاده از
- ارزش
- ارزشها
- مختلف
- نسخه
- از طريق
- دید
- W
- صبر کنيد
- می خواهم
- بود
- تماشای
- مسیر..
- we
- وب
- خدمات وب
- خوب
- بود
- چی
- چه زمانی
- هر زمان که
- چه
- که
- در حین
- اراده
- با
- در داخل
- بدون
- مهاجرت کاری
- مشغول به کار
- کارگر
- با این نسخهها کار
- خواهد بود
- XGBoost
- سال
- شما
- شما
- زفیرنت
- زیپ