Release v15
Browse files- README.md +16 -24
- model.safetensors → catch/embeddings.a.parquet +2 -2
- embeddings.parquet → catch/model.a.safetensors +2 -2
- catch/training.a.yaml +58 -0
- data/beatmaps.parquet +2 -2
- data/strains.parquet +2 -2
- mania/embeddings.a.parquet +3 -0
- mania/model.a.safetensors +3 -0
- mania/training.a.yaml +58 -0
- release.json +9 -0
- std/embeddings.a.parquet +3 -0
- std/model.a.safetensors +3 -0
- training.yaml → std/training.a.yaml +0 -0
- taiko/embeddings.a.parquet +3 -0
- taiko/model.a.safetensors +3 -0
- taiko/training.a.yaml +58 -0
README.md
CHANGED
|
@@ -6,43 +6,35 @@ tags:
|
|
| 6 |
- similarity-search
|
| 7 |
---
|
| 8 |
|
| 9 |
-
# BoBERT ·
|
| 10 |
|
| 11 |
-
|
| 12 |
-
The encoder was pretrained on roughly 500,000 beatmaps; collection-derived adaptation
|
| 13 |
-
refines the embeddings for recommendation and similarity search.
|
| 14 |
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
-
|
| 18 |
|
| 19 |
-
|
| 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
|
| 31 |
docker compose up --build api
|
| 32 |
```
|
| 33 |
|
| 34 |
-
|
| 35 |
|
| 36 |
```python
|
| 37 |
import torch
|
| 38 |
from core.model import BobertEncoder
|
|
|
|
| 39 |
|
| 40 |
-
|
|
|
|
| 41 |
```
|
| 42 |
|
| 43 |
-
|
| 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:
|
| 3 |
-
size
|
|
|
|
| 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:
|
| 3 |
-
size
|
|
|
|
| 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:
|
| 3 |
-
size
|
|
|
|
| 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:
|
| 3 |
-
size
|
|
|
|
| 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
|