[Benchmark] GTX 1070 Ti 8 GB (sm_61), Gyro-S: works, and the VRAM reserve is what decides it
Maintainer thường phản hồi trong vòng 3 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- cpp, linux
- Lĩnh vực
- backend, documentation, performance
Hướng nghiên cứu
Start with docs/OLDER_GPUS.md, BENCHMARK_PROTOCOL.md, and MODELS.md; compare their existing guidance with the GTX 1070 Ti measurements and VRAM reserve warning in this report. Document the reserve and stalled requests, the larger-context result, and the role of the conversation cache where appropriate. Done when the requested guidance is consistent across the relevant docs and clearly distinguishes measured results from suggestions.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
docs/OLDER_GPUS.md says under the P40 section: "Not tested: any other sm_61 card (Tesla P4,
GTX 10 series)." This is that data point, and it grew a finding I did not expect.
A GTX 1070 Ti (8 GB, compute capability 6.1) runs Gyro-S on the released CUDA 12 engine. It
passes the standard protocol (21 of 21 required requests, 12 of 12 sanity checks), it
completes real multi-turn Hermes agent tasks with tool calls at a perfect score, and it loads in
13 to 18 seconds from a local NVMe.
The single most useful thing I can report is not a throughput number. It is that a request
which never returns is almost always the VRAM reserve, not the model, and your own log says so.
Details below. It cost me several hours of chasing page cache, swap and swappiness, all of which
looked plausible and were wrong.
Hardware and software
| GPU | NVIDIA GTX 1070 Ti, 8 GB, compute capability 6.1 |
| Driver | 580.173.02, CUDA 12.9 via the released ...-cuda-cuda12 engine |
| CPU | AMD Ryzen 9 3900X, 12 cores / 24 threads, AVX2, no AVX-512 |
| RAM | 32 GB DDR4, 16 GB zram swap (zstd) |
| Storage | Samsung 990 EVO+ NVMe, model files local |
| OS | Pop!_OS 24.04, kernel 6.17 |
Strata Terminal 0.2.7, engine 0.1.52 linux-x86_64-cuda-cuda12, released binary.
Model gyro Gyro-S (Qwen3.8-Flash-Next trellis pack), 58.5 GB plus the MTP layer, vision off.
32 GB of RAM is below the 64 GB your matrices recommend, so setup chose low-memory mode.
1. The VRAM reserve, which is the real finding
On this card the engine leaves very little VRAM free, and below a 512 MiB reserve the NVIDIA
driver pages GPU memory to system RAM. The request then does a burst of work and stops, with no
error, no CPU load, no GPU load, and no result. Your log states it plainly:
WARNING: only 218 MiB of VRAM free at the start of this request (below 512 MiB):
when the card is this full the driver can page GPU memory to system RAM, decode falls to a few
tok/s and a window may never finish (#2065).
Add --vram-reserve-mib 1344 to the config's args, or lower --max-context / --batch
Observed at 64K with no reserve: three separate requests produced no result after 150, 300 and
540 seconds. Host side, throughout: 22 GB of memory available, swap quiet, GPU spiking to 60 or
80 percent and then idle. Not a memory problem, not a model problem, and not a hang. The
suggestion in the warning is the fix, and it worked first time:
| free VRAM at load | 10K prompt result | |
|---|---|---|
| no reserve | 178 to 505 MiB | no result in 150 s, twice |
--vram-reserve-mib 1024 |
1,482 MiB | completed in 97 s |
--vram-reserve-mib 1344 |
1,164 MiB | stable |
Two suggestions for the docs: the reserve needs to scale with --max-context rather than being a
flat number, because at 48K a 1024 MiB reserve is generous and at 64K it is not enough (218 MiB
free was still measured with 1024 set at 64K). And a request that returns nothing at all is a
distinct outcome from a slow one, so it deserves a line in BENCHMARK_PROTOCOL.md; otherwise a
single-request measurement on a small card reports noise.
2. Prompt throughput, all at one fixed reserve of 1024 MiB
Unique prompts, max_tokens: 1, non-streaming, usage.prompt_tokens divided by wall time, three
warm-up requests discarded. tok/s.
| Prompt | 8K / int8 | 32K / q4_0 no reserve | 32K / q4_0 | 48K / q4_0 | 64K / q4_0 |
|---|---|---|---|---|---|
| ~4.6K warm | 203 | 203 | 133 | 168 | 89 |
| ~9K | 211 | 211 | 138 | 176 | 89 |
| ~18K | 211 | 211 | 144 | 173 | 91 |
| ~27K | n/a | 211 | 145 | 173 | 93 |
| ~37K | n/a | n/a | n/a | 105 | 93 |
Decode is 27 to 34 tok/s across all of them and is not affected by the window. Prompt speed is.
The reserve is not free, and I originally reported the wrong figure. My first report said
32K is "free". It was measured without a reserve, at 178 to 505 MiB free, which is inside the
stall band. With the reserve it is 133 to 145 tok/s. Please treat the earlier number as unsafe
rather than as a better result.
3. A larger window can be faster than a smaller one
This surprised me enough to run it twice. At the same 1024 MiB reserve, 48K beats 32K at every
prompt length that both can hold:
| Prompt | 32K + reserve | 48K + reserve |
|---|---|---|
| ~9K | 138 | 176 |
| ~18K | 144 | 173 |
| ~27K | 145 | 173 |
The reason looks like arithmetic rather than anything clever: the reserve is a fixed cost, and
it is taken out of expert slots. At 48K the KV cache is large enough that the reservation
displaces proportionally fewer slots, so the expert cache survives it better. If that holds
generally, a flat --vram-reserve-mib penalises small windows disproportionately, and the
guidance "take the largest context the card will accept" is the right advice for a small card.
4. The expert set does not fit the page cache, and that is the real prompt bottleneck
prefill plan: chunk 1280, ring 96 kept: file set 24.2 GiB does not fit the page cache 21.3 GiB
-> about 518.7 GB read from the drive per 32768-token prompt (26 chunks)
no option does better (the set cannot fit: fewest passes win)
That is your planner's own summary and it is the clearest explanation of small-card behaviour I
have seen. It also tells me --prefill tuning is pointless here, because the fewest-passes
option was already chosen.
The consequence for a 32 GB box: page cache tops out near 21 GiB and the set needs 24.2 GiB, so
it misses by about three gigabytes and every chunk re-reads the lot. Doubling RAM to 64 GB would
make the set fit, which should turn a 26-pass sweep into roughly one pass, about 519 GB of reads
per prompt down to about 24 GB. That, not a flag, is the upgrade this configuration needs, and
it is worth saying in the docs for anyone choosing between more VRAM and more RAM on a small card.
5. It runs real agent work, not just a benchmark harness
Your protocol's sanity checks are single-shot. The question I actually had was whether it can
drive a multi-turn agent with tools. Tested with a twelve-task agent harness where the score is
the artifact left on disk, not the prose, at 64K with a 1344 MiB reserve:
| Task | What it grades | Score | Turns | Tool calls | Wall |
|---|---|---|---|---|---|
| 01-json-extract | contract, format, arithmetic over a CSV | 1.00 | 12 | 10 | 340 s |
| 04-rename-safe | performed the file operations, did not assert them | 1.00 | 8 | 6 | 369 s |
| 05-memory-nodestructive | restraint; input hashes unchanged | 1.00 | 8 | 6 | 498 s |
| 09-long-context-retrieval | facts pulled out of a large log | 1.00 | 8 | 6 | 310 s |
Four of four, no harness faults, every run exit 0. The conversation cache carried each task: 12
turns cost 133,065 input tokens, about 11K per turn, because the first turn's prompt is reused
rather than re-read. Without that cache this would not have been viable at all, so if it is
optional on other models it is load bearing here.
I have not yet run the harder three (03-test-fix, 10-multifile-refactor,
06-multiturn-continuity). Four passes is a first pass, not a suite, and I would not claim more.
6. One note for anyone using Strata as an agent backend
Not a Strata issue, but it decides the question: Hermes Agent refuses any model reporting a
context window below 64,000 tokens (MINIMUM_CONTEXT_LENGTH in agent/model_metadata.py, raised
in agent/agent_init.py), and there is no override for an OpenAI-compatible endpoint. So 8K,
32K and 48K cannot host a Hermes agent at any speed, however well they measure, and only 64K is
usable. The child exits in under ten seconds with zero tokens and a misleading
"Execution outcome is unknown" message; the real ValueError is in
~/.hermes/logs/managed-worker.log, not in the harness log. Worth knowing before someone
concludes the engine is broken.
Requests
- Document the reserve interaction, and consider scaling it with context by default.
- Document that a never-finishing request is the VRAM reserve and where to look for it, in
OLDER_GPUS.mdnext to the sm_61 table. - Say in
MODELS.mdthat a small card should take the largest context it will accept, since a
bigger window measured faster here, not slower. - Keep the conversation cache loud in the docs. It is what makes agent loops possible on a slow
card.
The README.md and results.json from the standard run are saved locally and I can open a
results pull request with them if that is more useful than this write-up.
Background load
COSMIC desktop on the same card. No other GPU work. Power limit stock. Host swap is 16 GB zram
with vm.swappiness at 180 while measuring, which I mention only because it turned out not to
matter and someone else may lose time to it.
- Ngôn ngữ chính
- C++
- Star
- 11.6k
- Fork
- 1k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Niko1221/Strata
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Niko1221/Strata#4779 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
[Engine] the sampler and the HIP properties probe never call close() - ResourceWarning lines on every Minimal serving runtime runCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Niko1221/Strata#4630 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
[Engine] HIP source build fails since v0.1.45: `__shared__ alignas(16) int4` in iq_kernels.cu (expdec verify window)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Niko1221/Strata#4589 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
[Engine] strata-sycl.sh drops every STRATA_* variable whose value is 0, so the documented STRATA_PREFILL_MMQ=0 (FP16 prompt path) never reaches the engine; "off" works by accidentCó thể đã có người làm @ctr-137 đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của Niko1221/Strata
Issue tương tự
-
3.x bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
owasp-modsecurity/ModSecurity#3731 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Sendspin/sendspin-cpp-cli#111 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 74/100
scp-fs2open/fs2open.github.com#7984 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 4 ngày
-
core docs p3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
RunanywhereAI/runanywhere-sdks#1199 ·
Maintainer thường phản hồi trong vòng 1 ngày