Repository navigation
XeStrata xe0.1.42
Warning
This is an old release. Get the latest from the latest release.
古いリリースです。最新版は最新のリリースから入れてください。
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
- Pick the package for your GPU from the table below and download it (with
SHA256SUMS). - Check it:
sha256sum -c SHA256SUMS --ignore-missing. - Install it:
sudo apt install ./xestrata-contrib-cuda13.1_0.1.42-1_amd64.deb(Ubuntu) orsudo dnf install ./xestrata-contrib-cuda13.4-0.1.42-1.x86_64.rpm(Fedora). - Run
xestrata --setupin a terminal. If a GPU library or the render group is missing, it prints the command that installs it and stops; run that command, thenxestrata --setupagain.
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-saveby 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=0turns 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-updatechecks 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_penaltyandrepeat_last_n, several API keys,reasoning_effortin 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_tokenswith 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-dirreads 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 のものかをパッケージで確かめています。
入れ方
- GPU に合うパッケージを下の表から選んで取ってきます(
SHA256SUMSも一緒に)。 sha256sum -c SHA256SUMS --ignore-missingで確かめます。- 入れます:
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)。 - 端末で
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% |