thefinalboss commited on
Commit
181b4d1
·
verified ·
1 Parent(s): 5bb1f9e

opt: real-GPU validation (6x5060 Ti) + block checkpointing results

Browse files
Files changed (1) hide show
  1. docs/OPTIMIZATION_2026-08-22.md +32 -2
docs/OPTIMIZATION_2026-08-22.md CHANGED
@@ -180,15 +180,45 @@ End-to-end moteur CPU (bench_engine.py, d=128, 2 blocs, E8, B=8, SEQ=128,
180
  | cumsum (défaut) | 703 |
181
  | chunked | 764 (+8.7 %) |
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  ## 5. Tests
184
 
185
  ```bash
186
- py -m pytest tests/ -q # 44 passed = suite repo (28) + équivalences (14) + smoke v2 (2)
187
  py benchmarks/bench_attention.py --iters 8
188
  py benchmarks/bench_engine.py --steps 20
189
  ```
190
 
191
- Statut : **44/44 passent** (2026-08-23). Les deux preuves moteur
 
192
  (`test_engine_tick_chunk_train_ce_matches_train`,
193
  `test_engine_end_to_end_chunk_equivalence`) exigent le clonage explicite des
194
  poids (`load_state_dict`) entre instances comparées — deux constructions sous
 
180
  | cumsum (défaut) | 703 |
181
  | chunked | 764 (+8.7 %) |
182
 
183
+ ### Validation GPU réelle (6× RTX 5060 Ti 16 Go, torch 2.11+cu128, 2026-08-24)
184
+
185
+ Config 1B complète (d1280 ×16 blocs, E128, bf16 autocast), smoke synthétique
186
+ puis trainer v2 complet sur vrais checkpoints + shards phase-2 :
187
+
188
+ | Config | tok/s/GPU | VRAM peak |
189
+ |---|---|---|
190
+ | cumsum + BLOCK_CKPT, B=2 | 338 | 14.3 GB |
191
+ | chunked + BLOCK_CKPT, B=2 | 431 | 14.0 GB |
192
+ | **chunked + BLOCK_CKPT, B=3** | **483** | **14.8 GB** |
193
+ | chunked + BLOCK_CKPT, B=4 | 501 | 15.6 GB |
194
+
195
+ - **Sans BLOCK_CKPT, la config 1B ne tient PAS dans 16 Go** (OOM dès le
196
+ forward MoE, même kernel chunked) : le checkpointing par bloc est ce qui
197
+ ouvre les cartes 16 Go. Naif interdit : `tick_chunk_core` lit-écrase le
198
+ carry → refactor en noyau pur `_tick_chunk_core_pure` (carry hors zone
199
+ checkpointée), prouvé équivalent par `tests/test_block_ckpt.py` (losses,
200
+ grads, évolution du carry sur chunks consécutifs). Suite : 46/46.
201
+ - Sur GPU, **chunked bat cumsum de ×1.27** à B égal : la réduction de
202
+ FLOPs paie enfin (contrairement au CPU, cf. plus haut).
203
+ - Trainer v2 complet (branche SS incluse) : **~340–382 tok/s/GPU soutenu**
204
+ à B=3, mem stable 14.8 GB, `loaded_tensors=424` sur chaque GPU (poids
205
+ réels chargés intégralement), lb≈14.03, tf en descente.
206
+
207
+ **ETA x6 5060 Ti pour finir la passe phase-2** (3,433 M tokens restants,
208
+ aggregate ~2,170 tok/s) : **≈ 17–19.5 jours** (~18 j au point médian).
209
+ Comparaison : 8×5090 baseline ≈ 4.5–5.5 j ; le gain post-opt sur 5090
210
+ reste à mesurer sur pod (même procédure).
211
+
212
  ## 5. Tests
213
 
214
  ```bash
215
+ py -m pytest tests/ -q # 46 passed = repo (28) + équivalences (14) + smoke v2 (2) + block-ckpt (2)
216
  py benchmarks/bench_attention.py --iters 8
217
  py benchmarks/bench_engine.py --steps 20
218
  ```
219
 
220
+ Statut : **46/46 passent** (local torch 2.9 CPU et pod torch 2.11+cu128,
221
+ 2026-08-24). Les deux preuves moteur
222
  (`test_engine_tick_chunk_train_ce_matches_train`,
223
  `test_engine_end_to_end_chunk_equivalence`) exigent le clonage explicite des
224
  poids (`load_state_dict`) entre instances comparées — deux constructions sous