“End-to-end” is not about pretraining — it is about which loop actually closes
Start by crossing something out. The phrase “end-to-end” usually drags along a picture of a full vertical from silicon to product, and that picture is what makes the conversation pointless. The public record is thin: in the June 2026 TOP500 list Russia has five systems totalling roughly 69 PFlop/s, all of them V100- and A100-era machines. That silence has to be read correctly: it means there is no publicly benchmarked national-scale cluster on newer accelerators, not that no such accelerators exist in the country.
The record on what is actually trained in Russia is thinner still. The only detailed hardware disclosures are 96 A100 accelerators for an 8-billion-parameter model in 2024, and four nodes of eight H100s for the SFT and DPO stages in the T-pro 2.0 recipe. Both numbers describe post-training, not pretraining. The GigaChat family is trained from scratch, but training compute is undisclosed for every version, so the compute-to-capability ratio cannot be computed.
Remove pretraining and a perfectly workable loop remains: open base → post-training → harness and tools → evals and environments → traces → and back into post-training. Five of its links are local. The sixth is someone else’s open-weight release, and that dependency gets its own section below. The hardware constraint, meanwhile, does not cap reachable quality — it taxes the number of passes: the only verified published Russian price list implies roughly triple the median of niche foreign providers and about 1.5x a large hyperscaler’s list price. An experiment costing three times more is a tax on iteration count.
An evidence class for every number
Half the public numbers in this field are marketing, so every figure below should be mentally filed into one of three columns.
| Class | What belongs here | What to do with it |
|---|---|---|
| Primary source | Peer-reviewed papers, reports with disclosed numbers, licence texts, official tariffs, and TOP500 lists | Safe to build an argument on |
| Vendor claim | Figures from company blogs and model cards: speed-ups, MFU, accepted-code shares, productivity gains | Directional signal, not a measurement |
| Source-based report | Agency and trade-press reporting citing unnamed sources: procurement, schedules, plans | A market snapshot and nothing more |
The compute-allocation doctrine matters more than the amount of compute
The single most useful number in this field was published by DeepSeek about itself. The V3 report gives a cost table: pretraining 2,664K GPU-hours, context extension 119K, post-training 5K. Inside one model that is roughly 500 to 1. It is self-reported, it covers only the final run, and it excludes prior research and failed attempts. But the planning input is the ratio, not the sum: if you cannot fund the first column, your entire product surface is decided in the third.
Two independent results confirm this from either side. In the peer-reviewed DeepSeek-R1 paper reinforcement learning lifts AIME 2024 from 15.6% to 77.9% — on top of an existing base model and for a fraction of its cost (the base itself is not included in that figure, and this must be said out loud). And in February 2026 Cursor reported that post-training compute for Composer 1.5 exceeded the compute used to pretrain its base model. The inversion is now explicit.
Meanwhile the entry ticket keeps rising: Epoch AI estimates final-run cost growing about 2.4x per year. That curve structurally excludes any player without hyperscaler-grade capital — not because the team is worse, but because the ticket compounds faster than any plausible procurement ramp. Reinforcement learning, by contrast, has stopped being a craft: work on scaling RL compute fits sigmoidal curves and predicts the outcome of a 100,000 GPU-hour run. That turns RL into a budgetable line item.
The cheapest win, though, is not in training at all — it is in the tokenizer. In the T-pro 2.0 recipe, replacing 34,000 low-frequency non-Cyrillic tokens with Cyrillic ones at a fixed vocabulary size drops tokens per word from 3.12 to 2.38, and raises the share of Russian words fitting in two tokens from 38.2% to 60.1%. That is roughly a quarter less compute on the same Russian text, in both training and inference — a discount denominated in exactly the currency that is scarce.
priority 1 — serving · priority 2 — post-training and environments · priority 3 — tokenizer and data · pretraining from scratch only for whoever has already demonstrated a multi-trillion-token run
Training architecture is chosen by communication volume, not by quality alone
The canonical example of an interconnect deficit migrating into model architecture again comes from DeepSeek. In a separate paper they describe how a halved inter-accelerator bandwidth was compensated for beyond the network: latent attention that shrinks the key-value cache several-fold, routing capped at four nodes per token, FP8 training, and hand-written communication kernels occupying only 20 streaming multiprocessors. The network deficit was answered in the model, not only in the fabric.
Huawei tells a similar story. In Pangu Ultra a dense 135-billion-parameter model was trained on 8,192 Ascend accelerators with only 200 Gbps of inter-node fabric, at a claimed utilization above 52%. But the honest counterpoint is published by the same company: Pangu Ultra MoE at 718 billion parameters on 6,000 accelerators reaches only 30%. Sparsity does not always pay off — and these figures are vendor claims.
The most applicable line of work is training with infrequent synchronization. DiLoCo demonstrates about 500x less communication at comparable quality; Streaming DiLoCo cuts transmitted bits 400x and peak bandwidth 8x. The temptation to declare the problem solved is strong, so here is the counterweight immediately: per Epoch AI, decentralized runs sit roughly 300x below the frontier, and the bandwidth-reduction techniques themselves cost quality. The conclusion is narrow and therefore useful: infrequent synchronization is a way to put a fragmented fleet to work on post-training and mid-scale jobs, not a way to reach the pretraining frontier.
One more hard constraint shapes practice: the quantization format is chosen by the accelerator generation, not by engineering preference. On Ampere, FP8 remains a memory-saving trick and buys no arithmetic speed-up, so the working choice there is INT8 and four-bit weights. A mixed fleet means assembling different artifacts of the same model for different generations.
On a non-expandable fleet, serving efficiency is a product decision
When the fleet cannot grow, every throughput multiple is equivalent to a purchase that will not happen. The order of magnitude is set by two published results: paged attention gives a two-to-fourfold gain at equal latency, and splitting the prefill stage into chunks yields between 2.6x and 5.6x more served load under a tail-latency constraint. That is a floor, not a ceiling: a stack still using static request batching is losing multiples, not percentages.
The next largest lever is cache-aware routing. In measurements of one open router, accurate prefix accounting moved time-to-first-token by orders of magnitude, simply because the same prefix stopped being duplicated across replicas. Beyond that lies tiering the key-value cache out of fast memory into RAM and onto disk; in DeepSeek's own publication a cached token costs roughly ten times less than an uncached one.
Two techniques deserve conscious handling, because they attract the most confusion. Speculative decoding buys interactivity, not capacity: the gain is large at concurrency of one and nearly vanishes under high parallelism, so the correct posture is adaptive depth. And splitting prefill and decode across separate pools is, by its own authors' admission, a technique for hundreds and thousands of accelerators; for a small fleet the sensible default remains colocation.
There is a strategic asymmetry here worth remembering. When Huawei published CloudMatrix384, the numbers for serving someone else's open model on its own silicon turned out to be quite publishable — in a period when training on that same silicon went considerably worse. Serving tolerates a weak network, tolerates restarts, and scales by adding racks. Large synchronous training tolerates none of that. For a country with a constrained fleet, this means the serving layer is the first one to close.
The harness is the highest-leverage layer: it costs taste, not accelerators
There is one measurement worth keeping in mind during any conversation about a local stack. In a controlled three-harness by three-model grid, the outcome variance contributed by the harness was 18.48 against 2.37 from the model — a ratio of 7.8. In a separate benchmark, the gap between the best and worst harness on identical tasks and the same model pool reached 23.8 percentage points.
What matters most, though, is not the magnitude but the asymmetry inside it: both papers note that stronger models show less variance across harnesses. In other words, a weaker model is more sensitive to harness quality, not less. For a player who is knowingly not running a frontier model, that is the best possible news: the layer where the most can be won costs engineering taste and no compute at all.
The largest Russian vendor has, incidentally, already voted for this conclusion with its feet. Yandex SourceCraft CLI ships no proprietary harness — it runs OpenCode built in under an MIT licence, with the company's engineering going into integration with its own models, platform tools, and skills. That is a strong argument for adapting rather than rewriting at the harness layer.
What in the harness actually governs capacity is visible in the characterization of agentic traces: an input-to-output ratio around 294 to 1, the overwhelming majority of input tokens hitting the prefix cache, and a hit rate that drops noticeably on a new user message compared with a continuation after a tool result. Hence a concrete list of decisions, none of which requires compute: prefix stability and ordering, the shape and volume of tool results, the context-truncation policy, the cache retention horizon, and routing between models of different sizes. Naive context truncation destroys the very asset your capacity rests on.
The layer everyone forgets: the substrate
An agent that builds a project, installs dependencies, and runs tests inherits the reliability of git clone and pip install. In 2026 that stopped being a theoretical concern: per independent measurement data, the share of failed connections to the largest code host from Russian networks rose from about 4% to 16% in May, and in June the main Python package repository was unreachable for a day. The industry's answer was in-country mirrors of package registries. The design conclusion is simple: before tuning harness quality, make the dependency and container planes that tool calls hit resolve deterministically.
And a correction to the optimism straight away: in a survey of large customers, Russian development tools scored an average of 5.8 out of 10, and about 70% of respondents keep using foreign platforms in parallel. Corporate code sits neither cleanly on-premises nor cleanly in a domestic stack — it is split, and a harness designed for one clean environment will underperform its spec.
Traces, evals, and environments are the one asset that cannot be rented
Weights can be downloaded, the serving engine taken open-source, the harness adapted. Traces from your own product, evals on your own tasks, and environments reproducing your own work can be neither bought nor rented. This is the only layer where a local player is structurally stronger than any external vendor — which is exactly why it should be built first.
An environment is a concrete thing: a repository snapshot, a task statement, a verifier withheld until scoring time, and a reward. The public scaling axis has moved precisely here — from 20,000 parallel environments at Qwen to 807,693 environments automatically constructed from real pull requests. The economics happen to suit a hardware-poor player: per Epoch AI a task costs $200–2,000 and represents labour rather than compute, while the run itself is cheap — in the open DeepSWE experiment 64 accelerators over six days reached 42.2% on SWE-bench Verified. The environment corpus is a permanent, labour-intensive asset; the run is a one-off, schedulable expense.
The Polar work deserves separate mention: an agent can be RL-trained on top of someone else's unmodified harness by intercepting the exchange at the model-API boundary. In the published measurements this lifted one agent on SWE-bench Verified from 3.8% to 26.4% without a single edit to harness code. The practical implication for a local player is large: owning the harness and owning the training can be decoupled.
The value of your own evals is rising for an external reason. In February 2026 OpenAI stopped reporting SWE-bench Verified: models reproduced the reference patch from the task identifier alone, and of 138 audited hard problems more than 60% turned out to be unsolvable as written. The public leaderboard stopped being a measuring instrument — which is exactly the argument that raises the price of a private, freshly collected set.
The Russian-language part of the picture confirms the same thing from another angle. In the open 1C benchmark tasks are compiled and executed on the real platform, and the best foreign models solve roughly half; no Russian model appears in the table at all. The domain where a local player holds the most data is the domain where every model is weakest. That divergence is the definition of an opportunity.
Open-weight dependency: name it, price it, and rehearse the substitution
The claim the industry states reluctantly has been published by the companies themselves. The Alice AI tech report says outright that training runs on top of initialization with Qwen3-235B weights, and that this was chosen deliberately over training from scratch. T-Technologies never concealed it either.
More consequential than the fact itself is that the dependency is not single. In the published T-pro 2.0 recipe, foreign open weights appear at least four times: as the base checkpoint, as the teacher used to regenerate answers in the training mix, as the initialization of the reward model, and as the draft model for speculative decoding. An end to open-weight publication would break not one thing but four.
The legal layer creates less risk than is commonly assumed — worth saying plainly, because the market usually fears the wrong thing. The leading open families ship under permissive licences with no geographic restrictions. The reverse asymmetry does occur, though: some Russian open weights are released under bespoke licences that terminate automatically once a usage threshold is exceeded. Local “openness” is sometimes stricter than foreign openness, and the text matters more than the label.
The real price of the dependency is set not by the licence but by the regulatory category. The emerging framework distinguishes a model requiring full reproducibility of the entire cycle from a model in which foreign components under open licences are permitted. The decisive definitions — whether weights count as a “component” and whether a given licence qualifies as “open” — are deferred to secondary acts that do not yet exist. The practical meaning: starting from someone else's base is not disqualifying, but a ruling on those definitions could change a model's category with no technical change whatsoever. Precedents exist: in Korea's sovereign programme one team was dropped precisely for using a foreign closed component inside its own model.
The substitution drill
What follows from all this is not rhetoric but an exercise. A base-substitution plan that has never been executed is not a plan — it is a hope.
- the post-training recipe is written so that it does not depend on a specific checkpoint: tokenizer, data, environments, evals, and the serving stack are separated from the base;
- a second base is kept warm in advance — not as an idea, but as a passing build;
- specific GPU-hours and specific weeks are budgeted for the return to parity;
- parity is measured on a Russian-language eval you own, not on a public leaderboard;
- a legal event counts as a trigger too, not only a technical one — a ruling on licence status lands instantly and without warning.
What not to build: refusals with their failure modes
The negative half of the programme matters more than the positive one, because a scarce resource is consumed first by unsuccessful bets.
| Temptation | Failure mode | What to do instead |
|---|---|---|
| Your own accelerator | There is no silicon: process node and power envelopes are public, measured performance is not | Plan around the fleet you have and open serving engines |
| Pretraining from scratch | The entry ticket compounds faster than any plausible capex ramp | Post-training on an open base plus environments you own |
| Foreign rental counted as local capacity | A rouble price list does not imply in-country placement, and capacity outside the jurisdiction cannot anchor the loop | Count as local only the capacity visible inside your own jurisdiction |
| Hyperscale techniques on a small fleet | Stage disaggregation, the largest open sparse model, and fixed-depth speculation on a loaded fleet | Colocation, chunked prefill, and cache-aware routing |
| Foreign SaaS for traces | A direct collision with collection-stage personal-data requirements | Your own store, de-identification on ingest, a short retention window |
| Chasing the public leaderboard | Contamination and broken tasks: the benchmark's own authors stopped reporting it | A freshly collected private set built on your repositories and incidents |
A separate word on domestic silicon, because it carries the most expectation. What is public is the process node and the power envelopes of announced parts — not measured performance and not memory bandwidth. That is enough to establish these are edge-inference devices and not enough to rank them against anything. Nothing in the public record puts Russian silicon inside a training loop this decade, and building a strategy on announcements means substituting a roadmap for a wafer.
Organization, programme, and the question nobody plans for
The division of responsibility is easier to describe by an own-or-rent call than by vendor logos. Two layers stay yours: evals, traces, and environments — and the harness together with tools and the sandbox. Three stay rented: base weights, pretraining, and the upstream of the serving engine. This split follows directly from the previous sections: the first cannot be bought, the second is pointless to reproduce.
What breaks depends on size. At fifty engineers, measurement fails first: everyone ships, nobody measures, and evals and trace plumbing get done last. At five hundred, something else fails — the sandbox permission boundary, accelerator quota politics, and the prefix-cache hit rate, which collapses as soon as routing fragments across teams. Both failures are organizational, and both are cheaper to prevent than to repair.
A minimal one-year programme
- 01Measure rather than procure. Instrument agentic traces with in-country storage and de-identification on ingest; measure the actual prefix-cache hit rate and the share of repeated prefill.
- 02Stand up a baseline serving loop. Continuous request batching, chunked prefill, cache-aware routing, and a fixed quantization matrix per fleet generation.
- 03Build your own environments and evals. 20–50 tasks drawn from real failures, verification by compilation and execution, grading code withheld until scoring, a private split, and a continuously refreshed task pipeline.
- 04Take the cheap compute wins. Tokenizer surgery for your own language mix, plus routing and a distilled small model that pulls bulk traffic off the expensive one.
- 05Run the substitution drill. Not after the upstream release changes, but on a schedule — with budgeted GPU-hours, budgeted weeks, and a parity criterion on an eval you own.
- 06Write the spares plan. Treat fleet degradation as part of product strategy rather than an operations chore.
This is best managed by a short set of numbers, none of which is about model quality: experiments per week, cost per accepted task, prefix-cache hit rate, the share of traffic served by the cheap model, the time from a trace appearing to a corresponding eval existing, and the time to swap the base checkpoint in a test loop.
The question nobody plans for
There is a topic absent from every public strategy I know of: the fleet ages and is not replaced. Ampere-generation accelerators are 2020 silicon, and under current conditions there is no ordinary warranty-replacement path. That makes the spare-node inventory, the checkpoint-restart design for unreliable and irreplaceable hardware, and the tolerable share of dead nodes decisions about the company's future capability rather than an operations chore. Capability in 2029 will be determined by the spares plan written now.
Adjacent to it sits a security question barely covered in public engineering literature: an agent with terminal access inside a protected perimeter. Egress policy, secret handling, the list of what the model may read, and the separate question of whether the serving loop itself becomes a significant infrastructure object. There is no ready rule here, and that is worth admitting rather than presenting as solved.
What to take away
- 01"End-to-end" in Russia does not mean pretraining from scratch; it means a loop closed from trace to release — five of its six links are local, the sixth is rented from an open-weight release you do not control.
- 02Accelerator scarcity limits the number of passes through the loop, not the quality reachable on it: at roughly triple the foreign GPU-hour price, the winner closes a narrower loop faster.
- 03The compute-allocation doctrine matters more than the compute: serving first, then post-training and environments, then tokenizer and data; pretraining from scratch is demonstrated in-country by exactly one player.
- 04Reinforcement learning is the one large training mode structurally tolerant of weak interconnect, which is precisely why it suits a fragmented fleet better than pretraining does.
- 05The harness produces more outcome variance than the choice of model, and a weaker model is more sensitive to harness quality — this is the layer that costs engineering taste rather than accelerators.
- 06Dependency on foreign open weights is fourfold, and it is answered not by sovereignty rhetoric but by separating the invariants from the checkpoint and rehearsing base substitution on a schedule.
Primary materials, research, and documentation
- 01DeepSeek · DeepSeek-V3 Technical Report — the cost table: 2,664K GPU-hours of pretraining against 5K for post-training; self-reported final run only.
- 02DeepSeek · Insights into DeepSeek-V3: Scaling Challenges and Hardware Reflections — which architecture choices the constrained interconnect forced: MLA, routing capped at 4 nodes, FP8, PTX communication kernels.
- 03DeepSeek · DeepSeek-R1 (Nature, 17 September 2025) — peer-reviewed: reinforcement learning lifts AIME 2024 from 15.6% to 77.9%; the RL-stage cost excludes the base model.
- 04Cottier et al. (Epoch AI) · The rising costs of training frontier AI models — final-run cost growing about 2.4x per year; hardware is 47–67% of development cost.
- 05Cursor · Composer 1.5 — company statement: post-training compute exceeded the compute used to pretrain the base model.
- 06Khatri et al. · The Art of Scaling Reinforcement Learning Compute for LLMs — sigmoidal RL scaling curves predicted out to a 100,000 GPU-hour run — RL becomes a budgetable line item.
- 07Gen-T Team (T-Tech) · T-pro 2.0 — the one Russian recipe published in detail: Qwen3-32B base, tokenizer surgery, SFT and DPO on 4x8 H100.
- 08Salute Developers · GigaChat family — a from-scratch MoE family; training compute is not disclosed for any version.
- 09Yandex · Alice AI tech report (in Russian) — an explicit statement of Qwen3-235B weight initialization; the «4,000 GPU» figure is a communication-library benchmark, not a training cluster size.
- 10Douillard et al. · DiLoCo — training with infrequent synchronization: about 500x less communication at comparable quality.
- 11Douillard et al. · Streaming DiLoCo — 400x fewer communicated bits and 8x lower peak bandwidth at the 1B-parameter scale.
- 12Epoch AI · How far can decentralized training over the internet scale? — the necessary counterweight: decentralized runs sit about 300x below the frontier, and bandwidth-reduction methods cost quality.
- 13Prime Intellect · INTELLECT-3 — a 106B model post-trained on an open base using 512 H200s over two months; company claims.
- 14Yin et al. · Pangu Ultra on Ascend NPUs — 52% MFU on 8,192 NPUs with only 200 Gbps inter-node fabric; figures are vendor-reported.
- 15Huawei · Pangu Ultra MoE — the honest counterpoint: 718B parameters on 6,000 NPUs reach only 30% MFU.
- 16Huawei · CloudMatrix384 — serving someone else's open weights on constrained silicon yields publishable numbers where training did not succeed.
- 17Stop Comparing LLM Agents Without Disclosing the Harness — harness-induced variance of 18.48 pp² against 2.37 pp² from the model — a ratio of 7.8; weaker models are more harness-sensitive.
- 18Harness-Bench — a 23.8-percentage-point gap between harnesses on identical tasks and the same model pool.
- 19Polar · training agents on top of a third-party harness — intercepting at the model-API boundary lifts Codex on SWE-bench Verified from 3.8% to 26.4% without touching harness code.
- 20Alibaba Qwen · Qwen3-Coder — 20,000 parallel environments as the scaling axis for agent training; team-reported.
- 21Chen et al. · SWE-Universe — 807,693 automatically constructed verifiable environments from real pull requests.
- 22Prime Intellect · Scaling agentic RL — about 365,000 tasks and 135,000 prebuilt images; grading material withheld until scoring time.
- 23Together AI · DeepSWE — 64 H100s over six days reach 42.2% on SWE-bench Verified — the compute bill is modest and one-off.
- 24Epoch AI · An FAQ on reinforcement-learning environments — $200–2,000 per task and far more for product replicas — environments are labour, not FLOPs.
- 25OpenAI · Why we no longer evaluate SWE-bench Verified — contamination and broken tasks: more than 60% of 138 audited hard problems are unsolvable as written.
- 26Anthropic · Demystifying evals for AI agents — start with 20–50 tasks drawn from real failures, separate trajectory from outcome, calibrate judges against experts.
- 27Databricks · coSTAR — two mirrored loops — judges calibrated by humans, the agent repaired against the judges; results are self-reported.
- 28GitHub · Offline evaluation of GitHub MCP Server — an improvement loop that operates on the tool surface and requires no model training.
- 29Nebius · SWE-rebench — a continuously refreshed task pipeline as the answer to public-benchmark contamination.
- 30Sber · 1C Code Bench (in Russian) — compilation and execution on the real 1C platform: the best foreign models solve about half, and no Russian model is listed.
- 31Yandex · SourceCraft Code Assistant — the CLI ships with MIT-licensed OpenCode built in — the largest local vendor chose adaptation over its own harness.
- 32Anomaly · OpenCode — an MIT-licensed harness that is not tied to a single model provider.
- 33Habr · GitHub and PyPI availability from Russian networks (in Russian) — OONI measurement data show GitHub connection failures rising from about 4% to 16% in May 2026; an agent inherits the reliability of git clone and pip install.
- 34ComNews · A survey of Russian developer tooling (in Russian) — an average score of 5.8 out of 10, with about 70% of respondents still running foreign platforms in parallel.
- 35Cloud.ru · GPU-accelerated compute tariffs (in Russian) — the only verified published Russian price list; the per-GPU-hour figure is inferred from instance geometry rather than stated.
- 36TOP500 · the June 2026 list — five Russian systems totalling about 69 PFlop/s — the silence of a public register, not a measured national ceiling.
- 37Anthropic · Supported countries — the service-country list as a regulatory fact governing the availability of foreign agentic tools.
- 38GitHub and trade controls — the distribution terms for Copilot and Enterprise Server with respect to restricted destinations.
- 39Yang et al. · SWE-smith — 50,000 task instances built by programmatically breaking existing tests across 128 repositories.
- 40Ai2 · OLMo 3 — disclosed GPU-hours on a cluster of at most 1,024 H100s, with the full model flow as the differentiating asset instead of scale.
- 41Mistral AI · Announcing Mistral 7B — a first competitive model on entirely rented compute; owned capacity was financed only three years later.
- 42TII · Falcon-H1 — a lab with unconstrained hardware access chose parameter efficiency over parameter count.
- 43OpenTelemetry · GenAI semantic conventions — a portable field schema for agent traces, with warnings about sensitive data.