این یک پست وبلاگ مهمان است که با Minghui Yu و Jianzhe Xiao از Bytedance نوشته شده است.
ByteDance یک شرکت فناوری است که طیف وسیعی از پلتفرمهای محتوا را برای اطلاعرسانی، آموزش، سرگرمی و الهام بخشیدن به مردم در زبانها، فرهنگها و مناطق جغرافیایی اجرا میکند. کاربران به پلتفرم های محتوای ما به دلیل تجربیات غنی، شهودی و امنی که ارائه می دهند اعتماد دارند و از آن لذت می برند. این تجربیات توسط موتور پشتیبان یادگیری ماشین (ML) ما، با مدلهای ML که برای تعدیل محتوا، جستجو، توصیه، تبلیغات و جلوههای بصری جدید ساخته شدهاند، ممکن میشوند.
تیم ByteDance AML (یادگیری ماشین کاربردی) سیستمهای ML بسیار کارآمد، قابل اعتماد و مقیاسپذیر و خدمات ML سرتاسر را برای کسبوکار شرکت ارائه میدهد. ما در حال تحقیق در مورد روش هایی برای بهینه سازی سیستم های استنتاج ML خود برای کاهش هزینه ها، بدون افزایش زمان پاسخ بودیم. زمانی که AWS راه اندازی شد استنتاج AWS، یک تراشه استنتاج ML با کارایی بالا که توسط AWS ساخته شده است، با تیم حساب AWS خود درگیر شدیم تا آزمایش کنیم که آیا AWS Inferentia می تواند اهداف بهینه سازی ما را برآورده کند یا خیر. ما چندین اثبات مفهوم را اجرا کردیم که منجر به هزینه استنتاج تا 60 درصد کمتر در مقایسه با نمونههای EC4 G2dn مبتنی بر GPU T4 و تأخیر استنتاج تا 25 درصد کمتر شد. برای تحقق این صرفه جویی در هزینه و بهبود عملکرد، تصمیم گرفتیم مدل هایی را بر اساس AWS Inferentia مستقر کنیم. ابر محاسبه الاستیک آمازون (Amazon EC2) نمونه های Inf1 در تولید.
نمودار زیر بهبود تاخیر را برای یکی از مدلهای تشخیص چهره ما نشان میدهد که قبلاً روی پردازندههای گرافیکی با Tensor RT مستقر شده بود. متوسط تأخیر 20 درصد (از 50 میلی ثانیه به 40 میلی ثانیه) و تأخیر p99 25 درصد (از 200 میلی ثانیه به 150 میلی ثانیه) کاهش یافت.
در این پست، نحوه صرفهجویی در هزینههای استنتاج و کاهش تأخیر و افزایش توان با استفاده از AWS Inferentia را به اشتراک میگذاریم.
در جستجوی محاسبات با کارایی بالا و مقرون به صرفه
تیم ByteDance AML بر تحقیق و اجرای سیستم های پیشرفته ML و منابع محاسباتی ناهمگن مورد نیاز آنها تمرکز دارد. ما سیستم های آموزش و استنتاج در مقیاس بزرگ را برای طیف گسترده ای از مدل های توصیه کننده، پردازش زبان طبیعی (NLP) و بینایی کامپیوتری (CV) ایجاد می کنیم. این مدل ها بسیار پیچیده هستند و حجم عظیمی از داده ها را از بسیاری از پلتفرم های محتوایی که ByteDance اجرا می کند، پردازش می کنند. استقرار این مدل ها به منابع GPU قابل توجهی نیاز دارد، چه در فضای ابری و چه در محل. بنابراین، هزینه های محاسباتی برای این سیستم های استنتاج بسیار بالا است.
ما به دنبال کاهش این هزینهها بدون تأثیر بر توان عملیاتی یا تأخیر بودیم. ما انعطافپذیری ابر و چرخه تحویل سریعتر را میخواستیم، که بسیار کوتاهتر از آنچه برای راهاندازی در محل لازم است، است. و اگرچه ما آماده بودیم تا گزینههای جدیدی را برای ML تسریع یافته بررسی کنیم، اما همچنین میخواستیم یک تجربه توسعهدهنده یکپارچه داشته باشیم.
ما از تیم AWS خود یاد گرفتیم که نمونه های EC2 Inf1 مبتنی بر AWS Inferentia استنتاج ML با کارایی بالا را با کمترین هزینه به ازای هر استنتاج در فضای ابری ارائه می دهند. ما کنجکاو شدیم که آنها را کاوش کنیم و متوجه شدیم که برای موارد استفاده ما مناسب هستند، زیرا ما یادگیری ماشینی قابل توجهی را روی مقادیر زیادی از داده های تصویر، شی، گفتار و متن اجرا می کنیم. آنها قطعاً برای اهداف ما مناسب بودند، زیرا با توجه به پیچیدگی مدلها و حجم پیشبینیهای روزانه، میتوانستیم صرفهجویی زیادی در هزینهها داشته باشیم. علاوه بر این، AWS Inferentia دارای مقدار زیادی حافظه روی تراشه است که میتوانید از آن برای ذخیرهسازی مدلهای بزرگ به جای ذخیره کردن آنها در تراشه استفاده کنید. ما متوجه شدیم که این میتواند تأثیر قابلتوجهی در کاهش تأخیر استنتاج داشته باشد، زیرا هستههای پردازشی AWS Inferentia، به نام NeuronCores، دسترسی پرسرعتی به مدلهایی دارند که در حافظه روی تراشه ذخیره میشوند و توسط حافظه خارج از تراشه محدود نمیشوند. پهنای باند
در نهایت، پس از ارزیابی چندین گزینه، نمونههای EC2 Inf1 را برای نسبت عملکرد/قیمت بهتر در مقایسه با نمونههای G4dn و NVIDIA T4 در محل انتخاب کردیم. ما در چرخه ای از تکرار مداوم با تیم AWS برای باز کردن قیمت و مزایای عملکرد Inf1 درگیر شدیم.
استقرار بارهای کاری استنتاج در AWS Inferentia
شروع کار با AWS Inferentia با استفاده از AWS Neuron SDK شامل دو مرحله است: کامپایل کد مدل و استقرار در نمونه های Inf1. همانطور که در هنگام انتقال مدلهای ML به زیرساختهای جدید معمول است، ما با چالشهایی مواجه بودیم. ما توانستیم با پشتکار و حمایت تیم AWS خود بر این چالش ها غلبه کنیم. در بخشهای بعدی، چندین نکته و مشاهدات مفید را بر اساس تجربه خود در استفاده از بارهای کاری استنتاج در AWS Inferentia به اشتراک میگذاریم.
مدل کنفورمر برای OCR
مدل conformer تشخیص کاراکتر نوری (OCR) ما متن را در تصاویر تشخیص داده و می خواند. ما روی چندین بهینهسازی کار کردیم تا عملکرد بالا (QPS) را برای اندازههای دستهای مختلف به دست آوریم، در حالی که تأخیر را پایین نگه داریم. برخی از بهینه سازی های کلیدی در زیر ذکر شده است:
- بهینه سازی کامپایلر – به طور پیشفرض، Inferentia در ورودیهایی با طول توالی ثابت بهترین عملکرد را دارد، که چالشی را بهعنوان ثابت نبودن طول دادههای متنی ایجاد میکند. برای غلبه بر این، مدل خود را به دو بخش تقسیم می کنیم: رمزگذار و رمزگشا. ما این دو مدل فرعی را جداگانه کامپایل کردیم و سپس آنها را از طریق TorchScript در یک مدل ادغام کردیم. با اجرای جریان کنترل حلقه for بر روی CPU ها، این رویکرد پشتیبانی از طول توالی متغیر در Inferentia را فعال کرد.
- عملکرد پیچیدگی عمیق - ما با یک گلوگاه DMA در عملیات پیچیدگی عمقی مواجه شدیم که به شدت توسط مدل conformer ما استفاده می شود. ما از نزدیک با تیم AWS Neuron کار کردیم تا گلوگاه عملکرد دسترسی DMA را شناسایی و حل کنیم، که عملکرد این عملیات را بهبود بخشید و عملکرد کلی مدل OCR ما را بهبود بخشید.
ما دو نوع مدل جدید برای بهینه سازی استقرار خود در Inferentia ایجاد کردیم:
- رمزگذار/رمزگشا ترکیبی و رول نشده - به جای استفاده از رمزگذار و رمزگشای کامپایل شده مستقل، رمزگذار و رمزگشای کاملاً باز شده را در یک مدل ترکیب کردیم و این مدل را به عنوان یک NEFF کامپایل کردیم. باز کردن رسیور این امکان را فراهم می کند تا تمام جریان کنترل رمزگشا را در Inferentia بدون استفاده از هیچ گونه عملیات CPU اجرا کنید. با این رویکرد، هر تکرار رمزگشا دقیقاً از مقدار محاسبه لازم برای آن توکن استفاده می کند. این رویکرد عملکرد را بهبود می بخشد زیرا ما محاسبات اضافی را که قبلاً با ورودی های padding معرفی شده بود به طور قابل توجهی کاهش می دهیم. علاوه بر این، هیچ انتقال داده از Inferentia به CPU بین تکرارهای رمزگشا لازم نیست، که به شدت زمان I/O را کاهش می دهد. این نسخه از مدل از توقف زودهنگام پشتیبانی نمی کند.
- رمزگشای بدون رول پارتیشن بندی شده - مشابه مدل ترکیبی کاملاً باز شده، این نوع مدل چندین تکرار رمزگشا را باز می کند و آنها را به عنوان یک اجرا کامپایل می کند (اما رمزگذار را شامل نمی شود). برای مثال، برای حداکثر طول توالی 75، میتوانیم رمزگشا را به 3 پارتیشن باز کنیم که توکنهای 1-25، 26-50 و 51-75 را محاسبه میکنند. از نظر ورودی/خروجی، این نیز به طور قابل توجهی سریعتر است، زیرا نیازی به انتقال خروجی رمزگذار یک بار در هر تکرار نداریم. در عوض، خروجی ها فقط یک بار در هر پارتیشن رمزگشا منتقل می شوند. این نسخه از مدل از توقف اولیه پشتیبانی می کند، اما فقط در مرزهای پارتیشن. مرزهای پارتیشن را می توان برای هر برنامه خاص تنظیم کرد تا اطمینان حاصل شود که اکثر درخواست ها فقط یک پارتیشن را اجرا می کنند.
برای بهبود بیشتر عملکرد، بهینهسازیهای زیر را برای کاهش استفاده از حافظه یا بهبود کارایی دسترسی انجام دادیم:
- کپی کردن تانسور و کاهش کپی – این یک بهینه سازی کامپایلر است که با استفاده مجدد از تانسورها برای بهبود کارایی فضا، اندازه مدلهای رول نشده و تعداد دستورالعملها/دسترسی به حافظه را به میزان قابل توجهی کاهش میدهد.
- دستورالعمل کاهش یافته است – این یک بهینه سازی کامپایلر است که با نسخه بدون پد رمزگشا استفاده می شود تا تعداد کل دستورالعمل ها را به میزان قابل توجهی کاهش دهد.
- تکثیر چند هسته ای - این یک بهینه سازی زمان اجرا است که جایگزینی برای deduplication تانسور است. با استفاده از این گزینه، تمام مدل های چند هسته ای به طور قابل توجهی فضای کارآمدتری خواهند داشت.
مدل ResNet50 برای طبقه بندی تصاویر
ResNet-50 یک مدل یادگیری عمیق از پیش آموزش دیده برای طبقه بندی تصاویر است. این یک شبکه عصبی کانولوشنال (CNN یا ConvNet) است که بیشتر برای تجزیه و تحلیل تصاویر بصری استفاده می شود. ما از تکنیک های زیر برای بهبود عملکرد این مدل در Inferentia استفاده کردیم:
- تبدیل مدل – بسیاری از مدلهای ByteDance در قالب ONNX صادر میشوند، که Inferentia در حال حاضر به صورت بومی از آن پشتیبانی نمیکند. برای مدیریت این مدلهای ONNX، تیم AWS Neuron اسکریپتهایی برای تبدیل مدلهای ما از قالب ONNX به مدلهای PyTorch ارائه کرد که میتوان مستقیماً با استفاده از نورون مشعل برای Inferentia کامپایل کرد.
- بهینه سازی عملکرد - ما از نزدیک با آن کار کردیم نورون AWS تیمی برای تنظیم اکتشافی زمانبندی در کامپایلر برای بهینهسازی عملکرد مدلهای ResNet-50 ما.
مدل چند وجهی برای تعدیل محتوا
مدل یادگیری عمیق چندوجهی ما ترکیبی از چندین مدل جداگانه است. اندازه این مدل نسبتا بزرگ است که باعث خرابی بارگذاری مدل در Inferentia شده است. تیم AWS Neuron با استفاده از اشتراک گذاری وزن برای کاهش استفاده از حافظه دستگاه، با موفقیت این مشکل را حل کرد. تیم Neuron این ویژگی کاهش وزن را در کتابخانه Neuron libnrt منتشر کرد و همچنین Neuron Tools را برای معیارهای دقیق تر بهبود داد. قبل از اجرای استنتاج، میتوان با تنظیم متغیر محیطی زیر، ویژگی کاهش وزن در زمان اجرا را فعال کرد:
NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1
Neuron SDK به روز شده، مصرف کلی حافظه مدل های تکراری ما را کاهش داد، که ما را قادر ساخت مدل چند وجهی خود را برای استنتاج چند هسته ای مستقر کنیم.
مهاجرت مدل های بیشتر به AWS Inferentia
در ByteDance، ما همچنان به استقرار مدلهای یادگیری عمیق خلاقانه برای ارائه تجربیات کاربر لذتبخش به تقریباً ۲ میلیارد کاربر فعال ماهانه ادامه میدهیم. با توجه به مقیاس گسترده ای که در آن فعالیت می کنیم، ما دائماً به دنبال راه هایی برای صرفه جویی در هزینه ها و بهینه سازی عملکرد هستیم. ما به مهاجرت مدل ها به AWS Inferentia ادامه خواهیم داد تا از عملکرد بالا و کارایی آن بهره مند شویم. همچنین میخواهیم AWS انواع بیشتری از نمونههای مبتنی بر استنتاج AWS را راهاندازی کند، مانند نمونههایی با vCPU بیشتر برای کارهای پیشپردازش. در آینده، ByteDance امیدوار است شاهد نوآوری های سیلیکونی بیشتری از AWS باشد تا بهترین عملکرد قیمت را برای برنامه های کاربردی ML ارائه دهد.
اگر مایلید در مورد اینکه چگونه AWS Inferentia میتواند به شما در صرفهجویی در هزینهها و در عین حال بهینهسازی عملکرد برای برنامههای استنتاج خود کمک کند، بیشتر بدانید، از نمونه های آمازون EC2 Inf1 صفحه محصول.
درباره نویسنده
مینگهوی یو رهبر ارشد تیم یادگیری ماشین برای استنتاج در ByteDance است. حوزه تمرکز او شتاب محاسباتی هوش مصنوعی و سیستم یادگیری ماشینی است. او علاقه زیادی به محاسبات ناهمگن و معماری کامپیوتر در دوران پس از مور دارد. در اوقات فراغت، بسکتبال و تیراندازی با کمان را دوست دارد.
جیانژه شیائو یک تیم مهندس نرم افزار ارشد در تیم AML در ByteDance است. کار فعلی او بر کمک به تیم تجاری برای سرعت بخشیدن به فرآیند استقرار مدل و بهبود عملکرد استنتاج مدل متمرکز است. خارج از محل کار از نواختن پیانو لذت می برد.
تیان شی یک معمار ارشد راه حل در AWS است. حوزه تمرکز او تجزیه و تحلیل داده، یادگیری ماشین و بدون سرور است. او مشتاق کمک به مشتریان در طراحی و ساخت راه حل های قابل اعتماد و مقیاس پذیر در فضای ابری است. در اوقات فراغت از شنا و مطالعه لذت می برد.
جیا دونگ مدیر راه حل های مشتری در AWS است. او از یادگیری خدمات AWS AI/ML و کمک به مشتریان برای رسیدن به نتایج تجاری خود با ایجاد راه حل برای آنها لذت می برد. جیا خارج از محل کار از سفر، یوگا و فیلم لذت می برد.
جاناتان لانت یک مهندس نرم افزار در آمازون با تمرکز بر توسعه چارچوب ML است. او در طول دوران حرفهای خود در وسعت کامل نقشهای علم داده از جمله توسعه مدل، استقرار زیرساخت و بهینهسازی سختافزاری خاص کار کرده است.
جاشوا حنان یک مهندس یادگیری ماشین در آمازون است. او روی بهینهسازی مدلهای یادگیری عمیق برای بینایی کامپیوتری در مقیاس بزرگ و برنامههای پردازش زبان طبیعی کار میکند.
شروتی کپرکار مدیر ارشد بازاریابی محصول در AWS است. او به مشتریان کمک میکند تا زیرساختهای محاسباتی تسریعشده EC2 را برای نیازهای یادگیری ماشین خود کاوش، ارزیابی و اتخاذ کنند.
- AI
- آی هنر
- مولد هنر ai
- ربات ai
- هوش مصنوعی
- گواهی هوش مصنوعی
- هوش مصنوعی در بانکداری
- ربات هوش مصنوعی
- ربات های هوش مصنوعی
- نرم افزار هوش مصنوعی
- استنتاج AWS
- آموزش ماشین AWS
- بلاکچین
- کنفرانس بلاک چین ai
- coingenius
- هوش مصنوعی محاوره ای
- کنفرانس کریپتو ai
- دل-ه
- یادگیری عمیق
- گوگل ai
- فراگیری ماشین
- افلاطون
- افلاطون آی
- هوش داده افلاطون
- بازی افلاطون
- PlatoData
- بازی پلاتو
- مقیاس Ai
- نحو
- زفیرنت