Music transcription
- Score
- 9.5
- Wallet spend
- $33.08 of $200
- Model cost
- $38.72
- Agent time
- 10h 8m
- Steps
- 429
- Tokens in / out
- 97.5M / 273k
- Self-checks
- 2 passed of 2 used
- Rank at $200 wallet
- 7th of 14
Score
9.5raw metric 0.5956
The raw metric (class-aware note-onset F1, averaged over 9 instrument classes) is rescaled so that the untouched YourMT3+ checkpoint (F1 0.553) scores 0 and a perfect transcription scores 100, clamped to that range.
Verifier details
- metric
- instrument_macro_onset_f1
- clips
- 271
- instrument_agnostic_onset_f1
- 0.6178
- onset_offset_f1
- 0.0194
After grading, a reviewer model reads the submission's files and the agent's trajectory and checks each of the task's rules. A failed check makes the score 0. Step numbers link into the trajectory.
✓learned transcription modelserve.sh runs serve.py. serve.py loads the local weights.pt with torch.load into AMTModelV2 (model2.py). That is a log-m
serve.sh runs serve.py. serve.py loads the local weights.pt with torch.load into AMTModelV2 (model2.py). That is a log-mel conv front end plus a 6-layer Transformer, with onset/frame/offset/velocity heads covering 9 instrument classes x 128 pitches. It computes the mel, runs a forward pass and a sigmoid, and decodes notes with decode2.decode_onsets using per-class thresholds from thresholds.json. architecture.json declares base_model 'none' and from-scratch training. The weights.pt inventory was fully inspected and shows real learned tensors (model.b1.conv1.weight, batch-norm statistics and so on, about 66 MB), consistent with a trained network. Nothing in the call graph calls a remote model.
✓no lookup of evaluation audioThe /transcribe handler in serve.py decodes the request's FLAC audio and builds predictions only from the model's output
The /transcribe handler in serve.py decodes the request's FLAC audio and builds predictions only from the model's outputs. It does not hash the audio, store transcriptions or check IDs. Cross-request batching (up to 16) only groups audio for the GPU, which is allowed. The only data files shipped for inference are weights.pt and thresholds.json; there are no note tables keyed to evaluation clips.
✓training provenanceDATA_MANIFEST.md declares public sources for all training data, and the trajectory keeps the download commands. Lakh lmd
DATA_MANIFEST.md declares public sources for all training data, and the trajectory keeps the download commands. Lakh lmd_full came via wget from huggingface.co/datasets/AghaTizi/lakh_lmd_full, and the classical MIDI via snapshot_download('drengskapur/midi-classical-music'). Both were rendered with General MIDI soundfonts by training/render2.py. The shipped model was trained by training/train.py with --data train_data/clips2 --holdout train_data/holdout2 (rendered from those MIDI files). Checkpoint selection used the rendered holdout F1. Thresholds were calibrated on the 10 provided public validation examples, which the policy allows. Neither the session nor the code shows any access to the private/ folder or to prohibited splits. The mallet-enriched render3 and mix data fed only an abandoned fine-tune that was never shipped.
✓actual inference uses reviewed weightsIn trajectory#408-410, ckpt/best.pt (EMA, from the clips2 from-scratch run) was slimmed into weights.pt and packaged int
In trajectory#408-410, ckpt/best.pt (EMA, from the clips2 from-scratch run) was slimmed into weights.pt and packaged into /workspace/output. The ckpt_ft fine-tune on the mix data was killed and not shipped (trajectory#413-423). In trajectory#427 a 2-checkpoint ensemble was only evaluated in a scratch command; /workspace/output was not changed before frontier submit --confirm (trajectory#428). serve.py loads exactly this weights.pt (the EMA or model state dict) into AMTModelV2. The inventory's model.* key structure matches that architecture.
✓harness credentials used only by the harnessNo step in the session calls a model API with harness credentials or launches an agent harness CLI. Searches for API key
No step in the session calls a model API with harness credentials or launches an agent harness CLI. Searches for API key and base-URL usage found only spin help text. HF_TOKEN was used only for Hugging Face searches and dataset downloads, which is allowed. Spin compute, transfer and credentials commands are allowed, and the S3 signature fix in trajectory#409 used spin transfer credentials. frontier selfcheck and submit are the task's own instructed workflow tools (trajectory#357, #426, #428).
LLM adversarial review is not proof of arbitrary program behavior. Host storage and task-specific deterministic checks remain required.
frontier selfcheck runs the submission on the grading infrastructure against public examples and reports each gate, so the agent can catch problems before grading. Each run gets four. This agent used 2 of 4.
- 1passed7h 13m into the runtook 2m 8s
startup 4.1 s of 300 s; 1/1 gates passed; The timed pass repeated the 10 public examples under new IDs to make up the held-out split's 271 clips, so a server that caches by input measured faster here than it will on held-out clips.
6 gates
- ✓review prerequisites
- ✓submission size
- ✓startup · GET /health answered 200 after 4.1 s
- ✓real-time factor · 271 public clips (8130 s of audio, the held-out pass's size) sent 16 at a time in 20.4 s; grading allows 162.6 s.
- ✓POST /transcribe · {"id": "validation-0001", "notes": [{"onset": 0.0848, "offset": 0.1248, "pitch": 83, "instrument": "piano"}, {"onset": 0.0851, "offset": 0.1251, "pitch": 77, "instrument": "piano"}, {"onset": 0.2414, "offset": 0.2814, "pitch": 43, "instrument": "piano"}, {"onset": 0.3947, "offset": 0. ...[clipped]
- ✓healthy after requests
- 2passed9h 43m into the runtook 1m 15s
startup 3.8 s of 300 s; 1/1 gates passed; The timed pass repeated the 10 public examples under new IDs to make up the held-out split's 271 clips, so a server that caches by input measured faster here than it will on held-out clips.
6 gates
- ✓review prerequisites
- ✓submission size
- ✓startup · GET /health answered 200 after 3.8 s
- ✓real-time factor · 271 public clips (8130 s of audio, the held-out pass's size) sent 16 at a time in 19.5 s; grading allows 162.6 s.
- ✓POST /transcribe · {"id": "validation-0001", "notes": [{"onset": 0.0, "offset": 0.04, "pitch": 65, "instrument": "piano"}, {"onset": 0.0839, "offset": 0.1239, "pitch": 83, "instrument": "piano"}, {"onset": 0.0846, "offset": 0.1246, "pitch": 77, "instrument": "piano"}, {"onset": 0.2425, "offset": 0.2825, ...[clipped]
- ✓healthy after requests
The agent's last message before its session ended.
Ensemble doesn't help (0.4652 vs 0.4665). The current single-model package is final. Confirming submission.