Следващата публикация представя PyTorch Lightning, очертава неговата основна философия на дизайна и предоставя вградени примери за това как тази философия позволява по-възпроизводим и способен за производство код за дълбоко обучение.

Какво е PyTorch Lightning?

PyTorch Lighting е лека обвивка на PyTorch за високопроизводителни AI изследвания.

Просто казано, PyTorch Lightning е просто организиран код на PyTorch.

Организирането на PyTorch код с Lightning позволява безпроблемно обучение на множество GPU, TPU, CPU и използването на трудни за внедряване най-добри практики, като шардинг на модели и смесена прецизност.

Обяснена е философията на дизайна на PyTorch Lightning за загубата на плочата на бойлера

1. Самостоятелни модели и данни

Едно от традиционните пречки пред възпроизводимостта при дълбокото обучение е, че моделите често се смятат просто за графика на изчисления и тегла.

Примерна изчислителна графика на PyTorch от документите на PyTorch AutoGrad

В действителност, възпроизвеждането на Deep Learning изисква механизми за проследяване на компоненти като инициализации, оптимизатори, функции за загуба, трансформации на данни и разширения.

Основна философия на дизайна на PyTorch Lightning е, че всички компоненти и код, свързани с възпроизводимостта, трябва да бъдат самостоятелни. Един добър тест, за да видите колко самостоятелен е вашият модел, е да си зададете следния въпрос: „Може ли някой да пусне този файл в Trainer, без да знае нищо за вътрешността?“

Светкавичният модул съдържа всички параметри за инициализация по подразбиране, необходими за възпроизводимост.

2. Модулен код

PyTorch Lightning предоставя модулна рамка за отделяне на кода за изследвания и данни, което води до по-бърза итерация и по-възпроизводим код.

Визуализирано модулиране на код за задълбочено обучение с осветление

Модулният характер на този код увеличава четливостта. Например, ако искам да разбера как един модул обучава или прави изводи, вместо да гадая къде в кода е реализирано това, мога да погледна модулите training_step и функциите forward.

По същия начин, ако искам да знам как данните са били предварително обработени, преобразувани или разделени, мога да разгледам функциите за инициализация, подготовка на данни и настройка на модулите за данни.

3. Намалете плочата на котела

След отделяне на вашия код за изследвания и данни, останалата шаблонна плоча се управлява от Lightning, осигурявайки внедрявания на доказани най-добри практики за дълбоко обучение за намаляване на грешките и времето за обучение.

Lightning Trainer стандартизира шаблона с най-добри практики за намаляване на ~80% от най-често срещаните грешки при дълбокото обучение.

В противен случай най-съвременните методи често се изоставят, тъй като шаблонният код, като например гарантирането, че моделът не е случайно конфигуриран в режим на оценка при фина настройка, не е правилно конфигуриран.

Lightning управлява шаблонен код, като оптимизация на устройства, регистриране, управление на ранга на процеса и други, така че изследователите да могат да се съсредоточат върху изграждането на възможно най-добрите модели. Ако потребителите имат специални случаи на употреба, изискващи допълнителна абстракция, те могат да създават и споделят свои собствени обратни извиквания.

4. Максимална гъвкавост

За да процъфтяват изследванията, инструментите трябва да бъдат гъвкави. Стандартизираните най-добри практики на Lightning са достъпни за крайния потребител като преодолими куки, позволяващи максимална гъвкавост за тези, които искат да експериментират с луди идеи, които се отклоняват от стандартния път.

Примерна замяна на training_step на Auto Encoder, която демонстрира пълен достъп до основния шаблон, когато е необходимо.

Тъй като кукичките за процеси като конфигурация на загубите са стандартизирани, Lightning прави много по-лесно експериментирането с персонализирани загуби за специфични за домейн приложения и комбинирането на различни модели за по-сложни сценарии за „моделиране с множество входове“.

От възпроизводими изследвания до задълбочено обучение в производството

Сега, когато разбираме по-добре основната философия на дизайна на основния PyTorch Lightning, нека да разгледаме някои от страхотните функции, които позволяват извън кутията от Multi GPU и TPU обучение до едноредов Onnx и експорт на Torch Script.

Ако искате да започнете бързо, Lightning предоставя и примерна реализация на общи задачи за задълбочено обучение от обобщаване на текст до откриване на обекти като част от PyTorch Lightning Flash repo.

PyTorchLightning/светкавица-светкавица

Прочетете нашата публикация в блога за стартиране Pip / conda pip install lightning-flash -U Pip от източник pip install…github.com

Обучение в производствен мащаб с мрежа

Въпреки че Lightning помага да поддържате вашия код на PyTorch организиран, възпроизводим и мащабируем, има една оставаща бариера пред производството, която тепърва ще обсъждаме, управлението на инфраструктурата. Често оркестрирането на изчисления и тръбопроводи за данни за обучение и обслужване на модели в мащаб изисква обширна конфигурация или модификация на код, за да се постигне. Това е мястото, където се появява Grid, Grid управлява тези допълнителни разходи вместо вас, позволявайки на PyTorch Lightning кода да се мащабира от лаптоп до облака, без да променя нито един ред код.

С Grid trains можете да вземете скрипт на PyTorch Lightning и да мащабирате и проследявате стотици експерименти, както следва.

Ако не разполагате с достатъчно мощен лаптоп, интерактивните възли предоставят оптимизирани среди за разработка, които улесняват започването на разработването на вашия код, позволявайки обучение в истински производствен мащаб на приложени най-съвременни модели за дълбоко обучение.

Заключения за PyTorch Lightning

Тази публикация показва как основните принципи на проектиране на Lightning позволяват по-възпроизводим и готов за производство код за дълбоко обучение.

  1. Светкавичният код е по-ясен за четене, тъй като инженерният код е абстрахиран, а общите функции като training_steps, process_data са стандартизирани. Lightning се справя със сложното инженерство, като предотвратява често срещани грешки, като същевременно позволява достъп до цялата гъвкавост на PyTorch, когато е необходимо.
  2. Модулите Lightning са хардуерно агностични; ако вашият код работи на CPU, той ще работи на GPU, TPU и клъстери, без да изисква натрупване на градиенти или управление на ранга на процеса. Можете дори да внедрите свои собствени „ускорители“.
  3. Всяка версия е тествана стриктно с всеки нов PR на всяка поддържана версия на PyTorch и Python, ОС, мулти графични процесори и дори TPU. Lightning има десетки интеграции с популярни инструменти за машинно обучение като TensorBoard, CometML и Neptune.
  4. Grid ви позволява да мащабирате производственото обучение на вашия PyTorch Lightning код от вашия лаптоп в облака, без да се налага да променяте нито един ред код.

Статия, написана от Ари Борнстейн и Шон Нарентир.

Бележка на редактора: Научете повече за PyTorch Lightning в разговора на William Falcon ODSC East 2021, „От изследвания към производство, минус шаблона,“ там!