Replace all Candle tensor operations in the fused training loop with pure cudarc CudaSlice operations to prevent Candle tensor Drops from recording events on the default stream (which conflicts with our forked training stream via cudarc event tracking). Key changes: - Re-enable disable_event_tracking() in GpuDqnTrainer::new() — safe now that no Candle tensors are created during training - Rewrite upload_batch_gpu(): BF16 states/next_states use DtoD + bf16→f32 kernel instead of Candle to_dtype(F32); F32 rewards/dones/weights use direct DtoD copy with layout offset handling - Load bf16_to_f32_kernel from training module (was defined in CUH but not loaded) - Add train_value_step_raw() to GpuIqlTrainer that takes CudaSlice<f32> directly, bypassing Candle tensor manipulation - IQL in fused training now reuses DQN trainer's already-converted F32 states_buf/rewards_buf instead of creating Candle temporaries - Fix dtod_from_candle_f32/u32 to respect Candle layout start_offset Co-Authored-By: Claude Opus 4.6 (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;