| # Collected Results |
|
|
| All measurements below are real numbers from actual runs. GPU, settings, and seed noted for each. |
|
|
| --- |
|
|
| ## Table 1: Your Original Results (MPS, provided by author) |
|
|
| Config: 6 layers, chunk_size=64, B=8, T=256, 10% active, 2000 steps |
| |
| | d_model | Run | Time (s) | ms/step | Val Loss | |
| |---------|-----|----------|---------|----------| |
| | 512 | dense_baseline | 74.77 | 99.70 | 5.3142 | |
| | 512 | sparse_full_dX | 91.04 | 121.38 | 5.4141 | |
| | 512 | sparse_sparse_dX | 93.33 | 124.44 | 5.5467 | |
| | 2048 | dense_baseline | 1035.84 | 591.91 | 6.0264 | |
| | 2048 | sparse_full_dX | 875.51 | 500.29 | 5.9807 | |
| | 2048 | sparse_sparse_dX | 847.22 | 484.13 | 6.0231 | |
|
|
| **Observation**: Sparse is slower at d=512 (1.22x overhead), faster at d=2048 (1.18x speedup for full_dX, 1.22x for sparse_dX). Quality comparable at d=2048, worse at d=512. |
|
|
| --- |
|
|
| ## Table 2: Isolated Matmul Microbenchmark (T4, per single FFN layer) |
|
|
| Config: B=8, T=256 (M=2048), chunk_size=64, 10% active, fp32, 100 iterations |
| |
| | d_model | FFN dim | Params | Fwd (ms) | dX (ms) | dW_dense (ms) | dW_sparse (ms) | Total_dense (ms) | Total_sparse_full_dX (ms) | Speedup | |
| |---------|---------|--------|----------|---------|---------------|----------------|-------------------|---------------------------|---------| |
| | 256 | 1024 | 0.3M | 0.27 | 0.21 | 0.27 | 0.26 | 0.75 | 0.74 | 1.02x | |
| | 384 | 1536 | 0.6M | 0.52 | 0.69 | 0.61 | 0.18 | 1.82 | 1.39 | 1.31x | |
| | 512 | 2048 | 1.0M | 1.00 | 1.01 | 0.97 | 0.26 | 2.99 | 2.28 | 1.31x | |
| | 768 | 3072 | 2.4M | 2.16 | 2.25 | 2.05 | 0.40 | 6.46 | 4.81 | 1.34x | |
| | 1024 | 4096 | 4.2M | 3.69 | 3.90 | 3.35 | 0.59 | 10.95 | 8.18 | 1.34x | |
| | 1536 | 6144 | 9.4M | 10.33 | 9.03 | 8.14 | 1.30 | 27.50 | 20.66 | 1.33x | |
| | 2048 | 8192 | 16.8M | 14.76 | 15.57 | 13.19 | 1.93 | 43.51 | 32.26 | 1.35x | |
|
|
| Amdahl ceiling (if dW were free): ~1.42β1.48x. Crossover point: d_model β 384. |
| |
| --- |
| |
| ## Table 3: Triton Kernel Correctness (T4) |
| |
| | d_in | d_out | chunk_size | dW max_err | dBias max_err | dX max_err | Status | |
| |------|-------|------------|-----------|---------------|-----------|--------| |
| | 512 | 2048 | 64 | 0.000320 | 0.000023 | 0.000042 | β | |
| | 1024 | 4096 | 64 | 0.000443 | 0.000021 | 0.000092 | β | |
| | 256 | 1024 | 32 | 0.000275 | 0.000038 | 0.000019 | β | |
| |
| --- |
| |
| ## Table 4: Triton vs PyLoop vs Dense β Isolated Backward (T4) |
| |
| Config: M=2048, chunk_size=64, 10% active, full_dX mode (dW sparse, dX dense), 50 iterations after warmup |
| |
| | d_model | FFN dim | Active chunks | Dense (ms) | PyLoop (ms) | Triton (ms) | Triton/Dense | Triton/PyLoop | |
| |---------|---------|---------------|-----------|-------------|-------------|--------------|---------------| |
| | 256 | 1024 | 1 | 0.39 | 0.40 | 0.46 | 0.85x | 0.88x | |
| | 512 | 2048 | 3 | 1.96 | 1.30 | 1.16 | 1.69x | 1.12x | |
| | 768 | 3072 | 4 | 4.29 | 2.52 | 2.51 | 1.70x | 1.00x | |
| | 1024 | 4096 | 6 | 7.29 | 4.37 | 4.30 | 1.70x | 1.02x | |
| | 1536 | 6144 | 9 | 17.32 | 10.04 | 9.78 | 1.77x | 1.03x | |
| | 2048 | 8192 | 12 | 29.14 | 17.20 | 16.89 | 1.73x | 1.02x | |
|
|
| Triton with both dW and dX sparse: |
|
|
| | d_model | Dense (ms) | Triton_all (ms) | Speedup | |
| |---------|-----------|-----------------|---------| |
| | 512 | 1.96 | 0.41 | 4.83x | |
| | 1024 | 7.06 | 1.07 | 6.58x | |
| | 2048 | 29.00 | 3.71 | 7.81x | |
|
|
| --- |
|
|
| ## Table 5: End-to-End Training (T4, 100 steps) |
|
|
| Config: 6 layers, 8 heads, B=8, T=256, chunk_size=64, 10% active, seed=42, AdamW lr=5e-4, full_dX mode |
|
|
| | d_model | Mode | ms/step | vs Dense | Val Loss | |
| |---------|------|---------|----------|----------| |
| | 512 | dense | 184.6 | 1.00x | 5.6954 | |
| | 512 | pyloop | 179.0 | 1.03x | 5.8683 | |
| | 512 | triton | 196.0 | 0.94x | 5.8683 | |
| | 1024 | dense | 451.5 | 1.00x | 5.5300 | |
| | 1024 | pyloop | 435.6 | 1.04x | 5.4803 | |
| | 1024 | triton | 441.0 | 1.02x | 5.4800 | |
| |
| d=2048 does not fit on T4 (16GB). A10G results pending (job 69f3af45d2c8bd8662bd419d). |
| |
| Note: Triton autotune overhead hurts at small scale. At d=512 with only 1 active chunk per layer, fused kernels lose to PyTorch's already-optimized single-kernel launches. |
| |
| --- |
| |
| ## Table 6: EMA Predictor Overlap (T4, 350 steps, seed=42) |
| |
| Config: d=512, 6 layers, chunk_size=64, 10% active, measured every 25 steps after annealing (step β₯ 250) |
|
|
| | Step | Jaccard | Recall | |
| |------|---------|--------| |
| | 250 | 0.6000 | 0.7500 | |
| | 275 | 0.6552 | 0.7917 | |
| | 300 | 0.7778 | 0.8750 | |
| | 325 | 0.6000 | 0.7500 | |
|
|
| Single seed only. Full 3-seed results with 2000 steps pending from A10G job. |
|
|
| --- |
|
|
| ## Table 7: Chunk-Size vs Speed (T4, 50 steps, timing only) |
|
|
| Config: d=512, 6 layers, 10% active, seed=42. Loss identical across sizes (only 50 steps, all in warmup). |
|
|
| | Chunk Size | ms/step | |
| |------------|---------| |
| | 16 | 601.4 | |
| | 32 | 453.0 | |
| | 64 | 321.5 | |
| | 128 | 251.3 | |
| | 256 | 219.8 | |
|
|
| Larger chunks = fewer Python loop iterations = less overhead. This is the PyLoop backend; Triton would show a different curve. |
|
|
| --- |
|
|
| ## Pending Results (A10G jobs running) |
|
|
| | Job ID | Experiment | Status | |
| |--------|-----------|--------| |
| | 69f38371d70108f37ace1cae | Full 7-experiment suite (2000 steps, 3 seeds, all ablations) | Running | |
| | 69f395b3d70108f37ace1cee | Model-size scaling study (d=256β2048, 2000 steps, 2 seeds) | Running | |
| | 69f3af45d2c8bd8662bd419d | E2E training with Triton (d=512,1024,2048, 500 steps) | Running | |
|
|
| These will provide: |
| - Table 3 full: All 8 baselines with 3 seeds at 2000 steps (Dense, Random, EMA, EMA+sparse_dX, RigL, SET, TopK-SGD, Oracle) |
| - Compute-matched dense (same FLOPs) vs sparse |
| - Chunk-size ablation with loss numbers at 2000 steps |
| - Epsilon-greedy exploration sweep |
| - Attention sparsification results |
| - Sparsity level sweep (5%β100%) |
| - d=2048 end-to-end training with Triton |
| |