چگونه جستجوی آمازون با AWS Inferentia هزینه های استنتاج ML را تا 85 درصد کاهش داد

موتور جستجوی محصولات آمازون میلیاردها محصول را نمایه می کند، به صدها میلیون مشتری در سراسر جهان خدمات ارائه می دهد و یکی از پر استفاده ترین خدمات در جهان است. تیم جستجوی آمازون فناوری یادگیری ماشینی (ML) را توسعه می‌دهد که به آن قدرت می‌دهد Amazon.com موتور جستجو و به مشتریان کمک می کند تا بدون زحمت جستجو کنند. برای ارائه یک تجربه عالی به مشتری و عملکرد در مقیاس وسیع مورد نیاز Amazon.com موتور جستجو، این تیم همیشه به دنبال راه‌هایی برای ساختن سیستم‌های مقرون‌به‌صرفه‌تر با تأخیر در زمان واقعی و نیازمندی‌های توان عملیاتی است. این تیم به طور مداوم سخت افزار و کامپایلرهای بهینه شده برای یادگیری عمیق را بررسی می کند تا آموزش مدل و استنتاج را تسریع بخشد، در حالی که هزینه های عملیاتی را در سراسر صفحه کاهش می دهد.

در این پست، نحوه استفاده از جستجوی آمازون را شرح می دهیم استنتاج AWS، یک هدف شتاب دهنده با کارایی بالا که توسط AWS برای تسریع بارهای کاری استنتاج یادگیری عمیق ساخته شده است. این تیم استنتاج ML با تأخیر کم را با مدل‌های NLP مبتنی بر ترانسفورماتور روی مبتنی بر AWS Inferentia اجرا می‌کند. ابر محاسبه الاستیک آمازون (Amazon EC2) Inf1 نمونه‌هایی دارد و تا 85% در هزینه‌های زیرساخت صرفه‌جویی می‌کند و در عین حال توان عملیاتی قوی و عملکرد تأخیر را حفظ می‌کند.

یادگیری عمیق برای پیش بینی قصد تکراری و پرس و جو

جستجو در بازار آمازون یک مشکل چند کاره و چند وجهی است که با چندین ورودی مانند ASIN (شماره شناسایی استاندارد آمازون، یک عدد الفبایی 10 رقمی که محصولات را به طور منحصربه‌فرد شناسایی می‌کند)، تصاویر محصول، توضیحات متنی و پرس و جوها سروکار دارد. برای ایجاد یک تجربه کاربری مناسب، پیش بینی های بسیاری از مدل ها برای جنبه های مختلف جستجو استفاده می شود. این یک چالش است زیرا سیستم جستجو دارای هزاران مدل با ده ها هزار تراکنش در ثانیه (TPS) در اوج بار است. ما بر دو بخش از آن تجربه تمرکز می کنیم:

  • پیش بینی های تکراری درک شده توسط مشتری – برای نشان دادن مرتبط‌ترین فهرست محصولاتی که با درخواست کاربر مطابقت دارند، مهم است که محصولاتی را شناسایی کنید که مشتریان برای تشخیص آن‌ها مشکل دارند.
  • پیش بینی قصد پرس و جو - برای تطبیق صفحه جستجو و طرح محصول برای مطابقت بهتر با آنچه مشتری به دنبال آن است، مهم است که هدف و نوع درخواست کاربر را پیش بینی کنید (به عنوان مثال، یک پرس و جو مرتبط با رسانه، درخواست کمک، و انواع دیگر پرس و جو)

هر دوی این پیش‌بینی‌ها با استفاده از معماری‌های مدل ترانسفورماتور، یعنی مدل‌های مبتنی بر BERT انجام می‌شوند. در واقع، هر دو مدل مبتنی بر BERT یکسان را به عنوان مبنا به اشتراک می‌گذارند، و هر کدام یک سر طبقه‌بندی/رگرسیون را در بالای این ستون فقرات قرار می‌دهند.

پیش‌بینی تکراری ویژگی‌های متنی مختلفی را برای یک جفت محصول ارزیابی‌شده به عنوان ورودی (مانند نوع محصول، عنوان، توضیحات و غیره) در نظر می‌گیرد و به‌طور دوره‌ای برای مجموعه داده‌های بزرگ محاسبه می‌شود. این مدل به صورت چند کاره آموزش داده شده است. مشاغل پردازش Amazon SageMaker برای اجرای دوره‌ای این بارهای کاری دسته‌ای استفاده می‌شود تا راه‌اندازی آن‌ها به‌طور خودکار انجام شود و فقط برای زمان پردازش استفاده شده پرداخت شود. برای این مورد استفاده از حجم کار دسته‌ای، نیاز برای خروجی استنتاج 8,800 TPS کل بود.

پیش‌بینی قصد، درخواست متنی کاربر را به عنوان ورودی دریافت می‌کند و در زمان واقعی برای ارائه پویا به ترافیک روزمره و بهبود تجربه کاربر در بازار آمازون مورد نیاز است. این مدل بر روی یک هدف طبقه بندی چند کلاسه آموزش داده شده است. سپس این مدل بر روی آن مستقر می شود سرویس کانتینر الاستیک آمازون (Amazon ECS)، که مقیاس خودکار سریع و تعریف و مدیریت آسان استقرار. از آنجایی که این یک مورد استفاده بلادرنگ است، برای اطمینان از تجربه کاربری لذت بخش، تاخیر P99 باید کمتر از 10 میلی ثانیه باشد.

AWS Inferentia و AWS Neuron SDK

نمونه های EC2 Inf1 توسط AWS Inferentia، اولین هدف شتاب دهنده ML ساخته شده توسط AWS برای سرعت بخشیدن به بارهای کاری استنتاج یادگیری عمیق طراحی شده اند. نمونه‌های Inf1 تا 2.3 برابر بازده بالاتر و تا 70 درصد هزینه کمتر در هر استنتاج نسبت به نمونه‌های EC2 مبتنی بر GPU قابل مقایسه ارائه می‌دهند. می‌توانید با استفاده از چارچوب انتخابی خود (PyTorch، TensorFlow، MXNet) مدل‌های خود را آموزش دهید و سپس به راحتی آنها را در AWS Inferentia مستقر کنید تا از بهینه‌سازی‌های عملکرد داخلی بهره ببرید. می‌توانید طیف گسترده‌ای از انواع مدل‌ها را با استفاده از نمونه‌های Inf1، از تشخیص تصویر، تشخیص اشیا، پردازش زبان طبیعی (NLP) و مدل‌های توصیه‌گر مدرن مستقر کنید.

نورون AWS یک کیت توسعه نرم افزار (SDK) متشکل از یک کامپایلر، زمان اجرا و ابزارهای پروفایل است که عملکرد استنتاج ML نمونه های EC2 Inf1 را بهینه می کند. Neuron به طور بومی با فریم ورک های محبوب ML مانند TensorFlow و PyTorch یکپارچه شده است. بنابراین، می‌توانید مدل‌های یادگیری عمیق را در AWS Inferentia با همان APIهای آشنا که توسط چارچوب انتخابی شما ارائه می‌شود، مستقر کنید و از افزایش عملکرد و کمترین هزینه به ازای هر استنتاج در فضای ابری بهره‌مند شوید.

از زمان راه اندازی، Neuron SDK به افزایش وسعت مدل های پشتیبانی شده خود ادامه داده و در عین حال به بهبود عملکرد و کاهش هزینه های استنتاج ادامه داده است. این شامل مدل‌های NLP (BERT)، مدل‌های طبقه‌بندی تصویر (ResNet، VGG) و مدل‌های تشخیص شی (OpenPose و SSD) می‌شود.

برای تأخیر کم، توان عملیاتی بالا و صرفه جویی در هزینه، روی نمونه های Inf1 مستقر شوید

تیم جستجوی آمازون می‌خواست در هزینه‌ها صرفه‌جویی کند و در عین حال نیاز به توان عملیاتی بالای خود در پیش‌بینی تکراری، و نیاز تاخیر کم در پیش‌بینی قصد پرس و جو را برآورده کند. آنها تصمیم گرفتند بر روی نمونه های Inf1 مبتنی بر AWS Inferentia مستقر شوند و نه تنها الزامات عملکرد بالا را برآورده کردند، بلکه تا 85٪ در هزینه های استنتاج صرفه جویی کردند.

پیش بینی های تکراری درک شده توسط مشتری

قبل از استفاده از Inf1، یک برنامه اختصاصی آمازون EMR خوشه با استفاده از نمونه های مبتنی بر CPU در حال اجرا بود. بدون تکیه بر شتاب سخت‌افزاری، تعداد زیادی نمونه برای برآوردن نیاز توان عملیاتی بالای 8,800 تراکنش در هر ثانیه ضروری بود. تیم به نمونه‌های inf1.6xlarge، هر کدام با 4 شتاب‌دهنده AWS Inferentia و 16 NeuronCore (4 هسته در هر تراشه AWS Inferentia) روی آوردند. آنها مدل مبتنی بر ترانسفورماتور را برای یک NeuronCore ردیابی کردند و یک حالت را برای هر NeuronCore بارگذاری کردند تا توان عملیاتی را به حداکثر برسانند. آنها با بهره‌گیری از 16 هسته‌های عصبی موجود، هزینه‌های استنباط را تا 85 درصد کاهش دادند (بر اساس قیمت‌گذاری بر اساس تقاضای عمومی EC2 آمازون).

پیش بینی قصد پرس و جو

با توجه به نیاز به تأخیر P99 10 میلی ثانیه یا کمتر، تیم این مدل را در هر NeuronCore موجود در نمونه های inf1.6xlarge بارگذاری کرد. شما به راحتی می توانید این کار را با PyTorch Neuron با استفاده از مشعل. نورون.داده موازی API. با استقرار Inf1، تأخیر مدل 3 میلی‌ثانیه، تأخیر انتها به انتها تقریباً 10 میلی‌ثانیه بود و حداکثر توان عملیاتی در اوج بار به 16,000 TPS رسید.

با کامپایل نمونه و کد استقرار شروع کنید

در زیر چند نمونه کد وجود دارد که به شما کمک می‌کند تا نمونه‌های Inf1 را شروع کنید و مانند تیم جستجوی آمازون از عملکرد و مزایای هزینه آگاه شوید. ما نحوه کامپایل و انجام استنتاج با یک مدل PyTorch را با استفاده از PyTorch Neuron.

ابتدا مدل با کامپایل می شود torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

برای لیست کامل آرگومان های ممکن به trace روش، رجوع به PyTorch-Neuron trace Python API. همانطور که می بینید، آرگومان های کامپایلر را می توان به torch.neuron API به طور مستقیم. همه اپراتورهای FP32 به آنها فرستاده می شوند BF16 with --fp32-cast=all، با حفظ محدوده دینامیکی، بالاترین عملکرد را ارائه می دهد. گزینه‌های ریخته‌گری بیشتری در دسترس هستند تا به شما امکان می‌دهند عملکرد را برای مدل‌سازی مبادله دقیق کنترل کنید. مدل‌های مورد استفاده برای هر دو مورد استفاده برای یک NeuronCore منفرد (شماره خط لوله).

سپس مدل را روی Inferentia بارگذاری می کنیم torch.jit.loadو از آن برای پیش بینی استفاده کنید. را زمان اجرا نورون به طور خودکار مدل را در NeuronCores بارگذاری می کند.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

نتیجه

تیم جستجوی آمازون توانست با استفاده از نمونه‌های Inf85 مبتنی بر AWS Inferentia، تحت ترافیک سنگین و الزامات عملکرد سخت، هزینه‌های استنتاج خود را تا ۸۵ درصد کاهش دهد. AWS Inferentia و Neuron SDK انعطاف‌پذیری را برای بهینه‌سازی فرآیند استقرار جدا از آموزش و ارائه یک منحنی یادگیری سطحی از طریق ابزارهای گرد و APIهای چارچوب آشنا به تیم ارائه کردند.

با شروع با کد نمونه ارائه شده در این پست، می توانید عملکرد و مزایای هزینه را باز کنید. همچنین، انتها به انتها را بررسی کنید آموزش برای اجرای مدل های ML روی Inferentia با PyTorch و TensorFlow.


درباره نویسندگان

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.ژائو مورا یک معمار راه حل های تخصصی AI/ML در خدمات وب آمازون است. او بیشتر بر موارد استفاده از NLP و کمک به مشتریان برای بهینه سازی آموزش و استقرار مدل یادگیری عمیق متمرکز است. او همچنین یکی از حامیان فعال سخت افزارهای تخصصی ML و راه حل های ML با کد پایین است.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.ویچی ژانگ مدیر مهندسی نرم افزار در Search M5 است، جایی که در تولید مدل های بزرگ برای برنامه های یادگیری ماشین آمازون کار می کند. علایق او شامل بازیابی اطلاعات و زیرساخت های یادگیری ماشینی است.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.جیسون کارلسون یک مهندس نرم افزار برای توسعه خطوط لوله یادگیری ماشین برای کمک به کاهش تعداد نمایش های جستجوی سرقت شده به دلیل موارد تکراری درک شده توسط مشتری است. او بیشتر با Apache Spark، AWS و PyTorch برای کمک به استقرار و تغذیه/پردازش داده‌ها برای مدل‌های ML کار می‌کند. در اوقات فراغتش دوست دارد بخواند و به دویدن برود.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.شائوهوی شی یک SDE در تیم Search Query Understanding Infra است. او تلاش برای ایجاد خدمات استنتاج آنلاین یادگیری عمیق در مقیاس بزرگ با تأخیر کم و در دسترس بودن بالا را رهبری می کند. خارج از محل کار، او از اسکی و کشف غذاهای خوب لذت می برد.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.ژوچی ژانگ یک مهندس توسعه نرم افزار در تیم Search Query Understanding Infra است. او بر روی ساخت چارچوب های ارائه مدل برای بهبود تاخیر و توان عملیاتی برای خدمات استنتاج آنلاین یادگیری عمیق کار می کند. خارج از محل کار، او بازی بسکتبال، اسنوبورد و رانندگی را دوست دارد.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.هاووی سان یک مهندس نرم افزار در تیم Search Query Understanding Infra است. او روی طراحی API ها و زیرساخت هایی کار می کند که از خدمات استنتاج آنلاین یادگیری عمیق پشتیبانی می کند. علایق او شامل طراحی API سرویس، راه اندازی زیرساخت و نگهداری است. خارج از محل کار، او از دویدن، پیاده روی و مسافرت لذت می برد.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.جاسپریت سینگ یک دانشمند کاربردی در تیم M5 است، جایی که او روی مدل های پایه در مقیاس بزرگ کار می کند تا تجربه خرید مشتری را بهبود بخشد. علایق تحقیقاتی او شامل یادگیری چند وظیفه ای، بازیابی اطلاعات و یادگیری بازنمایی است.

چگونه جستجوی آمازون هزینه های استنتاج ML را تا 85 درصد با هوش داده AWS Inferentia PlatoBlockchain کاهش داد. جستجوی عمودی Ai.شروتی کپرکار مدیر ارشد بازاریابی محصول در AWS است. او به مشتریان کمک می‌کند تا زیرساخت‌های محاسباتی تسریع‌شده EC2 را برای نیازهای یادگیری ماشین خود کاوش، ارزیابی و اتخاذ کنند.

تمبر زمان:

بیشتر از آموزش ماشین AWS