token03 commited on
Commit
6dcb59e
·
verified ·
1 Parent(s): 920da54

Release v15

Browse files
README.md CHANGED
@@ -6,43 +6,35 @@ tags:
6
  - similarity-search
7
  ---
8
 
9
- # BoBERT · v14.1
10
 
11
- Dense osu!standard beatmap representations from `.osu` hit-object sequences.
12
- The encoder was pretrained on roughly 500,000 beatmaps; collection-derived adaptation
13
- refines the embeddings for recommendation and similarity search.
14
 
15
- [Source and architecture](https://github.com/token03/bobert) · [Live recommender](https://bobert-web.pages.dev/)
 
 
 
 
 
16
 
17
- ## Release
18
 
19
- - Embeddings: 498,962 beatmaps, 384 dimensions.
20
- - Encoder: 9 layers, 6 heads, 4,096 hit-object limit.
21
- - Index generated: 2026-09-14T15:25:19.001095+00:00.
22
- - Adapter: collection-trained linear projection.
23
- - Export workspace: `a65b9137198c8e64378960a881d66036fd4fbe19`.
24
-
25
- ## Download
26
-
27
- From the source checkout:
28
 
29
  ```sh
30
- uv run --no-default-groups --group serve fetch-run --repo token03/bobert --revision v14.1
31
  docker compose up --build api
32
  ```
33
 
34
- To inspect the model directly:
35
 
36
  ```python
37
  import torch
38
  from core.model import BobertEncoder
 
39
 
40
- model, stats = BobertEncoder.from_pretrained("model.safetensors", torch.device("cpu"))
 
41
  ```
42
 
43
- `model.safetensors` contains the encoder, adapter, normalization statistics, and model configuration.
44
- `embeddings.parquet` contains beatmap IDs, vectors, densities, and embedded pooling/retrieval metadata.
45
- The index records its model's SHA-256 checksum. Keep the two files together for online queries.
46
- `data/` contains the metadata and strain catalogs required by the API.
47
-
48
- See the source repository for the training pipeline, acknowledgements, limitations and evaluation tools.
 
6
  - similarity-search
7
  ---
8
 
9
+ # BoBERT · v15
10
 
11
+ Hit-object sequence encoders and retrieval indices for osu! modes. Each mode has its own tokenizer, encoder weights, centering statistics and optional collection-trained linear adapter.
 
 
12
 
13
+ | Mode | Variant | Maps | Dimensions | Layers |
14
+ |---|---|---:|---:|---:|
15
+ | std | adapted | 498,962 | 384 | 9 |
16
+ | taiko | adapted | 95,415 | 384 | 9 |
17
+ | catch | adapted | 24,550 | 256 | 9 |
18
+ | mania | adapted | 314,997 | 384 | 9 |
19
 
20
+ The release manifest selects one model/index pair per mode. Base and adapted files use the same mode directory; adapted files have an `.a` suffix. The index records its model's SHA256 checksum. Catalogs are shared in `data/`.
21
 
22
+ Export workspace: `f77d80d8442a535c3d7700f245a11022157dc89c`.
 
 
 
 
 
 
 
 
23
 
24
  ```sh
25
+ uv run fetch-run --repo token03/bobert --revision v15
26
  docker compose up --build api
27
  ```
28
 
29
+ From a source checkout:
30
 
31
  ```python
32
  import torch
33
  from core.model import BobertEncoder
34
+ from core.artifacts import resolve_artifacts
35
 
36
+ artifacts = resolve_artifacts("runs/current", "mania")
37
+ model = BobertEncoder.from_pretrained(artifacts.model, torch.device("cpu"))
38
  ```
39
 
40
+ [Source, training and evaluation](https://github.com/token03/bobert)
 
 
 
 
 
model.safetensors → catch/embeddings.a.parquet RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:40aa11d62aa8d88ee987932847acf61d8a751d8b654b51f82018e4a699708d55
3
- size 64609608
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ec5303b3d5c843626fc4c01089dcf181e93efcf2aedc018a77e0956736a16a78
3
+ size 10061295
embeddings.parquet → catch/model.a.safetensors RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:7f92bcd664f86500d5a32c5f2ccc69957ae35db792bb30064ea198deb9ead30e
3
- size 384237851
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e96d5d2c4c1eb507f6a3c87d12778768abdef7a62102efb264903c883adbabb
3
+ size 28900032
catch/training.a.yaml ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data:
2
+ mode: catch
3
+ features_dir: /home/jessiez/projects/bobert/data/features
4
+ strains_path: /home/jessiez/projects/bobert/data/strains.parquet
5
+ dataset_seed: 42
6
+ sample_size: null
7
+ max_seq_len: 4096
8
+ val_split: 0.1
9
+ min_sr: 2.0
10
+ max_sr: 14.0
11
+ dataloader:
12
+ num_workers: 2
13
+ pin_memory: true
14
+ persistent_workers: false
15
+ prefetch_factor: 2
16
+ validation_metadata_path: /home/jessiez/projects/bobert/runs/v15/catch/validation_groups.parquet
17
+ validation_group_column: validation_group_id
18
+ model:
19
+ d_model: 256
20
+ n_heads: 4
21
+ n_layers: 9
22
+ dim_feedforward: 688
23
+ dropout: 0.1
24
+ local_attention_window: 128
25
+ local_attention_block_size: 256
26
+ global_attention_layers:
27
+ - 2
28
+ - 5
29
+ - 8
30
+ feature_token_dim: 16
31
+ runtime:
32
+ compile_model: true
33
+ compile_mode: default
34
+ activation_checkpointing: false
35
+ training:
36
+ seed: 42
37
+ trainer:
38
+ epochs: 30
39
+ batch_size: 64
40
+ max_tokens: 32768
41
+ grad_accum: 2
42
+ grad_clip: 1.0
43
+ precision: bf16-mixed
44
+ save_checkpoints: true
45
+ optimizer:
46
+ adamw_lr: 0.0002
47
+ adamw_wd: 0.05
48
+ adamw_betas:
49
+ - 0.9
50
+ - 0.95
51
+ muon_lr: 0.01
52
+ muon_wd: 0.01
53
+ scheduler:
54
+ warmup_ratio: 0.01
55
+ min_lr_ratio: 0.005
56
+ masking:
57
+ ratio: 0.3
58
+ mean_span_length: 2
data/beatmaps.parquet CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a5a3cfbe7916a63629e7411f71a8ec8c26535dcf9a8c56694262298d8680e15d
3
- size 80239403
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:12f63cf72710b42acd8e48f28c589c7e2ee45758699750de9a4f9d7b1d3bf481
3
+ size 214545102
data/strains.parquet CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:748f8e6bdab690dfc36604a4bfb78f8e0ddbcfd8faeb6c4ee9bab1b4d2b2cd1e
3
- size 40110268
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:212b7c1587fac5d64ce806f7fac8c1d09577a14135e8ec1d67cfbcb6eb794216
3
+ size 70206325
mania/embeddings.a.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6875387785899c2393d5bbfdca7d74cc82864e8a86a1ee941416f4807f8cb5d2
3
+ size 189563261
mania/model.a.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3bc9148983d51c8273805d87a241ebbb039ae20c2096190e4f053c3104ae7b5
3
+ size 64678760
mania/training.a.yaml ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data:
2
+ mode: mania
3
+ features_dir: /home/jessiez/projects/bobert/data/features
4
+ strains_path: /home/jessiez/projects/bobert/data/strains.parquet
5
+ dataset_seed: 42
6
+ sample_size: null
7
+ max_seq_len: 4096
8
+ val_split: 0.1
9
+ min_sr: 2.0
10
+ max_sr: 14.0
11
+ dataloader:
12
+ num_workers: 2
13
+ pin_memory: true
14
+ persistent_workers: false
15
+ prefetch_factor: 2
16
+ validation_metadata_path: /home/jessiez/projects/bobert/runs/v15/mania/validation_groups.parquet
17
+ validation_group_column: validation_group_id
18
+ model:
19
+ d_model: 384
20
+ n_heads: 6
21
+ n_layers: 9
22
+ dim_feedforward: 1024
23
+ dropout: 0.1
24
+ local_attention_window: 128
25
+ local_attention_block_size: 256
26
+ global_attention_layers:
27
+ - 2
28
+ - 5
29
+ - 8
30
+ feature_token_dim: 16
31
+ runtime:
32
+ compile_model: true
33
+ compile_mode: default
34
+ activation_checkpointing: false
35
+ training:
36
+ seed: 42
37
+ trainer:
38
+ epochs: 12
39
+ batch_size: 64
40
+ max_tokens: 32768
41
+ grad_accum: 2
42
+ grad_clip: 1.0
43
+ precision: bf16-mixed
44
+ save_checkpoints: true
45
+ optimizer:
46
+ adamw_lr: 0.0002
47
+ adamw_wd: 0.05
48
+ adamw_betas:
49
+ - 0.9
50
+ - 0.95
51
+ muon_lr: 0.01
52
+ muon_wd: 0.01
53
+ scheduler:
54
+ warmup_ratio: 0.01
55
+ min_lr_ratio: 0.005
56
+ masking:
57
+ ratio: 0.3
58
+ mean_span_length: 2
release.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": 1,
3
+ "modes": {
4
+ "std": "adapted",
5
+ "taiko": "adapted",
6
+ "catch": "adapted",
7
+ "mania": "adapted"
8
+ }
9
+ }
std/embeddings.a.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:974e354a7c20f059cbfd0bf8aa9282f49884403a191f0049571641fe5c754535
3
+ size 316200943
std/model.a.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:511cb211efde9a13cb68fb7f6b28f3d19b0642f303ae90ade88d46205fb072d3
3
+ size 64704648
training.yaml → std/training.a.yaml RENAMED
File without changes
taiko/embeddings.a.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e36ebb77fdbacecf70f82f57e220684d82e5c92b196273ef1489ef259ed4175
3
+ size 57491033
taiko/model.a.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c324b5d5cfd69d69c32200c9a68b33c3d070637a63cb64fa901883b3356477aa
3
+ size 64478384
taiko/training.a.yaml ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data:
2
+ mode: taiko
3
+ features_dir: /home/jessiez/projects/bobert/data/features
4
+ strains_path: /home/jessiez/projects/bobert/data/strains.parquet
5
+ dataset_seed: 42
6
+ sample_size: null
7
+ max_seq_len: 4096
8
+ val_split: 0.1
9
+ min_sr: 2.0
10
+ max_sr: 14.0
11
+ dataloader:
12
+ num_workers: 2
13
+ pin_memory: true
14
+ persistent_workers: false
15
+ prefetch_factor: 2
16
+ validation_metadata_path: /home/jessiez/projects/bobert/runs/v15/taiko/validation_groups.parquet
17
+ validation_group_column: validation_group_id
18
+ model:
19
+ d_model: 384
20
+ n_heads: 6
21
+ n_layers: 9
22
+ dim_feedforward: 1024
23
+ dropout: 0.1
24
+ local_attention_window: 128
25
+ local_attention_block_size: 256
26
+ global_attention_layers:
27
+ - 2
28
+ - 5
29
+ - 8
30
+ feature_token_dim: 16
31
+ runtime:
32
+ compile_model: true
33
+ compile_mode: default
34
+ activation_checkpointing: false
35
+ training:
36
+ seed: 42
37
+ trainer:
38
+ epochs: 20
39
+ batch_size: 64
40
+ max_tokens: 32768
41
+ grad_accum: 2
42
+ grad_clip: 1.0
43
+ precision: bf16-mixed
44
+ save_checkpoints: true
45
+ optimizer:
46
+ adamw_lr: 0.0002
47
+ adamw_wd: 0.05
48
+ adamw_betas:
49
+ - 0.9
50
+ - 0.95
51
+ muon_lr: 0.01
52
+ muon_wd: 0.01
53
+ scheduler:
54
+ warmup_ratio: 0.01
55
+ min_lr_ratio: 0.005
56
+ masking:
57
+ ratio: 0.3
58
+ mean_span_length: 2