{ "comment": "HYP-36: Champion enhancement test. Hyp-32 (soft_800k_20ep, bs=512) is the current best at AUROC@50=0.7901 (+0.005 vs Hyp-14, +0.011 vs TCRdist) but the marginal lift over Hyp-14 says the 'more epochs' axis is essentially saturated. The remaining cheap knob inside the InBatchTcrdistSoftCollator pipeline is BATCH SIZE: doubling bs from 512 to 1024 doubles each anchor's pool of in-batch candidates (and the soft-positive set scales with that pool). This sharpens the contrastive signal per gradient step in a way that more epochs cannot. Single-variable change from Hyp-32: batch_size 512 -> 1024. Step count halves (827k/1024 ~= 808 steps/epoch * 20 = ~16,200 steps, comparable to Hyp-14's compute budget) but each step sees 4x more pairwise relations. Distinct save name 'SCEPTR6L_AC_soft_800k_20ep_bs1024' so we can compare directly against Hyp-32 in the same benchmark sweep.", "training_delegate": { "class": "ClTrainingDelegate", "initargs": {} }, "model": { "name": "SCEPTR6L_AC_soft_800k_20ep_bs1024", "path_to_pretrained_state_dict": null, "token_embedder": { "class": "CdrSimpleEmbedder", "initargs": {} }, "self_attention_stack": { "class": "ScaledSceptrEncoderWithProjection", "initargs": { "embedding_dim": 29, "num_layers": 6, "embed_dim": 128, "num_heads": 8, "dropout": 0.1 } }, "mlm_token_prediction_projector": { "class": "AminoAcidTokenProjector", "initargs": { "d_model": 128 } }, "vector_representation_delegate": { "class": "ClsVectorRepresentationDelegate", "initargs": {} }, "trainable_model": { "class": "ClTrainableModel", "initargs": {} } }, "data": { "training_data": { "dataset": { "class": "TcrDataset", "initargs": {} }, "dataloader": { "class": "SingleDatasetDataLoader", "initargs": { "batch_size": 1024, "num_workers": 4 } }, "csv_paths": [ "tcr_data/preprocessed/tanno/train.csv" ] }, "validation_data": { "dataset": { "class": "TcrDataset", "initargs": {} }, "dataloader": { "class": "SingleDatasetDataLoader", "initargs": { "batch_size": 1024, "num_workers": 4 } }, "csv_paths": [ "tcr_data/preprocessed/tanno/test.csv" ] }, "tokeniser": { "class": "CdrTokeniser", "initargs": {} }, "batch_collator": { "class": "InBatchTcrdistSoftCollator", "initargs": { "frac_dropped_tokens": 0.2, "prob_drop_chain": 0.5, "training_csv_path": "tcr_data/preprocessed/tanno/train.csv", "tau_tcrdist": 50.0, "tcrdist_threshold": 200.0 } } }, "loss": { "cross_entropy_loss": { "class": "AdjustedCrossEntropyLoss", "initargs": { "label_smoothing": 0.1 } }, "contrastive_loss": { "class": "DotProductLoss", "initargs": { "temp": 0.05 } } }, "optimiser": { "initargs": { "n_warmup_steps": 2000, "d_model": 128 } }, "num_epochs": 20 }