Aktualności
RTX 3060 12 GB przy trwałym obciążeniu: 60–68 tok/s do ostatniego tokena
Zmierzyliśmy prędkość wewnątrz każdej długiej odpowiedzi, token po tokenie, zamiast uśredniania: 60–68 tok/s z rozumowaniem w ramach odpowiedzi tokena 8192 w kontekście 16K, 79–96 tok/s bez rozumowania i tylko około 8% straconych z monitu 1K do 30K. Wszystkie 145 plików RAW jest dostępnych do pobrania.
30 października 2026 roku przeprowadziliśmy długą serię pomiarów na naszym komputerze eksperymentalnym B2003 z RTX 3060 12 GB. Wynik: z włączonym rozumowaniem (domyślnie), Qwen3.8-Flash-Next IQ3_S na Strata utrzymuje 60–68 tok/s od pierwszego tokena do 8192 na monicie 16K, bez spadków. Z rozumowaniem działa z prędkością 79–96 tok/s. Prawie pełny kontekst kosztuje tylko około 8%: od podpowiedzi 1K do 30K mediana wzrasta z 88 do 84 tok/s.
Nasz wcześniejszy artykuł informował o dekodowaniu do 68 tok/s na tej karcie. Dwa pytania, które najczęściej zadaje się nam na temat X, dotyczą tego, czy ta prędkość utrzymuje się w długiej odpowiedzi, czy jest tylko szczytem rozgrzewki, oraz tego, czy wydajność utrzymuje się w drugiej połowie długiego kontekstu. Aby na nie odpowiedzieć, mierzyliśmy czas każdego tokena przesyłanego strumieniowo, zamiast uśredniać całą odpowiedź.
Sprawdziliśmy szybkość w przedziałach tej samej odpowiedzi, kontekst od 1K do 30K tokenów, zimną i ciepłą pamięć podręczną podpowiedzi, szybki i precyzyjny routing ekspercki, trzy typy treści (JSON, kod C, rosyjska proza techniczna), moc GPU, zegary i temperaturę oraz to, czy samo wyjście pozostało poprawne.
Konfiguracja
- Maszyna B2003: ASUS Pro Q870I-C, Intel Core Ultra 7 265, 2×24 GiB DDR5-5600.
- GPU: RTX 3060 12 GB (GA106), sterownik 615.71.10, GPU odblokowany, limit mocy 170 W.
- Przechowywanie: Lexar NM1090 PRO 2 TB NVMe (PCIe 5,0 ×4).
- System: Ubuntu 24.04.5, jądro 7.0.0-38.
- Silnik: Strata 0.1.52 (kompilacja f-027-rel).
- Model: Qwen3.8-Flash-Next-GSQ-RCO-IQ3_S (78 GiB, 2 odłamki).
--max-context 32768 --prefill 4096 --pool-workers 12 --spec 4 --spec-min-p 0.5
--kv int8 --kv-resident 32768 --conversation-cache-mib 1536
--resident-experts --resident-budget-gib 24
STRATA_UNBUFFERED_LOAD=1 STRATA_RESIDENT_HEADROOM_GIB=10
Metodyka
- Serwer nie eksponuje /nie tokenizuje, więc tokeny zostały policzone ze znaczników czasowych przesyłanych strumieniowo fragmentów SSE (1 fragment ≈ 1 token; sprawdź: 5478 fragmentów przeciwko 5479 tokenom w usage.completion_tokens) i zakotwiczone do dokładnej końcowej liczby tokenów. Nie używano słów i linijek.
- Monity zostały skalibrowane za pomocą sond przy użyciu max_tokenów: 1 (20.2 tokenów na zdanie wypełniające, 145 tokenów stałego narzutu); rzeczywisty rozmiar został sprawdzony pod kątem użycia.prompt_tokens.
- Długość odpowiedzi wynosiła 32768 minus podpowiedź minus margines, do 8192 tokenów; przy 30 000 to 2048 tokenów.
- Każdy kluczowy scenariusz został powtórzony co najmniej 3 razy; podajemy medianę, minimum i maksimum. Szum dekodowania wynosi ±20%, a szum wstępnego wypełnienia ±5%; mniejsze różnice nie zostały policzone jako wyniki.
- Telemetria sprzętu była rejestrowana co 3 sekundy (zegary, zasilanie, temperatura, wykorzystanie, VRAM, wolna pamięć ram, zamiana, liczniki odczytu NVMe). Wstępne wypełnienie, akceptacja projektu MTP, trafienia z pamięci podręcznej eksperta i odczyty poziomu plików pochodziły z dziennika silnika.
- Dwa tryby routingu eksperta: szybki (domyślny routing, poprzedni 1,5) i precyzyjny (WARSTWY_TRASY_POPRZEDNI=0). Tryby przełączano poprzez ponowne uruchomienie silnika.
- 4 wiersze w pliku trybu precyzyjnego zostały utworzone przez szybki silnik, ponieważ skrypt bloku został przepisany podczas cyklu. Są one wykluczone ze stołów i przechowywane w archiwum w takim stanie, w jakim są.
- Łącznie: 52 zmierzone przebiegi w 13 plikach JSONL (14 w trybie szybkim, 13 w trybie precyzyjnym i 25 wariantów: rozumowanie, ciepła pamięć podręczna, kod, proza, limit kontekstu, kalibracja) oraz 4 wykluczone wiersze.
Wyniki: szybkość wewnątrz odpowiedzi
Wartości w tok/s, mediana (min–max). Kontekstem jest rozmiar monitu w tokenach; odpowiedzią jest do 8192 tokenów (2048 przy 30K).
Tryb szybki, rozumowanie wyłączone
| Kontekst | Przebiegi | 0–0.5K | 0.5K–1K | 1K–2K | 2K–4K | 4K–6K | 6K–8K | Ogon | Pełna odpowiedź |
|---|---|---|---|---|---|---|---|---|---|
| 983–1516 | 3 | 86 (56–86) | 87 (87–88) | 86 (85–88) | 88 (88–90) | — | — | 92 | 88 (55–89) |
| 7865 | 2 | 84 (81–87) | 96 (93–99) | 94 | 95 (94–96) | — | — | 94 | 93 (93–94) |
| 15816 | 3 | 79 (77–88) | 86 (86–96) | 90 (90–96) | 92 (90–98) | 93 (93–96) | 93 (92–96) | 95 | 91 (90–96) |
| 23917 | 3 | 81 (77–85) | 86 (83–91) | 83 (81–92) | 90 (80–90) | 96 | — | 83 | 86 (80–92) |
| 30153 | 3 | 78 (77–78) | 86 (86–87) | 86 (85–88) | — | — | — | 86 | 84 (84–85) |
Tryb szybki, rozumowanie włączone (zachowanie domyślne)
| Kontekst | Przebiegi | 0–0.5K | 0.5K–1K | 1K–2K | 2K–4K | 4K–6K | 6K–8K | Ogon | Pełna odpowiedź |
|---|---|---|---|---|---|---|---|---|---|
| 15854 | 1 | 61 | 68 | 61 | 59 | 58 | 60 | 85 | 60 |
| 30191 | 1 | 66 | 56 | 65 | — | — | — | 96 | 63 |
Tryb precyzyjny, rozumowanie wyłączone
| Kontekst | Przebiegi | 0–0.5K | 0.5K–1K | 1K–2K | 2K–4K | 4K–6K | 6K–8K | Ogon | Pełna odpowiedź |
|---|---|---|---|---|---|---|---|---|---|
| 1011 | 2 | 27 (26–29) | 28 (26–29) | 27 (26–28) | 25 (24–26) | 25 (24–25) | 23 | 26 | 25 (25–26) |
| 7893 | 2 | 29 (29–30) | 30 (29–31) | 28 (24–31) | 27 (22–31) | 26 (21–31) | 27 | 24 | 26 (23–30) |
| 15814 | 3 | 29 (26–32) | 27 (25–32) | 26 (22–28) | 23 (20–24) | 23 (20–23) | 22 | 21 | 24 (21–24) |
| 23915 | 3 | 31 (30–32) | 32 (31–34) | 29 (26–31) | 25 (25–28) | 24 | — | 24 | 26 (26–29) |
| 30151 | 3 | 32 (28–32) | 32 (30–33) | 29 (29–30) | — | — | — | 29 | 30 |
W trybie szybkim prędkość jest płaska lub wzrasta w kierunku końca odpowiedzi (16K: 79 → 93, ogon 95). Spowolnienie w kierunku końca pojawia się tylko w trybie precyzyjnym: 29 → 22 na 8000 żetonów (−24%). Tryb precyzyjny z rozumowaniem przy 16K daje 25 tok/s dla całej odpowiedzi. Szybkie trasowanie jest 3,8× szybsze niż precyzyjne trasowanie.
Typ treści (tryb szybki, kontekst 16K)
| Zad. | Odpowiedź, żetony | Cała odpowiedź, tok/s | Zaakceptowano projekty MTP |
|---|---|---|---|
| Macierz rekordów JSON | 8192 | 91 (90–96) | 92% (90–98%) |
| Kod C | 7332 | 59 | 74% |
| Rosyjska proza techniczna | 4730 | 40 (40–43) | 38% (1327/3485) |
Różnice są kilkakrotnie większe niż szum dekodowania: przewidywalna struktura przyspiesza generowanie 2–2.3×, darmowa proza spowalnia. Jest to właściwość treści, a nie spowolnienie w czasie.
Wstępne wypełnienie, czas na pierwszy token i przypomnienie o pamięci podręcznej
| Sprawa | Podpowiedź, żetony | Wstępne napełnianie na zimno, tok/s | Zimny TTFT | Ciepły TTFT | Żetony wielokrotnego użytku |
|---|---|---|---|---|---|
| 1K | 983–1516 | 293 | 3.4–3.8 s | — | 0 |
| 8K | 7865 | 865 | 9.1–9.2 s | — | 0 |
| 16K | 15816 | 908 | 17.3–17.6 s | 0.2 s | 15 803 |
| 24K | 23917 | 914 | 25.4–26.3 s | — | 0 |
| 30K | 30153 | 892 | 33.6–34.5 s | 0.4 s | 30 141 |
Ciepła pamięć podręczna podpowiedzi usuwa prawie wszystkie wstępne wypełnienia (17,4 s → 0,2 s przy 16K, 33,6 s → 0,4 s przy 30K) i nie zmienia prędkości dekodowania. Trafienia pamięci podręcznej eksperta wynosiły 98,7-98,8% w trybie szybkim; odczyty NVMe wynosiły 1,1-3,3 GB/s, podczas gdy eksperci ładowali i prawie zero podczas stabilnego dekodowania JSON.
Po 30 151 podpowiedziach z limitem 32 768, silnik sam przycina budżet odpowiedzi i kończy się przystankiem lub długością, bez błędu. Tylko monit, który sam nie pasuje, zwraca błąd 400.
Sprzęt podczas biegu
| Blok | Moc | Temperatura | Zegar SM | VRAM | Zamiana | Odczyt NVMe |
|---|---|---|---|---|---|---|
| Tryb szybki | 162–169 W (max 170.2) | 74–76 °C | 1815–1875 MHz | 11 409–11 423 MiB | 0 | 0.2–4.7 GB/s (6.6) |
| Tryb precyzyjny | 88–105 W (max 167) | 62–71 °C | 1965–1972 MHz | 11 425 MiB | 0 | 1.6–2.3 GB/s (6.1) |
Zakresy w mierzonych blokach; wartości szczytowe w nawiasach. Tryb szybki jest ograniczony mocą GPU: przy maksymalnej mocy 170 W zegary spadają z 2160 MHz do 1815-1875 MHz przy 75 °C, bez dławienia termicznego, 11,4 z 12,3 GiB pamięci VRAM w użyciu i bez wymiany. W trybie precyzyjnym GPU pobiera około połowy mocy przy maksymalnych zegarach: czeka na ekspertów, a nie pracuje, dlatego prędkość spada.
Jakość wyjściowa
- Format JSON nie ulega uszkodzeniu: we wszystkich 12 cyklach odciętych przez limit każdy rekord pozostał ważny; tylko sama tablica pozostała niezamknięta.
- Instrukcja od samego początku podpowiedzi jest nadal wykonywana w 30K (reguła tag utrzymywana w ogonie, 50/50 i 22/22).
- Znacznik ze środka dokumentu jest przywoływany w 16K i 24K, ale tracony w 30K, w obu trybach.
- Główną słabością trybu fast jest powtarzanie encji na długich listach (26–28 unikalnych kodów z około 190) i jedna pętla 122 zduplikowanych linii w 30K. Tryb precyzyjny w 16K zachował 168/168 i 193/193 unikalnych, ale w 24K i 30K może również załamać się do 26–33 unikalnych kodów w serii.
- Kod C w trybie szybkim wytworzył 255 powtarzających się linii z 681, więc zadania kodowe w trybie szybkim nie są niezawodne.
Granice tego eksperymentu
Jedna maszyna i jedna kompilacja: wnioski dotyczące limitu mocy GPU i zasilania eksperckiego dotyczą tej karty z limitem 170 W i 12 GB pamięci VRAM. Tryby przełączano poprzez ponowne uruchomienie silnika, więc przebiegi w ramach jednego trybu następowały po sobie, a kolejność nie była w pełni zrandomizowana. Tryb precyzyjny z ciepłą pamięcią podręczną został uruchomiony raz, a tryb precyzyjny w 1K i 8K miał 2 powtórzenia zamiast 3.
Co to oznacza dla klienta Box
- Niedroga karta o pojemności 12 GB utrzymuje 60–68 tok/s dzięki długim odpowiedziom, nie tylko na początku.
- Długie dokumenty w kontekście kosztują niewielką szybkość, a na powtarzający się kontekst odpowiada się prawie natychmiast dzięki pamięci podręcznej podpowiedzi.
- Tryb jest wybierany dla każdego zadania: szybki dla danych strukturalnych, precyzyjny, gdy długie listy muszą pozostać unikalne; wygenerowany kod wymaga przeglądu.
Surowe dane
Wszystkie 145 plików tego eksperymentu jest dostępnych do pobrania: 13 plików wyników JSONL, 102 teksty odpowiedzi i rozumowania, telemetria sprzętu, dzienniki silnika, skrypty, stan systemu, oryginalny raport w języku rosyjskim i szkic postu w języku angielskim. Klucze dostępu, adresy wewnętrzne, nazwy użytkowników i ścieżki wewnętrzne zostały usunięte przed publikacją.