أطلق العنان لابتكار ML في Spotify مع Ray

مع استمرار تطور مجال التعلم الآلي (ML) وتزايد تأثيره على المجتمع وجوانب مختلفة من حياتنا، أصبح من المهم بشكل متزايد للممارسين والمبتكرين النظر في مجموعة واسعة من وجهات النظر عند بناء نماذج وتطبيقات تعلم الآلة.
هذه الرغبة هي الدافع وراء الحاجة إلى بنية تحتية للتعلم الآلي أكثر مرونة وقابلية للتوسع.
في Spotify ، نؤمن بشدة باتباع نهج متنوع وتعاوني لبناء تطبيقات تعلم الآلة.
لقد ولت الأيام التي كان ML فيها مجالًا لمجموعة صغيرة فقط من الباحثين والمهندسين.
نريد إضفاء الطابع الديمقراطي على جهود التعلم الآلي لدينا بحيث يمكن للمساهمين من جميع الخلفيات، بما في ذلك المهندسين وعلماء البيانات والباحثين، الاستفادة من وجهات نظرهم ومهاراتهم وخبراتهم الفريدة لزيادة ML في Spotify.
ونتيجة لذلك، نتوقع أن نشهد زيادة في عمليات التقدم في تعلم الآلة الحاصلة على تمثيل جيد في Spotify في السنوات القادمة – وستلعب البنية التحتية المناسبة دورًا حاسمًا في دعم هذا النمو.
خلفية
أسست Spotify منصتها للتعلم الآلي (ML) في عام 2018 لتوفير معيار ذهبي لتعلّم آلي موثوق ومسؤول للإنتاج.
بصفتنا فريقًا لمنصة ML، نهدف إلى تمكين مستخدمينا من قضاء وقت أقل في صيانة البنية التحتية لتعلّم الآلة حسب الطلب والمزيد من الوقت في التركيز على حل مشاكل العمل من خلال تطوير نموذج جديد.
تخدم البنية التحتية المركزية لدينا الآن أكثر من نصف ممارسي ML الداخليين وفرق ML.
ومع ذلك، فقد أظهر البحث الداخلي أن أدوات النظام الأساسي لدينا ليست مناسبة تمامًا حاليًا لجميع أبعاد ممارسي تعلم الآلة.
بينما يستخدم غالبية مهندسي التعلم الآلي لدينا أدواتنا المركزية، إلا أن عددًا أقل من علماء البيانات والبحوث يفعلون ذلك. نعتقد أن تلبية احتياجات المستخدم التالية يمكن أن تساعد جميع أبعاد مبتكري ML في Spotify:
- توسيع نطاق دعم الإنتاج لأطر ML خارج TensorFlow لدعم حلول ML الجديدة لـ Spotify
- توفير طريقة سهلة الاستخدام للمستخدمين للوصول إلى وحدة معالجة الرسومات والحساب الموزع
- تسريع رحلة المستخدم لأبحاث التعلم الآلي والنماذج الأولية
- توفير حلول لإنتاج نماذج تعلم الآلة الأكثر تقدمًا، مثل التعلم المعزز (RL) والشبكات العصبية الرسومية (GNN)
البنية التحتية للتعلم الآلي في Spotify اليوم
لطالما كان هدفنا من Spotify’s ML Platform هو إنشاء تجربة مستخدم سلسة لممارسي ML الذين يرغبون في نقل تطبيق ML من التطوير إلى الإنتاج.
في أوائل عام 2020، توسعت منصة ML الخاصة بنا لتشمل سير عمل إنتاج ML لممارسي التعلم الآلي في Spotify من خلال أربعة عروض للمنتجات الأساسية:
- ML Home ، مكان حيث يمكن لمهندسي ML تخزين معلومات مشروع ML والوصول إلى البيانات الوصفية المتعلقة بدورة حياة تطبيق ML
- Jukebox ، الحل الذي نقدمه لتشغيل هندسة الميزات استنادًا إلى TensorFlow Transform
- Spotify Kubeflow ، نسختنا المُدارة من منصة خطوط أنابيب Kubeflow مفتوحة المصدر مع TensorFlow Extended (TFX) كتوحيد لسير عمل ML
- سالم، معيارنا لخدمة النموذج وتطبيقات ML على الجهاز

دورة حياة مشروع ML في Spotify
يشبه ML at Spotify قمعًا. في النهاية الأوسع، لدينا حجم كبير من أنشطة تعلم الآلة التي يقوم بها علماء البيانات والأبحاث لإثبات الأفكار ذات الإمكانات العالية بسرعة.
مهامهم وأدواتهم وأساليبهم متنوعة وغير متجانسة ويصعب توحيدها – في الواقع، من دون المستوى الأمثل توحيد أساليبهم في هذه المرحلة من دورة الحياة.
مع تضييق مسار التحويل وإثبات الأفكار ذات الإمكانات العالية، يتولى مهندسو البيانات ومهندسو ML المسؤولية.
يعد توحيد مهامهم وأدواتهم تحسينًا من وجهة نظر تجربة المستخدم ومن منظور الأعمال؛ يمكن لمهندسي ML قضاء وقت أقل في بناء أدوات زائدة عن الحاجة، وتستفيد أعمالنا من وجود أفكار تعلم آلية موثوقة وموثوقة ومبتكرة تم إطلاقها للإنتاج بشكل أسرع.
لقد أنشأنا منصتنا لمهندسي ML أولاً لأن حالات الاستخدام واحتياجاتهم كانت أسهل في التوحيد القياسي.
لكن هذا التركيز كان له تكلفة: فقد كان يعني مرونة أقل للابتكار في المراحل المبكرة من دورة الحياة.
تحويل تطوير ML في Spotify
في عام 2022، شرع فريقنا في تحديث إستراتيجية ورؤية من عامين إلى ثلاثة أعوام لمنصة Spotify’s ML.
كان أحد المكونات الكبيرة لهذه الاستراتيجية هو تقديم خدمة أفضل لاحتياجات المبتكرين الذين يركزون على المراحل المبكرة من دورة حياة تعلم الآلة وتمكين الانتقال السلس من التطوير إلى الإنتاج.
التطور التالي للبنية التحتية ML الخاصة بـ Spotify
في Spotify ، يشترك جميع ممارسو ML في رحلة مستخدم ML مماثلة. إنهم يريدون بدء مشاريع ML الخاصة بهم عن طريق وضع نماذج أولية على أجهزتهم المحلية أو في دفتر ملاحظات، ويحتاجون إلى الوصول إلى موارد الحوسبة الكبيرة مثل العشرات من وحدات المعالجة المركزية أو وحدات معالجة الرسومات.
إنهم يحبون إنشاء مهام سير عمل ML من طرف إلى طرف وتوسيع نطاقها بسهولة في Python ، والوصول إلى مجموعة متنوعة من مكتبات ML الحديثة، والاندماج بسلاسة مع بقية النظام البيئي الهندسي Spotify مع الحد الأدنى من التغييرات في التعليمات البرمجية ومعرفة البنية التحتية.

لتلبية احتياجات مستخدمينا بشكل أفضل وتحسين الإنتاجية عبر دورة حياة ML بالكامل، نحتاج إلى بنية تحتية مرنة تلبي غالبية مستخدمينا أينما كانوا بالفعل.
نحن بحاجة إلى نظام أساسي يساعد Spotifiers في اليوم الأول على الشعور بالإنتاجية – بغض النظر عما إذا كانوا عالم بيانات في خدمة العملاء يختبرون الأفكار بسرعة أو مهندس ML في فريق تخصيص متقدم يركز على تقوية سير عمل الإنتاج.
تُرجح تجربة النظام الأساسي الحالية لدينا بشكل كبير نحو رحلة مستخدم واحد: مهندس ML يستخدم TensorFlow / TFX لتطبيقات إنتاج التعلم الخاضعة للإشراف.
لدعم سوقنا المستهدف بشكل أفضل لنطاق أوسع من المكونات، نحتاج إلى تقليل الحاجز أمام الدخول واحتضان أدوات تعلم الآلة الأكثر تنوعًا مع الحفاظ على قابلية التوسع والأداء في تدفقات عمل ML من طرف إلى طرف.
تقديم راي
بعد النماذج الأولية والتحقيق المكثف، نعتقد أن راي يلبي هذه الاحتياجات.
Ray هو إطار مفتوح المصدر وموحد لتوسيع نطاق تطبيقات AI و Python. إنه مصمم لتطوير ML مع تكامل نظام ML البيئي الغني.
فهو يقيس بسهولة أعباء العمل المليئة بالحساب مثل المعالجة المسبقة للميزات، والتعلم العميق، وضبط المعلمات الفائقة، والتنبؤات الدفعية – كل ذلك مع الحد الأدنى من التغييرات في التعليمات البرمجية. تم اعتماد Ray على نطاق واسع في صناعة ML.
قال جريج بروكمان ، الشريك المؤسس لشركة أوبن إيه آي ورئيسها التقني، في مؤتمر راي سوميت 2022، “نحن نستخدم [Ray] لتدريب أكبر عارضاتنا.
لذلك فقد كان مفيدًا للغاية بالنسبة لنا من حيث القدرة على الارتقاء إلى مستوى غير مسبوق إلى حد كبير وعدم الشعور بالجنون “.
مع Ray ، لم يعد مطورو ML بحاجة إلى تغيير الكود وإطار العمل الذي يختارونه بالكامل لتحقيق مقياس لتطبيقات الإنتاج، مما يسهل الانتقال من التطوير المحلي إلى بيئة الحوسبة الموزعة.
تحت الغطاء، نستخدم Google Kubernetes Engine (GKE) ومشغل KubeRay مفتوح المصدر.
يقوم CLI الخاص بنا بإنشاء مورد مجموعة Kubernetes Ray مخصص يخبر KubeRay بإنشاء مجموعة Ray جديدة.
يبدأ المستخدمون بمساحة اسم مشتركة وملعب للتعلم والتجربة مع الحد الأدنى من الإعداد. بمجرد أن يصبحوا جاهزين، يقومون بإنشاء مساحة الاسم الخاصة بهم.
تمنح عملية إدارة الفريق متعدد المستأجرين الأذونات وتكوين الموارد وإدارة المساهمين.
يقوم بإنشاء جميع موارد Kubernetes استنادًا إلى ملف تكوين الفريق ونشرها في المجموعة لإعداد مساحة الاسم.

بالإضافة إلى CLI، أنشأنا Python SDK بميزات مكافئة. تتيح SDK للمستخدمين إدارة مجموعات Ray الخاصة بهم برمجيًا.
المرونة
يمكن للمستخدمين بسهولة الاستفادة من مكتبات ML الحديثة واختيار موارد الحوسبة لدعم أعباء العمل الخاصة بهم للبحث والنماذج الأولية.
نتيجة لاستخدام Ray ، تدعم منصتنا جميع أطر عمل ML الرئيسية مثل PyTorch و TensorFlow و XGBoost.
يتم تلخيص تكوين موارد الحوسبة بطريقة موحدة وسهلة الاستخدام. إذا كان المستخدمون لا يريدون موارد الحوسبة الافتراضية، فيمكنهم تخصيصها بسهولة. على سبيل المثال، يمكنهم طلب نوع وعدد معين من وحدات معالجة الرسومات.
التوفر
نحن نبني على توافر GKE المُدار بدلاً من إدارة مجموعات Kubernetes بأنفسنا.
نحن نفصل أعباء العمل من خلال منح كل عامل في Ray عقدة GKE الخاصة به، ونعزل الفرق عن طريق إعطاء مساحة اسم Kubernetes لكل منهم.
أداء
نحن نستفيد من ميزة تدفق الصور في GKE لتسريع عمليات سحب الصور.
لقد قللنا الوقت الذي يستغرقه سحب صور حاوية كبيرة تستند إلى وحدة معالجة الرسومات من عدة دقائق إلى بضع ثوانٍ فقط.
مسار قائم على شعاع للإنتاج
باسم بناء نسخة قابلة للتطبيق على الأقل من Spotify-Ray ، اخترنا إعطاء الأولوية للنماذج الأولية والتجريب في المراحل المبكرة – بعبارة أخرى “فم” القمع .
ومع ذلك، فإننا نرى الوعد في Ray باعتباره العمود الفقري لمسار قوي للإنتاج لممارسي تعلم الآلة في Spotify. مع تكامل Flyte الأصلي لـ Spotify-Ray وواجهات برمجة التطبيقات عالية المستوى في الأعمال لتبسيط وتسريع مهام MLOps الأساسية، على سبيل المثال، تحميل البيانات وتسجيل القطع الأثرية وتتبع التجربة وتنسيق خطوط الأنابيب، نعتقد أن Ray يمكنه تقصير وقت الإنتاج بشكل كبير لتطبيقات ML في Spotify. نحن متحمسون للعمل مع ممارسي ML الداخلي لتحقيق هذه الرؤية.

حالة الاستخدام: تعلم الرسم البياني لتوصيات المحتوى
في مشروع بحثي حديث، جرب فريق Spotify’s Tech Research ، وهو مستخدم نهائي لـ ML Platform سابقًا، استخدام تقنيات تعلم الرسم البياني للتوصيات.
على عكس مشاريع البحث السابقة التي تم تصميمها عادةً باستخدام أدوات مخصصة ومن ثم تنفيذها لسيناريوهات الإنتاج، يجب أن يكون تنفيذ تعلم الرسم البياني جاهزًا للإنتاج لتقييم GNN لحالات استخدام الأعمال في Spotify بسرعة. احتاج باحثو ML إلى بنية تحتية مرنة وسهلة الإنتاج بسرعة.
دفع هذا البحث Tech Research إلى استخدام تعلم الرسم البياني على Spotify-Ray لإنشاء توصيات المحتوى.
بعد نتائج واعدة في وضع عدم الاتصال على مجموعات البيانات الداخلية، أجرى فريق البحث التقني اختبار A / B لفهم كيف غيّرت الخوارزميات المستندة إلى GNN توصيات “العروض التي قد تعجبك” في صفحتنا الرئيسية.
كان إجراء اختبارات A / B هذه تحديًا نظرًا لأن تدفقات عمل GNN تختلف عن تدفقات عمل ML النموذجية.
تبنت شركة Tech Research Spotify-Ray لاحتياجاتها من البنية التحتية للتغلب على هذه التحديات وطبقت مجموعة من المكونات لتدريب ونشر نماذج GNN على نطاق واسع.
- إنشاء البيانات (إنشاء الرسم البياني)
يعد إنشاء الرسوم البيانية لتطبيقات العالم الحقيقي عملية تكرارية وتتطلب أدوات يمكنها بسهولة تحويل كميات كبيرة من البيانات باستخدام وظائف Python البسيطة. - استفدنا من مجموعات بيانات Ray لإنشاء الرسم البياني من مستودع البيانات الخاص بنا. توفر مجموعات بيانات Ray واجهات برمجة تطبيقات مرنة لإجراء تحويلات شائعة مثل التعيين على البيانات الموزعة.
- ميزة المعالجة المسبقة
يتألف الرسم البياني الذي تم إنشاؤه في الخطوة السابقة من العقد والحواف جنبًا إلى جنب مع الميزات المقابلة. - لقد استفدنا من معالجات Ray AIR الافتراضية وقمنا بتوسيع واجهة API الأساسية الخاصة بها لإجراء تحويلات في الميزات مثل التوحيد القياسي والتحويلات الفئوية والجمع وما إلى ذلك.
- تعلم الرسم البياني
نقوم بتغذية الرسم البياني والميزات المعالجة مسبقًا في خوارزمية تعلم الرسم البياني المطبقة في PyG . - يمتد مدربون Ray بسهولة إلى أطر تعلم الآلة المختلفة مثل PyG ويسمحون لنا بتوزيع تدريبنا بسلاسة.
- الاستدلال على المقياس والتقييم
أخيرًا، قمنا بتنفيذ تنبؤات مخصصة للتنبؤ بالدُفعات والمقيمين باستخدام مجموعات بيانات Ray.
باستخدام المكونات المذكورة أعلاه، قام هذا الفريق ببناء خط أنابيب شامل لإنشاء توصيات العرض باستخدام النماذج المستندة إلى GNN وأطلق بنجاح اختبار A / B في أقل من ثلاثة أشهر، وهو إنجاز كان يمثل تحديًا كبيرًا لـ Tech Research في الماضي بالنظر إلى البنية التحتية لغسيل الأموال المدعومة مسبقًا.
أدى اختبار A / B إلى تحسينات كبيرة في المقاييس وتجربة مستخدم محسنة على صفحتنا الرئيسية “العروض التي قد تعجبك”.
أتطلع قدما
نما طلب ممارسى التعلم الآلي في Spotify على PyTorch بشكل كبير، لا سيما بالنسبة لحالات الاستخدام الناشئة في مساحات NLP وGNN.
نخطط لاستخدام Ray لدعم وتوسيع نطاق PyTorch لتلبية هذا الطلب المتزايد ومساعدة مستخدمينا المتنوعين على الشعور بالإنتاجية، بغض النظر عن دورهم في الفريق.
في حين أن جلب إطار عمل جديد ينطوي على مخاطر التجزئة، مع وجود لبنات أساسية أفضل في مكانها الصحيح، يمكننا العمل على إنشاء تجربة منصة ML أكثر مرونة وتمثيلية ومسؤولة تطلق العنان بشكل شامل لابتكار ML في Spotify.
شكر وتقدير
لم يكن عملنا في جلب Ray إلى نظام Spotify البيئي ممكنًا لولا العمل الرائع لفريق ML Workflows في Spotify ، وزملائنا في ML Platform ، والتعاون السخي مع فريق Anyscale.
شكرًا للأفراد الذين جعل عملهم إطلاق العنان لابتكار ML في Spotify ممكنًا: جوناثان جين، مايك سيد، جوشوا باير، ريتشارد لياو ، دميتري جيكتمان ، عبد الله موبين ، ماريا سيبولوني ، أولغا إيانيوك ، سارة ليري، جريس جلين، عمر ديلاروسا ، مايشا لوبا و Shawn Lin و Andrew Martin و Union.ai لدعمهم في تكامل Flyte .
المصدر: engineering
قد يهمك: