Еще кайфец от HF 🤗 - smol course по всем видам тюнингов LLMок (все на скрине видно)
Построен вокруг семейства моделек HF SmolLM2 в размерах 135M, 360M, and 1.7B parameters как раз предназначенные для изучения трейнов и разных манипуляций у себя на дому
https://github.com/huggingface/smol-course
https://github.com/huggingface/smollm
Изучаем
Построен вокруг семейства моделек HF SmolLM2 в размерах 135M, 360M, and 1.7B parameters как раз предназначенные для изучения трейнов и разных манипуляций у себя на дому
https://github.com/huggingface/smol-course
https://github.com/huggingface/smollm
Изучаем
Ребятки, вот тут очень крутой курс по DL. Единственное только что на английском
Forwarded from Агенты ИИ | AGI_and_RL
А тут находка для всех изучающих 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
Набор ноутбуков из Университета Амстердама по курсу 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
GitHub
GitHub - phlippe/uvadlc_notebooks: Repository of Jupyter notebook tutorials for teaching the Deep Learning Course at the University…
Repository of Jupyter notebook tutorials for teaching the Deep Learning Course at the University of Amsterdam (MSc AI), Fall 2023 - phlippe/uvadlc_notebooks
Вообще в работе про которую писал выше опираются на (и во многом воспроизводят) другую про обучение ризонингу.
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 (Имитация): Модель обучается генерировать цепочки размышлений и решение в одном ответе. Используются данные, полученные из существующих систем или сгенерированные вручную.
Модель обучается следовать формату:
В работе описан полный промт темплейт, смотрим там если надо
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 а потом тут разбираю.
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
Ризонинговый дождь☔️
Попробовали просто раг поверх 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
Пару часов назад завершилось долгожданное дообучение
Залил полученный 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, там надо на этапе вызова токенизатора будет добавить
PS. Чекпоинты GGUF выложу на HF и ollama позже.
PPS. Картинку eval/train loss добавил первым сообщением под постом.
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 добавил первым сообщением под постом.
huggingface.co
evilfreelancer/o1_gigachat-20b-a3b_lora · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
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 проекты от хф - это в первую очередь чтобы взять, поковырять и поизучать. Пока что проекту месяц) Но мб со временем мощь получится
Будет заменой для 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
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
От 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