gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24.1K subscribers
2.72K photos
2 videos
3 files
1.34K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
Проблема, что этот метод сложно применять с blackbox моделями типа OpenAI, но с новыми параметрами про logprobs и top_logprobs (https://platform.openai.com/docs/api-reference/chat/create#chat-create-logprobs) как-то можно к этому приблизиться. Правда лицензия (https://openai.com/policies/terms-of-use) вроде как это запрещает (“Use Output to develop models that compete with OpenAI”), но тут я не очень понимаю, как на сгенерённых GPT-4 датасетах обучают другие модели, там почему можно?
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
🔥6😁4🤣3👍1
An In-depth Look at Gemini's Language Abilities
Статья: https://arxiv.org/abs/2312.11444
Код: https://github.com/neulab/gemini-benchmark

Нанообзор.

CMU и некий BerriAI опубликовали своё сравнение Gemini Pro с GPT-3.5, новой GPT-4 Turbo и Mixtral. В оригинальной статье Гугла как раз самых новых интересных моделей типа GPT-4 Turbo не было. Ещё конечно было бы любопытно с Claude 2.1 сравнить.

В целом от Pro особых ожиданий не было, она и по родному сравнению была примерно сравнима с GPT-3.5 (в текущем сравнении она оказалась похуже). Самая интересная модель Ultra, но она пока недоступна. Интересно, конечно, будет, если OpenAI успеет GPT-4.5 до конца года выкатить.

Ниже одна итоговая картинка со сравнением. За деталями самих сравнений велкам в статью.
5👍3
PathFinder: Guided Search over Multi-Step Reasoning Paths
Olga Golovneva, Sean O'Brien, Ramakanth Pasunuru, Tianlu Wang, Luke Zettlemoyer, Maryam Fazel-Zarandi, Asli Celikyilmaz
Статья: https://arxiv.org/abs/2312.05180

Активно развивается тема многоходовых генераций через LLM. Здесь уже были Tree-of-Thought (https://news.1rj.ru/str/gonzo_ML/1885), есть Graph-of-Thoughts (https://arxiv.org/abs/2308.09687) и даже Everything-of-Thought (https://arxiv.org/abs/2311.04254) с применением MCTS. Взбудораживший общественность Q* от OpenAI (https://www.technologyreview.com/2023/11/27/1083886/unpacking-the-hype-around-openais-rumored-new-q-model/) предположительно тоже связан с многоходовым планированием в LLM. Если посмотреть глобально, то оно всё ложится в концепцию LLM Programs (https://news.1rj.ru/str/gonzo_ML/1584).

FAIR предложили свой подход к многоходовой генерации под названием PathFinder, метод декодирования для генерации и уточнения reasoning chains. Подход состоит из двух этапов: генерации кандидатов (candidate generation) и их отборе (candidate selection). Для генерации используется метод на деревьях, для отбора специальные функции близости внутри пула кандидатов.

На этапе генерации ветвление происходит на уровне шагов рассуждения, не генерации отдельных токенов. То есть каждый узел дерева -- это шаг рассуждения. На ветвление влияют параметры сэмплинга (типа top-k, top-p, температуры -- для неё реализован отжиг, уменьшение с коэффициентом). Делается ветвление из каждого неудалённого (non-pruned) листа с заданным коэффициентом ветвления и продолжается пока не достигли точки останова либо не превысили заданную максимальную глубину. Ветви удаляются на основе скора (нормализованная на длину сумма logprobs токенов).

На генерацию есть ограничения. Так, модель перегенерирует шаг, если сработала одна из двух проверок: 1) шаг по косинусной близости похож на один из предыдущих; 2) шаг противоречит предыдущему контексту (за это отвечает специальная entailment model, классифицирующая шаг по трём классам: entailment, neutral, contradiction). Ветка дерева обрезается, если за две попытки не удалось сгенерить валидный шаг.

Есть также размер буфера b, ограничивающий количество гипотез, хранимых для каждого вопроса. Финальная гипотеза выбирается из пула так, чтобы она максимизировала сумму функций близости (работал вариант с количеством общих n-грамм) со всеми другими кандидатами в пуле, это интуитивно похоже на голосование или self-consistency (https://news.1rj.ru/str/gonzo_ML/1885).

Для тестов используется маленькая LLAMA-7B, проверяют на GSM8K, StrategyQA, CSQA, то есть про арифметический и commonsense reasoning. Для отбора кандидатов пробовали три разных метода: триграммы, и FLAN-T5-XL или text-davinci-003 в качестве verifier model.

Бейзлайны разные: GPT-6.7B, та же LLAMA-7B, MINERVA-8B (ожидаемо рулит на GSM8K) и FLAN-T5-XL 3B (сильно instruction finetuned). В бейзлайнах дефолты в основном на основе greedy decoding + CoT prompts.

Не сказать что PathFinder прямо радикально всех бьёт. На первых двух бенчмарках LLAMA-7B с self consistency выступает прям очень хорошо. Новый подход заметно улучшает только на третьем бенчмарке. Flan силён, но он файнтюнился на части из этих датасетов, так что на цифры смотреть бесполезно.

Отдельно проверили, насколько добавляют качества продвинутые методы оценки (scorers и verifiers через LLM). text-davinci-003 всех бьёт, но до upper bound (с оракулом) ей далеко. В этой части явно есть что улучшать.

Фактор ветвления в сочетании с размером буфера и функцией оценки кандидатов важен. При большом ветвлении функции оценки могут быть сильно подвержены влиянию шума. Для каждого размера буфера свой оптимум. У самого размера буфера тоже есть лимит, после которого качество не улучшается. Также интересно, что для методов на деревьях важно разнообразие, PathFinder начинает перформить лучше end-to-end метода только начиная с 8-кратного ветвления.
👍143
Резюмируя, метод вычислительно более тяжёлый в разы (а с LLM для оценки ответов тем более), в данный момент радикального прорыва относительно других методов не показал, но как proof-of-concept или даже скорее развитие активно прорабатываемой везде темы полезен. Больше разнообразия -- это хорошо. Интересно, насколько другой результат был бы на больших топовых моделях, а не на старой первой маленькой Ламе.
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
👍5
PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU
Yixin Song, Zeyu Mi, Haotong Xie, Haibo Chen
Статья: https://arxiv.org/abs/2312.12456
Код: https://github.com/SJTU-IPADS/PowerInfer

Очень интересный инженерный проект по оптимизации инференса LLM от Института параллельных и распределённых систем из Шанхая, чтобы запускать большие LLMки на GPU консьюмерского уровня. Авторы опубликовали свой гибридный GPU-CPU движок для инференса под названием PowerInfer, который работает быстрее llama.cpp в 11+ раз на RTX 4090 (24G) с моделью Falcon(ReLU)-40B-FP16, а также демонстрирует скорость генерации токенов всего на 18% ниже, чем в 10 раз более дорогая A100.

Работа основана на следующих наблюдениях. Первое: активации нейронов в LLM демонстрируют локальность (locality) и распределены по степенному закону. Есть небольшое количество hot neurons, которые активируются часто на разных входных данных, и cold neurons, активирующиеся редко на конкретных входах, и которых большинство. Второе ценное наблюдение в том, что пересылать нужные веса с CPU на GPU и считать результат там может быть медленнее, чем посчитать их на месте на CPU, особенно если нужна не полная матрица весов, а её подмножество (которое может быть неплохо посчитано через современные векторные расширения в системе команд процессоров). В итоге горячие нейроны (строки/столбцы соответствующих матриц весов) отправляются на GPU для быстрого доступа, а холодные считаются на CPU по мере надобности. Это существенно понижает требования к памяти GPU и уменьшает пересылку данных через шину PCIe туда-сюда.

Технически PowerInfer состоит из двух частей: движка инференса и оффлайн части.

Оффлайн часть включает профайлер для обнаружения горячих нейронов и солвер (на основе целочисленного линейного программирования, Integer Linear Programming, ILP) для оценки влияния нейрона на результат инференса и создания полиси аллокации нейронов. Это 400 строк на Питоне + HuggingFace Transformers. Горячие/холодные нейроны определяются на офлайн шаге, далее во время инференса они будут загружены на GPU/CPU соответственно.

Движок инференса сделан на базе llama.cpp с добавленными 4200 строк кода на C++/CUDA. Движок запускает на CPU отдельные треды для GPU и CPU экзекьюторов, которые управляют этими конкурентными вычислениями, а слияние результата происходит на GPU (потому что там сидят более часто активирующиеся нейроны). PowerInfer использует адаптивные предикторы для предсказания, какие нейроны будут активны при текущих входных данных, и только эти нейроны (из уже разделённых на горячие и холодные) и вычисляются. То есть нейрон мог быть определён как горячий на офлайн шаге, загружен на GPU, но всё равно не активирован, потому что предиктор решил, что его вычислять не нужно. Можно, наверное, это рассматривать как adaptive sparsity.

Для каждого трансформерного слоя работают два предиктора, один для MHSA, другой для MLP. Живут они тоже в памяти GPU, поэтому есть конкуренция за этот ресурс и предикторы важно сделать минимально допустимого размера. Предиктор -- это MLP с одним скрытым слоем. В работе есть хитрая итеративная процедура для изменения размера скрытого слоя предиктора в зависимости от асимметрии (skewness) распределения активаций.

Так понимаю, что предикторы и для hot/cold и для онлайн шага обучены независимо на типовых корпусах типа C4 или Википедии, и код их обучения пока не опубликован. Но вроде как планируется.

Также реализованы свои neuron-aware sparse operators, которые более заточены на эту задачу, чем более универсальные из cuSPARSE, Sputnik (https://github.com/google-research/sputnik), SparTA (https://github.com/microsoft/SparTA) или FlashLLM (https://github.com/AlibabaResearch/flash-llm). А JIT компилятор PIT (https://arxiv.org/abs/2301.10936) не поддерживает GPU-CPU гибридизацию.

В результате хорошие ускорения до десятка раз относительно llama.cpp на разных моделях.
🔥459👍6🤯4
Просадка в качестве модели от такой индуцированной разреженности минимальная. Изредка бывает незначительное уменьшение, но бывает и увеличение качества, что само по себе интересно (если это не статистическая флуктуация).

PowerInfer совместим с разными семействами LLM, включая OPT (7B-175B), LLaMA (7B-70B), и Falcon40B. На очереди Mistral-7B.

Я прям уверен, что от этого и других подобных решений разойдётся целая ветвь новых работ и продвинутых движков инференса. Самой Нвидии это скорее всего не очень интересно (надо продавать дорогие A100/H100), но народное опенсорс движение создаст свою вселенную решений для более дешёвого железа. И здесь должен возникнуть не один стартап.
22🔥10👍2