Telegram Group Search
Еще кайфец от HF 🤗 - smol course по всем видам тюнингов LLMок (все на скрине видно)

Построен вокруг семейства моделек HF SmolLM2 в размерах 135M, 360M, and 1.7B parameters как раз предназначенные для изучения трейнов и разных манипуляций у себя на дому

https://github.com/huggingface/smol-course

https://github.com/huggingface/smollm

Изучаем
Ребятки, вот тут очень крутой курс по DL. Единственное только что на английском
А тут находка для всех изучающих Deep Learning.
Набор ноутбуков из Университета Амстердама по курсу DL в рамках магистратуры по AI.
Всё удобно и готовое к запуску, понравилось.

Введение, трансформеры (без них никуда), Vision трансформеры, атаки на нейронки, multi GPU программирование, meta learning и куча других нужных тем.
Всё на PyTorch + JAX.
В каждом ноутбуке объяснение с реализациями + курс лекций на ютубе.
Но на английском. Но всё равно сохраняем и изучаем.

UvA Deep Learning Tutorials:

https://uvadlc-notebooks.readthedocs.io/en/latest/index.html

https://github.com/phlippe/uvadlc_notebooks/tree/master

Курс на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Вообще в работе про которую писал выше опираются на (и во многом воспроизводят) другую про обучение ризонингу.

Imitate, Explore, and Self-Improve: A Reproduction Report on Slow-thinking Reasoning Systems
https://arxiv.org/abs/2412.09413

https://github.com/RUCAIBox/Slow_Thinking_with_LLMs

(эта работа и некоторые другие входят в проект STILL: Slow Thinking with LLMs, данная работа обозначена как STILL-2)

Конкретно в этой работе авторы исследовали ту же QwQ и DeepSeek-R1-Lite-Preview (в DeepSeek chat надо включить Deep Think), задавали им вопросы, сравнивали ответы и собирали данные, на которых затем потюнили свою Qwen2.5-32B-Instruct.

Вообще процесс обучения состоит из трех фаз (по ним статья и называется, круто да?):

1. Imitate (Имитация): Модель обучается генерировать цепочки размышлений и решение в одном ответе. Используются данные, полученные из существующих систем или сгенерированные вручную.
Модель обучается следовать формату:
<|begin_of_thought|>
{многошаговый процесс размышления}
<|end_of_thought|>
<|begin_of_solution|>
{финальное решение с подробным объяснением шагов}
<|end_of_solution|>

В работе описан полный промт темплейт, смотрим там если надо

2. Explore (Исследование):
Моделька генерирует несколько траекторий решений для задач.
Ответы сравниваются с эталонными решениями, чтобы выбрать лучшие траектории. Чем сложнее задача, тем больше шагов размышлений получается (естественно).

3. Self-Improve (Самоулучшение):
После генерации корректных траекторий они добавляются в обучающий набор (и на следующей итерации уже на них обучаемся)

Исследовали обучение с разными видами тюнинга:

* SFT (Supervised Fine-Tuning): Обучение модели на отобранных траекториях.
Мы много раз повторяем процесс Imitate -> Explore -> Self-Improvement (в качестве исходной модельки взять Qwen2.5-32B-Instruct и в качестве изночальных данных - то что насобирали и подготовили от QwQ и от DeepSeek-r1, и итеративно улучшаем модельку и генерим новые данные в датасет и улучшаем)

* DPO (Direct Preference Optimization): тут нужны пары (положительный пример, отрицательный пример): в качестве положительного выбирали корректное решение с самым высоким perplexity, а в качестве отрицательного - некорректное решение с самым низким perplexity для какой либо задачи. (мы же для одной задачи генерируем несколько решений)

Можно обучать модель на "мыслительной" части (thought) или на всей траектории (thought + solution). В статье отмечено, что обучение только на размышлениях может быть эффективнее. (третий скрин, табличка 4 в статье)

В разных конфигурация использовали 3.9к и 1.1к предподготовленных данных из QwQ + DeepSeek-r1. ну и разное количество наэксплоренных семплов и разные конфиги SFT/SFT+DPO/DPO (смотрим на 2,3 скринах)

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

Кстати, крутые статьи в том числе и эту я сначала отбираю в https://www.group-telegram.com/researchim а потом тут разбираю.
промт темплейтик
Прикручивая ризонинг к RAGу (retrieval-augmented generation - генерации по внешним источникам информации/ответы по документам)

Попробовали просто раг поверх QwQ (на ней весь ризонинговый ресерч стоит) + еще сделали так назвываемый o1-search (тоже работает поверх QwQ), который состоит из двух модулей:

"Агентный RAG-механизм":
* Модель сама решает, когда искать внешние данные.
* Запросы для поиска формируются автоматически в процессе рассуждения
* Многократное использование поиска в одной задаче.

Моделька рассуждает, когда она считает что ей нехватает знаний, то сама вызывает поиск, получает документы, дальше рассуждает уже с новой информацией.

Модуль Reason-in-Documents (ризонит по релевантным документам):

*анализирует полученные документы (по текущему запросу, полученным релевантным документам и по предыдущей цепочке рассуждений)
*выделяет только полезную информацию

Как это все в целом работает на инференсе:

На вход получаем вопросы пользователя + инструкция по задаче;
*генерим по каждому (вопросу + инструкция) цепочку рассуждений которую нужно будет завершить.
*Начинаем генерить цепочку. Модель может захотеть поискать инфу - и сгенерит запрос в <|begin_search_query|> запрос <|end_search_query|> - идем ищем в документе, получаем релевантные чанки;
* (вопрос + инструкция) + найденные релевантные части документов + текущая цепочка рассуждений -> в Reason-in-Documents модуль, из которого нам уже возвращается хорошо подготовленная информация (формируется результат поиска) в <|begin_search_result|> результаты <|end_search_result|> тегах, вставляем это в текущую цепочку рассуждений;
* продолжаем рассуждать

И так пока все сформированные изначально цепочки не сгенерим.

Так понял, результы на скринах (RAgent и o1-search).

Search-o1: Agentic Search-Enhanced
Large Reasoning Models
https://arxiv.org/abs/2501.05366

https://github.com/sunnynexus/Search-o1

Ризонинговый дождь ☔️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Pavel Zloi
Пару часов назад завершилось долгожданное дообучение o1 модели на GigaChat 20B-A3B, выполнялось оно на одной RTX 4090 с 24Гб VRAM при помощи проекта impruver и конфигурации GigaChat/20B-A3B_lora_o1 на датасете Egor-AI/Russian_thinking_dataset.

Залил полученный LoRA-адаптер на HuggingFace: evilfreelancer/o1_gigachat-20b-a3b_lora

Он оказался на удивление толстеньким, аж цельных 639 мегабайт весит, вероятно это как-то связанно с особенностями MoE архитектуры модели.

На всё про всё потребовалось примерно 117 часов (почти 5 дней), на данный момент понятно, что если бы я выставил eval_steps не 100, а хотя бы 500 или даже 1000 цель бы удалось достигнуть гораздо быстрее, так как 1 eval прогон выполняется на моей 4090 примерно 46 минут, а за 10 с небольшим тысяч шагов тестов eval было всего 102 (то есть примерно 77 часов выполнялась валидация, тут я конечно переборщил, но зато красивый график получился).

Отчёт W&B тут: evilfreelancer/nlec8bt8

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

Для работы модели в режиме инференса необходимо внести правки в файл generate.py, там надо на этапе вызова токенизатора будет добавить return_token_type_ids=False, позже проверю не нарушит ли это работу остальных моделей, обученных через impruver, и если потребуется добавлю операцию ветвления специально для моделей семейства DeepSeek MoE (к коему относится GigaChat).

PS. Чекпоинты GGUF выложу на HF и ollama позже.

PPS. Картинку eval/train loss добавил первым сообщением под постом.
smolagents - новые агенты от HF

Будет заменой для transformers.agents (да, есть такие)
Давят на простоту в первую очередь и это правильно

Есть кодовый агент который пишет действия и вызовы тулов кодом (на картинке пример с кодовым агентом), а не просто jsonы с параметрами как обычно принято делать
можно импортить тулы из langchain
+ можно делать мультиагентные систему

Сейчас сделали 3 примера: text-2-SQL, RAG агента, мультиагент

Реп https://github.com/huggingface/smolagents

Пост https://huggingface.co/blog/smolagents

дока + туторы https://huggingface.co/docs/smolagents/index

Думаю, что как и многие smol проекты от хф - это в первую очередь чтобы взять, поковырять и поизучать. Пока что проекту месяц) Но мб со временем мощь получится
Есть вот такая эксплорилка архива.

https://www.alphaxiv.org/explore

Что-то типа https://huggingface.co/papers
Показывает тренды папир на архиве
К статьям можно оставлять комменты, ставить 👍 (если зарегаться)

Еще есть сообщества по темам, где статьи собираются по тематике
https://www.alphaxiv.org/communities

Короче прикольно, я точно буду пользоваться

PS А в телеге есть https://www.group-telegram.com/researchim
Интересная книжечка вышла вчера на архиве на 200 страниц по LLMам.
От BERTов до ревард моделей, DPO, алайнментов и тюнингу моделек думать step-by-step.
На английском. Читаем 🥳

Foundations of Large Language Models
https://arxiv.org/abs/2501.09223
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/01/20 01:51:01
Back to Top
HTML Embed Code: