این بخش به جزئیات خط لوله آموزشی می پردازد.
بهینه سازی خط لوله ورودی
خلاصه: علل و مداخلات خطوط لوله محدود به ورودی بسیار وابسته به وظیفه هستند. از یک پروفایلر استفاده کنید و به مشکلات رایج توجه کنید.
برای تشخیص خطوط لوله محدود به ورودی از یک پروفایلر مناسب مانند یکی از موارد زیر استفاده کنید:
- Perfetto برای JAX
- پروفایلر TensorFlow برای TensorFlow.
در نهایت، علل و مداخلات خاص به شدت وابسته به وظیفه هستند. ملاحظات مهندسی گسترده تر (به عنوان مثال، به حداقل رساندن ردپای دیسک) ممکن است به عملکرد خط لوله ورودی آسیب برساند.
موارد زیر علل متداول خطوط لوله محدود به ورودی هستند:
- داده ها با فرآیند آموزش ترکیب نمی شوند و باعث تاخیر ورودی/خروجی می شود. به عنوان مثال، خواندن داده های آموزشی از طریق شبکه ممکن است باعث تاخیر ورودی/خروجی شود.
- پیش پردازش آنلاین گران قیمت. یک بار آفلاین پیش پردازش را در نظر بگیرید و نتایج را ذخیره کنید.
- موانع همگام سازی ناخواسته که با واکشی اولیه خط لوله داده تداخل دارند. برای مثال، هنگام همگامسازی معیارها بین دستگاه و میزبان در CommonLoopUtils .
ما مداخلات زیر را برای خطوط لوله ورودی پیشنهاد می کنیم:
- خط لوله ورودی ابزار برای واکشی اولیه نمونه ها (به عنوان مثال، tf.data.Dataset.prefetch ).
- ویژگیها و ابردادههای استفاده نشده را از هرکدام تا حد امکان در مراحل اولیه حذف کنید.
- برای مثال، با استفاده از سرویس tf.data ، تعداد نمونههای ایجاد شغل را برای خط لوله ورودی افزایش دهید.
ارزیابی عملکرد مدل
خلاصه: ارزیابی را در اندازه های دسته ای بزرگتر از آموزش اجرا کنید. ارزیابی ها را در فواصل گام های منظم اجرا کنید، نه در فواصل زمانی منظم.
تنظیمات ارزیابی
برای ارزیابی عملکرد مدل های خود می توانید از تنظیمات زیر استفاده کنید:
- ارزیابی آنلاین : زمانی که مدل در حال ارائه پیشبینیها در محیط تولید است، معیارها را جمعآوری کنید. ارزیابی آنلاین عموماً واقع بینانه ترین ارزیابی را از کیفیت مدل ارائه می دهد زیرا با روش استفاده از مدل مطابقت دارد.
- ارزیابی آفلاین : زمانی که مدل در آموزش آفلاین، اعتبارسنجی یا مجموعههای آزمایشی نماینده محیط تولید اجرا میشود، معیارها را جمعآوری کنید. بسته به مشکل، ارزیابی آفلاین می تواند نسبتاً درگیر و از نظر محاسباتی گران باشد.
- ارزیابیهای دورهای : معیارهایی را در طول آموزش مدل جمعآوری کنید که ممکن است یک پروکسی برای ارزیابی آفلاین و/یا روی زیرمجموعهای از دادههای مورد استفاده در ارزیابی آفلاین باشد. ارزیابی های دوره ای عملی ترین و مقرون به صرفه ترین انتخاب هستند اما ممکن است محیط تولید را به طور کامل نشان ندهند. هدف استفاده از یک پروکسی مناسب برای ارزیابی آفلاین، بدون به خطر انداختن قابلیت اطمینان سیگنال دریافتی در طول آموزش.
تنظیم ارزیابی های دوره ای
انجام ارزیابی های دوره ای در طول تمرین را به دلایل زیر توصیه می کنیم:
- برای نظارت بر پیشرفت آموزش در زمان واقعی .
- برای تسهیل انتخاب نقطه بازرسی مدل گذشته نگر.
- برای بررسی منحنی های تمرین در پایان آموزش .
سادهترین پیکربندی این است که هم آموزش و هم ارزیابیهای دورهای را در یک نمونه محاسباتی انجام دهیم، بهطور متناوب بین آموزش و ارزیابی. در این مورد، اندازه دسته ای که برای انجام ارزیابی ها استفاده می شود باید حداقل به اندازه اندازه دسته ای باشد که برای آموزش استفاده می شود. دلیل آن این است که شما نیازی به حفظ فعال سازی مدل در طول ارزیابی ندارید، که این امر الزامات محاسباتی را برای هر مثال کاهش می دهد.
ارزیابی های دوره ای را در فواصل گام های منظم انجام دهید، نه در فواصل زمانی. ارزیابی بر اساس فواصل زمانی میتواند تفسیر منحنیهای آموزشی را سختتر کند، بهویژه زمانی که آموزش ممکن است از پیشپرداخت شغلهای آموزشی، مشکلات تأخیر شبکه و غیره رنج ببرد.
تناوب در اعتبارسنجی و معیارهای آزمون (هنگام استفاده از یک مجموعه آموزشی مختلط، مجموعه اعتبارسنجی، تقسیم مجموعه تست) می تواند نشان دهنده اشکالات پیاده سازی باشد مانند:
- همپوشانی داده ها با داده های آموزشی را آزمایش کنید.
- داده های آموزشی به درستی در هم ریخته نمی شوند.
ارزیابی در فواصل گامهای منظم میتواند تشخیص این مسائل را آسانتر کند.
دسته های جزئی می توانند زمانی رخ دهند که مجموعه های ارزیابی بر اندازه دسته قابل تقسیم نباشند. اطمینان حاصل کنید که نمونههای بالشتکشده به درستی وزنبندی شدهاند (مانند میانگین وزنی نسبت به مثالهایی که میانگین تلفات را در دسته محاسبه میکنند) تا از تعصب تابع ضرر توسط آنها جلوگیری شود. اغلب، میتوانید به این نمونههای بالشتکی وزن صفر بدهید.
ذخیره اطلاعات کافی در هر ارزیابی برای پشتیبانی از تجزیه و تحلیل آفلاین. در حالت ایدهآل، پیشبینیها را روی مجموعهای از نمونههای جداگانه ذخیره کنید، زیرا میتوانند برای اشکالزدایی بسیار ارزشمند باشند. تولید مصنوعاتی مانند SavedModels بازرسی مدل موقت را پس از پایان کار ارزیابی ساده می کند.
انتخاب نمونه برای ارزیابی دوره ای
کار ارزیابی دوره ای ممکن است به اندازه کافی سریع اجرا نشود تا معیارهای ارزیابی آفلاین کامل را در مدت زمان معقولی محاسبه کند. این مشکل اغلب نیاز به نمونه گیری داده ها برای ارزیابی دوره ای دارد. هنگام ساخت یک مجموعه داده نمونه، مسائل مربوط به اندازه نمونه و نگرانی های خاص در مجموعه داده های نامتعادل را در نظر بگیرید.
اندازه نمونه
بررسی کنید که عملکرد محاسبهشده روی مجموعه داده نمونهگیری شده مورد استفاده در کار دورهای با عملکرد کل مجموعه ارزیابی آفلاین مطابقت داشته باشد. یعنی اطمینان حاصل کنید که بین مجموعه داده نمونه برداری شده و مجموعه داده کامل هیچ گونه انحرافی وجود ندارد.
مجموعه داده ای که برای ارزیابی دوره ای استفاده می کنید باید هر دو مورد زیر باشد:
- به اندازه کافی کوچک است که به راحتی پیش بینی های مدل را در کل آن ایجاد کند.
- به اندازه کافی بزرگ برای انجام هر دو مورد زیر:
- اندازه گیری دقیق پیشرفت های مدل؛ یعنی اندازهگیریها نباید تحت تأثیر نویز برچسب قرار گیرند.
- چندین ارزیابی از این دست را در طول کارآزماییها به ترتیب انجام دهید و همچنان تخمینهای دقیقی را تولید کنید. به این معنا که به اندازه کافی بزرگ باشد تا از "تطبیق" تطبیقی با مجموعه اعتبار سنجی در طول زمان به گونه ای که به یک مجموعه آزمایشی نگه داشته تعمیم نمی یابد، اجتناب شود. با این حال، این توجه به ندرت یک نگرانی عملی است.
مجموعه داده های نامتعادل
برای مجموعه دادههای نامتعادل، عملکرد در کلاسهای اقلیت کمیاب اغلب پر سر و صدا است. برای مجموعه دادههایی که فقط تعداد کمی از نمونههای اقلیت دارند، تعداد نمونههای پیشبینیشده را به درستی ثبت کنید تا بینش بیشتری در مورد بهبود دقت به دست آورید. به عنوان مثال، بهبود حساسیت 0.05 هیجان انگیز به نظر می رسد، اما آیا این بهبود فقط به دلیل صحیح بودن یک مثال دیگر بود؟
ذخیره ایست های بازرسی و انتخاب گذشته نگر بهترین ایست بازرسی
خلاصه: آموزش را برای تعداد ثابتی از مراحل اجرا کنید و به صورت گذشته نگر بهترین نقطه بازرسی را از بین دویدن انتخاب کنید.
اکثر چارچوبهای یادگیری عمیق از چک پوینت مدل پشتیبانی میکنند. یعنی وضعیت فعلی مدل به صورت دوره ای در دیسک ذخیره می شود. چک پوینت به کار آموزشی اجازه می دهد تا برای محاسبه وقفه های نمونه انعطاف پذیر باشد. بهترین نقطه بازرسی اغلب آخرین ایست بازرسی نیست، به ویژه زمانی که عملکرد مجموعه اعتبارسنجی در طول زمان به افزایش خود ادامه نمی دهد، بلکه در حدود یک مقدار خاص در نوسان است.
خط لوله را راهاندازی کنید تا N بهترین پستهای بازرسی را که تاکنون در طول آموزش دیدهاند، پیگیری کنید. در پایان آموزش، انتخاب مدل به سادگی به معنای انتخاب بهترین پست بازرسی است. ما این رویکرد را انتخاب بهینه ایست بازرسی گذشته نگر می نامیم. پشتیبانی از توقف زودهنگام احتمالی معمولاً ضروری نیست، زیرا شما یک بودجه آزمایشی را از قبل مشخص کردهاید و N بهترین نقطههای بازرسی را که تاکنون مشاهده شدهاند حفظ میکنید.
راه اندازی ردیابی آزمایش
خلاصه: هنگام ردیابی آزمایشهای مختلف، تعدادی از موارد ضروری را ردیابی کنید، مانند بهترین عملکرد یک ایست بازرسی در مطالعه، و توضیح کوتاهی از مطالعه.
توصیه می کنیم نتایج آزمایش را در یک صفحه گسترده ردیابی کنید. صفحات گسترده ما اغلب شامل ستون های زیر است:
- نام مطالعه
- پیوندی به هر جایی که پیکربندی مطالعه ذخیره شده است.
- یادداشت ها یا شرح مختصری از مطالعه.
- تعداد آزمایشهای اجرا شده
- عملکرد مجموعه اعتبار سنجی بهترین ایست بازرسی در مطالعه.
- دستورات بازتولید خاص یا یادداشت هایی در مورد تغییرات ارسال نشده برای راه اندازی آموزش لازم است.
یک سیستم ردیابی مناسب را پیدا کنید که حداقل اطلاعات ذکر شده در بالا را ثبت کند. آزمایش های ردیابی نشده نیز ممکن است وجود نداشته باشند.
جزئیات اجرای نرمال سازی دسته ای
خلاصه: امروزه، اغلب میتوانید نرمالسازی دستهای را با LayerNorm جایگزین کنید، اما در مواردی که نمیتوانید آن جایگزینی را انجام دهید، هنگام تغییر اندازه دسته یا تعداد میزبان، جزئیات پیچیدهای وجود دارد.
نرمال سازی دسته ای فعال سازی ها را با استفاده از میانگین و واریانس آنها نسبت به دسته فعلی عادی می کند. با این حال، در تنظیمات چند دستگاه، این آمار در هر دستگاه متفاوت است، مگر اینکه به طور صریح همگام شوند. گزارشهای حکایتی (عمدتاً در ImageNet) نشان میدهد که محاسبه این آمارهای نرمالسازی تنها با استفاده از 64 مثال در عمل بهتر عمل میکند. (به توضیحات Ghost Batch Normalization در Train بیشتر نگاه کنید، بهتر تعمیم دهید: بستن شکاف تعمیم در آموزش دسته ای بزرگ شبکه های عصبی .) جدا کردن اندازه کل دسته و تعداد نمونه های مورد استفاده برای محاسبه آمار هنجار دسته ای به ویژه برای اندازه دسته مفید است. مقایسه ها
پیادهسازی نرمالسازی دستهای شبح همیشه مواردی را که در آن اندازه دستهای هر دستگاه بزرگتر از اندازه دسته مجازی باشد، به درستی مدیریت نمیکنند. در این مورد، برای به دست آوردن تعداد مناسب نمونه های آماری هنجار دسته ای، باید دسته ای را در هر دستگاه نمونه برداری کنید.
میانگین متحرک نمایی (EMAs) که در نرمال سازی دسته ای حالت آزمایشی استفاده می شود، فقط یک ترکیب خطی از آمار تمرین است. بنابراین، شما فقط باید این EMA ها را قبل از ذخیره آنها در نقاط بازرسی همگام کنید. با این حال، برخی از پیادهسازیهای رایج نرمالسازی دستهای، این EMAها را همگامسازی نمیکنند و فقط EMA را از دستگاه اول ذخیره میکنند.
ملاحظات برای خطوط لوله چند میزبان
خلاصه: برای ورود به سیستم، evals، RNG ها، چک پوینت و به اشتراک گذاری داده ها، آموزش چند میزبان می تواند معرفی باگ ها را بسیار آسان کند!
برای خطوط لوله چند میزبان موارد زیر را انجام دهید:
- اطمینان حاصل کنید که خط لوله فقط در یک میزبان ثبت و بررسی می شود.
- قبل از ارزیابی یا بازرسی، آمار عادی سازی دسته ای را در بین میزبان ها همگام کنید.
- فایلهای داده شارد در سراسر میزبانها، زیرا معمولاً عملکرد را بهبود میبخشد.
حیاتی: اطمینان حاصل کنید که دانه های RNG در میزبان ها یکسان هستند (برای مقداردهی اولیه مدل)، و دانه هایی که در هاست ها متفاوت هستند (برای به هم زدن/پیش پردازش داده ها). بنابراین، مطمئن شوید که آنها را به درستی علامت گذاری کنید.