[{"data":1,"prerenderedAt":546},["ShallowReactive",2],{"doc-\u002Fdocs\u002Frun-experiment":3},{"id":4,"title":5,"body":6,"description":539,"extension":540,"meta":541,"navigation":510,"path":542,"seo":543,"stem":544,"__hash__":545},"content\u002Fdocs\u002Frun-experiment.md","Train and evaluate Linnaeus",{"type":7,"value":8,"toc":536},"minimark",[9,13,32,80,87,103,106,109,112,118,143,146,293,300,303,331,334,339,350,494,518,525,532],[10,11,5],"h1",{"id":12},"train-and-evaluate-linnaeus",[14,15,16,17,21,22,27,28,31],"p",{},"Use Python 3.12 and a working PyTorch installation on a CUDA GPU\n(Linnaeus targets NVIDIA; the recorded run used an RTX 4090 24GB on OpenBayes — upstream recorded ROCm on an RX 7900 XTX).\nThe recorded upstream training environment is preserved in\n",[18,19,20],"code",{},"data\u002Fmanifests\u002Fenvironment-freeze.txt",". Follow the ",[23,24,26],"a",{"href":25},"inference","setup","\nfirst; the package sources and lock file select the ",[18,29,30],{},"+cu128"," wheels.",[33,34,39],"pre",{"className":35,"code":36,"language":37,"meta":38,"style":38},"language-bash shiki shiki-themes github-light github-dark","uv sync --extra train --extra telemetry\nuv run python scripts\u002Frun_experiment.py\n","bash","",[18,40,41,66],{"__ignoreMap":38},[42,43,46,50,54,58,61,63],"span",{"class":44,"line":45},"line",1,[42,47,49],{"class":48},"sScJk","uv",[42,51,53],{"class":52},"sZZnC"," sync",[42,55,57],{"class":56},"sj4cs"," --extra",[42,59,60],{"class":52}," train",[42,62,57],{"class":56},[42,64,65],{"class":52}," telemetry\n",[42,67,69,71,74,77],{"class":44,"line":68},2,[42,70,49],{"class":48},[42,72,73],{"class":52}," run",[42,75,76],{"class":52}," python",[42,78,79],{"class":52}," scripts\u002Frun_experiment.py\n",[14,81,82,83,86],{},"The Qwen3.5 adapter limits PyTorch's caching allocator to 80% of visible VRAM\nby default. On a headless server, raise it with ",[18,84,85],{},"LINNAEUS_VRAM_FRACTION=0.95",".",[14,88,89,90,93,94,97,98,102],{},"On hosts without direct Hugging Face or GitHub access (e.g. mainland China\nservers) set ",[18,91,92],{},"HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com"," and ",[18,95,96],{},"HF_HUB_DISABLE_XET=1",";\nsee ",[23,99,101],{"href":100},"openbayes","OpenBayes deployment"," for the full mirror matrix and\nfallback sources.",[14,104,105],{},"The script downloads the pinned base and public datasets when absent, converts\nthe complete mixture, isolates related examples and identical images across\nsplits, and freezes token eligibility. It trains seed 42 for 3,600 optimizer updates,\nresuming saved optimizer and sampling state after interruption.",[14,107,108],{},"Development accuracy selects the checkpoint within this run. LoRA is merged,\nthree temperatures are fitted on the calibration partition, and the complete\nheld-out partition is evaluated. Test scores never choose a model. The workflow\nexports the selected checkpoint directly after calibration and evaluation, then\ncompletes acceptance, quality diagnostics and benchmarks. Variation across seeds\nis unmeasured.",[14,110,111],{},"The script then runs checkpoint\u002FBub acceptance, quality diagnostics, local\nLaya\u002FLaya Vision references, JevBench's frozen public tasks, and the complete\nfrozen Laya chart protocol. API benchmarks measure latency and resource use.\nEvery failed stage stops execution.\nCompleted stages are recorded; rerunning the command resumes the same recipe.\nA different recipe or dataset requires a separate experiment directory. The\ncurrent method warms up for 72 updates, follows cosine decay through update\n2,400, and uses the 10% learning-rate floor through update 3,600. This is the\nschedule used by the selected Linnaeus 0.1.0 export.",[14,113,114,117],{},[18,115,116],{},"--steps"," changes an experiment's total budget. Extending a completed run retains\noptimizer and random state, sampling position, and the decay horizon. Development\nselection includes its existing best checkpoint, followed by calibration,\nevaluation, and acceptance. Checkpoint steps are experiment coordinates, not\nadditional product versions.",[14,119,120,121,93,124,127,128,130,131,134,135,138,139,142],{},"The RLCD controls are ",[18,122,123],{},"--sigma",[18,125,126],{},"--ce-weight",", defaulting to 0.3 and\n1.0; ",[18,129,116],{}," sets the total update budget. ",[18,132,133],{},"--data",", ",[18,136,137],{},"--model",", and ",[18,140,141],{},"--output"," identify local assets and output locations.",[14,144,145],{},"Linnaeus adds backbone and execution controls:",[147,148,149,165],"table",{},[150,151,152],"thead",{},[153,154,155,159,162],"tr",{},[156,157,158],"th",{},"Flag",[156,160,161],{},"Default",[156,163,164],{},"Effect",[166,167,168,202,217,230,243,255],"tbody",{},[153,169,170,180,189],{},[171,172,173,176,177],"td",{},[18,174,175],{},"--base-repo"," \u002F ",[18,178,179],{},"--base-revision",[171,181,182,185,186],{},[18,183,184],{},"Qwen\u002FQwen3.5-2B"," + pinned commit ",[18,187,188],{},"15852e8c",[171,190,191,192,194,195,198,199],{},"Backbone downloaded when ",[18,193,137],{}," lacks ",[18,196,197],{},"revision.txt","; recorded as ",[18,200,201],{},"base_model_id",[153,203,204,209,212],{},[171,205,206],{},[18,207,208],{},"--lora-rank",[171,210,211],{},"8",[171,213,214,215],{},"LoRA rank (alpha = 2×rank); changes trainable shapes — use a fresh ",[18,216,141],{},[153,218,219,224,227],{},[171,220,221],{},[18,222,223],{},"--workers",[171,225,226],{},"2",[171,228,229],{},"DataLoader workers for train and evaluation collation",[153,231,232,237,240],{},[171,233,234],{},[18,235,236],{},"--eval-batch-size",[171,238,239],{},"16",[171,241,242],{},"Questions per evaluation forward; larger is faster on idle VRAM",[153,244,245,250,252],{},[171,246,247],{},[18,248,249],{},"--cpu-threads",[171,251,211],{},[171,253,254],{},"Torch CPU threads",[153,256,257,262,265],{},[171,258,259],{},[18,260,261],{},"--skip",[171,263,264],{},"—",[171,266,267,268,134,271,134,274,134,277,134,280,134,283,134,286,289,290,292],{},"Comma-separated stage groups: ",[18,269,270],{},"acceptance",[18,272,273],{},"audit",[18,275,276],{},"references",[18,278,279],{},"benchmarks",[18,281,282],{},"jevbench",[18,284,285],{},"laya-chart",[18,287,288],{},"report",". Skipping upstream references saves hours on iteration runs; ",[18,291,288],{}," tolerates missing sections",[14,294,295,296,86],{},"Different backbone support uses the ",[23,297,299],{"href":298},"design","adapter interface",[14,301,302],{},"Base initialization and checkpoint initialization use the same 26-group mixture\nand training workflow. To initialize from an exported checkpoint:",[33,304,306],{"className":35,"code":305,"language":37,"meta":38,"style":38},"uv run python scripts\u002Frun_experiment.py --initialize-from runs\u002Fv1\u002Fcheckpoint --output runs\u002Fdomain\n",[18,307,308],{"__ignoreMap":38},[42,309,310,312,314,316,319,322,325,328],{"class":44,"line":45},[42,311,49],{"class":48},[42,313,73],{"class":52},[42,315,76],{"class":52},[42,317,318],{"class":52}," scripts\u002Frun_experiment.py",[42,320,321],{"class":56}," --initialize-from",[42,323,324],{"class":52}," runs\u002Fv1\u002Fcheckpoint",[42,326,327],{"class":56}," --output",[42,329,330],{"class":52}," runs\u002Fdomain\n",[14,332,333],{},"The checkpoint supplies the starting parameters and a fresh optimizer\u002Fschedule.\nThe runner automatically resumes a saved update in its output directory, restoring\noptimizer and sampling state. Both modes use the same fused kernels, differentiable\nprefix sharing, frozen-image cache, RLCD objective, development selection and\ncalibration. There is no separate incremental training program.",[335,336,338],"h2",{"id":337},"outputs","Outputs",[14,340,341,342,345,346,349],{},"The default data directory is ",[18,343,344],{},"data\u002Fprocessed\u002Fv1","; outputs go to ",[18,347,348],{},"runs\u002Fv1",":",[147,351,352,362],{},[150,353,354],{},[153,355,356,359],{},[156,357,358],{},"Artifact",[156,360,361],{},"Contents",[166,363,364,374,384,394,404,414,424,434,444,454,464,474,484],{},[153,365,366,371],{},[171,367,368],{},[18,369,370],{},"checkpoint\u002F",[171,372,373],{},"Selected LoRA\u002Fhead weights, base revision, temperatures, selection metadata, checksum",[153,375,376,381],{},[171,377,378],{},[18,379,380],{},"seed-42\u002Fresources.jsonl",[171,382,383],{},"Timestamped GPU memory, power, utilization, temperature and process RSS",[153,385,386,391],{},[171,387,388],{},[18,389,390],{},"seed-42\u002Fmetrics.jsonl",[171,392,393],{},"Loss, reward, development accuracy, learning rate, and GPU memory",[153,395,396,401],{},[171,397,398],{},[18,399,400],{},"seed-42\u002Ftest-predictions.jsonl",[171,402,403],{},"Stable example IDs, targets, raw logits",[153,405,406,411],{},[171,407,408],{},[18,409,410],{},"seed-42\u002Fevaluation.json",[171,412,413],{},"Raw\u002Fcalibrated per-task, decision-type and candidate-count metrics",[153,415,416,421],{},[171,417,418],{},[18,419,420],{},"acceptance\u002Freport.json",[171,422,423],{},"Actual checkpoint reload, decision interface, and Bub SDK acceptance",[153,425,426,431],{},[171,427,428],{},[18,429,430],{},"quality-audit\u002F",[171,432,433],{},"Candidate rotations, image ablations, and batch-size sensitivity",[153,435,436,441],{},[171,437,438],{},[18,439,440],{},"benchmarks\u002F",[171,442,443],{},"End-to-end timing samples and resource measurements",[153,445,446,451],{},[171,447,448],{},[18,449,450],{},"laya-chart\u002F",[171,452,453],{},"Frozen application\u002Flanguage suites, calibration diagnostics and parallel decision timing",[153,455,456,461],{},[171,457,458],{},[18,459,460],{},"jevbench\u002F",[171,462,463],{},"JevBench public-task predictions, raw evidence, and same-ID reference comparisons",[153,465,466,471],{},[171,467,468],{},[18,469,470],{},"metrics\u002F",[171,472,473],{},"CSV tables, comparison JSON, and a self-contained results report",[153,475,476,481],{},[171,477,478],{},[18,479,480],{},"figures\u002F",[171,482,483],{},"Separately rendered comparison figures, chart data, and source checksums",[153,485,486,491],{},[171,487,488],{},[18,489,490],{},"recipe.json",[171,492,493],{},"Fixed settings, exposed RLCD values, and source hashes",[33,495,499],{"className":496,"code":497,"language":498,"meta":38,"style":38},"language-python shiki shiki-themes github-light github-dark","from linnaeus.predictor import Predictor\n\nmodel = Predictor.from_checkpoint(\"runs\u002Fv1\u002Fcheckpoint\")\n","python",[18,500,501,506,512],{"__ignoreMap":38},[42,502,503],{"class":44,"line":45},[42,504,505],{},"from linnaeus.predictor import Predictor\n",[42,507,508],{"class":44,"line":68},[42,509,511],{"emptyLinePlaceholder":510},true,"\n",[42,513,515],{"class":44,"line":514},3,[42,516,517],{},"model = Predictor.from_checkpoint(\"runs\u002Fv1\u002Fcheckpoint\")\n",[14,519,520,521,86],{},"Render comparison figures from the saved results using the\n",[23,522,524],{"href":523},"local-benchmarks#model-card-figures","plotting instructions",[14,526,527,528,531],{},"The compact checkpoint requires its pinned base model, which defaults to\n",[18,529,530],{},".cache\u002Fmodels\u002FQwen3.5-2B",". Raw data, cached base weights, and generated results\nare local artifacts rather than package contents.",[533,534,535],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":38,"searchDepth":68,"depth":514,"links":537},[538],{"id":337,"depth":68,"text":338},"Use Python 3.12 and a working PyTorch installation on a CUDA GPU\n(Linnaeus targets NVIDIA; the recorded run used an RTX 4090 24GB on OpenBayes — upstream recorded ROCm on an RX 7900 XTX).\nThe recorded upstream training environment is preserved in\ndata\u002Fmanifests\u002Fenvironment-freeze.txt. Follow the setup\nfirst; the package sources and lock file select the +cu128 wheels.","md",{},"\u002Fdocs\u002Frun-experiment",{"title":5,"description":539},"docs\u002Frun-experiment","57bfoeswFEoEigbwtsXPrQFGDPd8a-YG4RNPzLLiHoM",1790560641967]