def mixgrpo_lora_diffrhythm2(): config = get_config() gpu_number = 1 if torch.cuda.is_available(): gpu_number = torch.cuda.device_count() # --- Dataset --- config.dataset = os.path.join(config.root_dir, "_dataset") config.prompt_fn = "genius" config.json_path = os.path.join(config.dataset, "Genius_local.json") # --- Reward (placeholder; will be replaced with ACE-Step AAS later) --- config.reward_fn = {"placeholder": 1.0} config.eval_reward_fn = {"placeholder": 1.0} # --- MixGRPO Sliding Window --- config.training_strategy = "part" # "part" = MixGRPO, "all" = DanceGRPO config.grpo = ml_collections.ConfigDict() config.grpo.iters_per_group = 20 config.grpo.group_size = 4 config.grpo.sample_strategy = "progressive" config.grpo.prog_overlap = False config.grpo.prog_overlap_step = 1 config.grpo.roll_back = False config.grpo.max_iters_per_group = 10 config.grpo.min_iters_per_group = 1 # --- GRPO Training Hyperparameters --- config.train.total_steps = 2000 config.train.clip_range = 0.1 config.train.adv_clip_max = 5 config.train.kl_coeff = 0.01 config.train.learning_rate = 5e-6 config.train.max_grad_norm = 1.0 config.train.ema = False # OOM mitigation: EMA model copy holds ~model size in VRAM config.train.gradient_accumulation_steps = 3 config.train.num_inner_epochs = 1 config.train.cfg = False config.train.num_generations = 12 config.train.init_same_noise = True # Reward interpolation: reward = (1-λ)*audiobox + λ*AAS # λ=0 → pure Audiobox Aesthetics, λ=1 → pure AAS, λ=0.5 → equal mix config.train.reward_lambda = 0.5 # --- Sampling --- config.sample.use_sde = True config.sample.num_steps = 32 config.sample.guidance_scale = 4.5 config.sample.noise_level = 1.0 # eta: 0.0 = ODE, 1.0 = fully stochastic SDE config.sample.rollout_duration_sec = 30 config.sample.train_batch_size = 1 config.sample.num_batches_per_epoch = 1 config.sample.num_audio_per_prompt = 12 config.sample.mini_num_audio_per_prompt = 1 # --- LoRA --- config.use_lora = True config.train.lora_rank = 32 config.train.lora_alpha = 64 config.train.lora_path = None # --- Score Head (SDE) --- config.score_head_path = "_train/checkpoints_score_head/score_head_step_4000.pt" # --- Logging & Save Overrides --- config.save_freq = 100 # --- Run name --- config.run_name = ( f"mixgrpo_lora_diffrhythm_G{gpu_number}" f"_r{config.train.lora_rank}" f"_grp{config.train.num_generations}" f"_win{config.grpo.group_size}" f"_steps{config.sample.num_steps}" ) # --- Debug Mode --- config.debug = False if config.debug: config.run_name = "DEBUG_" + config.run_name config.sample.num_batches_per_epoch = 1 config.sample.train_batch_size = 1 config.sample.num_audio_per_prompt = 2 config.sample.mini_num_audio_per_prompt = 2 config.train.num_generations = 2 config.sample.rollout_duration_sec = 6 config.sample.num_steps = 8 config.grpo.group_size = 2 config.grpo.iters_per_group = 3 config.train.total_steps = 10 config.save_freq = 1 config.wandb_init = False config.per_prompt_stat_tracking = False config.save_dir = os.path.join(config.output_dir, config.run_name) config.case_name = config.run_name return config