كيف استخدم Sportradar مكتبة جافا العميقة لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة

كيف استخدم Sportradar مكتبة جافا العميقة لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة

هذا منشور ضيف شارك في كتابته مع فريد وو من Sportradar.

Sportradar هي الشركة الرائدة عالمياً في مجال التكنولوجيا الرياضية ، عند التقاطع بين الرياضة والإعلام والمراهنات. يعتمد أكثر من 1,700 اتحاد رياضي ومنفذ إعلامي ومشغلي مراهنات ومنصات للمستهلكين في 120 دولة على المعرفة والتكنولوجيا من Sportradar لتعزيز أعمالهم.

تستخدم Sportradar البيانات والتكنولوجيا من أجل:

  • استمر في المراهنة على المشغلين في المقدمة مع المنتجات والخدمات التي يحتاجونها لإدارة كتابهم الرياضي
  • امنح الشركات الإعلامية الأدوات للتفاعل بشكل أكبر مع المعجبين
  • امنح الفرق والاتحادات والاتحادات البيانات التي يحتاجونها للنمو
  • حافظ على نظافة الصناعة من خلال اكتشاف ومنع الاحتيال وتعاطي المنشطات وتثبيت المطابقة

يوضح هذا المنشور كيف Sportradar تستخدم أمازون مكتبة جافا العميقة (DJL) على AWS جنبًا إلى جنب خدمة أمازون مطاطا Kubernetes (Amazon EKS) و خدمة تخزين أمازون البسيطة (Amazon S3) لبناء حل استنتاج جاهز للتعلم الآلي (ML) يحافظ على الأدوات الأساسية في Java ، ويحسن الكفاءة التشغيلية ، ويزيد من إنتاجية الفريق من خلال توفير أداء أفضل وإمكانية الوصول إلى السجلات ومقاييس النظام.

DJL هو إطار عمل تعليمي عميق تم إنشاؤه من الألف إلى الياء لدعم مستخدمي لغات Java و JVM مثل Scala و Kotlin و Clojure. في الوقت الحالي ، تم تصميم معظم أطر التعلم العميق للغة Python ، لكن هذا يهمل العدد الكبير من مطوري ومطوري Java الذين لديهم قواعد كود Java موجودة يريدون دمج الإمكانات القوية المتزايدة للتعلم العميق فيها. مع DJL ، يعد دمج هذا التعلم العميق أمرًا بسيطًا.

في هذا المنشور ، يناقش فريق Sportradar التحديات التي واجهوها والحلول التي قاموا بإنشائها لبناء منصة استدلال نموذجية باستخدام DJL.

متطلبات العمل

نحن الفريق الأمريكي لقسم Sportradar AI. منذ عام 2018 ، طور فريقنا مجموعة متنوعة من نماذج ML لتمكين منتجات المراهنة على كرة القدم NFL و NCAA. قمنا مؤخرًا بتطوير أربعة نماذج جديدة أخرى.

تتنبأ نماذج القرار السفلية الرابعة لـ NFL و NCAA باحتمالات نتيجة اللعب الرابع. يمكن أن تكون نتيجة اللعب محاولة هدف ميداني أو لعب أو ركلة.

تتنبأ نماذج نتائج محرك الأقراص لـ NFL و NCAA باحتمالات نتيجة محرك الأقراص الحالي. يمكن أن تكون نتيجة القيادة هي نهاية النصف ، أو محاولة الهدف الميداني ، أو الهبوط ، أو الدوران ، أو الدوران عند الهبوط ، أو الرمية.

كيف استخدمت Sportradar مكتبة Deep Java لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

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

متطلبات العمل لنماذجنا هي كما يلي:

  • يجب أن يكون متنبئ النموذج قادرًا على تحميل ملف النموذج المدرب مسبقًا مرة واحدة ، ثم عمل تنبؤات على العديد من المسرحيات
  • يتعين علينا إنشاء الاحتمالات لكل لعبة أقل من 50 مللي ثانية كمون
  • يجب كتابة متنبئ النموذج (استخراج الميزة واستدلال النموذج) بلغة Java ، حتى يتمكن الفريق الآخر من استيراده على أنه تبعية Maven

التحديات مع النظام في المكان

التحدي الرئيسي الذي نواجهه هو كيفية سد الفجوة بين تدريب النموذج في Python والاستدلال النموذجي في Java. يقوم علماء البيانات لدينا بتدريب النموذج في Python باستخدام أدوات مثل PyTorch وحفظ النموذج كنصوص PyTorch. كانت خطتنا الأصلية هي استضافة النماذج في Python واستخدام gRPC للتواصل مع خدمة أخرى ، والتي ستستخدم عميل Java gRPC لإرسال الطلب.

ومع ذلك ، جاءت بعض المشكلات مع هذا الحل. بشكل أساسي ، رأينا عبء الشبكة بين خدمتين مختلفتين تعملان في بيئات تشغيل منفصلة أو حواجز ، مما أدى إلى زيادة زمن الوصول. لكن تكاليف الصيانة كانت السبب الرئيسي وراء تخلينا عن هذا الحل. كان علينا بناء كل من خادم gRPC وبرنامج العميل بشكل منفصل والحفاظ على ملفات المخزن المؤقت للبروتوكول متسقة ومحدثة. ثم احتجنا إلى Dockerize التطبيق ، وكتابة ملف YAML للنشر ، ونشر خادم gRPC في مجموعة Kubernetes الخاصة بنا ، والتأكد من أنه موثوق وقابل للتطوير التلقائي.

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

من الناحية المثالية ، نريد بدلاً من ذلك تحميل البرامج النصية للنموذج PyTorch ، واستخراج الميزات من إدخال النموذج ، وتشغيل استنتاج النموذج بالكامل في Java. ثم يمكننا بناءها ونشرها كمكتبة Maven ، مستضافة على السجل الداخلي لدينا ، والتي يمكن لفريق الخدمة لدينا استيرادها إلى مشاريع Java الخاصة بهم. عندما أجرينا بحثنا عبر الإنترنت ، ظهرت مكتبة Deep Java في الأعلى. بعد قراءة بعض منشورات المدونة والوثائق الرسمية لشركة DJL ، كنا على يقين من أن شركة DJL ستوفر أفضل حل لمشكلتنا.

حل نظرة عامة

الرسم البياني التالي يقارن بين العمارة السابقة والمحدثة.

كيف استخدمت Sportradar مكتبة Deep Java لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

يوضح الرسم البياني التالي سير العمل لحل DJL.

سير العمل

والخطوات هي كما يلي:

  1. تدريب العارضات - يقوم علماء البيانات لدينا بتدريب النماذج باستخدام PyTorch وحفظ النماذج كنصوص مشعلة. ثم يتم دفع هذه النماذج إلى ملف خدمة تخزين أمازون البسيطة (Amazon S3) باستخدام DVC ، أداة التحكم في الإصدار لنماذج ML.
  2. تنفيذ استخراج الميزات وتغذية ميزات ML - يسحب فريق إطار العمل النماذج من Amazon S3 إلى مستودع Java حيث ينفذون استخراج الميزات ويغذون ميزات ML في المتنبئ. يستخدمون محرك DJL PyTorch لتهيئة توقع النموذج.
  3. تغليف ونشر كود الاستدلال والنماذج - حزم خط أنابيب GitLab CI / CD وتنشر ملف JAR الذي يحتوي على كود الاستدلال والنماذج إلى سجل Apache Archiva داخلي.
  4. استيراد مكتبة الاستدلال وإجراء المكالمات - يقوم عميل Java باستيراد مكتبة الاستدلال باعتبارها تبعية لـ Maven. يتم إجراء جميع استدعاءات الاستدلال عبر استدعاءات وظائف Java داخل نفس لوحة Kubernetes. نظرًا لعدم وجود مكالمات gRPC ، تم تحسين وقت استجابة الاستنتاج. علاوة على ذلك ، يمكن لعميل Java استعادة مكتبة الاستدلال بسهولة إلى إصدار سابق إذا لزم الأمر. في المقابل ، لا يكون الخطأ من جانب الخادم شفافًا من جانب العميل في الحلول المستندة إلى gRPC ، مما يجعل تتبع الأخطاء أمرًا صعبًا.

لقد رأينا وقت تشغيل استنتاجي مستقر ونتائج تنبؤ موثوقة. يقدم حل DJL العديد من المزايا مقارنة بالحلول القائمة على gRPC:

  • وقت استجابة محسن - مع عدم وجود مكالمات gRPC ، يتم تحسين وقت استجابة الاستنتاج
  • التراجع والترقيات السهلة - يمكن لعميل Java التراجع بسهولة عن مكتبة الاستدلال إلى إصدار سابق أو الترقية إلى إصدار جديد
  • تتبع الأخطاء بشكل شفاف - في حل DJL ، يمكن للعميل تلقي رسائل تعقّب خطأ مفصلة في حالة وجود أخطاء استنتاجية

نظرة عامة على مكتبة جافا العميقة

إن DJL عبارة عن إطار عمل تعليمي عميق كامل يدعم دورة حياة التعلم العميق من بناء نموذج ، وتدريبه على مجموعة بيانات ، إلى نشره في الإنتاج. يحتوي على مساعدين وأدوات مساعدة بديهية لطرائق مثل رؤية الكمبيوتر ومعالجة اللغة الطبيعية والصوت والسلاسل الزمنية والبيانات المجدولة. تتميز DJL أيضًا بحديقة حيوانات نموذجية سهلة من مئات النماذج المدربة مسبقًا والتي يمكن استخدامها خارج الصندوق ودمجها في الأنظمة الحالية.

وهو أيضًا مشروع مفتوح المصدر مرخص بالكامل من Apache-2 و يمكن العثور على جيثب. تم إنشاء DJL في Amazon ومصادر مفتوحة في عام 2019. واليوم ، تقود Amazon مجتمع DJL مفتوح المصدر وقد نما ليشمل العديد من البلدان والشركات والمؤسسات التعليمية. يواصل DJL النمو في قدرته على دعم الأجهزة والنماذج والمحركات المختلفة. يتضمن أيضًا دعمًا للأجهزة الجديدة مثل ARM (سواء في الخوادم مثل أوس جرافيتون وأجهزة الكمبيوتر المحمولة مع ابل M1) و استدلال AWS.

إن بنية DJL حيادية المحرك. تهدف إلى أن تكون واجهة تصف ما يمكن أن يبدو عليه التعلم العميق في لغة Java ، ولكنها تترك مجالًا للعديد من التطبيقات المختلفة التي يمكن أن توفر إمكانات مختلفة أو دعمًا للأجهزة. تم تصميم معظم الأطر الشائعة اليوم مثل PyTorch و TensorFlow باستخدام واجهة Python الأمامية التي تتصل بخلفية C ++ أصلية عالية الأداء. يمكن لـ DJL استخدام هذا للاتصال بنفس هذه الخلفيات الأصلية للاستفادة من عملهم على دعم الأجهزة والأداء.

لهذا السبب ، يستخدمه العديد من مستخدمي DJL للاستدلال فقط. أي أنهم سيقومون بتدريب نموذج باستخدام Python ثم تحميله باستخدام DJL للنشر كجزء من نظام إنتاج Java الحالي الخاص بهم. نظرًا لأن DJL يستخدم نفس المحرك الذي يقوم بتشغيل Python ، فإنه قادر على العمل دون أي انخفاض في الأداء أو فقدان الدقة. هذه هي بالضبط الإستراتيجية التي وجدناها لدعم النماذج الجديدة.

يوضح الرسم البياني التالي سير العمل تحت الغطاء.

DJL

عندما يتم تحميل DJL ، فإنه يعثر على جميع تطبيقات المحرك المتاحة في مسار الفئة باستخدام Java محمل الخدمة. في هذه الحالة ، يكتشف تنفيذ محرك DJL PyTorch ، والذي سيكون بمثابة الجسر بين DJL API و PyTorch Native.

ثم يعمل المحرك لتحميل PyTorch Native. بشكل افتراضي ، يقوم بتنزيل البرنامج الثنائي الأصلي المناسب استنادًا إلى نظام التشغيل الخاص بك ، وبنية وحدة المعالجة المركزية ، وإصدار CUDA ، مما يجعل استخدامه سهلًا تقريبًا. يمكنك أيضًا توفير الملف الثنائي باستخدام أحد ملفات JAR الأصلية العديدة المتاحة ، والتي تكون أكثر موثوقية لبيئات الإنتاج التي غالبًا ما يكون لها وصول محدود إلى الشبكة للأمان.

بمجرد التحميل ، يستخدم DJL ملف واجهة جافا الأصلية لترجمة جميع الوظائف عالية المستوى السهلة في DJL إلى مكالمات محلية منخفضة المستوى مكافئة. تم تصميم كل عملية في DJL API يدويًا لتناسب اتفاقيات Java بشكل أفضل وتسهيل الوصول إليها. يتضمن هذا أيضًا التعامل مع الذاكرة الأصلية ، والتي لا يدعمها Java Garbage Collector.

على الرغم من أن كل هذه التفاصيل موجودة داخل المكتبة ، إلا أن الاتصال بها من وجهة نظر المستخدم لا يمكن أن يكون أسهل. في القسم التالي ، نسير خلال هذه العملية.

كيف قامت Sportradar بتنفيذ DJL

نظرًا لأننا ندرب نماذجنا باستخدام PyTorch ، فإننا نستخدم محرك PyTorch الخاص بـ DJL لاستدلال النموذج.

تحميل النموذج سهل للغاية. كل ما يتطلبه الأمر هو بناء معايير تصف النموذج المراد تحميله ومن أين أتى. ثم نقوم بتحميله واستخدام النموذج لإنشاء جلسة توقع جديدة. انظر الكود التالي:

كريت

بالنسبة إلى نموذجنا ، لدينا أيضًا مترجم مخصص ، نسميه MyTranslator. نستخدم المترجم لتغليف كود المعالجة المسبقة الذي يتحول من نوع Java مناسب إلى المدخلات المتوقعة من النموذج ورمز المعالجة اللاحقة الذي يتحول من إخراج النموذج إلى إخراج مناسب. في حالتنا ، اخترنا استخدام ملف float[] كنوع الإدخال وتصنيفات DJL المدمجة كنوع الإخراج. فيما يلي مقتطف من رمز المترجم الخاص بنا:

كيف استخدمت Sportradar مكتبة Deep Java لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

إنه لأمر مدهش جدًا أنه باستخدام بضعة أسطر من التعليمات البرمجية ، يقوم DJL بتحميل نصوص PyTorch ومترجمنا المخصص ، ومن ثم يكون المتنبئ جاهزًا لعمل التنبؤات.

وفي الختام

تم إطلاق منتج Sportradar المبني على حل DJL قبل بدء الموسم العادي NFL 2022–23 ، وهو يعمل بسلاسة منذ ذلك الحين. في المستقبل ، تخطط Sportradar لإعادة الطرز الحالية المستضافة على خوادم gRPC إلى حل DJL.

يواصل DJL النمو بعدة طرق مختلفة. أحدث إصدار ، v0.21.0، لديه العديد من التحسينات ، بما في ذلك دعم المحرك المحدث ، والتحسينات على Spark ، و Hugging Face دفعة الرموز المميزة ، و NDScope لتسهيل إدارة الذاكرة ، وتحسينات لواجهة برمجة التطبيقات للسلسلة الزمنية. كما أن لديها أول إصدار رئيسي من دي جي إل زيرو، واجهة برمجة تطبيقات جديدة تهدف إلى السماح بالدعم لكل من استخدام النماذج المدربة مسبقًا وتدريب نماذج التعلم العميق المخصصة الخاصة بك حتى مع عدم وجود معرفة بالتعلم العميق.

يتميز DJL أيضًا بخادم نموذجي يسمى خدمة DJL. يجعل من السهل استضافة نموذج على خادم HTTP من أي من المحركات العشرة المدعومة ، بما في ذلك محرك Python لدعم كود Python. مع الإصدار 10 من خدمة DJL ، يتضمن دعمًا أسرع للمحول ، الأمازون SageMaker نقطة نهاية متعددة النماذج الدعم والتحديثات لـ Stable Diffusion وتحسينات لـ DeepSpeed ​​وتحديثات لوحدة التحكم الإدارية. يمكنك الآن استخدامه ل نشر نماذج كبيرة مع الاستدلال المتوازي للنموذج باستخدام DeepSpeed ​​و SageMaker.

هناك أيضًا الكثير قادمًا مع DJL. أكبر منطقة قيد التطوير هي دعم نموذج اللغة الكبير لنماذج مثل ChatGPT أو Stable Diffusion. هناك أيضًا عمل لدعم تدفق طلبات الاستدلال في خدمة DJL. ثالثًا ، هناك تحسينات على العروض التوضيحية وتمديد Spark. بالطبع ، هناك أيضًا عمل مستمر قياسي بما في ذلك الميزات والإصلاحات وتحديثات المحرك والمزيد.

لمزيد من المعلومات حول DJL وميزاته الأخرى ، راجع مكتبة جافا العميقة.

اتبع دينا جيثب ريبو, مستودع تجريبي, قناة سلاكو تويتر لمزيد من الوثائق والأمثلة على DJL!


عن المؤلفين

كيف استخدمت Sportradar مكتبة Deep Java لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.فريد وو هو مهندس بيانات أول في Sportradar ، حيث يقود جهود البنية التحتية و DevOps وهندسة البيانات للعديد من منتجات NBA و NFL. مع خبرة واسعة في هذا المجال ، يكرس فريد جهوده لبناء خطوط وأنظمة بيانات قوية وفعالة لدعم التحليلات الرياضية المتطورة.

كيف استخدمت Sportradar مكتبة Deep Java لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.زاك كيمبرج مطور برامج في منظمة Amazon AI. يعمل على تمكين التطوير والتدريب والاستدلال الإنتاجي للتعلم العميق. هناك ، ساعد في تأسيس مشروع DeepJavaLibrary وما زال يطوره.

كيف استخدمت Sportradar مكتبة Deep Java لبناء منصات ML على نطاق الإنتاج لزيادة الأداء والكفاءة PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.كانوالجيت خورمي هو مهندس حلول رئيسي في Amazon Web Services. إنه يعمل مع عملاء AWS لتقديم التوجيه والمساعدة الفنية لمساعدتهم على تحسين قيمة حلولهم عند استخدام AWS. Kanwaljit متخصص في مساعدة العملاء في استخدام الحاويات وتطبيقات التعلم الآلي.

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

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