كيف خفضت Amazon Search تكاليف الاستدلال الآلي بنسبة 85٪ باستخدام AWS Inferentia

يقوم محرك بحث منتجات أمازون بفهرسة مليارات المنتجات ، ويخدم مئات الملايين من العملاء في جميع أنحاء العالم ، وهو أحد أكثر الخدمات استخدامًا في العالم. يطور فريق Amazon Search تقنية التعلم الآلي (ML) التي تدعم Amazon.com محرك البحث ويساعد العملاء على البحث دون عناء. لتقديم تجربة عملاء رائعة والعمل على النطاق الهائل الذي تتطلبه Amazon.com محرك البحث ، يبحث هذا الفريق دائمًا عن طرق لبناء أنظمة أكثر فعالية من حيث التكلفة مع زمن انتقال في الوقت الفعلي ومتطلبات الإنتاجية. يستكشف الفريق باستمرار الأجهزة والمجمعات المحسّنة للتعلم العميق لتسريع تدريب النموذج والاستدلال ، مع تقليل التكاليف التشغيلية في جميع المجالات.

في هذا المنشور ، نصف كيفية استخدام Amazon Search استدلال AWS، غرض مسرّع عالي الأداء تم إنشاؤه بواسطة AWS لتسريع أعباء عمل استدلال التعلم العميق. يدير الفريق استنتاج ML منخفض الكمون باستخدام نماذج البرمجة اللغوية العصبية المستندة إلى Transformer على أساس AWS Inferentia الأمازون الحوسبة المرنة السحابية (Amazon EC2) مثيلات Inf1 ، وتوفر ما يصل إلى 85٪ من تكاليف البنية التحتية مع الحفاظ على أداء قوي في الإنتاجية ووقت الاستجابة.

التعلم العميق للتنبؤ بالنوايا المكررة والاستعلام

يعد البحث في Amazon Marketplace مشكلة متعددة المهام ومتعددة الوسائط ، وتتعامل مع العديد من المدخلات مثل ASINs (رقم تعريف Amazon القياسي ، وهو رقم أبجدي رقمي مكون من 10 أرقام يحدد المنتجات بشكل فريد) ، وصور المنتج ، والأوصاف النصية ، والاستعلامات. لإنشاء تجربة مستخدم مخصصة ، يتم استخدام التنبؤات من العديد من النماذج لجوانب مختلفة من البحث. يعد هذا تحديًا لأن نظام البحث يحتوي على آلاف النماذج مع عشرات الآلاف من المعاملات في الثانية (TPS) عند ذروة الحمل. نحن نركز على عنصرين من هذه التجربة:

  • يتصور العملاء توقعات مكررة - لعرض قائمة المنتجات الأكثر صلة والتي تطابق استعلام المستخدم ، من المهم تحديد المنتجات التي يصعب على العملاء التمييز بينها
  • توقع نية الاستعلام - لتكييف صفحة البحث وتخطيط المنتج بما يتناسب بشكل أفضل مع ما يبحث عنه العميل ، من المهم التنبؤ بقصد ونوع استعلام المستخدم (على سبيل المثال ، استعلام متعلق بالوسائط واستعلام تعليمات وأنواع استعلام أخرى)

يتم إجراء كل من هذه التنبؤات باستخدام معماريات نموذج المحولات ، أي النماذج المستندة إلى BERT. في الواقع ، كلاهما يشتركان في نفس النموذج القائم على BERT كأساس ، وكل واحد يكدس تصنيف / انحدار رأسًا على رأس هذا العمود الفقري.

يأخذ التنبؤ المكرر ميزات نصية مختلفة لزوج من المنتجات التي تم تقييمها كمدخلات (مثل نوع المنتج والعنوان والوصف وما إلى ذلك) ويتم حسابه بشكل دوري لمجموعات البيانات الكبيرة. يتم تدريب هذا النموذج من البداية إلى النهاية بطريقة متعددة المهام. وظائف Amazon SageMaker Processing تُستخدم لتشغيل أحمال عمل الدُفعات هذه بشكل دوري لأتمتة إطلاقها والدفع مقابل وقت المعالجة المستخدم فقط. بالنسبة لحالة استخدام عبء العمل على دفعات ، كان متطلب إنتاجية الاستدلال 8,800 إجمالي TPS.

يأخذ توقع النية الاستعلام النصي للمستخدم كمدخلات وهو ضروري في الوقت الفعلي لخدمة حركة المرور اليومية ديناميكيًا وتعزيز تجربة المستخدم في Amazon Marketplace. يتم تدريب النموذج على هدف تصنيف متعدد الفئات. ثم يتم نشر هذا النموذج على خدمة الأمازون المرنة للحاويات (Amazon ECS) ، والذي يتيح إمكانية التحجيم التلقائي السريع وملفات تعريف سهل للنشر وإدارته. نظرًا لأن هذه حالة استخدام في الوقت الفعلي ، فقد تطلب زمن انتقال P99 أقل من 10 مللي ثانية لضمان تجربة مستخدم ممتعة.

AWS Inferentia و AWS Neuron SDK

مثيلات EC2 Inf1 مدعوم من AWS Inferentia ، وهو أول غرض من مسرع تعلم الآلة تم إنشاؤه بواسطة AWS لتسريع أعباء عمل استدلال التعلم العميق. توفر مثيلات Inf1 إنتاجية أعلى بما يصل إلى 2.3 مرة وتكلفة أقل بنسبة تصل إلى 70٪ لكل استنتاج من مثيلات EC2 المماثلة القائمة على وحدة معالجة الرسومات. يمكنك الاستمرار في تدريب نماذجك باستخدام إطار العمل الذي تختاره (PyTorch و TensorFlow و MXNet) ، ثم نشرها بسهولة على AWS Inferentia للاستفادة من تحسينات الأداء المضمنة. يمكنك نشر مجموعة كبيرة من أنواع النماذج باستخدام مثيلات Inf1 ، من التعرف على الصور واكتشاف الكائنات ومعالجة اللغة الطبيعية (NLP) ونماذج التوصية الحديثة.

AWS نيورون عبارة عن مجموعة تطوير برامج (SDK) تتكون من مترجم ووقت تشغيل وأدوات التوصيف التي تعمل على تحسين أداء استدلال ML لمثيلات EC2 Inf1. تم دمج Neuron أصلاً مع أطر ML الشائعة مثل TensorFlow و PyTorch. لذلك ، يمكنك نشر نماذج التعلم العميق على AWS Inferentia باستخدام نفس واجهات برمجة التطبيقات المألوفة التي يوفرها إطار العمل الذي تختاره ، والاستفادة من تعزيز الأداء وأدنى تكلفة للاستدلال في السحابة.

منذ إطلاقها ، استمرت Neuron SDK في زيادة اتساع نطاق النماذج التي تدعمها مع الاستمرار في تحسين الأداء وتقليل تكاليف الاستدلال. يتضمن ذلك نماذج NLP (BERTs) ونماذج تصنيف الصور (ResNet و VGG) ونماذج اكتشاف الكائنات (OpenPose و SSD).

انشر على مثيلات Inf1 لزمن انتقال منخفض وإنتاجية عالية وتوفير في التكاليف

أراد فريق Amazon Search توفير التكاليف مع تلبية متطلبات الإنتاجية العالية الخاصة بهم فيما يتعلق بتنبؤ الازدواجية ، ومتطلبات زمن الوصول المنخفض للتنبؤ بقصد الاستعلام. لقد اختاروا النشر على مثيلات Inf1 المستندة إلى AWS Inferentia ولم يلبوا متطلبات الأداء العالي فحسب ، بل وفروا أيضًا ما يصل إلى 85٪ من تكاليف الاستدلال.

يتصور العملاء توقعات مكررة

قبل استخدام Inf1 ، تم تخصيص ملف أمازون EMR الكتلة كانت تعمل باستخدام مثيلات تعتمد على وحدة المعالجة المركزية. دون الاعتماد على تسريع الأجهزة ، كان من الضروري وجود عدد كبير من المثيلات لتلبية متطلبات الإنتاجية العالية البالغة 8,800 معاملة إجمالية في الثانية. قام الفريق بالتبديل إلى مثيلات inf1.6xlarge ، ولكل منها 4 مسرعات AWS Inferentia و 16 NeuronCores (4 مراكز لكل شريحة AWS Inferentia). قاموا بتتبع النموذج القائم على Transformer لـ NeuronCore واحد وقاموا بتحميل وضع واحد لكل NeuronCore لزيادة الإنتاجية. من خلال الاستفادة من 16 NeuronCores المتاحة ، فقد خفضوا تكاليف الاستدلال بنسبة 85٪ (بناءً على تسعير Amazon EC2 العام الحالي عند الطلب).

توقع نية الاستعلام

نظرًا لمتطلبات زمن الانتقال P99 البالغة 10 مللي ثانية أو أقل ، قام الفريق بتحميل النموذج إلى كل NeuronCore متاح في مثيلات inf1.6xlarge. يمكنك القيام بذلك بسهولة باستخدام PyTorch Neuron باستخدام ملف torch.neuron.Data متوازي API. مع نشر Inf1 ، كان زمن انتقال النموذج 3 مللي ثانية ، وكان زمن الانتقال من طرف إلى طرف حوالي 10 مللي ثانية ، ووصل الحد الأقصى للإنتاجية عند ذروة الحمل إلى 16,000 TPS.

ابدأ بتجميع العينة ورمز النشر

فيما يلي بعض التعليمات البرمجية النموذجية لمساعدتك على البدء في مثيلات Inf1 وإدراك مزايا الأداء والتكلفة مثل فريق Amazon Search. نعرض كيفية تجميع وتنفيذ الاستدلال باستخدام نموذج PyTorch ، باستخدام بايتورتش الخلايا العصبية.

أولاً ، تم تجميع النموذج باستخدام 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 واجهة برمجة تطبيقات Python. كما ترى، حجج المترجم يمكن تمريرها إلى 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)

وفي الختام

تمكن فريق Amazon Search من تقليل تكاليف الاستدلال بنسبة 85٪ باستخدام مثيلات Inf1 المستندة إلى AWS Inferentia ، في ظل حركة مرور كثيفة ومتطلبات أداء متطلبة. لقد وفرت AWS Inferentia و Neuron SDK للفريق المرونة لتحسين عملية النشر بشكل منفصل عن التدريب ، وطرح منحنى تعليمي ضحل عبر أدوات شاملة وواجهات برمجة تطبيقات مألوفة.

يمكنك إطلاق العنان لمزايا الأداء والتكلفة من خلال البدء باستخدام نموذج التعليمات البرمجية المقدم في هذا المنشور. أيضًا ، تحقق من النهاية إلى النهاية الدروس لتشغيل نماذج ML على Inferentia مع PyTorch و TensorFlow.


عن المؤلفين

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.جواو مورا هو مهندس حلول متخصص في الذكاء الاصطناعي / التعلم الآلي في Amazon Web Services. يركز في الغالب على حالات استخدام البرمجة اللغوية العصبية ومساعدة العملاء على تحسين تدريب نموذج التعلم العميق ونشره. وهو أيضًا مؤيد نشط للأجهزة المتخصصة في ML وحلول ML ذات الشفرة المنخفضة.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.ويتشى تشانغ هو مدير هندسة البرمجيات في Search M5 ، حيث يعمل على إنتاج نماذج واسعة النطاق لتطبيقات التعلم الآلي من Amazon. تشمل اهتماماته استرجاع المعلومات والبنية التحتية للتعلم الآلي.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.جايسون كارلسون هو مهندس برمجيات لتطوير خطوط أنابيب التعلم الآلي للمساعدة في تقليل عدد مرات ظهور البحث المسروقة بسبب التكرارات التي يتصورها العميل. يعمل في الغالب مع Apache Spark و AWS و PyTorch للمساعدة في نشر وتغذية / معالجة البيانات لنماذج ML. في أوقات فراغه ، يحب القراءة ويواصل الجري.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.شاوهوي شي هو SDE في فريق Infra الخاص بسؤال البحث. يقود الجهود المبذولة لبناء خدمات استدلال للتعلم العميق عبر الإنترنت على نطاق واسع بزمن انتقال منخفض وتوافر مرتفع. خارج العمل ، يستمتع بالتزلج واستكشاف الأطعمة الجيدة.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.Zhuoqi تشانغ هو مهندس تطوير برمجيات في فريق Infra لاستعلام البحث. يعمل على بناء أطر عمل لخدمة النموذج لتحسين زمن الانتقال والإنتاجية لخدمات الاستدلال عبر الإنترنت للتعلم العميق. خارج العمل ، يحب لعب كرة السلة والتزلج على الجليد والقيادة.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.هاوي صن هو مهندس برمجيات في فريق Infra الخاص بفهم استعلام البحث. تعمل على تصميم واجهات برمجة التطبيقات والبنية التحتية التي تدعم خدمات الاستدلال عبر الإنترنت للتعلم العميق. تشمل اهتماماتها تصميم واجهة برمجة التطبيقات للخدمة وإعداد البنية التحتية والصيانة. خارج العمل ، تستمتع بالجري والمشي لمسافات طويلة والسفر.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.جاسبريت سينغ هو عالم تطبيقي في فريق M5 ، حيث يعمل على نماذج أساسية واسعة النطاق لتحسين تجربة التسوق للعملاء. تشمل اهتماماته البحثية التعلم متعدد المهام ، واسترجاع المعلومات ، وتعلم التمثيل.

كيف خفض Amazon Search تكاليف استدلال تعلم الآلة بنسبة 85% باستخدام AWS Inferentia PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.شروتي كوباركار هو مدير أول لتسويق المنتجات في AWS. تساعد العملاء على استكشاف البنية التحتية للحوسبة المسرَّعة EC2 وتقييمها واعتمادها لتلبية احتياجات التعلم الآلي الخاصة بهم.

الطابع الزمني:

اكثر من التعلم الآلي من AWS