compute-sanitizer pinpointed mag_concat_qdir at experience_kernels.cu:3590 writing 260 floats/state (SH2 + b0_size where b0=4) into a buffer allocated for 259 floats/state (SH2 + 3, legacy 3-direction layout). Off-by-one corrupted the next row's first column on every write and overran past the buffer end on the final row, surfacing as CUDA_ERROR_ILLEGAL_ADDRESS in downstream kernels (denoise_bias_grad_p1, cublasLt h_v matmul) on L40S production batch sizes. The `+3` constant was overloaded: - direction-conditioned (mag_concat, w_b1fc, w_gate_1) — incorrectly hardcoded SH2+3 instead of SH2+branch_0_size when the kernel migrated to 4-direction (S/H/L/F). - OFI-conditioned (ord_concat, urg_concat, w_b2fc, w_b3fc, w_gate_2, w_gate_3) — correctly SH2+3 for 3 OFI features per branch (concat_ofi_features). Migrated all direction-conditioned consumers in lockstep (feedback_no_partial_refactor): - gpu_dqn_trainer.rs: w_b1fc, w_gate_1 use shared_h2+branch_0_size - gpu_dqn_trainer.rs: split mag_concat_dim (SH2+b0) from ofi_concat_dim (SH2+3) for buffer alloc - gpu_dqn_trainer.rs: accumulate_d_h_s2_from_concat takes src_stride param so mag callers pass SH2+b0, ord/urg callers pass SH2+3 - batched_forward.rs: split mag_concat_dim (SH2+b0) from ofi_concat_dim (SH2+3); strided_scatter dst_stride and fc_k now diverge between mag (d==1) and ord/urg (d==2,3); add separate (SH2+3) GEMM cache shape - batched_backward.rs: d==1 (magnitude) dX/dW dims use SH2+b0; d==2/3 (order/urgency) keep SH2+3; add separate (SH2+3) GEMM cache shape for OFI branches - gradient_budget.rs: smoke test now allocates b1 with SH2+b0 and b2/b3 with SH2+3 (was buggy SH2+3 for all three) - value_decoder.rs: doc updated - docs/dqn-named-dims.md: new "Branch FC input strides" section documenting the direction- vs OFI-conditioning invariant Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ml
10-model ML ensemble for the Foxhunt HFT system, built on Candle v0.9.1.
Models
- DQN (Rainbow) — deep Q-network with prioritized replay, dueling heads, noisy nets
- PPO — proximal policy optimization with GAE, LSTM policies, clip-higher
- TFT — temporal fusion transformer for multi-horizon forecasting
- Mamba2 — state space model for sequence prediction
- Liquid Networks — biologically inspired networks for non-stationary data
- TLOB — transformer-based limit order book analysis
- KAN — Kolmogorov-Arnold networks
- xLSTM — extended LSTM architecture
- TGGN — temporal graph neural network
- Diffusion — diffusion-based generative model
Key Modules
ensemble— model ensemble coordination and confidence aggregationhyperopt— PSO-based hyperparameter optimization with per-model adapterstrainers— unified training loops (DQN, PPO, supervised)inference—InferenceAdaptertrait for predictioncheckpoint— model checkpointing and restorationevaluation— walk-forward evaluation pipeline
Usage
use ml::dqn::DQN;
use ml::ppo::PpoTrainer;