Обновить
43
0.1
Михаил Хрущев@MichaelEk

Deep learning/NLP developer in Yandex

Отправить сообщение

При помощи A/B тестов и прочих статистических трюков мы строим некоторую модель мира, в которой допускаем, что априорно константные значения на самом деле имеют вероятностную природу. В этом контексте рассуждать про то, что заданная величина находится в доверительном интервале с вероятностью 95% - корректно.

Рассуждения из статьи - это рассуждения с точки зрения демона Максвелла: если автомобиль проедет по неоднородному болоту в одном направлении, он же точно окажется а точке X, а не в каком-то вероятностном распределении точек. Увы, инструменты для создания демона Максвелла нам недоступны - приходится всем, даже константным неизвестным значениям давать апостериорную оценку вероятности.

Спасибо за замечательный вопрос!

Для AllGather и ReduceScatter есть 3 алгоритма: RING, CollNet (aka SHARP), и PAT. Есть еще NVLS, но он не подходит для межхостовых коммуникаций: https://github.com/NVIDIA/nccl/blob/master/src/device/generate.py#L81

CollNet (SHARP) мы не пробовали, PAT: 

  • имеет ограничение - не больше одной GPU с хоста в коммуникации;

  • в таком режиме не лучше RING-алгоритма даже на небольшом числе нод.

Идея SHARP замечательная: хитрыми манипуляциями можно добиться уменьшения объема коммуникаций x2 за счет переноса части логики и вычислений на свитчи и NVSwitch. Но это требует написания довольно хитрой логики + в случае нашей модели на небыстрые свитчи будет приходиться слишком много вычислений - они станут боттлнеком всего обучения.

В любом случае, ни один из данных алгоритмов не реализует подходы, которые являются ключевыми преимуществами YCCL:

  • уменьшение битности reduce-scatter при пересылках без потери точности;

  • YCCL управляется целиком с CPU, а NCCL требует 16 SM'ок, без которых матричные умножения замедляются на 10%.

Интересно, что при запусках на 1024+ GPU кольца становятся настолько неэффективными, что даже такая операция, как all_reduce лосса может начать занимать до 10% времени итерации. В этом случае мы используем как раз NCCL_ALGO_TREE.

Кстати, мы рассказываем о коммуникациях и не только на нашем интенсиве:

4 лекция как раз посвящена коммуникациям

Привет!

(1.) Все верно. Нужно еще место под промежуточные активации

(2.) Блоки трансформера идут с 03 по 82 слой. Остальные слои - эмбеддинги, преобразования в нужную размерность, лямбда функции (у них нет чекпоинта). Структура слоев взята из PipelineModule DeepSpeed

(3.) За 65 дней модель прошла 300B токенов - столько же, сколько GPT-3 от OpenAI. Её можно было бы улучшить, обучая еще, но для существенного роста качества ее стоило бы обучать еще месяц-два.

Спасибо за внимание к статье. Отличные вопросы!

  1. На данный момент это самая большая полностью обученная LM модель, выложенная в open source. А также, это самая большая на данный момент модель, обученная на русском языке.

  2. Запуск такого ноутбука - нетривиальная задача, для удобства использования мы выложили докер, который можно запустить на Яндексе или AWS. На github есть скрипты запуска.

  3. Какого рода примеры генерации интересны? Диалоги один из наших основных генеративных кейсов, поэтому мы исследовали генерацию на них. Ответы из примеров были сгенерированы YaLM 100B с подводкой, похожей на диалоговую подводку из статьи Gopher. Справедливости ради отмечу, что не каждое продолжение диалога выглядит так хорошо и интересно, но:

    • почти все ответы модели были адекватными;

    • из них примерно 30% были действительно интересными.

  1. Замеряем на fewshot и zeroshot генерации.

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

Параметры выше generate_conditional_sampling.sh хороши для генерации разнообразного текста, но лучше обеспечить текст достаточно большой подводкой. Пример хорошей диалоговой подводки вы можете увидеть на 112-113 страницах статьи Gopher.

Для решения каких-то прикладных задач с единственным правильным ответом, вроде QA на fewshot, стоит использовать параметры из generate_conditional_greedy.sh

Информация

В рейтинге
4 290-й
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Старший