Anthropic добавила в Claude функцию Extended Thinking – режим, в котором модель может подробно размышлять перед ответом. Команда Hugging Face решила проверить, как это работает на практике, и попросила Claude написать CUDA-ядра, а заодно – научить открытые модели делать то же самое.
Что такое Extended Thinking и зачем оно нужно
Extended Thinking – это режим работы, при котором модель не сразу выдаёт ответ, а сначала «думает вслух». Она показывает промежуточные рассуждения, проверяет гипотезы, возвращается к началу, если что-то пошло не так. Проще говоря, это похоже на то, как человек решает сложную задачу: не с первой попытки, а через несколько подходов.
Такой подход особенно полезен для задач, где нужна точность и где ошибка дорого обходится. Например, при написании низкоуровневого кода, который работает с GPU. Там каждая деталь имеет значение, и неправильная индексация может сломать всё.
CUDA-ядра: когда Python уже не справляется
CUDA – это технология Nvidia для программирования GPU. Если обычный код на Python выполняется на процессоре, то CUDA-ядра работают на видеокарте, где можно распараллелить вычисления на тысячи потоков. Это критично для обучения и запуска нейросетей.
Писать CUDA-ядра сложно. Нужно управлять памятью вручную, следить за синхронизацией потоков, понимать архитектуру GPU. Ошибки здесь не всегда очевидны: код может скомпилироваться, но работать неправильно или медленно.
Команда Hugging Face попросила Claude с Extended Thinking написать несколько CUDA-ядер: для умножения матриц, свёртки и Softmax. Результат оказался рабочим. Модель не только генерировала код, но и объясняла свои решения, указывала на возможные узкие места, предлагала оптимизации.
Как Claude учит другие модели
Дальше исследователи пошли ещё дальше. Они решили проверить, может ли Claude передать свои знания открытым моделям, которые изначально не умеют писать CUDA-код.
Идея простая: пусть Claude с Extended Thinking сгенерирует примеры задач и решений, а потом на этих данных обучается другая модель. Такой подход называют дистилляцией знаний (англ. distillation). Большая модель выступает учителем, маленькая – учеником.
Для эксперимента взяли Qwen 2.5 Coder – открытую модель, заточенную под написание кода. Её дообучили на синтетических данных, сгенерированных Claude. После этого Qwen стала лучше справляться с задачами на CUDA, хотя изначально таких навыков у неё не было.
Почему это важно
Обычно для обучения моделей нужны размеченные данные. Их собирают вручную, нанимают специалистов, тратят время и деньги. Если модель может сама генерировать обучающие примеры и при этом они достаточно качественные, процесс сильно упрощается.
Особенно это полезно для узких областей, где данных мало. CUDA-программирование – как раз такая область. Открытых датасетов почти нет, а специалистов, которые могут писать эффективный код для GPU, немного.
Extended Thinking помогает улучшить качество синтетических данных. Модель не просто выдаёт ответ, а показывает, как она к нему пришла. Это делает обучающие примеры более разнообразными и содержательными.
Какие вопросы остаются
Подход работает, но есть нюансы. Во-первых, Extended Thinking – это медленно и дорого. Модель тратит больше токенов на рассуждения, а значит, растёт стоимость запросов.
Во-вторых, качество синтетических данных всё равно зависит от учителя. Если Claude ошибётся или даст неоптимальное решение, ошибка перейдёт в обучающую выборку, а затем – в модель-ученика.
Наконец, непонятно, насколько хорошо этот метод масштабируется. Работает ли он для других языков программирования, для других типов задач? Пока примеров немного, и все они – из одной области.
Тем не менее, направление выглядит перспективным. Если модель может не только решать задачи, но и учить этому других, это открывает новые возможности для создания специализированных инструментов без больших затрат на сбор данных.