Jupyter Notebook على Netflix

في الآونة الأخيرة ، أصبح Jupyter Notebook يحظى بشعبية كبيرة بين خبراء علوم البيانات ، وأصبح المعيار الفعلي للنماذج الأولية السريعة وتحليل البيانات. في Netflix ، نحاول دفع حدود قدراته إلى أبعد من ذلك من خلال إعادة التفكير في ما يمكن أن يكون عليه Notebook ، ومن يمكن استخدامه ، وما الذي يمكن أن يفعلوه به. لقد بذلنا الكثير من الجهود لترجمة رؤيتنا إلى حقيقة واقعة.


في هذه المقالة ، نريد أن نخبرك لماذا نعتقد أن Jupyter Notebooks جذابة للغاية وتلهمنا على طول الطريق. بالإضافة إلى ذلك ، نحن نصف مكونات البنية الأساسية لدينا ونراجع طرقًا جديدة لاستخدام Jupyter Notebook في Netflix.



ملاحظة من المترجم: دقيق ، الكثير من النص وبعض الصور


إذا لم يكن لديك متسع من الوقت ، نقترح عليك أن تذهب على الفور إلى قسم استخدام الحالات .


لماذا كل هذا؟


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


جعل كل هذا حقيقة واقعة يعد إنجازًا كبيرًا ، ويتطلب دعمًا هندسيًا وهيكليًا رائعًا. كل يوم ، يتم تلقي أكثر من تريليون حدث في قطار (خط أنابيب تدفق البث) الذي تتم معالجته وتسجيله في تخزين سحابي بسعة 100PB. وفي كل يوم ، يقوم المستخدمون بأكثر من 150،000 مهمة على هذه البيانات ، تغطي كل شيء بدءًا من التقارير وحتى التعلم الآلي وخوارزميات التوصية.


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



مجموعة متنوعة من المستخدمين مثيرة للإعجاب ، ولكن عليك أن تدفع ثمنها: يجب أن يتدرج منهاج Netflix Data Platform ونظامه الإيكولوجي من الأدوات والخدمات لدعم سيناريوهات الاستخدام الإضافية واللغات وأنظمة الوصول وغير ذلك الكثير. لفهم المشكلة بشكل أفضل ، نأخذ بعين الاعتبار ثلاث وظائف شائعة: مهندس محلل ، مهندس بيانات ، وعالم بيانات.



الفرق في تفضيل اللغات والأدوات لمناصب مختلفة

كقاعدة عامة ، يفضل كل منصب استخدام مجموعة الأدوات واللغات الخاصة به. على سبيل المثال ، يمكن لمهندس البيانات إنشاء مجموعة بيانات جديدة تحتوي على تريليونات من تدفقات الأحداث باستخدام Scala في IntelliJ. يمكن للمحلل استخدامها في تقرير عالمي جديد عن جودة البث باستخدام SQL و Tableau. يمكن لهذا التقرير الانتقال إلى عالم البيانات الذي سيقوم بإنشاء نموذج ضغط دفق جديد باستخدام R و RStudio. للوهلة الأولى ، تبدو هذه العمليات مجزأة ، وإن كانت مكملة ، ولكن إذا نظرت إلى أعمق ، فلكل من هذه العمليات العديد من المهام المتداخلة:

استكشاف البيانات - يحدث في مرحلة مبكرة من المشروع ؛ قد يتضمن نظرة عامة على نماذج البيانات واستعلامات التحليل الإحصائي وتصور البيانات

إعداد البيانات - مهمة متكررة ، قد تشمل تنظيف البيانات وتوحيدها وتحويلها وإزالتها وتجميعها ؛ عادة ما يكون الجزء الأكثر استهلاكا للوقت من المشروع

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

الإنتاج - يحدث في مرحلة متأخرة من المشروع ؛ قد يشمل نشر الكود وإضافات العينات والتدريب النموذجي والتحقق من صحة البيانات وجدولة مهام سير العمل


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


لقد حدث أن مشروع مفتوح المصدر تم تطويره خصيصًا لهذا: Project Jupyter .


دفاتر المشترى




دفتر Jupyter في nteract يعرض Vega و Altair


تم إطلاق مشروع Jupyter في عام 2014 بهدف إنشاء مجموعة متسقة من أدوات المصادر المفتوحة للبحث وتدفق العمل القابل للتكرار وتحليل البيانات. حظيت هذه الأدوات بثناء كبير من الصناعة ، وأصبحت Jupyter اليوم جزءًا لا يتجزأ من مجموعة أدوات أي عالم بيانات. لفهم مدى تأثيره ، نلاحظ أن Jupyter حصل على جائزة ACM Software Systems 2017 - وهي جائزة مرموقة يشاركها مع Java و Unix و the_Web.


لفهم سبب كون Jupyter Notebook جذابًا للغاية بالنسبة لنا ، فكر في ميزاته الرئيسية:

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

يوفر بروتوكول Jupyter واجهة برمجة تطبيقات مراسلة موحدة مع kernels التي تعمل كوحدات حسابية وتوفر بنية قابلة للتكوين ، وبالتالي مشاركة مكان تخزين الرمز (UI) ومكان تنفيذه (kernel). وبالتالي ، يمكن أن تعمل أجهزة الكمبيوتر المحمولة بعدة لغات ، مع الفصل بين الواجهة والأساسية ، مع الحفاظ على المرونة لتكوين وقت التشغيل. في حالة وجود لغة للغة يمكنها تبادل الرسائل باستخدام بروتوكول Jupyter ، يمكن للكمبيوتر المحمول تنفيذ التعليمات البرمجية عن طريق إرسال واستقبال الرسائل إلى تلك النواة.


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


استخدام الحالات


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

الوصول إلى البيانات


ظهر Jupyter Notebook في الأصل على Netflix لدعم مهام سير عمل علم البيانات. مع نمو استخدامها بين خبراء علوم البيانات ، شهدنا إمكانية توسيع قدرات أدواتنا. لقد أدركنا أنه يمكننا استخدام تنوع بنية Jupyter Notebook وبنيتها وتوسيع قدراتها على مشاركة البيانات. في الربع الثالث من عام 2017 ، بدأنا بجدية العمل على جعل Notebook أداة لدائرة ضيقة من المتخصصين إلى ممثل من الدرجة الأولى لمنصة بيانات Netflix.


من وجهة نظر مستخدمينا ، توفر أجهزة الكمبيوتر المحمولة واجهة مريحة لتنفيذ الأوامر التفاعلية ، وأبحاث المخرجات ، وتصور البيانات - كل ذلك في بيئة تطوير سحابية واحدة. نحن ندعم أيضًا مكتبة Python ، التي تجمع بين الوصول إلى منصة API. هذا يعني أن المستخدمين لديهم حق الوصول البرمجي إلى نظام Netflix بالكامل عبر Notebook. بفضل هذا المزيج من المرونة والقوة وسهولة الاستخدام ، شهدت الشركة زيادة حادة في استخدامها من قبل جميع أنواع مستخدمي المنصة.


اليوم ، يعد دفتر الملاحظات أداة البيانات الأكثر شيوعًا في Netflix.


قوالب دفتر الملاحظات


نظرًا لتوسيع نطاق دعم أجهزة Jupyter Notebooks داخل النظام الأساسي ، بدأنا في تقديم ميزات جديدة لاستخدامها لتلبية سيناريوهات الاستخدام الجديدة. من هنا جاءت أجهزة الكمبيوتر المحمولة ذات المعلمات. تمثل أجهزة الكمبيوتر المحمولة ذات المعلمات تمامًا ما يقوله اسمه: دفتر ملاحظات يسمح لك بتعيين المعلمات في التعليمات البرمجية وتلقي المدخلات في وقت التشغيل. يوفر هذا آلية جيدة للمستخدمين لتعريف دفتر الملاحظات كقوالب قابلة لإعادة الاستخدام.


لقد وجد مستخدمونا العديد من الطرق لاستخدام هذه الأنماط. نحن سرد عدد قليل من الأكثر استخداما:

  • عالم البيانات : تجربة معاملات مختلفة وتلخيص النتائج
  • مهندس البيانات : إجراء مجموعة من عمليات تدقيق جودة البيانات كجزء من عملية النشر.
  • محلل البيانات : شارك الاستعلامات والتصورات التي تم إعدادها حتى يتمكن أصحاب المصلحة من استكشاف البيانات بشكل أعمق مما يسمح به Tableau
  • مهندس البرمجيات : أرسل نتائج البرنامج النصي لاستكشاف الأعطال وإصلاحها

جدولة دفاتر الملاحظات (جدولة)


إحدى الطرق الأصلية لاستخدام Notebook هي إنشاء طبقة دمج لجدولة سير العمل.


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


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


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


البنية التحتية للكمبيوتر المحمول


يتطلب دعم السيناريوهات الموضحة أعلاه بمقياس Netflix بنية تحتية داعمة واسعة النطاق. قدم بإيجاز عدة مشاريع ستتم مناقشتها في الأقسام التالية:


nteract هو الجيل الجديد من UI المستندة إلى React لأجهزة Jupyter المحمولة. يوفر واجهة بسيطة وسهلة ويوفر العديد من التحسينات لواجهة مستخدم Jupyter الكلاسيكية ، مثل أشرطة أدوات الخلايا المضمنة وخلايا السحب والإفلات ومستكشف مضمن.


مكتبة Papermill للمعلمات وتنفيذ وتحليل أجهزة Jupyter المحمولة. مع المساعدة التي يمكنك نشر العديد من أجهزة الكمبيوتر المحمولة مع المعلمات المختلفة وتنفيذها في وقت واحد. يسمح لك Papermill أيضًا بجمع وتلخيص المقاييس لمجموعة دفتر ملاحظات كاملة.


Commuter هي خدمة خفيفة الوزن وقابلة للتطوير رأسيًا لعرض ومشاركة دفتر الملاحظات. يوفر إصدارًا متوافقًا مع Jupyter من API للمحتوى ويسهل قراءة دفاتر الملاحظات المخزنة محليًا على Amazon S3. كما يقدم مستكشفًا للبحث عن الملفات ومشاركتها.


Titus هي عبارة عن منصة لإدارة الحاويات توفر إمكانية إطلاق حاوية قابلة للتطوير وموثوق بها والتكامل السحابي مع Amazon AWS. تم تطوير Titus في Netflix ويستخدم في القتال لدعم أنظمة الدفق والتوصية والمحتوى في Netflix.


يمكن العثور على وصف أكثر تفصيلًا للهندسة المعمارية في المقالة " جدولة دفاتر الملاحظات" على Netflix . لغرض هذا المنشور ، نحن نقتصر على المكونات الأساسية الثلاثة للنظام: التخزين والتنفيذ والواجهة.




البنية الأساسية للكمبيوتر الدفتري على Netflix

التخزين


يستخدم Netflix Data Platform التخزين السحابي Amazon S3 و EFS ، والذي تعامله أجهزة الكمبيوتر المحمولة كنظم ملفات افتراضية. هذا يعني أن كل مستخدم لديه دليل رئيسي EFS يحتوي على مساحة عمل شخصية لأجهزة الكمبيوتر المحمولة. في هذه المساحة ، نقوم بتخزين أي دفتر ملاحظات تم إنشاؤه أو تحميله من قبل المستخدم. هذا هو أيضًا المكان الذي تحدث فيه القراءة والكتابة عندما يبدأ المستخدم تشغيل الكمبيوتر المحمول بشكل تفاعلي. نحن نستخدم المجموعة [مساحة العمل + اسم الملف] لمساحة الاسم ، أي /efs/users/kylek/notebooks/MySparkJob.ipynb للعرض والمشاركة وفي جدولة التنفيذ. مثل هذه الاتفاقية تمنع الاصطدامات وتسهل تحديد كل من المستخدم وموقع دفتر الملاحظات في EFS.


يسمح لك المسار إلى مساحة العمل بتجاهل تعقيد التخزين السحابي للمستخدم. على سبيل المثال ، يتم عرض أسماء ملفات دفتر الملاحظات فقط في الدليل ، أي MySparkJob.ipynb. يتوفر نفس الملف من خلال الجهاز: ~ / notebooks / MySparkJob.ipynb.



تخزين أجهزة الكمبيوتر المحمول مقابل الوصول


عندما يقوم المستخدم بتعيين مهمة بدء تشغيل دفتر الملاحظات ، يقوم المجدول بنسخ دفتر ملاحظات المستخدم من EFS إلى الدليل المشترك على S3. يصبح Notebook في S3 مصدر الحقيقة لجدولة الكمبيوتر الدفتري ، أو دفتر الملاحظات المصدر. في كل مرة يبدأ المجدول (المرسل) بتشغيل دفتر الملاحظات ، فإنه ينشئ دفتر ملاحظات جديد من المصدر. هذا الكمبيوتر الدفتري الجديد هو ما يبدأ فعلًا ويصبح سجلًا ثابتًا لتنفيذ معين ، يحتوي على التعليمات البرمجية القابلة للتنفيذ والإخراج وسجلات كل خلية. نحن نسميها الإخراج (الإخراج) دفتر.


يعد الإنشاء المشترك ميزة أساسية في Netflix. لذلك ، لم يكن مفاجئًا عندما بدأ المستخدمون في تبادل روابط URL إلى دفتر الملاحظات. مع نمو هذه الممارسة ، نواجه مشكلة إعادة الكتابة العرضية الناجمة عن الوصول المتزامن لعدة مستخدمين إلى نفس الكمبيوتر المحمول. أراد مستخدمونا طريقة لمشاركة دفتر الملاحظات النشط في وضع القراءة فقط. هذا أدى إلى إنشاء ركاب . تحت الغطاء ، يعرض Commuter Jupyter API على القائمة / الملفات و / api / المحتويات في قائمة الدليل ، لعرض محتويات الملفات ، والوصول إلى البيانات الأولية للملف. هذا يعني أنه يمكن للمستخدمين عرض دفاتر الملاحظات دون عواقب للمهام القتالية أو دفاتر الملاحظات المباشرة.


حساب


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


يتم توفير حاوية عندما يبدأ المستخدم خادم الكمبيوتر المحمول. نحن نقدم الافتراضات المنطقية لموارد الحاويات التي تعمل من أجل ~ 87.3 ٪ من أنماط التنفيذ. عندما لا يكون ذلك كافيًا ، يمكن للمستخدمين طلب المزيد من الموارد باستخدام واجهة بسيطة.



يمكن للمستخدمين اختيار الكثير أو أقل من حساب ذاكرة + ما يحتاجون إليه


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


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


واجهة


في وقت سابق ، وصفنا رؤيتنا التي مفادها أن أجهزة الكمبيوتر المحمولة يجب أن تكون الأداة الأكثر فعالية والأفضل للعمل مع البيانات. ولكن هذا يمثل تحديا مثيرا للاهتمام: كيف يمكن واجهة واحدة دعم جميع المستخدمين؟ لا نعرف الإجابة الدقيقة ، لكن لدينا بعض الأفكار.


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


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


يمكنك إلقاء نظرة على مستكشف البيانات أثناء تنفيذ هذا المثال على MyBinder. (قد يستغرق التحميل عدة دقائق)



تصور مجموعة بيانات تقرير السعادة العالمية باستخدام مستكشف بيانات nteract


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



الدعم الأصلي لأجهزة الكمبيوتر المحمولة ذات المعلمات في nteract


Jupyter notebook , . , notebook. 12 , . , , , . , , Spark DataFrames, Scala. .


Open Source Projects


Netflix . , , . Netflix Data Platform Netflix OSS . “Not Invented Here”. Spark , Jupyter pandas .


, , Jupyter Project, . , nteract notebook UI Netflix. , . , Jupyter Notebook, , , . nteract.


, Netflix, . , , , , . , Papermill, .




What's Next ( )


, – (Netflixers) . Notebook Netflix. , . , .


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

الجزء الأول: ابتكار أجهزة الكمبيوتر المحمول (هذا المنشور )

الجزء الثاني: جدولة أجهزة الكمبيوتر المحمولة



من المترجم:

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

Source: https://habr.com/ru/post/ar439272/


All Articles