Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Хайп NLP не обходит стороной и time series

Там уже во всю прикручивают LM и даже LLM. Цель - сделать универсальную модель, которую один раз предобучил, и она будет хорошо работать на ваших данных без дообучения. Ты ей исторические данные, а она тебе будущее. Такой сетап называют Zero-shot

Потыкал хайповую модель Chronos

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

Собственно переход простой. Авторы просто нормализуют и затем квантуют все значения. Например, 4.5 -> 5, 6.3 -> 5, 7.4 -> 8

А дальше классика - собрать побольше данных. Ребята аугментировали имеющиеся датасеты (TSMixup) и нагенерировали синтетических (KernelSynth)

Чтобы получить предсказания - делаем несколько версий будущего (разница в них будет из-за вероятностного семплинга следующего токена) и усредняем

Из плюсов - реально неплохо работает, когда достаточно большой контекст
Из минусов - это довольно большой трансформер ~100млн параметров (но там есть и tiny версия)
Forwarded from commit history
Позавчера вернулся с NeurIPS, мне понравилось!

Я рассказывал о нашем агенте для решения issues в репозиториях. На базе только открытых моделей получилось выбить 40.6% на swe-bench verified, результат засабмитили месяц назад. Я построил выступление по нашему посту, который можно прочитать тут + добавил инфы о том, как собирали данные. Короткое описание блог поста можно прочитать у Саши, он делал критика для process и outcome supervision. А про данные: скоро выложим еще один блог пост и зарелизим сами данные, которые собрали, так что stay tuned как говорится!

Ниже прикрепляю небольшую пачку фото и видео материалов с нипса.
Forwarded from Start Career in DS
Собрали для вас курсы степика, которые могу пригодиться начинающим и продолжающим) Есть как бесплатные так и платные, но доступные по цене

🐍 Python
Поколение Python - первый курс из линейки по изучению питона с нуля с множеством задач для тренировки написания кода
Добрый, добрый Python - курс для начинающих и для тех, кто уже знаком с Python, но хотел бы повысить/проверить свой уровень
Программирование на Python - вводный курс по питону от Института биоинформатики
Python: основы и применение - курс по питону для продолжающих, тоже от Института биоинформатики


📊 SQL
Интерактивный тренажер по SQL - практика написания SQL-запросов с минимумом теории, сложность возрастает по мере прохождения курса
SQL База - основы SQL от Left Join
Основы SQL - обучение SQL с нуля на примере MySQL
Продвинутый SQL - сложные запросы, транзакции, тригеры и оконных функций в MySQL


⚛️ ML/DL
Deep Learning (семестр 1, осень 2024) и Deep Learning (семестр 2, осень 2024): бесплатный двухсеместровый курс по глубокому обучению от МФТИ
Машинное Обучение в Python - требуется только базовое знание Python, математика добавляется постепенно, поэтому курс подойдет для начинающих
Добрый, добрый ИИ от Сергея Балакирева - первые шаги в ML, нужны знания математики и Python
Нейронные сети и обработка текста - для тех, кто уже имеет базу в ML и хочет научиться применять нейронные сети для решения задач NLP


Math
Математика для всех от Савватеева - курс поможет разобраться в математической логике и механизмах работы математики
Ликбез по дискретной математике - обзорный курс по дискретной математике
Линейная алгебра - краткое изложение основ линейной алгебры
Теория вероятностей - базовыме понятия теории вероятностей, много примеров и задач
Основы статистики от Карпова - база в статистике, уже неоднократно писали про этот курс в канале
Добрая теория вероятностей от Балакирева - школьная база по теории вероятности

Ждём ваших ❤️ и 🔥! Делитесь в комментариях какие курсы проходили вы и можете порекомендовать 🧑‍🏫
Forwarded from эйай ньюз
o3 и o3-mini - разрыв бенчмарков

Это ещё не AGI, но точно SOTA на всём что только можно. Стоимость тоже гигантская - на решение одного единственного таска могут уйти тысячи долларов.

🎓 SOTA результаты по Frontier Math выросли с 2% до 25%.

💻 На SWE-Bench модель набрала 71,7%. Чтобы вы понимали, в этом году стартап смог поднять 200 миллионов долларов с результатами 13,86%.

👨‍💻 ELO на Codeforces - 2727, в мире всего у 150 человек больше ELO.

🔥На ARC-AGI модель набрала 87,5%, бенчмарк пять лет не могли покорить. Авторы уже партнёрятся с OpenAI чтобы создать вторую версию бенча.

👨‍🎓 На GPQA и AIME тоже очень хороший прогресс.

Сегодня дают доступ ресёрчерам безопасности к o3-mini, простым смертным доступ к o3-mini дадут в конце января, к o3 чуть позже.

@ai_newz
Камни, песок и вода при планировании

Как часто вы сталкивались с тем, что команда напланировала много, а сделала сильно меньше? Какие у этого были причины? Обычно это «ой, ну там саппорта много было», «смежники еще задач принесли неожиданно», «сотрудник ушел в отпуск» (вот так сюрприз!) и всё в таком духе.

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

Что делать с этой аналогией?
Если объем банки N, то люди оценивают объем крупных проектов тоже в N и на это коммитятся. Но в банку точно не влезет столько крупных камней. Они же там не один к другому притерты. Есть куча разных промежутков: завязка на смежников, на заказчиков, на интеграцию, на переделку и допочинку (тоже сюрприз, что сразу нельзя без проблем с первого раза всё идеально сделать!). Поэтому крупных камней точно надо планировать меньше, чем N.

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

А дальше еще вода. Люди ходят в отпуск, болеют, имеют естественные спады продуктивности периодически, увольняются и всё такое прочее.

Пример
В моем личном примере у уже знакомой и бодрой команды я закладываю камней примерно на 65%, 25% песка и 10% воды. И это стабильно работает. Проверено уже не на одной команде, не в одной компании.

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

Как-то лет 6-7 назад смотрел доклад Скайенга, и они там подводили статистику, что у них камней получалось 35%, а остальное суета, саппорт, текучка (читай песок). Так что тут без индивидуального подхода я не знаю, как обойтись.

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

Лучше дать обещание, которое кажется несколько скромнее того, чего от вас якобы ждали, и выполнить всё важное и рутинное в срок, чем под конец отчетного периода мямлить и рассказывать, что у вас то одно, то другое случилось.
Оправдания не помогут никому. Ни вам при определении вашей премии за то, как вы наработали, ни тем, кто ждал обещанного, но не дождался.
Forwarded from Душный NLP
Технический отчёт Qwen2.5

Создатели линейки языковых моделей Qwen2.5 представили технический отчёт. Вот что мы из него узнали.

Претрейн

На претрейне использовали датасет объёмом 18 триллионов токенов против 7 триллионов у Qwen 2. В частности, были данные, применявшиеся для обучения Qwen2.5-Math и Qwen2.5-Coder, что позволило улучшить результаты модели в вопросах, связанных с математикой и программированием. Также применяли синтетические данные, сгенерированные Qwen2. Scaling laws использовали для предсказания оптимальных гиперпараметров — например, для learning rate или вычисления размера батча.

Во время первой фазы претрейна длина контекста составляла 4096 токенов, а на второй и финальной — 32 768 токенов для всех моделей семейства, кроме Qwen2.5-Turbo. В её случае претрейн проходил в четыре этапа, начинаясь с 32 768 токенов и заканчивая 262 144 токенами. В каждой фазе претрейна Qwen2.5-Turbo максимального значения достигали только 40% данных, а остальные были короче. По словам авторов, это позволило модели плавно адаптироваться к новой длине контекста.

Благодаря стратегиям YaRN и Dual Chunk Attention удалось увеличить максимальную длину обрабатываемой на инференсе последовательности в четыре раза: до миллиона токенов у Qwen2.5-Turbo и до 131 072 токенов у других версий.

Алаймент

SFT-датасет состоял из более чем миллиона примеров. Длина выхода Qwen2.5 — 8192 токена, в то время как обычно она составляет менее 2000. Улучшения удалось добиться благодаря наборам данных для длинных ответов. Разработчики использовали back-translation, чтобы генерировать запросы на основе данных для предварительного обучения, ограничивали длину выхода и отфильтровывали низкокачественные пары с помощью Qwen2.

Для задач, связанных с математикой, использовали CoT-данные из Qwen2.5-Math. Кроме того, применяли rejection sampling вместе с размеченными данными и моделью награды для пошагового рассуждения. Что касается генерации кода, то здесь было несколько агентов и пары инструкций на примерно 40 языках программирования.

В части instruction following модели генерировали инструкции, проверочные коды и юнит-тесты для перекрёстной проверки. Это позволило LLM лучше следовать промптам. А благодаря внедрению цепочек рассуждений в ответы, Qwen2.5 стала лучше извлекать информацию из структурированных данных — например, таблиц.

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

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

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

Для создания датасета задействовали как автоматические, так и ручные методы оценки. В итоге получился набор данных из 150 тысяч пар. Qwen2.5 обучалась на нём в течение одной эпохи с применением Online Merging Optimizer c learning rate 7 × 10⁻⁷.

Reward-модель тренировали на двух наборах данных: общедоступном и проприетарном, содержащем запросы со сложной структурой. Ответы генерировались с чекпоинтов Qwen-моделей, прошедших файнтюнинг разными методами (SFT, DPO, RL), и при разных температурах. В качестве алгоритма для онлайн RL использовали Group Relative Policy Optimization (GRPO). Набор запросов для обучения reward-модели был идентичен тому, что применялся на этапе обучения с подкреплением. Для каждого запроса отбирали по 8 ответов.

Душный NLP
Forwarded from Tensor Banana
Лора для русского текста на картинке для Flux

Ранняя версия, 50000 шагов, допускает много ошибок.

Для кириллицы используется смешанная азбука: часть русских букв заменяется на похожие английские буквы. Eсли таких букв нету, то берется похожий малоиспользуемый символ из французского, немецкого и молдавского (именно они есть в токенизаторе).
В токенизаторе T5xxl нет кириллицы, поэтому приходится выкручиваться, используя странные символы из других языков. При этом надо иметь в виду, что несколько английских букв часто объединяются в один токен. Иногда это мешает, иногда нет.

Насколько я понял, токенизатор clip-l практически не влияет на отображение текста на картинке. Но вместо clip-l можно использовать vit-l-text. С его помощью будет на 10% меньше ошибок. Но и без него можно.
vit-l-text: https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/blob/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors

"А": "A", "Б": "ß", "В": "B", "Г": "Î", "Д": "ă", "Е": "E", "Ё": "É", "Ж": "ş",
"З": "3", "И": "ù", "Й": "ü", "К": "K", "Л": "â", "М": "M", "Н": "H", "О": "O",
"П": "á", "Р": "P", "С": "C", "Т": "T", "У": "Y", "Ф": "ö", "Х": "X", "Ц": "Ü",
"Ч": "4", "Ш": "##", "Щ": "!!!", "Ъ": "ț", "Ы": "ä", "Ь": "ţ", "Э": "ó",
"Ю": "ô", "Я": "®"


С буквой Ш пока что проблемы, используйте букву Щ.
Букву П можно дополнительно описать как "looks loke Pi symbol".

Потом когда-нибудь напишу кастомную ноду, которая будет автоматом кодировать кириллицу.

На малом разрешении Лора допускает меньше ошибок, чем на большом. Чем проще описание - тем лучше.
Рекомендуемые настройки: 512x768 20 steps, Euler, normal, guidance 3.5

Промпт: Black text "PYCCkùü" on grey background.


Лора: https://civitai.com/models/1056401
Ворклфоу: https://github.com/Mozer/comfy_stuff/blob/main/workflows/flux_rus_lora_50k.json


Тренировал в oneTrainer, сперва в разрешении 512 на мелком датасете, затем на большом, затем на огромном в 768p. Lora rank 16/1, Adafactor LR 0.0003. Суммарно 50000 шагов, 6000+ картинок.
Если кто разбирается в Learning rate: возможно надо было другой LR указать или более большой lora rank?

Скрипт для создания датасета картинок с 5000 популярными русскими словами:
https://github.com/Mozer/comfy_stuff/tree/main/training_rus
Вдруг кто-то захочет продолжить идею.

За идею сделать лору спасибо Sir Lanc.
За первый датасет спасибо @DmitryLS7.

Также недавно натренировал лору для Flux Fill Outpaint (не Dev) для создания картинок "Clothes on/off", 18+: https://civitai.com/models/1040628/clothes-onoff-or-flux-fill
Вдруг кто не видел =)