Pliploop commited on
Commit
dfe3837
·
verified ·
1 Parent(s): cc84b65

Upload folder using huggingface_hub

Browse files
L0-10/config.yaml ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task_name: train
2
+ tags:
3
+ - music4all
4
+ - muq
5
+ - batchtopk
6
+ - sae
7
+ train: true
8
+ test: false
9
+ ckpt_path: null
10
+ seed: 42
11
+ resume: false
12
+ optimized_metrics: null
13
+ data:
14
+ name: sae
15
+ _target_: steerable_retrieval.dataloading.dataloaders.TextAudioDataModule
16
+ preextracted_features: true
17
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
18
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000} *
19
+ 10}
20
+ return_audio: true
21
+ return_text: true
22
+ datasets:
23
+ music4all:
24
+ _target_: steerable_retrieval.dataloading.datasets.TextAudioDataset
25
+ get_annotations_function: steerable_retrieval.dataloading.dataloaders.get_music4all_annotations
26
+ task_kwargs:
27
+ manifest_csv: /gpfs/scratch/acw749/datasets/music4all_instruct/music4all_v1/embeddings/embedding_lookup_manifest.csv
28
+ split: keep
29
+ return_audio: true
30
+ return_text: true
31
+ preextracted_features: ${data.preextracted_features}
32
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
33
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000}
34
+ * 10}
35
+ root_dir: null
36
+ new_dir: null
37
+ batch_size: 512
38
+ num_workers: 8
39
+ model:
40
+ sae_encoder:
41
+ _target_: steerable_retrieval.models.sae.encoders.BatchTopKSAEEncoder
42
+ act_size: 512
43
+ dict_size: 4096
44
+ top_k: 10
45
+ threshold_momentum: 0.9
46
+ input_unit_norm: true
47
+ sae_decoder:
48
+ _target_: steerable_retrieval.models.sae.decoders.SAEDecoder
49
+ dict_size: 4096
50
+ act_size: 512
51
+ input_unit_norm: true
52
+ output_unit_norm: true
53
+ loss_fn:
54
+ _target_: steerable_retrieval.models.utils.losses.TopKSAELoss
55
+ l1_coeff: 0
56
+ l2_coeff: 1.0
57
+ aux_penalty: 0.05
58
+ top_k_aux: 512
59
+ n_batches_to_dead: 128
60
+ orthogonal_loss: 0
61
+ audio_encoder:
62
+ _target_: torch.nn.Identity
63
+ text_encoder:
64
+ _target_: steerable_retrieval.models.encoders.muq.MuQTextEncoder
65
+ model_name: OpenMuQ/MuQ-MuLan-large
66
+ device: cuda
67
+ freeze: true
68
+ ckpt_path: null
69
+ _target_: steerable_retrieval.models.sae.sae.LightningSAE
70
+ ckpt_path: null
71
+ freeze: false
72
+ optimizer:
73
+ _target_: torch.optim.AdamW
74
+ _partial_: true
75
+ lr: 0.0001
76
+ weight_decay: 0.0001
77
+ betas:
78
+ - 0.9
79
+ - 0.999
80
+ scheduler:
81
+ _target_: steerable_retrieval.models.utils.schedulers.CosineDecayWithLinearWarmup
82
+ _partial_: true
83
+ warmup_steps: 10000
84
+ max_steps: ${trainer.max_steps}
85
+ base_lr: 0.0001
86
+ final_lr: 1.0e-05
87
+ preextracted_features: true
88
+ data_mixing_ratio: 0.0
89
+ callbacks:
90
+ model_summary:
91
+ _target_: lightning.pytorch.callbacks.RichModelSummary
92
+ max_depth: 1
93
+ lr_monitor:
94
+ _target_: lightning.pytorch.callbacks.LearningRateMonitor
95
+ model_checkpoint:
96
+ _target_: lightning.pytorch.callbacks.ModelCheckpoint
97
+ dirpath: ${paths.ckpt_dir}
98
+ verbose: true
99
+ save_last: true
100
+ save_top_k: 1
101
+ mode: max
102
+ auto_insert_metric_name: true
103
+ save_weights_only: false
104
+ every_n_epochs: 1
105
+ progress_bar:
106
+ _target_: lightning.pytorch.callbacks.RichProgressBar
107
+ energy:
108
+ _target_: steerable_retrieval.callbacks.energy.EnergyCallback
109
+ enable_on_validation: true
110
+ enable_on_test: true
111
+ every_n_steps: null
112
+ every_n_epochs: 1
113
+ topk: 512
114
+ prefix: energy
115
+ modality:
116
+ _target_: steerable_retrieval.callbacks.energy.ModalityScoreCallback
117
+ enable_on_validation: true
118
+ enable_on_test: true
119
+ every_n_steps: null
120
+ every_n_epochs: 1
121
+ eps: 1.0e-12
122
+ prefix: modality
123
+ modality_classifier:
124
+ _target_: steerable_retrieval.callbacks.energy.ModalityClassifierCallback
125
+ enable_on_validation: true
126
+ enable_on_test: true
127
+ every_n_steps: null
128
+ every_n_epochs: 1
129
+ prefix: modality_classifier
130
+ max_samples: 10000
131
+ test_fraction: 0.2
132
+ cknna:
133
+ _target_: steerable_retrieval.callbacks.alignment.CKNNACallback
134
+ enable_on_validation: true
135
+ enable_on_test: true
136
+ every_n_steps: null
137
+ every_n_epochs: 1
138
+ topk: 10
139
+ max_samples: 2048
140
+ distance_agnostic: false
141
+ unbiased: true
142
+ prefix: CKNNA
143
+ logger:
144
+ wandb:
145
+ _target_: lightning.pytorch.loggers.wandb.WandbLogger
146
+ save_dir: ${paths.output_dir}/wandb/
147
+ offline: false
148
+ project: steerable-retrieval
149
+ log_model: false
150
+ save_code: true
151
+ prefix: ''
152
+ entity: jul-guinot
153
+ tags: ${tags}
154
+ job_type: ''
155
+ trainer:
156
+ _target_: lightning.pytorch.trainer.Trainer
157
+ default_root_dir: ${paths.output_dir}
158
+ min_epochs: 1
159
+ max_steps: 500000
160
+ accelerator: gpu
161
+ devices: 1
162
+ strategy: auto
163
+ precision: 16-mixed
164
+ check_val_every_n_epoch: 1
165
+ deterministic: false
166
+ gradient_clip_val: 1.0
167
+ accumulate_grad_batches: 4
168
+ limit_val_batches: 100
169
+ paths:
170
+ root_dir: .
171
+ data_dir: ${paths.root_dir}/data
172
+ log_dir: ${paths.root_dir}/logs/
173
+ pretrained: ${paths.root_dir}/pretrained
174
+ output_dir: ${dora:xp.folder}
175
+ ckpt_dir: ${paths.output_dir}/checkpoints
176
+ extras:
177
+ ignore_warnings: false
178
+ enforce_tags: false
179
+ print_config: true
180
+ dora:
181
+ dir: ${paths.log_dir}
182
+ exclude:
183
+ - callbacks.*
184
+ - data.local_dir
185
+ - data.num_workers
186
+ - data.dataloader_kwargs.pin_memory
187
+ - data.dataloader_kwargs.prefetch_factor
188
+ - data.dataloader.persistent_workers
189
+ - extras.*
190
+ - logger.*
191
+ - model.compile
192
+ - paths.*
193
+ - trainer.accelerator
194
+ - trainer.devices
195
+ - trainer.check_val_every_n_epoch
196
+ - trainer.default_root_dir
197
+ - trainer.min_epochs
198
+ - trainer.num_sanity_val_steps
199
+ - trainer.log_every_n_steps
200
+ - resume
201
+ git_save: false
L0-10/last.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fa1c550be2a87b8e95bfb33fdd14be0d6454ee7db11c2afbf0265f4395e44696
3
+ size 50364201
L0-100/config.yaml ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task_name: train
2
+ tags:
3
+ - music4all
4
+ - muq
5
+ - batchtopk
6
+ - sae
7
+ train: true
8
+ test: false
9
+ ckpt_path: null
10
+ seed: 42
11
+ resume: false
12
+ optimized_metrics: null
13
+ data:
14
+ name: sae
15
+ _target_: steerable_retrieval.dataloading.dataloaders.TextAudioDataModule
16
+ preextracted_features: true
17
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
18
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000} *
19
+ 10}
20
+ return_audio: true
21
+ return_text: true
22
+ datasets:
23
+ music4all:
24
+ _target_: steerable_retrieval.dataloading.datasets.TextAudioDataset
25
+ get_annotations_function: steerable_retrieval.dataloading.dataloaders.get_music4all_annotations
26
+ task_kwargs:
27
+ manifest_csv: /gpfs/scratch/acw749/datasets/music4all_instruct/music4all_v1/embeddings/embedding_lookup_manifest.csv
28
+ split: keep
29
+ return_audio: true
30
+ return_text: true
31
+ preextracted_features: ${data.preextracted_features}
32
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
33
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000}
34
+ * 10}
35
+ root_dir: null
36
+ new_dir: null
37
+ batch_size: 512
38
+ num_workers: 8
39
+ model:
40
+ sae_encoder:
41
+ _target_: steerable_retrieval.models.sae.encoders.BatchTopKSAEEncoder
42
+ act_size: 512
43
+ dict_size: 4096
44
+ top_k: 100
45
+ threshold_momentum: 0.9
46
+ input_unit_norm: true
47
+ sae_decoder:
48
+ _target_: steerable_retrieval.models.sae.decoders.SAEDecoder
49
+ dict_size: 4096
50
+ act_size: 512
51
+ input_unit_norm: true
52
+ output_unit_norm: true
53
+ loss_fn:
54
+ _target_: steerable_retrieval.models.utils.losses.TopKSAELoss
55
+ l1_coeff: 0
56
+ l2_coeff: 1.0
57
+ aux_penalty: 0.05
58
+ top_k_aux: 512
59
+ n_batches_to_dead: 128
60
+ orthogonal_loss: 0
61
+ audio_encoder:
62
+ _target_: torch.nn.Identity
63
+ text_encoder:
64
+ _target_: steerable_retrieval.models.encoders.muq.MuQTextEncoder
65
+ model_name: OpenMuQ/MuQ-MuLan-large
66
+ device: cuda
67
+ freeze: true
68
+ ckpt_path: null
69
+ _target_: steerable_retrieval.models.sae.sae.LightningSAE
70
+ ckpt_path: null
71
+ freeze: false
72
+ optimizer:
73
+ _target_: torch.optim.AdamW
74
+ _partial_: true
75
+ lr: 0.0001
76
+ weight_decay: 0.0001
77
+ betas:
78
+ - 0.9
79
+ - 0.999
80
+ scheduler:
81
+ _target_: steerable_retrieval.models.utils.schedulers.CosineDecayWithLinearWarmup
82
+ _partial_: true
83
+ warmup_steps: 10000
84
+ max_steps: ${trainer.max_steps}
85
+ base_lr: 0.0001
86
+ final_lr: 1.0e-05
87
+ preextracted_features: true
88
+ data_mixing_ratio: 0.0
89
+ callbacks:
90
+ model_summary:
91
+ _target_: lightning.pytorch.callbacks.RichModelSummary
92
+ max_depth: 1
93
+ lr_monitor:
94
+ _target_: lightning.pytorch.callbacks.LearningRateMonitor
95
+ model_checkpoint:
96
+ _target_: lightning.pytorch.callbacks.ModelCheckpoint
97
+ dirpath: ${paths.ckpt_dir}
98
+ verbose: true
99
+ save_last: true
100
+ save_top_k: 1
101
+ mode: max
102
+ auto_insert_metric_name: true
103
+ save_weights_only: false
104
+ every_n_epochs: 1
105
+ progress_bar:
106
+ _target_: lightning.pytorch.callbacks.RichProgressBar
107
+ energy:
108
+ _target_: steerable_retrieval.callbacks.energy.EnergyCallback
109
+ enable_on_validation: true
110
+ enable_on_test: true
111
+ every_n_steps: null
112
+ every_n_epochs: 1
113
+ topk: 512
114
+ prefix: energy
115
+ modality:
116
+ _target_: steerable_retrieval.callbacks.energy.ModalityScoreCallback
117
+ enable_on_validation: true
118
+ enable_on_test: true
119
+ every_n_steps: null
120
+ every_n_epochs: 1
121
+ eps: 1.0e-12
122
+ prefix: modality
123
+ modality_classifier:
124
+ _target_: steerable_retrieval.callbacks.energy.ModalityClassifierCallback
125
+ enable_on_validation: true
126
+ enable_on_test: true
127
+ every_n_steps: null
128
+ every_n_epochs: 1
129
+ prefix: modality_classifier
130
+ max_samples: 10000
131
+ test_fraction: 0.2
132
+ cknna:
133
+ _target_: steerable_retrieval.callbacks.alignment.CKNNACallback
134
+ enable_on_validation: true
135
+ enable_on_test: true
136
+ every_n_steps: null
137
+ every_n_epochs: 1
138
+ topk: 10
139
+ max_samples: 2048
140
+ distance_agnostic: false
141
+ unbiased: true
142
+ prefix: CKNNA
143
+ logger:
144
+ wandb:
145
+ _target_: lightning.pytorch.loggers.wandb.WandbLogger
146
+ save_dir: ${paths.output_dir}/wandb/
147
+ offline: false
148
+ project: steerable-retrieval
149
+ log_model: false
150
+ save_code: true
151
+ prefix: ''
152
+ entity: jul-guinot
153
+ tags: ${tags}
154
+ job_type: ''
155
+ trainer:
156
+ _target_: lightning.pytorch.trainer.Trainer
157
+ default_root_dir: ${paths.output_dir}
158
+ min_epochs: 1
159
+ max_steps: 500000
160
+ accelerator: gpu
161
+ devices: 1
162
+ strategy: auto
163
+ precision: 16-mixed
164
+ check_val_every_n_epoch: 1
165
+ deterministic: false
166
+ gradient_clip_val: 1.0
167
+ accumulate_grad_batches: 4
168
+ limit_val_batches: 100
169
+ paths:
170
+ root_dir: .
171
+ data_dir: ${paths.root_dir}/data
172
+ log_dir: ${paths.root_dir}/logs/
173
+ pretrained: ${paths.root_dir}/pretrained
174
+ output_dir: ${dora:xp.folder}
175
+ ckpt_dir: ${paths.output_dir}/checkpoints
176
+ extras:
177
+ ignore_warnings: false
178
+ enforce_tags: false
179
+ print_config: true
180
+ dora:
181
+ dir: ${paths.log_dir}
182
+ exclude:
183
+ - callbacks.*
184
+ - data.local_dir
185
+ - data.num_workers
186
+ - data.dataloader_kwargs.pin_memory
187
+ - data.dataloader_kwargs.prefetch_factor
188
+ - data.dataloader.persistent_workers
189
+ - extras.*
190
+ - logger.*
191
+ - model.compile
192
+ - paths.*
193
+ - trainer.accelerator
194
+ - trainer.devices
195
+ - trainer.check_val_every_n_epoch
196
+ - trainer.default_root_dir
197
+ - trainer.min_epochs
198
+ - trainer.num_sanity_val_steps
199
+ - trainer.log_every_n_steps
200
+ - resume
201
+ git_save: false
L0-100/last.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6e3b758495bd98e5225e42efc92efb411b54ffd8f7525eeba168f5e874b93128
3
+ size 50364201
L0-20/config.yaml ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task_name: train
2
+ tags:
3
+ - music4all
4
+ - muq
5
+ - batchtopk
6
+ - sae
7
+ train: true
8
+ test: false
9
+ ckpt_path: null
10
+ seed: 42
11
+ resume: false
12
+ optimized_metrics: null
13
+ data:
14
+ name: sae
15
+ _target_: steerable_retrieval.dataloading.dataloaders.TextAudioDataModule
16
+ preextracted_features: true
17
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
18
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000} *
19
+ 10}
20
+ return_audio: true
21
+ return_text: true
22
+ datasets:
23
+ music4all:
24
+ _target_: steerable_retrieval.dataloading.datasets.TextAudioDataset
25
+ get_annotations_function: steerable_retrieval.dataloading.dataloaders.get_music4all_annotations
26
+ task_kwargs:
27
+ manifest_csv: /gpfs/scratch/acw749/datasets/music4all_instruct/music4all_v1/embeddings/embedding_lookup_manifest.csv
28
+ split: keep
29
+ return_audio: true
30
+ return_text: true
31
+ preextracted_features: ${data.preextracted_features}
32
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
33
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000}
34
+ * 10}
35
+ root_dir: null
36
+ new_dir: null
37
+ batch_size: 512
38
+ num_workers: 8
39
+ model:
40
+ sae_encoder:
41
+ _target_: steerable_retrieval.models.sae.encoders.BatchTopKSAEEncoder
42
+ act_size: 512
43
+ dict_size: 4096
44
+ top_k: 20
45
+ threshold_momentum: 0.9
46
+ input_unit_norm: true
47
+ sae_decoder:
48
+ _target_: steerable_retrieval.models.sae.decoders.SAEDecoder
49
+ dict_size: 4096
50
+ act_size: 512
51
+ input_unit_norm: true
52
+ output_unit_norm: true
53
+ loss_fn:
54
+ _target_: steerable_retrieval.models.utils.losses.TopKSAELoss
55
+ l1_coeff: 0
56
+ l2_coeff: 1.0
57
+ aux_penalty: 0.05
58
+ top_k_aux: 512
59
+ n_batches_to_dead: 128
60
+ orthogonal_loss: 0
61
+ audio_encoder:
62
+ _target_: torch.nn.Identity
63
+ text_encoder:
64
+ _target_: steerable_retrieval.models.encoders.muq.MuQTextEncoder
65
+ model_name: OpenMuQ/MuQ-MuLan-large
66
+ device: cuda
67
+ freeze: true
68
+ ckpt_path: null
69
+ _target_: steerable_retrieval.models.sae.sae.LightningSAE
70
+ ckpt_path: null
71
+ freeze: false
72
+ optimizer:
73
+ _target_: torch.optim.AdamW
74
+ _partial_: true
75
+ lr: 0.0001
76
+ weight_decay: 0.0001
77
+ betas:
78
+ - 0.9
79
+ - 0.999
80
+ scheduler:
81
+ _target_: steerable_retrieval.models.utils.schedulers.CosineDecayWithLinearWarmup
82
+ _partial_: true
83
+ warmup_steps: 10000
84
+ max_steps: ${trainer.max_steps}
85
+ base_lr: 0.0001
86
+ final_lr: 1.0e-05
87
+ preextracted_features: true
88
+ data_mixing_ratio: 0.0
89
+ callbacks:
90
+ model_summary:
91
+ _target_: lightning.pytorch.callbacks.RichModelSummary
92
+ max_depth: 1
93
+ lr_monitor:
94
+ _target_: lightning.pytorch.callbacks.LearningRateMonitor
95
+ model_checkpoint:
96
+ _target_: lightning.pytorch.callbacks.ModelCheckpoint
97
+ dirpath: ${paths.ckpt_dir}
98
+ verbose: true
99
+ save_last: true
100
+ save_top_k: 1
101
+ mode: max
102
+ auto_insert_metric_name: true
103
+ save_weights_only: false
104
+ every_n_epochs: 1
105
+ progress_bar:
106
+ _target_: lightning.pytorch.callbacks.RichProgressBar
107
+ energy:
108
+ _target_: steerable_retrieval.callbacks.energy.EnergyCallback
109
+ enable_on_validation: true
110
+ enable_on_test: true
111
+ every_n_steps: null
112
+ every_n_epochs: 1
113
+ topk: 512
114
+ prefix: energy
115
+ modality:
116
+ _target_: steerable_retrieval.callbacks.energy.ModalityScoreCallback
117
+ enable_on_validation: true
118
+ enable_on_test: true
119
+ every_n_steps: null
120
+ every_n_epochs: 1
121
+ eps: 1.0e-12
122
+ prefix: modality
123
+ modality_classifier:
124
+ _target_: steerable_retrieval.callbacks.energy.ModalityClassifierCallback
125
+ enable_on_validation: true
126
+ enable_on_test: true
127
+ every_n_steps: null
128
+ every_n_epochs: 1
129
+ prefix: modality_classifier
130
+ max_samples: 10000
131
+ test_fraction: 0.2
132
+ cknna:
133
+ _target_: steerable_retrieval.callbacks.alignment.CKNNACallback
134
+ enable_on_validation: true
135
+ enable_on_test: true
136
+ every_n_steps: null
137
+ every_n_epochs: 1
138
+ topk: 10
139
+ max_samples: 2048
140
+ distance_agnostic: false
141
+ unbiased: true
142
+ prefix: CKNNA
143
+ logger:
144
+ wandb:
145
+ _target_: lightning.pytorch.loggers.wandb.WandbLogger
146
+ save_dir: ${paths.output_dir}/wandb/
147
+ offline: false
148
+ project: steerable-retrieval
149
+ log_model: false
150
+ save_code: true
151
+ prefix: ''
152
+ entity: jul-guinot
153
+ tags: ${tags}
154
+ job_type: ''
155
+ trainer:
156
+ _target_: lightning.pytorch.trainer.Trainer
157
+ default_root_dir: ${paths.output_dir}
158
+ min_epochs: 1
159
+ max_steps: 500000
160
+ accelerator: gpu
161
+ devices: 1
162
+ strategy: auto
163
+ precision: 16-mixed
164
+ check_val_every_n_epoch: 1
165
+ deterministic: false
166
+ gradient_clip_val: 1.0
167
+ accumulate_grad_batches: 4
168
+ limit_val_batches: 100
169
+ paths:
170
+ root_dir: .
171
+ data_dir: ${paths.root_dir}/data
172
+ log_dir: ${paths.root_dir}/logs/
173
+ pretrained: ${paths.root_dir}/pretrained
174
+ output_dir: ${dora:xp.folder}
175
+ ckpt_dir: ${paths.output_dir}/checkpoints
176
+ extras:
177
+ ignore_warnings: false
178
+ enforce_tags: false
179
+ print_config: true
180
+ dora:
181
+ dir: ${paths.log_dir}
182
+ exclude:
183
+ - callbacks.*
184
+ - data.local_dir
185
+ - data.num_workers
186
+ - data.dataloader_kwargs.pin_memory
187
+ - data.dataloader_kwargs.prefetch_factor
188
+ - data.dataloader.persistent_workers
189
+ - extras.*
190
+ - logger.*
191
+ - model.compile
192
+ - paths.*
193
+ - trainer.accelerator
194
+ - trainer.devices
195
+ - trainer.check_val_every_n_epoch
196
+ - trainer.default_root_dir
197
+ - trainer.min_epochs
198
+ - trainer.num_sanity_val_steps
199
+ - trainer.log_every_n_steps
200
+ - resume
201
+ git_save: false
L0-20/last.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ffe764c7c57c586a4630a45b5e5bc6deb4eeb8df12af217dc3c2ffcadcacb906
3
+ size 50364201
L0-5/config.yaml ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task_name: train
2
+ tags:
3
+ - music4all
4
+ - muq
5
+ - batchtopk
6
+ - sae
7
+ train: true
8
+ test: false
9
+ ckpt_path: null
10
+ seed: 42
11
+ resume: false
12
+ optimized_metrics: null
13
+ data:
14
+ name: sae
15
+ _target_: steerable_retrieval.dataloading.dataloaders.TextAudioDataModule
16
+ preextracted_features: true
17
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
18
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000} *
19
+ 10}
20
+ return_audio: true
21
+ return_text: true
22
+ datasets:
23
+ music4all:
24
+ _target_: steerable_retrieval.dataloading.datasets.TextAudioDataset
25
+ get_annotations_function: steerable_retrieval.dataloading.dataloaders.get_music4all_annotations
26
+ task_kwargs:
27
+ manifest_csv: /gpfs/scratch/acw749/datasets/music4all_instruct/music4all_v1/embeddings/embedding_lookup_manifest.csv
28
+ split: keep
29
+ return_audio: true
30
+ return_text: true
31
+ preextracted_features: ${data.preextracted_features}
32
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
33
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000}
34
+ * 10}
35
+ root_dir: null
36
+ new_dir: null
37
+ batch_size: 512
38
+ num_workers: 8
39
+ model:
40
+ sae_encoder:
41
+ _target_: steerable_retrieval.models.sae.encoders.BatchTopKSAEEncoder
42
+ act_size: 512
43
+ dict_size: 4096
44
+ top_k: 5
45
+ threshold_momentum: 0.9
46
+ input_unit_norm: true
47
+ sae_decoder:
48
+ _target_: steerable_retrieval.models.sae.decoders.SAEDecoder
49
+ dict_size: 4096
50
+ act_size: 512
51
+ input_unit_norm: true
52
+ output_unit_norm: true
53
+ loss_fn:
54
+ _target_: steerable_retrieval.models.utils.losses.TopKSAELoss
55
+ l1_coeff: 0
56
+ l2_coeff: 1.0
57
+ aux_penalty: 0.05
58
+ top_k_aux: 512
59
+ n_batches_to_dead: 128
60
+ orthogonal_loss: 0
61
+ audio_encoder:
62
+ _target_: torch.nn.Identity
63
+ text_encoder:
64
+ _target_: steerable_retrieval.models.encoders.muq.MuQTextEncoder
65
+ model_name: OpenMuQ/MuQ-MuLan-large
66
+ device: cuda
67
+ freeze: true
68
+ ckpt_path: null
69
+ _target_: steerable_retrieval.models.sae.sae.LightningSAE
70
+ ckpt_path: null
71
+ freeze: false
72
+ optimizer:
73
+ _target_: torch.optim.AdamW
74
+ _partial_: true
75
+ lr: 0.0001
76
+ weight_decay: 0.0001
77
+ betas:
78
+ - 0.9
79
+ - 0.999
80
+ scheduler:
81
+ _target_: steerable_retrieval.models.utils.schedulers.CosineDecayWithLinearWarmup
82
+ _partial_: true
83
+ warmup_steps: 10000
84
+ max_steps: ${trainer.max_steps}
85
+ base_lr: 0.0001
86
+ final_lr: 1.0e-05
87
+ preextracted_features: true
88
+ data_mixing_ratio: 0.0
89
+ callbacks:
90
+ model_summary:
91
+ _target_: lightning.pytorch.callbacks.RichModelSummary
92
+ max_depth: 1
93
+ lr_monitor:
94
+ _target_: lightning.pytorch.callbacks.LearningRateMonitor
95
+ model_checkpoint:
96
+ _target_: lightning.pytorch.callbacks.ModelCheckpoint
97
+ dirpath: ${paths.ckpt_dir}
98
+ verbose: true
99
+ save_last: true
100
+ save_top_k: 1
101
+ mode: max
102
+ auto_insert_metric_name: true
103
+ save_weights_only: false
104
+ every_n_epochs: 1
105
+ progress_bar:
106
+ _target_: lightning.pytorch.callbacks.RichProgressBar
107
+ energy:
108
+ _target_: steerable_retrieval.callbacks.energy.EnergyCallback
109
+ enable_on_validation: true
110
+ enable_on_test: true
111
+ every_n_steps: null
112
+ every_n_epochs: 1
113
+ topk: 512
114
+ prefix: energy
115
+ modality:
116
+ _target_: steerable_retrieval.callbacks.energy.ModalityScoreCallback
117
+ enable_on_validation: true
118
+ enable_on_test: true
119
+ every_n_steps: null
120
+ every_n_epochs: 1
121
+ eps: 1.0e-12
122
+ prefix: modality
123
+ modality_classifier:
124
+ _target_: steerable_retrieval.callbacks.energy.ModalityClassifierCallback
125
+ enable_on_validation: true
126
+ enable_on_test: true
127
+ every_n_steps: null
128
+ every_n_epochs: 1
129
+ prefix: modality_classifier
130
+ max_samples: 10000
131
+ test_fraction: 0.2
132
+ cknna:
133
+ _target_: steerable_retrieval.callbacks.alignment.CKNNACallback
134
+ enable_on_validation: true
135
+ enable_on_test: true
136
+ every_n_steps: null
137
+ every_n_epochs: 1
138
+ topk: 10
139
+ max_samples: 2048
140
+ distance_agnostic: false
141
+ unbiased: true
142
+ prefix: CKNNA
143
+ logger:
144
+ wandb:
145
+ _target_: lightning.pytorch.loggers.wandb.WandbLogger
146
+ save_dir: ${paths.output_dir}/wandb/
147
+ offline: false
148
+ project: steerable-retrieval
149
+ log_model: false
150
+ save_code: true
151
+ prefix: ''
152
+ entity: jul-guinot
153
+ tags: ${tags}
154
+ job_type: ''
155
+ trainer:
156
+ _target_: lightning.pytorch.trainer.Trainer
157
+ default_root_dir: ${paths.output_dir}
158
+ min_epochs: 1
159
+ max_steps: 500000
160
+ accelerator: gpu
161
+ devices: 1
162
+ strategy: auto
163
+ precision: 16-mixed
164
+ check_val_every_n_epoch: 1
165
+ deterministic: false
166
+ gradient_clip_val: 1.0
167
+ accumulate_grad_batches: 4
168
+ limit_val_batches: 100
169
+ paths:
170
+ root_dir: .
171
+ data_dir: ${paths.root_dir}/data
172
+ log_dir: ${paths.root_dir}/logs/
173
+ pretrained: ${paths.root_dir}/pretrained
174
+ output_dir: ${dora:xp.folder}
175
+ ckpt_dir: ${paths.output_dir}/checkpoints
176
+ extras:
177
+ ignore_warnings: false
178
+ enforce_tags: false
179
+ print_config: true
180
+ dora:
181
+ dir: ${paths.log_dir}
182
+ exclude:
183
+ - callbacks.*
184
+ - data.local_dir
185
+ - data.num_workers
186
+ - data.dataloader_kwargs.pin_memory
187
+ - data.dataloader_kwargs.prefetch_factor
188
+ - data.dataloader.persistent_workers
189
+ - extras.*
190
+ - logger.*
191
+ - model.compile
192
+ - paths.*
193
+ - trainer.accelerator
194
+ - trainer.devices
195
+ - trainer.check_val_every_n_epoch
196
+ - trainer.default_root_dir
197
+ - trainer.min_epochs
198
+ - trainer.num_sanity_val_steps
199
+ - trainer.log_every_n_steps
200
+ - resume
201
+ git_save: false
L0-5/last.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:496f8852792593a4fec12b92d6abb420814220a752567415e7c6bd36cd1fd729
3
+ size 50364201
L0-50/config.yaml ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task_name: train
2
+ tags:
3
+ - music4all
4
+ - muq
5
+ - batchtopk
6
+ - sae
7
+ train: true
8
+ test: false
9
+ ckpt_path: null
10
+ seed: 42
11
+ resume: false
12
+ optimized_metrics: null
13
+ data:
14
+ name: sae
15
+ _target_: steerable_retrieval.dataloading.dataloaders.TextAudioDataModule
16
+ preextracted_features: true
17
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
18
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000} *
19
+ 10}
20
+ return_audio: true
21
+ return_text: true
22
+ datasets:
23
+ music4all:
24
+ _target_: steerable_retrieval.dataloading.datasets.TextAudioDataset
25
+ get_annotations_function: steerable_retrieval.dataloading.dataloaders.get_music4all_annotations
26
+ task_kwargs:
27
+ manifest_csv: /gpfs/scratch/acw749/datasets/music4all_instruct/music4all_v1/embeddings/embedding_lookup_manifest.csv
28
+ split: keep
29
+ return_audio: true
30
+ return_text: true
31
+ preextracted_features: ${data.preextracted_features}
32
+ target_sr: ${oc.select:model.audio_encoder.sampling_rate,24000}
33
+ target_n_samples: ${eval:${oc.select:model.audio_encoder.sampling_rate,24000}
34
+ * 10}
35
+ root_dir: null
36
+ new_dir: null
37
+ batch_size: 512
38
+ num_workers: 8
39
+ model:
40
+ sae_encoder:
41
+ _target_: steerable_retrieval.models.sae.encoders.BatchTopKSAEEncoder
42
+ act_size: 512
43
+ dict_size: 4096
44
+ top_k: 50
45
+ threshold_momentum: 0.9
46
+ input_unit_norm: true
47
+ sae_decoder:
48
+ _target_: steerable_retrieval.models.sae.decoders.SAEDecoder
49
+ dict_size: 4096
50
+ act_size: 512
51
+ input_unit_norm: true
52
+ output_unit_norm: true
53
+ loss_fn:
54
+ _target_: steerable_retrieval.models.utils.losses.TopKSAELoss
55
+ l1_coeff: 0
56
+ l2_coeff: 1.0
57
+ aux_penalty: 0.05
58
+ top_k_aux: 512
59
+ n_batches_to_dead: 128
60
+ orthogonal_loss: 0
61
+ audio_encoder:
62
+ _target_: torch.nn.Identity
63
+ text_encoder:
64
+ _target_: steerable_retrieval.models.encoders.muq.MuQTextEncoder
65
+ model_name: OpenMuQ/MuQ-MuLan-large
66
+ device: cuda
67
+ freeze: true
68
+ ckpt_path: null
69
+ _target_: steerable_retrieval.models.sae.sae.LightningSAE
70
+ ckpt_path: null
71
+ freeze: false
72
+ optimizer:
73
+ _target_: torch.optim.AdamW
74
+ _partial_: true
75
+ lr: 0.0001
76
+ weight_decay: 0.0001
77
+ betas:
78
+ - 0.9
79
+ - 0.999
80
+ scheduler:
81
+ _target_: steerable_retrieval.models.utils.schedulers.CosineDecayWithLinearWarmup
82
+ _partial_: true
83
+ warmup_steps: 10000
84
+ max_steps: ${trainer.max_steps}
85
+ base_lr: 0.0001
86
+ final_lr: 1.0e-05
87
+ preextracted_features: true
88
+ data_mixing_ratio: 0.0
89
+ callbacks:
90
+ model_summary:
91
+ _target_: lightning.pytorch.callbacks.RichModelSummary
92
+ max_depth: 1
93
+ lr_monitor:
94
+ _target_: lightning.pytorch.callbacks.LearningRateMonitor
95
+ model_checkpoint:
96
+ _target_: lightning.pytorch.callbacks.ModelCheckpoint
97
+ dirpath: ${paths.ckpt_dir}
98
+ verbose: true
99
+ save_last: true
100
+ save_top_k: 1
101
+ mode: max
102
+ auto_insert_metric_name: true
103
+ save_weights_only: false
104
+ every_n_epochs: 1
105
+ progress_bar:
106
+ _target_: lightning.pytorch.callbacks.RichProgressBar
107
+ energy:
108
+ _target_: steerable_retrieval.callbacks.energy.EnergyCallback
109
+ enable_on_validation: true
110
+ enable_on_test: true
111
+ every_n_steps: null
112
+ every_n_epochs: 1
113
+ topk: 512
114
+ prefix: energy
115
+ modality:
116
+ _target_: steerable_retrieval.callbacks.energy.ModalityScoreCallback
117
+ enable_on_validation: true
118
+ enable_on_test: true
119
+ every_n_steps: null
120
+ every_n_epochs: 1
121
+ eps: 1.0e-12
122
+ prefix: modality
123
+ modality_classifier:
124
+ _target_: steerable_retrieval.callbacks.energy.ModalityClassifierCallback
125
+ enable_on_validation: true
126
+ enable_on_test: true
127
+ every_n_steps: null
128
+ every_n_epochs: 1
129
+ prefix: modality_classifier
130
+ max_samples: 10000
131
+ test_fraction: 0.2
132
+ cknna:
133
+ _target_: steerable_retrieval.callbacks.alignment.CKNNACallback
134
+ enable_on_validation: true
135
+ enable_on_test: true
136
+ every_n_steps: null
137
+ every_n_epochs: 1
138
+ topk: 10
139
+ max_samples: 2048
140
+ distance_agnostic: false
141
+ unbiased: true
142
+ prefix: CKNNA
143
+ logger:
144
+ wandb:
145
+ _target_: lightning.pytorch.loggers.wandb.WandbLogger
146
+ save_dir: ${paths.output_dir}/wandb/
147
+ offline: false
148
+ project: steerable-retrieval
149
+ log_model: false
150
+ save_code: true
151
+ prefix: ''
152
+ entity: jul-guinot
153
+ tags: ${tags}
154
+ job_type: ''
155
+ trainer:
156
+ _target_: lightning.pytorch.trainer.Trainer
157
+ default_root_dir: ${paths.output_dir}
158
+ min_epochs: 1
159
+ max_steps: 500000
160
+ accelerator: gpu
161
+ devices: 1
162
+ strategy: auto
163
+ precision: 16-mixed
164
+ check_val_every_n_epoch: 1
165
+ deterministic: false
166
+ gradient_clip_val: 1.0
167
+ accumulate_grad_batches: 4
168
+ limit_val_batches: 100
169
+ paths:
170
+ root_dir: .
171
+ data_dir: ${paths.root_dir}/data
172
+ log_dir: ${paths.root_dir}/logs/
173
+ pretrained: ${paths.root_dir}/pretrained
174
+ output_dir: ${dora:xp.folder}
175
+ ckpt_dir: ${paths.output_dir}/checkpoints
176
+ extras:
177
+ ignore_warnings: false
178
+ enforce_tags: false
179
+ print_config: true
180
+ dora:
181
+ dir: ${paths.log_dir}
182
+ exclude:
183
+ - callbacks.*
184
+ - data.local_dir
185
+ - data.num_workers
186
+ - data.dataloader_kwargs.pin_memory
187
+ - data.dataloader_kwargs.prefetch_factor
188
+ - data.dataloader.persistent_workers
189
+ - extras.*
190
+ - logger.*
191
+ - model.compile
192
+ - paths.*
193
+ - trainer.accelerator
194
+ - trainer.devices
195
+ - trainer.check_val_every_n_epoch
196
+ - trainer.default_root_dir
197
+ - trainer.min_epochs
198
+ - trainer.num_sanity_val_steps
199
+ - trainer.log_every_n_steps
200
+ - resume
201
+ git_save: false
L0-50/last.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8dce23f477346f90c2568b5adcead72b49942725c59e504f44b3bab804b012ca
3
+ size 50364201
README.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags: [music, retrieval, sparse-autoencoder, muq]
4
+ ---
5
+
6
+ # Sparse Steerable Retrieval — BatchTopK SAEs
7
+
8
+ BatchTopK SAEs trained on MuQ-MuLan music4all audio embeddings (512-d), one per sparsity level L0. Each `L0-*/` holds `last.ckpt` (encoder/decoder weights) + `config.yaml`. Load via `steerable_retrieval.steer.load_steerable_sae(repo, subfolder='L0-20')`.