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

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

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

Что делать с этой аналогией?
Если объем банки 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
Вдруг кто не видел =)
Топ вопросов на собеседовании по SQL- Часть 5

Чет затянул я однако с 5 частью, но вот и она.

Тут рассматриваются достаточно простые вопросы, поэтому не затягивал. Ну в общем и целом по SQL вышло 5 частей, теперь вы знаете большинство возможных вопросов собеседований. У вас обязательно всё получится.

До Нового года у меня в планах выпустить, коротенькое видео о том, как я из военного стал IT-специалистом и что именно сподвигло меня это сделать. И если я к концу года наберу 500 подписчиков то проведу стрим, где отвечу на ваши вопросы и расскажу, как я совмещал работу, учебу и семью, почему я решил завести блог и многое другое.

После Нового года я выпущу подобные циклы видео по вопросам связанные с внутрянкой баз данных и с архитектурой хранилищ данных. Так что не теряйтесь. Все будет четко и все пройдут собеседования!

😘 Ссылка на видео.
📺 Ссылка на видео.
😵 Презентация.

Не забывайте и про другие части🧑‍🎓:

😘 Часть 1. 📺 Часть 1.
😘 Часть 2. 📺 Часть 2.
😘 Часть 3. 📺 Часть 3.
😘 Часть 4. 📺 Часть 4.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Самый красивый блог чтобы разобраться с nD parallelism, a ещё внутри интерактивное демо!

И это первая доходчивая визуализация на моей памяти

main-horse.github.io/posts/visualizing-6d/
This media is not supported in your browser
VIEW IN TELEGRAM
Новая гугловская veo2 первая модель прошедшая тест на гимнастику. Выглядит очень сильно, сильно лучше всего открытого и закрытого.

Работает с американского VPN.