Новости и обзоры статей на тему обработки естественного языка, нейросетей и всего такого. Связь: @dropout05 (рекламы нет)
Хороший мини-курс по лингвистике для NLPшников недавно выпустила Лиза Былинина: bylinina.github.io/ling_course.
Зачем эта наука нам вообще нужна? Не столько даже для того, чтобы решать задачи с её помощью, а чтобы правильно задачи ставить и описывать проблемы.
Для меня в последний год, когда я много работаю с языками, которых не понимаю, это особенно важно: нужен понятийный набор, чтобы адекватно такие языки обсуждать.
Поэтому - рекомендую.
Год назад Adept.AI, стартап, основателем которого являлся первый автор оригинальной статьи Attention is all you need, представил модель ACT-1. Это был первый шаг на пути достижения их цели — автоматизации работы в браузере. Вместо выполнения задач вручную можно просто говорить "купи мне билеты до Барселоны на конец недели" — и по идее должно работать. И это было до ChatGPT!
Сейчас уже таких стартапов развелось пруд пруди, даже Sam Altman недавно проинвестировал в Induced.AI (фаундерам по 18-19 лет!), которые делают Zapier для браузера.
Но я чего пишу. Вчера они выложили в опенсорс маленькую версию своего мультимодального трансформера, который лежит под капотом продукта. Модель на 8 миллиардов параметров с максимально простой и понятной архитектурой — картинка нарезается на кусочки и подаётся в трансформер перед текстовым запросом. Среди особенностей:
1️⃣разработана с нуля для digital-агентов, поэтому может поддерживать произвольные разрешения изображений, отвечать на вопросы о графиках и диаграммах, отвечать на вопросы, связанные с UI (по скриншотам), а также выполнять точную локализацию объектов на изображении
2️⃣модель быстрая — можно получить ответы на большие изображения менее чем за 100 миллисекунд
3️⃣модель заточена на их юзкейсы (браузерные агенты), но при этом хорошо работает и в стандартных тестах понимания изображений, таких как VQA и Image Captioning
В общем, если хочется парсить скриншоты или отвечать на вопросы по диграммам — можно присмотреться к модельке. OCR тоже рабоатет, причём, в двух режимах — понять текст в выделенной области и найти область, где написан заданный текст.
Ссылка на анонс
Ссылка на HF
Пара слайдов о GSPMD. Статические графы реально очень круты для параллелизации.
Читать полностью…Я таки добрался поразвлекаться с GPT-4V и старыми картинками из классической работы:
https://gonzoml.substack.com/p/building-machines-that-learn-and
Новый дайджест из мира NLP
1. Лекции MIT по эффективному DL
1. Гайд по distributed training и PEFT
1. Deep Neural Networks Tend to Extrapolate Predictably — чем более OOD инпут тем больше решение сходится к среднему ответу (лучшему input-independent ответу)
1. Ring Attention with Blockwise Transformers for Near-Infinite Context — эффективная коммуникация для параллелизации attention между разными GPU
1. Value-Guided Monte-Carlo Tree Search decoding — MCTS применили к NLP и получилось отлично
Надеюсь что у вас все хорошо
🇮🇱
Image input в ChatGPT начали раскатывать на обычных пользователей 🔥
(по крайней мере я получил)
Если бы не дедлайны, провёл бы весь день с этим делая всякие интересные и полезные штуки, пока что лучше держите мем.
https://www.reddit.com/r/singularity/comments/16sdu6w/comment/k2aroaw
🤡 или 🔥?
I can see this conversation at Adept:
AAA: we need to beat LLAMA7b, how do we do it?
BBB: Train an 8B model?
AAA: you’re a genius!
https://www.adept.ai/blog/persimmon-8b
Teaching with AI
openai.com/blog/teaching-with-ai
OpenAI выпустил новый пост с гайдом о применении ChatGPT в образовании. Мне кажется что это одна из областей которую до неузнаваемости уже может изменить AI в его текущем проявлении.
В посте рассказывают про текущие успешные кейсы:
1. Role playing challenging conversations - например попросить chatgpt играть интервьюира или критика вашей работы
1. Building quizzes, tests, and lesson plans - составление материалов это очень тяжелая часть преподавания и держать их up to date может быть тяжело. С chatgpt вы же можете просто загрузить вашу лекцию и попросить сделать для неё квиз, ещё и в заданном стиле
1. Reducing friction for non-English speakers - на моём опыте GPT4 сильно обходит google translate в качестве перевода тк вы можете дать ему дополнительный контекст. Например попросить не переводить термины.
Дальше они приводят несколько примеров промптов. Вообще хотелось бы увидеть побольше в посте, но хотя бы мы видим что эта область OpenAI небезынтересна.
GPT-3.5 Turbo fine-tuning and API updates
openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates
Теперь GPT-3.5 можно файнтюнить!
Чуть больше подробностей:
1. Все тренировочные данные пропускают через OpenAI Moderation API и через дополнительную систему модерации на GPT4. Кстати если вы не знали про Moderation API — он публично доступен и бесплатен если вы его используете вместе с обычным Chat API.
1. В общем это все детали 🤷♂️
Цена:
Training: $0.008 / 1K Tokens
Usage input: $0.012 / 1K Tokens
Usage output: $0.016 / 1K Tokens
Это была очень ожидаемая фича, интересно как пользователи будут её применять.
Я люблю слушать подкасты на фоне делания чего-нибудь нерабочего. Когда еду в транспорте, бегаю, гуляю, или просто ем. Например постоянно слушаю Radio-T уже лет 10 и @zavtracast уже лет 5.
Долго не мог понять почему мне не заходят подкасты на английском. Иногда могу послушать Lex Fridman, если к нему пришел кто-нибудь интересный типа Sam Altman (OpenAI) или Robert Playter (Boston Dynamics). Но именно эпизодически. Ещё сюда же можно добавить подскасты от The Gradient, Microsoft Research, talkRL, и LatentSpace. Те подкасты которые хорошо и дорого срежисированы и качественно записаны, например подкаст DeepMind мне как-то совсем не заходят.
Но сегодня я понял что мне просто не получается расслабиться слушая их и я хочу что-то типа Завтракаста, где народ рассказывает новости и несёт дичь, но более техническое про ML, DL, AI.
И кажется я его нашёл. This Day in AI оказался для меня идеальным сочетанием новостей, техничности (несмотря на попсовое название), и — главное — дичи. Я понял что мы сойдёмся на фразе "… and you have Anthropic, which is some weird futuristic safety sex cult." В общем будем слушать на прогулках.
P.S.
Сейчас пройду собеседования, запущу ReLoRA-1B и надеюсь что смогу вернуться к чуть-чуть более частым постам и обзорам. А то что-то раз в неделю это совсем некрасиво. Ну либо хотя бы найду время заменить себя на GPT4.
🦙 Llama 2 — Meta обучили и опенсорснули новую LLM Llama 2 (и внимание!) для коммерческого использования
Обучили 2 группы моделей: Llama 2 и Llama 2-Chat:
— Llama 2 обучена на открытых данных (размер корпуса увеличилина 40% в сравнение с Llama 1), удвоили контекст, используя adopted grouped-query attention (Ainslie et al., 2023).
— Llama 2-Chat это зафайтюненная с помощью RLHF (Reinforcement learning from human feedback) версия Llama 2, оптимизированная для диалогов (как Chat-GPT или GPT-4)
Опенсорснули Llama 2 с параметрами:
— Llama2-7B
— Llama2-13B
— Llama2-70B
Обидно то, что еще обучали Llama2-34B модель, но не зарелилзили. Именно там самый высокий TruthfulQA = 67.20, против 64.14 у Llama2-70B
Лицензия позволяет юзать Llama-2 не только для ресерча, но и для коммерческих целей!
По метрикам это лучшая опенсорс LLM-ка, а по качеству Llama2-Chat-70B, местами, сопоставимая с Chat-GTP 3.5
📄 Paper
📇 Blog
💻 Download Llama2
Возможно Claude 2 может стать моим основным методом чтения статей. Не хватает только возможности картинки экстрактить из PDF.
Читать полностью…Claude 2 доступный как ChatGPT это очень классно
Наконец-то у ChatGPT появляются настоящие конкуренты, а не Bard (который просто игрушка гугла so far). И то что нам принесла конкуренция — реально удобный интерфейс работы с длинными файлами.
Потестировал свой любимый промпт который пока что никто из моделей не смог сделать. Claude 2 пока что тоже с ходу не может написать приличный код для ditributed LM training.Offtop: заметил что ai.com стал вести не на chagpt, а на сайт майкрософт (нет)
Тут прошла PyTorch Conference 2023
linuxfoundation.org/blog/-pytorch-conference-2023-news
На ней показали ExecuTorch, такой маленький пайторч который умеет только в инференс, но быстрее, меньше, лучше. Пока внимательно не смотрел, но выглядит классно.
Спустя почти год после PyTorch 2.0.1. вышел 2.1. Из классных фичей: поддержка более динамических шейпов для torch.compile, но если я правильно понял если он у вас не работал то он и не заработает, лишь уменьшили число рекомпиляций. Новый distribudet.checkpoint выглядит очень круто, писать такое самому можно, но не хочется. Посмотрим как работает, когда будем тренировать что-то что не помещается в одну ноду. Torch.sparse теперь умеет в MxN sparsity которая появилась в предыдущем поколении nvidia.
В общем обновления торча выглядят неплохо, кажется раньше между новыми минорными не проходило настолько много времени. После того как pytorch вошел в linux foundation они будто стали медленнее развиваться. А ещё показали унылые программы сертификации на конференции и тут уже пахнет трупами oracle. В общем к торчу не привыкайте, посмотрим что там нового у *JAX
Но чтобы не заканчивать на грустном, вот новые классные маленькие фичи:
1. torch.device теперь можно использовать как context manager 🔥
1. В LayerNorm теперь можно выключить bias 🔥
1. functorch.einops.rearrange 🔥🔥🔥
1. Allow non-uniform requires_grad for use_orig_params=True в FSDP (это личная радость, возможно теперь FSDP будет юзабельным)
1. Better function annotations for nn.functional
Improving Image Generation with Better Captions
cdn.openai.com/papers/dall-e-3.pdf
Внезапно, OpenAI выложили статью (не model card) с описанием куска DALL-E 3.
Главная цель — улучшить prompt following. Решили что проблема на самом деле в качестве датасета. После чего натренировали хорошую систему для imagine captioning на основе LLM и сгенерировали очнь подробные описания картинок из датасета. Финальный тренировочный датасет состоял на 95% из псевдооейблов.
Деталей про саму тренировку DALL-E 3 мало, только лишь сказали что детали заметно отличаются от DALLE-2. Хотя бы не было лицемерного «это все для вашей безопасности» в этой части статьи.
Efficient Streaming Language Models with Attention Sinks
Xiao et al
arxiv.org/abs/2309.17453
Github
Забавная статья где делают так чтобы трансформеры генерировали текст бесконечно
Идея похожа на Recurrent Memory Transformer: мы считаем attention не на всех токенах, а только на последних L и нескольких первых
Логика: в attention maps первые токены используются моделями как некоторая attention-помойка. Если их убрать и наивно переиспользовать kv-cache следующих токенов для window attention нормализация softmax в attention сильно изменится и перплексия полетит в бесконечность
Авторы предложили добавить в начало текста 4 пустых токена и всегда держать их в kv-cache, когда остальные используются как в window attention. И внезапно это заработало даже без файнтюна
На мой взгляд, статья проводит линию между длинными контекстами и длинными текстами. Тут модель не может обращаться к информации из старых токенов. Это может быть не интересно с позиции чтения длинных текстов, но полезно с позиции деплоя и генерации
Large Language Models (in 2023)
Видео, слайды
Лекция от Hyung Won Chung из OpenAI о языковых модельках. Где мы находимся и куда мы идём. Очень рекомендую, а вот короткий пересказ:
Perspective of "Yet"
Если что-то не работает на текущем размере LLM, не стоит думать что это в принципе не работает, мы это много раз видели. Те свойства моделей которые мы нашли в 2022 могут не быть в моделях 2024 года. Из-за этого те кто только погружаются в DL могут иногда иметь лучшую интуицию чем те кто там уже давно и выработал её за предыдущие 10 лет. А ещё пишите свои скрипты так чтобы вы могли перезапустить их через год на новых модельках 😅
How is the scaling actually done?
Натренировать самую большую в мире модель гораздо сложнее чем просто написать новый конфиг где в 20 раз больше слоёв. Для эффективного использования серверов надо правильно понимать боттлеки в системах текущего размера и того размера которые вы хотите тренировать. Они могут быть разными.
Рассказал почему GSPMD так крут, и я теперь понял почему гугловцы так любили Mesh-Tensorflow. Для того чтобы параллелизовать матричное умножение в нём одновременно по нескольких осям (data parallel + tensor parallel + model parallel) вам не нужно переписывать модель, вы просто декорируете train_step
и пишите по каким осям тензоров он распределяется.
Post-training
Тут классический рассказ о том как работает RLHF
Can we learn an objective function?
В RLHF мы больше не задаём reward-функцию, она выучивается другой моделью. Hyung Won Chung делает ещё один шаг и говорит что кросс-энтропия это серьёзный текущий боттлнек тк она может учить модель только очень конкретным вещам, таким как предсказание следующего токена. Возможно будущие модели мы будем учить на более абстрактых reward-функциях вместо этого. По аналогии с тем что мы со вреенем отказались от hand-written фичей в пользу DL и скоро мы откажемся от hand-written objective functions в пользу выучивания reward model.
Последний тейк интересен, мне лично в это не очень верится (так что скорее всего правда 🤣)
Google закроет и этот продукт #293
Когда конкуренты в виде WandB и CometML начали давить на Tensorboard, гугл решил что их проблема не ненадёжный интерфейс, не невозможность строить графики с любыми X и Y уже после того как вы всё залогали, или очень убогий логгинг гиперпараметров. Гугл решили что проблема в том что у них нету своего облака для лога экспериментов и сделали tensorboard.dev
Сегодня это облако закрывается. Если вы храните на нём что-то полезное, в имеиле описано как это скачать.
Но серьёзно, кто-то ещё пользуется tensorboard вместо wandb/clearml?
Effective Long-Context Scaling of Foundation Models
Xiong, Liu, et al., [FAIR]
arxiv.org/abs/2309.16039
Команда LLaMA взяла датасет с длинными текстами, (400B токенов в сумме), и увеличили контекст LLaMA2 с 4K до 32K токенов. Важный трюк: увеличить период RoPE embeddings с 10K до 50K.
Что интересно, выяснилось что предобучать модели на длинных контекстах с самого начала смысла нет. Для этого предобучили несколько LLaMA7B с нуля. Один из них всё время тренировался c 32K-len, другие модели первые 20/40/80% обучения тренировались с 4K, после чего прееключались на 32K. Разница получилась минимальной.
Кроме этого показали scaling law с длинной контекста (см. картинку). Это удобно тем что можно наперёд предсказывать лосс и использовать это как sanity check того что ваша тренировка идёт хорошо.
Финальные модельки обходят всё что есть в опенсорсе (на тот момент Mistral ещё не было). По метрикам в статье, включая human eval, LLaMA2 Long 70B работает так же хорошо как и chatgpt-3.5-16k.
Дорогие читатели!
Сегодня я сделала шпаргалку по самым известным научным конференциям уровня A* (по CORE2023), связанным с машинным обучением. Большими сойджеками выделены конференции с более высоким h5-индексом в Google Scholar, а маленькими - с h5-индексом поменьше. Забирайте на стену, чтобы не забыть, куда подавать статьи, чтобы потом делать самое сойджековское лицо в своем офисе!
#ML_в_мемах
Flash Attention 2 завезли прямо в 🤗 трансформеры 🔥🔥
Коротко, это мегаэффективный cuda kernel для рассчета attention, который делает ваше потребление памяти линейным вместо квадратичного, да и в принципе работает в несколько раз быстрее наивной имплементации к которой мы все привыкли.
Flash Attention 1 был в 🤗 Optimum и мой опыт с ним... такой себе. Теперь же Flash 2 встроен в основную библиотеку и чтобы его использовать надо просто указать use flash attention 2 в from pretrained.
https://x.com/younesbelkada/status/1705258148045750343
Пример того о чём я говорил про качество перевода chatgpt / google translate. Для идиом или очень контекстуального перевода обычные переводчики всегда будут хуже языковых моделей.
Читать полностью…Do Batch Sizes Actually Need To Be Powers of 2?
Wandb fully-connected
Много кто из вас наверняка слышал что хороший batch size должен быть степенью двойки. Может быть кто-то слышал, что на самом деле батч сайз должен быть разделим на warp size вашей GPU (обычно 32 или 64). Но насколько это вообще правда?
Для современных нейронок (>100M парметров) делимость батч сайза на 2 (или даже 64) не решает вообще ничего. GPU и так занята полностью так как у таких сеток большие hidden size и seq len (вокруг которых и можно параллелить). А ещё вероятно что ваша GPU просто большую часть своего времени ждёт того как из HBM памяти веса и хиддены перегонятся в SM2 (a.k.a GPU is memory speed bounded).
В статье это вещи проверяют на практике с красивыми графиками в wandb. Оч рекомендую к прочтению, статья короткая.
Однако, от себя добавлю, что шейпы тензоров и правда должны быть кратны 32 (V100) или 64 (A100 и H100) хотя бы по hidden чтобы эффективно использовать CUDA Cores. Так как если кусок вашего тензора не делится на warp, низкоуровневый код на GPU всё равно превратит ваш 65x65 в четыре тензора: 64x64, 1x64, 64x1, 1x1 и потом западит их все до 64x64. PyTorch и CUDA стараются сделать автоматические оптимизации чтобы избежать таких плохих случаев, но не всегда получается. Если я где-то продолбался — пишите в комментариях!
💡Measuring the actual effect on training speed, accuracy and memory consumption when choosing a batch size should be preferred instead of focusing on powers of 2.
Universal-NER
https://universal-ner.github.io
Named Entity Recognition — это очень типичная и полезная задачка NLP. Вам надо заэкстрактить адреса, даты, названия компаний итд. Последний раз я был впечатлён моделью NER.... наверное никогда. А тут Microsoft выложил универсальную NER-модель. Вы просто даёте ей описание каждой entity что вам нужно и запускаете.
Вот как модельку обучили: насемплили коротких (256tok) текстов из The Pile и попросили ChatGPT-3.5 сгенерировать ответы на основе описаний сущностей, повторяем этот процесс ещё 45,888 раз и получаем наш датасет. После чего добавили negative samples и немного high-quality человеческой разметки. Дальше на основе этого датасета обучили модель.
Обходит обычные чат-модели вроде Викуньи и ChatGPT-3.5 (сравнения с GPT-4 нет), а также обходит BERT based когда зафайтюнено на тех же данных
Модели доступны на huggingface. Выглядят очень полезно для рабочего использования (в качестве учителя, тк модель 7B). Если кто-нибудь применит, пишите в чат опыт использования
Howto 2.0
Github
Я тут вчера сел и переписал почти весь howto. Для тех кто не знает: это простая CLI тулза на OpenAI API гененирующая shell из вопроса на естественном языке.
Главная фича: минимум интерфейса. В отличие от ChatGPT вам не надо покидать терминал. В отличие от Github Copilot CLI тут нет красивого TUI и диалога с пользователем. Вы просто вводите howto install conda single line и получаете команду в ответ.
Новые фичи:
1. gpt-3.5-turbo и gpt-4
1. Более удобный конфиг
1. Кастомизируемый system message
1. Follow-up вопросы
Я использую howto постоянно и фича с follow-up пришла в голову когда понял что иногда команда сгененирована почти правильно, но надо немного подправить и не хочется этого делать руками. Теперь вы можете попросить howto сделать это за вас.
Stack More Layers Differently: High-Rank Training Through Low-Rank Updates
Статья: arxiv.org/abs/2307.05695
Код: GitHub
Мы задались вопросом: если LoRA настолько хороша для файнтюнинга, можем ли мы применить её для претренинга?
Мы представляем ReLoRA — первый метод PEFT, который может использоваться для обучения с нуля! 🔥
Почему мы не можем использовать LoRA для претренинга? Потому что он оптимизирует только в маленьком подпространстве низкого ранга параметров модели. Этого достаточно для файнтюнинга, но не для претренинга. Что мы можем сделать?
Применить LoRA несколько раз подряд. Это работает, потому что параметры LoRA могут быть интегрированы в основную сеть (W += W_A @ W_B) и потому что сумма матриц низкого ранга может иметь ранг больше, ранги слагаемых.
Но теперь у нас новая проблема: оптимизаторы сильно полагаются на momentum который и определяет большую часть направления апдейта по предыдущим градиентам (а не текущему градиенту). Это делает шаги оптимизации сильно скоррелированными
Представьте первый шаг оптимизации после ресета ReLoRA. Он сделает параметры ReLoRA похожими на параметры предыдущей итерации. Это потенциально может "заполнить ранг" параметров LoRA и минимально увеличить суммарный ранг. Поэтому при ресете ReLoRA мы частично ресетим стейт оптимизатора сохраняя только 0-10% весов. Далее, чтобы избежать нестабильностей мы прогреваем LR 10-50 шагов
LayerNorm и эмбеддинги тренируются как обычно, без репараметризации. Наконец, ранняя фаза обучения очень важна, и нам действительно нужно "подогреть" сеть с помощью обычного полноценного обучения. На практике достаточно 3-5 тысяч шагов
TL;DR
1. LoRA + ресеты
1. Частичный сброс стейта оптимизатора
1. "Зубчатый" LR scheduler
1. Прогрев через обычную тренировку
На совсем маленьких сетках всё грустно, но начиная с 250M метод начинает работать близко к обычной тренировке. На 1B видим уменьшение потребления RAM и ускорение на 50%. Сейчас ищем компьют на тренировку 1B-модели
Буду рад ретвиту вот этого треда — продвигать статьи это довольно сложно 😅
IT’s Tinkoff CTF
Tinkoff проводит соревнование по спортивному программированию с отличными призами.
Задания будут интересны разработчикам, SRE- и QA-инженерам, аналитикам и другим ИТ-специалистам. А еще вы сможете потренироваться на тестовых заданиях и выбрать лигу по своим скиллам.
В каждой лиге 30 задач, которые нужно решить всего за 36 часов. Но не обязательно делать это водиночку, разрешается участвовать командам вплоть до 3 человек.
Обещают сложные задачи на мидл- и сеньор-специалистов, атмосферный сетап путешествия по мультивселенным, капибар, ачивки и пасхалки.
Лучшим командам — вселенский почет и денежные призы до 360 000 рублей!
Совервания будут проиходить 15 и 16 июля. Участвовать можно онлайн и очно в 14 ИТ-хабах Тинькофф по всей России. Офлайн-участников ждут квизы, настолки, крутой мерч и нетворкинг с экспертами.
🚀Переходим на IT’s Tinkoff CTF, читаем подробности и регистрируемся
#промо
Ерид: LdtCKCQiN
Anthropic анонсировали Claude 2, новую модель в авангарде интеллектуальных ассистентов. Прямых сравнений с GPT-4 нет, но относительно старой модели улучшили всё, особенно математику, программирование и способность рассуждать.
Сама компания предлагает думать о Claude 2 как "о дружелюбном, полном энтузиазма коллеге или личном помощнике, которого можно проинструктировать на естественном языке, чтобы помочь вам со многими задачами".
Потыкать бету можно тут: https://claude.ai/
Почитать карточку модели (больше про метрики и сравнение Alignment, нежели технические детали обучения): тяжелый pdf
В прикрепленном видео - демонстрация юзкейсов (но "вау"-эффекта уже не производит...)
Source