Pull to refresh
2
0
Send message
Прелесть огромных моделей в том, что они выхватывают правила сами, основываясь на корпусе языка, а не представлениях людей об этом корпусе.
Проблема скорее всего в противоположном — текст закодирован BPE, вместо символов на вход подается код из 65536 «букв», и каждая такая буква может представлять из себя целую последовательность символов. Регулярность морфологии это убивает — во всяком случае, если этим не озаботиться. Даже оригинальный GPT-3 плохо рифмует. При этом если р а з д е л и т ь текст пробелами — рифмовать начинает лучше (я не пробовал, так говорят).
То есть проблема не в том, что английский аналитичен и это делает его якобы проще (там своих сложностей хватает), а в том, что исследователи закладывают в свои модели prior'ы (как это по-русски?), которые позволяют бить рекорды на англоязычных датасетах.
Мне кажется, что вы были бы недовольны независимо от того, что именно пилили бы ребята из Сбера, всё равно это будет тускло в сравнении с такими ресурсами.
Из каких моих слов это следует?
То, что кому-то доступно пилить ещё более мощные модели
Switch Transformer я привел в пример не потому что он «мощный», а потому что они задаются новым вопросом, как эффективнее использовать суперкомпьютерное железо и минимизировать оверхед на обмен данными между нодами. То есть люди, обладая сопоставимыми мощностями, не стали повторять пройденное, а стали копать новое и поделились тем, что накопали.

К тому же здесь не простое воспроизводство, совсем другие исходные данные
В том-то и дело. Данные другие, а архитектура та же. Ну, возможно для русского языка не нужны какие-то специфические prior'ы, мы в 2021 вообще универсальные архитектуры хотим. Но вообще год прошел. Слои новые появились, варианты их комбинаций, энкодинги там всякие. GPT-3 был идеален что ли? Ну вряд ли.
Аргумент про повторение бейслайна — ок, но он все равно неповторим (датасета нет, некоторых нюансов типа того, где sparse слои — тоже нет), а главное — бейслайн обязательно должен быть в виде модели размером со стадион, со стоимостью эксперимента в 50 тысяч долларов? Странный подход. Большую часть инноваций можно обкатать на small модели, а если улучшение пропадает при скейле, это выяснится при переходе на medium. Смысл делать XL, а потом такие — а давайте гиперпараметры потюним — ну такое.
А тут ребята выкладывают L несколько месяцев назад, а сейчас — XL, и похоже, что основная забота чисто инженерная — а не замахнуться ли нам на 175B. Но если вспомнить фразу «руководство Сбера приняло решение о выделении вычислительных ресурсов под исследовательский проект по обучению GPT-3», то все сходится — выделили деньги на GPT-3, обучают GPT-3.
Это просто научный эксперимент, никто не знает для чего она и будущие варианты её развития пригодятся.
Ученые прочитали статью по GPT-3 и ушли пилить Switch Transformer, потому что с GPT-3 уже все ясно и интереснее копать в другом месте.
А здесь простое воспроизводство. Что довольно грустно, потому что с публикации GPT-3 без малого год прошел, есть куча мест, где архитектуру можно улучшить и последовательно оттестировать на моделях разного размера, а не пытаться чисто с инженерными целями трейнить сетки все больше и больше.
Но меня терзают смутные сомнения, что это в принципе заточенность под догоняющее развитие.
А с такими системами все придет в итоге к модели Гугла, где тебе никто не поможет в подобных случаях.
Это называется монополия и автоматизация тут не при чем. Скорее наоборот. Монополия с операторами-людьми — это гарантированное хамство, особенно при условии того, что 99% проблем типовые и человек-оператор уже отупел от них. Если кто не помнит, сбер таким и был. Решить вопрос из дома, звонком? Ха!
А тут робот хотя бы часть проблем решает, а человек в техподдержке не тупеет от вала идиотских вопросов и у него больше шансов остаться человеком.
Но все эти оптимизации на цене услуг никак не сказываются, потому что монополия, им интереснее GPT-3.
Как же быстро это улетело в недоступные дали.
Да вполне они доступные. Это как в 90-е с графикой — сегодня рендерится на рабочей станции Silicon Graphics ценой с квартиру, через несколько лет тот же уровень графона (не без хитростей и оптимизаций, конечно) уже на одной карточке бегает. Благо (для простых людей, которые пытаются угнаться), с выходом за пределы одного чипа начинают резко расти затраты на коммуникацию — сначала между карточками, потом — между машинами. Поэтому 300М модель так же и тренится — ну не несколько дней, но посильно, а вот 1000M — уже сложности, 10000М модель — дикие сложности и неокупаемый спорт высоких достижений.
А потом на типичном GPU будет не 8 гигабайт, а 80, и привет, оказывается, 3000М модели — мейнстрим.
Тут должна придти AMD и выпустить дешевые карточки кучей памяти. Пусть даже тормозят и драйвера глючат, главное, чтобы памяти много было. Нвидия это в жизни не сделает — ее устраивает продавать теслы в 5 раз дороже за больше памяти и nvlink. Я думаю, если бы не майнинг, это бы давно уже было на рынке. А сейчас смысл, и так купят.
Обратите внимание, что там где вероятно вы видите артефакты стоят скобочки.

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

Среднесрочно — это противоречит целям нашего проекта по паре причин

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

Я хочу, чтобы весь e2e пайплайн (сетка) весил максимум 5-10 мегабайт. Достижимо пока наверное сделать 20-30 мегабайт. Огромные трансформеры тут не вписываются;

Почему огромные? Средние. Такотрон тоже небольшой. Все, о чем я говорю, это скейлапнуть контекст путем перехода с забывчивых лстм. С тем же размером контекста скорее всего даже выигрыш будет по сравнению с. Вон кто-то на гитхабе утверждает, что TransformerTTS в 4 раза быстрее такотрона (правда, почему-то первого) github.com/soobinseo/Transformer-TTS. Далее нужно плавно скейлапнуться от предложения к абзацу. Как раз наверное 5 мегабайт и превратится в 20.
Прямо слышно, как резко меняется интонация при смене окна контекста. В этом основная проблема: на 1 предложении звучит хорошо, а на связном тексте слышно, что читает робот, который вообще не понимает смысл текста. При этом декодер в принципе звучит нормально, а артефакты — по типу того, что делает кодек при общении по скайпу.
Короче, нужно тренировать на абзацах, а не отдельных предложениях, и заменить в такотроне лстм на трансформеры с воооот такенным окном контекста. Чисто на мой взгляд мимокрокодила, потому что скорее всего пейперы на эту тему уже есть.
А я просто прочитал статью, сделал закономерный вывод, что патч будет иметь явно временный срок годности и забил.
Я не про патч, а про бенчмарки. Фраза в статье — «Процессоры AMD показали себя сильно хуже», насколько хуже не сохранилась информация? На 30% или в 2 раза.
Сам я ничего не патчил, но, может, и пропатчу, когда для аугментации в параллель с GPU не будет хватать 20%. Пока обхожусь (о ужас) оптимизацией своего кода.
И да, жду пока хейтеры из комментов напишут, что надо инструкции на все версии процессоров AMD на 10 лет назад написать xD
Некоторые комментарии тут странные и видимо не понимают объем расшаренной с сообществом информации, докапываясь до какой-то херни.
По моей ссылке там бенчмарки показывают 25-90% прирост при патчинге. У вас сопоставимо было или еще хуже?
А так конечно Intel вкладывается в MKL чтобы покупали их процессоры, тут вопросов нет.

Ладно, это исправляется в utils.py, меняем бэкенд на sox_io.
Такие ошибки — это version mismatch. Если у авторов бегает, значит нужно поставить их версии пакетов и не выдумывать как это все патчить. Потому что это интерпретируемый питон и когда оно свалится и какие ошибки оставит под капотом неизвестно. Отсюда эффектом домино вылезают недельные проблемы.
Поэтому, если не жалко своего времени, — свежее окружение, установка всего из requirements.txt. А где не так? Другие языки разве что сами форсят это — та же папка node_modules под проект. А окружение для С++ называется докер.
Второй момент — используйте конду, а не virtualenv. Там как минимум больше выбор бинарников, возможно даже найдется для своего некропроцессора. Но главное, там есть своя упакованная cuda, а pip в virtualenv будет полагаться на системную. Тоже источник несовместимостей.
Третий момент — обновите железо.

А это уже от PyTorch привет, тоже где-то что-то не срослось, скорее всего с какой-то библиотечкой слинковаться не может.
Да процессор без инструкций, очевидно же. При чем форсится это той же intel — очевидно же что они могли бы откатываться к легаси инструкциям в своей линейной алгебре при несовместимом процессоре, но делать этого не будут.

В случае со сбером — они не указали torch, apex и torch-blocksparse в requirements.txt, то есть там никто не озаботился протестить свой же репозиторий на свежем окружении. Ну как бы, спасибо на том, что выложили. Но вообще это не дело.
Процессоры AMD показали себя сильно хуже
Интел нерфит производительность своих библиотек (как минимум MKL) на чужих процессорах www.reddit.com/r/MachineLearning/comments/f2pbvz/discussion_workaround_for_mkl_on_amd
Если уже есть настоящая вентиляция, то, наверное, фильтр приделать несложно.
Если есть вентиляция, а в ней есть вентилятор, то перед ним обязательно защитный фильтр. Проблема надумана, в том числе из-за агрессивного маркетинга хеп.
Любая вентиляция это дырка с мотором, она становится дорогой и сложной когда нужно экономить на обогреве, но это не обсуждаемый случай.
Мол 10 гигабит хватает
Можно прикинуть — при обучении идет обмен градиентами, соответственно требуемая полоса пропорциональна размеру модели и количеству шагов оптимизации в секунду. Десятимегабайтная модель, апдейтящаяся 10 раз в секунду, требует порядка 100 мега_байт_ на ноду. Соответственно на гигабитном канале 50% времени будет идти прогон, 50% времени — обмен градиентами. На 10 гигабитах ситуация получше, но, с другой стороны, зачем такой модели, которая обучится за пару дней на одном GPU, сетевые решения? Если в пределах одной машины можно устроить молотилку на 4-8 GPU. Не понимаю.
Там вообще не просто все с этими линиями. Несмотря на 64 линии, под PCI-E выдается максимум 48, то есть карты работают в режиме 16x-8x-16x-8x. Из-за этого потенциал для апгрейда довольно куцый — процессоры под сокет TR4 которые не 1900X стоят дорого, турбинные карты ограничивают выбор.
В целом решения есть, но что-то новое я бы собрал на EPYC, я почему-то думал что их дешевле 200к за комплект мать+проц не бывает.
Я на Threadripper 1900X и Gigabyte X399 Aorus Exteme собрал, обошелся без райзеров, 4 GPU слота там правильно расположены
У меня есть и то и то, я могу сказать только что все упирается в текущий рынок. За определенную сумму все карты выше определенного уровня хороши (совсем дешевые плохи из-за того, что занимают PCI-E слот, который стоит денег). Так что если на multi-GPU плевать и система собирается под инференс или под гридсерч, можно подумать.

В сентябре 1080Ti стоили 30 тысяч, 2070S стоили 40 тысяч новые, 2080S стоили столько б/у. Между 70S и 80S не такая большая разница чтобы покупка б/у окупалась, но вот 1080Ti на этом фоне смотрелись так себе.
Плюс 1080Ti: 11 гб памяти против 8 у 2070Super.
Плюсы 2070S: такая же производительность на 32 битах, но холоднее при этом (градусов на 10-15 в турбинном исполнении), есть 16 бит.
Как сейчас с рынком не знаю. Бегло похоже, что 2070S до сих пор предпочтительнее.

По поводу 16 бит. Главный плюс float16 не столько в приросте скорости, сколько в том, что это эффективное удвоение доступной памяти, а это много. То есть помимо прироста скорости еще и скорость тренировки выше из-за на 30% большего батча. Память — это хорошо.

Прирост скорости штука более тонкая. Если постоянно тренируешь один и тот же тип CNN — это одно, прирост будет двухкратный и без проблем. Если сравнивать поколение к поколению (то есть 1080Ti и 2080Ti) — верю и в трехкратный. Но. По сути это лишний «гиперпараметр», усложнение всей конструкции. Возможно где-то потребуется лишняя нормализация, возможно сторонний код незаметно кастанет все в 32 бита. Я вот вчера обнаружил, что при возврате на 32 бита у меня нет замедления вообще. Полгода назад было, сейчас нет. Потому что кастомные слои с гитхаба. Пофиксить не проблема. Но тем не менее, если бы у меня были 3090, я бы не запаривался с 16 битами вообще, это не бесплатная вещь.
То есть мать за 60 тысяч и к ней можно купить дешевый EPYC 7261 за 30-70 тысяч и получить 128 PCI-E lanes? Вот это круто. Кажется я знаю, на чем буду собирать следующую систему.
Запустил все модели на 2070Super. С ruGPT2048 намучался больше всего. На CUDA 10.1 остановился на следующем:

Сначала по инструкции

python -m pip install virtualenv
virtualenv gpt_env
source gpt_env/bin/activate
pip install -r requirements.txt

Затем возникли проблемы с torch/apex/torch-blocksparse которых в requirements.txt нет. С этими версиями работает:

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f download.pytorch.org/whl/torch_stable.html

sudo apt install llvm-9

git clone github.com/NVIDIA/apex #8a1ed9e
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext".

pip install torch-blocksparse #1.1.1

В таком порядке. Затем в scripts/generate_ruGPT2048.sh заменить load и tokenizer-path на путь к распакованной модели (rugpt2048.tar.gz )

Затем запустить scripts/generate_ruGPT2048.sh

Information

Rating
Does not participate
Registered
Activity