refactor(F7): remove dead iqn/cql/ens_grad_budget config fields — superseded by adaptive budgets (B4/G5)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -323,12 +323,6 @@ pub struct GpuDqnTrainConfig {
|
||||
/// market features from portfolio+MTF+OFI features in the state vector.
|
||||
/// OFI features (8 dims, when enabled) bypass the bottleneck via portfolio_dim.
|
||||
pub market_dim: usize,
|
||||
/// Gradient budget fraction for IQN. Default 0.40.
|
||||
pub iqn_grad_budget: f32,
|
||||
/// Gradient budget fraction for CQL. Default 0.10.
|
||||
pub cql_grad_budget: f32,
|
||||
/// Gradient budget fraction for ensemble. Default 0.05.
|
||||
pub ens_grad_budget: f32,
|
||||
}
|
||||
|
||||
impl Default for GpuDqnTrainConfig {
|
||||
@@ -377,9 +371,6 @@ impl Default for GpuDqnTrainConfig {
|
||||
enable_gradient_vaccine: true, // always on
|
||||
bottleneck_dim: 16,
|
||||
market_dim: 42, // Default: 42 base features. Overridden to 50 when OFI (MBP-10) enabled.
|
||||
iqn_grad_budget: 0.40,
|
||||
cql_grad_budget: 0.10,
|
||||
ens_grad_budget: 0.05,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -932,17 +932,6 @@ pub struct DQNHyperparameters {
|
||||
/// L_total = L_c51 + iqn_lambda * L_iqn
|
||||
/// Range [0.0, 2.0]: 0.0 = C51 only, 0.5 = balanced, 1.0 = equal weight
|
||||
pub iqn_lambda: f64,
|
||||
/// Gradient budget fraction for IQN auxiliary objective.
|
||||
/// Controls how much of the total gradient norm IQN consumes.
|
||||
/// Range [0.1, 0.8]. Default 0.40. Higher = IQN dominates (good for magnitude sizing).
|
||||
/// At 0.75, IQN starves C51 — directional learning flatlines.
|
||||
pub iqn_grad_budget: f64,
|
||||
/// Gradient budget fraction for CQL regularization.
|
||||
/// Range [0.0, 0.3]. Default 0.10.
|
||||
pub cql_grad_budget: f64,
|
||||
/// Gradient budget fraction for ensemble diversity.
|
||||
/// Range [0.0, 0.2]. Default 0.05. C51 gets the remainder.
|
||||
pub ens_grad_budget: f64,
|
||||
/// Spectral norm σ_max — constrains ||W||_σ ≤ σ_max.
|
||||
/// Range [1.0, 10.0]. Default 3.0 (permits Xavier scaling, prevents Q-explosion).
|
||||
pub spectral_norm_sigma_max: f64,
|
||||
@@ -1554,9 +1543,6 @@ impl DQNHyperparameters {
|
||||
num_quantiles: 32, // Default: 32 quantiles
|
||||
qr_kappa: 1.0, // Default: 1.0 (standard quantile Huber loss)
|
||||
iqn_lambda: 0.25, // Default: mild IQN regularization alongside C51
|
||||
iqn_grad_budget: 0.40, // Default: balanced — was 0.75 (starved C51 directional learning)
|
||||
cql_grad_budget: 0.10, // Default: mild CQL regularization
|
||||
ens_grad_budget: 0.05, // Default: ensemble diversity. C51 gets remainder (0.45)
|
||||
spectral_norm_sigma_max: 3.0, // Default: permits Xavier scaling [1.0, 10.0]
|
||||
spectral_decoupling_lambda: 0.01, // Default: mild logit magnitude penalty (Pezeshki 2021)
|
||||
|
||||
|
||||
@@ -139,7 +139,6 @@ unsafe impl Sync for ParentGraph {}
|
||||
|
||||
/// Per-component gradient norm budget fractions for auxiliary objectives.
|
||||
/// C51 gets whatever remains: `1.0 - sum(active_auxiliary_budgets)`.
|
||||
/// Configurable via DQNHyperparameters (iqn_grad_budget, cql_grad_budget, ens_grad_budget).
|
||||
/// Default: IQN=40%, CQL=10%, ENS=5%, C51=45%.
|
||||
/// Old hardcoded: IQN=75% — starved C51 directional learning (grad_norm frozen at 0.655).
|
||||
pub(crate) struct GradBudget {
|
||||
@@ -410,9 +409,6 @@ impl FusedTrainingCtx {
|
||||
enable_gradient_vaccine: true,
|
||||
bottleneck_dim: hyperparams.bottleneck_dim,
|
||||
market_dim: 42, // Always 42 base market features — OFI features bypass bottleneck via portfolio_dim
|
||||
iqn_grad_budget: hyperparams.iqn_grad_budget as f32,
|
||||
cql_grad_budget: hyperparams.cql_grad_budget as f32,
|
||||
ens_grad_budget: hyperparams.ens_grad_budget as f32,
|
||||
};
|
||||
|
||||
// Create weight set pointer views AFTER GpuDqnTrainer is constructed below.
|
||||
|
||||
@@ -399,9 +399,6 @@ pub struct SearchSpaceSection {
|
||||
pub branch_hidden_dim: Option<[f64; 2]>,
|
||||
pub gradient_accumulation_steps: Option<[f64; 2]>,
|
||||
pub iqn_lambda: Option<[f64; 2]>,
|
||||
pub iqn_grad_budget: Option<[f64; 2]>,
|
||||
pub cql_grad_budget: Option<[f64; 2]>,
|
||||
pub ens_grad_budget: Option<[f64; 2]>,
|
||||
/// Spectral norm sigma max bounds.
|
||||
pub spectral_norm_sigma_max: Option<[f64; 2]>,
|
||||
/// C51 warmup epochs bounds.
|
||||
@@ -571,9 +568,6 @@ impl HyperoptProfile {
|
||||
"branch_hidden_dim" => ss.branch_hidden_dim,
|
||||
"gradient_accumulation_steps" => ss.gradient_accumulation_steps,
|
||||
"iqn_lambda" => ss.iqn_lambda,
|
||||
"iqn_grad_budget" => ss.iqn_grad_budget,
|
||||
"cql_grad_budget" => ss.cql_grad_budget,
|
||||
"ens_grad_budget" => ss.ens_grad_budget,
|
||||
"spectral_norm_sigma_max" => ss.spectral_norm_sigma_max,
|
||||
"c51_warmup_epochs" => ss.c51_warmup_epochs,
|
||||
"c51_alpha_max" => ss.c51_alpha_max,
|
||||
|
||||
Reference in New Issue
Block a user