Skip to content

XeStrata xe0.1.42

Choose a tag to compare

@MistVVK MistVVK released this 11 Oct 14:10
· 1187 commits to main since this release

Warning

This is an old release. Get the latest from the latest release.
古いリリースです。最新版は最新のリリースから入れてください。

English | 日本語

English

Important

If you use a package of xe0.1.40.2.2 or earlier, update to this release.
A bug in the compiler that builds the packages (intel/llvm) put another GPU's machine code under some GPUs: on AMD gfx1030, gfx1101, gfx1201 and others, on NVIDIA sm_80, sm_86 and sm_89 were swapped. On such a GPU the engine can stop (ILLEGAL_INSTRUCTION on an RX 9070 XT, issue #7), run slowly or give wrong answers.
This release has the compiler fixed, and its packages were checked to carry each GPU's own machine code.

Install

  1. Pick the package for your GPU from the table below and download it (with SHA256SUMS).
  2. Check it: sha256sum -c SHA256SUMS --ignore-missing.
  3. Install it: sudo apt install ./xestrata-contrib-cuda13.1_0.1.42-1_amd64.deb (Ubuntu) or sudo dnf install ./xestrata-contrib-cuda13.4-0.1.42-1.x86_64.rpm (Fedora).
  4. Run xestrata --setup in a terminal. If a GPU library or the render group is missing, it prints the command that installs it and stops; run that command, then xestrata --setup again.

Note

Without an NVIDIA GPU, either CUDA version works the same.

GPU Ubuntu 26.04 Fedora 44
Recommended: Intel, AMD (RDNA2 or later), NVIDIA (Turing or later) xestrata-contrib-cuda13.1 xestrata-contrib-cuda13.4
Intel, AMD (RDNA2 or later), NVIDIA Pascal and Volta (P100, P40, GTX 10 series, V100 and others) xestrata-contrib-cuda12.4 none
  • There is no free-software-only package (xestrata-free) in this release; build it from the source as docs/BUILD.md describes.
  • The version changed, so conversations saved with --conversation-save by an earlier version are not read.

Faster

  • serve's decode when the experts do not fit VRAM: a missed expert that every token of a verify window routes at rank 7 or lower is neither read nor computed (upstream 0.1.42's default; on in XeStrata on AMD too). IQ3_XXS: RX 9060 XT +6 to 55% (+42 to 55% at 32K), RTX 4070 +8 to 25%, B70 −1 to +13%. The answers change a little (a KL as small as upstream measured). STRATA_ROUTE_TAIL_SKIP=0 turns it off.
  • More than 31 GiB of experts in RAM: their page-locking is taken in parts. UD-Q4_K_XL at 32K on the B70: prefill +17%, decode +14%.
  • The CPU/PCIe split of the missed experts: a measurement that moved from start to start gave some starts "every miss on the CPU", and the RX 9060 XT's 64K decode fell to 21 tok/s. Measured steadily now: 38 to 41 tok/s every start.
  • Long conversations' follow-ups: a short follow-up's way of reading is chosen from what each way took at a similar context length. On the RTX 4070 at 64K a follow-up's wait went from 505 to 304 ms.
  • A long prompt sent again: the tokenizer remembers repeated pieces; an 89K-token agent prompt from 0.32 to 0.07 s.

New

  • New release notice: the server checks GitHub for a newer release and shows it in the web UI's About; xestrata --check-update checks too.
  • Monitoring: a metrics endpoint in Prometheus' format, a conversation-cache card, the recent requests' prefill speed, AMD GPUs' load, VRAM, temperature and power.
  • API: a request's logit_bias, repeat_penalty and repeat_last_n, several API keys, reasoning_effort in the run config.
  • --aux-cpus (opt-in): moves the threads that are neither pool workers nor the host to spare CPUs.

Fixed

  • Parallel requests: two long requests and a short one no longer deadlock, and a request no longer ends up neither running nor waiting.
  • Thinking budget: kept below max_tokens with room for the answer, so a reply is not cut off while thinking.
  • Tool calls: keep-alives while the arguments are written, and a </think> quoted inside the thinking no longer ends it.
  • setup: the config is written through a temporary file, --gguf-dir reads the shard count from the file names, and a GGUF that cannot run gets the choices that can.

Speed against upstream

XeStrata xe0.1.42 against upstream v0.1.42 on the same GPU, with Qwen3.8-Flash-Next IQ3_XXS. generate reads a prompt of 1K to 262K tokens and writes 256 tokens; serve is a 32K conversation with strata --serve; everyday use is a Japanese chat (chat-ja) and a coding agent (agent) through serve/server.py.

Note

  • generate: temperature 0 (greedy). Within ±1% counts as ≈ equal.
  • serve and everyday use: temperature 0.7, each engine writing its own text, so a run can land about 10% off the median. Within ±1% for prefill and ±5% for the wait, decode and first token counts as ≈ equal.
  • generate is the median of two alternating runs, serve and everyday use of three.

Intel Arc Pro B70 (32 GB): upstream v0.1.42 is its sycl/ port

generate (temperature 0, tokens/s)

Type and length prefill XeStrata xe0.1.42 prefill upstream v0.1.42 Difference decode XeStrata xe0.1.42 decode upstream v0.1.42 Difference
IQ3_XXS 1K 696 518 ✅ ×1.3 83.1 34.0 ✅ +144%
IQ3_XXS 4K 1,433 730 ✅ ×2.0 89.0 36.3 ✅ +145%
IQ3_XXS 32K 2,271 735 ✅ ×3.1 85.1 28.5 ✅ +199%
IQ3_XXS 64K 1,974 1,014 ✅ ×1.9 79.4 28.0 ✅ +184%
IQ3_XXS 128K 1,976 952 ✅ ×2.1 76.1 17.0 ✅ +348%
IQ3_XXS 262K 1,904 825 ✅ ×2.3 76.9 17.9 ✅ +330%

serve and everyday use (temperature 0.7)

Measure XeStrata xe0.1.42 upstream v0.1.42 Difference
serve 32K first prefill (tok/s) 2,297 731 ✅ ×3.1
serve 32K wait for a follow-up (ms) 226 381 ✅ −41%
serve 32K decode (tok/s) 80.0 37.9 ✅ +111%
chat-ja first token (s) 0.62 not measurable (too slow) ✅
chat-ja decode (tok/s) 62.3 not measurable (too slow) ✅
agent first token (s) 3.21 not measurable (too slow) ✅
agent prefill (tok/s) 1,218 not measurable (too slow) ✅
agent decode (tok/s) 71.9 not measurable (too slow) ✅

In everyday use upstream was stopped at 10 tok/s or less.

NVIDIA GeForce RTX 4070 (12 GB): upstream v0.1.42 is its CUDA build

generate (temperature 0, tokens/s)

Type and length prefill XeStrata xe0.1.42 prefill upstream v0.1.42 Difference decode XeStrata xe0.1.42 decode upstream v0.1.42 Difference
IQ3_XXS 1K 296 258 ✅ ×1.1 54.5 46.7 ✅ +17%
IQ3_XXS 4K 532 526 ✅ ×1.01 58.2 46.1 ✅ +26%
IQ3_XXS 32K 1,141 1,142 ≈ equal (−0.1%) 58.4 50.2 ✅ +16%
IQ3_XXS 64K 1,066 1,069 ≈ equal (−0.3%) 52.5 49.7 ✅ +6%
IQ3_XXS 128K 1,041 1,042 ≈ equal (−0.1%) 48.1 40.4 ✅ +19%
IQ3_XXS 262K 997 997 ≈ equal (0.0%) 47.7 43.9 ✅ +9%

serve and everyday use (temperature 0.7)

Measure XeStrata xe0.1.42 upstream v0.1.42 Difference
serve 32K first prefill (tok/s) 1,138 1,136 ≈ equal (+0.2%)
serve 32K wait for a follow-up (ms) 272 309 ✅ −12%
serve 32K decode (tok/s) 61.0 56.9 ✅ +7%
chat-ja first token (s) 0.76 0.90 ✅ −16%
chat-ja decode (tok/s) 55.0 56.8 ≈ equal (−3%)
agent first token (s) 7.44 7.45 ≈ equal (−0.1%)
agent prefill (tok/s) 536 535 ≈ equal (+0.2%)
agent decode (tok/s) 62.7 62.3 ≈ equal (+1%)

AMD Radeon RX 9060 XT (16 GB): upstream v0.1.42 is its HIP build

generate (temperature 0, tokens/s)

Type and length prefill XeStrata xe0.1.42 prefill upstream v0.1.42 Difference decode XeStrata xe0.1.42 decode upstream v0.1.42 Difference
IQ3_XXS 1K 524 297 ✅ ×1.8 44.3 33.8 ✅ +31%
IQ3_XXS 4K 759 380 ✅ ×2.0 44.1 32.1 ✅ +37%
IQ3_XXS 32K 843 384 ✅ ×2.2 42.1 39.7 ✅ +6%
IQ3_XXS 64K 845 375 ✅ ×2.3 43.2 31.2 ✅ +38%
IQ3_XXS 128K 830 360 ✅ ×2.3 40.4 38.3 ✅ +5%
IQ3_XXS 262K 804 342 ✅ ×2.4 36.9 29.5 ✅ +25%

serve and everyday use (temperature 0.7)

Measure XeStrata xe0.1.42 upstream v0.1.42 Difference
serve 32K first prefill (tok/s) 843 383 ✅ ×2.2
serve 32K wait for a follow-up (ms) 384 475 ✅ −19%
serve 32K decode (tok/s) 44.7 32.1 ✅ +39%
chat-ja first token (s) 0.98 1.29 ✅ −24%
chat-ja decode (tok/s) 41.3 31.1 ✅ +33%
agent first token (s) 5.73 11.61 ✅ −51%
agent prefill (tok/s) 673 339 ✅ ×2.0
agent decode (tok/s) 38.2 32.6 ✅ +17%

日本語

Important

xe0.1.40.2.2 までのパッケージを使っている人は、必ずこの版に更新してください。
パッケージを作るコンパイラ(intel/llvm)の不具合で、一部の GPU に別の GPU 向けの機械語が入っていました。AMD では gfx1030・gfx1101・gfx1201 など、NVIDIA では sm_80・sm_86・sm_89 が入れ替わっていました。その GPU では、止まる(RX 9070 XT で ILLEGAL_INSTRUCTION、issue #7)か、遅いか、答えがおかしくなることがあります。
この版はコンパイラを直してあり、各 GPU 向けの機械語がその GPU のものかをパッケージで確かめています。

入れ方

  1. GPU に合うパッケージを下の表から選んで取ってきます(SHA256SUMS も一緒に)。
  2. sha256sum -c SHA256SUMS --ignore-missing で確かめます。
  3. 入れます: sudo apt install ./xestrata-contrib-cuda13.1_0.1.42-1_amd64.deb(Ubuntu)か sudo dnf install ./xestrata-contrib-cuda13.4-0.1.42-1.x86_64.rpm(Fedora)。
  4. 端末で xestrata --setup を実行します。足りない GPU のライブラリと render グループは、入れるコマンドを表示して止まるので、それを実行してからもう一度 xestrata --setup を実行します。

Note

NVIDIA の GPU を使わない場合は、どちらの CUDA のバージョンを使っても変わりありません。

GPU Ubuntu 26.04 Fedora 44
おすすめ: Intel、AMD(RDNA2 以降)、NVIDIA(Turing 以降) xestrata-contrib-cuda13.1 xestrata-contrib-cuda13.4
Intel、AMD(RDNA2 以降)、NVIDIA の Pascal と Volta(P100、P40、GTX 10 シリーズ、V100 など) xestrata-contrib-cuda12.4 なし
  • 自由ソフトウェアだけで動かす版(xestrata-free)は付けていません。docs/BUILD.ja.md の手順でソースから作れます。
  • 版が変わったので、前の版で --conversation-save に保存した会話は読み込めません。

速くなったところ

  • serve の decode(VRAM に収まらないとき): 検証の窓のどのトークンも順位 7 以下でしか選ばない、VRAM にないエキスパートを読まず計算もしません(upstream 0.1.42 の既定。XeStrata では AMD でも既定)。IQ3_XXS で RX 9060 XT +6〜55%(32K で +42〜55%)、RTX 4070 +8〜25%、B70 −1〜+13%。答えは少し変わります(KL は upstream の測定と同程度)。STRATA_ROUTE_TAIL_SKIP=0 で切れます。
  • RAM のエキスパートが 31 GiB を超えるとき: ページ固定を分けて取るようにしました。B70 の UD-Q4_K_XL の 32K で prefill +17%、decode +14%。
  • 外れたエキスパートの CPU と PCIe への分け方: 起動ごとの測定のぶれで「全部 CPU」になり、RX 9060 XT の 64K の decode が 21 tok/s まで落ちる起動がありました。測り方を直して、毎回 38〜41 tok/s。
  • 長い会話の続き: 短い続きの読み方を、文脈の長さごとの実測で選びます。RTX 4070 の 64K で、続きの待ちが 505 → 304 ms になる回がありました。
  • 送り直された長いプロンプトの読み込み: トークナイザーが繰り返す断片を覚え、89K トークンのエージェントのプロンプトが 0.32 → 0.07 秒。

新しい機能

  • 新しいリリースの知らせ: サーバーが GitHub の新しいリリースを調べ、Web の About に出します。xestrata --check-update でも確かめられます。
  • モニター: Prometheus の形のメトリクスの口、会話キャッシュのカード、最近の要求の prefill の速さ、AMD の GPU の負荷・VRAM・温度・電力。
  • API: 要求の logit_bias、repeat_penalty・repeat_last_n、複数の API キー、実行設定の reasoning_effort。
  • --aux-cpus(opt-in): プールでもホストでもないスレッドを空いた CPU へ移します。

直ったこと

  • 並列の要求: 長・長・短の 2 件で止まる件、実行中でも待ちでもない要求が残る件を直しました。
  • 考えの予算: 答えの分を残して max_tokens 以下に抑え、考えている途中で返事が切れないようにしました。
  • 道具の呼び出し: 引数を書く間もキープアライブを送り、考えの中で引用した </think> で考えを終わらせません。
  • setup: 設定は一時ファイル経由で書き、--gguf-dir はシャードの数をファイル名から読み、動かせない GGUF は使える選択肢を示します。

upstream との速さの比較

XeStrata xe0.1.42 と upstream v0.1.42 を、同じ GPU で Qwen3.8-Flash-Next の IQ3_XXS で比べました。generate は 1K〜262K のプロンプトを読んで 256 トークン書く速さ、serve は strata --serve の 32K の会話、通常使用は serve/server.py 経由の日本語のチャット(chat-ja)とコーディングエージェント(agent)です。

Note

  • generate:温度 0(greedy)。差が ±1% 以内なら ≒ 同等です。
  • serve と通常使用:温度 0.7 で、それぞれのエンジンが自分の文を書くので、1 回ごとに中央値から 10% 前後ずれることがあります。差が prefill は ±1% 以内、待ち・decode・最初のトークンは ±5% 以内なら ≒ 同等です。
  • generate は交互に 2 回ずつ、serve と通常使用は交互に 3 回ずつ測った中央値です。

Intel Arc Pro B70 (32 GB): upstream v0.1.42 は sycl/ 版

generate(温度 0、トークン/秒)

形式・長さ prefill XeStrata xe0.1.42 prefill upstream v0.1.42 差 decode XeStrata xe0.1.42 decode upstream v0.1.42 差
IQ3_XXS 1K 696 518 ✅ 1.3 倍 83.1 34.0 ✅ +144%
IQ3_XXS 4K 1,433 730 ✅ 2.0 倍 89.0 36.3 ✅ +145%
IQ3_XXS 32K 2,271 735 ✅ 3.1 倍 85.1 28.5 ✅ +199%
IQ3_XXS 64K 1,974 1,014 ✅ 1.9 倍 79.4 28.0 ✅ +184%
IQ3_XXS 128K 1,976 952 ✅ 2.1 倍 76.1 17.0 ✅ +348%
IQ3_XXS 262K 1,904 825 ✅ 2.3 倍 76.9 17.9 ✅ +330%

serve と通常使用(温度 0.7)

計測 XeStrata xe0.1.42 upstream v0.1.42 差
serve 32K 最初の prefill (tok/s) 2,297 731 ✅ 3.1 倍
serve 32K 会話の続きの待ち (ms) 226 381 ✅ −41%
serve 32K decode (tok/s) 80.0 37.9 ✅ +111%
chat-ja 最初のトークン (s) 0.62 計測不能(低速) ✅
chat-ja decode (tok/s) 62.3 計測不能(低速) ✅
agent 最初のトークン (s) 3.21 計測不能(低速) ✅
agent prefill (tok/s) 1,218 計測不能(低速) ✅
agent decode (tok/s) 71.9 計測不能(低速) ✅

通常使用の upstream は、10 tok/s 以下に落ちたので止めました。

NVIDIA GeForce RTX 4070 (12 GB): upstream v0.1.42 は CUDA 版

generate(温度 0、トークン/秒)

形式・長さ prefill XeStrata xe0.1.42 prefill upstream v0.1.42 差 decode XeStrata xe0.1.42 decode upstream v0.1.42 差
IQ3_XXS 1K 296 258 ✅ 1.1 倍 54.5 46.7 ✅ +17%
IQ3_XXS 4K 532 526 ✅ 1.01 倍 58.2 46.1 ✅ +26%
IQ3_XXS 32K 1,141 1,142 ≒ 同等(−0.1%) 58.4 50.2 ✅ +16%
IQ3_XXS 64K 1,066 1,069 ≒ 同等(−0.3%) 52.5 49.7 ✅ +6%
IQ3_XXS 128K 1,041 1,042 ≒ 同等(−0.1%) 48.1 40.4 ✅ +19%
IQ3_XXS 262K 997 997 ≒ 同等(0.0%) 47.7 43.9 ✅ +9%

serve と通常使用(温度 0.7)

計測 XeStrata xe0.1.42 upstream v0.1.42 差
serve 32K 最初の prefill (tok/s) 1,138 1,136 ≒ 同等(+0.2%)
serve 32K 会話の続きの待ち (ms) 272 309 ✅ −12%
serve 32K decode (tok/s) 61.0 56.9 ✅ +7%
chat-ja 最初のトークン (s) 0.76 0.90 ✅ −16%
chat-ja decode (tok/s) 55.0 56.8 ≒ 同等(−3%)
agent 最初のトークン (s) 7.44 7.45 ≒ 同等(−0.1%)
agent prefill (tok/s) 536 535 ≒ 同等(+0.2%)
agent decode (tok/s) 62.7 62.3 ≒ 同等(+1%)

AMD Radeon RX 9060 XT (16 GB): upstream v0.1.42 は HIP 版

generate(温度 0、トークン/秒)

形式・長さ prefill XeStrata xe0.1.42 prefill upstream v0.1.42 差 decode XeStrata xe0.1.42 decode upstream v0.1.42 差
IQ3_XXS 1K 524 297 ✅ 1.8 倍 44.3 33.8 ✅ +31%
IQ3_XXS 4K 759 380 ✅ 2.0 倍 44.1 32.1 ✅ +37%
IQ3_XXS 32K 843 384 ✅ 2.2 倍 42.1 39.7 ✅ +6%
IQ3_XXS 64K 845 375 ✅ 2.3 倍 43.2 31.2 ✅ +38%
IQ3_XXS 128K 830 360 ✅ 2.3 倍 40.4 38.3 ✅ +5%
IQ3_XXS 262K 804 342 ✅ 2.4 倍 36.9 29.5 ✅ +25%

serve と通常使用(温度 0.7)

計測 XeStrata xe0.1.42 upstream v0.1.42 差
serve 32K 最初の prefill (tok/s) 843 383 ✅ 2.2 倍
serve 32K 会話の続きの待ち (ms) 384 475 ✅ −19%
serve 32K decode (tok/s) 44.7 32.1 ✅ +39%
chat-ja 最初のトークン (s) 0.98 1.29 ✅ −24%
chat-ja decode (tok/s) 41.3 31.1 ✅ +33%
agent 最初のトークン (s) 5.73 11.61 ✅ −51%
agent prefill (tok/s) 673 339 ✅ 2.0 倍
agent decode (tok/s) 38.2 32.6 ✅ +17%