narySt commited on
Commit
8645b0a
·
verified ·
1 Parent(s): a0cf2a5

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +2 -0
  2. routing_rerun/N_2.5/checkpoints/checkpoint_latest.pt +3 -0
  3. routing_rerun/N_2.5/routing_weights/routing_step_0.pt +3 -0
  4. routing_rerun/N_2.5/routing_weights/routing_step_12000.pt +3 -0
  5. routing_rerun/N_2.5/routing_weights/routing_step_14061.pt +3 -0
  6. routing_rerun/N_2.5/routing_weights/routing_step_3000.pt +3 -0
  7. routing_rerun/N_2.5/routing_weights/routing_step_6000.pt +3 -0
  8. routing_rerun/N_2.5/routing_weights/routing_step_9000.pt +3 -0
  9. routing_rerun/N_2.5/wandb/run-20260523_172819-hcp9axm4/run-hcp9axm4.wandb +3 -0
  10. routing_rerun/N_4.0/checkpoints/checkpoint_step_12000.pt +3 -0
  11. routing_rerun/N_4.0/checkpoints/checkpoint_step_3000.pt +3 -0
  12. routing_rerun/N_4.0/checkpoints/checkpoint_step_6000.pt +3 -0
  13. routing_rerun/N_4.0/checkpoints/checkpoint_step_9000.pt +3 -0
  14. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/code/routing_evolution_exp/train.py +259 -0
  15. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/config.yaml +134 -0
  16. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/output.log +0 -0
  17. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/requirements.txt +245 -0
  18. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/wandb-metadata.json +44 -0
  19. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/wandb-summary.json +1 -0
  20. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/logs/debug-core.log +16 -0
  21. routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/logs/debug-internal.log +14 -0
  22. routing_rerun/N_6.0/.hydra/config.yaml +57 -0
  23. routing_rerun/N_6.0/.hydra/hydra.yaml +162 -0
  24. routing_rerun/N_6.0/.hydra/overrides.yaml +2 -0
  25. routing_rerun/N_6.0/checkpoints/checkpoint_latest.pt +3 -0
  26. routing_rerun/N_6.0/checkpoints/checkpoint_step_12000.pt +3 -0
  27. routing_rerun/N_6.0/checkpoints/checkpoint_step_3000.pt +3 -0
  28. routing_rerun/N_6.0/checkpoints/checkpoint_step_6000.pt +3 -0
  29. routing_rerun/N_6.0/checkpoints/checkpoint_step_9000.pt +3 -0
  30. routing_rerun/N_6.0/eval_results/eval_config.yaml +29 -0
  31. routing_rerun/N_6.0/eval_results/metrics_model_best.txt +17 -0
  32. routing_rerun/N_6.0/eval_results/metrics_model_final.txt +17 -0
  33. routing_rerun/N_6.0/eval_results/metrics_pretrained.txt +17 -0
  34. routing_rerun/N_6.0/eval_results/predictions_model_best.txt +0 -0
  35. routing_rerun/N_6.0/eval_results/predictions_model_final.txt +0 -0
  36. routing_rerun/N_6.0/eval_results/predictions_pretrained.txt +0 -0
  37. routing_rerun/N_6.0/eval_results/summary.txt +8 -0
  38. routing_rerun/N_6.0/wandb/debug-internal.log +14 -0
  39. routing_rerun/N_6.0/wandb/debug.log +24 -0
  40. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/code/routing_evolution_exp/train.py +259 -0
  41. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/config.yaml +134 -0
  42. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/output.log +0 -0
  43. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/requirements.txt +245 -0
  44. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/wandb-metadata.json +44 -0
  45. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/wandb-summary.json +1 -0
  46. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug-core.log +16 -0
  47. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug-internal.log +14 -0
  48. routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug.log +24 -0
  49. routing_rerun/N_8.0/.hydra/config.yaml +57 -0
  50. routing_rerun/N_8.0/.hydra/hydra.yaml +162 -0
.gitattributes CHANGED
@@ -50,3 +50,5 @@ pythia_1_4b_rerun/pythia_1_4b_lr_2e-5/wandb/run-20260425_215604-jhqe4qjw/run-jhq
50
  generation_bench_results/runs.partial.jsonl filter=lfs diff=lfs merge=lfs -text
51
  generation_bench_results/results.json filter=lfs diff=lfs merge=lfs -text
52
  pythia_1b_rerun/pythia_1b_lr_2e-5/wandb/run-20260523_224742-l9w4bbvz/run-l9w4bbvz.wandb filter=lfs diff=lfs merge=lfs -text
 
 
 
50
  generation_bench_results/runs.partial.jsonl filter=lfs diff=lfs merge=lfs -text
51
  generation_bench_results/results.json filter=lfs diff=lfs merge=lfs -text
52
  pythia_1b_rerun/pythia_1b_lr_2e-5/wandb/run-20260523_224742-l9w4bbvz/run-l9w4bbvz.wandb filter=lfs diff=lfs merge=lfs -text
53
+ routing_rerun/N_8.0/wandb/run-20260524_111710-wj0poul7/run-wj0poul7.wandb filter=lfs diff=lfs merge=lfs -text
54
+ routing_rerun/N_2.5/wandb/run-20260523_172819-hcp9axm4/run-hcp9axm4.wandb filter=lfs diff=lfs merge=lfs -text
routing_rerun/N_2.5/checkpoints/checkpoint_latest.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e8ca0ae6d9550a5a319ff24ca12a22fee8abcf486f2bb54a3cbed6f29b5b1f9
3
+ size 3315169346
routing_rerun/N_2.5/routing_weights/routing_step_0.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:132bc38ff57f9db6c9ca06a66251bf38dc4231f85bd01101af2cf1df371b5db7
3
+ size 13633736
routing_rerun/N_2.5/routing_weights/routing_step_12000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:680036bb3ff6ba5bc6cc1838021853aab9c93ded0c7992ca3ab89db3daa08988
3
+ size 13633768
routing_rerun/N_2.5/routing_weights/routing_step_14061.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d4cdcb761c7aceb7f0f38fdefc64eba4d883acc47f0c552c73fad6c5f4e2b816
3
+ size 13633768
routing_rerun/N_2.5/routing_weights/routing_step_3000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4766cbd387f6634bd39c36fcf57f610274ed26fb1206c117f07986816886fafe
3
+ size 13633760
routing_rerun/N_2.5/routing_weights/routing_step_6000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8c174f875f37a059f3100953a39ac1870d0d6471ee10f2da1eb51f3300fd2b76
3
+ size 13633760
routing_rerun/N_2.5/routing_weights/routing_step_9000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:50bed38b07b22441e81d7d7cc6a9e5cdaea9014155705cd4a6c402b988b88522
3
+ size 13633760
routing_rerun/N_2.5/wandb/run-20260523_172819-hcp9axm4/run-hcp9axm4.wandb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e7482ea30a6fbfc224f3c50aa03dfccb5a75a941579789493220869dedf2593c
3
+ size 4539998
routing_rerun/N_4.0/checkpoints/checkpoint_step_12000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1bd471e8cf6a32a257ae86c8d35c18634ac4a74a7e4bd0cceb306b627cc36aea
3
+ size 3315170726
routing_rerun/N_4.0/checkpoints/checkpoint_step_3000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb89c708577dbc19b40f78b4ccd048eaae957c32fe0e7918249fc2a1b83f0e58
3
+ size 3315170381
routing_rerun/N_4.0/checkpoints/checkpoint_step_6000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ec93559bf5cae0838e60e2d61b9d3bfb3ebbf00edf5e07d63b631ae0ff8a765e
3
+ size 3315170381
routing_rerun/N_4.0/checkpoints/checkpoint_step_9000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:473e94c9aace1258e3dfb8e71670d96646ae006a680965337c1ca9d869d0b47f
3
+ size 3315170381
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/code/routing_evolution_exp/train.py ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Routing Evolution Experiment: H-Net fine-tune с разными load_balancing_N.
3
+
4
+ Цель: изучить как routing module (W_q, W_k) эволюционирует при разном давлении сжатия.
5
+
6
+ Использование:
7
+ # Запуск с конкретным N
8
+ accelerate launch --config_file accelerate_config.yaml \
9
+ train.py training.load_balancing_N=6.0 tracking.run_name=routing_N6.0
10
+
11
+ # Запуск всех N через run_all.sh
12
+ bash run_all.sh
13
+ """
14
+
15
+ import math
16
+ import os
17
+ from pathlib import Path
18
+
19
+ import torch
20
+ import hydra
21
+ from hydra.core.hydra_config import HydraConfig
22
+ from omegaconf import DictConfig, OmegaConf
23
+ from accelerate import Accelerator
24
+ from accelerate.utils import set_seed as accelerate_set_seed
25
+
26
+ # HNet imports
27
+ from hnet.load_utils import load_from_pretrained, load_from_config
28
+ from hnet.utils.tokenizers import ByteTokenizer
29
+ from hnet.utils.train import group_params
30
+
31
+ # Ensure repo root is on sys.path (needed when running from subdirectory)
32
+ import sys
33
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
34
+
35
+ # Shared training library
36
+ from training_lib.utils import log_message
37
+ from training_lib.checkpointing import save_checkpoint, load_checkpoint
38
+ from training_lib.schedulers import get_lr_scheduler
39
+ from training_lib.tracking import init_tracking, finish_tracking
40
+ from training_lib.hnet.train_loop import train_epoch
41
+ from training_lib.hnet.data import create_dataloaders
42
+
43
+
44
+ def save_routing_weights(model, step, output_dir):
45
+ """Сохраняет только routing W_q/W_k для быстрого анализа weight evolution."""
46
+ routing_dir = output_dir / "routing_weights"
47
+ routing_dir.mkdir(parents=True, exist_ok=True)
48
+
49
+ state = model.state_dict()
50
+ routing_keys = [k for k in state if "routing_module" in k and "proj_layer" in k]
51
+ routing_weights = {k: state[k].cpu() for k in routing_keys}
52
+ torch.save(routing_weights, routing_dir / f"routing_step_{step}.pt")
53
+
54
+
55
+ def on_checkpoint_callback(model, step, output_dir):
56
+ """Callback для train_epoch: сохраняет routing weights при каждом checkpoint.
57
+
58
+ Модель уже unwrapped в train_loop перед вызовом callback.
59
+ """
60
+ save_routing_weights(model, step, output_dir)
61
+
62
+
63
+ @hydra.main(version_base=None, config_path="configs", config_name="config")
64
+ def main(cfg: DictConfig):
65
+ """Тренировка H-Net с фиксированным числом шагов для анализа routing evolution."""
66
+
67
+ # === Accelerator Setup ===
68
+ mixed_precision = "bf16" if cfg.training.use_amp else "no"
69
+
70
+ accelerator = Accelerator(
71
+ mixed_precision=mixed_precision,
72
+ gradient_accumulation_steps=cfg.training.gradient_accumulation_steps,
73
+ )
74
+
75
+ accelerate_set_seed(cfg.seed)
76
+
77
+ if cfg.paths.output_dir is None:
78
+ cfg.paths.output_dir = HydraConfig.get().runtime.output_dir
79
+
80
+ OmegaConf.resolve(cfg)
81
+
82
+ log_message(
83
+ f"CUDA_VISIBLE_DEVICES: {os.environ.get('CUDA_VISIBLE_DEVICES', 'not set')}",
84
+ cfg,
85
+ accelerator,
86
+ )
87
+ log_message(f"Number of processes: {accelerator.num_processes}", cfg, accelerator)
88
+ log_message(f"Mixed precision: {mixed_precision}", cfg, accelerator)
89
+
90
+ log_message("=" * 60, cfg, accelerator)
91
+ log_message(
92
+ f"Routing Evolution Experiment | N={cfg.training.load_balancing_N}",
93
+ cfg,
94
+ accelerator,
95
+ )
96
+ log_message("=" * 60, cfg, accelerator)
97
+ log_message(f"Config:\n{OmegaConf.to_yaml(cfg)}", cfg, accelerator)
98
+
99
+ # === Experiment Tracking Init ===
100
+ init_tracking(cfg, accelerator)
101
+
102
+ # === Tokenizer ===
103
+ tokenizer = ByteTokenizer()
104
+
105
+ # === Model ===
106
+ log_message("Loading model...", cfg, accelerator)
107
+ if cfg.model.checkpoint_path:
108
+ model = load_from_pretrained(
109
+ model_path=cfg.model.checkpoint_path,
110
+ model_config_path=cfg.model.config_path,
111
+ )
112
+ log_message(f"Loaded pretrained: {cfg.model.checkpoint_path}", cfg, accelerator)
113
+ else:
114
+ model = load_from_config(
115
+ model_config_path=cfg.model.config_path,
116
+ device="cpu",
117
+ )
118
+ model.init_weights()
119
+ log_message("Initialized from scratch", cfg, accelerator)
120
+
121
+ model.train()
122
+
123
+ lr_multiplier = list(cfg.training.lr_multiplier)
124
+ model.apply_lr_multiplier(lr_multiplier)
125
+ log_message(f"Applied LR multipliers: {lr_multiplier}", cfg, accelerator)
126
+
127
+ if cfg.training.warmup_model:
128
+ log_message("Warming up model...", cfg, accelerator)
129
+ model = model.to(accelerator.device)
130
+ model.warmup(verbose=accelerator.is_main_process)
131
+
132
+ # Save initial routing weights (step 0)
133
+ if accelerator.is_main_process:
134
+ output_dir = Path(cfg.paths.output_dir)
135
+ save_routing_weights(model, 0, output_dir)
136
+
137
+ total_params = sum(p.numel() for p in model.parameters())
138
+ trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
139
+ log_message(f"Total params: {total_params:,}", cfg, accelerator)
140
+ log_message(f"Trainable params: {trainable_params:,}", cfg, accelerator)
141
+
142
+ # === Data ===
143
+ log_message("Creating dataloaders...", cfg, accelerator)
144
+ dataloaders = create_dataloaders(cfg, tokenizer)
145
+
146
+ train_dataloader = dataloaders["train"]
147
+ val_dataloader = dataloaders.get("validation", None)
148
+
149
+ log_message(
150
+ f"Train dataset size: {len(train_dataloader.dataset)} "
151
+ f"(max_train_samples={cfg.data.max_train_samples}) | "
152
+ f"Epochs: {cfg.training.epochs}",
153
+ cfg,
154
+ accelerator,
155
+ )
156
+
157
+ # === Optimizer ===
158
+ param_groups = group_params(model)
159
+
160
+ for group in param_groups:
161
+ if "lr" not in group:
162
+ group["lr"] = cfg.training.lr
163
+ else:
164
+ group["lr"] = cfg.training.lr * group.get("lr_multiplier", 1.0)
165
+ if "weight_decay" not in group:
166
+ group["weight_decay"] = cfg.training.weight_decay
167
+
168
+ optimizer = torch.optim.AdamW(
169
+ param_groups,
170
+ lr=cfg.training.lr,
171
+ betas=tuple(cfg.training.betas),
172
+ eps=cfg.training.eps,
173
+ )
174
+
175
+ # === Scheduler ===
176
+ steps_per_epoch = math.ceil(len(train_dataloader) / accelerator.num_processes)
177
+ max_steps = (
178
+ cfg.training.epochs
179
+ * steps_per_epoch
180
+ // cfg.training.gradient_accumulation_steps
181
+ )
182
+ scheduler = get_lr_scheduler(optimizer, cfg, max_steps)
183
+
184
+ log_message(
185
+ f"Max steps: {max_steps}, Steps per epoch: {steps_per_epoch}",
186
+ cfg,
187
+ accelerator,
188
+ )
189
+
190
+ # === Accelerate Prepare ===
191
+ if val_dataloader is not None:
192
+ model, optimizer, train_dataloader, val_dataloader, scheduler = (
193
+ accelerator.prepare(
194
+ model, optimizer, train_dataloader, val_dataloader, scheduler
195
+ )
196
+ )
197
+ else:
198
+ model, optimizer, train_dataloader, scheduler = accelerator.prepare(
199
+ model, optimizer, train_dataloader, scheduler
200
+ )
201
+
202
+ # === Training Loop ===
203
+ log_message("Starting training...", cfg, accelerator)
204
+
205
+ global_step = 0
206
+ best_val_loss = float("inf")
207
+ epoch = 0
208
+
209
+ num_epochs = cfg.training.epochs
210
+
211
+ try:
212
+ for epoch in range(1, num_epochs + 1):
213
+ log_message(f"\n{'=' * 60}", cfg, accelerator)
214
+ log_message(
215
+ f"EPOCH {epoch}/{num_epochs} (step {global_step})", cfg, accelerator
216
+ )
217
+ log_message(f"{'=' * 60}", cfg, accelerator)
218
+
219
+ global_step, best_val_loss = train_epoch(
220
+ model=model,
221
+ dataloader=train_dataloader,
222
+ optimizer=optimizer,
223
+ scheduler=scheduler,
224
+ cfg=cfg,
225
+ epoch=epoch,
226
+ global_step=global_step,
227
+ accelerator=accelerator,
228
+ val_dataloader=val_dataloader,
229
+ best_val_loss=best_val_loss,
230
+ max_steps=max_steps,
231
+ on_checkpoint=on_checkpoint_callback,
232
+ )
233
+
234
+ except KeyboardInterrupt:
235
+ log_message("Training interrupted by user", cfg, accelerator)
236
+ save_checkpoint(
237
+ model, optimizer, scheduler, global_step, epoch, cfg, accelerator,
238
+ model_only=True,
239
+ )
240
+
241
+ # === Final Save ===
242
+ log_message("\nTraining completed!", cfg, accelerator)
243
+
244
+ if accelerator.is_main_process:
245
+ final_model_path = Path(cfg.paths.output_dir) / "model_final.pt"
246
+ unwrapped_model = accelerator.unwrap_model(model)
247
+ torch.save(unwrapped_model.state_dict(), final_model_path)
248
+ log_message(f"Final model: {final_model_path}", cfg, accelerator)
249
+
250
+ # Save final routing weights
251
+ save_routing_weights(unwrapped_model, global_step, Path(cfg.paths.output_dir))
252
+
253
+ accelerator.wait_for_everyone()
254
+ accelerator.end_training()
255
+ finish_tracking()
256
+
257
+
258
+ if __name__ == "__main__":
259
+ main()
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/config.yaml ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ _wandb:
2
+ value:
3
+ cli_version: 0.24.0
4
+ code_path: code/routing_evolution_exp/train.py
5
+ e:
6
+ z2zlg43ve4muflqdo00pdy9eowuzib74:
7
+ args:
8
+ - training.load_balancing_N=4.0
9
+ - tracking.run_name=routing_N4.0
10
+ codePath: routing_evolution_exp/train.py
11
+ codePathLocal: train.py
12
+ cpu_count: 36
13
+ cpu_count_logical: 72
14
+ cudaVersion: "13.2"
15
+ disk:
16
+ /:
17
+ total: "234075717632"
18
+ used: "19258163200"
19
+ email: nikita@local.ru
20
+ executable: /venv/bytellm/bin/python
21
+ git:
22
+ commit: 379d14a9668cada0997ccd4dfc2cc9ecb683c623
23
+ remote: https://github.com/naryst/byte-llms-code.git
24
+ gpu: NVIDIA A100 80GB PCIe
25
+ gpu_count: 1
26
+ gpu_nvidia:
27
+ - architecture: Ampere
28
+ cudaCores: 6912
29
+ memoryTotal: "85899345920"
30
+ name: NVIDIA A100 80GB PCIe
31
+ uuid: GPU-ec9764c4-224a-9508-002f-de7762d78498
32
+ host: 1a023b226280
33
+ memory:
34
+ total: "404274495488"
35
+ os: Linux-6.8.0-117-generic-x86_64-with-glibc2.39
36
+ program: /workspace/byte-llms-code/routing_evolution_exp/train.py
37
+ python: CPython 3.12.0
38
+ root: outputs/2026-05-24/N_4.0
39
+ startedAt: "2026-05-24T00:08:55.906418Z"
40
+ writerId: z2zlg43ve4muflqdo00pdy9eowuzib74
41
+ m: []
42
+ python_version: 3.12.0
43
+ t:
44
+ "1":
45
+ - 1
46
+ - 11
47
+ - 49
48
+ - 50
49
+ - 51
50
+ - 71
51
+ - 105
52
+ "2":
53
+ - 1
54
+ - 11
55
+ - 49
56
+ - 50
57
+ - 51
58
+ - 71
59
+ - 105
60
+ "3":
61
+ - 2
62
+ - 13
63
+ - 16
64
+ - 61
65
+ "4": 3.12.0
66
+ "5": 0.24.0
67
+ "6": 4.57.6
68
+ "12": 0.24.0
69
+ "13": linux-x86_64
70
+ data:
71
+ value:
72
+ max_context_len: 4096
73
+ max_target_len: 256
74
+ max_train_samples: 150000
75
+ max_val_samples: null
76
+ num_workers: 0
77
+ path: /workspace/byte-llms-code/code_completion_exp/datasets/data_V4_full
78
+ pin_memory: true
79
+ device:
80
+ value: cuda
81
+ logging:
82
+ value:
83
+ eval_interval: 1000
84
+ log_interval: 10
85
+ model_only_checkpoints: true
86
+ save_every_epoch: false
87
+ save_interval: 3000
88
+ model:
89
+ value:
90
+ checkpoint_path: /workspace/byte-llms-code/hnet_project/checkpoints/hnet_2stage_XL_code.pt
91
+ config_path: /workspace/byte-llms-code/hnet_project/configs/hnet_2stage_XL_code.json
92
+ paths:
93
+ value:
94
+ output_dir: outputs/2026-05-24/N_4.0
95
+ seed:
96
+ value: 42
97
+ tracking:
98
+ value:
99
+ backend: wandb
100
+ base_url: https://wandb.platun0v.ru
101
+ enabled: true
102
+ entity: null
103
+ local_dir: outputs/2026-05-24/N_4.0
104
+ project: routing-evolution
105
+ run_name: routing_N4.0
106
+ training:
107
+ value:
108
+ batch_size: 8
109
+ betas:
110
+ - 0.9
111
+ - 0.95
112
+ decay_ratio: 0.2
113
+ epochs: 3
114
+ eps: 1e-08
115
+ eval_batch_size: 24
116
+ gradient_accumulation_steps: 4
117
+ load_balancing_N: 4
118
+ load_balancing_weight: 0.5
119
+ lr: 0.0001
120
+ lr_multiplier:
121
+ - 2
122
+ - 1.5
123
+ - 1
124
+ lr_scheduler: wsd
125
+ max_grad_norm: 1
126
+ max_steps: null
127
+ min_lr_ratio: 0.1
128
+ resume: false
129
+ resume_checkpoint: null
130
+ use_amp: true
131
+ warmup_model: true
132
+ warmup_ratio: 0.1
133
+ warmup_steps: 100
134
+ weight_decay: 0.1
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/output.log ADDED
The diff for this file is too large to render. See raw diff
 
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/requirements.txt ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ setuptools==78.1.1
2
+ wheel==0.45.1
3
+ pip==25.2
4
+ webencodings==0.5.1
5
+ triton==3.2.0
6
+ pytz==2025.2
7
+ pydub==0.25.1
8
+ pure_eval==0.2.3
9
+ ptyprocess==0.7.0
10
+ nvidia-ml-py==13.590.48
11
+ nvidia-cusparselt-cu12==0.6.2
12
+ mpmath==1.3.0
13
+ ipython-genutils==0.2.0
14
+ fastjsonschema==2.21.2
15
+ brotli==1.2.0
16
+ antlr4-python3-runtime==4.9.3
17
+ xxhash==3.6.0
18
+ widgetsnbextension==4.0.14
19
+ websocket-client==1.9.0
20
+ webcolors==24.11.1
21
+ wcwidth==0.2.14
22
+ urllib3==2.5.0
23
+ uri-template==1.3.0
24
+ tzdata==2025.2
25
+ typing_extensions==4.15.0
26
+ types-python-dateutil==2.9.0.20251008
27
+ traitlets==5.14.3
28
+ tqdm==4.67.1
29
+ tornado==6.5.2
30
+ tomlkit==0.13.3
31
+ tinycss2==1.4.0
32
+ tabulate==0.9.0
33
+ sympy==1.13.1
34
+ soupsieve==2.8
35
+ sniffio==1.3.1
36
+ smmap==5.0.2
37
+ six==1.17.0
38
+ shellingham==1.5.4
39
+ Send2Trash==1.8.3
40
+ semantic-version==2.10.0
41
+ safetensors==0.6.2
42
+ rpds-py==0.27.1
43
+ rfc3986-validator==0.1.1
44
+ regex==2025.9.18
45
+ pyzmq==27.1.0
46
+ PyYAML==6.0.3
47
+ python-multipart==0.0.22
48
+ python-json-logger==4.0.0
49
+ python-dotenv==1.2.1
50
+ pyparsing==3.2.5
51
+ PyJWT==2.8.0
52
+ Pygments==2.19.2
53
+ pycparser==2.23
54
+ pyarrow==22.0.0
55
+ psutil==7.1.0
56
+ protobuf==6.33.4
57
+ propcache==0.4.1
58
+ prometheus_client==0.23.1
59
+ portalocker==3.2.0
60
+ platformdirs==4.5.0
61
+ pillow==11.3.0
62
+ pexpect==4.9.0
63
+ pathspec==1.0.4
64
+ parso==0.8.5
65
+ pandocfilters==1.5.1
66
+ packaging==25.0
67
+ orjson==3.11.6
68
+ opt_einsum==3.4.0
69
+ nvidia-nvtx-cu12==12.4.127
70
+ nvidia-nvjitlink-cu12==12.4.127
71
+ nvidia-nccl-cu12==2.21.5
72
+ nvidia-curand-cu12==10.3.5.147
73
+ nvidia-cufile-cu12==1.13.1.3
74
+ nvidia-cufft-cu12==11.2.1.3
75
+ nvidia-cuda-runtime-cu12==12.4.127
76
+ nvidia-cuda-nvrtc-cu12==12.4.127
77
+ nvidia-cuda-cupti-cu12==12.4.127
78
+ nvidia-cublas-cu12==12.4.5.8
79
+ numpy==2.3.3
80
+ ninja==1.13.0
81
+ networkx==3.5
82
+ nest-asyncio==1.6.0
83
+ narwhals==2.15.0
84
+ mypy_extensions==1.1.0
85
+ multidict==6.7.0
86
+ mistune==3.1.4
87
+ mdurl==0.1.2
88
+ MarkupSafe==3.0.3
89
+ lxml==6.0.2
90
+ librt==0.8.0
91
+ lark==1.3.0
92
+ kiwisolver==1.4.9
93
+ jupyterlab_widgets==3.0.15
94
+ jupyterlab_pygments==0.3.0
95
+ jsonpointer==3.0.0
96
+ json5==0.12.1
97
+ itsdangerous==2.2.0
98
+ idna==3.10
99
+ hf-xet==1.1.10
100
+ h11==0.16.0
101
+ groovy==0.1.2
102
+ fsspec==2025.9.0
103
+ frozenlist==1.8.0
104
+ fqdn==1.5.1
105
+ fonttools==4.60.1
106
+ filelock==3.19.1
107
+ ffmpy==1.0.0
108
+ executing==2.2.1
109
+ einops==0.8.1
110
+ dill==0.4.0
111
+ defusedxml==0.7.1
112
+ decorator==5.2.1
113
+ debugpy==1.8.17
114
+ dacite==1.9.2
115
+ cycler==0.12.1
116
+ comm==0.2.3
117
+ colorama==0.4.6
118
+ click==8.3.1
119
+ charset-normalizer==3.4.3
120
+ certifi==2025.10.5
121
+ bleach==6.2.0
122
+ babel==2.17.0
123
+ attrs==25.4.0
124
+ async-lru==2.0.5
125
+ asttokens==3.0.0
126
+ annotated-types==0.7.0
127
+ annotated-doc==0.0.4
128
+ aiohappyeyeballs==2.6.1
129
+ aiofiles==24.1.0
130
+ yarl==1.22.0
131
+ uvicorn==0.40.0
132
+ typing-inspection==0.4.2
133
+ terminado==0.18.1
134
+ stack-data==0.6.3
135
+ sentry-sdk==2.50.0
136
+ scipy==1.17.0
137
+ sacrebleu==2.6.0
138
+ rfc3987-syntax==1.1.0
139
+ rfc3339-validator==0.1.4
140
+ requests==2.32.5
141
+ reportlab==4.4.9
142
+ referencing==0.36.2
143
+ python-dateutil==2.9.0.post0
144
+ pydantic_core==2.41.5
145
+ prompt_toolkit==3.0.52
146
+ plotly==6.5.2
147
+ pathlib2==2.3.7.post1
148
+ orderedmultidict==1.0.2
149
+ optree==0.17.0
150
+ omegaconf==2.3.0
151
+ nvidia-cusparse-cu12==12.3.1.170
152
+ nvidia-cudnn-cu12==9.1.0.70
153
+ mypy==1.19.1
154
+ multiprocess==0.70.16
155
+ matplotlib-inline==0.1.7
156
+ markdown-it-py==4.0.0
157
+ jupyter_core==5.8.1
158
+ Jinja2==3.1.6
159
+ jedi==0.19.2
160
+ ipython_pygments_lexers==1.1.1
161
+ httpcore==1.0.9
162
+ gitdb==4.0.12
163
+ ftfy==6.3.1
164
+ contourpy==1.3.3
165
+ cffi==2.0.0
166
+ beautifulsoup4==4.14.2
167
+ anyio==4.11.0
168
+ aiosignal==1.4.0
169
+ starlette==0.50.0
170
+ rich==14.2.0
171
+ pydantic==2.12.5
172
+ pandas==2.3.3
173
+ nvidia-cusolver-cu12==11.6.1.9
174
+ matplotlib==3.10.7
175
+ jupyter_server_terminals==0.5.3
176
+ jupyter_client==8.6.3
177
+ jsonschema-specifications==2025.9.1
178
+ ipython==9.6.0
179
+ hydra-core==1.3.2
180
+ huggingface-hub==0.35.3
181
+ httpx==0.28.1
182
+ GitPython==3.1.46
183
+ furl==2.1.4
184
+ cryptography==46.0.4
185
+ arrow==1.3.0
186
+ argon2-cffi-bindings==25.1.0
187
+ aiohttp==3.13.1
188
+ wandb==0.24.0
189
+ typer==0.21.1
190
+ torch==2.6.0
191
+ tokenizers==0.22.1
192
+ seaborn==0.13.2
193
+ safehttpx==0.1.7
194
+ jsonschema==4.25.1
195
+ joypy==0.2.6
196
+ isoduration==20.11.0
197
+ ipywidgets==8.1.7
198
+ ipykernel==6.30.1
199
+ gradio_client==2.0.3
200
+ fastapi==0.128.0
201
+ Authlib==1.6.6
202
+ argon2-cffi==25.1.0
203
+ transformers==4.57.6
204
+ nbformat==5.10.4
205
+ mlstm_kernels==2.0.2
206
+ jupyter-console==6.6.3
207
+ gradio==6.5.1
208
+ datasets==4.3.0
209
+ clearml==1.16.4
210
+ accelerate==1.10.1
211
+ xlstm==2.0.4
212
+ nbclient==0.10.2
213
+ jupyter-events==0.12.0
214
+ trackio==0.15.0
215
+ nbconvert==7.16.6
216
+ jupyter_server==2.17.0
217
+ notebook_shim==0.2.4
218
+ jupyterlab_server==2.27.3
219
+ jupyter-lsp==2.3.0
220
+ nbclassic==1.3.3
221
+ jupyterlab==4.4.9
222
+ notebook==7.4.7
223
+ jupyter_contrib_core==0.4.2
224
+ jupyter==1.1.1
225
+ jupyter_nbextensions_configurator==0.6.4
226
+ causal-conv1d==1.5.0.post8
227
+ flash_attn==2.7.4.post1
228
+ mamba-ssm==2.2.4
229
+ hnet==0.0.1
230
+ autocommand==2.2.2
231
+ backports.tarfile==1.2.0
232
+ importlib_metadata==8.0.0
233
+ inflect==7.3.1
234
+ jaraco.collections==5.1.0
235
+ jaraco.context==5.3.0
236
+ jaraco.functools==4.0.1
237
+ jaraco.text==3.12.1
238
+ more-itertools==10.3.0
239
+ packaging==24.2
240
+ platformdirs==4.2.2
241
+ tomli==2.0.1
242
+ typeguard==4.3.0
243
+ typing_extensions==4.12.2
244
+ wheel==0.45.1
245
+ zipp==3.19.2
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/wandb-metadata.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "os": "Linux-6.8.0-117-generic-x86_64-with-glibc2.39",
3
+ "python": "CPython 3.12.0",
4
+ "startedAt": "2026-05-24T00:08:55.906418Z",
5
+ "args": [
6
+ "training.load_balancing_N=4.0",
7
+ "tracking.run_name=routing_N4.0"
8
+ ],
9
+ "program": "/workspace/byte-llms-code/routing_evolution_exp/train.py",
10
+ "codePath": "routing_evolution_exp/train.py",
11
+ "codePathLocal": "train.py",
12
+ "git": {
13
+ "remote": "https://github.com/naryst/byte-llms-code.git",
14
+ "commit": "379d14a9668cada0997ccd4dfc2cc9ecb683c623"
15
+ },
16
+ "email": "nikita@local.ru",
17
+ "root": "outputs/2026-05-24/N_4.0",
18
+ "host": "1a023b226280",
19
+ "executable": "/venv/bytellm/bin/python",
20
+ "cpu_count": 36,
21
+ "cpu_count_logical": 72,
22
+ "gpu": "NVIDIA A100 80GB PCIe",
23
+ "gpu_count": 1,
24
+ "disk": {
25
+ "/": {
26
+ "total": "234075717632",
27
+ "used": "19258163200"
28
+ }
29
+ },
30
+ "memory": {
31
+ "total": "404274495488"
32
+ },
33
+ "gpu_nvidia": [
34
+ {
35
+ "name": "NVIDIA A100 80GB PCIe",
36
+ "memoryTotal": "85899345920",
37
+ "cudaCores": 6912,
38
+ "architecture": "Ampere",
39
+ "uuid": "GPU-ec9764c4-224a-9508-002f-de7762d78498"
40
+ }
41
+ ],
42
+ "cudaVersion": "13.2",
43
+ "writerId": "z2zlg43ve4muflqdo00pdy9eowuzib74"
44
+ }
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/files/wandb-summary.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"train/chunk_len_stage1":3.7689440605218008,"epoch/time":6862.479820966721,"epoch/chunk_len_stage1":3.768936003925935,"train/loss_avg":0.6704201395001311,"epoch/lb_loss":1.0050465959919677,"val/loss":0.8624915001269956,"epoch/hard_boundary_ratio_stage1":0.2669156306836737,"train/lb_loss":1.005639910697937,"train/step_time":1.1793010473251342,"train/loss":0.7162025570869446,"epoch/hard_boundary_ratio_stage0":0.3051249442133256,"_wandb":{"runtime":20591},"train/lm_loss":0.2354137897491455,"_timestamp":1.7796019244511673e+09,"epoch/chunk_len_stage0":3.2934883223119016,"_runtime":20591,"train/chunk_len_stage0":3.293471209458221,"train/lr":1.0000112334056358e-05,"epoch/lm_loss":0.16870175194540082,"epoch/soft_boundary_ratio_stage1":0.2276137836633942,"train/soft_boundary_ratio_stage0":0.27827713203132676,"val/lb_loss":1.003298749773718,"best/val_loss":0.8111355487821693,"epoch/soft_boundary_ratio_stage0":0.2782757019771054,"train/soft_boundary_ratio_stage1":0.22761410650356756,"train/epoch":3,"val/time":310.03714394569397,"train/hard_boundary_ratio_stage0":0.3051268035055855,"epoch/loss":0.670409958929631,"_step":14060,"train/hard_boundary_ratio_stage1":0.26691539681754184,"val/lm_loss":0.36084212524862774,"val/perplexity":1.435598828320708,"best/val_perplexity":1.3604376124872215,"best/step":4000}
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/logs/debug-core.log ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"time":"2026-05-24T00:08:56.021099149Z","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp4j1iv4zy/port-72724.txt","pid":72724,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false}
2
+ {"time":"2026-05-24T00:08:56.022013237Z","level":"INFO","msg":"server: will exit if parent process dies","ppid":72724}
3
+ {"time":"2026-05-24T00:08:56.022018469Z","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-72724-72749-3844324162/socket","Net":"unix"}}
4
+ {"time":"2026-05-24T00:08:56.207582876Z","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"}
5
+ {"time":"2026-05-24T00:08:56.233767735Z","level":"INFO","msg":"handleInformInit: received","streamId":"j30yot8x","id":"1(@)"}
6
+ {"time":"2026-05-24T00:08:56.701835812Z","level":"INFO","msg":"handleInformInit: stream started","streamId":"j30yot8x","id":"1(@)"}
7
+ {"time":"2026-05-24T05:52:10.06971293Z","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"j30yot8x","id":"1(@)"}
8
+ {"time":"2026-05-24T05:52:10.071358673Z","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"j30yot8x","id":"1(@)"}
9
+ {"time":"2026-05-24T05:52:10.093318012Z","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"}
10
+ {"time":"2026-05-24T05:52:10.093355414Z","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"}
11
+ {"time":"2026-05-24T05:52:10.09337123Z","level":"INFO","msg":"server is shutting down"}
12
+ {"time":"2026-05-24T05:52:10.093383808Z","level":"INFO","msg":"connection: closing","id":"1(@)"}
13
+ {"time":"2026-05-24T05:52:10.093478832Z","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-72724-72749-3844324162/socket","Net":"unix"}}
14
+ {"time":"2026-05-24T05:52:10.093492062Z","level":"INFO","msg":"connection: closed successfully","id":"1(@)"}
15
+ {"time":"2026-05-24T05:52:10.093546291Z","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"}
16
+ {"time":"2026-05-24T05:52:10.093563501Z","level":"INFO","msg":"server is closed"}
routing_rerun/N_4.0/wandb/run-20260524_000855-j30yot8x/logs/debug-internal.log ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"time":"2026-05-24T00:08:56.234024021Z","level":"INFO","msg":"stream: starting","core version":"0.24.0"}
2
+ {"time":"2026-05-24T00:08:56.701391294Z","level":"INFO","msg":"stream: created new stream","id":"j30yot8x"}
3
+ {"time":"2026-05-24T00:08:56.701517641Z","level":"INFO","msg":"handler: started","stream_id":"j30yot8x"}
4
+ {"time":"2026-05-24T00:08:56.701810168Z","level":"INFO","msg":"stream: started","id":"j30yot8x"}
5
+ {"time":"2026-05-24T00:08:56.701847254Z","level":"INFO","msg":"sender: started","stream_id":"j30yot8x"}
6
+ {"time":"2026-05-24T00:08:56.701851256Z","level":"INFO","msg":"writer: started","stream_id":"j30yot8x"}
7
+ {"time":"2026-05-24T00:08:56.8332083Z","level":"ERROR","msg":"git repo not found","error":"repository does not exist"}
8
+ {"time":"2026-05-24T01:16:01.045615831Z","level":"INFO","msg":"api: retrying HTTP error","status":502,"url":"https://wandb.platun0v.ru/files/nikita/routing-evolution/j30yot8x/file_stream","body":"Bad Gateway"}
9
+ {"time":"2026-05-24T05:52:09.949995651Z","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"}
10
+ {"time":"2026-05-24T05:52:10.063200014Z","level":"INFO","msg":"handler: operation stats","stats":{}}
11
+ {"time":"2026-05-24T05:52:10.069795312Z","level":"INFO","msg":"stream: closing","id":"j30yot8x"}
12
+ {"time":"2026-05-24T05:52:10.069837927Z","level":"INFO","msg":"handler: closed","stream_id":"j30yot8x"}
13
+ {"time":"2026-05-24T05:52:10.070129075Z","level":"INFO","msg":"sender: closed","stream_id":"j30yot8x"}
14
+ {"time":"2026-05-24T05:52:10.070155803Z","level":"INFO","msg":"stream: closed","id":"j30yot8x"}
routing_rerun/N_6.0/.hydra/config.yaml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model:
2
+ config_path: ${oc.env:PROJECT_ROOT}/hnet_project/configs/hnet_2stage_XL_code.json
3
+ checkpoint_path: ${oc.env:PROJECT_ROOT}/hnet_project/checkpoints/hnet_2stage_XL_code.pt
4
+ training:
5
+ epochs: 3
6
+ max_steps: null
7
+ batch_size: 8
8
+ eval_batch_size: 24
9
+ gradient_accumulation_steps: 4
10
+ lr: 0.0001
11
+ weight_decay: 0.1
12
+ betas:
13
+ - 0.9
14
+ - 0.95
15
+ eps: 1.0e-08
16
+ lr_scheduler: wsd
17
+ warmup_ratio: 0.1
18
+ decay_ratio: 0.2
19
+ warmup_steps: 100
20
+ min_lr_ratio: 0.1
21
+ lr_multiplier:
22
+ - 2.0
23
+ - 1.5
24
+ - 1.0
25
+ load_balancing_weight: 0.5
26
+ load_balancing_N: 6.0
27
+ max_grad_norm: 1.0
28
+ use_amp: true
29
+ resume: false
30
+ resume_checkpoint: null
31
+ warmup_model: true
32
+ data:
33
+ path: ${oc.env:PROJECT_ROOT}/code_completion_exp/datasets/data_V4_full
34
+ max_context_len: 4096
35
+ max_target_len: 256
36
+ num_workers: 0
37
+ pin_memory: true
38
+ max_train_samples: 150000
39
+ max_val_samples: null
40
+ logging:
41
+ log_interval: 10
42
+ save_interval: 3000
43
+ eval_interval: 1000
44
+ save_every_epoch: false
45
+ model_only_checkpoints: true
46
+ tracking:
47
+ enabled: true
48
+ backend: wandb
49
+ project: routing-evolution
50
+ run_name: routing_N6.0
51
+ entity: null
52
+ base_url: https://wandb.platun0v.ru
53
+ local_dir: ${paths.output_dir}
54
+ paths:
55
+ output_dir: outputs/${now:%Y-%m-%d}/N_${training.load_balancing_N}
56
+ seed: 42
57
+ device: cuda
routing_rerun/N_6.0/.hydra/hydra.yaml ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${paths.output_dir}
4
+ sweep:
5
+ dir: outputs/multirun/${now:%Y-%m-%d}/${now:%H-%M-%S}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ _target_: hydra._internal.core_plugins.basic_launcher.BasicLauncher
9
+ sweeper:
10
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
11
+ max_batch_size: null
12
+ params: null
13
+ help:
14
+ app_name: ${hydra.job.name}
15
+ header: '${hydra.help.app_name} is powered by Hydra.
16
+
17
+ '
18
+ footer: 'Powered by Hydra (https://hydra.cc)
19
+
20
+ Use --hydra-help to view Hydra specific help
21
+
22
+ '
23
+ template: '${hydra.help.header}
24
+
25
+ == Configuration groups ==
26
+
27
+ Compose your configuration from those groups (group=option)
28
+
29
+
30
+ $APP_CONFIG_GROUPS
31
+
32
+
33
+ == Config ==
34
+
35
+ Override anything in the config (foo.bar=value)
36
+
37
+
38
+ $CONFIG
39
+
40
+
41
+ ${hydra.help.footer}
42
+
43
+ '
44
+ hydra_help:
45
+ template: 'Hydra (${hydra.runtime.version})
46
+
47
+ See https://hydra.cc for more info.
48
+
49
+
50
+ == Flags ==
51
+
52
+ $FLAGS_HELP
53
+
54
+
55
+ == Configuration groups ==
56
+
57
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
58
+ to command line)
59
+
60
+
61
+ $HYDRA_CONFIG_GROUPS
62
+
63
+
64
+ Use ''--cfg hydra'' to Show the Hydra config.
65
+
66
+ '
67
+ hydra_help: ???
68
+ hydra_logging:
69
+ version: 1
70
+ formatters:
71
+ simple:
72
+ format: '[%(asctime)s][HYDRA] %(message)s'
73
+ handlers:
74
+ console:
75
+ class: logging.StreamHandler
76
+ formatter: simple
77
+ stream: ext://sys.stdout
78
+ root:
79
+ level: INFO
80
+ handlers:
81
+ - console
82
+ loggers:
83
+ logging_example:
84
+ level: DEBUG
85
+ disable_existing_loggers: false
86
+ job_logging:
87
+ version: 1
88
+ formatters:
89
+ simple:
90
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
91
+ handlers:
92
+ console:
93
+ class: logging.StreamHandler
94
+ formatter: simple
95
+ stream: ext://sys.stdout
96
+ file:
97
+ class: logging.FileHandler
98
+ formatter: simple
99
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
100
+ root:
101
+ level: INFO
102
+ handlers:
103
+ - console
104
+ - file
105
+ disable_existing_loggers: false
106
+ env: {}
107
+ mode: RUN
108
+ searchpath: []
109
+ callbacks: {}
110
+ output_subdir: .hydra
111
+ overrides:
112
+ hydra:
113
+ - hydra.mode=RUN
114
+ task:
115
+ - training.load_balancing_N=6.0
116
+ - tracking.run_name=routing_N6.0
117
+ job:
118
+ name: train
119
+ chdir: false
120
+ override_dirname: tracking.run_name=routing_N6.0,training.load_balancing_N=6.0
121
+ id: ???
122
+ num: ???
123
+ config_name: config
124
+ env_set: {}
125
+ env_copy: []
126
+ config:
127
+ override_dirname:
128
+ kv_sep: '='
129
+ item_sep: ','
130
+ exclude_keys: []
131
+ runtime:
132
+ version: 1.3.2
133
+ version_base: '1.3'
134
+ cwd: /workspace/byte-llms-code/routing_evolution_exp
135
+ config_sources:
136
+ - path: hydra.conf
137
+ schema: pkg
138
+ provider: hydra
139
+ - path: /workspace/byte-llms-code/routing_evolution_exp/configs
140
+ schema: file
141
+ provider: main
142
+ - path: ''
143
+ schema: structured
144
+ provider: schema
145
+ output_dir: /workspace/byte-llms-code/routing_evolution_exp/outputs/2026-05-24/N_6.0
146
+ choices:
147
+ paths: default
148
+ tracking: default
149
+ logging: default
150
+ data: default
151
+ training: default
152
+ model: hnet_xl_code
153
+ hydra/env: default
154
+ hydra/callbacks: null
155
+ hydra/job_logging: default
156
+ hydra/hydra_logging: default
157
+ hydra/hydra_help: default
158
+ hydra/help: default
159
+ hydra/sweeper: basic
160
+ hydra/launcher: basic
161
+ hydra/output: default
162
+ verbose: false
routing_rerun/N_6.0/.hydra/overrides.yaml ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ - training.load_balancing_N=6.0
2
+ - tracking.run_name=routing_N6.0
routing_rerun/N_6.0/checkpoints/checkpoint_latest.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b9343a25637fd3c00c26704d7773c184e2c6fd1c695bb11d898f6484db6a4585
3
+ size 3315169346
routing_rerun/N_6.0/checkpoints/checkpoint_step_12000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0994a16edf205e510663d239bbd034caab8d2850f01ed41311785361443dfc45
3
+ size 3315170726
routing_rerun/N_6.0/checkpoints/checkpoint_step_3000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:30b3ba319f811d546e404e6053d6fef6728d22b744e77b028d0cba49413defbf
3
+ size 3315170381
routing_rerun/N_6.0/checkpoints/checkpoint_step_6000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:22343bc626d98a030d846288d49e4f870af093244bf992be3004a31555077630
3
+ size 3315170381
routing_rerun/N_6.0/checkpoints/checkpoint_step_9000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9d243021548005fe67971d07b5f52e1f6183d289de40963d77bf5ab59adb80f9
3
+ size 3315170381
routing_rerun/N_6.0/eval_results/eval_config.yaml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model:
2
+ config_path: /workspace/byte-llms-code/hnet_project/configs/hnet_2stage_XL_code.json
3
+ checkpoint_path: /workspace/byte-llms-code/hnet_project/checkpoints/hnet_2stage_XL_code.pt
4
+ data:
5
+ path: /workspace/byte-llms-code/code_completion_exp/datasets/data_V4_full
6
+ max_context_len: 4096
7
+ max_target_len: 256
8
+ num_workers: 0
9
+ pin_memory: true
10
+ max_train_samples: 150000
11
+ max_val_samples: null
12
+ evaluation:
13
+ batch_size: 16
14
+ max_samples: 2000
15
+ compute_bpb: true
16
+ bleu_tokenize: none
17
+ use_amp: true
18
+ save_predictions: true
19
+ generation:
20
+ max_length: 256
21
+ temperature: 0.1
22
+ top_k: 0
23
+ top_p: 1.0
24
+ paths:
25
+ run_dir: outputs/2026-05-24/N_6.0
26
+ eval_initial: true
27
+ eval_final: true
28
+ seed: 42
29
+ device: cuda
routing_rerun/N_6.0/eval_results/metrics_model_best.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Checkpoint: model_best (outputs/2026-05-24/N_6.0/model_best.pt)
2
+ ================================================================================
3
+
4
+ exact_match: 0.2945
5
+ token_accuracy: 0.4274717137100246
6
+ bleu: 13.724561822061911
7
+ bpb: 1.3975490092372271
8
+ num_samples: 2000
9
+ gen_wall_time_s: 312.76023558113957
10
+ gen_samples_per_s: 6.394674809870895
11
+ gen_time_per_sample_ms: 156.38011779056978
12
+ gen_chars_per_s: 172.20539529241827
13
+ gen_batch_mean_ms: 2502.0818846491165
14
+ gen_batch_p50_ms: 2298.0513839866035
15
+ gen_batch_p95_ms: 4876.716210239101
16
+ gen_batch_max_ms: 7006.153669033665
17
+ gen_num_batches: 125
routing_rerun/N_6.0/eval_results/metrics_model_final.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Checkpoint: model_final (outputs/2026-05-24/N_6.0/model_final.pt)
2
+ ================================================================================
3
+
4
+ exact_match: 0.266
5
+ token_accuracy: 0.405445433723113
6
+ bleu: 12.143190186967047
7
+ bpb: 1.4800909646911653
8
+ num_samples: 2000
9
+ gen_wall_time_s: 339.75642288831295
10
+ gen_samples_per_s: 5.886570099242697
11
+ gen_time_per_sample_ms: 169.87821144415648
12
+ gen_chars_per_s: 169.45375016184988
13
+ gen_batch_mean_ms: 2718.0513831065036
14
+ gen_batch_p50_ms: 2349.4825870147906
15
+ gen_batch_p95_ms: 5625.178886170033
16
+ gen_batch_max_ms: 5939.189083001111
17
+ gen_num_batches: 125
routing_rerun/N_6.0/eval_results/metrics_pretrained.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Checkpoint: pretrained (/workspace/byte-llms-code/hnet_project/checkpoints/hnet_2stage_XL_code.pt)
2
+ ================================================================================
3
+
4
+ exact_match: 0.0
5
+ token_accuracy: 0.46647837842492296
6
+ bleu: 1.0987264273338606
7
+ bpb: 1.8771313252548079
8
+ num_samples: 2000
9
+ gen_wall_time_s: 1851.4914190099225
10
+ gen_samples_per_s: 1.0802102453542517
11
+ gen_time_per_sample_ms: 925.7457095049613
12
+ gen_chars_per_s: 275.8138626821598
13
+ gen_batch_mean_ms: 14811.93135207938
14
+ gen_batch_p50_ms: 15092.08012802992
15
+ gen_batch_p95_ms: 15535.188522632234
16
+ gen_batch_max_ms: 36298.368007002864
17
+ gen_num_batches: 125
routing_rerun/N_6.0/eval_results/predictions_model_best.txt ADDED
The diff for this file is too large to render. See raw diff
 
routing_rerun/N_6.0/eval_results/predictions_model_final.txt ADDED
The diff for this file is too large to render. See raw diff
 
routing_rerun/N_6.0/eval_results/predictions_pretrained.txt ADDED
The diff for this file is too large to render. See raw diff
 
routing_rerun/N_6.0/eval_results/summary.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ EVALUATION SUMMARY
2
+ =============================================================================
3
+
4
+ Checkpoint Exact Match Token Acc BLEU BPB ms/sample
5
+ -----------------------------------------------------------------------------
6
+ pretrained 0.00% 46.65% 1.10 1.8771 925.7
7
+ model_best 29.45% 42.75% 13.72 1.3975 156.4
8
+ model_final 26.60% 40.54% 12.14 1.4801 169.9
routing_rerun/N_6.0/wandb/debug-internal.log ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"time":"2026-05-24T05:52:22.647937006Z","level":"INFO","msg":"stream: starting","core version":"0.24.0"}
2
+ {"time":"2026-05-24T05:52:23.102485815Z","level":"INFO","msg":"stream: created new stream","id":"tjovd8fs"}
3
+ {"time":"2026-05-24T05:52:23.102632811Z","level":"INFO","msg":"handler: started","stream_id":"tjovd8fs"}
4
+ {"time":"2026-05-24T05:52:23.102884167Z","level":"INFO","msg":"stream: started","id":"tjovd8fs"}
5
+ {"time":"2026-05-24T05:52:23.102920051Z","level":"INFO","msg":"sender: started","stream_id":"tjovd8fs"}
6
+ {"time":"2026-05-24T05:52:23.102924565Z","level":"INFO","msg":"writer: started","stream_id":"tjovd8fs"}
7
+ {"time":"2026-05-24T05:52:23.243158587Z","level":"ERROR","msg":"git repo not found","error":"repository does not exist"}
8
+ {"time":"2026-05-24T06:57:38.830216521Z","level":"INFO","msg":"api: retrying HTTP error","status":502,"url":"https://wandb.platun0v.ru/files/nikita/routing-evolution/tjovd8fs/file_stream","body":"Bad Gateway"}
9
+ {"time":"2026-05-24T11:16:57.561181762Z","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"}
10
+ {"time":"2026-05-24T11:16:57.667532298Z","level":"INFO","msg":"handler: operation stats","stats":{}}
11
+ {"time":"2026-05-24T11:16:57.673785539Z","level":"INFO","msg":"stream: closing","id":"tjovd8fs"}
12
+ {"time":"2026-05-24T11:16:57.673813908Z","level":"INFO","msg":"handler: closed","stream_id":"tjovd8fs"}
13
+ {"time":"2026-05-24T11:16:57.67401224Z","level":"INFO","msg":"sender: closed","stream_id":"tjovd8fs"}
14
+ {"time":"2026-05-24T11:16:57.674029503Z","level":"INFO","msg":"stream: closed","id":"tjovd8fs"}
routing_rerun/N_6.0/wandb/debug.log ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_setup.py:_flush():81] Current SDK version is 0.24.0
2
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_setup.py:_flush():81] Configure stats pid to 73212
3
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_setup.py:_flush():81] Loading settings from environment variables
4
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:setup_run_log_directory():717] Logging user logs to outputs/2026-05-24/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug.log
5
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to outputs/2026-05-24/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug-internal.log
6
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:init():844] calling init triggers
7
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:init():849] wandb.init called with sweep_config: {}
8
+ config: {'model': {'config_path': '/workspace/byte-llms-code/hnet_project/configs/hnet_2stage_XL_code.json', 'checkpoint_path': '/workspace/byte-llms-code/hnet_project/checkpoints/hnet_2stage_XL_code.pt'}, 'training': {'epochs': 3, 'max_steps': None, 'batch_size': 8, 'eval_batch_size': 24, 'gradient_accumulation_steps': 4, 'lr': 0.0001, 'weight_decay': 0.1, 'betas': [0.9, 0.95], 'eps': 1e-08, 'lr_scheduler': 'wsd', 'warmup_ratio': 0.1, 'decay_ratio': 0.2, 'warmup_steps': 100, 'min_lr_ratio': 0.1, 'lr_multiplier': [2.0, 1.5, 1.0], 'load_balancing_weight': 0.5, 'load_balancing_N': 6.0, 'max_grad_norm': 1.0, 'use_amp': True, 'resume': False, 'resume_checkpoint': None, 'warmup_model': True}, 'data': {'path': '/workspace/byte-llms-code/code_completion_exp/datasets/data_V4_full', 'max_context_len': 4096, 'max_target_len': 256, 'num_workers': 0, 'pin_memory': True, 'max_train_samples': 150000, 'max_val_samples': None}, 'logging': {'log_interval': 10, 'save_interval': 3000, 'eval_interval': 1000, 'save_every_epoch': False, 'model_only_checkpoints': True}, 'tracking': {'enabled': True, 'backend': 'wandb', 'project': 'routing-evolution', 'run_name': 'routing_N6.0', 'entity': None, 'base_url': 'https://wandb.platun0v.ru', 'local_dir': 'outputs/2026-05-24/N_6.0'}, 'paths': {'output_dir': 'outputs/2026-05-24/N_6.0'}, 'seed': 42, 'device': 'cuda', '_wandb': {'code_path': 'code/routing_evolution_exp/train.py'}}
9
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:init():892] starting backend
10
+ 2026-05-24 05:52:22,622 INFO MainThread:73212 [wandb_init.py:init():895] sending inform_init request
11
+ 2026-05-24 05:52:22,644 INFO MainThread:73212 [wandb_init.py:init():903] backend started and connected
12
+ 2026-05-24 05:52:22,650 INFO MainThread:73212 [wandb_init.py:init():973] updated telemetry
13
+ 2026-05-24 05:52:22,682 INFO MainThread:73212 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout
14
+ 2026-05-24 05:52:23,241 INFO MainThread:73212 [wandb_init.py:init():1044] starting run threads in backend
15
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_console_start():2529] atexit reg
16
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_redirect():2377] redirect: wrap_raw
17
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_redirect():2446] Wrapping output streams.
18
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_redirect():2469] Redirects installed.
19
+ 2026-05-24 05:52:23,497 INFO MainThread:73212 [wandb_init.py:init():1084] run started, returning control to user process
20
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_finish():2295] finishing run nikita/routing-evolution/tjovd8fs
21
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_atexit_cleanup():2494] got exitcode: 0
22
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_restore():2476] restore
23
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_restore():2482] restore done
24
+ 2026-05-24 11:16:57,672 INFO MainThread:73212 [wandb_run.py:_footer_sync_info():3870] logging synced files
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/code/routing_evolution_exp/train.py ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Routing Evolution Experiment: H-Net fine-tune с разными load_balancing_N.
3
+
4
+ Цель: изучить как routing module (W_q, W_k) эволюционирует при разном давлении сжатия.
5
+
6
+ Использование:
7
+ # Запуск с конкретным N
8
+ accelerate launch --config_file accelerate_config.yaml \
9
+ train.py training.load_balancing_N=6.0 tracking.run_name=routing_N6.0
10
+
11
+ # Запуск всех N через run_all.sh
12
+ bash run_all.sh
13
+ """
14
+
15
+ import math
16
+ import os
17
+ from pathlib import Path
18
+
19
+ import torch
20
+ import hydra
21
+ from hydra.core.hydra_config import HydraConfig
22
+ from omegaconf import DictConfig, OmegaConf
23
+ from accelerate import Accelerator
24
+ from accelerate.utils import set_seed as accelerate_set_seed
25
+
26
+ # HNet imports
27
+ from hnet.load_utils import load_from_pretrained, load_from_config
28
+ from hnet.utils.tokenizers import ByteTokenizer
29
+ from hnet.utils.train import group_params
30
+
31
+ # Ensure repo root is on sys.path (needed when running from subdirectory)
32
+ import sys
33
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
34
+
35
+ # Shared training library
36
+ from training_lib.utils import log_message
37
+ from training_lib.checkpointing import save_checkpoint, load_checkpoint
38
+ from training_lib.schedulers import get_lr_scheduler
39
+ from training_lib.tracking import init_tracking, finish_tracking
40
+ from training_lib.hnet.train_loop import train_epoch
41
+ from training_lib.hnet.data import create_dataloaders
42
+
43
+
44
+ def save_routing_weights(model, step, output_dir):
45
+ """Сохраняет только routing W_q/W_k для быстрого анализа weight evolution."""
46
+ routing_dir = output_dir / "routing_weights"
47
+ routing_dir.mkdir(parents=True, exist_ok=True)
48
+
49
+ state = model.state_dict()
50
+ routing_keys = [k for k in state if "routing_module" in k and "proj_layer" in k]
51
+ routing_weights = {k: state[k].cpu() for k in routing_keys}
52
+ torch.save(routing_weights, routing_dir / f"routing_step_{step}.pt")
53
+
54
+
55
+ def on_checkpoint_callback(model, step, output_dir):
56
+ """Callback для train_epoch: сохраняет routing weights при каждом checkpoint.
57
+
58
+ Модель уже unwrapped в train_loop перед вызовом callback.
59
+ """
60
+ save_routing_weights(model, step, output_dir)
61
+
62
+
63
+ @hydra.main(version_base=None, config_path="configs", config_name="config")
64
+ def main(cfg: DictConfig):
65
+ """Тренировка H-Net с фиксированным числом шагов для анализа routing evolution."""
66
+
67
+ # === Accelerator Setup ===
68
+ mixed_precision = "bf16" if cfg.training.use_amp else "no"
69
+
70
+ accelerator = Accelerator(
71
+ mixed_precision=mixed_precision,
72
+ gradient_accumulation_steps=cfg.training.gradient_accumulation_steps,
73
+ )
74
+
75
+ accelerate_set_seed(cfg.seed)
76
+
77
+ if cfg.paths.output_dir is None:
78
+ cfg.paths.output_dir = HydraConfig.get().runtime.output_dir
79
+
80
+ OmegaConf.resolve(cfg)
81
+
82
+ log_message(
83
+ f"CUDA_VISIBLE_DEVICES: {os.environ.get('CUDA_VISIBLE_DEVICES', 'not set')}",
84
+ cfg,
85
+ accelerator,
86
+ )
87
+ log_message(f"Number of processes: {accelerator.num_processes}", cfg, accelerator)
88
+ log_message(f"Mixed precision: {mixed_precision}", cfg, accelerator)
89
+
90
+ log_message("=" * 60, cfg, accelerator)
91
+ log_message(
92
+ f"Routing Evolution Experiment | N={cfg.training.load_balancing_N}",
93
+ cfg,
94
+ accelerator,
95
+ )
96
+ log_message("=" * 60, cfg, accelerator)
97
+ log_message(f"Config:\n{OmegaConf.to_yaml(cfg)}", cfg, accelerator)
98
+
99
+ # === Experiment Tracking Init ===
100
+ init_tracking(cfg, accelerator)
101
+
102
+ # === Tokenizer ===
103
+ tokenizer = ByteTokenizer()
104
+
105
+ # === Model ===
106
+ log_message("Loading model...", cfg, accelerator)
107
+ if cfg.model.checkpoint_path:
108
+ model = load_from_pretrained(
109
+ model_path=cfg.model.checkpoint_path,
110
+ model_config_path=cfg.model.config_path,
111
+ )
112
+ log_message(f"Loaded pretrained: {cfg.model.checkpoint_path}", cfg, accelerator)
113
+ else:
114
+ model = load_from_config(
115
+ model_config_path=cfg.model.config_path,
116
+ device="cpu",
117
+ )
118
+ model.init_weights()
119
+ log_message("Initialized from scratch", cfg, accelerator)
120
+
121
+ model.train()
122
+
123
+ lr_multiplier = list(cfg.training.lr_multiplier)
124
+ model.apply_lr_multiplier(lr_multiplier)
125
+ log_message(f"Applied LR multipliers: {lr_multiplier}", cfg, accelerator)
126
+
127
+ if cfg.training.warmup_model:
128
+ log_message("Warming up model...", cfg, accelerator)
129
+ model = model.to(accelerator.device)
130
+ model.warmup(verbose=accelerator.is_main_process)
131
+
132
+ # Save initial routing weights (step 0)
133
+ if accelerator.is_main_process:
134
+ output_dir = Path(cfg.paths.output_dir)
135
+ save_routing_weights(model, 0, output_dir)
136
+
137
+ total_params = sum(p.numel() for p in model.parameters())
138
+ trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
139
+ log_message(f"Total params: {total_params:,}", cfg, accelerator)
140
+ log_message(f"Trainable params: {trainable_params:,}", cfg, accelerator)
141
+
142
+ # === Data ===
143
+ log_message("Creating dataloaders...", cfg, accelerator)
144
+ dataloaders = create_dataloaders(cfg, tokenizer)
145
+
146
+ train_dataloader = dataloaders["train"]
147
+ val_dataloader = dataloaders.get("validation", None)
148
+
149
+ log_message(
150
+ f"Train dataset size: {len(train_dataloader.dataset)} "
151
+ f"(max_train_samples={cfg.data.max_train_samples}) | "
152
+ f"Epochs: {cfg.training.epochs}",
153
+ cfg,
154
+ accelerator,
155
+ )
156
+
157
+ # === Optimizer ===
158
+ param_groups = group_params(model)
159
+
160
+ for group in param_groups:
161
+ if "lr" not in group:
162
+ group["lr"] = cfg.training.lr
163
+ else:
164
+ group["lr"] = cfg.training.lr * group.get("lr_multiplier", 1.0)
165
+ if "weight_decay" not in group:
166
+ group["weight_decay"] = cfg.training.weight_decay
167
+
168
+ optimizer = torch.optim.AdamW(
169
+ param_groups,
170
+ lr=cfg.training.lr,
171
+ betas=tuple(cfg.training.betas),
172
+ eps=cfg.training.eps,
173
+ )
174
+
175
+ # === Scheduler ===
176
+ steps_per_epoch = math.ceil(len(train_dataloader) / accelerator.num_processes)
177
+ max_steps = (
178
+ cfg.training.epochs
179
+ * steps_per_epoch
180
+ // cfg.training.gradient_accumulation_steps
181
+ )
182
+ scheduler = get_lr_scheduler(optimizer, cfg, max_steps)
183
+
184
+ log_message(
185
+ f"Max steps: {max_steps}, Steps per epoch: {steps_per_epoch}",
186
+ cfg,
187
+ accelerator,
188
+ )
189
+
190
+ # === Accelerate Prepare ===
191
+ if val_dataloader is not None:
192
+ model, optimizer, train_dataloader, val_dataloader, scheduler = (
193
+ accelerator.prepare(
194
+ model, optimizer, train_dataloader, val_dataloader, scheduler
195
+ )
196
+ )
197
+ else:
198
+ model, optimizer, train_dataloader, scheduler = accelerator.prepare(
199
+ model, optimizer, train_dataloader, scheduler
200
+ )
201
+
202
+ # === Training Loop ===
203
+ log_message("Starting training...", cfg, accelerator)
204
+
205
+ global_step = 0
206
+ best_val_loss = float("inf")
207
+ epoch = 0
208
+
209
+ num_epochs = cfg.training.epochs
210
+
211
+ try:
212
+ for epoch in range(1, num_epochs + 1):
213
+ log_message(f"\n{'=' * 60}", cfg, accelerator)
214
+ log_message(
215
+ f"EPOCH {epoch}/{num_epochs} (step {global_step})", cfg, accelerator
216
+ )
217
+ log_message(f"{'=' * 60}", cfg, accelerator)
218
+
219
+ global_step, best_val_loss = train_epoch(
220
+ model=model,
221
+ dataloader=train_dataloader,
222
+ optimizer=optimizer,
223
+ scheduler=scheduler,
224
+ cfg=cfg,
225
+ epoch=epoch,
226
+ global_step=global_step,
227
+ accelerator=accelerator,
228
+ val_dataloader=val_dataloader,
229
+ best_val_loss=best_val_loss,
230
+ max_steps=max_steps,
231
+ on_checkpoint=on_checkpoint_callback,
232
+ )
233
+
234
+ except KeyboardInterrupt:
235
+ log_message("Training interrupted by user", cfg, accelerator)
236
+ save_checkpoint(
237
+ model, optimizer, scheduler, global_step, epoch, cfg, accelerator,
238
+ model_only=True,
239
+ )
240
+
241
+ # === Final Save ===
242
+ log_message("\nTraining completed!", cfg, accelerator)
243
+
244
+ if accelerator.is_main_process:
245
+ final_model_path = Path(cfg.paths.output_dir) / "model_final.pt"
246
+ unwrapped_model = accelerator.unwrap_model(model)
247
+ torch.save(unwrapped_model.state_dict(), final_model_path)
248
+ log_message(f"Final model: {final_model_path}", cfg, accelerator)
249
+
250
+ # Save final routing weights
251
+ save_routing_weights(unwrapped_model, global_step, Path(cfg.paths.output_dir))
252
+
253
+ accelerator.wait_for_everyone()
254
+ accelerator.end_training()
255
+ finish_tracking()
256
+
257
+
258
+ if __name__ == "__main__":
259
+ main()
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/config.yaml ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ _wandb:
2
+ value:
3
+ cli_version: 0.24.0
4
+ code_path: code/routing_evolution_exp/train.py
5
+ e:
6
+ qnhiyfqvhqw9ifnmw9ecehnx1sss1ocb:
7
+ args:
8
+ - training.load_balancing_N=6.0
9
+ - tracking.run_name=routing_N6.0
10
+ codePath: routing_evolution_exp/train.py
11
+ codePathLocal: train.py
12
+ cpu_count: 36
13
+ cpu_count_logical: 72
14
+ cudaVersion: "13.2"
15
+ disk:
16
+ /:
17
+ total: "234075717632"
18
+ used: "19262914560"
19
+ email: nikita@local.ru
20
+ executable: /venv/bytellm/bin/python
21
+ git:
22
+ commit: 379d14a9668cada0997ccd4dfc2cc9ecb683c623
23
+ remote: https://github.com/naryst/byte-llms-code.git
24
+ gpu: NVIDIA A100 80GB PCIe
25
+ gpu_count: 1
26
+ gpu_nvidia:
27
+ - architecture: Ampere
28
+ cudaCores: 6912
29
+ memoryTotal: "85899345920"
30
+ name: NVIDIA A100 80GB PCIe
31
+ uuid: GPU-ec9764c4-224a-9508-002f-de7762d78498
32
+ host: 1a023b226280
33
+ memory:
34
+ total: "404274495488"
35
+ os: Linux-6.8.0-117-generic-x86_64-with-glibc2.39
36
+ program: /workspace/byte-llms-code/routing_evolution_exp/train.py
37
+ python: CPython 3.12.0
38
+ root: outputs/2026-05-24/N_6.0
39
+ startedAt: "2026-05-24T05:52:22.319248Z"
40
+ writerId: qnhiyfqvhqw9ifnmw9ecehnx1sss1ocb
41
+ m: []
42
+ python_version: 3.12.0
43
+ t:
44
+ "1":
45
+ - 1
46
+ - 11
47
+ - 49
48
+ - 50
49
+ - 51
50
+ - 71
51
+ - 105
52
+ "2":
53
+ - 1
54
+ - 11
55
+ - 49
56
+ - 50
57
+ - 51
58
+ - 71
59
+ - 105
60
+ "3":
61
+ - 2
62
+ - 13
63
+ - 16
64
+ - 61
65
+ "4": 3.12.0
66
+ "5": 0.24.0
67
+ "6": 4.57.6
68
+ "12": 0.24.0
69
+ "13": linux-x86_64
70
+ data:
71
+ value:
72
+ max_context_len: 4096
73
+ max_target_len: 256
74
+ max_train_samples: 150000
75
+ max_val_samples: null
76
+ num_workers: 0
77
+ path: /workspace/byte-llms-code/code_completion_exp/datasets/data_V4_full
78
+ pin_memory: true
79
+ device:
80
+ value: cuda
81
+ logging:
82
+ value:
83
+ eval_interval: 1000
84
+ log_interval: 10
85
+ model_only_checkpoints: true
86
+ save_every_epoch: false
87
+ save_interval: 3000
88
+ model:
89
+ value:
90
+ checkpoint_path: /workspace/byte-llms-code/hnet_project/checkpoints/hnet_2stage_XL_code.pt
91
+ config_path: /workspace/byte-llms-code/hnet_project/configs/hnet_2stage_XL_code.json
92
+ paths:
93
+ value:
94
+ output_dir: outputs/2026-05-24/N_6.0
95
+ seed:
96
+ value: 42
97
+ tracking:
98
+ value:
99
+ backend: wandb
100
+ base_url: https://wandb.platun0v.ru
101
+ enabled: true
102
+ entity: null
103
+ local_dir: outputs/2026-05-24/N_6.0
104
+ project: routing-evolution
105
+ run_name: routing_N6.0
106
+ training:
107
+ value:
108
+ batch_size: 8
109
+ betas:
110
+ - 0.9
111
+ - 0.95
112
+ decay_ratio: 0.2
113
+ epochs: 3
114
+ eps: 1e-08
115
+ eval_batch_size: 24
116
+ gradient_accumulation_steps: 4
117
+ load_balancing_N: 6
118
+ load_balancing_weight: 0.5
119
+ lr: 0.0001
120
+ lr_multiplier:
121
+ - 2
122
+ - 1.5
123
+ - 1
124
+ lr_scheduler: wsd
125
+ max_grad_norm: 1
126
+ max_steps: null
127
+ min_lr_ratio: 0.1
128
+ resume: false
129
+ resume_checkpoint: null
130
+ use_amp: true
131
+ warmup_model: true
132
+ warmup_ratio: 0.1
133
+ warmup_steps: 100
134
+ weight_decay: 0.1
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/output.log ADDED
The diff for this file is too large to render. See raw diff
 
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/requirements.txt ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ setuptools==78.1.1
2
+ wheel==0.45.1
3
+ pip==25.2
4
+ webencodings==0.5.1
5
+ triton==3.2.0
6
+ pytz==2025.2
7
+ pydub==0.25.1
8
+ pure_eval==0.2.3
9
+ ptyprocess==0.7.0
10
+ nvidia-ml-py==13.590.48
11
+ nvidia-cusparselt-cu12==0.6.2
12
+ mpmath==1.3.0
13
+ ipython-genutils==0.2.0
14
+ fastjsonschema==2.21.2
15
+ brotli==1.2.0
16
+ antlr4-python3-runtime==4.9.3
17
+ xxhash==3.6.0
18
+ widgetsnbextension==4.0.14
19
+ websocket-client==1.9.0
20
+ webcolors==24.11.1
21
+ wcwidth==0.2.14
22
+ urllib3==2.5.0
23
+ uri-template==1.3.0
24
+ tzdata==2025.2
25
+ typing_extensions==4.15.0
26
+ types-python-dateutil==2.9.0.20251008
27
+ traitlets==5.14.3
28
+ tqdm==4.67.1
29
+ tornado==6.5.2
30
+ tomlkit==0.13.3
31
+ tinycss2==1.4.0
32
+ tabulate==0.9.0
33
+ sympy==1.13.1
34
+ soupsieve==2.8
35
+ sniffio==1.3.1
36
+ smmap==5.0.2
37
+ six==1.17.0
38
+ shellingham==1.5.4
39
+ Send2Trash==1.8.3
40
+ semantic-version==2.10.0
41
+ safetensors==0.6.2
42
+ rpds-py==0.27.1
43
+ rfc3986-validator==0.1.1
44
+ regex==2025.9.18
45
+ pyzmq==27.1.0
46
+ PyYAML==6.0.3
47
+ python-multipart==0.0.22
48
+ python-json-logger==4.0.0
49
+ python-dotenv==1.2.1
50
+ pyparsing==3.2.5
51
+ PyJWT==2.8.0
52
+ Pygments==2.19.2
53
+ pycparser==2.23
54
+ pyarrow==22.0.0
55
+ psutil==7.1.0
56
+ protobuf==6.33.4
57
+ propcache==0.4.1
58
+ prometheus_client==0.23.1
59
+ portalocker==3.2.0
60
+ platformdirs==4.5.0
61
+ pillow==11.3.0
62
+ pexpect==4.9.0
63
+ pathspec==1.0.4
64
+ parso==0.8.5
65
+ pandocfilters==1.5.1
66
+ packaging==25.0
67
+ orjson==3.11.6
68
+ opt_einsum==3.4.0
69
+ nvidia-nvtx-cu12==12.4.127
70
+ nvidia-nvjitlink-cu12==12.4.127
71
+ nvidia-nccl-cu12==2.21.5
72
+ nvidia-curand-cu12==10.3.5.147
73
+ nvidia-cufile-cu12==1.13.1.3
74
+ nvidia-cufft-cu12==11.2.1.3
75
+ nvidia-cuda-runtime-cu12==12.4.127
76
+ nvidia-cuda-nvrtc-cu12==12.4.127
77
+ nvidia-cuda-cupti-cu12==12.4.127
78
+ nvidia-cublas-cu12==12.4.5.8
79
+ numpy==2.3.3
80
+ ninja==1.13.0
81
+ networkx==3.5
82
+ nest-asyncio==1.6.0
83
+ narwhals==2.15.0
84
+ mypy_extensions==1.1.0
85
+ multidict==6.7.0
86
+ mistune==3.1.4
87
+ mdurl==0.1.2
88
+ MarkupSafe==3.0.3
89
+ lxml==6.0.2
90
+ librt==0.8.0
91
+ lark==1.3.0
92
+ kiwisolver==1.4.9
93
+ jupyterlab_widgets==3.0.15
94
+ jupyterlab_pygments==0.3.0
95
+ jsonpointer==3.0.0
96
+ json5==0.12.1
97
+ itsdangerous==2.2.0
98
+ idna==3.10
99
+ hf-xet==1.1.10
100
+ h11==0.16.0
101
+ groovy==0.1.2
102
+ fsspec==2025.9.0
103
+ frozenlist==1.8.0
104
+ fqdn==1.5.1
105
+ fonttools==4.60.1
106
+ filelock==3.19.1
107
+ ffmpy==1.0.0
108
+ executing==2.2.1
109
+ einops==0.8.1
110
+ dill==0.4.0
111
+ defusedxml==0.7.1
112
+ decorator==5.2.1
113
+ debugpy==1.8.17
114
+ dacite==1.9.2
115
+ cycler==0.12.1
116
+ comm==0.2.3
117
+ colorama==0.4.6
118
+ click==8.3.1
119
+ charset-normalizer==3.4.3
120
+ certifi==2025.10.5
121
+ bleach==6.2.0
122
+ babel==2.17.0
123
+ attrs==25.4.0
124
+ async-lru==2.0.5
125
+ asttokens==3.0.0
126
+ annotated-types==0.7.0
127
+ annotated-doc==0.0.4
128
+ aiohappyeyeballs==2.6.1
129
+ aiofiles==24.1.0
130
+ yarl==1.22.0
131
+ uvicorn==0.40.0
132
+ typing-inspection==0.4.2
133
+ terminado==0.18.1
134
+ stack-data==0.6.3
135
+ sentry-sdk==2.50.0
136
+ scipy==1.17.0
137
+ sacrebleu==2.6.0
138
+ rfc3987-syntax==1.1.0
139
+ rfc3339-validator==0.1.4
140
+ requests==2.32.5
141
+ reportlab==4.4.9
142
+ referencing==0.36.2
143
+ python-dateutil==2.9.0.post0
144
+ pydantic_core==2.41.5
145
+ prompt_toolkit==3.0.52
146
+ plotly==6.5.2
147
+ pathlib2==2.3.7.post1
148
+ orderedmultidict==1.0.2
149
+ optree==0.17.0
150
+ omegaconf==2.3.0
151
+ nvidia-cusparse-cu12==12.3.1.170
152
+ nvidia-cudnn-cu12==9.1.0.70
153
+ mypy==1.19.1
154
+ multiprocess==0.70.16
155
+ matplotlib-inline==0.1.7
156
+ markdown-it-py==4.0.0
157
+ jupyter_core==5.8.1
158
+ Jinja2==3.1.6
159
+ jedi==0.19.2
160
+ ipython_pygments_lexers==1.1.1
161
+ httpcore==1.0.9
162
+ gitdb==4.0.12
163
+ ftfy==6.3.1
164
+ contourpy==1.3.3
165
+ cffi==2.0.0
166
+ beautifulsoup4==4.14.2
167
+ anyio==4.11.0
168
+ aiosignal==1.4.0
169
+ starlette==0.50.0
170
+ rich==14.2.0
171
+ pydantic==2.12.5
172
+ pandas==2.3.3
173
+ nvidia-cusolver-cu12==11.6.1.9
174
+ matplotlib==3.10.7
175
+ jupyter_server_terminals==0.5.3
176
+ jupyter_client==8.6.3
177
+ jsonschema-specifications==2025.9.1
178
+ ipython==9.6.0
179
+ hydra-core==1.3.2
180
+ huggingface-hub==0.35.3
181
+ httpx==0.28.1
182
+ GitPython==3.1.46
183
+ furl==2.1.4
184
+ cryptography==46.0.4
185
+ arrow==1.3.0
186
+ argon2-cffi-bindings==25.1.0
187
+ aiohttp==3.13.1
188
+ wandb==0.24.0
189
+ typer==0.21.1
190
+ torch==2.6.0
191
+ tokenizers==0.22.1
192
+ seaborn==0.13.2
193
+ safehttpx==0.1.7
194
+ jsonschema==4.25.1
195
+ joypy==0.2.6
196
+ isoduration==20.11.0
197
+ ipywidgets==8.1.7
198
+ ipykernel==6.30.1
199
+ gradio_client==2.0.3
200
+ fastapi==0.128.0
201
+ Authlib==1.6.6
202
+ argon2-cffi==25.1.0
203
+ transformers==4.57.6
204
+ nbformat==5.10.4
205
+ mlstm_kernels==2.0.2
206
+ jupyter-console==6.6.3
207
+ gradio==6.5.1
208
+ datasets==4.3.0
209
+ clearml==1.16.4
210
+ accelerate==1.10.1
211
+ xlstm==2.0.4
212
+ nbclient==0.10.2
213
+ jupyter-events==0.12.0
214
+ trackio==0.15.0
215
+ nbconvert==7.16.6
216
+ jupyter_server==2.17.0
217
+ notebook_shim==0.2.4
218
+ jupyterlab_server==2.27.3
219
+ jupyter-lsp==2.3.0
220
+ nbclassic==1.3.3
221
+ jupyterlab==4.4.9
222
+ notebook==7.4.7
223
+ jupyter_contrib_core==0.4.2
224
+ jupyter==1.1.1
225
+ jupyter_nbextensions_configurator==0.6.4
226
+ causal-conv1d==1.5.0.post8
227
+ flash_attn==2.7.4.post1
228
+ mamba-ssm==2.2.4
229
+ hnet==0.0.1
230
+ autocommand==2.2.2
231
+ backports.tarfile==1.2.0
232
+ importlib_metadata==8.0.0
233
+ inflect==7.3.1
234
+ jaraco.collections==5.1.0
235
+ jaraco.context==5.3.0
236
+ jaraco.functools==4.0.1
237
+ jaraco.text==3.12.1
238
+ more-itertools==10.3.0
239
+ packaging==24.2
240
+ platformdirs==4.2.2
241
+ tomli==2.0.1
242
+ typeguard==4.3.0
243
+ typing_extensions==4.12.2
244
+ wheel==0.45.1
245
+ zipp==3.19.2
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/wandb-metadata.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "os": "Linux-6.8.0-117-generic-x86_64-with-glibc2.39",
3
+ "python": "CPython 3.12.0",
4
+ "startedAt": "2026-05-24T05:52:22.319248Z",
5
+ "args": [
6
+ "training.load_balancing_N=6.0",
7
+ "tracking.run_name=routing_N6.0"
8
+ ],
9
+ "program": "/workspace/byte-llms-code/routing_evolution_exp/train.py",
10
+ "codePath": "routing_evolution_exp/train.py",
11
+ "codePathLocal": "train.py",
12
+ "git": {
13
+ "remote": "https://github.com/naryst/byte-llms-code.git",
14
+ "commit": "379d14a9668cada0997ccd4dfc2cc9ecb683c623"
15
+ },
16
+ "email": "nikita@local.ru",
17
+ "root": "outputs/2026-05-24/N_6.0",
18
+ "host": "1a023b226280",
19
+ "executable": "/venv/bytellm/bin/python",
20
+ "cpu_count": 36,
21
+ "cpu_count_logical": 72,
22
+ "gpu": "NVIDIA A100 80GB PCIe",
23
+ "gpu_count": 1,
24
+ "disk": {
25
+ "/": {
26
+ "total": "234075717632",
27
+ "used": "19262914560"
28
+ }
29
+ },
30
+ "memory": {
31
+ "total": "404274495488"
32
+ },
33
+ "gpu_nvidia": [
34
+ {
35
+ "name": "NVIDIA A100 80GB PCIe",
36
+ "memoryTotal": "85899345920",
37
+ "cudaCores": 6912,
38
+ "architecture": "Ampere",
39
+ "uuid": "GPU-ec9764c4-224a-9508-002f-de7762d78498"
40
+ }
41
+ ],
42
+ "cudaVersion": "13.2",
43
+ "writerId": "qnhiyfqvhqw9ifnmw9ecehnx1sss1ocb"
44
+ }
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/files/wandb-summary.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"epoch/lb_loss":1.016017396045133,"epoch/soft_boundary_ratio_stage1":0.16652716106240512,"train/lr":1.0000112334056358e-05,"epoch/chunk_len_stage0":4.092642846045787,"_timestamp":1.7796214120613477e+09,"epoch/chunk_len_stage1":5.219640202211922,"best/val_loss":0.8618771416678089,"train/soft_boundary_ratio_stage0":0.21564617116651916,"train/lm_loss":0.3704099953174591,"epoch/soft_boundary_ratio_stage0":0.21564443765435157,"val/lm_loss":0.3920209985206226,"val/loss":0.8986752326315003,"_runtime":19473,"train/soft_boundary_ratio_stage1":0.1665283167775648,"val/perplexity":1.4808691752566727,"train/epoch":3,"epoch/hard_boundary_ratio_stage0":0.24555311473595748,"train/chunk_len_stage1":5.219573927960947,"train/chunk_len_stage0":4.0926066759484145,"train/loss_avg":0.7787240958505088,"epoch/lm_loss":0.2719557210024115,"val/lb_loss":1.0133084676307698,"train/lb_loss":1.0087056159973145,"best/val_perplexity":1.4006408556239227,"_step":14060,"train/hard_boundary_ratio_stage1":0.19387243849367575,"train/step_time":1.1521595954895019,"best/step":3000,"epoch/time":6433.849749088287,"epoch/loss":0.7787093779814124,"train/loss":0.8548774272203445,"epoch/hard_boundary_ratio_stage1":0.19386965479498253,"val/time":259.69529390335083,"_wandb":{"runtime":19473},"train/hard_boundary_ratio_stage0":0.24555544699565662}
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug-core.log ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"time":"2026-05-24T05:52:22.436010727Z","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpfkqmajrf/port-73212.txt","pid":73212,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false}
2
+ {"time":"2026-05-24T05:52:22.43670458Z","level":"INFO","msg":"server: will exit if parent process dies","ppid":73212}
3
+ {"time":"2026-05-24T05:52:22.43671213Z","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-73212-73222-3923105823/socket","Net":"unix"}}
4
+ {"time":"2026-05-24T05:52:22.62222821Z","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"}
5
+ {"time":"2026-05-24T05:52:22.647727658Z","level":"INFO","msg":"handleInformInit: received","streamId":"tjovd8fs","id":"1(@)"}
6
+ {"time":"2026-05-24T05:52:23.102908806Z","level":"INFO","msg":"handleInformInit: stream started","streamId":"tjovd8fs","id":"1(@)"}
7
+ {"time":"2026-05-24T11:16:57.673719508Z","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"tjovd8fs","id":"1(@)"}
8
+ {"time":"2026-05-24T11:16:57.691122109Z","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"tjovd8fs","id":"1(@)"}
9
+ {"time":"2026-05-24T11:16:57.694742298Z","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"}
10
+ {"time":"2026-05-24T11:16:57.694797689Z","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"}
11
+ {"time":"2026-05-24T11:16:57.694815699Z","level":"INFO","msg":"server is shutting down"}
12
+ {"time":"2026-05-24T11:16:57.694817168Z","level":"INFO","msg":"connection: closing","id":"1(@)"}
13
+ {"time":"2026-05-24T11:16:57.694913326Z","level":"INFO","msg":"connection: closed successfully","id":"1(@)"}
14
+ {"time":"2026-05-24T11:16:57.69492678Z","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"}
15
+ {"time":"2026-05-24T11:16:57.694957606Z","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-73212-73222-3923105823/socket","Net":"unix"}}
16
+ {"time":"2026-05-24T11:16:57.69501297Z","level":"INFO","msg":"server is closed"}
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug-internal.log ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"time":"2026-05-24T05:52:22.647937006Z","level":"INFO","msg":"stream: starting","core version":"0.24.0"}
2
+ {"time":"2026-05-24T05:52:23.102485815Z","level":"INFO","msg":"stream: created new stream","id":"tjovd8fs"}
3
+ {"time":"2026-05-24T05:52:23.102632811Z","level":"INFO","msg":"handler: started","stream_id":"tjovd8fs"}
4
+ {"time":"2026-05-24T05:52:23.102884167Z","level":"INFO","msg":"stream: started","id":"tjovd8fs"}
5
+ {"time":"2026-05-24T05:52:23.102920051Z","level":"INFO","msg":"sender: started","stream_id":"tjovd8fs"}
6
+ {"time":"2026-05-24T05:52:23.102924565Z","level":"INFO","msg":"writer: started","stream_id":"tjovd8fs"}
7
+ {"time":"2026-05-24T05:52:23.243158587Z","level":"ERROR","msg":"git repo not found","error":"repository does not exist"}
8
+ {"time":"2026-05-24T06:57:38.830216521Z","level":"INFO","msg":"api: retrying HTTP error","status":502,"url":"https://wandb.platun0v.ru/files/nikita/routing-evolution/tjovd8fs/file_stream","body":"Bad Gateway"}
9
+ {"time":"2026-05-24T11:16:57.561181762Z","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"}
10
+ {"time":"2026-05-24T11:16:57.667532298Z","level":"INFO","msg":"handler: operation stats","stats":{}}
11
+ {"time":"2026-05-24T11:16:57.673785539Z","level":"INFO","msg":"stream: closing","id":"tjovd8fs"}
12
+ {"time":"2026-05-24T11:16:57.673813908Z","level":"INFO","msg":"handler: closed","stream_id":"tjovd8fs"}
13
+ {"time":"2026-05-24T11:16:57.67401224Z","level":"INFO","msg":"sender: closed","stream_id":"tjovd8fs"}
14
+ {"time":"2026-05-24T11:16:57.674029503Z","level":"INFO","msg":"stream: closed","id":"tjovd8fs"}
routing_rerun/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug.log ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_setup.py:_flush():81] Current SDK version is 0.24.0
2
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_setup.py:_flush():81] Configure stats pid to 73212
3
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_setup.py:_flush():81] Loading settings from environment variables
4
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:setup_run_log_directory():717] Logging user logs to outputs/2026-05-24/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug.log
5
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to outputs/2026-05-24/N_6.0/wandb/run-20260524_055222-tjovd8fs/logs/debug-internal.log
6
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:init():844] calling init triggers
7
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:init():849] wandb.init called with sweep_config: {}
8
+ config: {'model': {'config_path': '/workspace/byte-llms-code/hnet_project/configs/hnet_2stage_XL_code.json', 'checkpoint_path': '/workspace/byte-llms-code/hnet_project/checkpoints/hnet_2stage_XL_code.pt'}, 'training': {'epochs': 3, 'max_steps': None, 'batch_size': 8, 'eval_batch_size': 24, 'gradient_accumulation_steps': 4, 'lr': 0.0001, 'weight_decay': 0.1, 'betas': [0.9, 0.95], 'eps': 1e-08, 'lr_scheduler': 'wsd', 'warmup_ratio': 0.1, 'decay_ratio': 0.2, 'warmup_steps': 100, 'min_lr_ratio': 0.1, 'lr_multiplier': [2.0, 1.5, 1.0], 'load_balancing_weight': 0.5, 'load_balancing_N': 6.0, 'max_grad_norm': 1.0, 'use_amp': True, 'resume': False, 'resume_checkpoint': None, 'warmup_model': True}, 'data': {'path': '/workspace/byte-llms-code/code_completion_exp/datasets/data_V4_full', 'max_context_len': 4096, 'max_target_len': 256, 'num_workers': 0, 'pin_memory': True, 'max_train_samples': 150000, 'max_val_samples': None}, 'logging': {'log_interval': 10, 'save_interval': 3000, 'eval_interval': 1000, 'save_every_epoch': False, 'model_only_checkpoints': True}, 'tracking': {'enabled': True, 'backend': 'wandb', 'project': 'routing-evolution', 'run_name': 'routing_N6.0', 'entity': None, 'base_url': 'https://wandb.platun0v.ru', 'local_dir': 'outputs/2026-05-24/N_6.0'}, 'paths': {'output_dir': 'outputs/2026-05-24/N_6.0'}, 'seed': 42, 'device': 'cuda', '_wandb': {'code_path': 'code/routing_evolution_exp/train.py'}}
9
+ 2026-05-24 05:52:22,321 INFO MainThread:73212 [wandb_init.py:init():892] starting backend
10
+ 2026-05-24 05:52:22,622 INFO MainThread:73212 [wandb_init.py:init():895] sending inform_init request
11
+ 2026-05-24 05:52:22,644 INFO MainThread:73212 [wandb_init.py:init():903] backend started and connected
12
+ 2026-05-24 05:52:22,650 INFO MainThread:73212 [wandb_init.py:init():973] updated telemetry
13
+ 2026-05-24 05:52:22,682 INFO MainThread:73212 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout
14
+ 2026-05-24 05:52:23,241 INFO MainThread:73212 [wandb_init.py:init():1044] starting run threads in backend
15
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_console_start():2529] atexit reg
16
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_redirect():2377] redirect: wrap_raw
17
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_redirect():2446] Wrapping output streams.
18
+ 2026-05-24 05:52:23,492 INFO MainThread:73212 [wandb_run.py:_redirect():2469] Redirects installed.
19
+ 2026-05-24 05:52:23,497 INFO MainThread:73212 [wandb_init.py:init():1084] run started, returning control to user process
20
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_finish():2295] finishing run nikita/routing-evolution/tjovd8fs
21
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_atexit_cleanup():2494] got exitcode: 0
22
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_restore():2476] restore
23
+ 2026-05-24 11:16:56,449 INFO MainThread:73212 [wandb_run.py:_restore():2482] restore done
24
+ 2026-05-24 11:16:57,672 INFO MainThread:73212 [wandb_run.py:_footer_sync_info():3870] logging synced files
routing_rerun/N_8.0/.hydra/config.yaml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model:
2
+ config_path: ${oc.env:PROJECT_ROOT}/hnet_project/configs/hnet_2stage_XL_code.json
3
+ checkpoint_path: ${oc.env:PROJECT_ROOT}/hnet_project/checkpoints/hnet_2stage_XL_code.pt
4
+ training:
5
+ epochs: 3
6
+ max_steps: null
7
+ batch_size: 8
8
+ eval_batch_size: 24
9
+ gradient_accumulation_steps: 4
10
+ lr: 0.0001
11
+ weight_decay: 0.1
12
+ betas:
13
+ - 0.9
14
+ - 0.95
15
+ eps: 1.0e-08
16
+ lr_scheduler: wsd
17
+ warmup_ratio: 0.1
18
+ decay_ratio: 0.2
19
+ warmup_steps: 100
20
+ min_lr_ratio: 0.1
21
+ lr_multiplier:
22
+ - 2.0
23
+ - 1.5
24
+ - 1.0
25
+ load_balancing_weight: 0.5
26
+ load_balancing_N: 8.0
27
+ max_grad_norm: 1.0
28
+ use_amp: true
29
+ resume: false
30
+ resume_checkpoint: null
31
+ warmup_model: true
32
+ data:
33
+ path: ${oc.env:PROJECT_ROOT}/code_completion_exp/datasets/data_V4_full
34
+ max_context_len: 4096
35
+ max_target_len: 256
36
+ num_workers: 0
37
+ pin_memory: true
38
+ max_train_samples: 150000
39
+ max_val_samples: null
40
+ logging:
41
+ log_interval: 10
42
+ save_interval: 3000
43
+ eval_interval: 1000
44
+ save_every_epoch: false
45
+ model_only_checkpoints: true
46
+ tracking:
47
+ enabled: true
48
+ backend: wandb
49
+ project: routing-evolution
50
+ run_name: routing_N8.0
51
+ entity: null
52
+ base_url: https://wandb.platun0v.ru
53
+ local_dir: ${paths.output_dir}
54
+ paths:
55
+ output_dir: outputs/${now:%Y-%m-%d}/N_${training.load_balancing_N}
56
+ seed: 42
57
+ device: cuda
routing_rerun/N_8.0/.hydra/hydra.yaml ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${paths.output_dir}
4
+ sweep:
5
+ dir: outputs/multirun/${now:%Y-%m-%d}/${now:%H-%M-%S}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ _target_: hydra._internal.core_plugins.basic_launcher.BasicLauncher
9
+ sweeper:
10
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
11
+ max_batch_size: null
12
+ params: null
13
+ help:
14
+ app_name: ${hydra.job.name}
15
+ header: '${hydra.help.app_name} is powered by Hydra.
16
+
17
+ '
18
+ footer: 'Powered by Hydra (https://hydra.cc)
19
+
20
+ Use --hydra-help to view Hydra specific help
21
+
22
+ '
23
+ template: '${hydra.help.header}
24
+
25
+ == Configuration groups ==
26
+
27
+ Compose your configuration from those groups (group=option)
28
+
29
+
30
+ $APP_CONFIG_GROUPS
31
+
32
+
33
+ == Config ==
34
+
35
+ Override anything in the config (foo.bar=value)
36
+
37
+
38
+ $CONFIG
39
+
40
+
41
+ ${hydra.help.footer}
42
+
43
+ '
44
+ hydra_help:
45
+ template: 'Hydra (${hydra.runtime.version})
46
+
47
+ See https://hydra.cc for more info.
48
+
49
+
50
+ == Flags ==
51
+
52
+ $FLAGS_HELP
53
+
54
+
55
+ == Configuration groups ==
56
+
57
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
58
+ to command line)
59
+
60
+
61
+ $HYDRA_CONFIG_GROUPS
62
+
63
+
64
+ Use ''--cfg hydra'' to Show the Hydra config.
65
+
66
+ '
67
+ hydra_help: ???
68
+ hydra_logging:
69
+ version: 1
70
+ formatters:
71
+ simple:
72
+ format: '[%(asctime)s][HYDRA] %(message)s'
73
+ handlers:
74
+ console:
75
+ class: logging.StreamHandler
76
+ formatter: simple
77
+ stream: ext://sys.stdout
78
+ root:
79
+ level: INFO
80
+ handlers:
81
+ - console
82
+ loggers:
83
+ logging_example:
84
+ level: DEBUG
85
+ disable_existing_loggers: false
86
+ job_logging:
87
+ version: 1
88
+ formatters:
89
+ simple:
90
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
91
+ handlers:
92
+ console:
93
+ class: logging.StreamHandler
94
+ formatter: simple
95
+ stream: ext://sys.stdout
96
+ file:
97
+ class: logging.FileHandler
98
+ formatter: simple
99
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
100
+ root:
101
+ level: INFO
102
+ handlers:
103
+ - console
104
+ - file
105
+ disable_existing_loggers: false
106
+ env: {}
107
+ mode: RUN
108
+ searchpath: []
109
+ callbacks: {}
110
+ output_subdir: .hydra
111
+ overrides:
112
+ hydra:
113
+ - hydra.mode=RUN
114
+ task:
115
+ - training.load_balancing_N=8.0
116
+ - tracking.run_name=routing_N8.0
117
+ job:
118
+ name: train
119
+ chdir: false
120
+ override_dirname: tracking.run_name=routing_N8.0,training.load_balancing_N=8.0
121
+ id: ???
122
+ num: ???
123
+ config_name: config
124
+ env_set: {}
125
+ env_copy: []
126
+ config:
127
+ override_dirname:
128
+ kv_sep: '='
129
+ item_sep: ','
130
+ exclude_keys: []
131
+ runtime:
132
+ version: 1.3.2
133
+ version_base: '1.3'
134
+ cwd: /workspace/byte-llms-code/routing_evolution_exp
135
+ config_sources:
136
+ - path: hydra.conf
137
+ schema: pkg
138
+ provider: hydra
139
+ - path: /workspace/byte-llms-code/routing_evolution_exp/configs
140
+ schema: file
141
+ provider: main
142
+ - path: ''
143
+ schema: structured
144
+ provider: schema
145
+ output_dir: /workspace/byte-llms-code/routing_evolution_exp/outputs/2026-05-24/N_8.0
146
+ choices:
147
+ paths: default
148
+ tracking: default
149
+ logging: default
150
+ data: default
151
+ training: default
152
+ model: hnet_xl_code
153
+ hydra/env: default
154
+ hydra/callbacks: null
155
+ hydra/job_logging: default
156
+ hydra/hydra_logging: default
157
+ hydra/hydra_help: default
158
+ hydra/help: default
159
+ hydra/sweeper: basic
160
+ hydra/launcher: basic
161
+ hydra/output: default
162
+ verbose: false