خبر

  • تک بورد - پایان آزمایش تیتر ارس AI - ما آمدیم ، دیدیم ، از زمان زیادی برای محاسبه استفاده کردیم

    پایان آزمایش تیتر ارس AI - ما آمدیم ، دیدیم ، از زمان زیادی برای محاسبه استفاده کردیم
    27 روز و 22 ساعت قبل

    به نظر می رسد ساختن مدل یادگیری ماشینی برای ارزیابی عناوین واقعاً دشوار است.
    ممکن است ما بیش از آنچه می توانستیم بجویم گزیده ایم.

    یک مهندس آمازون به من گفت که وقتی شنید که من می خواهم با عنوان های Ars چه کاری انجام دهم ، اولین چیزی که فکر کرد این بود که ما یک مشکل سخت فریبنده را انتخاب کرده ایم. وی هشدار داد که من باید در تعیین صحیح انتظاراتم مراقب باشم. اگر این یک مشکل تجاری واقعی بود ... خوب ، بهترین کاری که او می توانست انجام دهد این بود که پیشنهاد مجدد این مسئله را از "عنوان خوب یا بد" به موضوعی کمتر ملموس ارائه دهد.

    این جمله خانوادگی ترین جمله بود و به طور خلاصه از چارچوب نتیجه دوره چهار هفته ای ، نیمه کاره سقوط در یادگیری ماشین. از این لحظه ، هسته های PyTorch من آنقدر مشعل نیستند که آتش سوزی کمپرسی هستند. دقت ، به لطف مداخله حرفه ای ، کمی بهبود یافته است ، اما من نزدیک به استفاده از یک راه حل مفید نیستم. امروز ، همانطور که گفته می شود برای اولین بار در بیش از یک سال در تعطیلات به ملاقات پدر و مادرم رفته ام ، من روی یک کاناپه در اتاق نشیمن آنها نشسته ام و مشغول کار بر روی این پروژه هستم و به طور تصادفی یک کار آموزش مدل را به صورت محلی روی لپ تاپ دل که آورده ام - با پردازنده 2.4 گیگاهرتزی Intel Core i3 7100U - به جای نسخه SageMaker همان نوت بوک Jupyter. دل آنقدر قفل شد که مجبور شدم باتری را برای راه اندازی مجدد بیرون بیاورم.

    اما سلام ، اگر دستگاه لزوماً یاد نمی گیرد ، حداقل من این کار را می کنم. ما تقریباً در پایان هستیم ، اما اگر این یک تکالیف کلاسی باشد ، نمره من در متن احتمالاً "ناقص" است.

    این باند برخی از یادگیری های ماشین را امتحان می کند

    به recap: جفت عناوین مورد استفاده در مقاله های Ars طی پنج سال گذشته با اطلاعاتی درباره برندگان آزمون A / B و نرخ کلیک نسبی آنها به من داده شد. سپس از من خواسته شد تا با استفاده از SageMaker سرویس های وب آمازون یک الگوریتم یادگیری ماشین برای پیش بینی برنده در جفت عناوین بعدی ایجاد کنم. من قبل از مشورت با منابع مختلف آمازون برای برخی از کمکهای مورد نیاز ، در برخی از کوچه های کور ML پایین رفتم.

    اکثر قطعات برای تکمیل این پروژه آماده هستند. ما (با دقت دقیق تر ، خط نجات "با یک دوست در AWS تماس بگیریم") با رویکردهای مختلف مدل سازی موفقیت هایی کسب کردیم ، اگرچه درجه دقت (درست در شمال 70 درصد) به اندازه دلخواه مشخص نبود. من کافی هستم که بتوانم با تولید (با استفاده از چربی اضافی آرنج) یک مدل و کد مستقر برای اجرای پیش بینی ها روی جفت عناوین اگر یادداشت های آنها را گهواره کنم و از الگوریتم های ایجاد شده در نتیجه استفاده کنم.

    تبلیغات

    اما باید صادقانه بگویم: تلاش های من برای تولید مثل آن چه روی سرور محلی خودم و چه روی SageMaker کار می کند بی نتیجه مانده است. در حال فرار از پیچیدگی های SageMaker (از جمله فراموشی تعطیل کردن نوت بوک ها ، اجرای فرایندهای یادگیری خودکار که بعداً به من توصیه شد برای "مشتریان سازمانی" و موارد دیگر باشد) ، من بیش از بودجه AWS صرف کردم خیالم راحت است که در یک ماجراجویی بدون هزینه هزینه می کنم. و گرچه من از نظر فکری می فهمم که چگونه مدلهای حاصل از این همه شیفتگیها را به کار ببندم ، من هنوز هم اجرای واقعی آن استقرار را رفع اشکال می کنم.

    اگر هیچ چیز دیگری نیست ، این پروژه به یک درس بسیار جالب تبدیل شده است تمام راه هایی که پروژه های یادگیری ماشین (و افراد پشت سر آنها) شکست می خورند. و شکست این بار با خود داده ها آغاز شد - یا حتی با سوالی که ما تصمیم گرفتیم با آنها بپرسیم.

    من هنوز هم ممکن است یک راه حل مفید برای این تلاش پیدا کنم. اما در ضمن ، من قصد دارم مجموعه داده های موجود در GitHub خود را که با آنها کار کردم به اشتراک بگذارم تا م componentلفه تعاملی تری برای این ماجراجویی فراهم کنم. اگر می توانید نتایج بهتری کسب کنید ، حتماً هفته آینده با ما همراه باشید تا من را در برنامه خلاصه شده این سریال مسخره کنید. (جزئیات بیشتر در پایان در مورد آن.)

    چسب مدلر

    پس از چندین بار تنظیم مدل SqueezeBert که در تلاش برای تغییر مسیر برای آموزش عناوین مورد استفاده قرار دادیم ، مجموعه حاصل به طور مداوم بود گرفتن 66 درصد دقت در تست - کمی کمتر از قول قبلی که 70 درصد بالاتر از آن پیشنهاد شده بود.

    این شامل تلاش برای کاهش اندازه مراحل بین چرخه های یادگیری برای تنظیم ورودی ها است - ابر پارامتر "میزان یادگیری" که برای جلوگیری از نصب بیش از حد یا کمبود مدل استفاده می شود. ما میزان یادگیری را به میزان قابل توجهی کاهش دادیم ، زیرا وقتی مقدار کمی داده داشته باشید (همانطور که ما در اینجا انجام می دهیم) و میزان یادگیری شما خیلی زیاد باشد ، اساساً فرضیات بزرگتری از نظر ساختار و نحو مجموعه داده ها در نظر گرفته می شود. کاهش این مدل را وادار می کند تا آن جهش ها را به مراحل کوچک کودک تنظیم کند. میزان یادگیری اصلی ما روی 2x10-5 (2E-5) تنظیم شده است. ما آن را به 1E-5 رساندیم.

    ما همچنین یک مدل بسیار بزرگتر را که روی مقدار زیادی متن از قبل آموزش دیده بود ، امتحان کردیم ، به نام DeBERTa (BERT با رمزگشایی با توجه از هم گسیخته). DeBERTa یک مدل بسیار پیچیده است: 48 لایه را با 1.5 میلیارد پارامتر تغییر شکل دهید.

    تبلیغات

    DeBERTa بسیار فانتزی است و در معیارهای SuperGLUE - اولین مدل برای انجام این کار ، از انسانها در انجام وظایف درک زبان طبیعی پیشی گرفته است.

    بسته استقرار حاصل نیز بسیار سنگین است: 2.9 گیگابایت. با این همه نیروی اضافی یادگیری ماشین ، ما به دقت 72 درصدی رسیدیم. با توجه به اینکه ظاهراً DeBERTa هنگام لکه گیری معنی درون متن بهتر از یک انسان است ، همانطور که یک اپراتور مشهور نیروگاه هسته ای گفته است ، این دقت "عالی نیست ، وحشتناک نیست."

    مارپیچ مرگ استقرار

    علاوه بر این ، ساعت در حال تیک زدن بود. من باید سعی کنم نسخه خودم را آماده و در دسترس قرار دهم تا با داده های واقعی امتحان کنم.

    تلاش برای استقرار محلی ، خصوصاً از منظر عملکرد ، خوب پیش نرفت. بدون GPU خوب ، مشاغل PyTorch که مدل و نقطه پایانی را اجرا می کردند به معنای واقعی کلمه سیستم من را متوقف کردند.

    بنابراین ، من به تلاش برای استقرار در SageMaker بازگشتم. من سعی کردم کار کوچکتر مدل سازی SqueezeBert را در SageMaker به تنهایی اجرا کنم ، اما به سرعت پیچیده تر شد. آموزش به PyTorch ، چارچوب یادگیری ماشین پایتون و همچنین مجموعه ای از ماژول های دیگر نیاز دارد. اما وقتی ماژولهای مختلف Python مورد نیاز خود را به هسته SageMaker PyTorch وارد کردم ، علیرغم به روزرسانی ها کاملاً مطابقت نداشتند.

    در نتیجه ، بخشهایی از کدی که روی سرور محلی من کار می کرد از کار افتاد و من تلاشها در فروپاشی پیچیدگی وابستگی فرو رفت. معلوم شد که مشکلی در نسخه کتابخانه NumPy وجود دارد ، مگر در مواردی که مجبور شدم دوباره نصب کنم (pip uninstall numpy، pip install numpy -no-cache-dir) ، نسخه همان نسخه بود و خطا همچنان ادامه داشت. سرانجام آن را برطرف کردم ، اما پس از آن با خطای دیگری روبرو شدم که من را از ادامه کار آموزشی منصرف کرد و به من دستور داد تا با خدمات مشتری تماس بگیرم:

    ResourceLimitExceded: هنگام تماس با خطایی (ResourceLimitExceded) خطایی رخ داد عملکرد CreateTrainingJob: حد سرویس در سطح حساب "ml.p3.2xlarge برای استفاده از شغل آموزش" 0 نمونه است ، با استفاده فعلی از 0 نمونه و یک درخواست دلتا از 1 نمونه. لطفاً برای درخواست افزایش این محدوده با پشتیبانی AWS تماس بگیرید.

    برای تکمیل کامل این تلاش ، لازم بود که آمازون سهمیه خود را بالا ببرم - چیزی که من در هنگام قطع برق پیش بینی نکرده بودم. این یک راه حل آسان است ، اما عیب یابی درگیری ماژول بیشتر روز را خسته می کند. وقتی که می خواستم با استفاده از مدل پیش ساخته ای که متخصص من ارائه داد قدم به قدم پیش بکشید و آن را به عنوان نقطه پایانی SageMaker به کار ببرم.

    این تلاش اکنون در وقت اضافی است. این جایی است که من می توانم در مورد چگونگی عملکرد مدل در آزمایش بر علیه جفت های اخیر عنوان صحبت کنم - اگر هرگز مدل را به آن نقطه برسانم. اگر در نهایت بتوانم موفق شوم ، نتیجه را در نظرات و در یادداشتی در صفحه GitHub قرار می دهم.





خبرهای دیگر از فناوری اطلاعات