# train_pli_wholeword.yml — Phase P2: PLI with whole-word patching project_name: "deep-stylometry" data: ds_name: "halvest" batch_size: 32 tokenizer_name: "answerdotai/ModernBERT-base" max_length: 512 padding: "do_not_pad" truncation: "longest_first" add_special_tokens: true map_batch_size: 1000 load_from_cache_file: true subsets: ["base-2", "base-4", "base-6", "base-8", "base-10"] shuffle: true model: base_checkpoint: "answerdotai/ModernBERT-base" dropout: 0.1 expansion_ratio: 4 pooling_method: "pli" skip_list: true lm_hidden_size: 768 patch_method: "wholeword" patch_size: 1 patch_compression: "mean" patch_cross_attn_dim: 128 patch_cross_attn_heads: 2 patch_lambda: 0.1 gumbel_tau_init: 1.0 gumbel_tau_final: 0.1 gumbel_anneal_steps: 10000 train: loss: "info_nce" tau: 0.5 margin: 0.32 lr: 3.0e-5 weight_decay: 0.1 device: "gpu" num_devices: 4 strategy: "ddp" process_group_backend: "nccl" max_epochs: 1 val_check_interval: null check_val_every_n_epoch: null log_every_n_steps: 1 accumulate_grad_batches: 2 gradient_clip_val: null precision: "16-mixed" use_wandb: true log_model: false watch: "all"