Галоўная / Артыкулы / Выкананне Qwen3.8-27B на адзінам RTX 3090 з падправленым vLLM і DFlash2

Выкананне Qwen3.8-27B на адзінам RTX 3090 з падправленым vLLM і DFlash2

Як форк vLLM 0.28.0 з закрепленым варыянтом, які выкарыстоўвае реквантазаваныя эмбеддінгі та тэхналогію DFlash2, дазволяе запрацоўваць гібрыдны модель размерам 27 мільярда параметраў на карцы памяці ў 24 ГБ, і чаму дзейство з дужа дзьвінгай кантэкстам уповольняе його працэс.

3193 слоў

Модель з 27 мільярда параметраў на аднай спожывачацкай відеакарцы зазвычай вымагае складнага выбору між дужыною контексту, паралельнасцю та швальнасцю. Комунітэтыя версія vLLM, налаштаваная для Qwen3.8-27B, змінюе ситуацыю на відеакарцы RTX 3090 з 24 ГБ памяці: у роботе з агентамі ёй вдаёцася дасягнуць прыблізна 177 токенав на секунду пад час дэкодавання на звычайнай відеакарцы (без серіі Ti), якая мае обмежэння па потужнасці у 300 Вт. У этам кяле показана процедура встановлення без викорыстоўвання контейнераў, поясненыя тых оптымаізацый, якія спрыяюць такой швальнасці, а таксама паказана точка, дзе цей падход перестае быць эфектывным, ўбліжкі вы магчымае рашыць, чы падходзіць ён вашай роботе.

Два профілі запуску, паказаныя нижэй, прыменшуюць дужыну контексту зарады паралельнасці та швальнасці. Цыфры аплываюць з тэстаў на роботу з агентамі на аднай відеакарцы, таму спрыймайце іх як практычныя показнікі, а не гаранцыі.

| Config     | Context   | Parallel requests | My measured decode speed |
|------------|-----------|-------------------|--------------------------|
| CTX=fast   | 65,536    | 8                 | ~177 tok/s               |
| CTX=long   | 131,072   | 4                 | ~122 tok/s               |

Паколькі сервер адказвае API, сумэжным з OpenAI, яго можна падключыць да прыстрою для агента, такога як DeepSeek Harness, проста паказавшы кліенту базовую адресу у формате http://<host>:18020/v1 і задаўшы ключ-перавядчык. Падагенты можаць тады паралельна адправляць запиты да локальнай модэлі, якая адказвае з такой шыроцю, калі раней для этага была патрэбна апаратура датацентру.

Што на самай працы ёсць проект qwen38-27b-rtx3090

Проект знаходзіцца ў рэпозытарыі syv-ai/qwen38-27b-rtx3090. Це не новая модэль і не новы двухчынны механізм. Це форк, прыкреплены да версіі vLLM 0.28.0, адзінаковыя з наборам патчаў, скрыптав для переквантызаціі і профіляў запуску, чыя ўсходняя мета — адпрацоўваць гэтую спецыяльную гібрыдную модэлю на карце ў 24 ГБ і запускать яе з вялікай шыроцю.

Прадставленае Docker-образ, і docker compose --profile single up -d — гэта весь процес адсталявання, якщо вы задовольны викорыстаннем контэйнераў. Репазітарый таксама дазволяе выплявіць тыя ж крокі вручную ў віртуальным сераўысе Python, што і было выканана ў даным случае. Гэта дапамагае заставаць логі виднымі, утримвацься ад стварэння ўтолькі большога образа на дыску і лёгкае бачыць, якія змены відбуваюцца на кожным кроку.

Чаму показнік адноўы tok/s мае малая значэнне

Скораспрацоўнасць гэтага стаку сильна залежыць ад задачы. Стварэнне коду ведаецца быстро, напісання прозы без чытварнага канцэпту ўскладненяе процес, а відтворэнне тексту, які ўжо є ў запитах, ведаецца значна быстрей (у роздзеле пад назвай «Пошук і стварэнне проекту» пояснюецца прычына). Дакументацыя проекту таксама акцэнюе на гэтым: показначык скораспрацоўнасці для гэтага стаку нічога не значыць, якщо вы не ведаеце, які самэ запит яго створыў. Значэнне 177 tok/s было вымерана пад час працы агента; вашы сопаказы будуць залежаць ад таго, як выглядаюць вашы запиты, значна больш, чым ад випадку.

Інсталяцыя без Docker

Перш чым прыступіце, пераканайцеся, што у апаратнай часткі є:

  • Linux або WSL2 з картай RTX 3090 будзь-якага варіанту (важліва 24 GB VRAM)
  • Актуальны драйвер NVIDIA, каб nvidia-smi працаваў без памылак
  • Python 3.12 або новейшая версія, укладаючы ў сабе заголовкі для разработкі
  • Канцэлерыя CUDA 13, або прынеймна яе заголовкі (дывіцеся пра асаблівасці ў кроку 2)
  • Апошнё 60 ГБ вольнага прастору на дыску для модэляў і кеша
  • Практычны спосаб прыбліжэння да системных прабэральных умов — це дазволіць агенту для кодавання з доступам да шэлу (Claude Code, Codex, OpenCode або падобныя) кераваць установкай. Направіце яго на рэпазітарый і прабачце яму запусканне неабходных компонентаў на вашай карце 3090. Калі ўтворыцца проблема, агент чытае паведамленне пра адказку і рашае яе на месцы — будзь то установка python3.12-dev або libssl через apt, апдэйт драйвера чы змена канцэлерых CUDA. Чыгунам такі падход ператварае пошук неяўных пакетаў, які спачатку займае цэлы вечар на пошук у форумах, у звычную процедуру. Перагляньце, што запускае агент, як гэта робіцца з будзь-ям інструментам, які мае доступ да шэлу.

    Крок 1: клонаванне рэпазітарыя

    Спачатку запрашайце даны з рэпазітарыя і перайдзіце ў яго.

    git clone https://github.com/syv-ai/qwen38-27b-rtx3090
    cd qwen38-27b-rtx3090
    

    Шаг 2: створыце віртуальную среду і запытайце пакет vLLM з адначым версіяй

    Форк спецыяльна нацэлёваны на vLLM 0.28.0, таму што самэўсёледзеная версія, у якой спекулятивнае дэкодаванне DFlash2 стала часткаю асалоднага vLLM (з’едынена як PR #52816). Команды, прыведзеныя нижэй, ствараюць чыстую віртуальную среду і запытваюць самэўсёледзеную версію вядома ўжо разам з FlashInfer – інструментам для завантажэння з Hugging Face, ninja для будовы ядра і pandas.

    python3.12 -m venv venv
    venv/bin/pip install -U pip
    venv/bin/pip install vllm==0.28.0 huggingface_hub hf_transfer ninja \
      flashinfer-python flashinfer-cubin==0.6.13 pandas
    

    Два моманты тут лёгка можна неправильна зрозумець:

    • Не дазволяйце pip пераносіць flashinfer-python на іншую версію. Запускач задае значэнне FLASHINFER_DISABLE_VERSION_CHECK=1, а патчы былі перакананы на самэўсёледзенай паре версій.
  • DFlash2 пацэрк зразкаў скомпілюе ядро FlashInfer пад час выканання, і гэтае ядро змяшчае curand.h. Якщо у вашай установцы CUDA не ёсць заголовкаў curand, компіляцыя збываецца ў першы момент запуску, і сервер тыха пераходзіць на медленейшы альтэрнатыўны варіант. Расклад вычыслаў застаецца правільным, праходзьба дадзеных знижваецца прыблізна на 5%, а нічога ў лагах не паведамляе пра гэта. На Ubuntu з CUDA 13 установка libcurand-dev-13-0 через apt вырашае гэту проблему.
  • Другі пункт — гарны прыклад неудачы, яку ніякая перапаконтка стану не зможа выкрысці. Якщо вашы показнікі вялікія на калькіляцыйныя процэнты нижэй, спачатку пераканайцеся ў наявнасці гэтых заголовкаў.

    Шаг 3: завантажыце базовы пункт перапаконкі

    Выхадны пункт — пункт перапаконкі dbirks/Qwen3.8-27B-W4A16-AutoRound, розмерам прыблізна 19,5 GB. Актываўанне режыму перадачы Xet з высокай праходзьбай значна прышвартавае завантажэнне.

    HF_XET_HIGH_PERFORMANCE=1 venv/bin/hf download \
      dbirks/Qwen3.8-27B-W4A16-AutoRound \
      --local-dir models/Qwen3.8-27B-W4A16-AutoRound
    

    Шаг 4: падготавіце модэль

    Скрыпты ў prepare/ зменяюць пункт перапыткі. Яны переквантызуюць матрыцы усадкі вхідных і выходных даных, якія публічныя квантызаваныя пункты перапыткі залишаюць у повной точнасці, перабудуюць галоўную частку MTP навакол лексыкану, які болей падходзіць, а потым завантажаюць швайную версію плюс файл DFlash2 дыяграматара размерам 1,2 ГБ. Усё выконваецца на CPU, і кожны скрыпт завершаецца за калькі хвілін.

    M=models/Qwen3.8-27B-W4A16-AutoRound
    venv/bin/python prepare/quant_lm_head.py     $M
    venv/bin/python prepare/quant_embed.py       $M
    venv/bin/python prepare/quant_mtp.py         $M
    venv/bin/python prepare/build_draft_vocab.py $M --ids prepare/draft_vocab_ids.json
    venv/bin/python prepare/fetch_fast_variant.py
    venv/bin/python prepare/fetch_dflash2.py
    

    Шаг 5: застосаваць стак патчаў

    Дырэктарыя patches/ з’ядрае працоўнае месца па свайму мае апошней чырнацца .patch файлаў, якія абрабатваюць канектаванне прыемнікаў і квантызацыю, атэнцыю з роздзеленным KV для пераканання ў правамільнасці, выправкі кэрнелаў Marlin int8, процес стварэння DFlash2 і ўсё іншае. Порядак гэтых файлаў вызначаны ў patches/series. Апошней цикл адзьмяе каментары і порожнія лініі з гэтага файла і прыкладзе кожны патч да пакета vLLM, які знаходзіцца ў внутранім сэрварскам працоўнай месцы. Ён прахідзіць праз dflash2-backport.patch, які існуе толькі для версый vLLM, старэйшых за 0.28.0, калі DFlash2 яшчэ не быў натыўным.

    sed -e 's/#.*//' -e 's/^[[:space:]]*//;s/[[:space:]]*$//' -e '/^$/d' patches/series |
    while IFS= read -r name; do
      [ "$name" = "dflash2-backport.patch" ] && continue
      patch -p1 -d venv/lib/python3.12/site-packages/vllm < "patches/$name"
    done
    

    Патч, які не можа быць прыкладзены, практычна завжды указвае на несувязкі версый. Заўядоміце venv/bin/pip show vllm і пераканайцеся, што ён паказвае самэльва 0.28.0.

    Шаг 6: перакананне ў інсталяцыі

    Перш чым запускать ўсё, створыце ключ API і запрацаваце скрыпт верыфікацыі у режыме без з’ўязку. Ён пераканаецца, што кожны патч быў застосаваны і што модель мае праглядную структуру.

    openssl rand -hex 24 > api_key.txt
    bash verify.sh --no-server    # checks all patches applied + model shape correct
    

    Чысты результат значыць, што ваша установка збігаецца, байт за байтом, з тым варіянтом, проты якога пераканваліся адпаведальныя за прыстройку. Для самастоятельнага запуску, калі тонкія змены версій є постацей прычыной плутання, такая відтворнасць є надзвычайна ценной.

    Крок 7: запуск сервера

    Усе налаштаванні выконваюцца чераз зменныя сераўніка. Стандартная команда актывае функцыю DFlash2 і кэшаванне прыфіксаў на выбранай GPU; каментар паказвае, як перейсці на профіль дзяўнага контэксту або на профіль 245k пасля запуску kvarn/install.sh.

    CUDA_VISIBLE_DEVICES=0 SPEC=dflash2 PREFIX_CACHE=1 bash single-user/start_qwen.sh
    # add CTX=long for ~131k context (4 slots), or CTX=huge after kvarn/install.sh for 245k
    

    Заўжды ясна задаюце значэнне CUDA_VISIBLE_DEVICES. Інакше vLLM часта выбірае GPU з наявнасцю максымальнай колькасці вольной памяці, што на апаратазе з калькуляторамі GPU можа не быть той карты, якую вы хацелі. Ключ-несягач чытаецца з api_key.txt або з VLLM_API_KEY; задаюце яго перад тым, как адкрываць порт для доступу з-за меж localhost, таму што без ключа сервер прыме запиты без аутентыкаціі. Іншыя настройкі беруцца з .env. Чэрез калькі хвілі пасля запуску у вас будзе канцэнтры, сумяжны з OpenAI, які служыць для запуску модэлю 27B на адной карце, цена якой нижэй, чым ціна вжыванага веласипеда.

    Звычай швальнасці

    Адаптаванне готовага vLLM з квантызаванымі чэкпоінтамі спрацоўвае неэфектыва ў калькольных аспектах. Документ з оптымізацыями проекту (docs/optimizations.md у рэпазітарыі) описвае дзевяць змян; чатыры з іх даюць большую частку парадаксальных выгод.

    Квантызацыя эмбеддінгаў, якую всі працяжуць

    Qwen3.8-27B выкарыстоўвае нез’яеднаныя эмбеддінгі, тое ў значэнні окремыя табелі вхідных і выходных дадзеных па 2,5 ГБ кожная. Публічныя „квантызаваныя“ чэкпоінты залишаюць іх у формате bf16, галоўная прычына — незручнасць у квантызацыі. Скрыпты падготовкі перакладаюць іх у формат int8, чым вярнуецца 2,6 ГБ VRAM без значных падышэнняў у якосці. На карце на 24 ГБ гэтага прыблізна достатнька памяці для контэксту ўсёго ўзбочанага корыстніка.

    Іспытанне гібрыднай архітектуры

    У 64 слоях гэтага модэля толькі 16 ўскладненыя слояў уваги, паметкі якіх зрастае ў залежнасці ад контэксту. Рыхлыя 48 – это слоі Gated DeltaNet, якія ўжываюць дыяграму увагі лінейнага типу; стан кожной розмовы у іх мае фіксаваны размер, незалежна ад таго, чыя дужа розмовы складаецца з 100 чы ў 100 000 токэнаў. Версія stock vLLM зберагала гэты стан у формате fp32, што даўаў прыблізна 150 МБ на кожны запит, і не магла обрабатваць больш чым 37 запитоў адночасна, незважаючы на заданы ліміт у 64. Форк зберагае гэты стан у формате fp16; показнік перплексітэты застаецца тым жа з трохма дзесяткавымі знакамі, і всі заданыя рэзервуары стаюць доступнымі.

    DFlash2: стварэнне семі токэнаў за адну пераходзь

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

    Убудованы ў Qwen-е механізм MTP складае чатыры прыкладзеныя адна за іншай. У замене на яго выкарыстоўваецца DFlash2 — пяцьшаровы прыкладзальнік, який за адну паўтарэння без автарегрэсіі прыкладзае цэлы блок з семі токенаў, выкарыстоўваючы скрытыя станы, якія беруцца з пяці разных глęбэй целевага модэлю. Сам прыкладзальнік быў квантаваны з GPTQ з 3,85 ГБ да 1,19 ГБ, таму ён дзеліць памяць без сильной конкурэнціі за пропускную здатнась. Рэзультатам яе ёст каля трох токенаў за крок уместа аднаго. Паколькі стандартная спекулятивная дэкодаванне прымеўчвае або адхаляе токены-прыкладзы, каб фінальны распад выходу паспаўдаў толькі целеваму модэлю, прышвартаванне адбываецца без втрат; точнась GSM8K залічваецца на роўні 96–96,5% у всіх конфігурацыях, пра якія паведамляе репазітарый.

    Слоўнік прыкладзаў, створаны з сэрцаў выходу самага модэлю

    Разрабоўчык можа пропанаваць толькі токены, які існуюць у його скорачанай вокабулярной базе; все, што не ўключаецца ў яе, за прыродой адхіляецца. Пачатковая вокабулярная база была створана на адной з веб-стацыяў і пакрывала 92% токенаў, якія насправды генеруець гэты модель. Адпаведальныя за яго адтворэнне збіралі 5,4 мільйона токенаў з сэрвыса самага моделі і перзначылі вокабулярную базу на адной з гэтых даных, чым досяглі 97,5% пакрыцтва. Лячна гэта змена дадала адпаведны паўтарыць у роботе прыблізна на 10%, без дадатковага апарату і без змян у самай модэлі.

    Пошук токенаў для тексту, які цитуе модель

    Іштае тэхніка адказвае на найэкстремальныя значэння. Калі выходны тэкст павтарае матэрыял, які ўжо ўключаны ў запит, напрыклад, кантэнт коду, які трэба адредагаваць, або дакумент, які быў скопіяваны, гэтае рашэнне абходзіць процес стварэння тэксту і пропануе токены безпасова з кантэксту. Репродукаванне дакумента з 25 тыс. токенаў даходзіць да 381 ток/сэкунду на стандартнай апаратыроўцы. Агенты-кодавальніки большую частку свога часу прыдзельваюць на репродукаванне коду, які з’яўляўся за моменты раней у запите — гэта ідеальны случай для гэтай тэхніки, і гэта адна з прычын, чаму показнікі карыстоўвання агентамі є высокімі.

    Чаму падвоўленне кантэксту не выведае з RAM

    Застаўны запускчык для аднаго пользователя належна 65 тыс. елементаў кантэксту. Пераключэнне на CTX=long практычна падвойвае гэта значэнне да 131 тыс., і здаецца логічным спадзявацца на памятковую парадку на карце ў 24 ГБ. Аднак сервер запускаецца нормальна і працюе лишэнне сповольна. Некалкі дыяктаваў у дзействе прычыніць гэта.

    • Масы маюць фіксаваны розмер. З квантызацыяй W4A16 корпус модэлю займае або-альо 15 ГБ, незалежна ад дужыні контэксту.
    • База KV выдзеляецца аднойчы, у байтах. Перш чым прадасты які-небудзь трафік, форк выдзеляе фіксаваны обсяг памяці, прыблізна 5,2 ГiB, а vLLM фіксуе гэты результат, напрыклад "Размер кеша KV GPU: 136,429 токэнаў." Паколькі база выдзеляецца пад час запуску, яна альо паспяшае тады, альо сервер не можа запусціцца. Не існуе выдзелення памяці на кожны запрос, якое могла бы зазнаць неудачы пасеред завершэння задання агента.
  • Дзялёгі профіль выкарыстоўвае дышэўшыя токены, а не большую колькасць памяці. Стандартны профіль зберагае кэшы атанціі ў формате bf16, тады як параметр CTX=long зберагае іх у формате int8, чым прыблізна удвое зменшае вартасць кожнага токена. Тады тые ж 5,2 ГіБ можуць разместіць 136 429 токенаў уместо 68 605, удвое падвайчыўшы максимальны размер контексту да 131 тысячі. Разлік у парадоксальнасці, выкарыстоўванай вучыльнікам для аналогічнага тэксту, между гэтымі двумя профілямі становіць толькі 0,2%.
  • Большасць шароў не зрастае ў меру росту контексту. Толькі 16 шароў атанціі мяняюць сваю ўпорну велічыну залежна ад дужыны последовальнасці; 48 шароў DeltaNet застаюцься з фіксаваным станам. Таму дзялёгі контекст тут значна дышэўшы, чым у чыстаму трансфармере, і гэта ў значныяй меры адпаведае прычыне, чаму модель узагалі можа запісацца на аднай карцы.
  • Чаму ліміт становіць 131 072, а не 136 429

    Не весь ресурс бассейна можа быць выкорыстаны для кэшу запитоў. Кожны запит таксама патрэбуе свой стан DeltaNet фіксаванага размеру, а DFlash2 дадае ўсьмох спекулятивных слотаў для стану на кожны запит. Урачыстаючы чатыры вакантныя месцы ў дзейнасі з довгім профілем, запускач задае максымальны контэкст у розмере 131,072, што на адно 4% меней за ўместнасць бассейна, а рэштку выкарыстоўваецца для тых стораніц стану і для выравнавання блакоў. Самэ гэта запаса ўместнасці стоіць за абявай пра відсутнасць проблем з памэцю: пад час запуску пераканальваецца найболей вимоглівы сцэнарый — адзін запит максимальной дужыны, калі ўсе застаўшыяся месцы таксама ўжо выкорыстоўваюцца.

    Што вы замест таго аддаеце

    Для большэйшага контексту плата выкладваецца за скорасць, а не за збоі. Токены храняцца у формате int8, і кожны запит прыемніка забярае становыя сторункі з буфера, які тепер разделяецца межа меншым коллекціям. Колькасць паралельных слотоў зменшылася з 8 да 4, а швальдзеўкі декодавання знизіліся з апошней 177 да прыбліжна 122 ток/с. Карта можа выконваць больш за аднаковыя байты і плата за ўжоць выкладваецца за праўерхню обробкі, а не за выключэння.

    Дзе ёй не хапае: глыбокі контекст адной запиту

    Модель працюе найэфектывнейша з короткімі та сяроднімі контэкстамі, якія зазвычай викорыстоўваюцца агентамі. Адзін запит, які складаецца з 100 тысяч токенав, праявляе іншую дзейнасць. На апаратным з’яве 3090 адзін запит, декодаваны з короткім запросам, маў швайна 107 токенав/секунду, пры 10 тысячах токенав — 78 токенав/секунду, пры 43 тысячах — 38 токенав/секунду, а пад час 100 тысяч токенав — прыблізна 31 токан/секунду. Прычыной є ступень прийнятнасці запросу, якая зменшаецца з глыбай контэксту. У репазітарыі таксама спостерагаецца той самы эфект: ступень прийнятнасці залишаецца адносна стабільной на роўні 0,29 незалежна ад типу кэша, таму гэта ўласнасць самой моделі та глыбі контэксту, а не некальканая памялка.

    Для парадыгмы, фарк на базе llama.cpp на аднай групе карт падтрымлівае стабільныя 65–80 tok/с пры 150к контэкста. У яго няма модуля для прыбліжэннях, калі якіясь з іх паслабляюцца, і няма блока верыфікацыі, які б зупініў выплату, таму ён ніколі не ўзначайна шырокі, але таксама ніколі і не медленны. У таблицы нижчэй абодва варыянты паказаны паўшчызна; зверніце ўвагу, што дыапазон короткага контэкста vLLM сумішвае показнік ад одной просьбы з мерамі для агента з калькольнікаў.

    | Context depth   | vLLM fork (DFlash2) | llama.cpp ATX fork |
    |-----------------|---------------------|--------------------|
    | short (<4k)     | 107–177 tok/s       | 65–80 tok/s        |
    | ~10k            | ~78 tok/s           | 65–80 tok/s        |
    | ~43k            | ~38 tok/s           | 65–80 tok/s        |
    | ~100k           | ~31 tok/s           | 65–80 tok/s        |
    

    Практычная правіла выленяецца з гэтага. Якщо ваша робота адбываецца пры чытанні вельмі дзяўжай дакумента па-спаметну, llama.cpp є стабільнейшым варыянтом; пазнайомьцеся з нашым кансалтаментам па аддачы модэля Qwen3.8 MoE на RTX 3090s за дапамогою llama.cpp tensor offloading для кращага розумення гэтай альтернатывы. Якщо ж ваша робота складаецца з многа сяродняйшых кансэрвацый па програмаванні, фарк vLLM значна перадае.

    Чаму гэта падходзіць для агентных харнесаў

    Харнесы такія як Pi, Hermes чыра DeepSeek Harness не падтрымліваюць аднае розмову. За дапамогою сабагентаў яны ствараюць многа паралельных потакоў адразу, зазвычай пяць-дзванаццаць, кожны з якіх мае сярэдню дужыну; большасць з іх відмаўляецца аднаковы системны запрос і той самы контэкст кодавой базы. Гэта самэ ўсё тое навантажэння, для якаго быў налаштованы гэты форк:

    • Аб’ём обробкі растае разам з канкурантнасцю. Чатыры паралельныя стрэмы даўалі разам больш чым 300 tok/s на аднай карце 3090. Кантрольныя тэсты репазітарыю паказваюць 279-335 tok/s пры чатырох паралельных запитах, а пры восьмі з MTP — аж або 400 tok/s ў суме.
  • Кэшаванне прыфікса робіць спяльны контэкст практычна безкоштовным. За наявнасцю PREFIX_CACHE=1 64 запиты, якія выкарыстоўваюць спяльны системны прыказ 5,8 калякоў, выкананы за 17 секунд уместа 222 секунд у стандартных тэстах репазітарыя, пры чым сярэдняя вялічына затрымкі зменілася з 95 секунд на 8 секунд. Пасля першага запиту падагенты практычна не плацяюць за спяльныя інструкцыі. У гэтым гібрыдным модэле кэш таксама зберагае стан DeltaNet, а не толькі KV-данныя атэнцыі, і самэ гэта прычына таго, што наступны раунд обработкі дакумента з 24 калякоў трывае або-альо 1 секунду уместа 23.
  • Функцыя падбору тэкста паспелюе выходу агента. Процесы переработы, перапісву і рэдагавання разлічныя разы цитуюць свой вхідны тэкст, і самэ гэта прыводзіць да піку швайнасці 380+ калякоў/секунду.
  • Існуее меры. Пасля працы з апэксам чатыро потока дадзеных большага глубіны вы сталкватеце з абмежэннямі, якія вытыкаюцца з способу раздзелення ресурсаў, а не з самай вычысловай моці. У дасведчэннях чыста пазначаецца, што восьмі адночасныя запыткі з большага контэкста працуюць значна гіркая, чым чатыры, і гэта апісваецца як «не компроміс, а падтрымка». Апроекцыя системы, якая выкорыстоўвае працю апэксам чатыро паралельных процесаў середней глубіны, дазволяе адкрыць максымальны потэнціял карточкі. Чыба прыклад таго, што можа быць створана на местным апаратзе Qwen3.8-27B, паказана ў стацыі пра стварэнне местнай клонаваной версіі гры Angry Birds з апаратзам Qwen3.8-27B і Pi.

    Галоўныя выводы

    • Скорасць даеяеся за счыткам программнага забезпечэння: переквантызаваныя эмбеддінгі, стан DeltaNet у формате fp16, прыстрой DFlash2 на сэм токенаў і слоўнік, прылагоджаны да рэальных выходаў моделі. Сама GPU не змянюецца.
  • Зафіксавайце всі версіі, якіяя зафіксавае репазітары, установіце неабходныя загаловкі і запусціце verify.sh пры тым, як паверыць будзь-якіяя рэзультаты тэставання.
  • База дадзейнаў KV, выдазваная пад запуск, ператвараеіце праблемы з нехваткай памяці на рашэнне пад час запуску, а режым з глубокім аналізам дастае больш магчымасцей за счэт пераходу на кеш у формате int8, хоць це паграджваеся меншым колькістю слотоў і меньшай швальнасцю.
  • Спекуляўны дэкодаванне паслабляецца з аднойчынай глубінаю контэксту, таму для адзіных запыткаў, якіяя перавышаюць 40 к токэнаў, настройка llama.cpp можа быць кращай.
  • Установіце агента для керавання розмерам на чатырох працоўнікаў середняй глубіны з увёмканым кэшаваннем прыфіксаў, і завжды адзвярцайцеся пра праўераную швальнасць разам з навантажэнням, якое яе стварыла.
  • Для большых дакладнасцей у папкі docs/reproductions репазітарыя є прыметкі пра паследовы стварэнне сценарыю, якіяй не выкарыстоўвае Docker, на працоўніку 3090.