LINUX.ORG.RU

Избранные сообщения xgatron

Вышла open weight модель Qwen38-27b, пожалуй, новый дефолт для локальных домашних моделей!

 ,

Вышла Qwen3.8-27B — 27B dense, vision, 262K контекста и MTP

Qwen наконец выложили Qwen3.8-27B.

Это, пожалуй, самый интересный размер в новой линейке именно с точки зрения локального запуска. 27 миллиардов параметров — это уже достаточно большая модель для серьёзной работы, но ещё не тот случай, когда для запуска нужен небольшой датацентр.

Модель dense, мультимодальная: понимает текст, изображения и видео. Из коробки заявлены coding, research, professional workloads и длинные agentic-задачи.

По архитектуре тоже есть интересные изменения.

Внутри:

  • 27B параметров;
  • hidden size 5120;
  • 64 слоя;
  • vocabulary / embedding — 248 320;
  • гибрид Gated DeltaNet + обычный Attention;
  • схема слоёв: 16 × (3 × DeltaNet → FFN + 1 × Attention → FFN);
  • FFN — 17 408;
  • MTP — Multi-Token Prediction, причём модель обучалась сразу с несколькими prediction steps.

То есть это уже не обычный Transformer, где на каждом слое приходится считать полноценный quadratic attention. Большая часть слоёв использует Gated DeltaNet, а классический attention появляется периодически.

Из практического интереса здесь ещё и MTP. Если inference-движки нормально его реализуют, это потенциально хороший источник дополнительной скорости при локальной генерации.

Контекст

Нативное окно — 262 144 токена.

До 1 000 000 токенов его можно расширить через YaRN. Причём сами Qwen отдельно предупреждают, что статический YaRN может немного ухудшать качество на коротком контексте и рекомендуют включать scaling только тогда, когда он действительно нужен.

Для 524K, например, они рекомендуют factor=2.0, а для миллиона — factor=4.0.

Это приятная деталь: вместо привычного «у нас миллион токенов» мелким шрифтом прямо написано, как этот миллион получается и какие у него есть компромиссы.

Thinking mode

По умолчанию модель работает с reasoning включённым и пишет reasoning в <think>...</think>.

Есть три официальных уровня:

  • xhigh — максимальное рассуждение, используется по умолчанию;
  • medium — баланс скорости и качества;
  • low — упор на скорость.

Thinking можно полностью отключить.

Ещё появилась интересная штука preserve_thinking: модель по умолчанию сохраняет reasoning из предыдущих сообщений в многоходовом диалоге. В первую очередь это рассчитано на агентов, чтобы модель не начинала каждый следующий шаг размышлять над задачей заново.

А теперь цифры

Официальная таблица Qwen выглядит довольно бодро:

BenchmarkQwen3.8-27BQwen3.6-27BQwen3.7-PlusMuse Glimmer-30BOpus 4.6 Max
Terminal Bench 2.173.063.464.051.778.2
SWE-bench Pro61.753.557.651.253.4
NL2Repo-Bench42.336.241.147.6
DeepSWE 1.142.213.314.2
QwenSWEBench79.049.359.263.8
CoWorkBench70.761.065.168.2
JobBench33.421.827.6
IFBench79.569.179.177.062.5
GPQA Diamond89.287.890.383.591.3
HLE30.824.034.722.040.0
LiveCodeBench v690.383.989.688.8

Для 27B особенно впечатляют результаты по coding.

SWE-bench Pro — 61.7, DeepSWE 1.1 — 42.2, QwenSWEBench — 79.0, LiveCodeBench v6 — 90.3.

Причём это не только задачки вида «напиши функцию сортировки». В таблице отдельно есть repo-level code generation, software engineering и agentic terminal coding.

Vision и computer use

Поскольку модель изначально vision-language, есть отдельная пачка мультимодальных тестов:

BenchmarkQwen3.8-27BQwen3.6-27BQwen3.7-PlusMuse Glimmer-30BOpus 4.6 Max
OSWorld-Verified84.363.973.365.972.7
WebArena-Verified64.848.855.3
AndroidWorld81.970.381.062.0
RecreationBench47.129.830.2
SWE-MM38.625.730.027.1
Vision2Web62.945.042.1
OmniDocBench 1.591.189.491.475.886.6
RealWorldQA85.984.186.973.9
ERQA65.562.569.840.8

OSWorld 84.3, WebArena 64.8 и AndroidWorld 81.9 намекают, что модель довольно серьёзно затачивали не просто на чат, а именно на работу агентом с интерфейсами, браузером и приложениями.

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

Поддержка на старте заявлена для Transformers, vLLM, SGLang и TokenSpeed.

Ждём GGUF :)

Модель:

https://huggingface.co/Qwen/Qwen3.8-27B

gagarin0
()

Стемминг без регулярных выражений, как?

 

Стемминг - убрать из слов окончания и суффиксы, например из «винда» превратить в «винд», из «линуксу» в «линукс». Существуют примеры на других языках использующие регулярное выражения, но мне это хочется сделать на по-символьном анализаторе. Начинал делать, преобразуя логику регвыр в по-символьное движение по строке, но там есть несколько действия вперёд-назад, пока не осилил. Claude выдал вариант на строковых функциях, в общем оптимизация = 0.

AZJIO
()

Свой локальный сервер WoW с блэкджеком и ботами, часть 1

 ,

altwazar
()

Ограничиваем сертификат Минцифры

 , ,

Сейчас многие российские сайты, в первую очередь сайты банков, перешли (не по своей воле, но тем не менее) на использование УЦ, которые контролируются Правительством Российской Федерации. Корневые сертификаты этих УЦ (в просторечье - «сертификаты Минцифры»), как правило, по умолчанию не включаются в списки доверенных стандартными иностранными ОС и браузерами. Что будет, если мы их туда включим?

( читать дальше... )

Lrrr
()

C++ — туда и обратно, или зачем нужен Boost

 , , ,

Мой предыдущий тред в Development собрал самое большое число ответов аж с сентября, то есть за последние 9 месяцев, и это лишний раз подтверждает упадок этого форума. Полагаю, кто-то должен это изменить, и поэтому мы с тобой, ЛОР, поговорим сегодня про C++.

Начиная с C++26 вместо std::function вводится пачка новых классов: std::copyable_function, std::move_only_function (доступна с C++23) и std::function_ref. Что же не так с оригинальным std::function, ты можешь спросить? А вот что:

#include <functional>
#include <print>

struct call_me {
    int x = 0;
    void operator()() {
        std::print("x was {}\n", x++);
    }
};

int main() {
    const std::function<void()> f = call_me{};
    f();
}

Несмотря на то, что переменная f объявлена константной (люблю оксюмороны!), у неё есть внутреннее состояние и оно меняется при вызовах. Компилятор это без проблем хавает.

Так вот, ковыряясь в том, зачем и кто вообще смог так насрать себе в штаны сам, я наткнулся на статью ребят, которые подводят список подобных косяков комитета C++, когда фичи живут по 10 лет и объявляются устаревшими.

Небольшой список фич, которые были придуманы, оказались не нужны/бесполезны/вредны и выкинуты:

  • Известный vector<bool>, живущий издревле в STL и про который все говорят, что его надо избегать. Частично заменяется std::bitset.
  • std::auto_ptr. Бесполезен, ломает контейнеры, выкинут на помойку в C++17.
  • Указание исключений у функции в формате throw(X, Y). Так же выкинуто в C++17.
  • std::iterator объявили устаревшим в C++17, собираются удалить в C++26.
  • std::aligned_storage и std::aligned_union добавлены в C++11, объявлены устаревшими в C++23, скоро удалят.
  • Ключевое слово register удалено в C++17, хотя всё ещё доступно в Си.
  • std::get_temporary_buffer и std::raw_storage_iterator удалены в C++20.
  • Потрясающее по эпичности фиаско с интерфейсом для сборщиков мусора. std::declare_reachable сотоварищи были добавлены в C++11. Выяснилось, что сборщики мусора для C++ писать либо никто не умеет, либо никто не хочет, поэтому в C++23 это всё удалили и сделали вид, что ничего не было.
  • Абсолютное безумие вокруг концептов, модулей и поддержки сети. Предложения одобряли, вновь отклоняли, переделывали, и по итогу теми же модулями до сих пор никто не пользуется.
  • Сопрограммы (coroutines). В том виде, в котором они есть в C++, это просто ужас. Достаточно того, что корутины требуют выделения памяти из кучи во время работы, а значит вообще не подходят для случаях, когда требуется серьёзная производительность. Например, в любом коде, требующим работы в реальном времени и не позволяющем делать системные вызовы.

Просто лютый трешак, который никто подчищать пока не собирается:

  • std::regex – лютый тормоз, рекомендуется не использовать.
  • Мертворождённый std::simd, добавленный в C++26 и уже с ходу не нужный вообще никому, потому что код с std::simd в два-три раза тормознее чем со сторонними библиотеками, просто голыми интринсиками, и даже медленнее чем просто цикл for.
  • std::async. Дескруктор ждёт завершения асинка и поэтому может залочить весь код тебе. Наконец починили в C++26, но эта штука была сломана 15 лет.
  • Отвратительно спроектированный <iostream>. Его наконец можно выкинуть и использовать std::print, но не все про это знают.
  • Абсолютно тормозные контейнеры map, set, unordered_map. Вместо первого можно использовать flat_map из C++23. Контейнеры в стандартной библиотеке Rust (BTreeMap) и другие реализации B-Tree Map их обгоняют по производительности, но тем не менее в C++ выбирают убогий дефолт.

Решения многих из этих проблем существуют в Boost и сделаны там гораздо лучше. Но в то же время возникает важный вопрос: зачем вообще нужен настолько плохо спроектированный язык, где каждое следующее поколение инженеров, работающих над ним, отменяет решения предыдущих, а код под новые стандарты часто нужно переписывать если не с нуля, то очень близко к тому? Даже процесс разработки Rust с его поехавшими клоунами в юбках на этом фоне выглядит адекватным.

В общем, всё печально, ЛОР. Такие дела.

yorshka
()

Выделяй память как Линус: инструкция

 , ,

Предположим, у нас есть библиотека на Си. А в этой библиотеке - какая-то структура, детали реализации которой мы хотим скрыть и поэтому удалили из публичных заголовочных файлов. Как правильно выделить память под экземпляр этой структуры? Данная статья пытается ответить на этот вопрос.

( читать дальше... )

Lrrr
()

Утверждён стандарт C++26

 ,

Группа Разработка

Комитет ISO по стандартизации языка C++ утвердил финальный вариант спецификации, образующей международный стандарт «C++26». Представленные в спецификации возможности частично уже поддерживаются в компиляторах GCC (gnu.org), Clang и Microsoft Visual C++. Поддерживающие C++26 стандартные библиотеки реализованы в рамках проекта Boost.

В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2026.

( читать дальше... )

>>> Источник: OpenNET (opennet.ru)

dataman
()

pdflatex → lualatex: почти бесшовный переход

 , , , ,

Простейшая шапка для документа, ориентированного на русскую типографику. Проверено на дистрибутиве TeX Live 2025. Кодировка по умолчанию юникодная.

( читать дальше... )

Evgueni
()

Пользовательские сервисы OpenRC: инструкция по применению

 , , ,

Как я уже писал раньше, в систему инициализации OpenRC недавно добавлена возможность запускать сервисы в пользовательской сессии. В этой статье я покажу, как этим пользоваться, на примере pipewire в Alpine Linux.

Что было раньше

Раньше в пакете с pipewire поставлялся (и до сих пор поставляется) скрипт /usr/libexec/pipewire-launcher, который предлагалось прописывать в конфиге sway. Особенность этого сетапа в том, что после остановки Sway все запущенные им в background процессы оставались висеть в памяти, и перед последующим запуском их предлагалось прибивать с помощью pkill. Не говоря уже про полное отсутствие логов, их не было.

( читать дальше... )

Lrrr
()

SObjectizer-5.8.0 и so5extra-1.6.0

 , , , ,

Вышли очередные версии библиотек SObjectizer и so5extra.

Полный список изменений можно найти в Wiki:

https://github.com/Stiffstream/sobjectizer/wiki/v.5.8.0

https://github.com/Stiffstream/so5extra/wiki/v.1.6.0

Менее полный, но с большим погружением в отдельные моменты, обзор изменений сделан в свежей статье на Хабре.

Если же говорить в двух словах, то начата новая ветка 5.8, в которой пришлось пойти на слом совместимости с предыдущей веткой 5.7. Так что при переходе на SO-5.8 потребуется модифицировать исходники. Не получилось придумать способ внедрить новую функциональность не поломав совместимость :(

Для тех, кто не знает меня и не слышал про этот проект, вкратце:

SObjectizer – это один из «акторных фреймворков» для C++ (еще есть QP/C++, CAF: C++ Actor Framework и rotor). Краткий обзор SObjectizer-а можно найти в этой презентации или в этой статье. Кроме модели акторов SObjectizer поддерживает еще и такие модели как Publish-Subscribe и Communicating Sequential Processes. А so5extra – это набор дополнительных полезных прибамбасов для SObjectizer-а, которые не хотелось добавлять в сам SObjectizer.

В двух словах, SObjectizer, – это инструмент для упрощения разработки некоторых типов многопоточных приложений на C++.

Новая версия уже доступна через vcpkg, добавление в conan пока задерживается, но надеюсь, что скоро она появится и там.


Готов к тому, что в меня будут бросаться гнилыми помидорами за рекламу образцового нинужно, но как можно было обойтись без поста на LOR-е, по старой доброй традиции? ;)

eao197
()

lexbor 2.2.0 - библиотека парсинга HTML и CSS

 , , , ,

Группа Open Source

6 апреля, после 20 месяцев разработки, состоялся выпуск 2.2.0 библиотеки парсинга HTML и CSS lexbor, написанной на языке C.

( читать дальше... )

>>> Подробности (github.com)

dataman
()