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
Forwarded from Борис опять
Админ трогал траву как не в себя, но наконец добрался рассказать вам про самую поразительную работу за 2024.

Я считаю, что про неё недостаточно говорят, а про решателей шокльной математики (o1/o3) и агентов слишком много. Ваша любимая 400b VLM плохо рисует bounding boxes, а эта 770m шутка делает их отлично хоть на CPU. При этом VLM обучалась на немыслимом количестве данных, а у этой штуки было меньше примеров, чем у CLIP. Да что далеко ходить: у меня друг делает стартап по CV, мы с ним обсуждали эту модель, он её попробовал и перестал обучать свои YOLO детекторы: потому что эта штука просто работает. Причем несмотря на необходимость обнаруживать строительные машины на фотографиях с плохих камер в родной атмосфере слякоти и грязи.

#обзор_статьи
# Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks
Скачивайте и играйтесь на HF.

Что если я скажу, что есть модель, которая умеет хорошо делать Zero-Shot детекцию, сегментацию, captioning и OCR? Что при этом её можно промптить, например требуя найти на картинке всех собак или сделать сегментацию объекта внутри ббокса? Вы наверное подумаете, что это новая огромная VLM. Но нет, эта модель размером всего 770M, то есть как большой ViT. Можно запускать хоть на CPU. Более того, её можно дообучать, в том числе легко сделать из неё supervised детектор прикрутив ей свою любимую голову, скажем от DETR.

В Computer Vision у всех комплексы по поводу foundational models. Мы завидуем ребятам из NLP. Стало модно выпускать большие модели и говорить: "теперь у нас тоже фаундейшнл!" Однако что такого foundational, скажем, в Segment Anything? Это просто сегментатор обученный на большом количестве качественной синтетики. В моем понимании foundational это когда ты в свободной форме даешь модели любую задачу и она её решает, как GPT-4o, а не когда тебе нужно определенным образом зампромптить модель, чтобы получить решение задачи сегментации.

Florence-2 это первая модель в CV которую я действительно готов назвать foundational. С одной стороны из-за её широкой полезности, так как она позволяет решать все популярные задачи в CV. Но так же из-за того, каким образом она сделала. Минимум костылей, как вы сейчас увидите.

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

Чего мы хотим от универсальной CV модели?
1. Image-level understanding: понимание высокоуровневой семантики. Например, на картинке кошка или собака? Можно так же сказать, что это способность связать изображение и текстовое описание. Эту задачу отлично решает CLIP.
2. Region/pixel-level recognition: обнаружение объектов на изображениях и понимание их расположения. С этим отлично справляются supervised классификаторы, детекторы и сегментаторы.
3. Fine-grained visual-semantic alignment: связь между областями изображения, в том числе совсем маленькими, и текстом. Обнаружение частей изображений которые относятся к фразам, объектам, атрибутам и отношениям. Это способность обнаружить и отличить "нос собаки", "нос собаки слева", "нос рыжей собаки", "коричневый нос собаки" и так далее.

Когда желания определены дело за малым: выбрать данные, функцию ошибки и архитектуру. Через эти компоненты мы по факту формируем оптимизационную задачу.

Авторы решили, что для получения трех компонент понимания изображений нужно много разных аннотаций, которые можно распределить по двум осям:
1. Spatial hierarchy: аннотации должны включать разные масштабы изображений, чтобы модели требовалось понимание и на уровне изображения, и на уровне пикселей.
2. Semantic granularity: в текстах (описаниях, промптах, лейблах) должны встречаться разные уровни абстракции, требующие от модели как понимания общих концептов, так и небольших деталей и нюансов.
3👍37🔥192
Forwarded from Борис опять
В итоге они собирали такие типы обучающих примеров:
1. Captioning трех видов: brief, detailed, more detailed. Задачи связанные с описанием изображения.
2. Region-text: phrase, brief. Это, например, детекция: найди всех кошек. Phrase будет при этом вариацией когда в качестве промпта подается сложная фраза, а brief когда, условно, "кошка." Сюда относится и обратная задача: опиши объект в данном регионе, коротко или объемно. Это и сегментация, и OCR, и так далее.
3. Text-Phrase-Region: brief, detailed, more detailed. Это в основном про grounding: такая задача, где модели требуется выделить часть из длинного текста и сопоставить эту часть с чем-то на изображении. Например, это может быть параграф текста, в котором модели нужно выделить все сущности и выделить их на изображении.

По части данных CLIP когда-то изменил парадигму в CV: 400 миллионов собранных из интернета пар изображение-подпись оказались гораздо лучше чем 328к качественной разметки MS COCO. Масштаб победил: лучше куча мусора, но зато большая!

Florence-2 кладет всех на лопатки используя всего 126m изображений. Что меньше чем у CLIP (400m), Flamingo (185m) и даже обычного ViT (300m). Но есть важная деталь: в датасете Florence-2 на 128m изображений приходится 5 миллиардов аннотаций. Авторы называют эту парадигму multi-task learning. Вместо того, чтобы собирать огромное количество примеров (задача,изобрадеине), давайте заставим модель решать много разных задач для каждого изображения. Одно и то же изображение получает много лейблов: короткое описание, длинное описание, bbox для сущностей, сегментационные маски, и так далее. Если подумать, это разумно: я ведь не хочу модель, которая для каких-то изображений умеет делать подписи, а для других умеет делать детекцию. Я хочу модель, которая сможет сделать с любым изображением всё, что мне нужно.

Таким образом эффективное количество полезной разметки в этом датасете очень большое. Переобучения под изображения не наступает несмотря на то, что модель видит их много раз. Ведь задачи разные, а решать разные задачи с помощью запоминания сложнее, чем действительно выучить некий алгоритм "понимания" изображений.

В парадигме multi-task learning так же удобно собирать разметку. Как и во многих современных работах, авторы сделали data engine итеративно улучшающий разметку. Процесс простой: берем изображения, делаем для них разметку с помощью специализированных моделей. Возьмем наш любимый OCR, Segment Anything для сегментации, OWL ViT 2 для детекции, и так далее. Таким образом мы получаем шумную синтетику. Далее мы фильтруем её как можно лучше. Обучаем на этой версии датасета Florence-2. С помощью этой версии модели и специалистов генерируем шумную разметку снова, снова фильтруем, обучаем модель и так далее пока не надоест. Всё это возможно благодаря тому, что набор изображений небольшой и фиксированный.
👍17🔥145
Forwarded from Борис опять
Когда данные готовы остается придумать как обучать модель. Нужно, чтобы модель могла и читать текст, и писать текст, и квадратики с полигонами рисовать. В 2017 Vasvani et. al подарил нам универсальный способ представить и обработать что угодно:
1. Сделаем из входа последовательность токенов.
2. Засунем в трансформер.

Изображение превращается в эмбеддинги патчей по методологии как в Visual Transformer. Текст превращается в эмбеддинги как в любой языковой модели. Здесь всё стандартно. Из необычных инноваций: давайте сделаем специальные токены для координат. Авторы покрыли изображение сеткой и для каждой точки на сетке ввели специальный токен. Например, есть токен для точки (0, 0). Это как бы служебное слово, точно так же как <pad>, <unk> и прочие. Вы можете подавать его на вход модели, можете получать на выход. Готово, ваша модель умеет оперировать координатами в явном виде, а значит может читать и создавать ббоксы и полигоны. Токенизация это одна из главных причин почему LLM на данный момент не умеют делать детекцию: у них нет нормальной репрезентации для локаций на изображении. Авторы решили вопрос максимально просто и элегантно. Теперь любой вход можно представить как последовательность и засунуть в трансформер.

Ладно, мы можем засунуть это в трансформер. Но как же лейблы? Что на выходе? Нам нужно как-то обучать модель делать классификацию, детекцию и сегментацию. Но функции ошибок для каждой из этих задач совершенно разные.

Вот это самая интересная часть статьи. Авторы просто выбрасывают всё, что мы придумали в CV, и заменяют одной функцией ошибки: cross-entropy loss. Они фиксируют, что вход должен быть json и выход должен быть json. Так что модель становится авторегрессионным генератором текста, точно так же как GPT, и просто предсказывает следующий токен. Следующий токен может быть в том числе одним из токенов зарезервированных под координаты. То есть эти ребята взяли и заменили весь наш computer vision на NLP. Одна функция ошибки, чтобы править всеми, и по наши костыли наконец-то пришел bitter lesson.

То есть в плане архитектуры Florence-2 это на самом деле VLM.
🔥30👍173❤‍🔥2
Forwarded from Борис опять
В итоге мы имеем универсальный швейцарский нож который работает действительно хорошо.

Можно детектить свою кошку, делать подписи и таким образом получать промпты для генерации картинки которая вам понравилась (пример для FLUX), поиск, эмбеддинги, использовать как часть inpainting пайплайна (выделить объект, перерисовать своей любимой диффузионкой), даже просто классифицировать, удалять с изображений фон, делать OCR (кстати лучше, чем тессеракт и многие OCR API). Да ещё и простое дообучение, народ уже штампует свои LoRA.

Это статья не про то, как авторы изобрели вундервафлю. Наоборот, они смогли упростить весь computer vision до одной функции ошибки, что меня очень впечатлило. Они получили крутую модель не потому, что закидали её данными, параметрами и сожжеными деньгами. Просто хорошо подумали, что хотят получить и как этого можно добиться.

Что делает Florence-2 одной из немногих статей за год, особенно в CV, в которой сделали что-то нетипичное относительно текущей парадмигы. Да ещё и получили полезную для нас, работяг, модель.

Скачивайте и играйтесь на HF.
👍5615🔥13👏1
"Bloomberg has reported that Microsoft is investigating whether data belonging to OpenAI - which it is a major investor in - has been used in an unauthorised way."

https://www.bbc.co.uk/news/articles/c9vm1m8wpr9o.amp

Это даже немного смешно. Чуваки, которые спарсили весь интернет, не заплатив никому из авторов всех этих данных (кроме тех, кто их потом засудил), теперь говорят, что данные спёрли у них.
😁135👍162
DeepSeek продолжает знатно всех будоражить. Спасибо китайцам, что всех расшевелили!

Дарио Амодеи написал эссе про экспортный контроль:
https://darioamodei.com/on-deepseek-and-export-controls

Но мне там не про экспортный контроль понравилось, а вот это вот:

"In 2020, my team published a paper suggesting that the shift in the curve due to algorithmic progress is ~1.68x/year. That has probably sped up significantly since; it also doesn't take efficiency and hardware into account. I'd guess the number today is maybe ~4x/year."

Оценка алгоритмического прогресса в 4x за год — это очень интересно.

И в целом раздел про динамику ИИ разработки любопытен. Там упоминаются три разные динамики:

1. Scaling laws. Вбухиваешь больше compute, получаешь лучше качество (при прочих равных).
2. Shifting the curve. Те самые алгоритмические улучшения, которые 4x за год.
3. Shifting the paradigm. Изменяем то, что скейлится. В 2020-2023 были предобученные модели, в 2024 появился RL и цепочки рассуждений, теперь скейлят их.

Прямо сейчас в 3-ю динамику вкладывают мало, единицы миллионов, это уже даёт хороший результат, но все работают над тем, чтобы отскейлить этот этап до сотен миллионов и миллиардов.

Ещё из интересных цифр есть стоимость обучения Claude 3.5 Sonnet: "Claude 3.5 Sonnet is a mid-sized model that cost a few $10M's to train (I won't give an exact number)."

А типа с трендом про 4x/год они как раз и ожидали модель уровня 3.5 Sonnet/GPT-4o и дешевле в 3-4 раза примерно сейчас. Ну, предсказывать прошлое легко.

"All of this is to say that DeepSeek-V3 is not a unique breakthrough or something that fundamentally changes the economics of LLM’s; it’s an expected point on an ongoing cost reduction curve. What’s different this time is that the company that was first to demonstrate the expected cost reductions was Chinese."

Основной месседж про DeepSeek в духе, что V3 был реально инновацией, в основном инженерной, "и мы за ними следили!", а R1 типо вообще не инновация. Просто реплицировали o1. А про то, что они сделали это в опенсорсе и без какого-либо опубликованного OpenAI рецепта, молчат. По словам Амодеи, переход от V3 к R1 был простым и дешёвым (важна хорошая базовая модель, здесь это V3), и теперь можно ожидать хорошие модели с ризонингом от разных компаний.

В целом, сквозит в последних сообщениях OpenAI, Антропика и некоторых других относительно DeepSeek какое-то лёгкое обесценивание и попытка оправдаться, что мы не хуже. За Гуглом, к слову, такого пока не заметил.

Основная часть про экспортный контроль уже не очень интересная. Она о том, что DeepSeek глобально ничего не изменил, все и так туда идут, находки DeepSeek будут инкорпорированы в обучение несколько-миллиардо-долларовых моделей, которые получатся получше, чем ожидалось изначально, но всё равно потребуют миллионы GPU. AI умнее большинства людей ожидается в 2026-27 годах. И там вопрос, сумеет ли Китай собрать миллионы чипов — от этого зависит, будет мир униполярным или биполярным. И чтобы хорошие победили плохих, нужны экспортные ограничения.

Такие дела. Mixed feelings от всего эссе.
👍71🤔2116🤨8🔥5😁4👎1
Сегодня немного в другую сторону.

Y combinator выкатил свой список перспективных направлений, который они называют Request for Startups. Причём выкатить они его решили всего через три месяца после предыдущего. Обычно они делают это реже, но слишком много изменений произошло за последние месяцы, особенно в AI.

Интересно почитать и подумать.

Темы на Spring 2025 такие:
Introduction
A Secure AI App Store
Datacenters
Compliance and Audit
DocuSign 2.0
Browser & Computer Automation
AI Personal Staff for Everyone
Devtools for AI Agents
The Future of Software Engineering
AI Commercial Open Source Software (AICOSS)
AI Coding Agents for Hardware-Optimized Code
B2A: Software Where the Customers Will All Be Agents
Vertical AI Agents
Startup Founders with Systems Programming Expertise
Inference AI Infrastructure in the World of Test-Time Compute

Introduction

From the AI breakthroughs of the last few months, a wave of new startup opportunities have been unlocked.  We used to publish requests for startups no more than once a year, but we decided to publish this list just 3 months after our last one to help point founders to the idea spaces that have just opened up.

You've probably followed the recent advances which underlie these ideas. With Operator and Computer Use, AI systems can now use computers. Reasoning models like OpenAI's O1/O3 and Deepseek R1 have made it possible to build AI systems that match and even surpass humans. They also require new compute infrastructure. And DeepSeek R1 has shown the world that there is huge untapped potential in low-level optimizations.

These are ideas we think are now worth working on.

https://www.ycombinator.com/rfs
👍263🤡3
Thomas Wolf, кофаундер HuggingFace, написал пост про пару вчерашних LLM анонсов. Нет смысла пересказывать это своими словами, оставлю as is:

Taking a moment to detail yesterday's two new open-source AI model releases that I briefly mentioned in my long post. They are again pushing the state of the art!

Small 3 by Mistral (Paris, France) is your top-level mid-sized model for fast-inference under Apache 2 licence. A 24B model made to run fast while keeping good performances (about GPT-4 level of performances in a model 70x smaller, generally about the perf/latency of today's GPT-4o-mini):
Check it out at https://huggingface.co/mistralai/Mistral-Small-24B-Instruct-2501
And read the blog post at https://mistral.ai/news/mistral-small-3/

Tülu 3 by AllenAI (Seattle, US) is your new very large open-source frontier model. With 405B parameters you won't run it everywhere for sure but according to the benchmarks of the AllenAI team it seems to outperform the base model being DeepSeek that everyone is talking about.
Check it out at https://huggingface.co/allenai/Llama-3.1-Tulu-3-405B
And read the blog post at https://allenai.org/blog/tulu-3-405B

By the way, both are the third versions released by these teams, and with the current base model from DeepSeek also being V3, seems like the whole open-source AI community is well aligned on versioning for some reason.

Now the remaining part for both Small 3 and Tülu 3 will be to fine-tune these models following the DeepSeek recipe and turn them into the reasoning models we're starting to love.

If you want to follow that endeavor, you can, for instance, head to our open-r1 GitHub repo, where we're reproducing the DeepSeek R1 reasoning recipe and extending it to many open-source models and domains.

Exciting times to be alive!

https://www.linkedin.com/posts/thom-wolf_taking-a-moment-to-detail-yesterdays-two-activity-7291061177445470208-XDIS

Ждём открытых reasoning моделей вменяемого размера!
52👍23
Пятничного прекрасного вам в ленту.

История ИИ от Демокрита Крита до наших дней.

https://www.aiprm.com/timeline-of-ai-technology/

И до Шмидхубера была жизнь!
🔥28😁75
И чтобы два раза не вставать:

Сколько времени прошло от сайнс-фикшна до воплощения, на примере 50 технологий.

https://www.aiprm.com/science-fiction-technologies/
🔥279
Спасибо DeepSeek, иначе бы ещё ждали :)

https://openai.com/index/openai-o3-mini/
😁140💯28👍13🙏5🤡41
Я тут упоминал, что в рамках курса по AI Alignment решил копнуть немного в сторону mech interp (https://news.1rj.ru/str/gonzo_ML/3200) и сделать нанорисёч на базе Gemma 2B. Вычленить какую-то цепь (circuit) времени не было, но немного успел поиграться с выкидыванием слоёв и обнаружил неожиданный для себя результат.

Если вкратце, то наверное пара вещей:

1. Все 26 слоёв декодера чем-то занимаются, от первого до последнего, эмбеддинги даже визуально меняются. Эту картинку приводил в прошлый раз. При этом опять же на глаз видно несколько групп слоёв с похожими паттернами активаций. Что именно они там делают, пока хз.

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

Может, конечно, это просто артефакт конкретного эксперимента, датасета и модели, но может и нет.

Написал про это здесь:
https://gonzoml.substack.com/p/not-all-layers-are-equal

Colab ноутбук для тех, кто захочет продолжить изыскания и покопаться сам, здесь:
https://colab.research.google.com/drive/1Dita8PWjxc_nPjOKCGKyuv7tVamZIc-h?usp=sharing

Картинка с "важностью" слоёв ниже.
👍405👀2
Это уже было, но чтоб не искать.
👍14
Уже даже перестало быть смешно.

https://x.com/SchmidhuberAI/status/1885357355938046382?t=s0IbbVihpRgYYY5tVzb8WA&s=19
🥴58😁30👍2😱2🤣2
Про ограниченность ресурсов и инновации.

Это соавтор QLoRALLM.int8()k-bit inference scaling lawsPetalsSWARM если что.
👍82❤‍🔥18🔥5🤔2
Про магию Deepseek, RL и GRPO

Когда-то, давным давно, никто не занимался глупостями, и не использовал RL в обучении языковых моделей. Был unsupervised претрейнинг, был SFT для обучения моделей следования инструкциям, были какие-то энкодер специфичные лоссы, которые никак не были связаны с генерацией текста, ну и, в общем то, всё.

Потом наступили времена GPT-3.5 и соответствующей статьи опенаи. Авторы добавили третий шаг после претрейна и сфт — RLHF в виде PPO. Работало это так: африканцы, работающие за копейки (по меркам западного мира, по меркам их родных стран получали они вполне неплохо), размечали диалоговые данные на предмет соответствия заданным в ТЗ требованиям, на этих разметках обучался текстовый классификатор, который использовался в лоссе при обучении. Чтобы модель не ломалась и не начинала генерить, например, пустые предсказания (потому что если промолчать, то сойдёшь за умного), дополнительно накладывался KLD-штраф на слишком большой отход от генераций референс моделью. В итоге, постепенно, модель начинала генерить текст, который лучше рейтился классификатором -- и при условии соответствия классификатора human reference'ам, модель переставала быть токсичной, рассказывать про изготовление бомб и крэка и так далее.

Одним из больших плюсов такого подхода было то, что при наличии ревард-модели (классификатора), обучать модель генерациям можно на неразмеченных данных. По сути, ревард модель на лету их размечает, а нам надо только следить за падающим лоссом. С другой стороны, PPO — это штука сложная, нестабильная и требовательная к качеству ревард модели. Если её слишком сложно обмануть, то начнётся reward hacking и модель испортится. Плюс мб это skill issue, но сколько бы я не пробовал применять PPO, у меня всегда взрывался KLD и итоговая модель ломалась. Судя по моим консультациям с коллегами, у них было то же самое — и единственным способом с этим бороться было делать чекпоинты почаще и откатываться на последний рабочий чекпоинт в случае взрыва.

Было ясно, что надо как-то всё упростить, и следующим шагом стал DPO. В нём полностью избавились от отдельной ревард модели, используя саму обучаемую модель для оценки генераций. Если на пальцах — мы берём датасет, где ответы на промпты размечены на chosen и rejected, потом считаем логпробы обучаемой и референсной модели при генерации обоих вариантов ответа, нормируем ответы референсной и обучаемой модели друг на друга и потом оптимизируем сигмоиду от взвешенной разности между этими логпробами.

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

А потом, в феврале 2024 года — почти год назад — появилась статья про модель DeepSeek Math, где авторы предложили тот самый GRPO, который используется в так хайпующем сейчас R1. Там они тоже решили отталкиваться от PPO как от базового лосса, но решили пойти чуть в другую сторону. Вместо per-prompt оптимизации, в GRPO сначала семплится батч из промптов, потом для каждого ответа считается ревард, потом из каждого реварда вычитается среднее по всем ревардам в батче и нормируется на std, так получаем advantage. Дальше мы считаем частное между предсказаниями новой и старой моделей и вычитаем KLD, чтобы модель не сильно уходила от изначальных ответов.

В итоге, DeepSeek Math с небольшим сфт колдстартом и GRPO била гораздо большие по размеру модели на основных бенчмарках по матеше. Потом тот же подход повторили Qwen Team — в Qwen 2 Math они тоже использовали GRPO для обучения, а в Qwen-2.5-Math доразметили датасет через Qwen-2-Math и получили ещё более качественную модель.
👍4912🤔1
Финальный шаг был сделан в нашумевшем техрепорте о r1. Во-первых, в одном из экспериментов они вообще отказались от сфт колдстарта и сразу начинали учить модель через GRPO — и всё завелось. Во-вторых, если я правильно понял, они вообще не использовали ревард модель на промптах про математику — потому что её использование приводило к reward hacking. Вместо этого они проверяли формат вывода регэкспом и проверяли, правильный ли ответ был сгенерирован, то есть использовали ревард не нейронный, а rule based. И ничего, даже с такими простыми эвристиками модель сама обучалась CoT, метрики росли и итоговая модель, R1-Zero, показывала очень хорошие скоры на бенчмарках. В R1 сфт всё таки добавили, но это сделали исключительно чтобы повысить читаемость цепочек размышлений — скоры на бенчах выросли не так сильно и, по сути, это было не обязательно.

Не всё так однозначно хорошо, конечно, потому что такой rl-only подход, по всей видимости, не работает на моделях меньшего размера. Авторы попробовали обучить Qwen-32B только через RL, всё заработало, модель стала по качеству примерно как QwQ — но простой сфт на цепочках от R1 дал гораздо более высокий результат.

Рискну предположить, но возможно, что что-то подобное было сделано и в o1 — и это вполне укладывается в описание процесса файнтюна о1-mini, про который рассказывали во время рождественских видео опенаи. Если это так, то признаю, в том самом сентябрьском посте с критикой OpenAI я был неправ :)

Это что, получается, рл, наконец-то заработал?

Ссылки:

Deepseek Math: https://arxiv.org/abs/2402.03300
Qwen 2 Math: https://qwen2.org/math/
Qwen 2.5 Math: https://qwenlm.github.io/blog/qwen2.5-math/
Deepseek R1: https://arxiv.org/abs/2501.12948
32👍30