ایده ها و جلساتی در مورد اینکه چه فرآیندهای دیگری را می توان خودکار کرد، هر روز در مشاغل با اندازه های مختلف مطرح می شود. اما علاوه بر این که زمان زیادی را می توان برای ایجاد یک مدل صرف کرد، باید آن را صرف ارزیابی آن و بررسی تصادفی نبودن نتیجه کنید. پس از اجرا، هر مدلی باید تحت نظارت و بررسی دوره ای قرار گیرد.
و اینها تمام مراحلی است که باید در هر شرکتی صرف نظر از اندازه آن طی کنید. اگر در مورد مقیاس و میراث Sberbank صحبت می کنیم، تعداد تنظیمات دقیق به طور تصاعدی افزایش می یابد. تا پایان سال 2019، Sberbank از بیش از 2000 مدل استفاده کرده بود. تنها توسعه یک مدل کافی نیست، بلکه باید با سیستمهای صنعتی ادغام شود، مارتهای داده برای مدلهای ساختمانی توسعه داده شود و از کنترل عملکرد آن بر روی یک خوشه اطمینان حاصل شود.
تیم ما در حال توسعه پلت فرم Sber.DS است. این به شما امکان می دهد مشکلات یادگیری ماشین را حل کنید، روند آزمایش فرضیه ها را سرعت می بخشد، در اصل فرآیند توسعه و اعتبارسنجی مدل ها را ساده می کند و همچنین نتیجه مدل را در PROM کنترل می کند.
برای اینکه انتظارات شما را فریب ندهم، می خواهم از قبل بگویم که این پست مقدماتی است و در زیر برش، برای شروع، در مورد آنچه اساساً در زیر کاپوت پلت فرم Sber.DS وجود دارد، گفته می شود. داستان چرخه عمر یک مدل از ایجاد تا اجرا را به طور جداگانه شرح خواهیم داد.
Sber.DS از چندین مؤلفه تشکیل شده است که مهمترین آنها کتابخانه، سیستم توسعه و سیستم اجرای مدل است.
کتابخانه چرخه عمر مدل را از لحظه ای که ایده توسعه آن ظاهر می شود تا اجرای آن در PROM، نظارت و از کار انداختن کنترل می کند. بسیاری از ویژگی های کتابخانه توسط قوانین تنظیم کننده دیکته شده است، به عنوان مثال، گزارش و ذخیره نمونه های آموزشی و اعتبار سنجی. در واقع این رجیستر تمام مدل های ماست.
سیستم توسعه برای توسعه بصری مدل ها و روش های اعتبار سنجی در نظر گرفته شده است. مدلهای توسعهیافته تحت اعتبارسنجی اولیه قرار میگیرند و برای انجام وظایف تجاری خود به سیستم اجرایی تحویل داده میشوند. همچنین در سیستم اجرا می توان مدل را بر روی مانیتور قرار داد تا به صورت دوره ای روش های اعتبارسنجی برای کنترل عملکرد آن راه اندازی شود.
چندین نوع گره در سیستم وجود دارد. برخی برای اتصال به منابع داده های مختلف طراحی شده اند، برخی دیگر - برای تبدیل داده های منبع و غنی سازی آن (نشانه گذاری). گره های زیادی برای ساخت مدل های مختلف و گره هایی برای اعتبار سنجی آنها وجود دارد. توسعهدهنده میتواند دادهها را از هر منبعی بارگیری کند، تبدیل کند، فیلتر کند، دادههای میانی را تجسم کند، آنها را به قطعات تقسیم کند.
این پلتفرم همچنین شامل ماژول های آماده ای است که می توان آنها را به منطقه پروژه کشید. تمام اقدامات با استفاده از یک رابط بصری انجام می شود. در واقع می توانید بدون یک خط کد مشکل را حل کنید.
اگر قابلیت های داخلی کافی نباشد، سیستم توانایی ایجاد سریع ماژول های خود را فراهم می کند. ما یک حالت توسعه یکپارچه را بر اساس ایجاد کرده ایم
معماری Sber.DS بر روی میکروسرویس ها ساخته شده است. نظرات زیادی در مورد اینکه میکروسرویس چیست وجود دارد. برخی افراد فکر می کنند که کافی است کد یکپارچه را به قطعات تقسیم کنند، اما همچنان به همان پایگاه داده می روند. میکروسرویس ما باید فقط از طریق REST API با میکروسرویس دیگری ارتباط برقرار کند. هیچ راه حلی برای دسترسی مستقیم به پایگاه داده وجود ندارد.
ما سعی میکنیم سرویسها را بسیار بزرگ و کند نگه داریم: یک نمونه نباید بیش از 4-8 گیگابایت رم مصرف کند و باید بتواند درخواستها را با راهاندازی نمونههای جدید مقیاس افقی کند. هر سرویس فقط از طریق REST API با دیگران ارتباط برقرار می کند (
هسته برنامه با استفاده از Spring Framework به زبان جاوا نوشته شده است. این راه حل در ابتدا برای استقرار سریع در زیرساخت ابری طراحی شده بود، بنابراین برنامه با استفاده از یک سیستم کانتینری ساخته شده است.
یکی از «تراشههای» پلتفرم ما این است که میتوانیم کد توسعهیافته در رابط بصری را در هر سیستم اجرای مدل Sberbank اجرا کنیم. اکنون دو مورد از آنها وجود دارد: یکی در Hadoop، دیگری در OpenShift (Docker). ما در اینجا متوقف نمیشویم و ماژولهای یکپارچهسازی را برای اجرای کد در هر زیرساخت، از جمله در محل و در فضای ابری ایجاد میکنیم. از نظر امکانات برای ادغام موثر در اکوسیستم Sberbank، ما همچنین قصد داریم از کار با محیط های زمان اجرا موجود پشتیبانی کنیم. در آینده، راه حل را می توان به طور انعطاف پذیر "خارج از جعبه" در هر چشم انداز هر سازمان ادغام کرد.
کسانی که تا به حال سعی کردهاند راهحلی را حفظ کنند که پایتون را روی Hadoop در PROM اجرا میکند، میدانند که تهیه و ارائه یک محیط پایتون سفارشی به هر دادهنود کافی نیست. تعداد زیادی از کتابخانه های C / C ++ برای یادگیری ماشین که از ماژول های پایتون استفاده می کنند، به شما اجازه آرامش نمی دهند. ما نباید هنگام افزودن کتابخانه ها یا سرورهای جدید، ضمن حفظ سازگاری با کد مدل از قبل پیاده سازی شده، بسته ها را به روز رسانی کنیم.
چندین روش برای انجام این کار وجود دارد. به عنوان مثال، چندین کتابخانه پرکاربرد را از قبل آماده کرده و در PROM پیاده سازی کنید. معمولاً از توزیع Hadoop کلودرا استفاده می شود
بانک امنیت اجرای کدهای شخص ثالث را بسیار جدی می گیرد، بنابراین ما از ویژگی های جدید هسته لینوکس، که در آن یک فرآیند در یک محیط ایزوله اجرا می شود، نهایت استفاده را می کنیم.
امسال قصد داریم MVP مدل های در حال اجرا نوشته شده در Python/R/Java در Hadoop را تکمیل کنیم. ما وظیفه بلندپروازانه ای را برای خود قرار داده ایم که یاد بگیریم چگونه هر محیط کاربری را در Hadoop اجرا کنیم تا به هیچ وجه کاربران پلتفرم خود را محدود نکنیم.
علاوه بر این، همانطور که مشخص شد، بسیاری از متخصصان DS در ریاضیات و آمار عالی هستند، مدلهای جالبی میسازند، اما در تبدیل دادههای بزرگ به خوبی مهارت ندارند و برای تهیه نمونههای آموزشی به کمک مهندسان داده ما نیاز دارند. ما تصمیم گرفتیم به همکاران خود کمک کنیم و ماژول های مناسبی برای تبدیل معمولی و آماده سازی ویژگی ها برای مدل های موتور اسپارک ایجاد کنیم. این اجازه می دهد تا زمان بیشتری به توسعه مدل ها اختصاص داده شود و منتظر مهندسان داده برای تهیه مجموعه داده جدید نباشند.
ما افرادی با دانش در زمینه های مختلف داریم: لینوکس و DevOps، Hadoop و Spark، Java و Spring، Scala و Akka، OpenShift و Kubernetes. دفعه بعد در مورد کتابخانه مدل ها، نحوه گذراندن مدل در چرخه عمر شرکت، اعتبارسنجی و پیاده سازی صحبت خواهیم کرد.
منبع: www.habr.com