Spaces:
Running
Running
Download index.html from Hugdrigo/modelops-research-lab: direct link, hf CLI and curl.
- Browser
- Download file 13.7 kB
-
https://huggingface.co/spaces/Hugdrigo/modelops-research-lab/resolve/main/index.html
- Command line
-
hf download hf://spaces/Hugdrigo/modelops-research-lab/index.html
-
curl -L -o index.html https://huggingface.co/spaces/Hugdrigo/modelops-research-lab/resolve/main/index.html
13.7 kB
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"/> | |
| <meta name="viewport" content="width=device-width,initial-scale=1"/> | |
| <meta name="theme-color" content="#081422"/> | |
| <meta name="description" content="Reproducible multilingual model evaluation, experiment tracking and responsible ML diagnostics."/> | |
| <title>ModelOps Research Lab | Hugdrigo</title> | |
| <link rel="stylesheet" href="styles.css" /> | |
| </head> | |
| <body> | |
| <a class="skip" href="#workspace">Skip to workspace</a> | |
| <header class="hero"> | |
| <div class="shell hero-layout"> | |
| <div> | |
| <div class="eyebrow"><span class="pulse"></span> RODRIGO PANTOJA <span class="slash">/</span> REPRODUCIBLE ML ENGINEERING</div> | |
| <div class="version">PORTFOLIO LAB 013 <span>RESEARCH SERIES</span></div> | |
| <h1><span class="mark">◈</span> ModelOps<br/><span class="gradient-text">Research Lab</span></h1> | |
| <p class="hero-copy">From an academic NLP dataset to reproducible machine-learning experiments. Train four transparent text classifiers in your browser, inspect domain shift and errors, and export every result.</p> | |
| <div class="chips"><span>EN · ES · PT</span><span>Browser-only training</span><span>Dataset & model lineage</span><span>No paid inference</span></div> | |
| </div> | |
| <aside class="hero-snapshot" aria-label="Experiment snapshot"> | |
| <div class="snapshot-title"><span class="pulse"></span> RESEARCH DATASET <strong>v2.0</strong></div> | |
| <div class="snapshot-grid"> | |
| <div><strong>1,026</strong><small>curated synthetic rows</small></div> | |
| <div><strong>4</strong><small>trained baselines</small></div> | |
| <div><strong>3</strong><small>languages</small></div> | |
| <div><strong>6</strong><small>rhetorical labels</small></div> | |
| </div> | |
| <div class="snapshot-footer">Train 842 · IID test 130 · Challenge 54</div> | |
| <div class="snapshot-caution">Synthetic data. These scores do not validate production or real-world academic use.</div> | |
| </aside> | |
| </div> | |
| </header> | |
| <main id="workspace" class="shell app-shell"> | |
| <div class="app-status"><div id="status" role="status" aria-live="polite"><span class="pulse"></span> Loading local research data and training models…</div><span id="lastRun" class="subtle">No saved experiment yet</span></div> | |
| <nav class="tabs" aria-label="Research modules"> | |
| <button class="tab active" data-tab="overview" aria-current="page">01 <span>Overview</span></button> | |
| <button class="tab" data-tab="experiments">02 <span>Experiments</span></button> | |
| <button class="tab" data-tab="slices">03 <span>Slice analysis</span></button> | |
| <button class="tab" data-tab="errors">04 <span>Error lab</span></button> | |
| <button class="tab" data-tab="shift">05 <span>Shift diagnostics</span></button> | |
| <button class="tab" data-tab="audit">06 <span>Data audit</span></button> | |
| <button class="tab" data-tab="exports">07 <span>Export & governance</span></button> | |
| </nav> | |
| <section class="view active" data-view="overview"> | |
| <div class="section-kicker">AT A GLANCE</div><div class="titlebar"><div><h2>Model evaluation dashboard</h2><p>All displayed scores are recomputed in your browser from the supplied labeled examples.</p></div><div class="title-controls"><label for="overviewSplit">Evaluation set</label><select id="overviewSplit"><option value="challenge">Novel-pattern challenge · 54</option><option value="iid">Controlled IID · 130</option></select></div></div> | |
| <div class="kpis" id="kpis"><div class="card loading">Training models…</div></div> | |
| <div class="two-col"> | |
| <div class="card"><div class="cardhead"><div><div class="overline">LEADERBOARD</div><h3>Baseline comparison</h3></div><select id="metricSelect" aria-label="Leaderboard metric"><option value="accuracy">Accuracy</option><option value="macroF1">Macro F1</option></select></div><div id="leaderboard"></div><p class="fine">Four independently scored predictions: word Naive Bayes, word TF-IDF centroid, character TF-IDF centroid, and a weighted word/character hybrid. Scores are diagnostic, not safety ratings.</p></div> | |
| <div class="card"><div class="cardhead"><div><div class="overline">EXPERIMENT INSIGHT</div><h3>Generalization gap</h3></div><span class="pill">IMPORTANT</span></div><div id="generalization"></div><p class="fine">A large IID-to-challenge gap indicates the limits of a controlled synthetic test set. The original Python model is archived separately, not presented as a head-to-head result.</p></div> | |
| </div> | |
| <div class="two-col"><div class="card"><div class="cardhead"><div><div class="overline">ERROR DISTRIBUTION</div><h3>Confusion matrix</h3></div><select id="confModel" aria-label="Confusion matrix method"></select></div><div id="confusion" class="h-scroll"></div></div><div class="card"><div class="overline">RESEARCH DESIGN</div><h3>Fixed evaluation partitions</h3><div id="partitionBars"></div><p class="fine">Partitions come from the original Academic Rhetorical Intent Mini v1.1 dataset, not a freshly randomized split. Train rows never enter evaluation.</p></div></div> | |
| </section> | |
| <section class="view" data-view="experiments"><div class="section-kicker">EXPERIMENT CONTROL</div><h2>Reproduce, compare, record</h2><p class="lede">Training is performed locally each time you run an experiment. The seed controls the bootstrap resampling, not the deterministic model fitting.</p> | |
| <div class="card"><div class="form-row"><label>Evaluation cohort<select id="runSplit"><option value="challenge">Novel-pattern challenge (54)</option><option value="iid">Controlled IID test (130)</option></select></label><label>Bootstrap random seed<input id="runSeed" type="number" min="1" max="999999999" value="2026"/></label><label>Bootstrap iterations<select id="runReps"><option value="200">200</option><option value="500">500</option></select></label><button class="primary" id="runButton">Run four baselines</button></div><p id="runNote" class="fine">Bootstrapped uncertainty describes sampling variation in this specific synthetic evaluation set. It is not a model training or deployment uncertainty estimate.</p></div> | |
| <div id="experimentOutput" class="card"><p class="muted">Run a benchmark to see the results and 95% sample bootstrap intervals.</p></div> | |
| <div class="card"><div class="cardhead"><div><div class="overline">LOCAL EXPERIMENT REGISTRY</div><h3>Run history</h3></div><button id="clearHistory" class="ghost">Clear saved history</button></div><p class="fine">Up to 15 summaries are saved in this browser only. No raw academic text is stored in local storage.</p><div id="historyList" class="h-scroll"></div></div> | |
| </section> | |
| <section class="view" data-view="slices"><div class="section-kicker">SUBGROUP EVALUATION</div><h2>Where each method succeeds or fails</h2><p class="lede">Inspect performance by language, research domain, and rhetorical label. Small slices are descriptive only, not fairness certifications. Macro F1 averages labels that actually occur in the selected group.</p><div class="card"><div class="form-row"><label>Method<select class="model-select" id="sliceModel"></select></label><label>Cohort<select id="sliceSplit"><option value="challenge">Novel-pattern challenge</option><option value="iid">Controlled IID test</option></select></label></div></div><div class="two-col"><div class="card"><h3>Performance by language</h3><div id="languageSlices" class="h-scroll"></div></div><div class="card"><h3>Performance by domain</h3><div id="domainSlices" class="h-scroll"></div></div></div><div class="card"><h3>Per-label metrics</h3><div id="labelSlices" class="h-scroll"></div></div></section> | |
| <section class="view" data-view="errors"><div class="section-kicker">FAILURE ANALYSIS</div><h2>Inspect individual mistakes</h2><p class="lede">Unlike a single score, the error explorer shows exactly what the method predicted and what the source label was.</p><div class="card"><div class="form-row"><label>Method<select class="model-select" id="errorModel"></select></label><label>Cohort<select id="errorSplit"><option value="challenge">Novel-pattern challenge</option><option value="iid">Controlled IID test</option></select></label><label>Search examples<input id="errorSearch" type="search" placeholder="Find text or label…"/></label></div><div id="errorsList"></div></div><div class="card"><div class="overline">ON-DEVICE INFERENCE</div><h3>Test your own sentence</h3><p class="fine">Paste one academic-style sentence. No text is uploaded to a server. The displayed model scores are heuristic ranking signals, not calibrated probabilities.</p><textarea id="sampleText" rows="3" placeholder="Example: This study seeks to evaluate how digital literacy affects student engagement."></textarea><div class="form-row"><label>Classifier<select class="model-select" id="sampleModel"></select></label><button class="primary" id="classifyButton">Classify sentence</button></div><div id="sampleOutput" aria-live="polite"></div></div></section> | |
| <section class="view" data-view="shift"><div class="section-kicker">DOMAIN SHIFT</div><h2>Beyond the easy test score</h2><p class="lede">Contrast controlled test outcomes against unseen patterns. This is a controlled synthetic shift analysis, not a real-world external evaluation.</p><div class="card"><h3>Accuracy across evaluation settings</h3><div id="shiftGrid" class="h-scroll"></div></div><div class="card"><div class="cardhead"><div><div class="overline">PREVIOUS MODEL EVIDENCE</div><h3>Archived Python classifier</h3></div><span class="pill">NOT COMPARABLE DIRECTLY</span></div><div class="kpis small-kpis"><div class="mini"><strong>100%</strong><small>Controlled IID (130)</small></div><div class="mini"><strong>79.6%</strong><small>Novel challenge (54)</small></div><div class="mini"><strong>35.7%</strong><small>PubMed development smoke (28)</small></div></div><p class="fine">These archived figures belong to a different Python TF-IDF classification pipeline and a distinct external biomedical sample. They come from the original project's evaluation results, not from this browser implementation. The 28-sentence sample is too small to establish general deployment performance.</p></div></section> | |
| <section class="view" data-view="audit"><div class="section-kicker">DATA QUALITY</div><h2>Train/test integrity & provenance</h2><p class="lede">The dataset was synthetically curated for this research portfolio. Audit checks make label coverage, partition sizes, and exact leakage signals visible.</p><div id="auditSummary" class="kpis"></div><div class="two-col"><div class="card"><h3>Dataset composition</h3><div id="datasetComposition" class="h-scroll"></div></div><div class="card"><h3>Leakage & integrity checks</h3><div id="leakageChecks"></div></div></div><div class="card"><h3>Limitations and appropriate use</h3><p>All examples in the original dataset are synthetic-curated. High accuracy can reflect repeated linguistic templates rather than general understanding. The challenge set is a harder fixed test; it is not a substitute for independent human-labeled real-world evaluation.</p><p>Do not use this system to grade students, evaluate academic integrity, screen admissions, determine employment outcomes, or certify scholarly quality.</p></div></section> | |
| <section class="view" data-view="exports"><div class="section-kicker">REPRODUCIBILITY & GOVERNANCE</div><h2>Take every result with you</h2><p class="lede">This project ships the entire evaluation dataset and executable JavaScript source. No hidden inference API, tokens, or remote server are required.</p><div class="card"><h3>Export a reproducible record</h3><div class="button-row"><button id="downloadPred" class="primary">Prediction CSV</button><button id="downloadMetrics" class="ghost">Metrics JSON</button><button id="downloadReport" class="ghost">Research report (.md)</button><button id="downloadRuns" class="ghost">Saved runs (.json)</button></div><p class="fine">Exports are generated locally, recording the evaluation split, method, seed, source version, and methodology notes.</p></div><div class="two-col"><div class="card"><h3>Release methodology</h3><ol class="methods"><li>Use original fixed train / IID / challenge partitions.</li><li>Fit each classifier to the same 842 training examples.</li><li>Generate one prediction per held-out example.</li><li>Evaluate Accuracy, Macro F1, confusion matrix and language/domain slices.</li><li>Bootstrap accuracy over the chosen held-out sample with a fixed seed.</li><li>Record data lineage and separate synthetic from real-world evidence.</li></ol></div><div class="card"><h3>Model governance</h3><p><strong>Data license:</strong> CC BY 4.0 (attributed to Academic Rhetorical Intent Mini). <strong>Code license:</strong> MIT.</p><p><strong>Privacy:</strong> training and inference run entirely in the browser. History summaries, if enabled, remain in local browser storage.</p><p><strong>Risk:</strong> These are interpretable baselines. The benchmark does not establish robustness outside controlled data or authorize consequential decisions about people.</p></div></div><div class="card"><h3>What is inside the published repository?</h3><div id="fileInventory" class="file-list"><span>Loading release inventory…</span></div></div></section> | |
| <footer class="foot"><div><strong>ModelOps Research Lab</strong> · Research software by Rodrigo Pantoja · 2026</div><div>MIT code · CC BY 4.0 source dataset · Static hosting · Synthetic research benchmark</div></footer> | |
| </main> | |
| <script src="engine.js" defer></script> | |
| <script src="app.js" defer></script> | |
| </body> | |
| </html> | |