Для получения дополнительных галантерейных товаров, пожалуйста, обратите внимание на публичный аккаунт WeChat «AI Frontline» (ID: ai-front)
DAWNBench — это проект, созданный Стэнфордским университетом для сравнения различных методов глубокого обучения в формате соревнований. В соревновании Dawnbench наше внимание привлекла производительность CIFAR10 и ImageNet. Цели этих двух в основном одинаковы: достичь относительно разумной точности (93% для ImageNet, 94% для CIFAR) при одновременном повышении скорости выполнения классификатора изображений и максимальном снижении эксплуатационных расходов.
В тесте CIFAR 10 наш продукт выиграл в двух направлениях: самый быстрый и самый дешевый. Одинокий рейнджер Бен Джонсон из программы D3M DARPA занял второе место в обоих направлениях. В тесте ImageNet наши результаты таковы:
Самый быстрый в общедоступной инфраструктуре, самый быстрый на графическом процессоре, самый быстрый на одном компьютере (даже быстрее, чем кластер Intel из 128 компьютеров!)
Самая низкая стоимость (однако результаты, официально объявленные DAWNBench, не являются нашими реальными затратами, о чем будет подробно рассказано ниже).
В целом, наши выводы таковы:
Алгоритмическая креативность важнее производительности «голого железа».
Разработанный Facebook AI Research и командой сотрудников, Pytorch поддерживает это творчество, предоставляя возможности быстрой итерации и отладки.
Спотовые инстансы AWS — это отличная платформа для быстрого и экономичного запуска экспериментальных рабочих нагрузок.
В этом посте мы обсудим конкретные методы, используемые в каждом раунде тестового соревнования. Все упомянутые здесь методы были или будут объединены в библиотеку fast.ai.
Как исследовательская лаборатория, fast.ai стремится снизить входные барьеры для глубокого обучения, обучая и разрабатывая более простые в использовании программные решения, тем самым упрощая процесс обучения для пользователей. По нашему мнению, наличие новейшего компьютерного оборудования или крупномасштабного вычислительного кластера не является и не должно быть требованием для перехода к глубокому обучению. Вместо этого ключевым моментом является использование преимуществ современных технологий и последних исследований при четком понимании текущих проблем, которые необходимо решить. В качестве важной части этого исследования мы недавно разработали новый набор библиотек для обучения моделей глубокого обучения на основе Pytorch — fastai.
Со временем мы перенесли в fastai алгоритмы из многочисленных исследовательских работ, которые, возможно, не получили того внимания, которого они заслуживают в сообществе. В частности, мы обнаружили, что нынешнее сообщество глубокого обучения придает слишком большое значение результатам исследований, опубликованным такими известными организациями, как Стэнфордский университет, DeepMind и OpenAI, игнорируя при этом другие столь же ценные, но менее известные академические источники. Одним из таких примеров является Лесли Смит из Военно-морской исследовательской лаборатории, которая недавно открыла важное явление под названием «сверхконвергенция». Он объяснил, что это явление может увеличить скорость обучения глубоких нейронных сетей примерно в 5–10 раз, что эквивалентно ранее известным методам, и, таким образом, произвести революцию во всей области. Однако его диссертация не была принята академическими изданиями и поэтому не могла появиться ни в одной основной схеме программного обеспечения.
В течение 24 часов после обсуждения статьи в классе студент fast.ai Сильвен Гуггер внедрил этот метод, то есть включил его в fastai. Он также разработал интерактивную заметку, чтобы показать, как попробовать другие связанные методы. По сути, случай Смита показывает, что обучение можно проводить с чрезвычайно высокой скоростью обучения, если вы медленно увеличиваете скорость обучения во время тренировки, уменьшая при этом импульс — это означает, что мы сможем избежать перетренированности и сократить время обучения до очень низкого уровня.
Модели скорости обучения и импульса в теории суперконвергенции
В этом новом сдвиге в алгоритмическом мышлении сияют Pytorch и fastai. Pytorch поддерживает интерактивную отладку и использование стандартных методов кодирования Python, в то время как fastai предоставляет различные строительные блоки и хуки (в этом примере обратные вызовы, которые позволяют проводить индивидуальное обучение и использовать fastai.sqdr для установки нового метода отжига скорости обучения). Тензорная библиотека Pytorch и CUDA позволяют пользователям быстро опробовать новые реализации алгоритмов в исследовательской манере.
Мы создали неформальную исследовательскую группу по глубокому обучению (к ней может присоединиться любой желающий), и мы все вместе работаем над проектами на наших ежедневных занятиях. Мы хотим закодировать, чтобы убедиться, что выводы Смита так же верны, как он утверждает. В сочетании с тем фактом, что Стэнфордский университет проводит соревнование DAWNBench, мы подумали, что это определенно будет хорошей возможностью проверить его в действии. Но на момент принятия решения о заявке до начала конкурса оставалось всего 10 дней - ситуация достаточно срочная!
Наша исследовательская группа по глубокому обучению
И CIFAR 10, и ImageNet являются задачами распознавания изображений. Например, предположим, что у нас есть набор фотографий кошек и собак, и мы хотим создать инструмент для их автоматического различения. Сначала нам нужно построить модель, а затем обучить ее на большом количестве фотографий, чтобы она могла автоматически классифицировать невидимые фотографии кошек и собак. Затем мы можем использовать эту модель для работы с большими наборами данных, такими как CIFAR, коллекция фотографий, каждая из которых содержит кошек, собак и десятки других объектов животных/транспортных средств (например, лягушек и самолетов). Эти изображения относительно небольшие (32 на 32 пикселя), поэтому общий набор данных также относительно невелик (всего 160 МБ) и его легче обрабатывать. В настоящее время этому набору данных не уделяется особого внимания, потому что он намного меньше, чем более популярные крупномасштабные наборы данных по объему. Однако объем данных в нем может отражать реальную ситуацию, с которой сталкиваются различные организации, а меньший размер изображения создает как проблемы с идентификацией, так и более низкие барьеры доступа.
Приняв решение об участии в конкурсе, ведущий на тот момент алгоритм достиг точности 94 % всего за час. Однако мы быстро обнаружили, что смогли обучить модель Resnet 50 примерно за 15 минут, руководствуясь теорией суперконвергенции — безусловно, захватывающее время! После этого мы попробовали несколько других архитектур и обнаружили, что Resnet 18 (фактически набор предварительно активированных вариантов Resnet 18) достиг того же результата менее чем за 10 минут. Мы обсуждали это в классе, и Бен Джонсон самостоятельно подробно разработал этот метод. Он добавил в fast.ai метод под названием «concat pooling» (для соединения максимального и среднего пулов на предпоследнем уровне в сети) и успешно реализовал 6 минутных обучающих записей модели NVIDIA GPU.
В исследовательской группе мы решили сосредоточиться на направлении обучения с несколькими GPU, чтобы получить максимально быстрые результаты обучения на одном компьютере. В целом мы считаем, что обучение моделей на нескольких машинах увеличивает сложность проектирования и системного администрирования. Чтобы максимально избежать этой сложности, мы стремимся улучшить производительность метода на одном компьютере. Здесь мы используем набор библиотек под названием NCCL, который работает с Pytorch и предназначен для использования преимуществ нескольких графических процессоров с минимальными накладными расходами.
Большинство документов и дискуссий, связанных с обучением на нескольких графических процессорах, сосредоточены на операциях в секунду, а не на фактическом периоде обучения сети. Мы обнаружили, что наша архитектура демонстрирует совершенно разные свойства при обучении на нескольких графических процессорах. Ясно, что исследовательскому сообществу все еще нужно приложить больше усилий, чтобы действительно понять, как получить лучшие результаты сквозного обучения на практике с несколькими графическими процессорами. Например, мы обнаружили, что настройки обучения, которые хорошо работают на одном графическом процессоре, обычно имеют взрывной градиент в среде с несколькими графическими процессорами. Мы ознакомились с соответствующими предложениями в предыдущих научных статьях и пришли к некоторым разумным выводам, но мы должны признать, что мы далеко не используем все ресурсы компьютеров.
В конце концов мы обнаружили, что для того, чтобы по-настоящему воспользоваться преимуществами 8 графических процессоров на компьютере, нам действительно нужно было ввести больше задач в пакет, то есть мы увеличили количество активаций на каждом уровне. Здесь мы снова используем забытое академическое достижение: статью «Широкие остаточные сети», опубликованную Школой мостов Парижского университета, в которой представлен обширный анализ различных подходов к построению остаточных сетей и обсуждается, что необходимо в такой архитектуре. различных строительных элементов.
Другой член нашей исследовательской группы, Бретт Кунсе, начал экспериментировать с различными настройками параметров, надеясь найти наиболее эффективную комбинацию. В итоге мы создали набор «расширенных» версий для архитектуры resnet-34. В сочетании с тщательно подобранными гиперпараметрами Бретта он может достичь 94% точности в среде с несколькими графическими процессорами за 3-минутный цикл обучения!
Спасибо AWS за помощь. Мы хотим проводить несколько экспериментов параллельно, сохраняя при этом стоимость эксперимента как можно ниже. С этой целью член исследовательской группы Эндрю Шоу создал библиотеку Python, которая автоматически запускает точечный экземпляр, настраивает его, обучает модель, сохраняет результаты и, наконец, выключает экземпляр. Эндрю даже провел настройку обучения, чтобы процесс обучения можно было автоматизировать, чтобы гарантировать, что все обучение происходит в рамках сеанса tmux. Таким образом, мы сможем войти в любой экземпляр в любое время и просмотреть текущий прогресс обучения.
Основываясь на нашем опыте участия в этом соревновании, мы рекомендуем большинству специалистов по обработке и анализу данных спотовые инстансы AWS, несомненно, лучший выбор для обучения крупномасштабных моделей или сценариев обучения крупномасштабных моделей. Стоимость его использования обычно составляет только одну треть стоимости экземпляра On-Demand. К сожалению, официальные результаты, опубликованные DAWNBench, не сообщают о фактических затратах на обучение, а только о гипотетических затратах, основанных на экземплярах по запросу. Мы подвергаем сомнению эту практику, потому что на практике спотовые инстансы обычно имеют очень стабильную цену и вполне подходят для таких рабочих нагрузок, как обучение моделей.
Судя по результатам этого конкурса, экземпляры Google TPU (в настоящее время проходят бета-тестирование) также могут быть хорошим выбором. Но следует подчеркнуть, что использование TPU означает, что вы должны принять следующие ограничения:
Использование оборудования Google (TPU).
Использование программного обеспечения Google (Tensorflow).
Используйте облачную платформу Google (GCP).
Что еще хуже, TPU не имеют возможности прямого кодирования, что серьезно ограничивает креативность алгоритма (как мы упоминали ранее, креативность фактически напрямую определяет конечную производительность). Учитывая ограниченный диапазон поддержки нейронных сетей и алгоритмов на TPU (например, отсутствие поддержки сверточных нейронных сетей, что важно для конкретных приложений, включая собственную систему языкового перевода Google), выбор платформы Google серьезно повлияет на специфику задач, которые мы можем решить. и возможные решения.
AWS, с другой стороны, позволяет нам запускать любое программное обеспечение, архитектуру и алгоритм, а затем использовать результаты кода и запускать его на нашем собственном компьютере или другой облачной платформе. Кроме того, наличие инстансов для торгов также означает, что мы можем наслаждаться тем, что стоимость использования облачной платформы Google намного ниже (Google в настоящее время тестирует аналогичный «экземпляр для торгов», но, похоже, он не поддерживает TPU и будет стоить 24 часа). часов как цикл) Очистка содержимого рабочей нагрузки).
Еще одним идеальным вариантом обучения с использованием одного графического процессора является Paperspace — платформа, которую мы используем в нашем новом курсе. Его гораздо сложнее настроить, чем экземпляр AWS, и он поставляется с предустановленной полной архитектурой fastai. Кроме того, его функциональность и гибкость не могут сравниться с AWS. Его уровень стоимости находится между спотовыми инстансами AWS и инстансами по требованию. Именно с экземпляром Paperspace мы выиграли в этом конкурсе единицу тестирования стоимости — всего за 0,26 доллара США.
Еще одним ключом к быстрому обучению является использование операций с плавающей запятой половинной точности. Последняя архитектура Nvidia Volta включает тензорные ядра, предназначенные для обработки данных с плавающей запятой половинной точности. Однако обучение на такого рода данных всегда было сложной задачей, и успешных случаев обучения моделей на таких данных немного. Nvidia была достаточно любезна, чтобы предоставить демонстрацию обучения ImageNet с открытым исходным кодом с данными с плавающей запятой половинной точности, и Эндрю Шоу включил руководящие идеи в fastai. В настоящее время нам нужно просто написать в коде Learn.half(), и мы можем ждать, пока система автоматически выполнит все необходимые шаги для быстрого и точного завершения обучения модели с использованием операций с плавающей запятой половинной точности.
По сравнению с CIFAR 10, ImageNet представляет собой как бы другую версию той же задачи, разница в том, что последний размер изображения больше (224 пикселя, 160 ГБ) и содержит больше категорий (1000 видов). Смит показал в своей статье суперконвергентную реализацию ImageNet, но ее окончательная точность была ниже, чем у исходного метода обучения. Мы также столкнулись с той же проблемой, что модель не могла достичь требуемой точности 93% при обучении с высокой скоростью обучения.
Для этого мы обратились к другому методу, разработанному fast.ai — прогрессивному изменению размера. Варианты этого метода были показаны в предыдущей академической литературе (GAN и Progressive Growth of Augmented Deep Residual Networks), но мы никогда не использовали его для классификации изображений. Принцип этой методики очень прост: начните с меньших изображений в начале обучения и постепенно увеличивайте размер изображения по мере продолжения обучения. Интуитивно людям не нужны большие изображения, чтобы понять физические характеристики кошек и собак, но если вы хотите понять различия между разными собаками, большие изображения, очевидно, лучше подходят для обучения.
Многие ошибочно полагают, что модель, обученная на одном размере изображения, не может адаптироваться к другим размерам изображения. Да, архитектура VGG в 2013 году работала только с изображениями определенного размера, но сейчас все изменилось. Проблема заключается в том, что многие сети ошибочно используют слои объединения фиксированного размера в конце и не используют слои глобального/адаптивного объединения. Например, официальная модель Pytorch torchvision неправильно использует слои адаптивного пула. Вот почему такие библиотеки, как fastai и keras, так важны — эти библиотеки стремятся обеспечить возможность plug-and-play, максимально используя все соответствующие передовые практики. Понятно, что разработчики таких проектов, как Pytorch и TensorFlow, больше заботятся об основных принципах, чем о взаимодействии с конечным пользователем.
Используя прогрессивное изменение размера, мы смогли значительно ускорить обучение на начальном этапе (поскольку изображения размером 128 x 128 пикселей использовались вместо обычных изображений 224 x 224 пикселей), сохраняя при этом разумную точность конечного этапа (используя 288 x 288 пикселей). изображение в пикселях для более высокой точности). В дополнение к хорошей точности этот подход приводит к желаемой производительности, а с более широким диапазоном размеров материала изображения сама модель лучше справляется с переоснащением.
Проработав в области машинного обучения 25 лет, я обнаружил, что инженерам особенно нравится запускать самые большие наборы данных на самых мощных вычислительных устройствах, которые они могут найти, а СМИ всех видов любят сообщать о «самых важных» вещах. Но на самом деле настоящего прогресса от этого не происходит — разница куда важнее размера. Например, отсев позволяет нам тренироваться на меньших наборах данных без переобучения, пакетная нормализация позволяет нам тренироваться быстрее, а исправленные линейные единицы позволяют избежать взрыва градиентов во время обучения. Начинающие исследователи рассмотрят различные методы лечения, надеясь помочь нам быстрее обучать более качественные модели сети.
Разговаривая со своими друзьями из Google, OpenAI и других влиятельных организаций, я всегда беспокоился о том, что их легкий доступ ко многим ресурсам задушит их творческий потенциал. Поскольку ресурсы почти безграничны, о чем нам нужно размышлять и принимать во внимание? Следует также подчеркнуть, что за пределами этих учреждений ресурсы часто весьма скудны, поэтому привычки мышления, сформированные на основе неограниченных ресурсов, не смогут реально помочь пользователям. Что еще более пугает, так это то, что немногие исследователи действительно осознают существование этой проблемы.
Что еще хуже, эти друзья часто говорят, что у них нет доступа к таким значительным ресурсам, поэтому они отказываются от передовых исследований. Им кажется, что без поддержки большого количества GPU и CPU они никогда не смогут сделать ничего путного. На мой взгляд, этот вывод совершенно неверен: отличный экспериментатор плюс плохое оборудование все равно намного превзойдут отличное оборудование плюс плохой экспериментатор по результатам исследований.
Нам повезло, потому что позитивные силы, такие как команда Pytorch, создают инструменты для быстрой итерации и экспериментов, которые больше всего нужны творческим практикам.Я хотел бы видеть больше таких результатов высокого уровня от небольших некоммерческих лабораторий и студентов-заочников, чтобы помочь всей отрасли развеять миф о том, что «нет ресурсов, нет исследований».
Оригинальная ссылка:
http://www.fast.ai/2018/04/30/dawnbench-fastai/