Перевірити приклади та що означають втрати
Почніть з показу кількох перетворених прикладів та їхніх цілей. Перевірте розбиття, доповнення, маски та мітки, які фактично передаються у функцію втрат. Під час генерації інструкція може бути присутня у вході, не маючи при цьому сприяти тій самій меті, що й відповідь. Для класифікації помилка відповідності між номером і класом може залишити втрати обчислюваними, водночас спричиняючи виконання неправильної задачі.
Відокремте дуже малу підмножину для перевірки механіки, а не для оголошення узагальнення. Чи може цикл навчитися на цих прикладах, видавати скінченні значення та відновлювати правильні ідентифікатори? Якщо він зазнає невдачі, тривала оренда не вирішить діагностику. Далі тримайте навчання, валідацію та тестування окремо за одиницею, яка запобігає витокам: розмова, пацієнт, вихідний документ або період відповідно до вашого проєкту.
Проходити контрольні ворота на кожній фазі
Пілот повинен пройти через усі операції кампанії. Перший крок, який виділяє стан оптимізатора, може відрізнятися від наступних. Оцінювання на довших послідовностях може дати найбільший пік. Збереження або експорт також можуть вимагати пам'яті та часу. Тож не робіть висновків лише з завантаження ваг.
Зберігайте по одному рядку на фазу з вхідними параметрами, лічильником пам'яті, виміряною тривалістю та вердиктом. У PyTorch лічильники виділених тензорів і зарезервованої алокатором пам'яті є різними; вони не додаються. Фіксуйте кожен GPU з однаковими межами вимірювання. Тека пам'яті надає деталі базових ліній, синхронізації та абсолютних піків.
| Фаза | Перевірка | Якщо перевірка не вдалася |
|---|---|---|
| Дані | Ідентифікатори, цілі, довжини та маски | Виправити набір або перетворення |
| Прямий прохід і втрати | Очікувані розмірності, скінченні втрати | Дослідити зменшений батч і значення |
| Зворотний прохід | Очікувані градієнти, скінченні значення | Перевірити граф, точність і нормалізацію |
| Оновлення | Цільові параметри змінені, крок зараховано | Дослідити оптимізатор і накопичення |
| Валідаційний | Режим оцінювання, повні виходи | Відокремити його налаштування від налаштувань навчання |
| Відновлення | Прогрес і стан відновлено | Виправити checkpoint перед серією |
Технічні джерела: PyTorch — лічильники та керування пам'яттю
Рахувати приклади на одне оновлення
Мікробатч обробляється за один прохід. Накопичення поєднує кілька проходів перед одним оновленням. У прикладі з одним GPU, два приклади на мікробатч і вісім накопичень дають шістнадцять прикладів на одне повне оновлення. З 3 200 прикладами, пройденими один раз, і без неповного батчу це становить 200 оновлень. Ці розрахунки не передбачають ні тривалості, ні якості.
Фіксація кількості оновлень і зміна батчу можуть змінити кількість переглянутих прикладів. Фіксація епох може змінити кількість оновлень. Виберіть, що саме ваше порівняння повинно зберегти, і запишіть іншу величину. За кількох реплік даних підрахунок включає їхню кількість; паралелізм моделі не множить автоматично ефективний батч. Фінальні батчі та послідовності різної довжини вимагають узгодженої нормалізації.
Технічні джерела: PyTorch — накопичення та змішана точність
Змінювати пам'ять, не втрачаючи експериментального питання
Якщо пілот перевищує пам'ять, визначте фазу та вхід, які є причиною. Зменшений мікробатч може зменшити активації; менша максимальна довжина може усунути необхідну частину задачі. Накопичення саме по собі не звільняє ваги або стан оптимізатора. Не подавайте випадок, який вміщується після обрізання, як той самий експеримент, якщо очікуваний вихід змінився.
Checkpointing активацій зберігає менше проміжних значень і перераховує їх під час зворотного проходу. Порівнюйте пам'ять і тривалість у вашому циклі. Змішана точність обирає формати для деяких операцій; налаштування масштабування градієнтів і момент їхнього оновлення повинні відповідати ефективному батчу. Записуйте ці зміни як варіанти та перевіряйте, що вони зберігають мету щодо якості.
Технічні джерела: PyTorch — checkpointing активацій · PyTorch — правила AMP
Приклад: порівняти три швидкості навчання
Підготуйте контрольний варіант зі значенням 0,0001 і два ілюстративні варіанти зі значеннями 0,00005 та 0,0002. Ці значення не є рекомендаціями для вашої моделі: вони слугують для складання плану. Збережіть архітектуру, дані, ефективний батч і бюджет у 200 оновлень однаковими в цьому спрощеному випадку. Визначте перед спробою частоту валідації та причини зупинки.
Збережіть криву втрат, точки валідації та прогнози, потрібні для аналізу. Якщо якийсь варіант розходиться, його рядок залишається в підсумку. Повторний запуск з іншим батчем отримує новий ідентифікатор і не замінює тихо невдачу. Якщо різниця в якості незначна, метод роботи з зернами пояснює, як порівнювати кілька спроб, не обираючи лише найкращу.
Відновити навчання, потім переглянути вихід
Збереження ваг дає змогу певного використання для інференсу; відновлення навчання також має повернути відповідні стани та прогрес. Посібник PyTorch розрізняє, зокрема, модель і оптимізатор. Перевірте відновлення на ранньому етапі в новому процесі, з елементами, потрібними для вашого циклу, а потім проконтролюйте крок, швидкість навчання та безперервність даних.
Після завершення перезавантажте артефакт, призначений для оцінювання, і відтворіть контрольні вхідні дані. Заархівуйте модель або адаптер, конфігурацію, ревізії, необроблені метрики та інструкції. Не завантажуйте файл невідомого походження лише для перевірки його вмісту: використовуйте артефакти, походження та правила десеріалізації яких у вашому середовищі вам відомі.
Технічні джерела: PyTorch — ваги та контрольні точки для відновлення
Перехід від пілота до відповідної оренди
Ваша картка вибору збирає пам'ять на кожен GPU, максимальні розміри, точність, мікробатч, накопичення, стратегію розподілу та очікуваний результат. Конфігурація з достатньою пам'яттю приймається лише після перевірки програмного стеку. Зазначена при замовленні перевага PyTorch описує бажану підготовку; вона не гарантує вашу модель чи всі її розширення.
Потім упорядкуйте пріоритетні варіанти в пакет на 3, 7 або 30 днів, залишаючи час на оцінювання та експорт. Жодна тривалість не нав'язує тип навчання. Журнал може зберігати рішення та введені спостереження, тоді як ваші резервні копії зберігають файли. Успішна кампанія дає висновок, який можна перечитати, навіть коли контрольний варіант залишається найкращим вибором.
Практичні питання
Чи можу я розрахувати розмір лише за прямим проходом?
Ні: кампанія навчання має також охоплювати зворотний прохід, оновлення, валідацію та збереження. Пік може виникнути в іншій фазі або на довшому вході.
Чи гарантує однаковий ефективний батч ті самі результати?
Ні. Однаковий підрахунок не гарантує тих самих числових операцій, статистики батчу чи траєкторій навчання. Контролюйте реалізацію, нормалізацію та якість за обраним протоколом.
Навіщо зберігати навчання, яке розходиться?
Воно вказує на межу налаштування і спожило ресурси. Його ідентифікатор, причина зупинки та параметри не дають повторити ту саму спробу або подати лише сприятливі результати.