لینکدین به روش بهتری برای تست و تنظیم مدل های یادگیری ماشین نیاز داشت، بنابراین ابزار خود را نوشت که به Visual Studio Code متصل می شود.
یادگیری ماشین (ML) در حال تبدیل شدن به بخش مهمی از پشته برنامه های مدرن است. چه مدلهای مدلهای زبان بزرگ عمومی و بزرگ (LLM) مانند GPT یا مدلهای خصوصی در مقیاس کوچک که بر روی محتوای شرکت آموزش دیدهاند، توسعهدهندگان باید راههایی برای گنجاندن آن مدلها در کد خود بیابند.
یعنی یافتن راههایی برای آزمایش آن کد، بدون فشار دادن آن به سرورهای تولید. ما میتوانیم بر روی برخی از مفاهیم MLOps که برای مدیریت مدلهای زیربنایی استفاده میشوند، استفاده کنیم و آنها را با تکنیکهای آشنای devops ادغام کنیم. با این حال، بسیاری از این کار سفارشی است، با توسعه دهندگان که زنجیره ابزار خود را می سازند و مهارهای آزمایشی خود را می سازند. با تغییر تیم ها، چرخ دوباره و دوباره اختراع می شود.
در نتیجه، تحویل پروژهها بیشتر طول میکشد و درسهای کلیدی از تیمی به تیم دیگر منتقل نمیشوند. هیچ چارچوب مشترکی برای تعیین عملکرد واقعی و هزینههای استنتاج ناشی از آن وجود ندارد، و این کار را برای برنامههای کاربردی یادگیری ماشین خاص دشوار میکند، حتی اگر آنها به خوبی بتوانند ارزش قابل توجهی را برای یک شرکت ارائه کنند.
استفاده از Flyte برای ارکستراسیون ML در Kubernetes
یکی از مسیرهای آینده “ML devops” استفاده از ابزارهای هماهنگسازی گردش کار، مانند Flyte، برای ساخت و اجرای برنامههای ML است، از پلتفرمهای بومی ابری و کانتینرها برای اجرا در مقیاس بهره میبرند. ارزش زیادی در این رویکرد وجود دارد، زیرا یک پلتفرم واحد برای اجرای استنتاج، با استفاده از فناوریهایی مانند Kubernetes برای مقیاسبندی در صورت لزوم در اختیار شما قرار میدهد. اما فقط جنبه عملیاتی را پشتیبانی میکند، در حالی که همچنان از توسعهدهندگان میخواهد که با دادههای آزمایشی ناکافی و زیرساخت ابری اساسی خودشان کار کنند.
Flyte از پشتیبانی Kubernetes برای دسترسی به GPU از کانتینرها، جفت کردن محفظه محفظه مدل ها و پشتیبانی از کد با خط لوله هماهنگ سازی پایتون بهره می برد. موتور ارکستراسیون زیربنایی در Go نوشته شده است و به شما سازگاری با Kubernetes و عملکرد بالای مورد نیاز برای عملیات ML در زمان اجرا را می دهد.
با این حال، Flyte هنوز هم بسیاری از مشکلات مشابه سایر ابزارهای خط لوله را دارد، زیرا برنامهنویسان را ملزم میکند تا قبل از اینکه برنامه در برابر دادههای زنده آزمایش شود، توسعه را کامل کنند، حتی زمانی که فقط تغییر جزئی ایجاد میکنید. . در نتیجه، آزمایشهای محلی اغلب بر روی یک مجموعه دادههای مصنوعی و نظارتی انجام میشوند، مجموعهای که اغلب بسیار کوچکتر از مجموعه دادههای تولیدی است. مدلها همچنین برای اجرا بر روی لپتاپ یا سایر سیستمهای توسعه محدود هستند، که تعیین سطوح کوانتیزهسازی مناسب بدون چندین پاس را دشوار میکند.
بسیاری از شرکتها از Flyte برای میزبانی خطوط لوله یادگیری ماشین خود استفاده میکنند، از جمله شرکت تابعه LinkedIn مایکروسافت. LinkedIn یک سال پیش به استفاده از Flyte روی آورد و به زودی ابزارهای بین سازمانی را در بالای چارچوب ایجاد کرد. این امر برخی از تنگناها را از بین برد، به ویژه با دادن مجموعه ای مشترک به توسعه دهندگان که نیاز به ابزارهای سفارشی را کاهش می دهد. با این حال، تیم لینکدین هنوز قادر به رفع تمام مشکلات ناشی از ادغام یادگیری ماشین در یک محیط توسعه نیست. یک شکاف مهم فقدان ابزارهای توسعه تعاملی بود.
یک تجربه توسعه دهنده تعاملی برای Flyte
تیم LinkedIn ML کار بر روی ابزاری مبتنی بر توسعه از راه دور کد ویژوال استودیو برای پر کردن این شکاف. اکنون به عنوان یک پروژه منبع باز موجود است، FlyteInteractive توسعه ML را از فرآیندهای توسعه دستهای کنونی دور میکند. رویکردی که به توسعه اپلیکیشن مدرن بسیار نزدیکتر است.
FlyteInteractive همانطور که از نام آن پیداست، یک حالت توسعه تعاملی برای خطوط لوله Flyte است. FlyteInteractive به توسعه دهندگان این امکان را می دهد که عملیات مدل را بررسی کنند و پارامترهای مختلف را در حین کار در یک محیط نزدیک به تولید آزمایش کنند و از انزوا ارائه شده توسط ظروف Kubernetes Flyte و قابلیت های اشکال زدایی سرور راه دور Visual Studio Code بهره ببرند.
اگر از Flyte استفاده میکنید و مؤلفههای FlyteInteractive را نصب کردهاید، استفاده از FlyteInteractive به آسانی افزودن یک خط به کار پایتون است که کار ML شما را اجرا میکند. این یک خط، یک دکوراتور ساده @vscode، خط لوله شما را از حالت دستهای به حالت تعاملی تغییر میدهد و ظرفی را با یک سرور کد ویژوال استودیو. سپس میتوانید با VS Code به زمان اجرا کانتینر متصل شوید و با استفاده از ابزارهای آشنای اشکالزدایی در VS Code به یک کار در حال اجرا ML دسترسی داشته باشید.
مزیت این رویکرد این است که توسعه دهندگان می توانند به محیط های درجه تولید و داده های واقعی دسترسی پیدا کنند. حتی گزینه کار با مدل ها در مقیاس وجود دارد. FlyteInteractive به شما اجازه می دهد تا احساس بهتری نسبت به عملکرد و دقت مدل داشته باشید و خطر خطا را کاهش دهید. در عین حال، میتوانید برای تنظیم و کمی کردن مدلهای خود کار کنید، به طوری که آنها از منابع بهینه استفاده کنند و هزینههای عملیاتی را به حداقل برسانند.
بهعلاوه، Visual Studio Code به شما امکان دسترسی به اشکالزدای پایتون و سایر ابزارهای خاص زبان را میدهد که میتوانند به شما کمک کنند مدل در حال اجرا را با جزئیات بیشتری بررسی کنید. به جای منتظر ماندن برای نتایج یک کار دستهای، میتوانید نقاط شکست را تنظیم کنید و از دیباگر برای بازرسی عملیات، گام برداشتن و ایجاد تغییرات در حین استفاده استفاده کنید.
FlyteInteractive همچنین به شما امکان دسترسی به نوت بوک های Jupyter را می دهد که حاوی مدل شما و کد آن هستند. این به شما امکان دسترسی به تجزیه و تحلیل عددی و ابزارهای تجسم پایتون را میدهد تا دادههای آزمایشی خود را کاوش کنید و بفهمید که مدل شما چقدر دقیق است و آیا نتایجی که میگیرید از نظر آماری قابل توجه هستند یا خیر.
شروع به کار با FlyteInteractive
نصب FlyteInteractive به اندازه کافی ساده است، زیرا از طریق نصب کننده پیپ آشنا Python در دسترس است. هنگامی که FlyteInteractive را نصب کردید و دکوراتور vscode@ را به کار خود اضافه کردید، میتوانید از طریق کد ویژوال استودیو از طریق یک URL در کنسول Flyte یا با استفاده از خط فرمان Kubernetes برای باز کردن پورتی در غلاف آزمایشی خود، به آن متصل شوید. p>
سپس تنها کاری که باید انجام دهید این است که از گزینه run and debug در VS Code استفاده کنید و از اشکالزدای تعاملی داخلی آن استفاده کنید. اجرای اشکال زدایی ورودی ها را از وظیفه ای که ایجاد کرده اید به ارث می برد. شما می توانید از این برای ایجاد تغییرات در مدل خود در پرواز استفاده کنید. باید اطمینان حاصل کنید که این موارد در محیط توسعه خودتان کپی شده اند، به عنوان مثال به عنوان commit به Git، زیرا وقتی جلسه تعاملی بسته شود، از بین می روند.
یکی از ویژگی های مفیدتر FlyteInteractive یک زباله جمع کن داخلی است. این اطمینان حاصل می کند که محیط شما بدون ارائه نتایج، منابع را مصرف نمی کند. یک گزینه حداکثر زمان را برای زندگی تعیین می کند، در حالی که گزینه دیگر محدودیت هایی را برای زمان بیکاری تعیین می کند. در صورت تجاوز از هر یک از محدودیت ها، محفظه آزمایشی بسته و حذف می شود. به این ترتیب میتوانید مطمئن شوید که آزمایشهای ناموفق بیش از نیازشان هزینه ندارند.
نسخههای آینده FlyteInteractive میتوانند به خوبی قلابهای قابلیت مشاهده را به مدلهایی ارائه دهند که دادههایی را در مورد استفاده از منابع به ابزارهای finops ارائه میکنند، و به تیمها اجازه میدهند تا مدلها را کمی کنند تا نه تنها برای عملکرد و دقت، بلکه برای هزینه نیز طراحی شوند. افزودن ویژگیهای مشاهدهپذیری میتواند به تنظیم عملکرد و اشکالزدایی خط لوله ML به عنوان بخشی از یک برنامه بزرگتر کمک کند.
LinkedIn از زمانی که شروع به استفاده از FlyteInteractive کرد، ۹۶٪ پیشرفت در یافتن باگها و اجرای آزمایشها داشته است. قبل از FlyteInteractive، چرخه ساخت و آزمایش در سیستمهای زنده میتواند تا ۱۵ دقیقه طول بکشد تا یک گردش کار را آزمایش کند، با ۲۰٪ درصد موفقیت در یافتن اشکالات.
اگر از مدلهای Hugging Face، بهویژه نسل جدید مدلهای زبان کوچک استفاده میکنید، FlyteInteractive باید برای بدست آوردن سطح کوانتیزاسیون مناسب و دقت مناسب برای برنامههای شما بسیار مفید باشد. بیشتر نشسته اند تا ببینند آیا یک کار دسته ای همانطور که انتظار می رود تمام می شود یا خیر. ابزارهایی مانند FlyteInteractive بخشی ضروری از زنجیره ابزار ML خواهند بود.
پست های مرتبط
FlyteInteractive: توسعه تعاملی برای مدلهای یادگیری ماشین
FlyteInteractive: توسعه تعاملی برای مدلهای یادگیری ماشین
FlyteInteractive: توسعه تعاملی برای مدلهای یادگیری ماشین