Ю Ян, Национальный университет Сингапура: Как может добиться успеха высокопроизводительный ИИ?

Источник: Лэй Фэн Нетто

Автор: Хуан Нань

Параметры моделей ИИ кардинально изменились за последние несколько лет. Ю Ян отметил, что с 2016 по январь 2021 года количество параметров модели ИИ увеличивалось в 40 раз каждые 18 месяцев; с января 2018 по январь 2021 года количество параметров модели ИИ большое языковая модель увеличивалась каждые 18 месяцев в 340 раз. Напротив, с января 2016 года по январь 2021 года объем памяти графических процессоров будет увеличиваться всего в 1,7 раза каждые 18 месяцев.

Видно, что высокая стоимость обучения и длительный цикл являются наиболее трудными проблемами, которые необходимо преодолеть при разработке больших моделей.

В ответ на эту проблему Ю Ян предложил систему Colossal-AI, начиная с трех уровней высокоэффективной системы памяти, N-мерной параллельной системы и крупномасштабной оптимизации, чтобы минимизировать перемещение данных при тех же условиях оборудования и максимизировать пропускную способность графического процессора, масштабируя ее до максимальной точки.

Ю Ян также отметил, что количество параметров модели на этом этапе расширено в 100 000 раз, но количество слоев не сильно увеличилось, что может означать, что развитие ИИ сегодня, возможно, уже не является глубоким обучением, а вошло в процесс глубокого обучения. эпоха широкого обучения. По мере того, как модель становится шире, перед лицом крупномасштабных и долгосрочных задач обучения графического процессора, ядром системы обучения большой модели будет то, как реализовать параллельные вычисления на графическом процессоре для достижения цели создания более быстрой и экономически эффективной большой модели. обучение.

Ниже приводится содержание живого выступления Ю Ян, которое Leifeng.com отредактировал и систематизировал, не меняя первоначального намерения:

Возможности и проблемы больших моделей ИИ

Сначала покажи картинку. По оси абсцисс на графике — время, а по ординате — величина параметра модели ИИ.

С 2016 по январь 2021 года объём параметров большой модели ИИ будет увеличиваться примерно в 40 раз каждые 18 месяцев; с января 2018 по январь 2021 года объём параметров модели ИИ будет увеличиваться в 340 раз каждые 18 месяцев.

В 2016 году лучшей моделью в мире на тот момент была ResNet-50, а лучшей моделью сегодня — GPT-4. С точки зрения архитектуры, хотя OpenAI не анонсировал архитектуру GPT-4, но по сравнению с 50-слойной нейронной сетью ResNet-50 и архитектурой GPT-3, которая имеет менее 100 слоев, можно сказать что количество слоев модели ИИ в последние годы не производилось, слишком много изменений.

От ResNet-50 до GPT-4, хотя количество параметров увеличилось примерно в 100 000 раз, каждый слой фактически стал шире. Включая версию LLaMA-65B, это тоже сеть с десятками слоев.

Таким образом, возможно, мы не занимаемся глубоким обучением, но вступили в эпоху широкого обучения.

Видно, что с 2019 года архитектура Transformer в основном унифицировала трек крупномасштабных моделей ИИ, и все текущие наиболее эффективные крупномасштабные модели ИИ — это архитектуры Transformer. Две пунктирные линии на рисунке выше не только показывают тенденцию изменения параметров большой модели, но также показывают тенденцию изменения графического процессора.

Хотя стоимость акций Nvidia сейчас выросла во много раз, темпы роста графической памяти производителей, включая Nvidia, сильно отстают от скорости разработки крупных моделей.

По сравнению с темпами роста параметров модели за последние шесть лет, с января 2016 по январь 2021 года, темпы роста вычислений графических процессоров NVIDIA увеличивались лишь в 1,7 раза каждые 18 месяцев.

Для расчета объема памяти, необходимого для обучения GPT-3, в качестве примера возьмем A100 80G. GPT-3 имеет около 175 миллиардов параметров. Для удобства расчета возьмем целое число 200 миллиардов, которое равно 200 умножению на 10 9-я степень, и каждая одинарная точность занимает 4 байта, одни только параметры занимают 800 ГБ памяти, а градиент также занимает 800 ГБ памяти. Согласно текущему методу оптимизации, такая информация, как первый момент и второй момент, хранится в 800G. Другими словами, если вы обучаете большую модель, которая ничего не делает, вам понадобится как минимум несколько терабайт памяти.Одного графического процессора A100 с 80 ГБ памяти далеко недостаточно.Кроме того, чем больше размер пакета промежуточных результатов , тем больше накладные расходы памяти.

Вот почему с точки зрения памяти для обучения больших моделей сначала требуются тысячи графических процессоров.

Приведите количественный пример. PaLM — это модель размером 540 миллиардов. Согласно текущей рыночной цене облачных вычислений, для обучения PaLM необходимо заключить контракт как минимум на 1000 графических процессоров, а стоимость составляет около более 9 миллионов долларов США. Ранее Meta четко упоминала, что LLaMA необходимо использовать 2000 графических процессоров A100, а для завершения сеанса обучения требуется три недели.Из этого расчета можно сделать вывод, что стоимость одного сеанса обучения LLaMA составляет 5 миллионов долларов США.

Однако, поскольку уточнение большой модели не ограничивается одним сеансом обучения, может потребоваться как минимум пять или шесть итераций хорошего продукта большой модели, а ранний этап — это все пробы и ошибки. Таким образом, согласно анализу общественного канала, стоимость одной тренировки GPT-4 составляет около 60 миллионов долларов США, а обучение занимает как минимум несколько месяцев. Вот почему, даже если ChatGPT был обновлен до последней версии, его нижний уровень по-прежнему остается моделью версии от сентября 2021 года. Другими словами, с сентября 2021 года по настоящее время OpenAI по существу не обновляла свои продукты.Основная причина в том, что стоимость обучения каждой модели не только высока, но и цикл обучения очень длинный, поэтому высокая стоимость Обучение крупных моделей очень серьезное.

Представьте себе проблему. Сегодня существует большая модель с 1 триллионом параметров и 100 миллиардами параметров. Можем ли мы использовать какой-либо метод, чтобы определить, лучше ли большая модель с триллионом параметров, чем большая модель со 100 миллиардами параметров? Иными словами, какова степень увеличения количества параметров модели?

На сегодняшний день я чувствую, что на этот вопрос пока невозможно дать научный ответ. Есть несколько причин.

Прежде всего, существует проблема невыпуклой оптимизации при обучении нейронных сетей: в настоящее время большинство точек, сходящихся при обучении, являются локальными оптимальными решениями, а не глобальными оптимальными решениями. Поэтому нам необходимо проверить степень обучения нейронной сети, которую невозможно проверить с помощью существующих вычислительных ресурсов.

Вторая трудность заключается в том, что обучение большой модели часто обучает только одну или две эпохи, в то время как в предыдущей модели CNN обучение ResNet имеет 90 эпох, и даже обучение с самоконтролем имеет 1000 эпох, поэтому большая модель обучает только одну или две эпохи. Этот метод эквивалентен просмотру набора данных только один или два раза, а сходимость еще более недостаточна. Поэтому в случае такой высокой стоимости обучения нам трудно проверить, является ли модель с 1 триллионом параметров или модель с 2 триллионами параметров лучше, поскольку их потенциал не был полностью использован в ходе экспериментов. Поэтому я думаю, что сегодняшняя большая модель ИИ является экспериментальным предметом. Как эффективно повысить эффективность этого эксперимента и снизить затраты, будет играть фундаментальную роль в популяризации всей отрасли.

Вернемся к реальности: почему сегодня все гоняются за большими моделями? С точки зрения математической логики, чем больше параметры модели, тем лучше эффект, который является абсолютным.

В то же время расходы продолжали расти. В настоящее время для обучения больших моделей требуются сотни, тысячи или даже десятки тысяч графических процессоров.

20 лет назад, поскольку в то время оно опиралось на основную частоту, все программы были последовательными.Предполагая, что аппаратная скорость увеличивается в 10 раз, скорость работы также можно увеличить в 10 раз, не меняя ни одной строчки кода. Но сегодня, если вы хотите ускорить свой код в 10 раз, предполагая, что оборудование уже в 10 раз быстрее, но если вы не оптимизируете код, он, вероятно, будет работать медленнее. Причина в том, что в случае более крупной машины, например, внутри графического процессора, перемещение данных между памятью графического процессора и процессором или перемещение данных между графическими процессорами, а также перемещение данных, реализуемое сервером, будут занимать большую часть времени. Время всей системы, большая часть времени тратится на перемещение данных, и масштабируемость модели станет плохой.

Я думаю, что в будущем хорошее распределенное программное обеспечение и плохое распределенное программное обеспечение могут иметь разницу в скорости в 10 раз на тысячах графических процессоров или даже на 500 графических процессорах.

**Как работает Colossal-AI? **

Исходя из вышеизложенных задач, мы предлагаем большую систему обучения моделей Colossal-AI, которая предоставляет методы оптимизации, снижает стоимость перемещения данных и максимизирует эффективность масштабируемости модели.

Конкретные данные таковы, что использование простейшего PyTorch для обучения GPT-3 стоит 10 миллионов долларов США.После оптимизации Nvidia стоимость можно снизить до 3 миллионов долларов США с помощью Megatron, а после использования Colossal-AI стоимость можно снизить. до $1,3 млн. Видно, что при тех же условиях оборудования минимизация перемещения данных снижает долю перемещения данных до самого низкого уровня и может увеличить пропускную способность графического процессора до максимальной точки.

В ответ на вышеуказанные проблемы Colossal-AI предлагает три уровня. Другое подобное программное обеспечение также включает эти три уровня.

Первый уровень — оптимизация памяти. Во-первых, убедитесь, что эффективность памяти одного графического процессора и одного сервера является самой высокой. Это основа.

Второй уровень — N-мерный параллелизм. Когда мы в настоящее время используем тысячи или десятки тысяч графических процессоров, основной технологией являются параллельные вычисления (параллельные вычисления). От 1 графического процессора до 10 графических процессоров из-за относительно небольшого масштаба мы можем легко получить ускорение в 7 раз; от 10 до 100 графических процессоров мы можем получить ускорение только в 4 раза, потому что параллельный масштаб становится больше, а его связь Цена пошла вверх. А при увеличении количества графических процессоров со 100 до 1000, поскольку стоимость связи еще больше увеличивается, ускорение, скорее всего, будет увеличено только в 2 раза. А при переходе от 1000 графических процессоров к 10 000 графических процессоров, если программное обеспечение работает плохо, оно может не только не ускориться, но даже стать медленнее, потому что устройство все свое время проводит в режиме связи с более высокой плотностью связи.

Второй - проблема оптимизации. Я думаю, что есть два уровня направления развития большой модели ИИ в будущем. Первый уровень - сделать модель более интеллектуальной и разработать лучшую структуру. Например, от BERT до GPT или от ResNet до BERT и т. д. Постоянно пытаются изменить структуру модели.

Кроме того, происходят улучшения в методах оптимизации.От перехода от SGD к MOMENTUM, ADAGRAD и ADAM сейчас также очень важно иметь более совершенные методы оптимизации, которые могут повысить эффективность в 10 раз в будущем.

Конкретно для параллельной задачи обучения больших моделей на практике.

Первый — это параллелизм данных, который является самым простым и эффективным параллельным методом. Параллелизм данных означает, что при наличии 10 000 изображений в каждом цикле обрабатывается 1000 изображений. Если машин 10, каждой машине выделяется 100 изображений, и все изображения могут быть обработаны за 10 циклов.

В процессе параллелизма данных его необходимо суммировать.Каждая машина использует разные данные для получения разных градиентов.Машина изучает разные изменения в разных данных, обновляет градиент параметров и, наконец, вычисляет глобальный градиент.В настоящее время метод суммирования и используется усреднение.. кстати, эффект был очень хороший. Ранее метод LARS от Colossal-AI по параллелизму данных сократил время обучения ImageNet с одного часа до одной минуты для Google, Meta, Tencent, Sony и других компаний.

Параллелизм данных является самым простым и наиболее стабильным. После разделения данных, предполагая, что в будущем будет 10 000 графических процессоров, легко может случиться, что четыре или пять графических процессоров выходят из строя каждые несколько часов. Трудно управлять и обслуживать кластер из 10 000 графических процессоров, но стабильность параллелизма данных Дело в том, что даже если 10 000 графических процессоров выйдет из строя около дюжины, общий результат не изменится, потому что это градиентное суммирование и усреднение.

Исходя из этого, я считаю, что параллелизм данных — это фундаментальная инфраструктура.

Конечно, одного параллелизма данных недостаточно, причина в том, что параллелизм данных предполагает, что модель должна быть скопирована на каждый графический процессор или сервер, и сервер или графический процессор будут обмениваться градиентами. Однако если у графического процессора всего 80 ГБ памяти, то для модели с триллионами параметров требуются десятки терабайт памяти, которую невозможно хранить в графическом процессоре, необходимо разрезать модель на разные графические процессоры и затем суммировать результаты. Этот подход называется модельным параллелизмом. Существует два типа параллелизма моделей: первый — тензорный параллелизм, то есть параллелизм моделей внутри уровня. Например, количество слоев GPT-3 составляет около 80 или 90 слоев. Модель разрезается один раз для каждого слоя, а расчет в слое делится на несколько частей. После расчета одного слоя рассчитывается следующий слой. и т. д. Это тензорный параллелизм.

Другой способ — конвейерный параллелизм (Pipeline Parallelism), модельный параллелизм между параллелизмом данных и тензорным параллелизмом. При построении нескольких каналов данных (конвейеров) точки данных каждого канала данных различны, что эквивалентно разделению большого размера на несколько маленьких размеров, и таким образом выполняется расчет канала. Если имеется 10 труб, 10 труб представляют десять различных наборов данных, первая труба рассчитывает данные первого слоя, а вторая труба рассчитывает второй слой... таким же образом, аналогично нашему зданию. Аналогично, 10 инженерных команды строят 1000 этажей, при этом первая инженерная бригада строит первый этаж первого здания, вторая инженерная бригада строит второй этаж второго здания и так далее.

Чем больше зданий, тем выше соотношение между зданиями и инженерными бригадами и тем выше эффективность, которая эквивалентна одновременной работе 10 инженерных бригад. Каждая команда инженеров эквивалентна графическому процессору, каждое здание эквивалентно трубе, а количество слоев здания эквивалентно количеству слоев нейронной сети, которая является основной логикой параллелизма конвейеров.

В настоящее время отрасль проделала соответствующую работу: помимо Colossal-AI, существуют также NVIDIA TensorRT и Microsoft DeepSpeed, которые также являются двумя компаниями с самыми высокими техническими барьерами.

Но что отличает Colossal-AI от него, так это то, что Colossal-AI фокусируется на направлении разработки больших моделей в будущем. Видно, что текущая модель по-прежнему становится шире, а не глубже, и тензорный параллелизм будет более важным, но ее самый большой недостаток заключается в том, что, поскольку она отсекает весь уровень, накладные расходы на связь слишком велики. Именно поэтому генеральный директор Nvidia при первом внедрении 3D-параллелизма на саммите GTC специально объяснил проблему слишком больших коммуникационных затрат, а сделать это можно только на одном сервере. Поэтому Colossal-AI фокусируется на 2D-тензорном параллелизме и 2,5D-тензорном параллелизме, что снижает вычислительные затраты на порядок.

Это означает, что при одномерном тензорном параллелизме каждой машине приходится иметь дело с 9999 машинами из 10 000 машин, тогда как при двумерном тензорном параллелизме она разделяется на подблоки, и каждой машине достаточно иметь дело только с 96 машинами. Его основная логика заключается в использовании некоторой локальной синхронизации (локальной синхронизации) для замены глобальной синхронизации (глобальной синхронизации) и большей локальной связи для замены глобальной связи. В этом процессе планирование проектирования является наиболее сложным.

То же самое справедливо и для 3D-тензорного параллелизма: каждый раз, когда измерение увеличивается, сложность его проектирования увеличивается на порядок, а сложность связи со временем снижается.

С точки зрения оптимизации памяти, текущее обучение большой модели ИИ требует больших затрат памяти. Даже если вы ничего не делаете, вам все равно понадобится несколько терабайт памяти. Если вы не вносите ручное вмешательство, как только вы его используете , вам могут потребоваться десятки или даже сотни терабайт памяти.

Чтобы улучшить прогнозирующий эффект модели, нам часто нужны данные длинной последовательности. Суть текущей большой модели заключается в том, чтобы предсказать вероятность следующего слова посредством вывода одного слова, а данные длинной последовательности - это просто нужный. В связи с этим Colossal-AI также запустила Sequence Parallelism (параллелизм последовательностей).

В частности, после разрезания последовательности вы столкнетесь с серьезной проблемой: при выполнении оценки внимания каждый токен необходимо оценивать с другими токенами в глобальной последовательности, а после разделения на сервере находится только часть токенов, и разные токены будут распределяться по другим серверам, так что каждому серверу для работы необходимо взаимодействовать с другими серверами.

То есть, если предположить, что каждый из 200 человек в комнате сегодня взял по пачке закусок, я надеюсь, что каждый сможет попробовать закуски всех остальных, и потребуется как минимум 200 квадратных обменов, чтобы каждый мог попробовать закуски других. закуски. Тогда самый простой способ: все образуют круг, каждый передает съеденную закуску человеку справа, а закуску получает слева, всего n-1 раз, то есть 199 передач. Финиш. Тем самым снижая общую стоимость связи.

Подводя итог, можно сказать, что текущий стек основных технологий для обучения больших моделей ИИ на самом деле представляет собой параллельные вычисления, поскольку нам приходится обрабатывать сотни тысяч ядер графических процессоров и использовать все графические процессоры параллельно. Параллелизм данных, тензорный параллелизм, конвейерный параллелизм и параллелизм последовательностей данных являются основными модулями параллелизма.

Что касается оптимизации памяти, в настоящее время мы находимся в среде, где выбор невелик: графический процессор Nvidia является лучшим, и у нас, похоже, нет других лучших решений, которые могли бы его заменить. Но ложка дегтя в том, что память графического процессора Nvidia ограничена. Можем ли мы в этом случае подумать о том, как использовать память ЦП и память NVMe? Основная идея заключается в том, что если память графического процессора не может быть сохранена, она будет перемещена. к ЦП, и если ЦП невозможно хранить, он будет размещен на NVMe. В общем, при строительстве здания необходимое сырье нельзя хранить на стройке внизу, поэтому мы помещаем его на соседний завод. . Суть его технологии также заключается в минимизации перемещения данных, то есть минимизации перемещения данных между ЦП и графическим процессором, а также в усилении перемещения данных между ЦП и NVMe, тем самым увеличивая пропускную способность до максимальной.

Открытый исходный код

Colossal-AI — это программное обеспечение с открытым исходным кодом. В то же время мы также создали коммерческую платформу. Пользователи без графического процессора могут напрямую обучать и развертывать на платформе свои собственные большие модели. Мы также предоставляем различные модели, такие как LLaMA, PaLM и GPT, и максимально быстрая точная настройка модели занимает всего два или три дня. По сравнению с предыдущими пользователями, которым могли потребоваться недели или даже месяцы, чтобы разобраться с инфраструктурой, такой как аппаратное и программное обеспечение, эффективность значительно повысилась. В то же время Colossal-AI также защищает конфиденциальность пользователей.Платформа не сохраняет пользовательские данные и не получает к ним доступ.В этом существенное различие между Colossal-AI и OpenAI ChatGPT. Когда мы загружаем данные в Google Cloud, Google во многих случаях не трогает наши данные, но OpenAI GPT проанализирует их, и такие риски, как неинтерпретируемые модели ИИ и неполное обучение, являются обычным явлением. Поэтому в будущем многие компании будут обучать свои собственные большие модели.

С точки зрения производительности, Colossal-AI может обучать модель в 24 раза больше на том же оборудовании, что в 3 раза быстрее, чем DeepSpeed.Даже сервер начального уровня может использовать Colossal-AI для завершения соответствующего обучения модели. Например, для обучения LLaMA-65B, используя тот же код на Colossal-AI, можно напрямую получить эффективность ускорения около 50%.

Простая аналогия, например, сейчас большая модель для добычи золота, а Nvidia продает лопаты, затем мы продаем перчатки и одежду и максимизируем эффективность добычи золота.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить