Максимальная сейчас это maverick 400B, behemoth 2T они не выложили.
Регистрируетесь в openrouter.ai, работает и на временную почту, ищете там free модели через поиск написав "free" и используете через api (например, через клиент https://msty.app/ или любой другой поддерживающий openai completion api), либо у них есть чат на сайте.
Зачем вы кидаете ссылку на статью, которую вы, видимо, сами не читали, и в которой написано ровно то, что я вкратце написал? Там даже картинками все проиллюстрировано. Единственное, чего там нет, это разницы между pp и tg, но это не так важно.
Микс экспертов (MoE) пришел намного раньше появления рассуждающих моделей. Первая MoE модель Mixtral-8x22B появилась еще год назад, когда даже техники CoT не было, не то, что рассуждающих моделей.
То, как вы описываете MoE не соответствует действительности. MoE работает точно так же как Dense, они по кругу гоняют выходной слой отправляя его в первый слой.
В MoE на каждом новом шагу выходной вектор подается на вход модели, и обученный маршрутизатор (Gating Mechanism) находит признаки в этом векторе, выдает веса вероятностей, которые соответствуют каждому эксперту, после этого выбирается Top-K экспертов, которые и будут активированы для этого шага цикла вычисления одного токена, и дальше снова по кругу как в Dense моделях.
Тут нет никаких разбивок вопроса внутри, никаких перепроверок и никаких внутренних диалогов. MoE это способ масштабировать модель, а не про внутренние диалоги экспертов. MoE позволяет выдавать качество 140B моделей, работая при этом со скоростью моделей 17B, но повышая требования к памяти до 400B модели. Когда у вас нет проблем с железом, как не распараллеливай, запуская монолитную 400B вы не получите быстрый скоростей, а скорость это важно для всяких chatGPT сервисов.
И сам термин "рассуждающие модели" многими понимается не правильно. Это не способ модели размышлять, из-за чего и появляются различные неправильные выводы о том, что "модель не все этапы размышления показывает", это способ масштабировать модель снизив требования к этапу обучения, что равносильно повысить качество модели оставив обучение на том же уровне.
Ошибка модели зависит от 3 факторов:
вычисляемая мощность обучения
размер датасета
количество параметров
Сейчас временно уперлись во все 3 фактора. Например, нельзя просто наращивать размер модели не увеличивая размер датасета (модель llama 3.3 70B примерно равна по качеству llama 3.1 405B). Или из-за нехватки данных для обучения нельзя просто увеличивать количество шагов/эпох обучения - будет переобучение. И так далее.
Зависимость очень прямая
Выходом стало масштабировать 4 фактор - увеличить мощность предсказания модели (test-time compute).
Смысл тут в том, что модель набрасывает несколько ответов, и видя эти ответы может оценить их качество своим стандартным механизмом self-attention, который одинаков для Dense (QwQ-32B) и для MoE (R1), тем самым отбросить ошибочные варианты.
Этот эффект пользователи уже давно могли наблюдать через механизм "А если подумать?". Когда первый раз модель отвечает не правильно, но если её попросить подумать над ответом, то второй или третий будут уже правильными.
И тут важен не сам фактор размышления в стиле мыслей, это просто красивая обертка, важен сам факт того, что модель получает черновые ответы и она через attention может оценить их качество, прежде чем выдать финальный ответ.
Диалоги длились по 5 минут, но не особо насыщенные. Полные стенограммы всех диалогов выложены тут: https://osf.io/jk7bw/files/osfstorage в файле tt_message_anonymized.csv
Есть нюанс, бот обычно не пишет "Привет", если с ним явно не здороваются. А люди, наоборот, привычны здороваться, даже если к ним врываются с непонятным бредом.
И вот человек уже провел 10 диалогов, все они прошли нормально, и тут слом шаблона, новый диалог, но человек вежливый, он сначала поздоровается.
Особенно если перефразировать задачу, нужно определить не ботов, а людей, и важно не всех в ботов записать, а определить точно людей. Фактор "это точно бот" будет плавать к "а может и не бот" в течении 5 минут диалога туда сюда, если это единственный маркер.
Отлично, два пройдены, на модели размером 8B, а в статье модель на 2 порядка больше.
Осталось 197. Результат вы пока не знаете. Сколько будет ложных результатов в условиях эксперимента? Легко чувствовать интуитивность, когда заранее знаешь ответ, но неподготовленные люди там отвечали не так, как ожидается в идеальных условиях.
А определить ботов по прежнему очень легко, если кто-то написал сам и еще и отвечает - то 100% бот.
Моей методикой различения было бы не задавать милые интеллигентные вопросы "Какой фильм вам нравится", а вбрасывать "непредсказуемый бред" разной степени абсурдности.
Смысл в том, что вы не знаете, это человек подыгрывает вашему абсурду или машина.
Это уже какая-то теория заговоров, где аргумент "модель мне сама сказала, что она не новая".
Deepseek в новостях писали, что чтобы включить новую V3, надо отжать кнопку DeepThink, а это возможно только в chat.deepseek.com. Дистиллятов V3 вообще не существует, как и не существует каких-то урезанных версий V3. Разница с platform в настройках системного промпта и температуры. По умолчанию в api температура 1.0, софт для кода сам будет, скорее всего, устанавливать её в 0.0, в chat не известно какая.
На chat.deepseek.com новая V3, она может написать стих с правильной рифмой:
Напиши стих с рифмой АБАБ. Проверь чтобы рифма была правильная. Продолжай подбирать рифму, пока она не будет верна.
С этим не справлялась старая V3 и не справляются дистилляты R1 (только оригинальная R1):
R1 Distill Llama 70B
В коде тоже достаточно отличий, в новой V3 код лучше оформлен, лучше выполняет задачу, результат выглядит лучше:
Ну и да, размер вырос 671 до 685 миллиардов параметров.
И нет, размер не изменился, предыдущая V3 тоже была 685B, и R1 тоже 685B. Число 685B - это вес основной модели 671B плюс вес модуля MTP 14B. В gguf версиях вы не видите эти дополнительные 14B потому, что MTP пока не реализован в llama.cpp.
MTP это специальный модуль, который расширяет слои основной модели, и который обучался с основной моделью. Он нужен для того, чтобы предсказывать второй токен, вслед за первым. У Deepseek с MTP получается ускорение в 1.8 раза, а вероятность принятия второго токена, по их оценкам, составляет 85–90%.
https://arxiv.org/pdf/2412.19437
В llama.cpp есть похожая, но более простая, идея под названием speculative decoding. Если у какой-то конкретной модели есть разные размеры, главное, чтобы они были из одной "партии", то можно взять маленькую как черновик для большой. Например, у LLaMa 3.1 есть версии: 70B, 8B, 3B, 1B - то для 70B можно использовать черновиком, например, модель 3B. Ускорение получается разным, от 25 до 60%.
Почему это работает, думаю, и так понятно. Например, при генерации длинных слов часто можно предсказать их окончание, но большая модель будет тратить больше времени на генерацию ответа, так как текст выводится токенами, токены представляют собой буквы или слога, и каждый токен будет требовать полного прогона модели. Маленькая модель быстрее продолжит такое слово.
ollama всех обманула и назвала R1 Distill модели, как обычный deepseek r1. Полное название модели на скриншоте - DeepSeek-R1-Distill-Llama-8B, это файнтюн LLaMA 3.1 8B, ничего общего с качеством deepseek R1 не имеет.
Конкурентами digits будут новые AMD EPYC с DDR5 и эпловские m4 Ultra unified memory.
Точнее сказать, что конкурентом скорее будет Ryzen Al Max+ 395. И по цене, и по размерам, и характеристикам. Например, Framework Desktop. Стоит на 1к дешевле, это привычное x86 железо, а не arm, из минусов это не CUDA, а ROCm, но для многих фреймворков это уже не проблема. Шина памяти 256 бит LPDDR5X.
У DIGITS, который теперь DGX Spark, характеристики выложили, шина памяти всё-таки 256 бит, такая же как у Framework Desktop:
Да, точно, LLM это и есть набор весов, а тензоры это лишь объединение этих весов особым образом по слоям. На вычисление каждого следующего токена модели нужны все веса одномоментно, исключение только MoE модели, там веса чередуются на каждый токен.
Токенизатор и прочее, это вообще спичечные размеры. Например, токенизатор DeepSeek R1, самой крупной открытой модель размером 671B в fp8 требующей 700гб памяти для запуска, имеет размер 8мб.
А уже спросили почему Ryzen 7 9800X3D а не 7900x который мощнее (все равно водянку ставим. а цены схожие)?
Если в названии есть X3D - это процессоры с увеличенным 3D V-Cache L3, они могут быть слабее в вычислительных задачах, но у них сильно больше L3 кэш и, как выяснилось, игры очень хорошо отзываются на размер L3 кэша и поэтому в играх такие процессоры показывают себя сильно лучше.
9800x3d vs 7900x
9800x3d vs 7950x3d
9800x3d vs 14900kf vs ultra 9 285k со свежими драйверами
Поэтому вопрос почему именно 9800X3D не стоит, сейчас это лучший процессор для игр, еще и холодный, ему водянка, в общем-то, не требуется.
Вообще, процессоры с 3d кэшем есть и для AM4 платформы, например, 5700x3d, что сейчас, с учетом низкой цены на материнки b450 и недорогой ddr4, скорее всего будет одним из самых дешевых способов получить лучшую производительность в играх по соотношению цена/качество.
5700x3d + rtx 4090 на ультра графике без dlss и без лучей
Preview была проверкой концепции размышлений и вышла 3 месяца назад, в ноябре 2024. Она умела работать только в режиме 1 вопрос - 1 ответ и сразу же ресет, она постоянно переключала языки и её качество вы можете видеть сами. До этого, в сентябре вышла размышляющая chatgpt o1, все гадали как реализовано размышление, это система моделей или как, и qwq preview была попыткой показать, что то, как o1 умеет рассуждать, можно реализовать в рамках монолитной модели и позже подтвердилось, что o1 это одна модель, а не система агентов.
Финальная версия QwQ-32B уже обучена намного лучше, учтены многие факторы и поэтому у неё сильно лучше качество, модель теперь полноценно настроена через apply_chat_template чтобы автоматически убирать предыдущие размышления из истории и добавлять тег <think> вначале нового ответа, поэтому модель пригодна для диалогов.
В llama.cpp реализовано apply_chat_template, поэтому и gguf квантованные версии тоже будут работать нормально, если учесть рекомендации от создателей модели: Use Temperature=0.6 and TopP=0.95. Use TopK between 20 and 40 to filter out rare token occurrences while maintaining the diversity of the generated output.
С юмором у всех моделей сложно:
QwQ-32B-Q4_K_M.gguf
Но то, что модели могут переключать языки, сейчас это в целом типично, даже o3-mini так делает:
С длинной контекста, скорость будет резко падать, поэтому "бенчмарки" про то, что люди получают 4 t/s на коротком контексте могут быть не применимы на практике. Если вы именно хотите это использовать и потребуются длинные диалоги, то нужно это учитывать, либо ждать пока найдут способ это оптимизировать.
https://github.com/ggerganov/llama.cpp/pull/11446
На 200гб можно в лучше случае получить 2-3 t/s, и тут либо еще снижать квант для ускорения, либо если добавить туда одну 3090 и запускать через ktransformers, они выпустили недавно поддержку DeepSeek R1/V3, то на 1 видеокарте можно получить ускорение до 3х раз.
С одной 3090 и эпиком 3 поколения так можно получить 8 t/s, но там не ясна скорость на длинном контексте, для кода это может быть критично, а для просто чата это нормально.
В целом рассуждающая модель может генерировать очень много токенов, поэтому просто запустите R1-Distill в llama.cpp на том железе, что у вас есть сейчас, подобрав размер (качество ответов будет плохое на низких размерах B, но этот эксперимент не про качество ответов) и параметры запуска (выносить на GPU часть слоев или нет, использовать сборку с GPU чтобы kv-кэш автоматически выносился или использовать avx сборку), чтобы в итоге получилось 2 t/s или 4 t/s и посмотрите устраивает ли вас такая скорость.
У E5-2666v3 память 4х канал ddr4 2133мгц - значит скорость около 50гб/с, скорее всего такой скорости не хватает, чтобы загрузить все ядра. Плюс у вас часть слоев вынесена на видеокарту, судя по загрузке, попробуйте отключить оффлоад на gpu и процессор скорее всего будет полностью загружен.
И, кстати, ktransformers теперь поддерживает DeepSeek 671B V3 и R1. Ускорение на одной 4090 у них вышло в 3 раза, с 4.5 t/s до 13.6 t/s. Использовалось 14гб видеопамяти и 382гб озу для кванта Q4_K_M. Если два процессора, то проблему с numa они временно решили дублированием памяти на оба процессора, обещали потом оптимизировать. Их способ ускорения работает только для MoE моделей, R1-Distill не подойдут.
Второе везде работает автоматически сразу через mmap. Для первого нужно взять сборку с поддержкой видеокарт и там это будет работать автоматически.
gguf файлы внутри организованы так, что их структура совпадает со структурой памяти, когда модель загружена в память, и когда через mmap происходит маппинг файла на память, то в llama.cpp всё работает автоматически через механизмы ОС. Отключить mmap можно через --no-mmap. При загрузке будет указано сколько слоев выгружено на GPU, например, 0, и сколько памяти ушло на промежуточные вычисления и загрузилось ли это на GPU.
Есть нюанс, под виндой mmap работает, но в моем случае почему-то залезает в своп, из-за этого скорость падает до 0.25 t/s. Под линуксом всё работает намного быстрее.
Например, нужно выбрать llama.cpp собранную с поддержкой видеокарт, среди множества версий выбрать нужную:
Если видеокарта amd - то win-hip версии gfx для нужной версии видеокарты. И так как скорее всего никто не разбирается в версиях gfx, то стоит просто попробовать по очереди все варианты. Или версию gfx можно узнать тут на вкладке AMD Radeon GPUs.
Если nvidia, то скачать нужно и cuda сборку и отдельно cudart, который нужно разархивировать в туже папку со сборкой. Для старых карточек версию cu11.7, для новых cu12.4.
Vulkan версия универсальна и работает с любыми видеокартами, хоть amd, хоть nvidia, хоть intel, и даже в паре amd + intel - поэтому если не заводится со специализированным вариантом, можно взять вулкан.
Если скачать avx сборку, то всё будет считаться на cpu.
Запускается это через llama-server, GUI которого потом открывается в браузере, команда для запуска:
Тут --cache-type-k q4_0 квантование kv-кэша для уменьшения его размера, можно отключить, если текст получается несвязный.
Если остается лишняя видеопамять, то можно выгрузить часть слоев на GPU через -ngl N - количество слоев нужно подбирать по количеству видеопамяти. Если 2 и больше видеокарт, то можно распределить загрузку памяти через -ts xx,yy, либо это будет сделано автоматически. --ctx-size 4096 - уменьшить размер контекста до 4к, чем больше контекст, тем больше памяти потребуется:
По тому же адресу, который будет указан у llama-server, если добавить в конце /v1/, то это будет адрес с openai completions api, который можно вводить в любом удобном клиенте или в плагинах, используя вместо chatgpt. Должно получиться вот так: http://127.0.0.1:8080/v1/
В настройках можно указать, чтобы модель явно мыслила на русском языке, иначе она может переключаться на другие языки. min_p нужно установить в 0.05, иначе будет повтор токенов, что снизит качество вывода, температуру в 0.5 для того, чтобы модель меньше фантазировала:
Эти настройки работают и для R1-Distill моделей. Так как в llama-server уже есть поддержка мыслительных тегов, то R1-Distill будут тоже работать, например:
Максимальная сейчас это maverick 400B, behemoth 2T они не выложили.
Регистрируетесь в openrouter.ai, работает и на временную почту, ищете там free модели через поиск написав "free" и используете через api (например, через клиент https://msty.app/ или любой другой поддерживающий openai completion api), либо у них есть чат на сайте.
https://openrouter.ai/meta-llama/llama-4-maverick:free
Доступны и другие free модели, включая новую Gemini 2.5 pro, которая на данный момент является рекордсменом по удержанию длинного контекста.
https://openrouter.ai/google/gemini-2.5-pro-exp-03-25:free
Если без регистрации:
на https://lmarena.ai/ в разделе Direct Chat или side-by-side уже добавили maverick, там можно сравнить разные модели.
На deepinfra всегда добавляют новинки, но лимиты лютые.
Зачем вы кидаете ссылку на статью, которую вы, видимо, сами не читали, и в которой написано ровно то, что я вкратце написал? Там даже картинками все проиллюстрировано. Единственное, чего там нет, это разницы между pp и tg, но это не так важно.
Микс экспертов (MoE) пришел намного раньше появления рассуждающих моделей. Первая MoE модель Mixtral-8x22B появилась еще год назад, когда даже техники CoT не было, не то, что рассуждающих моделей.
То, как вы описываете MoE не соответствует действительности. MoE работает точно так же как Dense, они по кругу гоняют выходной слой отправляя его в первый слой.
В MoE на каждом новом шагу выходной вектор подается на вход модели, и обученный маршрутизатор (Gating Mechanism) находит признаки в этом векторе, выдает веса вероятностей, которые соответствуют каждому эксперту, после этого выбирается Top-K экспертов, которые и будут активированы для этого шага цикла вычисления одного токена, и дальше снова по кругу как в Dense моделях.
Тут нет никаких разбивок вопроса внутри, никаких перепроверок и никаких внутренних диалогов. MoE это способ масштабировать модель, а не про внутренние диалоги экспертов.
MoE позволяет выдавать качество 140B моделей, работая при этом со скоростью моделей 17B, но повышая требования к памяти до 400B модели. Когда у вас нет проблем с железом, как не распараллеливай, запуская монолитную 400B вы не получите быстрый скоростей, а скорость это важно для всяких chatGPT сервисов.
И сам термин "рассуждающие модели" многими понимается не правильно. Это не способ модели размышлять, из-за чего и появляются различные неправильные выводы о том, что "модель не все этапы размышления показывает", это способ масштабировать модель снизив требования к этапу обучения, что равносильно повысить качество модели оставив обучение на том же уровне.
Ошибка модели зависит от 3 факторов:
вычисляемая мощность обучения
размер датасета
количество параметров
Сейчас временно уперлись во все 3 фактора. Например, нельзя просто наращивать размер модели не увеличивая размер датасета (модель llama 3.3 70B примерно равна по качеству llama 3.1 405B). Или из-за нехватки данных для обучения нельзя просто увеличивать количество шагов/эпох обучения - будет переобучение. И так далее.
Выходом стало масштабировать 4 фактор - увеличить мощность предсказания модели (test-time compute).
Смысл тут в том, что модель набрасывает несколько ответов, и видя эти ответы может оценить их качество своим стандартным механизмом self-attention, который одинаков для Dense (QwQ-32B) и для MoE (R1), тем самым отбросить ошибочные варианты.
Этот эффект пользователи уже давно могли наблюдать через механизм "А если подумать?". Когда первый раз модель отвечает не правильно, но если её попросить подумать над ответом, то второй или третий будут уже правильными.
И тут важен не сам фактор размышления в стиле мыслей, это просто красивая обертка, важен сам факт того, что модель получает черновые ответы и она через attention может оценить их качество, прежде чем выдать финальный ответ.
Диалоги длились по 5 минут, но не особо насыщенные.
Полные стенограммы всех диалогов выложены тут: https://osf.io/jk7bw/files/osfstorage
в файле tt_message_anonymized.csv
Есть нюанс, бот обычно не пишет "Привет", если с ним явно не здороваются. А люди, наоборот, привычны здороваться, даже если к ним врываются с непонятным бредом.
И вот человек уже провел 10 диалогов, все они прошли нормально, и тут слом шаблона, новый диалог, но человек вежливый, он сначала поздоровается.
Особенно если перефразировать задачу, нужно определить не ботов, а людей, и важно не всех в ботов записать, а определить точно людей.
Фактор "это точно бот" будет плавать к "а может и не бот" в течении 5 минут диалога туда сюда, если это единственный маркер.
Отлично, два пройдены, на модели размером 8B, а в статье модель на 2 порядка больше.
Осталось 197. Результат вы пока не знаете. Сколько будет ложных результатов в условиях эксперимента? Легко чувствовать интуитивность, когда заранее знаешь ответ, но неподготовленные люди там отвечали не так, как ожидается в идеальных условиях.
А определить ботов по прежнему очень легко, если кто-то написал сам и еще и отвечает - то 100% бот.
Смысл в том, что вы не знаете, это человек подыгрывает вашему абсурду или машина.
Не очень надежный критерий.
Это уже какая-то теория заговоров, где аргумент "модель мне сама сказала, что она не новая".
Deepseek в новостях писали, что чтобы включить новую V3, надо отжать кнопку DeepThink, а это возможно только в chat.deepseek.com.
Дистиллятов V3 вообще не существует, как и не существует каких-то урезанных версий V3. Разница с platform в настройках системного промпта и температуры. По умолчанию в api температура 1.0, софт для кода сам будет, скорее всего, устанавливать её в 0.0, в chat не известно какая.
На chat.deepseek.com новая V3, она может написать стих с правильной рифмой:
С этим не справлялась старая V3 и не справляются дистилляты R1 (только оригинальная R1):
В коде тоже достаточно отличий, в новой V3 код лучше оформлен, лучше выполняет задачу, результат выглядит лучше:
И нет, размер не изменился, предыдущая V3 тоже была 685B, и R1 тоже 685B.
Число 685B - это вес основной модели 671B плюс вес модуля MTP 14B. В gguf версиях вы не видите эти дополнительные 14B потому, что MTP пока не реализован в llama.cpp.
MTP это специальный модуль, который расширяет слои основной модели, и который обучался с основной моделью. Он нужен для того, чтобы предсказывать второй токен, вслед за первым. У Deepseek с MTP получается ускорение в 1.8 раза, а вероятность принятия второго токена, по их оценкам, составляет 85–90%.
В llama.cpp есть похожая, но более простая, идея под названием speculative decoding.
Если у какой-то конкретной модели есть разные размеры, главное, чтобы они были из одной "партии", то можно взять маленькую как черновик для большой. Например, у LLaMa 3.1 есть версии: 70B, 8B, 3B, 1B - то для 70B можно использовать черновиком, например, модель 3B. Ускорение получается разным, от 25 до 60%.
Почему это работает, думаю, и так понятно. Например, при генерации длинных слов часто можно предсказать их окончание, но большая модель будет тратить больше времени на генерацию ответа, так как текст выводится токенами, токены представляют собой буквы или слога, и каждый токен будет требовать полного прогона модели. Маленькая модель быстрее продолжит такое слово.
ollama всех обманула и назвала R1 Distill модели, как обычный deepseek r1. Полное название модели на скриншоте - DeepSeek-R1-Distill-Llama-8B, это файнтюн LLaMA 3.1 8B, ничего общего с качеством deepseek R1 не имеет.
Точнее сказать, что конкурентом скорее будет Ryzen Al Max+ 395. И по цене, и по размерам, и характеристикам. Например, Framework Desktop. Стоит на 1к дешевле, это привычное x86 железо, а не arm, из минусов это не CUDA, а ROCm, но для многих фреймворков это уже не проблема. Шина памяти 256 бит LPDDR5X.
У DIGITS, который теперь DGX Spark, характеристики выложили, шина памяти всё-таки 256 бит, такая же как у Framework Desktop:
Размер тоже компактный, только вертикальный:
Да, точно, LLM это и есть набор весов, а тензоры это лишь объединение этих весов особым образом по слоям. На вычисление каждого следующего токена модели нужны все веса одномоментно, исключение только MoE модели, там веса чередуются на каждый токен.
Токенизатор и прочее, это вообще спичечные размеры. Например, токенизатор DeepSeek R1, самой крупной открытой модель размером 671B в fp8 требующей 700гб памяти для запуска, имеет размер 8мб.
Но... Ведь это и есть вся LLM.
Если в названии есть X3D - это процессоры с увеличенным 3D V-Cache L3, они могут быть слабее в вычислительных задачах, но у них сильно больше L3 кэш и, как выяснилось, игры очень хорошо отзываются на размер L3 кэша и поэтому в играх такие процессоры показывают себя сильно лучше.
Поэтому вопрос почему именно 9800X3D не стоит, сейчас это лучший процессор для игр, еще и холодный, ему водянка, в общем-то, не требуется.
Вообще, процессоры с 3d кэшем есть и для AM4 платформы, например, 5700x3d, что сейчас, с учетом низкой цены на материнки b450 и недорогой ddr4, скорее всего будет одним из самых дешевых способов получить лучшую производительность в играх по соотношению цена/качество.
Не то, что нужно. Вам нужно вот это, онлайн без регистрации: https://huggingface.co/spaces/Qwen/QwQ-32B-Demo
Preview была проверкой концепции размышлений и вышла 3 месяца назад, в ноябре 2024. Она умела работать только в режиме 1 вопрос - 1 ответ и сразу же ресет, она постоянно переключала языки и её качество вы можете видеть сами.
До этого, в сентябре вышла размышляющая chatgpt o1, все гадали как реализовано размышление, это система моделей или как, и qwq preview была попыткой показать, что то, как o1 умеет рассуждать, можно реализовать в рамках монолитной модели и позже подтвердилось, что o1 это одна модель, а не система агентов.
Финальная версия QwQ-32B уже обучена намного лучше, учтены многие факторы и поэтому у неё сильно лучше качество, модель теперь полноценно настроена через apply_chat_template чтобы автоматически убирать предыдущие размышления из истории и добавлять тег
<think>
вначале нового ответа, поэтому модель пригодна для диалогов.В llama.cpp реализовано apply_chat_template, поэтому и gguf квантованные версии тоже будут работать нормально, если учесть рекомендации от создателей модели:
Use Temperature=0.6 and TopP=0.95. Use TopK between 20 and 40 to filter out rare token occurrences while maintaining the diversity of the generated output.
С юмором у всех моделей сложно:
Но то, что модели могут переключать языки, сейчас это в целом типично, даже o3-mini так делает:
С длинной контекста, скорость будет резко падать, поэтому "бенчмарки" про то, что люди получают 4 t/s на коротком контексте могут быть не применимы на практике.
Если вы именно хотите это использовать и потребуются длинные диалоги, то нужно это учитывать, либо ждать пока найдут способ это оптимизировать.
На 200гб можно в лучше случае получить 2-3 t/s, и тут либо еще снижать квант для ускорения, либо если добавить туда одну 3090 и запускать через ktransformers, они выпустили недавно поддержку DeepSeek R1/V3, то на 1 видеокарте можно получить ускорение до 3х раз.
С одной 3090 и эпиком 3 поколения так можно получить 8 t/s, но там не ясна скорость на длинном контексте, для кода это может быть критично, а для просто чата это нормально.
В целом рассуждающая модель может генерировать очень много токенов, поэтому просто запустите R1-Distill в llama.cpp на том железе, что у вас есть сейчас, подобрав размер (качество ответов будет плохое на низких размерах B, но этот эксперимент не про качество ответов) и параметры запуска (выносить на GPU часть слоев или нет, использовать сборку с GPU чтобы kv-кэш автоматически выносился или использовать avx сборку), чтобы в итоге получилось 2 t/s или 4 t/s и посмотрите устраивает ли вас такая скорость.
https://habr.com/ru/articles/879846/comments/#comment_27903310
У E5-2666v3 память 4х канал ddr4 2133мгц - значит скорость около 50гб/с, скорее всего такой скорости не хватает, чтобы загрузить все ядра. Плюс у вас часть слоев вынесена на видеокарту, судя по загрузке, попробуйте отключить оффлоад на gpu и процессор скорее всего будет полностью загружен.
И, кстати, ktransformers теперь поддерживает DeepSeek 671B V3 и R1. Ускорение на одной 4090 у них вышло в 3 раза, с 4.5 t/s до 13.6 t/s. Использовалось 14гб видеопамяти и 382гб озу для кванта Q4_K_M.
Если два процессора, то проблему с numa они временно решили дублированием памяти на оба процессора, обещали потом оптимизировать. Их способ ускорения работает только для MoE моделей, R1-Distill не подойдут.
Второе везде работает автоматически сразу через mmap. Для первого нужно взять сборку с поддержкой видеокарт и там это будет работать автоматически.
gguf файлы внутри организованы так, что их структура совпадает со структурой памяти, когда модель загружена в память, и когда через mmap происходит маппинг файла на память, то в llama.cpp всё работает автоматически через механизмы ОС. Отключить mmap можно через
--no-mmap
.При загрузке будет указано сколько слоев выгружено на GPU, например, 0, и сколько памяти ушло на промежуточные вычисления и загрузилось ли это на GPU.
Есть нюанс, под виндой mmap работает, но в моем случае почему-то залезает в своп, из-за этого скорость падает до 0.25 t/s. Под линуксом всё работает намного быстрее.
Например, нужно выбрать llama.cpp собранную с поддержкой видеокарт, среди множества версий выбрать нужную:
Если видеокарта amd - то win-hip версии gfx для нужной версии видеокарты. И так как скорее всего никто не разбирается в версиях gfx, то стоит просто попробовать по очереди все варианты. Или версию gfx можно узнать тут на вкладке AMD Radeon GPUs.
Если nvidia, то скачать нужно и cuda сборку и отдельно cudart, который нужно разархивировать в туже папку со сборкой. Для старых карточек версию cu11.7, для новых cu12.4.
Vulkan версия универсальна и работает с любыми видеокартами, хоть amd, хоть nvidia, хоть intel, и даже в паре amd + intel - поэтому если не заводится со специализированным вариантом, можно взять вулкан.
Если скачать avx сборку, то всё будет считаться на cpu.
Запускается это через llama-server, GUI которого потом открывается в браузере, команда для запуска:
Тут
--cache-type-k q4_0
квантование kv-кэша для уменьшения его размера, можно отключить, если текст получается несвязный.Если остается лишняя видеопамять, то можно выгрузить часть слоев на GPU через
-ngl N
- количество слоев нужно подбирать по количеству видеопамяти. Если 2 и больше видеокарт, то можно распределить загрузку памяти через-ts xx,yy
, либо это будет сделано автоматически.--ctx-size 4096
- уменьшить размер контекста до 4к, чем больше контекст, тем больше памяти потребуется:По тому же адресу, который будет указан у llama-server, если добавить в конце
/v1/
, то это будет адрес с openai completions api, который можно вводить в любом удобном клиенте или в плагинах, используя вместо chatgpt. Должно получиться вот так:http://127.0.0.1:8080/v1/
В настройках можно указать, чтобы модель явно мыслила на русском языке, иначе она может переключаться на другие языки. min_p нужно установить в 0.05, иначе будет повтор токенов, что снизит качество вывода, температуру в 0.5 для того, чтобы модель меньше фантазировала:
Эти настройки работают и для R1-Distill моделей. Так как в llama-server уже есть поддержка мыслительных тегов, то R1-Distill будут тоже работать, например: