diff --git a/artifacts/tech_report_v1/README.md b/artifacts/tech_report_v1/README.md new file mode 100644 index 00000000..412ac4dc --- /dev/null +++ b/artifacts/tech_report_v1/README.md @@ -0,0 +1,48 @@ +# Regenerating the tech report + +Run from the repository root: + +```bash +uv sync --locked --extra dev --extra analysis +uv run --locked python -m artifacts.tech_report_v1.regenerate \ + --submission-directory logs/self_tuning \ + --output-root scoring_results_tech_report +``` + +Supply the complete submission pool and a new, empty output directory. The +runner executes the leaderboard, Muon, and framework notebooks in order, +including the 0–20% target-relaxation sweep. Outputs include figures, tables, +CSVs, executed notebooks, and a `manifest.json` with input/source hashes and +completion status. Each section records its actual settings in +`out/run_metadata.json`. Failed runs must not be used as results. + +The default is non-strict self-tuning scoring over nine workloads. Pool and +workload changes affect scores. Configure filters and scoring settings in the +paired scripts; add submission labels in `report_utils.py`. The Muon, selected +sweep, and framework views require their configured submissions. Recheck the +framework view's batch-size assumptions when submission recipes change. + +The Muon figure loads `muon_torch_replicated_torch_hps` from the supplied log +directory as a matched vanilla comparison. It keeps the standard leaderboard's +non-Muon reference pool and records available study counts in its audit CSV. + +Sections share loading/scoring in `report_data.py`, table rendering in +`report_tables.py`, and labels, styles, paths, and PDF/PNG export in +`report_utils.py`. Notebook and command-line plots use the same renderers. + +For interactive use, select the repository's `.venv` kernel. Run Section 4 +before Muon; the framework notebook runs independently. After editing either +member of a notebook/script pair, synchronize it before running: + +```bash +uv run jupytext --sync artifacts/tech_report_v1/section_4_leaderboards/score_submissions.py +uv run jupytext --sync artifacts/tech_report_v1/section_6_algorithms/muon_workloads.py +uv run jupytext --sync artifacts/tech_report_v1/section_7_frameworks/framework_comparison.py +``` + +Source notebooks have no saved outputs. Review executed notebooks and artifacts +in the fresh output directory; synchronization alone does not refresh results. +Section-local `out/` artifacts can be checked in; refresh them from a completed +run before committing generated results. +Paper export is separate, and paper tables remain hand-maintained. Appendix +curves use their [own workflow](appendix_training_curves/curve_plotting/README.md). diff --git a/artifacts/tech_report_v1/regenerate.py b/artifacts/tech_report_v1/regenerate.py new file mode 100644 index 00000000..943d51f9 --- /dev/null +++ b/artifacts/tech_report_v1/regenerate.py @@ -0,0 +1,194 @@ +"""Execute the current report notebooks in dependency order from fresh logs.""" + +import argparse +import hashlib +import importlib.metadata +import json +import os +from pathlib import Path +import platform +import subprocess +import sys + +import jupytext +import nbformat +from jupyter_client import KernelManager +from nbclient import NotebookClient + +from artifacts.tech_report_v1.report_utils import REPO_ROOT, REPORT_ROOT + +NOTEBOOKS = ( + ('section_4_leaderboards', 'score_submissions'), + ('section_6_algorithms', 'muon_workloads'), + ('section_7_frameworks', 'framework_comparison'), +) + + +def fingerprints(paths, root): + """Hash contents, including uncommitted changes and newly supplied logs.""" + return { + str(path.relative_to(root)): hashlib.sha256(path.read_bytes()).hexdigest() + for path in sorted(paths) + } + + +def read_paired_notebook(script): + """Fail on unsynchronized sources instead of trusting file timestamps.""" + notebook = jupytext.read(script) + paired = jupytext.read(script.with_suffix('.ipynb')) + + def cells(nb): + return [(c.cell_type, c.source) for c in nb.cells] + + if cells(notebook) != cells(paired): + raise ValueError( + f'Notebook pair differs: {script}. Reconcile edits, then synchronize ' + 'with jupytext before regenerating.' + ) + return notebook + + +def execute_notebook(notebook, destination, env, timeout): + # Capture actual settings from the executed namespace, not duplicated defaults. + notebook.cells.append( + nbformat.v4.new_code_cell(r""" +import dataclasses, json +from pathlib import Path +_keys = ( + 'SUBMISSION_DIRECTORY', 'INCLUDE_SUBMISSIONS', 'EXCLUDE_SUBMISSIONS', + 'STRICT', 'SELF_TUNING_RULESET', 'MIN_TAU', 'MAX_TAU', 'NUM_POINTS', + 'SCALE', 'TARGET_RELAXATION_FRACTION', 'SELECTED_SUBMISSIONS', + 'LOAD_RESULTS_FROM', 'SAVE_RESULTS_TO', +) +_metadata = {key: globals()[key] for key in _keys if key in globals()} +if _metadata.get('LOAD_RESULTS_FROM'): + raise ValueError('Regeneration requires fresh logs; disable LOAD_RESULTS_FROM.') +if 'WORKLOAD_CONFIG' in globals(): + _metadata['workload_config'] = dataclasses.asdict(WORKLOAD_CONFIG) +if 'results' in globals(): + _metadata['submission_pool'] = sorted(results) +if 'SWEEP_PERCENTAGES' in globals(): + _metadata['sweep_percentages'] = list(SWEEP_PERCENTAGES) +Path(OUTPUT_DIR, 'run_metadata.json').write_text( + json.dumps(_metadata, indent=2) + '\n' +) +""") + ) + manager = KernelManager(kernel_name='python3') + # Use the invoking uv environment even if another python3 kernel is installed. + manager.kernel_spec.argv[0] = sys.executable + client = NotebookClient(notebook, km=manager, timeout=timeout) + try: + client.execute(cwd=str(REPO_ROOT), env=env) + finally: + notebook.cells.pop() + destination.parent.mkdir(parents=True, exist_ok=True) + nbformat.write(notebook, destination) + + +def regenerate(submission_directory, output_root, *, timeout=1800): + submission_directory = submission_directory.resolve() + output_root = output_root.resolve() + if not submission_directory.is_dir(): + raise ValueError(f'Input directory does not exist: {submission_directory}') + if output_root.exists() and any(output_root.iterdir()): + raise ValueError( + f'Output directory must be empty: {output_root}. ' + 'Choose a new directory to avoid mixing results from different inputs.' + ) + notebooks = [ + (section, name, read_paired_notebook(REPORT_ROOT / section / f'{name}.py')) + for section, name in NOTEBOOKS + ] + + def inputs(): + return fingerprints( + submission_directory.rglob('eval_measurements.csv'), submission_directory + ) + + def sources(): + return fingerprints( + [ + *REPORT_ROOT.rglob('*.py'), + *REPO_ROOT.joinpath('scoring').glob('*.py'), + *REPO_ROOT.joinpath('scoring').glob('workload_targets*.json'), + REPO_ROOT / 'pyproject.toml', + REPO_ROOT / 'uv.lock', + ], + REPO_ROOT, + ) + + manifest = { + 'status': 'running', + 'git_revision': subprocess.check_output( + ['git', 'rev-parse', 'HEAD'], cwd=REPO_ROOT, text=True + ).strip(), + 'python': platform.python_version(), + 'packages': { + name: importlib.metadata.version(name) + for name in ('numpy', 'pandas', 'matplotlib', 'jupytext', 'nbclient') + }, + 'submission_directory': str(submission_directory), + 'input_sha256': inputs(), + 'source_sha256': sources(), + } + if not manifest['input_sha256']: + raise ValueError( + 'No eval_measurements.csv files found in the input directory.' + ) + output_root.mkdir(parents=True, exist_ok=True) + manifest_path = output_root / 'manifest.json' + + def save_manifest(): + manifest_path.write_text(json.dumps(manifest, indent=2) + '\n') + + save_manifest() + env = { + **os.environ, + 'ALGOPERF_REPORT_INPUT': str(submission_directory), + 'ALGOPERF_REPORT_OUTPUT': str(output_root), + 'MPLBACKEND': 'module://matplotlib_inline.backend_inline', + } + try: + for section, name, notebook in notebooks: + print(f'Executing {section}/{name} ...', flush=True) + execute_notebook( + notebook, output_root / section / f'{name}.ipynb', env, timeout + ) + if ( + inputs() != manifest['input_sha256'] + or sources() != manifest['source_sha256'] + ): + raise RuntimeError('Inputs or source changed during regeneration; rerun.') + manifest['outputs_sha256'] = fingerprints( + (p for p in output_root.rglob('*') if p.is_file() and p != manifest_path), + output_root, + ) + manifest['status'] = 'complete' + except Exception as error: + manifest.update(status='failed', error=str(error)) + raise + finally: + save_manifest() + print(f'Completed. Results and executed notebooks: {output_root}', flush=True) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--submission-directory', type=Path, default=REPO_ROOT / 'logs/self_tuning' + ) + parser.add_argument( + '--output-root', + type=Path, + default=REPO_ROOT / 'scoring_results_tech_report', + ) + parser.add_argument( + '--timeout', type=int, default=1800, help='Seconds per cell.' + ) + args = parser.parse_args() + regenerate(args.submission_directory, args.output_root, timeout=args.timeout) + + +if __name__ == '__main__': + main() diff --git a/artifacts/tech_report_v1/report_data.py b/artifacts/tech_report_v1/report_data.py new file mode 100644 index 00000000..64925087 --- /dev/null +++ b/artifacts/tech_report_v1/report_data.py @@ -0,0 +1,121 @@ +"""Shared log loading, summaries, and canonical scoring for report sections.""" + +from pathlib import Path +import pickle + +import pandas as pd + +from artifacts.tech_report_v1.report_utils import DISPLAY_TO_RAW, pretty + + +DEFAULT_MIN_TAU = 1.0 +DEFAULT_MAX_TAU = 4.0 +DEFAULT_PROFILE_POINTS = 100 + + +def load_runs( + directory, *, include=(), exclude=(), cache=None, save_cache=None +): + """Load a named comparison pool from logs or an explicitly supplied cache.""" + from scoring import scoring_utils + + def names(value): + return ( + {s.strip() for s in value.split(',') if s.strip()} + if isinstance(value, str) + else set(value) + ) + + include, exclude = names(include), names(exclude) + directory = Path(directory) + if cache: + with Path(cache).open('rb') as handle: + available = { + DISPLAY_TO_RAW.get(name, name): frame + for name, frame in pickle.load(handle).items() + } + else: + available = {p.name: None for p in directory.iterdir() if p.is_dir()} + missing = include - available.keys() + if missing: + raise ValueError(f'Requested submissions are missing: {sorted(missing)}') + selected = sorted((include or available.keys()) - exclude) + if not selected: + raise ValueError('No submissions selected for scoring.') + runs = {} + for raw in selected: + name = pretty(raw) + if name in runs: + raise ValueError(f'Duplicate submission display name: {name}') + print(f'Loading {name} ({raw})', flush=True) + frame = ( + available[raw] + if cache + else scoring_utils.get_experiment_df(str(directory / raw)) + ) + if frame.empty: + raise ValueError(f'No evaluation measurements found for {raw}.') + runs[name] = frame + if save_cache: + path = Path(save_cache) + path.parent.mkdir(parents=True, exist_ok=True) + with path.open('wb') as handle: + pickle.dump(runs, handle) + return runs + + +def write_summaries(runs, config, directory): + """Refresh study summaries even when the parsed runs came from a cache.""" + from scoring.score_submissions import get_submission_summary + + directory = Path(directory) + directory.mkdir(parents=True, exist_ok=True) + summaries = {} + for name, frame in runs.items(): + summary = get_submission_summary(frame, config) + raw = DISPLAY_TO_RAW.get(name, name) + summary.to_csv(directory / f'{raw}_summary.csv') + summaries[name] = summary + return summaries + + +def score_runs( + runs, + config, + output_dir, + *, + time_col='score', + artifact_suffix='', + min_tau=DEFAULT_MIN_TAU, + max_tau=DEFAULT_MAX_TAU, + num_points=DEFAULT_PROFILE_POINTS, + scale='linear', + strict=False, + self_tuning_ruleset=True, +): + """Return profiles, normalized scores, and target times for the same pool.""" + from scoring import performance_profile + + output_dir = Path(output_dir) + output_dir.mkdir(parents=True, exist_ok=True) + profiles = performance_profile.compute_performance_profiles( + runs, + config, + time_col=time_col, + min_tau=min_tau, + max_tau=max_tau, + num_points=num_points, + scale=scale, + strict=strict, + self_tuning_ruleset=self_tuning_ruleset, + verbosity=0, + output_dir=str(output_dir), + artifact_suffix=artifact_suffix, + ) + scores = performance_profile.compute_leaderboard_score( + profiles, normalize=True + ) + times = pd.read_csv( + output_dir / f'time_to_targets{artifact_suffix}.csv', index_col=0 + ) + return profiles, scores, times.loc[scores.index] diff --git a/artifacts/tech_report_v1/report_tables.py b/artifacts/tech_report_v1/report_tables.py new file mode 100644 index 00000000..1dc8fe8d --- /dev/null +++ b/artifacts/tech_report_v1/report_tables.py @@ -0,0 +1,88 @@ +"""Shared LaTeX table rendering for standard, step, and relaxed results.""" + +from artifacts.tech_report_v1.report_utils import latex_name + +WORKLOAD_LATEX = { + 'criteo1tb': r'\criteo', + 'fastmri': r'\fastmri', + 'finewebedu_lm': r'\finewebedu', + 'imagenet_resnet': r'\resnet', + 'imagenet_vit': r'\vit', + 'librispeech_conformer': r'\conformer', + 'librispeech_deepspeech': r'\deepspeech', + 'ogbg': r'\ogbg', + 'wmt': r'\wmt', +} + + +def scores_to_latex( + scores_df, caption='AlgoPerf Self-Tuning Leaderboard', label='tab:scores' +): + """ + Render a leaderboard scores DataFrame as a LaTeX table. + Submission names come from the DataFrame index (pretty-named), rendered + via their `latex_name()` \\newcommand macro. + Scores are formatted to 4 decimal places; best score is bolded. + """ + df = scores_df.sort_values('score', ascending=False).copy() + df['rank'] = range(1, len(df) + 1) + + best_score = df['score'].iloc[0] + + rows = [] + for rank, (name, row) in enumerate(df.iterrows(), start=1): + score_str = f'{row["score"]:.4f}' + if row['score'] == best_score: + score_str = r'\textbf{' + score_str + '}' + rows.append(f' {rank} & {latex_name(name)} & {score_str} \\\\') + + body = '\n'.join(rows) + + latex = ( + r'\begin{table}[h]' + '\n' + r' \centering' + '\n' + r' \caption{' + caption + '}\n' + r' \label{' + label + '}\n' + r' \begin{tabular}{rlr}' + '\n' + r' \toprule' + '\n' + r' Rank & Submission & Score \\' + '\n' + r' \midrule' + '\n' + body + '\n' + r' \bottomrule' + '\n' + r' \end{tabular}' + '\n' + r'\end{table}' + ) + return latex + + +def workload_table(frame, *, caption, label, bold=None): + """Render formatted workload values; align optional emphasis by row/column name.""" + headers = ' & '.join(WORKLOAD_LATEX.get(w, w) for w in frame.columns) + rows = [] + for name, row in frame.iterrows(): + cells = [] + for workload, value in row.items(): + cell = str(value).replace('%', r'\%') + if bold is not None and bold.loc[name, workload]: + cell = r'\textbf{' + cell + '}' + cells.append(cell) + rows.append( + ' ' + latex_name(name) + ' & ' + ' & '.join(cells) + r' \\' + ) + return '\n'.join( + [ + r'\begin{table}[htbp]', + r' \centering', + r' \caption{' + caption + '}', + r' \label{' + label + '}', + r' \resizebox{\textwidth}{!}{%', + r' \begin{tabular}{' + 'l' + 'r' * len(frame.columns) + '}', + r' \toprule', + r' Submission & ' + headers + r' \\', + r' \midrule', + *rows, + r' \bottomrule', + r' \end{tabular}%', + r' }', + r'\end{table}', + ] + ) diff --git a/artifacts/tech_report_v1/report_utils.py b/artifacts/tech_report_v1/report_utils.py new file mode 100644 index 00000000..7b263c01 --- /dev/null +++ b/artifacts/tech_report_v1/report_utils.py @@ -0,0 +1,189 @@ +"""Shared presentation metadata and artifact helpers for report notebooks. + +Importing this module does not change the Matplotlib backend or global style. +""" + +import os +from pathlib import Path + +import matplotlib as mpl + +REPO_ROOT = Path(__file__).resolve().parents[2] +REPORT_ROOT = Path(__file__).resolve().parent +COLORS = [ + '#4477AA', + '#EE6677', + '#228833', + '#CCBB44', + '#66CCEE', + '#AA3377', + '#BBBBBB', + '#EE7733', + '#009988', + '#CC3311', +] +LINE_STYLES = ['-', '--', '-.', ':'] + +SERIF_STYLE = { + 'font.family': 'serif', + 'font.serif': ['DejaVu Serif'], + 'font.size': 11, + 'axes.spines.top': False, + 'axes.spines.right': False, + 'pdf.fonttype': 42, +} + +NOTEBOOK_STYLE = { + 'figure.figsize': (9, 4.5), + 'figure.dpi': 150, + 'savefig.dpi': 300, + 'savefig.bbox': 'tight', + 'savefig.pad_inches': 0.05, + 'font.family': 'serif', + 'font.serif': ['Times New Roman', 'DejaVu Serif'], + 'font.size': 11, + 'axes.titlesize': 11, + 'axes.labelsize': 11, + 'xtick.labelsize': 10, + 'ytick.labelsize': 10, + 'legend.fontsize': 8.5, + 'legend.title_fontsize': 9, + 'legend.framealpha': 0.92, + 'legend.edgecolor': '#cccccc', + 'legend.borderpad': 0.5, + 'legend.labelspacing': 0.35, + 'axes.grid': True, + 'grid.alpha': 0.3, + 'grid.linestyle': '--', + 'grid.linewidth': 0.6, + 'axes.spines.top': False, + 'axes.spines.right': False, + 'axes.linewidth': 0.8, + 'lines.linewidth': 1.6, +} + +SUBMISSION_NAME_MAP = { + 'ademamix': 'AdEMAMix (PyTorch)', + 'cautious_nadamw': 'Cautious NAdamW (JAX)', + 'lion': 'Lion (PyTorch)', + 'muon': 'Muon (JAX)', + 'muon_torch': 'Muon (PyTorch)', + 'muon_torch_jax_hps': 'Muon (PyTorch, JAX HPs)', + 'muon_torch_jax_hps_achandr': 'Muon (PyTorch, JAX HPs, achandr)', + 'muon_torch_jax_hps_lr_fix': 'Muon (PyTorch, JAX HPs, LR Fix)', + 'muon_torch_replicated_jax_hps': 'Muon (Replicated, JAX HPs)', + 'muon_torch_replicated_torch_hps': 'Muon (Replicated, Torch HPs)', + 'nadamw': 'NAdamW (JAX)', + 'nadamw_baselinev05': 'NAdamW (Baseline AlgoPerf v0.5) (JAX)', + 'nadamw_resnet': 'NAdamW (Tuned for ResNet) (JAX)', + 'schedule_free_adamw': 'Schedule-Free AdamW (PyTorch)', + 'schedule_free_adamw_jax': 'Schedule-Free AdamW (JAX)', + 'schedule_free_adamw_jax_v2': 'Schedule-Free AdamW v2 (JAX)', + 'schedule_free_adamw_v2': 'Schedule-Free AdamW v2 (PyTorch)', + 'single_worker_diloco': 'Single Worker DiLoCo (JAX)', + 'single_worker_dilocov2': 'Single Worker DiLoCo v2 (JAX)', +} + +SUBMISSION_LATEX_MACRO = { + 'ademamix': r'\ademamix', + 'cautious_nadamw': r'\cautiousnadamw', + 'lion': r'\lion', + 'muon': r'\muonjax', + 'muon_torch': r'\muonpt', + 'nadamw': r'\nadamw', + 'nadamw_baselinev05': r'\nadamwbase', + 'nadamw_resnet': r'\nadamwresnet', + 'schedule_free_adamw': r'\sfadamw', + 'schedule_free_adamw_jax': r'\sfadamwjax', + 'schedule_free_adamw_jax_v2': r'\sfadamwjaxii', + 'schedule_free_adamw_v2': r'\sfadamwii', + 'single_worker_diloco': r'\dilocosw', + 'single_worker_dilocov2': r'\dilocoswii', +} + +DISPLAY_TO_RAW = {display: raw for raw, display in SUBMISSION_NAME_MAP.items()} + + +def marker_for(name): + """Use one symbol per algorithm family, as in the step/time scatter.""" + if 'Schedule-Free' in name: + return 'o' + if 'Muon' in name: + return 'D' + if 'DiLoCo' in name: + return 'v' + if 'AdEMAMix' in name: + return 's' + if 'Lion' in name: + return '*' + if 'Cautious' in name: + return 'P' + return '^' + + +def submission_styles(names): + """Shared line/color/symbol map for paired profiles and sensitivity plots.""" + return { + name: dict( + color=COLORS[i % len(COLORS)], + linestyle=LINE_STYLES[(i // len(COLORS)) % len(LINE_STYLES)], + marker=marker_for(name), + ) + for i, name in enumerate(sorted(names)) + } + + +def set_plot_style(overrides): + """Set global defaults for the next report figure and its PDF/PNG exports.""" + mpl.rcdefaults() + mpl.rcParams.update({'savefig.dpi': 220, **overrides}) + + +def save_figure(fig, output): + """Save PDF and PNG using the renderer's style; leave the figure open.""" + output = Path(output) + output.parent.mkdir(parents=True, exist_ok=True) + paths = [output.with_suffix(f'.{extension}') for extension in ('pdf', 'png')] + for path in paths: + fig.savefig(path, facecolor='white') + return paths + + +def pretty(name): + return SUBMISSION_NAME_MAP.get(name, name) + + +def latex_name(name): + return SUBMISSION_LATEX_MACRO.get(DISPLAY_TO_RAW.get(name, name), name) + + +def submission_directory(): + return ( + REPO_ROOT / os.environ.get('ALGOPERF_REPORT_INPUT', 'logs/self_tuning') + ).resolve() + + +def section_output_dir(section): + root = REPO_ROOT / os.environ.get('ALGOPERF_REPORT_OUTPUT', str(REPORT_ROOT)) + return root / section / 'out' + + +EXCLUDED_SUBMISSIONS = ( + 'muon_torch_jax_hps', + 'muon_torch_jax_hps_achandr', + 'muon_torch_jax_hps_lr_fix', + 'muon_torch_replicated_jax_hps', + 'muon_torch_replicated_torch_hps', +) +SELECTED_SWEEP_SUBMISSIONS = tuple( + map( + pretty, + ( + 'schedule_free_adamw_v2', + 'muon_torch', + 'ademamix', + 'nadamw_baselinev05', + 'single_worker_dilocov2', + ), + ) +) diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/newly_reached_targets_relaxed.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/newly_reached_targets_relaxed.csv index ee35afa6..54fd2162 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/newly_reached_targets_relaxed.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/newly_reached_targets_relaxed.csv @@ -9,7 +9,7 @@ NAdamW (Baseline AlgoPerf v0.5) (JAX),False,False,False,True,True,False,False,Fa NAdamW (Tuned for ResNet) (JAX),True,False,False,True,True,False,False,False,True Schedule-Free AdamW (PyTorch),False,False,False,False,False,True,False,False,False Schedule-Free AdamW (JAX),True,False,False,False,False,False,False,False,False -Schedule-Free AdamW v2 (JAX),False,False,False,False,False,False,False,False,True +Schedule-Free AdamW v2 (JAX),False,False,False,True,False,False,False,False,True Schedule-Free AdamW v2 (PyTorch),False,False,True,False,False,False,False,False,False Single Worker DiLoCo (JAX),True,False,False,True,True,False,False,True,True Single Worker DiLoCo v2 (JAX),True,False,False,True,False,False,False,True,True diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/performance_profile_score_relaxed.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/performance_profile_score_relaxed.csv index a8797501..28068fc5 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/performance_profile_score_relaxed.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/performance_profile_score_relaxed.csv @@ -1,15 +1,15 @@ submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 -Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 -Muon (JAX),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 -NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 -NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 -NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666 Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 Schedule-Free AdamW (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 -Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 -Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 -Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_00pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_00pct.csv new file mode 100644 index 00000000..259998dc --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_00pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Cautious NAdamW (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Lion (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444 +Muon (JAX),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 +Muon (PyTorch),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +NAdamW (JAX),0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Tuned for ResNet) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_01pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_01pct.csv new file mode 100644 index 00000000..80350346 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_01pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Lion (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 +Muon (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Tuned for ResNet) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_02pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_02pct.csv new file mode 100644 index 00000000..e2ba4f98 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_02pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Lion (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Muon (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Tuned for ResNet) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Schedule-Free AdamW (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (JAX),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_03pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_03pct.csv new file mode 100644 index 00000000..1aef9ee4 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_03pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Cautious NAdamW (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Lion (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Tuned for ResNet) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444 +Schedule-Free AdamW (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_04pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_04pct.csv new file mode 100644 index 00000000..69980d7f --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_04pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_05pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_05pct.csv new file mode 100644 index 00000000..d3615d0b --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_05pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_06pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_06pct.csv new file mode 100644 index 00000000..c850bb3a --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_06pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_07pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_07pct.csv new file mode 100644 index 00000000..1151dfee --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_07pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_08pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_08pct.csv new file mode 100644 index 00000000..ea5a9dcd --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_08pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Lion (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_09pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_09pct.csv new file mode 100644 index 00000000..6ece6ca4 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_09pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (PyTorch),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_10pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_10pct.csv new file mode 100644 index 00000000..28068fc5 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_10pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_11pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_11pct.csv new file mode 100644 index 00000000..0b970ad2 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_11pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Schedule-Free AdamW (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_12pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_12pct.csv new file mode 100644 index 00000000..3081b397 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_12pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW v2 (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_13pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_13pct.csv new file mode 100644 index 00000000..ee71b080 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_13pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_14pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_14pct.csv new file mode 100644 index 00000000..fa27bfe3 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_14pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_15pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_15pct.csv new file mode 100644 index 00000000..55e10f64 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_15pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_16pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_16pct.csv new file mode 100644 index 00000000..770b240b --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_16pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_17pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_17pct.csv new file mode 100644 index 00000000..380006b8 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_17pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (PyTorch),0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (JAX),0.1111111111111111,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.2222222222222222,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_18pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_18pct.csv new file mode 100644 index 00000000..723983b5 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_18pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (JAX),0.2222222222222222,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Single Worker DiLoCo (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_19pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_19pct.csv new file mode 100644 index 00000000..26a27d91 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_19pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.3333333333333333,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.6666666666666666 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_20pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_20pct.csv new file mode 100644 index 00000000..156fe13c --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/performance_profiles_20pct.csv @@ -0,0 +1,15 @@ +submission,1.0,1.0303030303030303,1.0606060606060606,1.0909090909090908,1.121212121212121,1.1515151515151516,1.1818181818181819,1.2121212121212122,1.2424242424242424,1.2727272727272727,1.303030303030303,1.3333333333333335,1.3636363636363638,1.393939393939394,1.4242424242424243,1.4545454545454546,1.4848484848484849,1.5151515151515151,1.5454545454545454,1.5757575757575757,1.606060606060606,1.6363636363636362,1.6666666666666667,1.696969696969697,1.7272727272727273,1.7575757575757576,1.7878787878787878,1.8181818181818183,1.8484848484848486,1.878787878787879,1.9090909090909092,1.9393939393939394,1.9696969696969697,2.0,2.0303030303030303,2.0606060606060606,2.090909090909091,2.121212121212121,2.1515151515151514,2.1818181818181817,2.212121212121212,2.242424242424242,2.2727272727272725,2.3030303030303028,2.3333333333333335,2.3636363636363638,2.393939393939394,2.4242424242424243,2.4545454545454546,2.484848484848485,2.515151515151515,2.5454545454545454,2.5757575757575757,2.6060606060606064,2.6363636363636367,2.666666666666667,2.6969696969696972,2.7272727272727275,2.757575757575758,2.787878787878788,2.8181818181818183,2.8484848484848486,2.878787878787879,2.909090909090909,2.9393939393939394,2.9696969696969697,3.0,3.0303030303030303,3.0606060606060606,3.090909090909091,3.121212121212121,3.1515151515151514,3.1818181818181817,3.2121212121212124,3.2424242424242427,3.272727272727273,3.303030303030303,3.3333333333333335,3.3636363636363638,3.393939393939394,3.4242424242424243,3.4545454545454546,3.484848484848485,3.515151515151515,3.5454545454545454,3.5757575757575757,3.606060606060606,3.6363636363636362,3.666666666666667,3.6969696969696972,3.7272727272727275,3.757575757575758,3.787878787878788,3.8181818181818183,3.8484848484848486,3.878787878787879,3.909090909090909,3.9393939393939394,3.9696969696969697,4.0 +AdEMAMix (PyTorch),0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Cautious NAdamW (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Lion (PyTorch),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556 +Muon (JAX),0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Muon (PyTorch),0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (JAX),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +NAdamW (Tuned for ResNet) (JAX),0.0,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666 +Schedule-Free AdamW (PyTorch),0.0,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW (JAX),0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (JAX),0.1111111111111111,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778 +Schedule-Free AdamW v2 (PyTorch),0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.7777777777777778,0.8888888888888888,0.8888888888888888,0.8888888888888888,0.8888888888888888,0.8888888888888888,1.0 +Single Worker DiLoCo (JAX),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.5555555555555556,0.6666666666666666 +Single Worker DiLoCo v2 (JAX),0.0,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.1111111111111111,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.2222222222222222,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.4444444444444444,0.5555555555555556,0.6666666666666666 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/scores_and_coverage.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/scores_and_coverage.csv new file mode 100644 index 00000000..94b5a70c --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/scores_and_coverage.csv @@ -0,0 +1,295 @@ +relaxation_percent,submission,score,rank,workloads_reached,workload_count +0,AdEMAMix (PyTorch),0.5190796857463527,2,6,9 +0,Cautious NAdamW (JAX),0.31425364758698043,9,4,9 +0,Lion (PyTorch),0.27833894500561146,11,4,9 +0,Muon (JAX),0.2845117845117842,10,3,9 +0,Muon (PyTorch),0.4231200897867556,6,4,9 +0,NAdamW (JAX),0.384399551066217,8,4,9 +0,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4506172839506181,4,5,9 +0,NAdamW (Tuned for ResNet) (JAX),0.18574635241301896,12,3,9 +0,Schedule-Free AdamW (PyTorch),0.466891133557801,3,5,9 +0,Schedule-Free AdamW (JAX),0.4107744107744111,7,5,9 +0,Schedule-Free AdamW v2 (JAX),0.4405162738496074,5,5,9 +0,Schedule-Free AdamW v2 (PyTorch),0.5679012345679016,1,6,9 +0,Single Worker DiLoCo (JAX),0.1369248035914701,13,2,9 +0,Single Worker DiLoCo v2 (JAX),0.1301907968574634,14,2,9 +1,AdEMAMix (PyTorch),0.5875420875420879,1,7,9 +1,Cautious NAdamW (JAX),0.300785634118967,10,4,9 +1,Lion (PyTorch),0.32603815937149255,9,5,9 +1,Muon (JAX),0.2845117845117842,12,4,9 +1,Muon (PyTorch),0.4837261503928179,5,5,9 +1,NAdamW (JAX),0.3726150392817052,8,4,9 +1,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4304152637485978,7,5,9 +1,NAdamW (Tuned for ResNet) (JAX),0.28675645342312056,11,5,9 +1,Schedule-Free AdamW (PyTorch),0.48092031425364845,6,5,9 +1,Schedule-Free AdamW (JAX),0.5168350168350166,4,6,9 +1,Schedule-Free AdamW v2 (JAX),0.5538720538720535,3,6,9 +1,Schedule-Free AdamW v2 (PyTorch),0.5718294051627385,2,6,9 +1,Single Worker DiLoCo (JAX),0.2059483726150393,13,3,9 +1,Single Worker DiLoCo v2 (JAX),0.12289562289562284,14,3,9 +2,AdEMAMix (PyTorch),0.4831649831649832,3,7,9 +2,Cautious NAdamW (JAX),0.30920314253647624,9,5,9 +2,Lion (PyTorch),0.24579124579124553,12,5,9 +2,Muon (JAX),0.3664421997755325,7,5,9 +2,Muon (PyTorch),0.4304152637485974,6,5,9 +2,NAdamW (JAX),0.30639730639730595,10,4,9 +2,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.3653198653198659,8,5,9 +2,NAdamW (Tuned for ResNet) (JAX),0.19416386083052742,13,5,9 +2,Schedule-Free AdamW (PyTorch),0.4517396184062859,4,5,9 +2,Schedule-Free AdamW (JAX),0.4309764309764304,5,6,9 +2,Schedule-Free AdamW v2 (JAX),0.525813692480359,1,6,9 +2,Schedule-Free AdamW v2 (PyTorch),0.5252525252525261,2,6,9 +2,Single Worker DiLoCo (JAX),0.25869809203142496,11,4,9 +2,Single Worker DiLoCo v2 (JAX),0.06677890011223338,14,3,9 +3,AdEMAMix (PyTorch),0.5157126823793495,4,7,9 +3,Cautious NAdamW (JAX),0.36924803591470273,8,6,9 +3,Lion (PyTorch),0.18406285072951736,13,5,9 +3,Muon (JAX),0.3434343434343429,9,5,9 +3,Muon (PyTorch),0.4180695847362521,6,5,9 +3,NAdamW (JAX),0.4130190796857464,7,6,9 +3,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.33164983164983214,10,5,9 +3,NAdamW (Tuned for ResNet) (JAX),0.2109988776655443,12,6,9 +3,Schedule-Free AdamW (PyTorch),0.5319865319865317,3,6,9 +3,Schedule-Free AdamW (JAX),0.47474747474747464,5,6,9 +3,Schedule-Free AdamW v2 (JAX),0.6531986531986536,1,7,9 +3,Schedule-Free AdamW v2 (PyTorch),0.5465768799102142,2,6,9 +3,Single Worker DiLoCo (JAX),0.2777777777777779,11,6,9 +3,Single Worker DiLoCo v2 (JAX),0.046576879910213226,14,3,9 +4,AdEMAMix (PyTorch),0.5314253647586987,6,7,9 +4,Cautious NAdamW (JAX),0.4932659932659933,7,7,9 +4,Lion (PyTorch),0.3383838383838382,11,6,9 +4,Muon (JAX),0.39169472502805874,10,5,9 +4,Muon (PyTorch),0.461840628507296,8,5,9 +4,NAdamW (JAX),0.45566778900112226,9,7,9 +4,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5482603815937154,4,7,9 +4,NAdamW (Tuned for ResNet) (JAX),0.3333333333333337,12,7,9 +4,Schedule-Free AdamW (PyTorch),0.5735129068462396,2,6,9 +4,Schedule-Free AdamW (JAX),0.5460157126823791,5,6,9 +4,Schedule-Free AdamW v2 (JAX),0.6840628507295176,1,7,9 +4,Schedule-Free AdamW v2 (PyTorch),0.5600448933782273,3,7,9 +4,Single Worker DiLoCo (JAX),0.32940516273849635,13,6,9 +4,Single Worker DiLoCo v2 (JAX),0.047138047138047125,14,3,9 +5,AdEMAMix (PyTorch),0.5308641975308648,6,7,9 +5,Cautious NAdamW (JAX),0.4775533108866446,8,7,9 +5,Lion (PyTorch),0.3793490460157129,11,6,9 +5,Muon (JAX),0.4197530864197534,10,5,9 +5,Muon (PyTorch),0.488776655443323,7,5,9 +5,NAdamW (JAX),0.44556677890011226,9,7,9 +5,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5336700336700341,5,7,9 +5,NAdamW (Tuned for ResNet) (JAX),0.3569023569023571,12,7,9 +5,Schedule-Free AdamW (PyTorch),0.5881032547699209,3,6,9 +5,Schedule-Free AdamW (JAX),0.5679012345679008,4,6,9 +5,Schedule-Free AdamW v2 (JAX),0.692480359147026,1,7,9 +5,Schedule-Free AdamW v2 (PyTorch),0.5993265993265994,2,7,9 +5,Single Worker DiLoCo (JAX),0.31705948372615084,13,6,9 +5,Single Worker DiLoCo v2 (JAX),0.12177328843995516,14,4,9 +6,AdEMAMix (PyTorch),0.51571268237935,5,7,9 +6,Cautious NAdamW (JAX),0.41694725028058355,10,7,9 +6,Lion (PyTorch),0.41245791245791247,11,6,9 +6,Muon (JAX),0.4545454545454553,8,6,9 +6,Muon (PyTorch),0.4730639730639739,6,5,9 +6,NAdamW (JAX),0.4219977553310885,9,7,9 +6,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4674523007856342,7,7,9 +6,NAdamW (Tuned for ResNet) (JAX),0.3439955106621775,12,7,9 +6,Schedule-Free AdamW (PyTorch),0.5510662177328841,3,6,9 +6,Schedule-Free AdamW (JAX),0.5331088664422,4,6,9 +6,Schedule-Free AdamW v2 (JAX),0.6453423120089784,1,7,9 +6,Schedule-Free AdamW v2 (PyTorch),0.5746352413019085,2,7,9 +6,Single Worker DiLoCo (JAX),0.3131313131313134,13,7,9 +6,Single Worker DiLoCo v2 (JAX),0.15544332210998887,14,6,9 +7,AdEMAMix (PyTorch),0.5056116722783399,5,7,9 +7,Cautious NAdamW (JAX),0.3945005611672283,10,7,9 +7,Lion (PyTorch),0.4259259259259267,9,6,9 +7,Muon (JAX),0.4433221099887774,8,7,9 +7,Muon (PyTorch),0.488776655443323,6,5,9 +7,NAdamW (JAX),0.38945005611672306,11,7,9 +7,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.47643097643097665,7,7,9 +7,NAdamW (Tuned for ResNet) (JAX),0.31369248035914676,12,7,9 +7,Schedule-Free AdamW (PyTorch),0.5611672278338942,3,6,9 +7,Schedule-Free AdamW (JAX),0.5634118967452297,2,6,9 +7,Schedule-Free AdamW v2 (JAX),0.6734006734006736,1,7,9 +7,Schedule-Free AdamW v2 (PyTorch),0.5538720538720548,4,7,9 +7,Single Worker DiLoCo (JAX),0.25701459034792357,13,7,9 +7,Single Worker DiLoCo v2 (JAX),0.1419753086419754,14,6,9 +8,AdEMAMix (PyTorch),0.5061728395061739,6,7,9 +8,Cautious NAdamW (JAX),0.3950617283950619,10,7,9 +8,Lion (PyTorch),0.4393939393939401,9,6,9 +8,Muon (JAX),0.4410774410774418,8,7,9 +8,Muon (PyTorch),0.6015712682379343,2,6,9 +8,NAdamW (JAX),0.37878787878787934,11,7,9 +8,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.48484848484848464,7,7,9 +8,NAdamW (Tuned for ResNet) (JAX),0.30078563411896697,12,7,9 +8,Schedule-Free AdamW (PyTorch),0.5645342312008975,4,6,9 +8,Schedule-Free AdamW (JAX),0.5634118967452297,5,6,9 +8,Schedule-Free AdamW v2 (JAX),0.6734006734006736,1,7,9 +8,Schedule-Free AdamW v2 (PyTorch),0.5763187429854101,3,7,9 +8,Single Worker DiLoCo (JAX),0.2985409652076322,13,7,9 +8,Single Worker DiLoCo v2 (JAX),0.19472502805836125,14,6,9 +9,AdEMAMix (PyTorch),0.5342312008978677,6,7,9 +9,Cautious NAdamW (JAX),0.4023569023569024,10,7,9 +9,Lion (PyTorch),0.461840628507296,8,6,9 +9,Muon (JAX),0.43771043771043844,9,7,9 +9,Muon (PyTorch),0.602693602693602,2,6,9 +9,NAdamW (JAX),0.37822671156004545,11,7,9 +9,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4898989898989896,7,7,9 +9,NAdamW (Tuned for ResNet) (JAX),0.33389450056116715,12,7,9 +9,Schedule-Free AdamW (PyTorch),0.5937149270482598,3,6,9 +9,Schedule-Free AdamW (JAX),0.5746352413019077,5,6,9 +9,Schedule-Free AdamW v2 (JAX),0.6846240179573512,1,7,9 +9,Schedule-Free AdamW v2 (PyTorch),0.5751964085297422,4,7,9 +9,Single Worker DiLoCo (JAX),0.31986531986532013,13,7,9 +9,Single Worker DiLoCo v2 (JAX),0.2457912457912453,14,6,9 +10,AdEMAMix (PyTorch),0.5213243546576883,6,7,9 +10,Cautious NAdamW (JAX),0.40123456790123474,10,7,9 +10,Lion (PyTorch),0.4438832772166114,9,6,9 +10,Muon (JAX),0.4506172839506177,8,7,9 +10,Muon (PyTorch),0.5993265993265987,3,6,9 +10,NAdamW (JAX),0.37542087542087604,11,7,9 +10,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.493265993265993,7,7,9 +10,NAdamW (Tuned for ResNet) (JAX),0.3265993265993262,12,7,9 +10,Schedule-Free AdamW (PyTorch),0.5785634118967448,4,6,9 +10,Schedule-Free AdamW (JAX),0.5561167227833891,5,6,9 +10,Schedule-Free AdamW v2 (JAX),0.6851851851851855,1,7,9 +10,Schedule-Free AdamW v2 (PyTorch),0.607182940516274,2,7,9 +10,Single Worker DiLoCo (JAX),0.31986531986532013,13,7,9 +10,Single Worker DiLoCo v2 (JAX),0.23176206509539798,14,6,9 +11,AdEMAMix (PyTorch),0.5589225589225592,6,7,9 +11,Cautious NAdamW (JAX),0.4612794612794611,9,7,9 +11,Lion (PyTorch),0.45959595959596045,10,6,9 +11,Muon (JAX),0.4870931537598213,8,7,9 +11,Muon (PyTorch),0.5982042648709308,3,6,9 +11,NAdamW (JAX),0.3900112233445572,11,7,9 +11,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.49270482603815907,7,7,9 +11,NAdamW (Tuned for ResNet) (JAX),0.3136924803591467,13,7,9 +11,Schedule-Free AdamW (PyTorch),0.5735129068462397,5,6,9 +11,Schedule-Free AdamW (JAX),0.5746352413019075,4,6,9 +11,Schedule-Free AdamW v2 (JAX),0.6846240179573515,1,7,9 +11,Schedule-Free AdamW v2 (PyTorch),0.6200897867564538,2,7,9 +11,Single Worker DiLoCo (JAX),0.3479236812570148,12,7,9 +11,Single Worker DiLoCo v2 (JAX),0.24803591470258102,14,6,9 +12,AdEMAMix (PyTorch),0.5948372615039287,5,7,9 +12,Cautious NAdamW (JAX),0.48260381593714907,9,7,9 +12,Lion (PyTorch),0.46240179573512985,10,6,9 +12,Muon (JAX),0.5263748597081935,7,7,9 +12,Muon (PyTorch),0.6986531986531989,1,7,9 +12,NAdamW (JAX),0.4096520763187436,11,7,9 +12,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5106621773288437,8,7,9 +12,NAdamW (Tuned for ResNet) (JAX),0.3625140291806958,13,7,9 +12,Schedule-Free AdamW (PyTorch),0.5959595959595954,4,6,9 +12,Schedule-Free AdamW (JAX),0.5740740740740736,6,6,9 +12,Schedule-Free AdamW v2 (JAX),0.6964085297418633,2,7,9 +12,Schedule-Free AdamW v2 (PyTorch),0.618967452300786,3,7,9 +12,Single Worker DiLoCo (JAX),0.3658810325476993,12,7,9 +12,Single Worker DiLoCo v2 (JAX),0.30471380471380477,14,7,9 +13,AdEMAMix (PyTorch),0.6217732884399555,4,7,9 +13,Cautious NAdamW (JAX),0.47755331088664404,10,7,9 +13,Lion (PyTorch),0.4792368125701467,9,6,9 +13,Muon (JAX),0.5476992143658813,7,7,9 +13,Muon (PyTorch),0.7109988776655444,2,7,9 +13,NAdamW (JAX),0.4242424242424245,11,7,9 +13,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5353535353535349,8,7,9 +13,NAdamW (Tuned for ResNet) (JAX),0.36588103254769916,13,7,9 +13,Schedule-Free AdamW (PyTorch),0.6122334455667782,6,6,9 +13,Schedule-Free AdamW (JAX),0.6402918069584741,3,7,9 +13,Schedule-Free AdamW v2 (JAX),0.7138047138047138,1,7,9 +13,Schedule-Free AdamW v2 (PyTorch),0.6195286195286199,5,8,9 +13,Single Worker DiLoCo (JAX),0.39730639730639733,12,7,9 +13,Single Worker DiLoCo v2 (JAX),0.2934904601571266,14,7,9 +14,AdEMAMix (PyTorch),0.634118967452301,4,7,9 +14,Cautious NAdamW (JAX),0.48148148148148123,9,7,9 +14,Lion (PyTorch),0.4758698092031434,10,6,9 +14,Muon (JAX),0.551066217732884,8,7,9 +14,Muon (PyTorch),0.7098765432098766,2,7,9 +14,NAdamW (JAX),0.44668911335578004,11,7,9 +14,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5578002244668906,7,7,9 +14,NAdamW (Tuned for ResNet) (JAX),0.4051627384960715,12,7,9 +14,Schedule-Free AdamW (PyTorch),0.6156004489337815,6,6,9 +14,Schedule-Free AdamW (JAX),0.6346801346801352,3,7,9 +14,Schedule-Free AdamW v2 (JAX),0.7138047138047138,1,7,9 +14,Schedule-Free AdamW v2 (PyTorch),0.6195286195286199,5,8,9 +14,Single Worker DiLoCo (JAX),0.40179573512906847,13,7,9 +14,Single Worker DiLoCo v2 (JAX),0.31874298540965207,14,7,9 +15,AdEMAMix (PyTorch),0.6352413019079688,5,7,9 +15,Cautious NAdamW (JAX),0.4702581369248035,10,7,9 +15,Lion (PyTorch),0.5050505050505053,9,6,9 +15,Muon (JAX),0.5656565656565657,7,7,9 +15,Muon (PyTorch),0.7222222222222222,1,7,9 +15,NAdamW (JAX),0.4601571268237934,11,7,9 +15,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5476992143658806,8,7,9 +15,NAdamW (Tuned for ResNet) (JAX),0.39506172839506126,12,7,9 +15,Schedule-Free AdamW (PyTorch),0.613355780022446,6,7,9 +15,Schedule-Free AdamW (JAX),0.6402918069584741,4,7,9 +15,Schedule-Free AdamW v2 (JAX),0.7138047138047138,2,7,9 +15,Schedule-Free AdamW v2 (PyTorch),0.662177328843996,3,8,9 +15,Single Worker DiLoCo (JAX),0.3916947250280584,13,7,9 +15,Single Worker DiLoCo v2 (JAX),0.3221099887766551,14,7,9 +16,AdEMAMix (PyTorch),0.6004489337822676,6,7,9 +16,Cautious NAdamW (JAX),0.446127946127947,10,7,9 +16,Lion (PyTorch),0.4668911335577998,9,6,9 +16,Muon (JAX),0.5881032547699218,7,7,9 +16,Muon (PyTorch),0.7177328843995511,1,7,9 +16,NAdamW (JAX),0.4332210998877673,11,7,9 +16,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5207631874298538,8,7,9 +16,NAdamW (Tuned for ResNet) (JAX),0.4051627384960719,12,7,9 +16,Schedule-Free AdamW (PyTorch),0.6240179573512903,4,7,9 +16,Schedule-Free AdamW (JAX),0.6537598204264875,3,7,9 +16,Schedule-Free AdamW v2 (JAX),0.7138047138047137,2,7,9 +16,Schedule-Free AdamW v2 (PyTorch),0.6127946127946122,5,8,9 +16,Single Worker DiLoCo (JAX),0.37261503928170625,13,7,9 +16,Single Worker DiLoCo v2 (JAX),0.29012345679012325,14,7,9 +17,AdEMAMix (PyTorch),0.6363636363636368,4,7,9 +17,Cautious NAdamW (JAX),0.5044893378226719,9,7,9 +17,Lion (PyTorch),0.48597081930415215,10,6,9 +17,Muon (JAX),0.6307519640852978,5,7,9 +17,Muon (PyTorch),0.7210998877665545,1,7,9 +17,NAdamW (JAX),0.4388327721661063,11,7,9 +17,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5336700336700334,8,7,9 +17,NAdamW (Tuned for ResNet) (JAX),0.4304152637485974,12,7,9 +17,Schedule-Free AdamW (PyTorch),0.630190796857463,7,7,9 +17,Schedule-Free AdamW (JAX),0.6588103254769926,3,7,9 +17,Schedule-Free AdamW v2 (JAX),0.7143658810325476,2,7,9 +17,Schedule-Free AdamW v2 (PyTorch),0.6301907968574634,6,9,9 +17,Single Worker DiLoCo (JAX),0.39618406285073,13,7,9 +17,Single Worker DiLoCo v2 (JAX),0.29629629629629606,14,7,9 +18,AdEMAMix (PyTorch),0.6475869809203146,4,7,9 +18,Cautious NAdamW (JAX),0.5145903479236814,9,7,9 +18,Lion (PyTorch),0.481481481481481,10,6,9 +18,Muon (JAX),0.6442199775533113,5,7,9 +18,Muon (PyTorch),0.71324354657688,2,8,9 +18,NAdamW (JAX),0.42873176206509617,12,7,9 +18,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5392817059483729,8,7,9 +18,NAdamW (Tuned for ResNet) (JAX),0.4506172839506173,11,7,9 +18,Schedule-Free AdamW (PyTorch),0.631874298540965,6,7,9 +18,Schedule-Free AdamW (JAX),0.6537598204264875,3,7,9 +18,Schedule-Free AdamW v2 (JAX),0.7138047138047137,1,7,9 +18,Schedule-Free AdamW v2 (PyTorch),0.6307519640852973,7,9,9 +18,Single Worker DiLoCo (JAX),0.3838383838383839,13,7,9 +18,Single Worker DiLoCo v2 (JAX),0.32210998877665503,14,7,9 +19,AdEMAMix (PyTorch),0.5600448933782264,5,7,9 +19,Cautious NAdamW (JAX),0.4360269360269364,9,7,9 +19,Lion (PyTorch),0.42704826038159394,10,7,9 +19,Muon (JAX),0.6116722783389453,2,7,9 +19,Muon (PyTorch),0.6470258136924808,1,8,9 +19,NAdamW (JAX),0.37542087542087527,12,7,9 +19,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5089786756453427,8,7,9 +19,NAdamW (Tuned for ResNet) (JAX),0.39730639730639755,11,7,9 +19,Schedule-Free AdamW (PyTorch),0.5443322109988779,7,7,9 +19,Schedule-Free AdamW (JAX),0.557239057239057,6,7,9 +19,Schedule-Free AdamW v2 (JAX),0.6105499438832767,3,7,9 +19,Schedule-Free AdamW v2 (PyTorch),0.5729517396184067,4,9,9 +19,Single Worker DiLoCo (JAX),0.286195286195286,13,7,9 +19,Single Worker DiLoCo v2 (JAX),0.2514029180695844,14,7,9 +20,AdEMAMix (PyTorch),0.562289562289562,5,7,9 +20,Cautious NAdamW (JAX),0.45959595959595995,9,7,9 +20,Lion (PyTorch),0.43041526374859734,10,7,9 +20,Muon (JAX),0.6184062850729521,3,7,9 +20,Muon (PyTorch),0.6459034792368129,1,8,9 +20,NAdamW (JAX),0.39337822671155975,12,7,9 +20,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5325476992143662,8,7,9 +20,NAdamW (Tuned for ResNet) (JAX),0.4276094276094274,11,7,9 +20,Schedule-Free AdamW (PyTorch),0.5549943883277215,7,7,9 +20,Schedule-Free AdamW (JAX),0.5606060606060603,6,7,9 +20,Schedule-Free AdamW v2 (JAX),0.6105499438832767,4,7,9 +20,Schedule-Free AdamW v2 (PyTorch),0.6212121212121214,2,9,9 +20,Single Worker DiLoCo (JAX),0.286195286195286,13,7,9 +20,Single Worker DiLoCo v2 (JAX),0.25701459034792334,14,7,9 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/selected_curves.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/selected_curves.csv new file mode 100644 index 00000000..829bef7c --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/selected_curves.csv @@ -0,0 +1,106 @@ +relaxation_percent,submission,score,rank,workloads_reached,workload_count +0,AdEMAMix (PyTorch),0.5190796857463527,2,6,9 +0,Muon (PyTorch),0.4231200897867556,6,4,9 +0,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4506172839506181,4,5,9 +0,Schedule-Free AdamW v2 (PyTorch),0.5679012345679016,1,6,9 +0,Single Worker DiLoCo v2 (JAX),0.1301907968574634,14,2,9 +1,AdEMAMix (PyTorch),0.5875420875420879,1,7,9 +1,Muon (PyTorch),0.4837261503928179,5,5,9 +1,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4304152637485978,7,5,9 +1,Schedule-Free AdamW v2 (PyTorch),0.5718294051627385,2,6,9 +1,Single Worker DiLoCo v2 (JAX),0.12289562289562284,14,3,9 +2,AdEMAMix (PyTorch),0.4831649831649832,3,7,9 +2,Muon (PyTorch),0.4304152637485974,6,5,9 +2,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.3653198653198659,8,5,9 +2,Schedule-Free AdamW v2 (PyTorch),0.5252525252525261,2,6,9 +2,Single Worker DiLoCo v2 (JAX),0.06677890011223338,14,3,9 +3,AdEMAMix (PyTorch),0.5157126823793495,4,7,9 +3,Muon (PyTorch),0.4180695847362521,6,5,9 +3,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.33164983164983214,10,5,9 +3,Schedule-Free AdamW v2 (PyTorch),0.5465768799102142,2,6,9 +3,Single Worker DiLoCo v2 (JAX),0.046576879910213226,14,3,9 +4,AdEMAMix (PyTorch),0.5314253647586987,6,7,9 +4,Muon (PyTorch),0.461840628507296,8,5,9 +4,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5482603815937154,4,7,9 +4,Schedule-Free AdamW v2 (PyTorch),0.5600448933782273,3,7,9 +4,Single Worker DiLoCo v2 (JAX),0.047138047138047125,14,3,9 +5,AdEMAMix (PyTorch),0.5308641975308648,6,7,9 +5,Muon (PyTorch),0.488776655443323,7,5,9 +5,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5336700336700341,5,7,9 +5,Schedule-Free AdamW v2 (PyTorch),0.5993265993265994,2,7,9 +5,Single Worker DiLoCo v2 (JAX),0.12177328843995516,14,4,9 +6,AdEMAMix (PyTorch),0.51571268237935,5,7,9 +6,Muon (PyTorch),0.4730639730639739,6,5,9 +6,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4674523007856342,7,7,9 +6,Schedule-Free AdamW v2 (PyTorch),0.5746352413019085,2,7,9 +6,Single Worker DiLoCo v2 (JAX),0.15544332210998887,14,6,9 +7,AdEMAMix (PyTorch),0.5056116722783399,5,7,9 +7,Muon (PyTorch),0.488776655443323,6,5,9 +7,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.47643097643097665,7,7,9 +7,Schedule-Free AdamW v2 (PyTorch),0.5538720538720548,4,7,9 +7,Single Worker DiLoCo v2 (JAX),0.1419753086419754,14,6,9 +8,AdEMAMix (PyTorch),0.5061728395061739,6,7,9 +8,Muon (PyTorch),0.6015712682379343,2,6,9 +8,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.48484848484848464,7,7,9 +8,Schedule-Free AdamW v2 (PyTorch),0.5763187429854101,3,7,9 +8,Single Worker DiLoCo v2 (JAX),0.19472502805836125,14,6,9 +9,AdEMAMix (PyTorch),0.5342312008978677,6,7,9 +9,Muon (PyTorch),0.602693602693602,2,6,9 +9,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4898989898989896,7,7,9 +9,Schedule-Free AdamW v2 (PyTorch),0.5751964085297422,4,7,9 +9,Single Worker DiLoCo v2 (JAX),0.2457912457912453,14,6,9 +10,AdEMAMix (PyTorch),0.5213243546576883,6,7,9 +10,Muon (PyTorch),0.5993265993265987,3,6,9 +10,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.493265993265993,7,7,9 +10,Schedule-Free AdamW v2 (PyTorch),0.607182940516274,2,7,9 +10,Single Worker DiLoCo v2 (JAX),0.23176206509539798,14,6,9 +11,AdEMAMix (PyTorch),0.5589225589225592,6,7,9 +11,Muon (PyTorch),0.5982042648709308,3,6,9 +11,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.49270482603815907,7,7,9 +11,Schedule-Free AdamW v2 (PyTorch),0.6200897867564538,2,7,9 +11,Single Worker DiLoCo v2 (JAX),0.24803591470258102,14,6,9 +12,AdEMAMix (PyTorch),0.5948372615039287,5,7,9 +12,Muon (PyTorch),0.6986531986531989,1,7,9 +12,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5106621773288437,8,7,9 +12,Schedule-Free AdamW v2 (PyTorch),0.618967452300786,3,7,9 +12,Single Worker DiLoCo v2 (JAX),0.30471380471380477,14,7,9 +13,AdEMAMix (PyTorch),0.6217732884399555,4,7,9 +13,Muon (PyTorch),0.7109988776655444,2,7,9 +13,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5353535353535349,8,7,9 +13,Schedule-Free AdamW v2 (PyTorch),0.6195286195286199,5,8,9 +13,Single Worker DiLoCo v2 (JAX),0.2934904601571266,14,7,9 +14,AdEMAMix (PyTorch),0.634118967452301,4,7,9 +14,Muon (PyTorch),0.7098765432098766,2,7,9 +14,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5578002244668906,7,7,9 +14,Schedule-Free AdamW v2 (PyTorch),0.6195286195286199,5,8,9 +14,Single Worker DiLoCo v2 (JAX),0.31874298540965207,14,7,9 +15,AdEMAMix (PyTorch),0.6352413019079688,5,7,9 +15,Muon (PyTorch),0.7222222222222222,1,7,9 +15,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5476992143658806,8,7,9 +15,Schedule-Free AdamW v2 (PyTorch),0.662177328843996,3,8,9 +15,Single Worker DiLoCo v2 (JAX),0.3221099887766551,14,7,9 +16,AdEMAMix (PyTorch),0.6004489337822676,6,7,9 +16,Muon (PyTorch),0.7177328843995511,1,7,9 +16,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5207631874298538,8,7,9 +16,Schedule-Free AdamW v2 (PyTorch),0.6127946127946122,5,8,9 +16,Single Worker DiLoCo v2 (JAX),0.29012345679012325,14,7,9 +17,AdEMAMix (PyTorch),0.6363636363636368,4,7,9 +17,Muon (PyTorch),0.7210998877665545,1,7,9 +17,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5336700336700334,8,7,9 +17,Schedule-Free AdamW v2 (PyTorch),0.6301907968574634,6,9,9 +17,Single Worker DiLoCo v2 (JAX),0.29629629629629606,14,7,9 +18,AdEMAMix (PyTorch),0.6475869809203146,4,7,9 +18,Muon (PyTorch),0.71324354657688,2,8,9 +18,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5392817059483729,8,7,9 +18,Schedule-Free AdamW v2 (PyTorch),0.6307519640852973,7,9,9 +18,Single Worker DiLoCo v2 (JAX),0.32210998877665503,14,7,9 +19,AdEMAMix (PyTorch),0.5600448933782264,5,7,9 +19,Muon (PyTorch),0.6470258136924808,1,8,9 +19,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5089786756453427,8,7,9 +19,Schedule-Free AdamW v2 (PyTorch),0.5729517396184067,4,9,9 +19,Single Worker DiLoCo v2 (JAX),0.2514029180695844,14,7,9 +20,AdEMAMix (PyTorch),0.562289562289562,5,7,9 +20,Muon (PyTorch),0.6459034792368129,1,8,9 +20,NAdamW (Baseline AlgoPerf v0.5) (JAX),0.5325476992143662,8,7,9 +20,Schedule-Free AdamW v2 (PyTorch),0.6212121212121214,2,9,9 +20,Single Worker DiLoCo v2 (JAX),0.25701459034792334,14,7,9 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/target_thresholds.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/target_thresholds.csv new file mode 100644 index 00000000..4e423e84 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/target_thresholds.csv @@ -0,0 +1,190 @@ +relaxation_percent,workload,metric,target +0,criteo1tb,validation/loss,0.123735 +0,fastmri,validation/ssim,0.723653 +0,imagenet_resnet,validation/accuracy,0.77431 +0,imagenet_vit,validation/accuracy,0.77309 +0,librispeech_conformer,validation/wer,0.085884 +0,librispeech_deepspeech,validation/wer,0.119936 +0,finewebedu_lm,validation/ppl,22.2995 +0,ogbg,validation/mean_average_precision,0.28098 +0,wmt,validation/bleu,30.8491 +1,criteo1tb,validation/loss,0.12497235 +1,fastmri,validation/ssim,0.71641647 +1,imagenet_resnet,validation/accuracy,0.7665669 +1,imagenet_vit,validation/accuracy,0.7653591000000001 +1,librispeech_conformer,validation/wer,0.08674284 +1,librispeech_deepspeech,validation/wer,0.12113536 +1,finewebedu_lm,validation/ppl,22.522495 +1,ogbg,validation/mean_average_precision,0.2781702 +1,wmt,validation/bleu,30.540609 +2,criteo1tb,validation/loss,0.1262097 +2,fastmri,validation/ssim,0.70917994 +2,imagenet_resnet,validation/accuracy,0.7588238 +2,imagenet_vit,validation/accuracy,0.7576282000000001 +2,librispeech_conformer,validation/wer,0.08760168 +2,librispeech_deepspeech,validation/wer,0.12233472000000001 +2,finewebedu_lm,validation/ppl,22.74549 +2,ogbg,validation/mean_average_precision,0.2753604 +2,wmt,validation/bleu,30.232118 +3,criteo1tb,validation/loss,0.12744705 +3,fastmri,validation/ssim,0.7019434099999999 +3,imagenet_resnet,validation/accuracy,0.7510807 +3,imagenet_vit,validation/accuracy,0.7498973 +3,librispeech_conformer,validation/wer,0.08846052 +3,librispeech_deepspeech,validation/wer,0.12353408 +3,finewebedu_lm,validation/ppl,22.968484999999998 +3,ogbg,validation/mean_average_precision,0.2725506 +3,wmt,validation/bleu,29.923627 +4,criteo1tb,validation/loss,0.1286844 +4,fastmri,validation/ssim,0.6947068799999999 +4,imagenet_resnet,validation/accuracy,0.7433376 +4,imagenet_vit,validation/accuracy,0.7421664 +4,librispeech_conformer,validation/wer,0.08931936 +4,librispeech_deepspeech,validation/wer,0.12473344 +4,finewebedu_lm,validation/ppl,23.19148 +4,ogbg,validation/mean_average_precision,0.2697408 +4,wmt,validation/bleu,29.615136 +5,criteo1tb,validation/loss,0.12992175 +5,fastmri,validation/ssim,0.68747035 +5,imagenet_resnet,validation/accuracy,0.7355945 +5,imagenet_vit,validation/accuracy,0.7344355 +5,librispeech_conformer,validation/wer,0.0901782 +5,librispeech_deepspeech,validation/wer,0.1259328 +5,finewebedu_lm,validation/ppl,23.414475 +5,ogbg,validation/mean_average_precision,0.266931 +5,wmt,validation/bleu,29.306645 +6,criteo1tb,validation/loss,0.1311591 +6,fastmri,validation/ssim,0.68023382 +6,imagenet_resnet,validation/accuracy,0.7278514 +6,imagenet_vit,validation/accuracy,0.7267046 +6,librispeech_conformer,validation/wer,0.09103704000000001 +6,librispeech_deepspeech,validation/wer,0.12713216 +6,finewebedu_lm,validation/ppl,23.63747 +6,ogbg,validation/mean_average_precision,0.2641212 +6,wmt,validation/bleu,28.998154 +7,criteo1tb,validation/loss,0.13239645 +7,fastmri,validation/ssim,0.67299729 +7,imagenet_resnet,validation/accuracy,0.7201083 +7,imagenet_vit,validation/accuracy,0.7189737 +7,librispeech_conformer,validation/wer,0.09189588000000001 +7,librispeech_deepspeech,validation/wer,0.12833152 +7,finewebedu_lm,validation/ppl,23.860465 +7,ogbg,validation/mean_average_precision,0.26131139999999997 +7,wmt,validation/bleu,28.689663 +8,criteo1tb,validation/loss,0.1336338 +8,fastmri,validation/ssim,0.6657607600000001 +8,imagenet_resnet,validation/accuracy,0.7123652 +8,imagenet_vit,validation/accuracy,0.7112428000000001 +8,librispeech_conformer,validation/wer,0.09275472000000001 +8,librispeech_deepspeech,validation/wer,0.12953088000000001 +8,finewebedu_lm,validation/ppl,24.08346 +8,ogbg,validation/mean_average_precision,0.2585016 +8,wmt,validation/bleu,28.381172000000003 +9,criteo1tb,validation/loss,0.13487115 +9,fastmri,validation/ssim,0.65852423 +9,imagenet_resnet,validation/accuracy,0.7046221 +9,imagenet_vit,validation/accuracy,0.7035119000000001 +9,librispeech_conformer,validation/wer,0.09361356000000001 +9,librispeech_deepspeech,validation/wer,0.13073024 +9,finewebedu_lm,validation/ppl,24.306455 +9,ogbg,validation/mean_average_precision,0.2556918 +9,wmt,validation/bleu,28.072681 +10,criteo1tb,validation/loss,0.13610850000000002 +10,fastmri,validation/ssim,0.6512877 +10,imagenet_resnet,validation/accuracy,0.696879 +10,imagenet_vit,validation/accuracy,0.6957810000000001 +10,librispeech_conformer,validation/wer,0.09447240000000001 +10,librispeech_deepspeech,validation/wer,0.1319296 +10,finewebedu_lm,validation/ppl,24.52945 +10,ogbg,validation/mean_average_precision,0.252882 +10,wmt,validation/bleu,27.76419 +11,criteo1tb,validation/loss,0.13734585000000002 +11,fastmri,validation/ssim,0.64405117 +11,imagenet_resnet,validation/accuracy,0.6891359 +11,imagenet_vit,validation/accuracy,0.6880501000000001 +11,librispeech_conformer,validation/wer,0.09533124000000001 +11,librispeech_deepspeech,validation/wer,0.13312896000000002 +11,finewebedu_lm,validation/ppl,24.752445 +11,ogbg,validation/mean_average_precision,0.2500722 +11,wmt,validation/bleu,27.455699 +12,criteo1tb,validation/loss,0.13858320000000002 +12,fastmri,validation/ssim,0.63681464 +12,imagenet_resnet,validation/accuracy,0.6813928 +12,imagenet_vit,validation/accuracy,0.6803192 +12,librispeech_conformer,validation/wer,0.09619008000000001 +12,librispeech_deepspeech,validation/wer,0.13432832 +12,finewebedu_lm,validation/ppl,24.97544 +12,ogbg,validation/mean_average_precision,0.24726240000000002 +12,wmt,validation/bleu,27.147208 +13,criteo1tb,validation/loss,0.13982055 +13,fastmri,validation/ssim,0.62957811 +13,imagenet_resnet,validation/accuracy,0.6736497 +13,imagenet_vit,validation/accuracy,0.6725883 +13,librispeech_conformer,validation/wer,0.09704892 +13,librispeech_deepspeech,validation/wer,0.13552767999999998 +13,finewebedu_lm,validation/ppl,25.198434999999996 +13,ogbg,validation/mean_average_precision,0.2444526 +13,wmt,validation/bleu,26.838717 +14,criteo1tb,validation/loss,0.1410579 +14,fastmri,validation/ssim,0.62234158 +14,imagenet_resnet,validation/accuracy,0.6659066 +14,imagenet_vit,validation/accuracy,0.6648574 +14,librispeech_conformer,validation/wer,0.09790776000000001 +14,librispeech_deepspeech,validation/wer,0.13672704000000002 +14,finewebedu_lm,validation/ppl,25.42143 +14,ogbg,validation/mean_average_precision,0.2416428 +14,wmt,validation/bleu,26.530226 +15,criteo1tb,validation/loss,0.14229524999999998 +15,fastmri,validation/ssim,0.6151050499999999 +15,imagenet_resnet,validation/accuracy,0.6581635 +15,imagenet_vit,validation/accuracy,0.6571265000000001 +15,librispeech_conformer,validation/wer,0.0987666 +15,librispeech_deepspeech,validation/wer,0.13792639999999998 +15,finewebedu_lm,validation/ppl,25.644424999999995 +15,ogbg,validation/mean_average_precision,0.238833 +15,wmt,validation/bleu,26.221735 +16,criteo1tb,validation/loss,0.14353259999999998 +16,fastmri,validation/ssim,0.60786852 +16,imagenet_resnet,validation/accuracy,0.6504204 +16,imagenet_vit,validation/accuracy,0.6493956000000001 +16,librispeech_conformer,validation/wer,0.09962544 +16,librispeech_deepspeech,validation/wer,0.13912576 +16,finewebedu_lm,validation/ppl,25.867419999999996 +16,ogbg,validation/mean_average_precision,0.2360232 +16,wmt,validation/bleu,25.913244 +17,criteo1tb,validation/loss,0.14476994999999998 +17,fastmri,validation/ssim,0.60063199 +17,imagenet_resnet,validation/accuracy,0.6426773 +17,imagenet_vit,validation/accuracy,0.6416647 +17,librispeech_conformer,validation/wer,0.10048428 +17,librispeech_deepspeech,validation/wer,0.14032512 +17,finewebedu_lm,validation/ppl,26.090414999999997 +17,ogbg,validation/mean_average_precision,0.2332134 +17,wmt,validation/bleu,25.604753 +18,criteo1tb,validation/loss,0.14600729999999998 +18,fastmri,validation/ssim,0.59339546 +18,imagenet_resnet,validation/accuracy,0.6349342000000001 +18,imagenet_vit,validation/accuracy,0.6339338000000001 +18,librispeech_conformer,validation/wer,0.10134312 +18,librispeech_deepspeech,validation/wer,0.14152447999999998 +18,finewebedu_lm,validation/ppl,26.313409999999998 +18,ogbg,validation/mean_average_precision,0.23040360000000001 +18,wmt,validation/bleu,25.296262000000002 +19,criteo1tb,validation/loss,0.14724464999999998 +19,fastmri,validation/ssim,0.5861589300000001 +19,imagenet_resnet,validation/accuracy,0.6271911000000001 +19,imagenet_vit,validation/accuracy,0.6262029000000001 +19,librispeech_conformer,validation/wer,0.10220196 +19,librispeech_deepspeech,validation/wer,0.14272384 +19,finewebedu_lm,validation/ppl,26.536405 +19,ogbg,validation/mean_average_precision,0.2275938 +19,wmt,validation/bleu,24.987771000000002 +20,criteo1tb,validation/loss,0.148482 +20,fastmri,validation/ssim,0.5789224000000001 +20,imagenet_resnet,validation/accuracy,0.6194480000000001 +20,imagenet_vit,validation/accuracy,0.6184720000000001 +20,librispeech_conformer,validation/wer,0.1030608 +20,librispeech_deepspeech,validation/wer,0.1439232 +20,finewebedu_lm,validation/ppl,26.759399999999996 +20,ogbg,validation/mean_average_precision,0.224784 +20,wmt,validation/bleu,24.679280000000002 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_00pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_00pct.csv new file mode 100644 index 00000000..164a3850 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_00pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),7839.193164110184,1517.7321906089785,18025.89689064026,inf,inf,48894.85426735878,inf,6329.966245889664,17399.639942407608 +Cautious NAdamW (JAX),inf,1608.188658952713,25738.981688261032,inf,inf,inf,inf,4992.686820983887,14232.458706855774 +Lion (PyTorch),inf,1394.1750195026398,23172.039316177368,inf,inf,inf,inf,7223.987207174301,15475.552730083466 +Muon (JAX),inf,1869.765276670456,20594.037749767303,inf,77162.91657114029,inf,inf,inf,inf +Muon (PyTorch),7141.604691028595,inf,15471.922557115557,inf,inf,inf,inf,1833.473667144776,14214.779582500458 +NAdamW (JAX),7492.6946766376495,1800.7732002735138,25733.847669363025,inf,72015.5787293911,inf,inf,inf,inf +NAdamW (Baseline AlgoPerf v0.5) (JAX),8206.103132247925,1620.5153810977936,20589.912857055664,inf,inf,inf,inf,4089.775626659393,14865.7885992527 +NAdamW (Tuned for ResNet) (JAX),inf,1920.545307636261,23163.02198767662,inf,inf,inf,inf,6349.506216049194,inf +Schedule-Free AdamW (PyTorch),10337.671689033508,1188.9131379127502,inf,inf,inf,inf,40463.388149023056,3640.148542404175,19957.71787595749 +Schedule-Free AdamW (JAX),inf,2397.40203499794,12875.283079862596,inf,87468.86081624031,inf,inf,5446.973826885223,16161.202248096466 +Schedule-Free AdamW v2 (JAX),8204.54053902626,1850.625381946564,15451.99134683609,inf,84891.75501847267,inf,inf,5444.019295454025,inf +Schedule-Free AdamW v2 (PyTorch),7480.571330547333,1128.837876081467,inf,inf,inf,55846.44081497192,41911.17554831505,6325.430662155151,10325.45705485344 +Single Worker DiLoCo (JAX),inf,2379.3425666093826,28314.819189310077,inf,inf,inf,inf,inf,inf +Single Worker DiLoCo v2 (JAX),inf,2578.1419467926025,28313.97388148308,inf,inf,inf,inf,inf,inf diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_01pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_01pct.csv new file mode 100644 index 00000000..f8ae8d1f --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_01pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),3210.4460656642914,1093.675038814545,18025.89689064026,inf,inf,48894.85426735878,30400.241758823395,5891.7984273433685,15472.984793901443 +Cautious NAdamW (JAX),inf,1058.2792873382568,25738.981688261032,inf,inf,inf,inf,4542.640103340149,12300.529671430588 +Lion (PyTorch),4630.977348804474,1068.286497592926,20608.53852891922,inf,inf,inf,inf,6772.937709569931,14191.460042238235 +Muon (JAX),10365.37938952446,1319.8607549667358,20594.037749767303,inf,72022.60874962807,inf,inf,inf,inf +Muon (PyTorch),3239.148842573166,1188.9445600509644,15471.922557115557,inf,inf,inf,inf,1833.473667144776,10349.304359197617 +NAdamW (JAX),3216.274062395096,1140.9231734275818,25733.847669363025,inf,69445.24471068382,inf,inf,inf,inf +NAdamW (Baseline AlgoPerf v0.5) (JAX),2863.897424697876,1175.4078862667084,20589.321794748303,inf,inf,inf,inf,3634.618623733521,11645.799484968184 +NAdamW (Tuned for ResNet) (JAX),7150.244158029556,1150.6265110969543,23162.07039999962,inf,inf,inf,inf,5896.352125167847,14224.259515285492 +Schedule-Free AdamW (PyTorch),2145.928728580475,866.9446563720703,inf,inf,inf,inf,39019.65780520439,3624.553771257401,9684.711911439896 +Schedule-Free AdamW (JAX),3222.357746124268,1824.5686995983124,12875.283079862596,inf,66901.03146481514,inf,inf,4994.9825966358185,9074.26617383957 +Schedule-Free AdamW v2 (JAX),2146.8070859909058,1190.480677843094,15451.99134683609,inf,66895.15416312218,inf,inf,4543.061010599136,11005.5692486763 +Schedule-Free AdamW v2 (PyTorch),2142.8173594474792,802.9277532100677,inf,inf,inf,52358.23204731941,39023.37936592102,5879.733811378479,5829.617845058441 +Single Worker DiLoCo (JAX),4671.270045757294,1663.7264096736908,28314.819189310077,inf,inf,inf,inf,inf,inf +Single Worker DiLoCo v2 (JAX),8462.000496387482,2022.091157913208,28313.97388148308,inf,inf,inf,inf,inf,inf diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_02pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_02pct.csv new file mode 100644 index 00000000..48902bc6 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_02pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),1428.7973811626434,864.8888063430786,18025.89689064026,inf,inf,47149.58257842064,28975.83899521828,5427.645111322403,14825.24995803833 +Cautious NAdamW (JAX),1437.8420550823212,722.511825799942,25738.981688261032,inf,inf,inf,inf,4542.640103340149,11012.622641801834 +Lion (PyTorch),1786.1049778461456,959.646072626114,20603.51038718224,inf,inf,inf,inf,6321.769423484802,12251.830946207048 +Muon (JAX),3230.224955558777,878.6190605163574,18022.910578489304,inf,69452.43044137955,inf,inf,1378.5888230800629,inf +Muon (PyTorch),1104.0907456874847,1080.1262052059174,12903.770976543428,inf,inf,inf,inf,1833.473667144776,7139.727415800095 +NAdamW (JAX),1434.4945619106293,920.957771062851,25733.847669363025,inf,66875.45236468315,inf,inf,inf,inf +NAdamW (Baseline AlgoPerf v0.5) (JAX),1081.428255319595,960.678999900818,18021.71687054634,inf,inf,inf,inf,3185.612011909485,10357.81909942627 +NAdamW (Tuned for ResNet) (JAX),2508.926483154297,1040.645043849945,20592.04149007797,inf,inf,inf,inf,5896.352125167847,12939.709772586824 +Schedule-Free AdamW (PyTorch),1076.497935295105,429.2442009449005,inf,inf,inf,inf,36145.44285082817,3189.1223855018616,7116.319007158279 +Schedule-Free AdamW (JAX),1438.9549899101255,1293.577653169632,12875.024502277374,inf,54047.82887840271,inf,inf,4543.0039122104645,7145.66076540947 +Schedule-Free AdamW v2 (JAX),721.9275319576263,753.354035615921,12880.940367937088,inf,56613.070303440094,inf,inf,4091.021724462509,7784.280825853348 +Schedule-Free AdamW v2 (PyTorch),1074.7545132637024,365.1715507507324,inf,inf,inf,52358.23204731941,37579.15203809738,5420.893838405609,4545.6430814266205 +Single Worker DiLoCo (JAX),2156.6775341033936,1110.4843575954437,25742.808414697647,57933.1054751873,inf,inf,inf,inf,inf +Single Worker DiLoCo v2 (JAX),3657.684541225433,1801.844279050827,28313.97388148308,inf,inf,inf,inf,inf,inf diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_03pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_03pct.csv new file mode 100644 index 00000000..bd3265a3 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_03pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,436.60997319221497,18025.89689064026,inf,inf,47149.58257842064,28954.99601364136,4989.435345888138,13540.525059461594 +Cautious NAdamW (JAX),722.5356111526489,394.8429796695709,25738.981688261032,inf,84878.0066742897,inf,inf,4090.531037092209,10365.966279268265 +Lion (PyTorch),1073.0823872089386,740.2782506942749,20603.51038718224,inf,inf,inf,inf,6321.769423484802,10338.965475320816 +Muon (JAX),1437.720421791077,658.0825011730194,18022.910578489304,inf,66882.26614570618,inf,inf,1375.1697556972504,inf +Muon (PyTorch),748.0918927192688,531.0010507106781,12903.770976543428,inf,inf,inf,inf,1833.473667144776,6510.414376974106 +NAdamW (JAX),721.1048164367676,700.5108685493469,25733.847669363025,47962.852383852005,64304.89638185501,inf,inf,4088.2416999340057,inf +NAdamW (Baseline AlgoPerf v0.5) (JAX),721.0765557289124,518.9147706031799,18021.71687054634,inf,inf,inf,inf,3182.511142730713,9719.260936498642 +NAdamW (Tuned for ResNet) (JAX),1081.5050764083862,1040.645043849945,20592.04149007797,51942.21082019806,inf,inf,inf,5896.352125167847,12935.18206691742 +Schedule-Free AdamW (PyTorch),720.9437417984009,319.09749150276184,inf,inf,inf,61063.90926647186,34689.57567882538,3189.1223855018616,5189.421644210815 +Schedule-Free AdamW (JAX),724.0472061634064,604.3663773536682,10305.35549902916,inf,46335.302220106125,inf,inf,4090.9967923164368,5857.690088987351 +Schedule-Free AdamW v2 (JAX),365.3596320152282,417.3900821208954,12880.210941791534,37976.86044549942,46336.8071513176,inf,inf,3638.9604036808014,5852.250037670136 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,inf,inf,inf,50614.13014340401,34691.10995674133,5420.893838405609,3263.986152648926 +Single Worker DiLoCo (JAX),1083.4836993217468,555.2002403736115,25742.808414697647,45968.26041817665,inf,inf,inf,4991.95076751709,16168.221429347992 +Single Worker DiLoCo v2 (JAX),2176.593297958374,1696.829978466034,28313.97388148308,inf,inf,inf,inf,inf,inf diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_04pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_04pct.csv new file mode 100644 index 00000000..84ecd676 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_04pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,18025.89689064026,inf,inf,45404.351519584656,27508.806652784348,4976.4658744335175,12904.218306303024 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,45972.71987748146,77167.3076415062,inf,inf,3638.546424627304,9721.991999149324 +Lion (PyTorch),717.2312772274017,520.2512855529785,20603.51038718224,inf,inf,inf,31862.61851024628,6321.769423484802,9683.24600148201 +Muon (JAX),1079.9141855239868,547.1627485752106,18022.910578489304,inf,64313.66648411751,inf,inf,1375.1697556972504,inf +Muon (PyTorch),392.43705701828,421.49709916114807,12903.770976543428,inf,inf,inf,inf,1833.473667144776,5868.087528705597 +NAdamW (JAX),364.45390701293945,500.9207639694214,23164.42234921456,43973.654967308044,61734.6875371933,inf,inf,4088.2416999340057,12292.569732904434 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,402.4246642589569,18018.74986338616,43969.3411693573,69451.3844780922,inf,inf,2731.6373760700226,8431.825677156448 +NAdamW (Tuned for ResNet) (JAX),723.2133867740631,820.6856744289398,20592.04149007797,43968.77058148384,90015.6228647232,inf,inf,4992.225074529648,11651.874064207075 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,59318.61740803719,33257.97663426399,2738.123290538788,4547.46813249588 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,10304.23870229721,inf,41192.741263866425,inf,inf,4090.733491897583,4567.1483771801 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,12880.210941791534,22009.03094482422,41188.27910041809,inf,inf,3186.941942691803,4565.309421539307 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,46274.09501791,inf,inf,47123.02601647377,33246.56272029877,4977.280465126038,2621.975442647934 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,25742.808414697647,43971.88516378403,inf,inf,inf,4539.960802555084,12946.529366016388 +Single Worker DiLoCo v2 (JAX),1441.4770905971527,1141.4151532649994,28313.97388148308,inf,inf,inf,inf,inf,inf diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_05pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_05pct.csv new file mode 100644 index 00000000..13b02442 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_05pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,18025.89689064026,inf,inf,45404.351519584656,27508.806652784348,4976.4658744335175,12255.966635465622 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,41981.1839838028,72027.07000041008,inf,inf,3636.773329257965,9080.651587486269 +Lion (PyTorch),717.2312772274017,410.3829169273377,20603.51038718224,inf,inf,inf,28972.046739816666,5419.439529418945,8410.401287317276 +Muon (JAX),1079.9141855239868,326.65109968185425,18022.910578489304,inf,59172.92804956436,inf,inf,1375.1697556972504,inf +Muon (PyTorch),392.43705701828,421.49709916114807,12903.770976543428,inf,inf,inf,inf,1830.406593322754,3941.83190703392 +NAdamW (JAX),364.45390701293945,369.9422628879547,23162.559694767,41969.839732170105,59165.54475545883,inf,inf,4087.9961693286896,11648.653273820875 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,18018.74986338616,41972.82826924324,66880.57304668427,inf,inf,2731.6373760700226,8431.286786317825 +NAdamW (Tuned for ResNet) (JAX),366.75317430496216,710.2628664970398,20592.04149007797,41972.83446621895,84875.12085962296,inf,inf,4992.225074529648,11004.365580558777 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,57574.19751262665,30358.114854812626,2738.123290538788,3905.406741142273 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,10304.23870229721,inf,36050.6091632843,inf,inf,3638.152243614197,3923.215074539185 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,12875.642571926115,16021.15643143654,36053.36723423004,inf,inf,3186.941942691803,3921.279017686844 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,38586.41467094421,inf,inf,45378.7729613781,30359.1022708416,4075.018378019333,2621.975442647934 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,25742.808414697647,41975.59837651253,inf,inf,inf,4090.009508609772,12302.170767068865 +Single Worker DiLoCo v2 (JAX),1100.0680918693542,808.2217423915863,25742.234058380127,inf,inf,inf,inf,inf,12947.029633522034 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_06pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_06pct.csv new file mode 100644 index 00000000..20ff456b --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_06pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,18025.89689064026,inf,inf,45404.351519584656,27508.806652784348,4525.246675014496,10328.929268598557 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,39984.72321939469,66889.68683934212,inf,inf,3186.577626466751,7148.685655832291 +Lion (PyTorch),361.4228310585022,410.3829169273377,20603.51038718224,inf,inf,inf,27526.838836431503,4978.338572740555,6472.549487352371 +Muon (JAX),723.6945340633392,326.65109968185425,18022.910578489304,71915.69072246552,56604.78502726555,inf,inf,924.1200001239775,inf +Muon (PyTorch),392.43705701828,312.07030296325684,12903.770976543428,inf,inf,inf,inf,1830.406593322754,3300.607357740402 +NAdamW (JAX),364.45390701293945,369.9422628879547,23162.559694767,39973.87573385239,54033.101101875305,inf,inf,2732.1139879226685,10360.19233417511 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,18018.74986338616,39974.50588822365,64310.03722715378,inf,inf,2730.5407695770264,6493.84299826622 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,489.8137288093567,20592.04149007797,39976.79217839241,82304.7795317173,inf,inf,4990.766042947769,10360.375561952593 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,52343.64110636711,28925.36391019821,2738.123290538788,3263.4201543331146 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,10304.113168478012,inf,33479.49386525154,inf,inf,3186.170065879822,3279.173264503479 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,12875.642571926115,12029.003738880156,33480.38418722153,inf,inf,3185.798768758774,3277.2183649539948 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,36017.3879005909,inf,inf,43633.814541339874,28915.144095897675,3623.7950456142426,1979.972177028656 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,25742.808414697647,39981.79184317589,82309.48162007332,inf,inf,3635.7450466156006,10369.291561603546 +Single Worker DiLoCo v2 (JAX),1082.9081106185913,586.0452802181244,25742.234058380127,55957.8622610569,inf,inf,inf,5895.114526987076,11658.310941696169 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_07pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_07pct.csv new file mode 100644 index 00000000..ca456af6 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_07pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,15457.322835206984,inf,inf,45404.351519584656,26063.039082288746,4525.246675014496,9063.03153014183 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,37988.38201355934,64319.46340799332,inf,inf,3186.577626466751,5860.76810503006 +Lion (PyTorch),361.4228310585022,300.31669664382935,20603.51038718224,inf,inf,inf,27526.838836431503,4968.353792667389,5199.279918193817 +Muon (JAX),723.6945340633392,326.65109968185425,15451.75988817215,61949.802631378174,54036.537271499634,inf,inf,924.1200001239775,11653.207075357435 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,inf,inf,1397.140058517456,3287.6150810718536 +NAdamW (JAX),364.45390701293945,258.60642552375793,23162.559694767,37977.79692840576,54028.59884238243,inf,inf,2732.1139879226685,9072.71881723404 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,18018.31699323654,35985.533590078354,61741.13226246834,inf,inf,2279.5015227794647,5211.422335386276 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,379.6383473873138,20592.04149007797,37980.72120118141,79734.54767680168,inf,inf,4088.235252857208,10360.375561952593 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,52343.64110636711,27481.28768014908,2722.2943484783173,2621.505687713623 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,30908.38264489174,inf,inf,2734.744701385498,2635.1603307724 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10309.158726215364,10033.056078910828,30909.166823625565,inf,inf,2734.904228210449,2633.222596645355 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,33448.581278800964,inf,inf,41889.504074811935,28915.144095897675,3618.473046541214,1979.972177028656 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,25742.808414697647,39981.79184317589,77171.15967273712,inf,inf,3635.7450466156006,9079.91085410118 +Single Worker DiLoCo v2 (JAX),1081.8668220043182,476.0441641807556,25742.234058380127,53960.84433245659,inf,inf,inf,5895.114526987076,9723.760488510132 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_08pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_08pct.csv new file mode 100644 index 00000000..59dff465 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_08pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,15457.322835206984,inf,inf,43658.91495251656,26063.039082288746,4074.176634788513,9044.131472110748 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,33997.07320523262,61749.41730427742,inf,inf,3186.577626466751,5216.774678945541 +Lion (PyTorch),361.4228310585022,300.31669664382935,20595.98904967308,inf,inf,inf,26081.413096904755,4968.353792667389,4557.130557060242 +Muon (JAX),723.6945340633392,326.65109968185425,15451.75988817215,39992.98837065697,51469.29406666756,inf,inf,924.1200001239775,11009.2447681427 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,52374.13884854317,inf,1382.2988984584808,2658.6289060115814 +NAdamW (JAX),364.45390701293945,258.60642552375793,23162.559694767,35981.77383327484,51460.40239882469,inf,inf,2732.1139879226685,8428.68996310234 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,15450.604312419891,33989.52869224548,56604.14564371109,inf,inf,2279.5015227794647,4567.41791677475 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,379.6383473873138,20590.78639769554,35984.64814186096,77164.51755309105,inf,inf,4088.235252857208,8427.335958003998 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,50599.53104233742,27469.76524972916,2713.5714564323425,2621.505687713623 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,28337.487322092056,inf,inf,2734.744701385498,2635.1603307724 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10309.158726215364,8037.608729124069,28338.156165361404,inf,inf,2734.904228210449,2633.222596645355 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,30862.526978731155,inf,inf,41889.504074811935,26041.40856337548,3167.314347505569,1979.972177028656 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,25742.808414697647,39969.32945632935,77171.15967273712,inf,inf,2734.06391954422,7147.821045637131 +Single Worker DiLoCo v2 (JAX),724.1122615337372,364.0293734073639,25742.234058380127,53960.84433245659,inf,inf,inf,4993.784583806992,8434.868093013763 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_09pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_09pct.csv new file mode 100644 index 00000000..d76f1f11 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_09pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,15457.322835206984,inf,inf,43658.91495251656,26063.039082288746,3625.771859884262,6474.833534240723 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,32000.98227930069,59178.940668821335,inf,inf,3184.770050764084,4571.820614337921 +Lion (PyTorch),361.4228310585022,300.31669664382935,18035.00035214424,inf,inf,inf,26071.782301664352,4517.316638946533,3904.209080696106 +Muon (JAX),723.3577916622162,326.65109968185425,15451.75988817215,33987.061225652695,48901.21842837334,inf,inf,924.1200001239775,8435.542397499084 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,48887.10342168808,inf,1382.2988984584808,2657.6567182540894 +NAdamW (JAX),364.45390701293945,258.60642552375793,23162.559694767,33994.031225442886,48896.97841477394,inf,inf,2732.1139879226685,7784.669058084488 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,15447.401123523712,31992.592839717865,56604.14564371109,inf,inf,2279.5015227794647,3923.3995735645294 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,33988.63400006294,77164.51755309105,inf,inf,4088.235252857208,7144.147229909897 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,48856.32834744453,24582.01651263237,2286.992827653885,1979.4675829410555 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,25766.614211559296,inf,inf,2734.744701385498,1991.132454156876 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10309.158726215364,8037.070692062378,25767.194996118546,inf,inf,2731.69059753418,1989.267727136612 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,30862.526978731155,inf,inf,40145.10081958771,24598.21104478836,3167.314347505569,1979.972177028656 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,35987.07119560242,72030.41739201546,inf,inf,2734.06391954422,6501.953496456146 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,25742.234058380127,51961.5379896164,inf,inf,inf,4991.007339000702,7146.151785612106 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_10pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_10pct.csv new file mode 100644 index 00000000..5b2eb204 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_10pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,15457.322835206984,inf,inf,43658.91495251656,26063.039082288746,3174.74405002594,5840.327011346817 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,23168.0211634636,32000.296038150787,56606.98682546616,inf,inf,2732.8001494407654,3926.254322290421 +Lion (PyTorch),361.4228310585022,300.31669664382935,18035.00035214424,inf,inf,inf,24636.35734152794,4517.316638946533,3262.1127166748047 +Muon (JAX),723.3577916622162,326.65109968185425,15451.75988817215,29994.89134001732,46332.84938240051,inf,inf,924.1200001239775,6501.06218123436 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,47141.10578966141,inf,1382.2988984584808,2015.6150116920471 +NAdamW (JAX),364.45390701293945,258.60642552375793,23162.559694767,33985.66186928749,48891.31209659576,inf,inf,2732.1139879226685,6496.752861738205 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,15447.401123523712,31990.46945381165,54035.496212005615,inf,inf,2279.5015227794647,2635.5035140514374 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,31992.620273828503,74594.47512865067,inf,inf,3636.301753282547,6500.179566860199 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,47112.69826483727,23138.350909233093,2271.1033079624176,1979.4675829410555 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,25766.614211559296,inf,inf,2734.1813151836395,1991.132454156876 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10309.158726215364,8037.070692062378,25761.258350372314,inf,inf,2282.922813653946,1989.267727136612 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,28293.974551200867,inf,inf,40145.10081958771,23153.38919401169,2716.290271043777,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,33990.85886669159,69462.02342700958,inf,inf,2731.772287845612,4566.361578464508 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,25742.234058380127,45974.51286125183,inf,inf,inf,4541.807559251785,6502.31082034111 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_11pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_11pct.csv new file mode 100644 index 00000000..4a14fa92 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_11pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,15457.322835206984,inf,inf,43658.91495251656,24636.13781666756,3171.8695437908173,3913.587485551834 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,20596.95786190033,30004.25766515732,54041.22191572189,inf,inf,2283.153999567032,2639.9161829948425 +Lion (PyTorch),361.4228310585022,300.31669664382935,18035.00035214424,inf,inf,inf,24626.56887698173,4066.246910810471,2630.479721069336 +Muon (JAX),367.3413143157959,326.65109968185425,12880.584438800812,26019.81590628624,43764.84170651436,inf,inf,924.1200001239775,5859.486621856689 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,45397.92845630646,inf,1382.2988984584808,2015.6150116920471 +NAdamW (JAX),364.45390701293945,258.60642552375793,23162.559694767,31989.620451927185,46322.53403759003,inf,inf,2280.0444753170013,6496.326718568802 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,15447.401123523712,28000.71396493912,48901.21438694,inf,inf,2278.5856997966766,2635.5035140514374 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,29996.69506454468,74594.47512865067,inf,inf,3636.301753282547,6495.468696594238 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,47112.69826483727,23138.350909233093,2271.1033079624176,1979.4675829410555 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,23195.29740691185,inf,inf,2282.664251804352,1991.132454156876 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10304.696884393692,6041.208413362503,23196.1972835064,inf,inf,2282.922813653946,1989.267727136612 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,25728.584080696102,inf,inf,38401.83455562592,21708.947831869125,2716.290271043777,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,31994.68541121483,66891.84046077728,inf,inf,2731.772287845612,3281.007829427719 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,35993.03426885605,inf,inf,inf,4541.807559251785,5213.589239597321 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_12pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_12pct.csv new file mode 100644 index 00000000..cfe66fc8 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_12pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,15457.322835206984,inf,inf,41913.79961395264,24617.78159236908,2723.497850179672,3284.1917521953583 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,20596.95786190033,26012.923664093018,51472.95015621185,inf,inf,2282.559859275818,1995.941637992859 +Lion (PyTorch),361.4228310585022,300.31669664382935,18035.00035214424,inf,inf,inf,24609.060659885406,3625.192697763443,2630.479721069336 +Muon (JAX),367.3413143157959,326.65109968185425,12880.584438800812,22027.78568172455,41193.85737276077,inf,inf,924.1200001239775,4569.058828830719 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,43652.8343565464,28934.32774949073,1382.2988984584808,2015.6150116920471 +NAdamW (JAX),364.45390701293945,258.60642552375793,20593.26862835884,29993.64087820053,43754.44093418121,inf,inf,2280.0444753170013,5207.200619697571 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,15447.369599819183,26005.92664813996,48899.961000204086,inf,inf,1827.4183478355408,2635.5035140514374 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,28000.618613243103,69453.8258318901,inf,inf,3185.389578104019,4563.616898536682 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,45367.673850774765,21693.94476556778,2271.1033079624176,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,23195.29740691185,inf,inf,2282.664251804352,1991.132454156876 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,6041.208413362503,23190.229952573776,inf,inf,2281.6761133670807,1989.267727136612 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,25725.401896953583,inf,inf,38401.83455562592,21708.947831869125,2716.290271043777,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,31984.57522726059,66891.84046077728,inf,inf,2281.920562505722,3281.007829427719 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,35993.03426885605,79733.21840977669,inf,inf,4538.6012127399445,3925.9537382125854 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_13pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_13pct.csv new file mode 100644 index 00000000..e1588924 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_13pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,12888.66524362564,inf,inf,41913.79961395264,24617.78159236908,2723.497850179672,2629.1733162403107 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,20596.95786190033,24016.828218460083,48900.70434856415,inf,inf,2282.559859275818,1995.941637992859 +Lion (PyTorch),361.4228310585022,300.31669664382935,18035.00035214424,inf,inf,inf,23191.02020430565,3625.192697763443,1988.2335124015808 +Muon (JAX),367.3413143157959,326.65109968185425,12880.584438800812,18036.51977968216,38624.79778957367,inf,inf,924.1200001239775,4568.167285680771 +Muon (PyTorch),392.43705701828,312.07030296325684,10336.016378164291,inf,inf,43652.8343565464,28934.32774949073,1382.2988984584808,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,28006.16886329651,41186.81677174568,inf,inf,2280.0444753170013,4564.282576084137 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,12879.35993862152,26005.92664813996,46330.224033117294,inf,inf,1827.4183478355408,1991.903594255448 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,26004.743294000626,69453.8258318901,inf,inf,3184.334586381912,3924.379744529724 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,41880.15250754357,21693.94476556778,1835.857743024826,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,20624.349823713303,inf,55139.79888033867,2282.664251804352,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,6041.208413362503,20624.90352892876,inf,inf,2281.6761133670807,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,25725.401896953583,73961.89125466347,inf,36657.282760858536,20264.60364079476,2716.290271043777,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,31984.57522726059,61751.39870190621,inf,inf,2281.920562505722,1992.292850732804 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,25999.418875694275,77162.83694291115,inf,inf,4086.959207296372,3924.7618927955614 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_14pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_14pct.csv new file mode 100644 index 00000000..e263d471 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_14pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,12888.66524362564,inf,inf,41913.79961395264,24617.78159236908,2723.497850179672,1986.9908213615413 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,20596.95786190033,20025.016850471497,46335.11635041237,inf,inf,2282.559859275818,1995.941637992859 +Lion (PyTorch),361.4228310585022,300.31669664382935,18035.00035214424,inf,inf,inf,23191.02020430565,3625.192697763443,1988.2335124015808 +Muon (JAX),367.3413143157959,326.65109968185425,12880.584438800812,16039.856321811676,36053.81885433197,inf,inf,924.1200001239775,3283.366508960724 +Muon (PyTorch),392.43705701828,312.07030296325684,10335.853271007538,inf,inf,43652.8343565464,27516.69996881485,1379.332411289215,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,26010.214369297028,38617.99101042748,inf,inf,2280.0444753170013,3920.866428375244 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,12879.35993862152,22010.503659963608,43759.1655421257,inf,inf,1827.4183478355408,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,24008.740559101105,66885.15141749382,inf,inf,3184.334586381912,2636.43443441391 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,38390.65752458573,20250.36719083786,1835.857743024826,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.05108499527,inf,20624.349823713303,inf,53683.54289865494,2282.664251804352,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,4045.282567501068,20624.90352892876,inf,inf,2281.6761133670807,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,25725.401896953583,48042.95421028137,inf,36657.282760858536,18819.814143896103,2716.290271043777,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,29988.30949139595,59183.160745859146,inf,inf,2279.780133962631,1989.8410077095032 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,25999.418875694275,74592.16693401337,inf,inf,3637.722634553909,3280.4179005622864 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_15pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_15pct.csv new file mode 100644 index 00000000..7977563f --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_15pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,12888.66524362564,inf,inf,41913.79961395264,23171.81398487091,2720.843776226044,1986.9908213615413 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,20596.95786190033,18027.98590278625,46335.11635041237,inf,inf,2282.559859275818,1995.941637992859 +Lion (PyTorch),361.4228310585022,300.31669664382935,15470.837062835692,inf,inf,inf,23161.96718645096,3174.0471365451813,1988.2335124015808 +Muon (JAX),367.3413143157959,326.65109968185425,12880.584438800812,14043.732003211975,33482.81542515755,inf,inf,924.1200001239775,3280.1217908859253 +Muon (PyTorch),392.43705701828,312.07030296325684,7768.531230926514,inf,inf,41909.51981949806,27489.25124168396,1379.332411289215,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,24005.868943452835,36047.024696826935,inf,inf,1828.09228849411,3919.267996788025 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,12879.35993862152,22010.503659963608,43759.1655421257,inf,inf,1827.4183478355408,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18019.66106724739,20024.234433174133,64315.05606484413,inf,inf,3184.334586381912,2631.7060770988464 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,84876.44285774231,38390.65752458573,20250.36719083786,1835.857743024826,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.05108499527,inf,18053.36387681961,inf,50797.676842451096,2282.664251804352,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,4045.282567501068,18053.69940185547,inf,inf,2279.5567665100098,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,20590.799481630325,38021.134011268616,inf,34913.0673058033,18819.814143896103,2265.093102455139,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,29988.30949139595,56614.21372938156,inf,inf,2279.780133962631,1989.8410077095032 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,25999.418875694275,72022.05905723572,inf,inf,3634.898852348328,2637.251784324646 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_16pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_16pct.csv new file mode 100644 index 00000000..0881c78b --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_16pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,12888.66524362564,inf,inf,40168.41002392769,23171.81398487091,2720.843776226044,1986.9908213615413 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,20596.95786190033,16033.174123048782,43764.55931854248,inf,inf,2282.559859275818,1351.936791419983 +Lion (PyTorch),361.4228310585022,300.31669664382935,15466.451179265976,inf,inf,inf,23161.96718645096,3174.0471365451813,1977.860465765 +Muon (JAX),367.3413143157959,326.65109968185425,10309.576101779938,12047.624875545502,33480.60615682602,inf,inf,924.1200001239775,2636.9550335407257 +Muon (PyTorch),392.43705701828,312.07030296325684,7768.531230926514,inf,inf,40165.25501203537,27489.25124168396,946.1346333026886,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,24005.868943452835,33475.899322509766,inf,inf,1828.09228849411,3275.371021270752 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,12876.398039102554,18022.107523679733,41188.24620914459,inf,inf,1827.4183478355408,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,15449.837990522385,18028.343319892883,64315.05606484413,inf,inf,2732.2962193489075,1992.4730517864227 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,66860.67862653732,36647.36221432686,18806.66574072838,1835.857743024826,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,5162.400691509247,inf,18053.36387681961,inf,49337.30086874962,1830.682374238968,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,4045.282567501068,18053.69940185547,inf,inf,1830.8140347003937,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,20590.799481630325,30040.683351755142,inf,33168.45597934723,17375.062505483627,2265.093102455139,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,20598.386327266693,29988.30949139595,56614.21372938156,inf,inf,1829.8708913326263,1989.8410077095032 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,20023.342441082,69453.37592864037,inf,inf,3634.898852348328,2636.070397377014 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_17pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_17pct.csv new file mode 100644 index 00000000..28ab4099 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_17pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,12888.66524362564,inf,inf,40168.41002392769,23171.81398487091,2282.886972427368,1357.9658625125885 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,18025.62758755684,14037.37018609047,41195.954587221146,inf,inf,1831.0354115962984,1351.936791419983 +Lion (PyTorch),361.4228310585022,300.31669664382935,15466.451179265976,inf,inf,inf,21745.294525384903,3174.0471365451813,1346.0777959823608 +Muon (JAX),367.3413143157959,326.65109968185425,10309.576101779938,10051.523337125778,30911.94013428688,inf,inf,924.1200001239775,1995.248745918274 +Muon (PyTorch),392.43705701828,312.07030296325684,7768.531230926514,inf,inf,40165.25501203537,26045.082265377045,931.2312638759612,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,20009.806787729263,30904.97888159752,inf,inf,1828.09228849411,3275.371021270752 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,12876.15150499344,16026.05445599556,36047.438972473145,inf,inf,1827.4183478355408,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,15449.837990522385,14036.484773159027,61746.40814256668,inf,inf,2732.2962193489075,1988.5345993041992 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,66860.67862653732,34903.03261232376,17363.167905330658,1820.0903890132904,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,5162.400691509247,inf,18053.36387681961,inf,46453.551332235336,1830.5635395050049,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,4045.282567501068,18051.52136707306,inf,inf,1830.8140347003937,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,18019.889969348907,26113.26755142212,84840.85371398926,33168.45597934723,17375.062505483627,2265.093102455139,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,20598.386327266693,20017.44223642349,54045.15802001953,inf,inf,1829.797571182251,1348.012239933014 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,23170.14706325531,16030.840265512466,66882.88473367691,inf,inf,3634.898852348328,2636.070397377014 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_18pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_18pct.csv new file mode 100644 index 00000000..2d4967c2 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_18pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,12888.66524362564,inf,inf,40168.41002392769,23171.81398487091,1831.8522815704343,1344.7416751384735 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,18025.62758755684,12041.002434968948,38624.48606801033,inf,inf,1830.439449071884,1351.936791419983 +Lion (PyTorch),361.4228310585022,300.31669664382935,15466.451179265976,inf,inf,inf,21736.73503923416,3174.0471365451813,1346.0777959823608 +Muon (JAX),367.3413143157959,326.65109968185425,10309.576101779938,8055.504743814468,28340.700644254684,inf,inf,923.1322183609008,1993.004472732544 +Muon (PyTorch),392.43705701828,312.07030296325684,7768.531230926514,49956.20253562927,inf,40165.25501203537,26045.082265377045,931.2312638759612,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,20009.806787729263,30903.08280968666,inf,inf,1828.09228849411,3275.371021270752 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,12876.15150499344,14026.537544250488,36047.438972473145,inf,inf,1827.4183478355408,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,15449.837990522385,12040.370223760605,59177.81989598274,inf,inf,2732.2962193489075,1348.465673685074 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,54054.83913040161,34903.03261232376,17363.167905330658,1820.0903890132904,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,5162.400691509247,inf,15482.284232378006,inf,44996.80340027809,1830.5635395050049,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.909580230713,4045.282567501068,15482.528831005096,inf,inf,1830.8140347003937,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,18019.889969348907,24062.551146507263,69442.15977168083,31423.90184879303,15930.63134908676,2265.093102455139,1337.9253540039062 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,20598.386327266693,20017.44223642349,51476.37810730934,inf,inf,1829.797571182251,1345.5658564567566 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,20598.12127017975,16030.840265512466,64312.2251739502,inf,inf,3185.5750620365143,1992.8568646907809 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_19pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_19pct.csv new file mode 100644 index 00000000..303baad4 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_19pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,10320.136803627014,inf,inf,40168.41002392769,23171.81398487091,1831.8522815704343,1344.7416751384735 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,18025.62758755684,10044.896064281464,36053.56412434578,inf,inf,1830.439449071884,1351.936791419983 +Lion (PyTorch),361.4228310585022,300.31669664382935,15466.451179265976,inf,92620.83189415932,inf,21736.73503923416,2722.952040195465,1346.0777959823608 +Muon (JAX),367.3413143157959,326.65109968185425,10309.576101779938,6059.445655584335,28340.700644254684,inf,inf,474.36376953125,1993.004472732544 +Muon (PyTorch),392.43705701828,312.07030296325684,7768.531230926514,28103.74647927284,inf,36675.20055985451,24627.888468027115,931.2312638759612,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,20591.495814323425,14034.63393163681,25762.89148926735,inf,inf,1828.09228849411,1988.6505835056305 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,10308.267341852188,12030.560815811155,36045.9832136631,inf,inf,1375.3242769241333,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,15449.837990522385,10036.750513792038,59177.81989598274,inf,inf,2280.1949741840363,1344.564608335495 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,48923.90048289299,33158.87598538399,15919.369007825851,1820.0903890132904,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,5162.400691509247,inf,15482.284232378006,inf,42102.31699967384,1830.5635395050049,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.187179327011,4045.282567501068,15482.528831005096,inf,inf,1829.5636475086208,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,18019.889969348907,20118.47114038468,65589.65318608284,29679.2389626503,15930.63134908676,2265.093102455139,695.9262759685516 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,20598.386327266693,18011.292100429535,48906.19797182083,inf,inf,1829.797571182251,1345.5658564567566 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,20598.12127017975,16030.840265512466,61742.53918337822,inf,inf,3185.5750620365143,1991.6996412277224 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_20pct.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_20pct.csv new file mode 100644 index 00000000..18832ab8 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/relaxation_sweep/time_to_targets_20pct.csv @@ -0,0 +1,15 @@ +submission,criteo1tb,fastmri,finewebedu_lm,imagenet_resnet,imagenet_vit,librispeech_conformer,librispeech_deepspeech,ogbg,wmt +AdEMAMix (PyTorch),360.9079949855805,326.4079144001007,10320.136803627014,inf,inf,40168.41002392769,21726.365890026093,1831.8522815704343,1344.7416751384735 +Cautious NAdamW (JAX),366.27075147628784,283.9921712875366,18025.62758755684,8048.80659031868,33483.50565671921,inf,inf,1830.439449071884,1351.936791419983 +Lion (PyTorch),361.4228310585022,300.31669664382935,15466.451179265976,inf,87448.87829089165,inf,20299.85348320008,2722.952040195465,1346.0777959823608 +Muon (JAX),367.3413143157959,326.65109968185425,10309.576101779938,6059.445655584335,25769.7748336792,inf,inf,472.0722301006317,1993.004472732544 +Muon (PyTorch),392.43705701828,312.07030296325684,7768.531230926514,20146.280146837234,inf,36675.20055985451,24601.299715280533,931.2312638759612,1373.5365619659424 +NAdamW (JAX),364.45390701293945,258.60642552375793,18020.200389385223,14021.988013505936,25761.087451457977,inf,inf,1828.09228849411,1988.6505835056305 +NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,10308.267341852188,10037.083438634872,33474.88803553581,inf,inf,1375.3242769241333,1347.6121354103088 +NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,15449.837990522385,8048.570125341415,54040.61817121506,inf,inf,2280.1949741840363,1344.564608335495 +Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,43761.04453611374,33158.87598538399,15919.369007825851,1820.0903890132904,1337.4144818782806 +Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,5162.400691509247,inf,15482.284232378006,inf,40644.25076937676,1830.5635395050049,1347.1221344470978 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,7738.187179327011,4045.282567501068,15482.528831005096,inf,inf,1829.5636475086208,1345.2206625938416 +Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,15451.365812063215,16117.132305383682,52746.081909418106,29679.2389626503,15917.756404399872,1813.9982311725616,695.9262759685516 +Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,20598.386327266693,18011.292100429535,48906.19797182083,inf,inf,1829.797571182251,1345.5658564567566 +Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,20598.12127017975,16018.221548080444,59173.72057580948,inf,inf,3185.5750620365143,1991.6996412277224 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_relaxed.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_relaxed.csv index 6586f686..df9c70b5 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_relaxed.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_relaxed.csv @@ -1,15 +1,15 @@ submission,score AdEMAMix (PyTorch),0.5213243546576883 -Cautious NAdamW (JAX),0.5089786756453424 +Cautious NAdamW (JAX),0.40123456790123474 Lion (PyTorch),0.4438832772166114 -Muon (JAX),0.5521885521885517 +Muon (JAX),0.4506172839506177 Muon (PyTorch),0.5993265993265987 -NAdamW (JAX),0.4814814814814808 -NAdamW (Baseline AlgoPerf v0.5) (JAX),0.6010101010101013 -NAdamW (Tuned for ResNet) (JAX),0.4343434343434347 +NAdamW (JAX),0.37542087542087604 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.493265993265993 +NAdamW (Tuned for ResNet) (JAX),0.3265993265993262 Schedule-Free AdamW (PyTorch),0.5785634118967448 Schedule-Free AdamW (JAX),0.5561167227833891 -Schedule-Free AdamW v2 (JAX),0.5740740740740736 +Schedule-Free AdamW v2 (JAX),0.6851851851851855 Schedule-Free AdamW v2 (PyTorch),0.607182940516274 -Single Worker DiLoCo (JAX),0.42592592592592626 -Single Worker DiLoCo v2 (JAX),0.3232323232323228 +Single Worker DiLoCo (JAX),0.31986531986532013 +Single Worker DiLoCo v2 (JAX),0.23176206509539798 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_standard_vs_relaxed.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_standard_vs_relaxed.csv index 6c1c7000..f4e39ecc 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_standard_vs_relaxed.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_standard_vs_relaxed.csv @@ -1,15 +1,15 @@ submission,standard_score,relaxed_score,standard_rank,relaxed_rank,rank_shift -Schedule-Free AdamW v2 (PyTorch),0.5679012345679016,0.607182940516274,1,1,0 -NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4506172839506181,0.6010101010101013,4,2,2 +Schedule-Free AdamW v2 (JAX),0.4405162738496074,0.6851851851851855,5,1,4 +Schedule-Free AdamW v2 (PyTorch),0.5679012345679016,0.607182940516274,1,2,-1 Muon (PyTorch),0.4231200897867556,0.5993265993265987,6,3,3 Schedule-Free AdamW (PyTorch),0.466891133557801,0.5785634118967448,3,4,-1 -Schedule-Free AdamW v2 (JAX),0.4405162738496074,0.5740740740740736,5,5,0 -Schedule-Free AdamW (JAX),0.4107744107744111,0.5561167227833891,7,6,1 -Muon (JAX),0.2845117845117842,0.5521885521885517,10,7,3 -AdEMAMix (PyTorch),0.5190796857463527,0.5213243546576883,2,8,-6 -Cautious NAdamW (JAX),0.31425364758698043,0.5089786756453424,9,9,0 -NAdamW (JAX),0.384399551066217,0.4814814814814808,8,10,-2 -Lion (PyTorch),0.27833894500561146,0.4438832772166114,11,11,0 -NAdamW (Tuned for ResNet) (JAX),0.18574635241301896,0.4343434343434347,12,12,0 -Single Worker DiLoCo (JAX),0.1369248035914701,0.42592592592592626,13,13,0 -Single Worker DiLoCo v2 (JAX),0.1301907968574634,0.3232323232323228,14,14,0 +Schedule-Free AdamW (JAX),0.4107744107744111,0.5561167227833891,7,5,2 +AdEMAMix (PyTorch),0.5190796857463527,0.5213243546576883,2,6,-4 +NAdamW (Baseline AlgoPerf v0.5) (JAX),0.4506172839506181,0.493265993265993,4,7,-3 +Muon (JAX),0.2845117845117842,0.4506172839506177,10,8,2 +Lion (PyTorch),0.27833894500561146,0.4438832772166114,11,9,2 +Cautious NAdamW (JAX),0.31425364758698043,0.40123456790123474,9,10,-1 +NAdamW (JAX),0.384399551066217,0.37542087542087604,8,11,-3 +NAdamW (Tuned for ResNet) (JAX),0.18574635241301896,0.3265993265993262,12,12,0 +Single Worker DiLoCo (JAX),0.1369248035914701,0.31986531986532013,13,13,0 +Single Worker DiLoCo v2 (JAX),0.1301907968574634,0.23176206509539798,14,14,0 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/ademamix_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/ademamix_summary.csv index 52bb446e..1c327422 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/ademamix_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/ademamix_summary.csv @@ -2,26 +2,26 @@ 7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236847321358005,7839.193164110184,7839.193164110184,1.0010825763927422,10666 16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,False,0.1242111736866617,13214.635874271393,inf,1.0010825763927422,10666 24,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236501955610997,7835.540827274322,7479.550709962845,1.0010825763927422,10666 -1,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7248104441078714,1311.1073644161224,1311.1073644161224,0.9420394021221715,18094 -10,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7249505124067952,1517.7321906089785,1517.7321906089785,0.9420394021221715,18094 -19,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.724893770663337,1555.3687834739685,1555.3687834739685,0.9420394021221715,18094 -8,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,22.14082852319187,18025.636202573776,18025.636202573776,0.40403201664468946,72000 -17,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,22.23496029572029,18027.61917901039,18027.61917901039,0.40403201664468946,72000 -25,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,22.247438140097906,18025.89689064026,18025.89689064026,0.40403201664468946,72000 -0,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.60218,59997.68517279625,inf,0.6740027356507963,195999 -9,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61658,73926.78414797783,inf,0.6740027356507963,195999 -18,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61518,73948.011013031,inf,0.6740027356507963,195999 -2,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.61544,95268.04540586472,inf,0.802424341129202,167999 -11,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.61512,92620.5374662876,inf,0.802424341129202,167999 -3,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0848356104861681,54136.87689781189,54136.87689781189,0.7305170534584913,76000 -12,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0838990006276251,48894.85426735878,48894.85426735878,0.7305170534584913,76000 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7248104441078714,1311.1073644161224,1311.1073644161224,0.9420394021221715,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7249505124067952,1517.7321906089785,1517.7321906089785,0.9420394021221715,18094 +22,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.724893770663337,1555.3687834739685,1555.3687834739685,0.9420394021221715,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,22.14082852319187,18025.636202573776,18025.636202573776,0.40403201664468946,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,22.23496029572029,18027.61917901039,18027.61917901039,0.40403201664468946,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,22.247438140097906,18025.89689064026,18025.89689064026,0.40403201664468946,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.60218,59997.68517279625,inf,0.6740027356507963,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61658,73926.78414797783,inf,0.6740027356507963,195999 +23,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61518,73948.011013031,inf,0.6740027356507963,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.61544,95268.04540586472,inf,0.802424341129202,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.61512,92620.5374662876,inf,0.802424341129202,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0848356104861681,54136.87689781189,54136.87689781189,0.7305170534584913,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0838990006276251,48894.85426735878,48894.85426735878,0.7305170534584913,76000 20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0842659199536522,48888.971920251846,48888.971920251846,0.7305170534584913,76000 -5,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1200695215565104,34737.411699295044,inf,0.7884586655586601,38400 -14,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1185245980785014,28953.85911822319,28953.85911822319,0.7884586655586601,38400 -22,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1215758219475691,33312.74022984505,inf,0.7884586655586601,38400 -4,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2872654622003903,7232.420216321945,6329.966245889664,0.2304398308491926,52000 -13,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2920392515125629,8137.10068655014,6332.58651471138,0.2304398308491926,52000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1200695215565104,34737.411699295044,inf,0.7884586655586601,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1185245980785014,28953.85911822319,28953.85911822319,0.7884586655586601,38400 +25,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1215758219475691,33312.74022984505,inf,0.7884586655586601,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2872654622003903,7232.420216321945,6329.966245889664,0.2304398308491926,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2920392515125629,8137.10068655014,6332.58651471138,0.2304398308491926,52000 21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.283304967314845,5891.7984273433685,5891.7984273433685,0.2304398308491926,52000 -6,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.87605698677609,17399.639942407608,17399.639942407608,0.1538000967767499,120000 -15,wmt_pytorch,trial_1,validation/bleu,30.8491,False,30.80807424915632,19338.09857201576,inf,0.1538000967767499,120000 -23,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.867059390411267,16752.356283187866,16752.356283187866,0.1538000967767499,120000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.87605698677609,17399.639942407608,17399.639942407608,0.1538000967767499,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,False,30.80807424915632,19338.09857201576,inf,0.1538000967767499,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.867059390411267,16752.356283187866,16752.356283187866,0.1538000967767499,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/cautious_nadamw_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/cautious_nadamw_summary.csv index 76b9f3ad..2640ad99 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/cautious_nadamw_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/cautious_nadamw_summary.csv @@ -1,26 +1,26 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -7,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1256997472383533,2863.6579899787903,inf,0.9266347767470695,10666 -15,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1258371449566668,1792.0047852993011,inf,0.9266347767470695,10666 -24,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1246944847459977,9989.461620092392,inf,0.9266347767470695,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7244385315181837,1608.188658952713,1608.188658952713,0.6559752236253,18094 -9,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238933024409117,1383.1596400737762,1383.1596400737762,0.6559752236253,18094 -17,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7236819978369443,2571.815328359604,2571.815328359604,0.6559752236253,18094 -23,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.63268571712524,25738.981688261032,25738.981688261032,0.44144648333990966,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.7466,69885.5102982521,inf,0.25149491638964216,195999 -8,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74748,67896.18414497375,inf,0.25149491638964216,195999 -16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74964,61917.01934456825,inf,0.25149491638964216,195999 -6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.7506,87452.66640520096,inf,0.49596923795226744,167999 -14,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.75158,82308.66560220718,inf,0.49596923795226744,167999 +1,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1256997472383533,2863.6579899787903,inf,0.9266347767470695,10666 +9,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1258371449566668,1792.0047852993011,inf,0.9266347767470695,10666 +18,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1246944847459977,9989.461620092392,inf,0.9266347767470695,10666 +4,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7244385315181837,1608.188658952713,1608.188658952713,0.6559752236253,18094 +12,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238933024409117,1383.1596400737762,1383.1596400737762,0.6559752236253,18094 +21,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7236819978369443,2571.815328359604,2571.815328359604,0.6559752236253,18094 +17,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.63268571712524,25738.981688261032,25738.981688261032,0.44144648333990966,72000 +6,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.7466,69885.5102982521,inf,0.25149491638964216,195999 +14,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74748,67896.18414497375,inf,0.25149491638964216,195999 +23,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74964,61917.01934456825,inf,0.25149491638964216,195999 +5,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.7506,87452.66640520096,inf,0.49596923795226744,167999 +13,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.75158,82308.66560220718,inf,0.49596923795226744,167999 22,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.75034,87448.36735343933,inf,0.49596923795226744,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1421619272920388,64988.59479641914,inf,2.589838852085477,76000 -12,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1426254043354415,65012.818663835526,inf,2.589838852085477,76000 -20,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1444986240525274,64979.35094237328,inf,2.589838852085477,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.2943175783324482,10338.725378990172,inf,2.7988120351912658,38400 -13,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.2872881765075074,10334.769649744034,inf,2.7988120351912658,38400 -21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.2853473663882586,14680.395282268524,inf,2.7988120351912658,38400 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1421619272920388,64988.59479641914,inf,2.589838852085477,76000 +8,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1426254043354415,65012.818663835526,inf,2.589838852085477,76000 +16,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1444986240525274,64979.35094237328,inf,2.589838852085477,76000 +2,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.2943175783324482,10338.725378990172,inf,2.7988120351912658,38400 +10,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.2872881765075074,10334.769649744034,inf,2.7988120351912658,38400 +19,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.2853473663882586,14680.395282268524,inf,2.7988120351912658,38400 3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2845644139519467,5444.764040708542,4992.686820983887,0.1979359465075458,52000 11,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2874222775151546,5446.810508966446,4542.640103340149,0.1979359465075458,52000 -19,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2809900831846614,4995.647005558014,4995.647005558014,0.1979359465075458,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,True,30.876108999624343,12943.72738480568,12943.72738480568,0.1255462995675322,120000 -10,wmt_jax,trial_1,validation/bleu,30.8491,True,31.02074381397432,14876.415894269943,14232.458706855774,0.1255462995675322,120000 -18,wmt_jax,trial_1,validation/bleu,30.8491,True,30.91251520933702,15517.656443834305,15517.656443834305,0.1255462995675322,120000 +20,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2809900831846614,4995.647005558014,4995.647005558014,0.1979359465075458,52000 +7,wmt_jax,trial_1,validation/bleu,30.8491,True,30.876108999624343,12943.72738480568,12943.72738480568,0.1255462995675322,120000 +15,wmt_jax,trial_1,validation/bleu,30.8491,True,31.02074381397432,14876.415894269943,14232.458706855774,0.1255462995675322,120000 +24,wmt_jax,trial_1,validation/bleu,30.8491,True,30.91251520933702,15517.656443834305,15517.656443834305,0.1255462995675322,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/lion_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/lion_summary.csv index ffec1fef..2ccb772e 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/lion_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/lion_summary.csv @@ -2,27 +2,27 @@ 7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,False,0.1241905161220999,9978.416061878204,inf,0.91592558011244,10666 16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,False,0.1242616643239586,12466.455169200895,inf,0.91592558011244,10666 25,criteo1tb_pytorch,trial_1,validation/loss,0.123735,False,0.1242412303757036,12106.893656492231,inf,0.91592558011244,10666 -1,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7238031751195836,619.9493722915649,619.9493722915649,0.27376442936493867,18094 -10,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243804158826322,1421.2225756645205,1421.2225756645205,0.27376442936493867,18094 -19,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7239882383845667,1394.1750195026398,1394.1750195026398,0.27376442936493867,18094 -8,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.261897266260053,23164.569310188293,23164.569310188293,0.38839825067830164,72000 -17,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.110008038411504,23177.09142231941,23177.09142231941,0.38839825067830164,72000 -26,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.130699319951358,23172.039316177368,23172.039316177368,0.38839825067830164,72000 -0,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61338,73980.61954474449,inf,0.6743097256486612,195999 -9,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61892,67952.96683573723,inf,0.6743097256486612,195999 -18,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.62902,67951.73512744904,inf,0.6743097256486612,195999 -2,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6242,87448.87829089165,inf,0.8120775926593171,167999 -11,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.63292,95191.34969496728,inf,0.8120775926593171,167999 -20,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6418,95165.0220131874,inf,0.8120775926593171,167999 -3,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1153188818616327,57621.20974063873,inf,0.7231872968606753,76000 -12,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1507845314536764,54127.30689024925,inf,0.7231872968606753,76000 -21,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1264423309032974,57621.14528346062,inf,0.7231872968606753,76000 -5,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1247042919905373,31862.61851024628,inf,0.7694697594617248,38400 -14,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.126799594457587,31838.147053956985,inf,0.7694697594617248,38400 -23,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1238063052189446,31852.81674218177,inf,0.7694697594617248,38400 -4,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2857323411413317,7223.987207174301,7223.987207174301,0.21286914966307793,52000 -13,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2812007204404579,6782.790376663208,6782.790376663208,0.21286914966307793,52000 -22,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.283014990979593,8582.123725652695,8582.123725652695,0.21286914966307793,52000 -6,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.948023339872734,15475.552730083466,15475.552730083466,0.1413890021270408,120000 -15,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.87531810470684,17401.493114233017,15474.955520391464,0.1413890021270408,120000 -24,wmt_pytorch,trial_1,validation/bleu,30.8491,False,30.76188896433939,17388.50763297081,inf,0.1413890021270408,120000 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7238031751195836,619.9493722915649,619.9493722915649,0.27376442936493867,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243804158826322,1421.2225756645205,1421.2225756645205,0.27376442936493867,18094 +23,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7239882383845667,1394.1750195026398,1394.1750195026398,0.27376442936493867,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.261897266260053,23164.569310188293,23164.569310188293,0.38839825067830164,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.110008038411504,23177.09142231941,23177.09142231941,0.38839825067830164,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.130699319951358,23172.039316177368,23172.039316177368,0.38839825067830164,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61338,73980.61954474449,inf,0.6743097256486612,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.61892,67952.96683573723,inf,0.6743097256486612,195999 +24,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.62902,67951.73512744904,inf,0.6743097256486612,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6242,87448.87829089165,inf,0.8120775926593171,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.63292,95191.34969496728,inf,0.8120775926593171,167999 +22,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6418,95165.0220131874,inf,0.8120775926593171,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1153188818616327,57621.20974063873,inf,0.7231872968606753,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1507845314536764,54127.30689024925,inf,0.7231872968606753,76000 +20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1264423309032974,57621.14528346062,inf,0.7231872968606753,76000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1247042919905373,31862.61851024628,inf,0.7694697594617248,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.126799594457587,31838.147053956985,inf,0.7694697594617248,38400 +26,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1238063052189446,31852.81674218177,inf,0.7694697594617248,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2857323411413317,7223.987207174301,7223.987207174301,0.21286914966307793,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2812007204404579,6782.790376663208,6782.790376663208,0.21286914966307793,52000 +21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.283014990979593,8582.123725652695,8582.123725652695,0.21286914966307793,52000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.948023339872734,15475.552730083466,15475.552730083466,0.1413890021270408,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.87531810470684,17401.493114233017,15474.955520391464,0.1413890021270408,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,False,30.76188896433939,17388.50763297081,inf,0.1413890021270408,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_summary.csv index 63bd0a58..1ab06d0f 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_summary.csv @@ -1,28 +1,28 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1245190224490917,13217.0788064003,inf,1.80744596371582,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1246482386019362,12154.283058166504,inf,1.80744596371582,10666 -26,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1245746128447548,13221.646473169329,inf,1.80744596371582,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239323209763646,1145.923245429993,1145.923245429993,0.15300968625117742,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238764035681626,2594.490219116211,2594.490219116211,0.15300968625117742,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7247154394696117,1869.765276670456,1869.765276670456,0.15300968625117742,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.808373188667463,20594.037749767303,20594.037749767303,0.504613462023225,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.85239511139204,20594.19531917572,20594.19531917572,0.504613462023225,72000 -25,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.82093364841247,20593.710190296173,20593.710190296173,0.504613462023225,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73021996,73908.46513557434,inf,0.34063982264727855,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73056,53931.644364357,inf,0.34063982264727855,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.71808,65941.6421945095,inf,0.34063982264727855,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1245190224490917,13217.0788064003,inf,1.80744596371582,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1246482386019362,12154.283058166504,inf,1.80744596371582,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1245746128447548,13221.646473169329,inf,1.80744596371582,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239323209763646,1145.923245429993,1145.923245429993,0.15300968625117742,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238764035681626,2594.490219116211,2594.490219116211,0.15300968625117742,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7247154394696117,1869.765276670456,1869.765276670456,0.15300968625117742,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.808373188667463,20594.037749767303,20594.037749767303,0.504613462023225,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.85239511139204,20594.19531917572,20594.19531917572,0.504613462023225,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.82093364841247,20593.710190296173,20593.710190296173,0.504613462023225,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73021996,73908.46513557434,inf,0.34063982264727855,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73056,53931.644364357,inf,0.34063982264727855,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.71808,65941.6421945095,inf,0.34063982264727855,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77518,77162.91657114029,77162.91657114029,0.5145936103030498,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.75193995,95183.25943279266,inf,0.5145936103030498,167999 24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77476,74592.82279109955,74592.82279109955,0.5145936103030498,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1673441799835852,64973.90770673752,inf,2.486110555855915,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1665524067011055,64973.39529895783,inf,2.486110555855915,76000 -22,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1644281369188432,64948.560970783234,inf,2.486110555855915,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.174721189591078,55211.92119574547,inf,2.709749883580429,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1775792980253946,55245.24317121506,inf,2.709749883580429,38400 -23,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1763819823299377,53775.95950937271,inf,2.709749883580429,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.279643299276242,1828.2280414104464,inf,0.19192375124386668,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2754040150725418,1378.5888230800629,inf,0.19192375124386668,52000 -21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2761794983317486,1827.266467809677,inf,0.19192375124386668,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,28.997438769958425,12296.452765226364,inf,0.173934285073483,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,False,28.65403612242089,11011.619378566742,inf,0.173934285073483,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,False,28.777579127157672,12941.239448785782,inf,0.173934285073483,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1673441799835852,64973.90770673752,inf,2.486110555855915,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1665524067011055,64973.39529895783,inf,2.486110555855915,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1644281369188432,64948.560970783234,inf,2.486110555855915,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.174721189591078,55211.92119574547,inf,2.709749883580429,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1775792980253946,55245.24317121506,inf,2.709749883580429,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1763819823299377,53775.95950937271,inf,2.709749883580429,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.279643299276242,1828.2280414104464,inf,0.19192375124386668,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2754040150725418,1378.5888230800629,inf,0.19192375124386668,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2761794983317486,1827.266467809677,inf,0.19192375124386668,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,28.997438769958425,12296.452765226364,inf,0.173934285073483,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,28.65403612242089,11011.619378566742,inf,0.173934285073483,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,False,28.777579127157672,12941.239448785782,inf,0.173934285073483,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_torch_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_torch_summary.csv index f17f86c1..8958a4f6 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_torch_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/muon_torch_summary.csv @@ -2,27 +2,27 @@ 7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236454748378366,6087.019835233688,6087.019835233688,1.18504582454593,10666 16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.123726612990728,12517.356907844543,12517.356907844543,1.18504582454593,10666 25,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236812508354591,7497.393135547638,7141.604691028595,1.18504582454593,10666 -1,fastmri_pytorch,trial_1,validation/ssim,0.723653,False,0.7231757872951252,2142.100114107132,inf,0.3866886620807985,18094 -10,fastmri_pytorch,trial_1,validation/ssim,0.723653,False,0.7233615375061551,1624.206672668457,inf,0.3866886620807985,18094 -19,fastmri_pytorch,trial_1,validation/ssim,0.723653,False,0.7231143056239449,1617.665590763092,inf,0.3866886620807985,18094 -8,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.744761208603,15471.447128295898,15471.447128295898,0.39309072483558477,72000 -17,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.75125219421063,15471.922557115557,15471.922557115557,0.39309072483558477,72000 -26,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.584650980529226,15476.685742616652,15476.685742616652,0.39309072483558477,72000 -0,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.64264,73922.64334130287,inf,0.6849873571941311,195999 -9,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.64258,65897.92681455612,inf,0.6849873571941311,195999 -18,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.63724,69833.61887001991,inf,0.6849873571941311,195999 -2,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.60662,92532.04569506644,inf,0.8496337869111144,167999 -11,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.59968,95203.29775571825,inf,0.8496337869111144,167999 -20,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.59224,77203.51195073128,inf,0.8496337869111144,167999 -3,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0921064066045478,52374.13884854317,inf,0.7507184025867658,76000 -12,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.093863757060783,52373.02536725998,inf,0.7507184025867658,76000 -21,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0908318447351904,50630.20197486877,inf,0.7507184025867658,76000 -5,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1670545068314585,30413.91596698761,inf,0.789905564129319,38400 -14,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1314826437503017,30405.68972826004,inf,0.789905564129319,38400 -23,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1342635060107179,28934.32774949073,inf,0.789905564129319,38400 -4,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.282273613537902,1833.473667144776,1833.473667144776,0.2350472339184847,52000 -13,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2846925562359295,1848.3308384418488,1848.3308384418488,0.2350472339184847,52000 -22,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2937916287114694,2281.462235212326,1830.406593322754,0.2350472339184847,52000 -6,wmt_pytorch,trial_1,validation/bleu,30.8491,False,30.691327352494376,17533.78046321869,inf,0.14536654309265207,120000 -15,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.897467563003804,14200.647830486298,14200.647830486298,0.14536654309265207,120000 -24,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.89810474410816,14214.779582500458,14214.779582500458,0.14536654309265207,120000 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,False,0.7231757872951252,2142.100114107132,inf,0.3866886620807985,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,False,0.7233615375061551,1624.206672668457,inf,0.3866886620807985,18094 +23,fastmri_pytorch,trial_1,validation/ssim,0.723653,False,0.7231143056239449,1617.665590763092,inf,0.3866886620807985,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.744761208603,15471.447128295898,15471.447128295898,0.39309072483558477,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.75125219421063,15471.922557115557,15471.922557115557,0.39309072483558477,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,True,21.584650980529226,15476.685742616652,15476.685742616652,0.39309072483558477,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.64264,73922.64334130287,inf,0.6849873571941311,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.64258,65897.92681455612,inf,0.6849873571941311,195999 +24,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.63724,69833.61887001991,inf,0.6849873571941311,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.60662,92532.04569506644,inf,0.8496337869111144,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.59968,95203.29775571825,inf,0.8496337869111144,167999 +22,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.59224,77203.51195073128,inf,0.8496337869111144,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0921064066045478,52374.13884854317,inf,0.7507184025867658,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.093863757060783,52373.02536725998,inf,0.7507184025867658,76000 +20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0908318447351904,50630.20197486877,inf,0.7507184025867658,76000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1670545068314585,30413.91596698761,inf,0.789905564129319,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1314826437503017,30405.68972826004,inf,0.789905564129319,38400 +26,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,False,0.1342635060107179,28934.32774949073,inf,0.789905564129319,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.282273613537902,1833.473667144776,1833.473667144776,0.2350472339184847,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2846925562359295,1848.3308384418488,1848.3308384418488,0.2350472339184847,52000 +21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2937916287114694,2281.462235212326,1830.406593322754,0.2350472339184847,52000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,False,30.691327352494376,17533.78046321869,inf,0.14536654309265207,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.897467563003804,14200.647830486298,14200.647830486298,0.14536654309265207,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.89810474410816,14214.779582500458,14214.779582500458,0.14536654309265207,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_baselinev05_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_baselinev05_summary.csv index d786cf0b..a9c14875 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_baselinev05_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_baselinev05_summary.csv @@ -1,28 +1,28 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236356907515324,7854.423001766205,7854.423001766205,0.900927458493366,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236637634250791,8206.103132247925,8206.103132247925,0.900927458493366,10666 -26,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236501173016314,8568.097370386124,8568.097370386124,0.900927458493366,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238203487707513,1615.2845153808594,1615.2845153808594,0.3907451132582269,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7247785698113042,2271.625893354416,2271.625893354416,0.3907451132582269,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7241842240916925,1620.5153810977936,1620.5153810977936,0.3907451132582269,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.796921650781453,20589.321794748303,20589.321794748303,0.4369074667928172,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.228251216355208,20593.007669210438,20593.007669210438,0.4369074667928172,72000 -25,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.457129478766408,20589.912857055664,20589.912857055664,0.4369074667928172,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74972,59916.65886712074,inf,0.25078913028372907,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75031996,59922.17208194733,inf,0.25078913028372907,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74909997,61908.166714668274,inf,0.25078913028372907,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236356907515324,7854.423001766205,7854.423001766205,0.900927458493366,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236637634250791,8206.103132247925,8206.103132247925,0.900927458493366,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236501173016314,8568.097370386124,8568.097370386124,0.900927458493366,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238203487707513,1615.2845153808594,1615.2845153808594,0.3907451132582269,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7247785698113042,2271.625893354416,2271.625893354416,0.3907451132582269,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7241842240916925,1620.5153810977936,1620.5153810977936,0.3907451132582269,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.796921650781453,20589.321794748303,20589.321794748303,0.4369074667928172,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.228251216355208,20593.007669210438,20593.007669210438,0.4369074667928172,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.457129478766408,20589.912857055664,20589.912857055664,0.4369074667928172,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74972,59916.65886712074,inf,0.25078913028372907,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75031996,59922.17208194733,inf,0.25078913028372907,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.74909997,61908.166714668274,inf,0.25078913028372907,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.74781996,77159.16147780418,inf,0.465805622122026,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.74799997,74587.84833478928,inf,0.465805622122026,167999 24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.74992,79731.53126645088,inf,0.465805622122026,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1414184328682469,64979.31014919281,inf,2.5370693297275118,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1456186935740839,64975.10295176506,inf,2.5370693297275118,76000 -22,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1461787283348621,61490.05108809471,inf,2.5370693297275118,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1594457587022642,53800.03012371063,inf,2.7372216326849665,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1626514749191329,55243.57709980011,inf,2.7372216326849665,38400 -23,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1540578380727079,55276.91480922699,inf,2.7372216326849665,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2813744785227667,3634.618623733521,3634.618623733521,0.1910767921026944,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2853125566948717,4089.775626659393,4089.775626659393,0.1910767921026944,52000 -21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2887430901808062,4991.965915679932,4991.965915679932,0.1910767921026944,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,30.658883813091023,14227.413651227953,inf,0.12590835478998,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,True,30.863299473481064,12939.180624485016,12939.180624485016,0.12590835478998,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,True,30.9476160953902,14865.7885992527,14865.7885992527,0.12590835478998,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1414184328682469,64979.31014919281,inf,2.5370693297275118,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1456186935740839,64975.10295176506,inf,2.5370693297275118,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1461787283348621,61490.05108809471,inf,2.5370693297275118,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1594457587022642,53800.03012371063,inf,2.7372216326849665,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1626514749191329,55243.57709980011,inf,2.7372216326849665,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1540578380727079,55276.91480922699,inf,2.7372216326849665,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2813744785227667,3634.618623733521,3634.618623733521,0.1910767921026944,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2853125566948717,4089.775626659393,4089.775626659393,0.1910767921026944,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2887430901808062,4991.965915679932,4991.965915679932,0.1910767921026944,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,30.658883813091023,14227.413651227953,inf,0.12590835478998,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,True,30.863299473481064,12939.180624485016,12939.180624485016,0.12590835478998,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,True,30.9476160953902,14865.7885992527,14865.7885992527,0.12590835478998,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_resnet_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_resnet_summary.csv index da854a78..e75d1828 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_resnet_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_resnet_summary.csv @@ -1,28 +1,28 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1242694401308509,12867.50927901268,inf,1.550644798382469,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.124093955634715,12860.401985406876,inf,1.550644798382469,10666 -26,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1239534508040601,9635.864085197449,inf,1.550644798382469,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239255202105023,1920.545307636261,1920.545307636261,0.10992968284881317,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7236956680632738,1035.743106365204,1035.743106365204,0.10992968284881317,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7242662454496693,2579.977390766144,2579.977390766144,0.10992968284881317,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,20.93162548018871,23164.03602838516,23164.03602838516,0.43626168098213475,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.17004626898918,23163.02198767662,23163.02198767662,0.43626168098213475,72000 -25,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.151323902362865,23162.07039999962,23162.07039999962,0.43626168098213475,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75211996,65897.27553248405,inf,0.3472091664416975,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73622,73915.94854426384,inf,0.3472091664416975,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.7528,71884.30445122719,inf,0.3472091664416975,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1242694401308509,12867.50927901268,inf,1.550644798382469,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.124093955634715,12860.401985406876,inf,1.550644798382469,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1239534508040601,9635.864085197449,inf,1.550644798382469,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239255202105023,1920.545307636261,1920.545307636261,0.10992968284881317,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7236956680632738,1035.743106365204,1035.743106365204,0.10992968284881317,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7242662454496693,2579.977390766144,2579.977390766144,0.10992968284881317,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,20.93162548018871,23164.03602838516,23164.03602838516,0.43626168098213475,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.17004626898918,23163.02198767662,23163.02198767662,0.43626168098213475,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.151323902362865,23162.07039999962,23162.07039999962,0.43626168098213475,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75211996,65897.27553248405,inf,0.3472091664416975,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73622,73915.94854426384,inf,0.3472091664416975,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.7528,71884.30445122719,inf,0.3472091664416975,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.74579996,95155.82486248016,inf,0.5355774306471934,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.56424,95249.69734692574,inf,0.5355774306471934,167999 24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.74872,84874.52632522583,inf,0.5355774306471934,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.4221310288224786,64933.15110611916,inf,2.2596808752887014,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.4616327910008207,64948.66587519646,inf,2.2596808752887014,76000 -22,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.4679959445758702,64947.58217930794,inf,2.2596808752887014,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1568869791918119,55250.44359540939,inf,2.301104343183848,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1707430116352049,55216.43422389031,inf,2.301104343183848,38400 -23,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1596099068218027,55259.41744112968,inf,2.301104343183848,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2846638875587433,6349.506216049194,6349.506216049194,0.1920906659445254,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2875478149042345,6800.483803510666,6800.483803510666,0.1920906659445254,52000 -21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2823420118969963,5894.730070829392,5894.730070829392,0.1920906659445254,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,30.751545467615685,15515.51091647148,inf,0.1251175539318001,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,False,30.456213206014148,14867.072550296783,inf,0.1251175539318001,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,False,30.6280545403418,14868.256608009338,inf,0.1251175539318001,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.4221310288224786,64933.15110611916,inf,2.2596808752887014,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.4616327910008207,64948.66587519646,inf,2.2596808752887014,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.4679959445758702,64947.58217930794,inf,2.2596808752887014,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1568869791918119,55250.44359540939,inf,2.301104343183848,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1707430116352049,55216.43422389031,inf,2.301104343183848,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1596099068218027,55259.41744112968,inf,2.301104343183848,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2846638875587433,6349.506216049194,6349.506216049194,0.1920906659445254,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2875478149042345,6800.483803510666,6800.483803510666,0.1920906659445254,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2823420118969963,5894.730070829392,5894.730070829392,0.1920906659445254,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,30.751545467615685,15515.51091647148,inf,0.1251175539318001,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,30.456213206014148,14867.072550296783,inf,0.1251175539318001,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,False,30.6280545403418,14868.256608009338,inf,0.1251175539318001,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_summary.csv index 1c88a522..81036870 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/nadamw_summary.csv @@ -1,28 +1,28 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236922431841871,6425.629549503326,6425.629549503326,0.9130992993330321,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236408078557955,8208.519079446793,7851.880496025085,0.9130992993330321,10666 -26,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236922586345227,7492.6946766376495,7492.6946766376495,0.9130992993330321,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7244943802317811,924.8731529712676,924.8731529712676,0.10824602795398142,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7240358437456036,1800.7732002735138,1800.7732002735138,0.10824602795398142,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7236940193927617,2041.2998707294464,2041.2998707294464,0.10824602795398142,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.52338881789557,23164.181562185287,23164.181562185287,0.4370215902234469,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.9808280658622,25733.847669363025,25733.847669363025,0.4370215902234469,72000 -25,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.64191985260924,25735.729759454727,25735.729759454727,0.4370215902234469,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75258,61911.16003417969,inf,0.2521924206204958,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75536,47948.21336722374,inf,0.2521924206204958,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75413996,61916.83682227135,inf,0.2521924206204958,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236922431841871,6425.629549503326,6425.629549503326,0.9130992993330321,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236408078557955,8208.519079446793,7851.880496025085,0.9130992993330321,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236922586345227,7492.6946766376495,7492.6946766376495,0.9130992993330321,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7244943802317811,924.8731529712676,924.8731529712676,0.10824602795398142,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7240358437456036,1800.7732002735138,1800.7732002735138,0.10824602795398142,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7236940193927617,2041.2998707294464,2041.2998707294464,0.10824602795398142,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.52338881789557,23164.181562185287,23164.181562185287,0.4370215902234469,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.9808280658622,25733.847669363025,25733.847669363025,0.4370215902234469,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.64191985260924,25735.729759454727,25735.729759454727,0.4370215902234469,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75258,61911.16003417969,inf,0.2521924206204958,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75536,47948.21336722374,inf,0.2521924206204958,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75413996,61916.83682227135,inf,0.2521924206204958,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77342,66879.37250804901,66879.37250804901,0.4629556156426727,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77594,74585.6678788662,74585.6678788662,0.4629556156426727,167999 24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77709997,72015.5787293911,72015.5787293911,0.4629556156426727,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1473663882585815,64933.09971880913,inf,2.4926909356311806,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1492878868343552,64943.34402728081,inf,2.4926909356311806,76000 -22,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1461207937044368,64944.95679020882,inf,2.4926909356311806,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1603727127890696,55220.70586013794,inf,2.5031315810127652,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.154337855453097,55216.42438077927,inf,2.5031315810127652,38400 -23,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1529088012359387,55258.113032102585,inf,2.5031315810127652,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2776481983560332,4085.9088344573975,inf,0.1904826010022041,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2740576238043504,4088.2416999340057,inf,0.1904826010022041,52000 -21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2746764525264623,5444.092821359634,inf,0.1904826010022041,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,29.846879082437127,12936.535746574402,inf,0.12476112412788223,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,False,30.024632086852844,12292.1887114048,inf,0.12476112412788223,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,False,29.301186266855005,14222.570494651794,inf,0.12476112412788223,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1473663882585815,64933.09971880913,inf,2.4926909356311806,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1492878868343552,64943.34402728081,inf,2.4926909356311806,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1461207937044368,64944.95679020882,inf,2.4926909356311806,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1603727127890696,55220.70586013794,inf,2.5031315810127652,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.154337855453097,55216.42438077927,inf,2.5031315810127652,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1529088012359387,55258.113032102585,inf,2.5031315810127652,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2776481983560332,4085.9088344573975,inf,0.1904826010022041,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2740576238043504,4088.2416999340057,inf,0.1904826010022041,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2746764525264623,5444.092821359634,inf,0.1904826010022041,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,29.846879082437127,12936.535746574402,inf,0.12476112412788223,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,30.024632086852844,12292.1887114048,inf,0.12476112412788223,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,False,29.301186266855005,14222.570494651794,inf,0.12476112412788223,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_summary.csv index 27ae5f56..cc86b995 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_summary.csv @@ -1,28 +1,28 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236780861794127,7853.642936706543,7140.8094828128815,1.7633445439952435,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1238261394401308,13222.375915288923,inf,1.7633445439952435,10666 -26,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1237888046626876,13213.711726427078,inf,1.7633445439952435,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237302214494232,1731.1340837478638,1731.1340837478638,1.1496743187308311,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237188181450478,2594.667304039001,2594.667304039001,1.1496743187308311,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238083272149338,2397.40203499794,2397.40203499794,1.1496743187308311,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.63105596611465,12875.024502277374,12875.024502277374,0.22480757398142498,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.74279164065674,12876.279433250427,12876.279433250427,0.22480757398142498,72000 -25,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.683878980951235,12875.283079862596,12875.283079862596,0.22480757398142498,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.32668,2046.26813864708,inf,0.25022096920710724,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.37228,12025.559068441393,inf,0.25022096920710724,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.3381,43958.733882665634,inf,0.25022096920710724,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236780861794127,7853.642936706543,7140.8094828128815,1.7633445439952435,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1238261394401308,13222.375915288923,inf,1.7633445439952435,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1237888046626876,13213.711726427078,inf,1.7633445439952435,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237302214494232,1731.1340837478638,1731.1340837478638,1.1496743187308311,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237188181450478,2594.667304039001,2594.667304039001,1.1496743187308311,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238083272149338,2397.40203499794,2397.40203499794,1.1496743187308311,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.63105596611465,12875.024502277374,12875.024502277374,0.22480757398142498,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.74279164065674,12876.279433250427,12876.279433250427,0.22480757398142498,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.683878980951235,12875.283079862596,12875.283079862596,0.22480757398142498,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.32668,2046.26813864708,inf,0.25022096920710724,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.37228,12025.559068441393,inf,0.25022096920710724,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.3381,43958.733882665634,inf,0.25022096920710724,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77448,82325.32389187813,82325.32389187813,0.522412035514241,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.75714,87510.92576980591,inf,0.522412035514241,167999 24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77344,87468.86081624031,87468.86081624031,0.522412035514241,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1549944479312509,65011.38493800163,inf,2.5689073843042243,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.5567904214744364,65011.67010974884,inf,2.5689073843042243,76000 -22,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1187177135132525,64999.67829537392,inf,2.5689073843042243,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1350263119779848,55134.126436948776,inf,1.2618603325971023,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1357311833148264,55131.02417516709,inf,1.2618603325971023,38400 -23,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1353352966735866,55139.79888033867,inf,1.2618603325971023,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2882117430802368,5446.973826885223,5446.973826885223,0.2001300537781464,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2861864452395915,5446.995653152466,5446.995653152466,0.2001300537781464,52000 -21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2842350234539836,5446.266435623169,5446.266435623169,0.2001300537781464,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,True,30.85016934441424,16161.202248096466,16161.202248096466,0.1313800575391753,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,True,30.857123789991796,21309.901624917984,21309.901624917984,0.1313800575391753,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,True,30.921054351078247,12938.92156648636,12938.92156648636,0.1313800575391753,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1549944479312509,65011.38493800163,inf,2.5689073843042243,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.5567904214744364,65011.67010974884,inf,2.5689073843042243,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1187177135132525,64999.67829537392,inf,2.5689073843042243,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1350263119779848,55134.126436948776,inf,1.2618603325971023,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1357311833148264,55131.02417516709,inf,1.2618603325971023,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1353352966735866,55139.79888033867,inf,1.2618603325971023,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2882117430802368,5446.973826885223,5446.973826885223,0.2001300537781464,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2861864452395915,5446.995653152466,5446.995653152466,0.2001300537781464,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2842350234539836,5446.266435623169,5446.266435623169,0.2001300537781464,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,True,30.85016934441424,16161.202248096466,16161.202248096466,0.1313800575391753,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,True,30.857123789991796,21309.901624917984,21309.901624917984,0.1313800575391753,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,True,30.921054351078247,12938.92156648636,12938.92156648636,0.1313800575391753,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_v2_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_v2_summary.csv index ea9f316d..fd47b5a4 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_v2_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_jax_v2_summary.csv @@ -1,28 +1,28 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236824611515756,7494.73098731041,7494.73098731041,0.8966913763762121,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236955728693145,8204.54053902626,8204.54053902626,0.8966913763762121,10666 -26,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1237031599809202,8561.992237091064,8205.83998131752,0.8966913763762121,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237456777354742,1850.625381946564,1850.625381946564,0.3698403887300683,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239381600177617,1854.5847795009613,1854.5847795009613,0.3698403887300683,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237980917188379,1610.791705369949,1610.791705369949,0.3698403887300683,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.063707391204822,15451.99134683609,15451.99134683609,0.22534573858673873,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.084079790540933,15451.332998037338,15451.332998037338,0.22534573858673873,72000 -25,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.41176473745201,18017.74631667137,18017.74631667137,0.22534573858673873,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.03464,2051.405519247055,inf,0.44776864374720626,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.04014,2058.181893348694,inf,0.44776864374720626,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.036059998,2058.049063682556,inf,0.44776864374720626,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236824611515756,7494.73098731041,7494.73098731041,0.8966913763762121,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236955728693145,8204.54053902626,8204.54053902626,0.8966913763762121,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1237031599809202,8561.992237091064,8205.83998131752,0.8966913763762121,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237456777354742,1850.625381946564,1850.625381946564,0.3698403887300683,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239381600177617,1854.5847795009613,1854.5847795009613,0.3698403887300683,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237980917188379,1610.791705369949,1610.791705369949,0.3698403887300683,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.063707391204822,15451.99134683609,15451.99134683609,0.22534573858673873,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.084079790540933,15451.332998037338,15451.332998037338,0.22534573858673873,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.41176473745201,18017.74631667137,18017.74631667137,0.22534573858673873,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75412,55937.934849500656,inf,0.2718141573124485,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75696,73898.40845513344,inf,0.2718141573124485,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75606,73900.43143868446,inf,0.2718141573124485,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77356,84891.75501847267,84891.75501847267,0.49135053230701276,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.7732,90041.78416395187,90041.78416395187,0.49135053230701276,167999 24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77349997,79757.28538060188,79757.28538060188,0.49135053230701276,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.123883551392845,65000.42595148087,inf,2.6878856915000933,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.5209675083281031,64987.36187624931,inf,2.6878856915000933,76000 -22,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.8858494665186115,65011.33872246742,inf,2.6878856915000933,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1574759812678028,55212.78796505928,inf,2.8562571235897436,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1543088881378844,55199.30320453644,inf,2.8562571235897436,38400 -23,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1572828658330517,55205.010649204254,inf,2.8562571235897436,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.286413382088369,5445.974807500839,5445.974807500839,0.19452367417783623,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2833401175109442,4543.061010599136,4543.061010599136,0.19452367417783623,52000 -21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2839604337758715,5444.019295454025,5444.019295454025,0.19452367417783623,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,30.80719747887025,18087.94602179528,inf,0.13178440840034025,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,False,30.82293691746224,18733.534309864044,inf,0.13178440840034025,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,True,30.89861759064164,12937.488843202593,12937.488843202593,0.13178440840034025,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.123883551392845,65000.42595148087,inf,2.6878856915000933,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.5209675083281031,64987.36187624931,inf,2.6878856915000933,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.8858494665186115,65011.33872246742,inf,2.6878856915000933,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1574759812678028,55212.78796505928,inf,2.8562571235897436,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1543088881378844,55199.30320453644,inf,2.8562571235897436,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1572828658330517,55205.010649204254,inf,2.8562571235897436,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.286413382088369,5445.974807500839,5445.974807500839,0.19452367417783623,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2833401175109442,4543.061010599136,4543.061010599136,0.19452367417783623,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2839604337758715,5444.019295454025,5444.019295454025,0.19452367417783623,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,30.80719747887025,18087.94602179528,inf,0.13178440840034025,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,30.82293691746224,18733.534309864044,inf,0.13178440840034025,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,True,30.89861759064164,12937.488843202593,12937.488843202593,0.13178440840034025,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_summary.csv index 0d6aaa05..aa258ddf 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_summary.csv @@ -2,27 +2,27 @@ 7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.123695969072577,10693.990020275116,10337.671689033508,1.0176147447313595,10666 16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1237318931772052,7484.81304359436,7484.81304359436,1.0176147447313595,10666 25,criteo1tb_pytorch,trial_1,validation/loss,0.123735,False,0.1238283343342011,13201.571621894836,inf,1.0176147447313595,10666 -1,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243006614466094,1188.9131379127502,1188.9131379127502,0.37200399077668483,18094 -10,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7241639591833146,1084.00980591774,1084.00980591774,0.37200399077668483,18094 -19,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7237026749129502,1414.2303750514984,1414.2303750514984,0.37200399077668483,18094 -8,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,26.85374456024656,18022.233601808548,inf,0.39088582110865655,72000 -17,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,27.82547828346764,38578.81546521187,inf,0.39088582110865655,72000 -26,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,26.96230657281026,28299.942929506306,inf,0.39088582110865655,72000 -0,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.47426,20031.86983823776,inf,0.7580861347745502,195999 -9,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.4676,4114.095727682114,inf,0.7580861347745502,195999 -18,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.4552,20045.60598516464,inf,0.7580861347745502,195999 -2,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.66804,84876.44285774231,inf,0.798625143555511,167999 -11,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.66444,87409.16011619568,inf,0.798625143555511,167999 -20,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6597,89980.17051744461,inf,0.798625143555511,167999 -3,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0877323420074349,64552.02477765083,inf,0.636074872542087,76000 -12,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1268092502293245,64541.00859761238,inf,0.636074872542087,76000 -21,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0847969873992178,55843.257081747055,55843.257081747055,0.636074872542087,76000 -5,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1198474388065466,36135.45188999176,36135.45188999176,0.4369991325858944,38400 -14,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1197798484043837,40477.75217223168,40477.75217223168,0.4369991325858944,38400 -23,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1190170424371167,40463.388149023056,40463.388149023056,0.4369991325858944,38400 -4,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.28535290526426,3640.148542404175,3640.148542404175,0.23042852374871498,52000 -13,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.283665861188384,4969.322802782059,4969.322802782059,0.23042852374871498,52000 -22,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2823012178053458,3624.553771257401,3624.553771257401,0.23042852374871498,52000 -6,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.88398743654469,21238.623005867004,21238.623005867004,0.1480193403642912,120000 -15,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.914680764174825,16745.45179581642,15461.67885351181,0.1480193403642912,120000 -24,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.954489013105448,19957.71787595749,19957.71787595749,0.1480193403642912,120000 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243006614466094,1188.9131379127502,1188.9131379127502,0.37200399077668483,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7241639591833146,1084.00980591774,1084.00980591774,0.37200399077668483,18094 +23,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7237026749129502,1414.2303750514984,1414.2303750514984,0.37200399077668483,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,26.85374456024656,18022.233601808548,inf,0.39088582110865655,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,27.82547828346764,38578.81546521187,inf,0.39088582110865655,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,26.96230657281026,28299.942929506306,inf,0.39088582110865655,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.47426,20031.86983823776,inf,0.7580861347745502,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.4676,4114.095727682114,inf,0.7580861347745502,195999 +24,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.4552,20045.60598516464,inf,0.7580861347745502,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.66804,84876.44285774231,inf,0.798625143555511,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.66444,87409.16011619568,inf,0.798625143555511,167999 +22,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6597,89980.17051744461,inf,0.798625143555511,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0877323420074349,64552.02477765083,inf,0.636074872542087,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1268092502293245,64541.00859761238,inf,0.636074872542087,76000 +20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0847969873992178,55843.257081747055,55843.257081747055,0.636074872542087,76000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1198474388065466,36135.45188999176,36135.45188999176,0.4369991325858944,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1197798484043837,40477.75217223168,40477.75217223168,0.4369991325858944,38400 +26,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1190170424371167,40463.388149023056,40463.388149023056,0.4369991325858944,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.28535290526426,3640.148542404175,3640.148542404175,0.23042852374871498,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.283665861188384,4969.322802782059,4969.322802782059,0.23042852374871498,52000 +21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2823012178053458,3624.553771257401,3624.553771257401,0.23042852374871498,52000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.88398743654469,21238.623005867004,21238.623005867004,0.1480193403642912,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.914680764174825,16745.45179581642,15461.67885351181,0.1480193403642912,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.954489013105448,19957.71787595749,19957.71787595749,0.1480193403642912,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_v2_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_v2_summary.csv index cc995ab9..ce4b86fb 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_v2_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/schedule_free_adamw_v2_summary.csv @@ -2,26 +2,26 @@ 7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236836366985733,7836.119033813477,7480.571330547333,0.909490487405232,10666 16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236888022091851,8195.66323542595,7483.040989398956,0.909490487405232,10666 24,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236981323330379,6768.513046264648,6768.513046264648,0.909490487405232,10666 -1,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243824080261677,1018.5896019935608,1018.5896019935608,0.2531965345361251,18094 -10,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7242272269142164,1279.6873631477356,1279.6873631477356,0.2531965345361251,18094 -19,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7240946463272018,1128.837876081467,1128.837876081467,0.2531965345361251,18094 -8,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,22.907429657990484,46293.00692868233,inf,0.39557035112902283,72000 -17,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,23.1486231732884,46274.09501791,inf,0.39557035112902283,72000 -25,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,23.129587841090785,43710.66011118889,inf,0.39557035112902283,72000 -0,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.67248,55976.22831273079,inf,0.8173056068837263,195999 -9,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.67436,73961.89125466347,inf,0.8173056068837263,195999 -18,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.68412,69928.90233135223,inf,0.8173056068837263,195999 -2,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.65356,95099.52543473244,inf,0.8838809331652617,167999 -11,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.64404,92544.23992848396,inf,0.8838809331652617,167999 -3,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0894317578332448,64575.97684216499,inf,0.6624823705895609,76000 -12,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0854922029643219,55846.44081497192,55846.44081497192,0.6624823705895609,76000 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243824080261677,1018.5896019935608,1018.5896019935608,0.2531965345361251,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7242272269142164,1279.6873631477356,1279.6873631477356,0.2531965345361251,18094 +22,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7240946463272018,1128.837876081467,1128.837876081467,0.2531965345361251,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,22.907429657990484,46293.00692868233,inf,0.39557035112902283,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,23.1486231732884,46274.09501791,inf,0.39557035112902283,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,23.129587841090785,43710.66011118889,inf,0.39557035112902283,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.67248,55976.22831273079,inf,0.8173056068837263,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.67436,73961.89125466347,inf,0.8173056068837263,195999 +23,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.68412,69928.90233135223,inf,0.8173056068837263,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.65356,95099.52543473244,inf,0.8838809331652617,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.64404,92544.23992848396,inf,0.8838809331652617,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0894317578332448,64575.97684216499,inf,0.6624823705895609,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0854922029643219,55846.44081497192,55846.44081497192,0.6624823705895609,76000 20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0855018587360594,54098.90682005882,54098.90682005882,0.6624823705895609,76000 -5,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.119316371360981,36138.43036651611,36138.43036651611,0.5242204456710123,38400 -14,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1196350118283203,43377.43124747276,43377.43124747276,0.5242204456710123,38400 -22,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.119750881089171,41911.17554831505,41911.17554831505,0.5242204456710123,38400 -4,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2844002947409835,6330.916296482086,6330.916296482086,0.21809077900113122,52000 -13,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2829456743930914,5872.041952133179,5872.041952133179,0.21809077900113122,52000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.119316371360981,36138.43036651611,36138.43036651611,0.5242204456710123,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1196350118283203,43377.43124747276,43377.43124747276,0.5242204456710123,38400 +25,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.119750881089171,41911.17554831505,41911.17554831505,0.5242204456710123,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2844002947409835,6330.916296482086,6330.916296482086,0.21809077900113122,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2829456743930914,5872.041952133179,5872.041952133179,0.21809077900113122,52000 21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2842687873347874,6325.430662155151,6325.430662155151,0.21809077900113122,52000 -6,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.968261630078437,10325.45705485344,10325.45705485344,0.14011229786067375,120000 -15,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.90527060487547,11614.250758886335,11614.250758886335,0.14011229786067375,120000 -23,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.96477125743624,8397.619731426239,7755.601474523544,0.14011229786067375,120000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.968261630078437,10325.45705485344,10325.45705485344,0.14011229786067375,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.90527060487547,11614.250758886335,11614.250758886335,0.14011229786067375,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.96477125743624,8397.619731426239,7755.601474523544,0.14011229786067375,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_diloco_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_diloco_summary.csv index 9af70b69..1f413b49 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_diloco_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_diloco_summary.csv @@ -1,27 +1,27 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1240051719548662,12536.648544311523,inf,2.029253848574378,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1241770580473042,13238.60691356659,inf,2.029253848574378,10666 -25,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236790314233259,8951.699251413345,8951.699251413345,2.029253848574378,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7243454503288548,1824.361733198166,1824.361733198166,1.0101386800818486,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7240330959614167,2934.3234000206,2934.3234000206,1.0101386800818486,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.299927329840155,28315.804240703583,28315.804240703583,0.46192917255577687,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.323351155823907,28314.819189310077,28314.819189310077,0.46192917255577687,72000 -24,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.30258852443628,28313.505344867703,28313.505344867703,0.46192917255577687,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75864,59924.7624270916,inf,0.2547951958011423,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.76084,73905.25310635567,inf,0.2547951958011423,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.76207995,57916.22069811821,inf,0.2547951958011423,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1240051719548662,12536.648544311523,inf,2.029253848574378,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1241770580473042,13238.60691356659,inf,2.029253848574378,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236790314233259,8951.699251413345,8951.699251413345,2.029253848574378,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7243454503288548,1824.361733198166,1824.361733198166,1.0101386800818486,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7240330959614167,2934.3234000206,2934.3234000206,1.0101386800818486,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.299927329840155,28315.804240703583,28315.804240703583,0.46192917255577687,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.323351155823907,28314.819189310077,28314.819189310077,0.46192917255577687,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.30258852443628,28313.505344867703,28313.505344867703,0.46192917255577687,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75864,59924.7624270916,inf,0.2547951958011423,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.76084,73905.25310635567,inf,0.2547951958011423,195999 +24,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.76207995,57916.22069811821,inf,0.2547951958011423,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.732,87449.53238081932,inf,0.49808267468873035,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.69314,92609.95464468002,inf,0.49808267468873035,167999 23,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.73982,82302.74896216393,inf,0.49808267468873035,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.896190798049534,15938.47878575325,inf,2.739086131503963,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1782552020470236,63227.4588804245,inf,2.739086131503963,76000 -21,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1883068604258195,64987.82690048218,inf,2.739086131503963,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1556993192680925,53798.12966442108,inf,2.648808918364061,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1608168782889972,55242.17136979103,inf,2.648808918364061,38400 -22,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.160256843528219,55258.4434466362,inf,2.648808918364061,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2752502023880646,4991.95076751709,inf,0.19546009999048936,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2770207933431546,5446.170157909393,inf,0.19546009999048936,52000 -20,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2721272001835208,4542.065598726273,inf,0.19546009999048936,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,30.060962305551648,15523.899386644363,inf,0.1408422923478924,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,False,29.21444071534188,17454.147111177444,inf,0.1408422923478924,120000 -19,wmt_jax,trial_1,validation/bleu,30.8491,False,30.1649320836006,16168.221429347992,inf,0.1408422923478924,120000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.896190798049534,15938.47878575325,inf,2.739086131503963,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1782552020470236,63227.4588804245,inf,2.739086131503963,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1883068604258195,64987.82690048218,inf,2.739086131503963,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1556993192680925,53798.12966442108,inf,2.648808918364061,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1608168782889972,55242.17136979103,inf,2.648808918364061,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.160256843528219,55258.4434466362,inf,2.648808918364061,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2752502023880646,4991.95076751709,inf,0.19546009999048936,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2770207933431546,5446.170157909393,inf,0.19546009999048936,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2721272001835208,4542.065598726273,inf,0.19546009999048936,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,30.060962305551648,15523.899386644363,inf,0.1408422923478924,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,29.21444071534188,17454.147111177444,inf,0.1408422923478924,120000 +25,wmt_jax,trial_1,validation/bleu,30.8491,False,30.1649320836006,16168.221429347992,inf,0.1408422923478924,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_dilocov2_summary.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_dilocov2_summary.csv index 5b15bc7c..5df19345 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_dilocov2_summary.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/summaries/single_worker_dilocov2_summary.csv @@ -1,27 +1,27 @@ ,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint -8,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1242709456268029,13033.471937417984,inf,1.9572563744633575,10666 -17,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1243268175997028,12450.281544446943,inf,1.9572563744633575,10666 -25,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1243662101918146,12143.230377197266,inf,1.9572563744633575,10666 -1,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7246792374129502,3013.444573879242,3013.444573879242,1.2131462696771385,18094 -10,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237136660496976,2578.1419467926025,2578.1419467926025,1.2131462696771385,18094 -19,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237209476777926,2561.646829843521,2561.646829843521,1.2131462696771385,18094 -7,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.83711947316281,28313.97388148308,28313.97388148308,0.47487529266350237,72000 -16,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.66829751540793,28312.441186904907,28312.441186904907,0.47487529266350237,72000 -24,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.06385468283391,28316.03405380249,28316.03405380249,0.47487529266350237,72000 -0,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73524,71938.87695384026,inf,0.49430486468060464,195999 -9,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.76023996,63908.86873793602,inf,0.49430486468060464,195999 -18,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.67983997,73927.91577363014,inf,0.49430486468060464,195999 +2,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1242709456268029,13033.471937417984,inf,1.9572563744633575,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1243268175997028,12450.281544446943,inf,1.9572563744633575,10666 +19,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1243662101918146,12143.230377197266,inf,1.9572563744633575,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7246792374129502,3013.444573879242,3013.444573879242,1.2131462696771385,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237136660496976,2578.1419467926025,2578.1419467926025,1.2131462696771385,18094 +22,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237209476777926,2561.646829843521,2561.646829843521,1.2131462696771385,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.83711947316281,28313.97388148308,28313.97388148308,0.47487529266350237,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.66829751540793,28312.441186904907,28312.441186904907,0.47487529266350237,72000 +18,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.06385468283391,28316.03405380249,28316.03405380249,0.47487529266350237,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.73524,71938.87695384026,inf,0.49430486468060464,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.76023996,63908.86873793602,inf,0.49430486468060464,195999 +24,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.67983997,73927.91577363014,inf,0.49430486468060464,195999 6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.6832,82303.60297131538,inf,0.5116912722504399,167999 15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.68395996,84880.63724040985,inf,0.5116912722504399,167999 23,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.69978,82310.41092848778,inf,0.5116912722504399,167999 -4,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.2844686911601409,64958.12221217156,inf,2.5898517384196813,76000 -13,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.2280886399845507,65014.05562067032,inf,2.5898517384196813,76000 -5,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1654419929512866,55277.98472857475,inf,2.603047242070443,38400 -14,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1633370347124993,55251.850288152695,inf,2.603047242070443,38400 -22,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1682904456138657,55264.86380052567,inf,2.603047242070443,38400 -3,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2719100741047621,5445.762615919113,inf,0.19557801595903612,52000 -12,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2654756685490676,5895.114526987076,inf,0.19557801595903612,52000 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.2844686911601409,64958.12221217156,inf,2.5898517384196813,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.2280886399845507,65014.05562067032,inf,2.5898517384196813,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1654419929512866,55277.98472857475,inf,2.603047242070443,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1633370347124993,55251.850288152695,inf,2.603047242070443,38400 +20,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1682904456138657,55264.86380052567,inf,2.603047242070443,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2719100741047621,5445.762615919113,inf,0.19557801595903612,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.2654756685490676,5895.114526987076,inf,0.19557801595903612,52000 21,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,False,0.257423756373387,7250.969809532165,inf,0.19557801595903612,52000 -2,wmt_jax,trial_1,validation/bleu,30.8491,False,29.73364555536789,15524.697182416916,inf,0.13540160135260415,120000 -11,wmt_jax,trial_1,validation/bleu,30.8491,False,29.61076013509891,17455.57430243492,inf,0.13540160135260415,120000 -20,wmt_jax,trial_1,validation/bleu,30.8491,False,29.5711685494686,14879.0592045784,inf,0.13540160135260415,120000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,29.73364555536789,15524.697182416916,inf,0.13540160135260415,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,29.61076013509891,17455.57430243492,inf,0.13540160135260415,120000 +25,wmt_jax,trial_1,validation/bleu,30.8491,False,29.5711685494686,14879.0592045784,inf,0.13540160135260415,120000 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/time_to_targets_relaxed.csv b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/time_to_targets_relaxed.csv index ee2fa073..5b2eb204 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/time_to_targets_relaxed.csv +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/time_to_targets_relaxed.csv @@ -9,7 +9,7 @@ NAdamW (Baseline AlgoPerf v0.5) (JAX),367.5072982311249,292.1376211643219,15447. NAdamW (Tuned for ResNet) (JAX),366.3240540027618,269.370676279068,18020.98589158058,31992.620273828503,74594.47512865067,inf,inf,3636.301753282547,6500.179566860199 Schedule-Free AdamW (PyTorch),364.76555728912354,319.09749150276184,inf,inf,inf,47112.69826483727,23138.350909233093,2271.1033079624176,1979.4675829410555 Schedule-Free AdamW (JAX),368.587194442749,382.8766484260559,7733.283766508102,inf,25766.614211559296,inf,inf,2734.1813151836395,1991.132454156876 -Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10309.158726215364,inf,25761.258350372314,inf,inf,2282.922813653946,1989.267727136612 +Schedule-Free AdamW v2 (JAX),365.3596320152282,307.3230459690094,10309.158726215364,8037.070692062378,25761.258350372314,inf,inf,2282.922813653946,1989.267727136612 Schedule-Free AdamW v2 (PyTorch),362.3438584804535,255.6350064277649,28293.974551200867,inf,inf,40145.10081958771,23153.38919401169,2716.290271043777,1337.9253540039062 Single Worker DiLoCo (JAX),725.3010702133179,334.13906598091125,23170.751378536224,33990.85886669159,69462.02342700958,inf,inf,2731.772287845612,4566.361578464508 Single Worker DiLoCo v2 (JAX),367.4553608894348,358.09745836257935,25742.234058380127,45974.51286125183,inf,inf,inf,4541.807559251785,6502.31082034111 diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile.pdf new file mode 100644 index 00000000..a812b47c Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile.png new file mode 100644 index 00000000..a144f3e9 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_relaxed.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_relaxed.pdf new file mode 100644 index 00000000..a541c2e3 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_relaxed.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_relaxed.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_relaxed.png new file mode 100644 index 00000000..49413458 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_relaxed.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_steps.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_steps.pdf new file mode 100644 index 00000000..70e3b1d2 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_steps.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_steps.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_steps.png new file mode 100644 index 00000000..d7116d04 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/leaderboard_profile_steps.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.pdf index a195b491..28a76fb4 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.pdf and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.png index 8aa0753c..05fed077 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.png and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.pdf index 6e0290f6..5a143843 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.pdf and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.png index d2e451b9..57e7209e 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.png and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.pdf index 0199c6b8..2ff95d08 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.pdf and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.png index aaadf6ea..8a76da96 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.png and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_relaxed_table.tex b/artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_relaxed_table.tex index 1ffc8692..91d0caef 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_relaxed_table.tex +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_relaxed_table.tex @@ -8,20 +8,20 @@ \cmidrule(lr){2-3}\cmidrule(lr){4-5} Submission & Score & Rank & Score & Rank & $\Delta$ \\ \midrule - \sfadamwii & \textbf{0.5679} & 1 & \textbf{0.6072} & 1 & -- \\ - \nadamwbase & 0.4506 & 4 & 0.6010 & 2 & $\uparrow$2 \\ + \sfadamwjaxii & 0.4405 & 5 & \textbf{0.6852} & 1 & $\uparrow$4 \\ + \sfadamwii & \textbf{0.5679} & 1 & 0.6072 & 2 & $\downarrow$1 \\ \muonpt & 0.4231 & 6 & 0.5993 & 3 & $\uparrow$3 \\ \sfadamw & 0.4669 & 3 & 0.5786 & 4 & $\downarrow$1 \\ - \sfadamwjaxii & 0.4405 & 5 & 0.5741 & 5 & -- \\ - \sfadamwjax & 0.4108 & 7 & 0.5561 & 6 & $\uparrow$1 \\ - \muonjax & 0.2845 & 10 & 0.5522 & 7 & $\uparrow$3 \\ - \ademamix & 0.5191 & 2 & 0.5213 & 8 & $\downarrow$6 \\ - \cautiousnadamw & 0.3143 & 9 & 0.5090 & 9 & -- \\ - \nadamw & 0.3844 & 8 & 0.4815 & 10 & $\downarrow$2 \\ - \lion & 0.2783 & 11 & 0.4439 & 11 & -- \\ - \nadamwresnet & 0.1857 & 12 & 0.4343 & 12 & -- \\ - \dilocosw & 0.1369 & 13 & 0.4259 & 13 & -- \\ - \dilocoswii & 0.1302 & 14 & 0.3232 & 14 & -- \\ + \sfadamwjax & 0.4108 & 7 & 0.5561 & 5 & $\uparrow$2 \\ + \ademamix & 0.5191 & 2 & 0.5213 & 6 & $\downarrow$4 \\ + \nadamwbase & 0.4506 & 4 & 0.4933 & 7 & $\downarrow$3 \\ + \muonjax & 0.2845 & 10 & 0.4506 & 8 & $\uparrow$2 \\ + \lion & 0.2783 & 11 & 0.4439 & 9 & $\uparrow$2 \\ + \cautiousnadamw & 0.3143 & 9 & 0.4012 & 10 & $\downarrow$1 \\ + \nadamw & 0.3844 & 8 & 0.3754 & 11 & $\downarrow$3 \\ + \nadamwresnet & 0.1857 & 12 & 0.3266 & 12 & -- \\ + \dilocosw & 0.1369 & 13 & 0.3199 & 13 & -- \\ + \dilocoswii & 0.1302 & 14 & 0.2318 & 14 & -- \\ \bottomrule \end{tabular} \end{table} \ No newline at end of file diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_selected.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_selected.pdf new file mode 100644 index 00000000..c5ebc3e6 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_selected.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_selected.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_selected.png new file mode 100644 index 00000000..89e8f28e Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_selected.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_sweep.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_sweep.pdf new file mode 100644 index 00000000..1979c432 Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_sweep.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_sweep.png b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_sweep.png new file mode 100644 index 00000000..abc4fe7c Binary files /dev/null and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/target_relaxation_sweep.png differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/time_to_target_table_relaxed.tex b/artifacts/tech_report_v1/section_4_leaderboards/out/results/time_to_target_table_relaxed.tex index b813d0b1..1ee63252 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/out/results/time_to_target_table_relaxed.tex +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/results/time_to_target_table_relaxed.tex @@ -7,17 +7,17 @@ \toprule Submission & \criteo & \fastmri & \finewebedu & \resnet & \vit & \conformer & \deepspeech & \ogbg & \wmt \\ \midrule + \sfadamwjaxii & 0.03 & 0.07 & 0.21 & \textbf{0.11} & 0.27 & \textemdash{} & \textemdash{} & 0.13 & \textbf{0.08} \\ \sfadamwii & 0.03 & 0.06 & \textbf{0.59} & \textemdash{} & \textemdash{} & 0.61 & 0.42 & 0.16 & 0.06 \\ - \nadamwbase & 0.03 & 0.07 & 0.32 & \textbf{0.43} & \textbf{0.56} & \textemdash{} & \textemdash{} & 0.13 & 0.11 \\ \muonpt & 0.03 & \textbf{0.08} & 0.22 & \textemdash{} & \textemdash{} & \textbf{0.72} & \textemdash{} & 0.08 & 0.08 \\ \sfadamw & 0.03 & 0.08 & \textemdash{} & \textemdash{} & \textemdash{} & \textbf{0.72} & 0.42 & 0.13 & 0.08 \\ - \sfadamwjaxii & 0.03 & 0.07 & 0.21 & \textemdash{} & 0.27 & \textemdash{} & \textemdash{} & 0.13 & \textbf{0.08} \\ \sfadamwjax & \textbf{0.03} & 0.09 & 0.16 & \textemdash{} & 0.27 & \textemdash{} & \textemdash{} & 0.16 & 0.08 \\ - \muonjax & \textbf{0.05} & 0.08 & 0.32 & \textbf{0.40} & 0.48 & \textemdash{} & \textemdash{} & \textbf{0.05} & \textbf{0.27} \\ \ademamix & 0.03 & 0.08 & 0.32 & \textemdash{} & \textemdash{} & 0.67 & \textbf{0.47} & 0.19 & 0.24 \\ + \nadamwbase & 0.03 & 0.07 & 0.32 & \textbf{0.43} & \textbf{0.56} & \textemdash{} & \textemdash{} & 0.13 & 0.11 \\ + \muonjax & \textbf{0.05} & 0.08 & 0.32 & \textbf{0.40} & 0.48 & \textemdash{} & \textemdash{} & \textbf{0.05} & \textbf{0.27} \\ + \lion & \textbf{0.03} & 0.07 & 0.38 & \textemdash{} & \textemdash{} & \textemdash{} & \textbf{0.44} & 0.27 & 0.13 \\ \cautiousnadamw & \textbf{0.03} & 0.07 & 0.48 & \textbf{0.43} & \textbf{0.59} & \textemdash{} & \textemdash{} & 0.16 & 0.16 \\ \nadamw & 0.03 & 0.06 & 0.48 & \textbf{0.45} & 0.51 & \textemdash{} & \textemdash{} & \textbf{0.16} & \textbf{0.27} \\ - \lion & \textbf{0.03} & 0.07 & 0.38 & \textemdash{} & \textemdash{} & \textemdash{} & \textbf{0.44} & 0.27 & 0.13 \\ \nadamwresnet & \textbf{0.03} & 0.07 & 0.38 & \textbf{0.43} & \textbf{0.77} & \textemdash{} & \textemdash{} & 0.21 & \textbf{0.27} \\ \dilocosw & \textbf{0.05} & 0.08 & 0.48 & \textbf{0.45} & \textbf{0.72} & \textemdash{} & \textemdash{} & \textbf{0.16} & \textbf{0.19} \\ \dilocoswii & \textbf{0.03} & 0.09 & 0.54 & \textbf{0.61} & \textemdash{} & \textemdash{} & \textemdash{} & \textbf{0.27} & \textbf{0.27} \\ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/results/wallclock_vs_steps.pdf b/artifacts/tech_report_v1/section_4_leaderboards/out/results/wallclock_vs_steps.pdf index 9922b318..8af97017 100644 Binary files a/artifacts/tech_report_v1/section_4_leaderboards/out/results/wallclock_vs_steps.pdf and b/artifacts/tech_report_v1/section_4_leaderboards/out/results/wallclock_vs_steps.pdf differ diff --git a/artifacts/tech_report_v1/section_4_leaderboards/out/run_metadata.json b/artifacts/tech_report_v1/section_4_leaderboards/out/run_metadata.json new file mode 100644 index 00000000..f463134f --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/out/run_metadata.json @@ -0,0 +1,329 @@ +{ + "SUBMISSION_DIRECTORY": "/data/projects/algoperf_scoring/submissions_algorithms/logs/self_tuning", + "INCLUDE_SUBMISSIONS": "", + "EXCLUDE_SUBMISSIONS": "muon_torch_jax_hps,muon_torch_jax_hps_achandr,muon_torch_jax_hps_lr_fix,muon_torch_replicated_jax_hps,muon_torch_replicated_torch_hps", + "STRICT": false, + "SELF_TUNING_RULESET": true, + "MIN_TAU": 1.0, + "MAX_TAU": 4.0, + "NUM_POINTS": 100, + "SCALE": "linear", + "TARGET_RELAXATION_FRACTION": 0.1, + "SELECTED_SUBMISSIONS": [ + "Schedule-Free AdamW v2 (PyTorch)", + "Muon (PyTorch)", + "AdEMAMix (PyTorch)", + "NAdamW (Baseline AlgoPerf v0.5) (JAX)", + "Single Worker DiLoCo v2 (JAX)" + ], + "LOAD_RESULTS_FROM": null, + "SAVE_RESULTS_TO": null, + "workload_config": { + "benchmark_version": "0.6", + "base_workloads": [ + "criteo1tb", + "fastmri", + "imagenet_resnet", + "imagenet_vit", + "librispeech_conformer", + "librispeech_deepspeech", + "finewebedu_lm", + "ogbg", + "wmt" + ], + "held_out_workloads": [], + "workloads": { + "cifar": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.85, + "step_hint": 4883, + "max_allowed_runtime_sec": 3600 + }, + "criteo1tb": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.123735, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_test": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.123735, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_layernorm": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.123757, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_embed_init": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.129657, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_resnet": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.12415, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "fastmri": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.723653, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "fastmri_model_size": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.723559, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "fastmri_tanh": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.71784, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "fastmri_layernorm": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.723284, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "imagenet_resnet": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.77431, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_resnet_silu": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.75445, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_resnet_gelu": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.76765, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_resnet_large_bn_init": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.76526, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_vit": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.77309, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "imagenet_vit_glu": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.75738, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "imagenet_vit_post_ln": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.75312, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "imagenet_vit_map": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.77113, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "librispeech_conformer": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.085884, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_conformer_attention_temperature": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.109977, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_conformer_layernorm": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.09731, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_conformer_gelu": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.094114, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_deepspeech": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.119936, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "librispeech_deepspeech_tanh": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.150883, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "librispeech_deepspeech_no_resnet": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.131564, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "librispeech_deepspeech_norm_and_spec_aug": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.14342, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "finewebedu_lm": { + "target_metric_name": "ppl", + "target_metric_goal": "minimize", + "validation_target_value": 22.2995, + "step_hint": 72000, + "max_allowed_runtime_sec": 31967 + }, + "mnist": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.97, + "step_hint": 7813, + "max_allowed_runtime_sec": 60 + }, + "ogbg": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.28098, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "ogbg_gelu": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.27771, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "ogbg_silu": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.282178, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "ogbg_model_size": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.269446, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "wmt": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 30.8491, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + }, + "wmt_post_ln": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 30.0779, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + }, + "wmt_attention_temp": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 29.3379, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + }, + "wmt_glu_tanh": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 29.5779, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + } + } + }, + "submission_pool": [ + "AdEMAMix (PyTorch)", + "Cautious NAdamW (JAX)", + "Lion (PyTorch)", + "Muon (JAX)", + "Muon (PyTorch)", + "NAdamW (Baseline AlgoPerf v0.5) (JAX)", + "NAdamW (JAX)", + "NAdamW (Tuned for ResNet) (JAX)", + "Schedule-Free AdamW (JAX)", + "Schedule-Free AdamW (PyTorch)", + "Schedule-Free AdamW v2 (JAX)", + "Schedule-Free AdamW v2 (PyTorch)", + "Single Worker DiLoCo (JAX)", + "Single Worker DiLoCo v2 (JAX)" + ], + "sweep_percentages": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] +} diff --git a/artifacts/tech_report_v1/section_4_leaderboards/plot_leaderboard_profile.py b/artifacts/tech_report_v1/section_4_leaderboards/plot_leaderboard_profile.py new file mode 100644 index 00000000..e81ab023 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/plot_leaderboard_profile.py @@ -0,0 +1,384 @@ +"""Render the cached leaderboard as a ranked legend beside its profiles. + +Run with ``uv run python artifacts/tech_report_v1/section_4_leaderboards/ +plot_leaderboard_profile.py`` from the repository root. No logs are rescored. +Pass ``--metric global_step`` for the step-count leaderboard and profiles. +Pass ``--metric score_relaxed`` for the 10%-relaxed-target leaderboard. +The layout follows Figure 1 of https://arxiv.org/abs/2502.15015: the table +is the legend, with identical line-and-marker keys in both panels. +""" + +import argparse +import math + +import matplotlib as mpl +from pathlib import Path +import sys + +if __name__ == '__main__' and not __package__: + sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib.pyplot as plt +from matplotlib.ticker import MultipleLocator, PercentFormatter +import numpy as np +import pandas as pd + +from artifacts.tech_report_v1.report_utils import ( + REPORT_ROOT, + SERIF_STYLE, + NOTEBOOK_STYLE, + set_plot_style, + save_figure, + submission_styles, +) + +HERE = REPORT_ROOT / 'section_4_leaderboards' +PROFILE_MARKER_SPACING = 14 +PROFILE_MARKER_OFFSETS = 12 +POINTS_PER_INCH = 72 +LEGEND_ROWS = 4 +AXIS_LABEL_SPACE_PT = 40 + + +def load_data(metric='score', byproducts=None): + byproducts = ( + Path(byproducts) if byproducts is not None else HERE / 'out/byproducts' + ) + score_file = { + 'score': 'scores.csv', + 'global_step': 'scores_steps.csv', + 'score_relaxed': 'scores_relaxed.csv', + }[metric] + scores = pd.read_csv(byproducts / score_file, index_col=0)['score'] + profiles = pd.read_csv( + byproducts / f'performance_profile_{metric}.csv', index_col=0 + ) + return validate_profiles(scores, profiles) + + +def validate_profiles(scores, profiles): + """Check profile integrals and sort rows consistently for display.""" + profiles = profiles.copy() + profiles.columns = profiles.columns.astype(float) + assert scores.index.is_unique and profiles.index.is_unique + assert set(scores.index) == set(profiles.index) + scores = scores.sort_values(ascending=False, kind='stable') + profiles = profiles.loc[scores.index] + tau = profiles.columns.to_numpy() + assert np.all(np.diff(tau) > 0) + assert np.all(np.diff(profiles.to_numpy(), axis=1) >= -1e-12) + assert np.all((profiles.to_numpy() >= 0) & (profiles.to_numpy() <= 1)) + np.testing.assert_allclose( + np.trapezoid(profiles.to_numpy(), x=tau) / (tau[-1] - tau[0]), + scores.to_numpy(), + rtol=0, + atol=1e-12, + ) + return scores, profiles + + +def _draw_profiles(ax, profiles, *, ranked): + styles = submission_styles(profiles.index) + for rank, name in enumerate(profiles.index, start=1): + style = styles[name].copy() + if ranked: + style.update( + markevery=(rank % PROFILE_MARKER_OFFSETS, PROFILE_MARKER_SPACING), + markersize=4.8, + zorder=len(profiles) - rank + 2, + ) + else: + style.pop('marker') + ax.plot( + profiles.columns, + profiles.loc[name], + label=name, + **style, + linewidth=1.5 if ranked else 1.6, + alpha=0.95 if ranked else 0.92, + ) + ax.set_xlim(profiles.columns.min(), profiles.columns.max()) + ax.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=0)) + + +def plot_performance_profiles( + perf_df, + figsize=(9, 5.5), + title=None, +): + """Render profiles with a conventional legend below the axes.""" + set_plot_style(NOTEBOOK_STYLE) + fig, ax = plt.subplots(figsize=figsize) + + _draw_profiles(ax, perf_df, ranked=False) + + ax.set_xlabel('Performance ratio τ (relative to best submission)') + ax.set_ylabel('Fraction of workloads solved ρ(τ)') + ax.set_ylim(-0.02, 1.05) + + if title: + ax.set_title(title, pad=8) + + n = len(perf_df.index) + ncol = max(3, math.ceil(n / LEGEND_ROWS)) + ax.legend( + loc='upper center', + bbox_to_anchor=(0.5, -0.22), + ncol=ncol, + borderaxespad=0, + frameon=True, + handlelength=2.0, + handleheight=0.9, + columnspacing=1.0, + labelspacing=0.35, + ) + + # Reserve space below the axes for the legend and axis label. + n_rows = math.ceil(n / ncol) + pts_per_row = mpl.rcParams['legend.fontsize'] * 1.55 + fig_height_pts = figsize[1] * POINTS_PER_INCH + legend_frac = (n_rows * pts_per_row + AXIS_LABEL_SPACE_PT) / fig_height_pts + fig.subplots_adjust( + left=0.07, + right=0.98, + top=0.91 if title else 0.97, + bottom=min(0.14 + legend_frac, 0.58), + ) + + return fig, ax + + +def plot_score_comparison(comparison): + """Render wall-clock versus step scores using the shared submission styles.""" + styles = submission_styles(comparison.index) + set_plot_style(NOTEBOOK_STYLE) + families = [ + ( + 'Schedule-Free AdamW', + 'o', + [ + 'Schedule-Free AdamW v2 (PyTorch)', + 'Schedule-Free AdamW v2 (JAX)', + 'Schedule-Free AdamW (PyTorch)', + 'Schedule-Free AdamW (JAX)', + ], + ), + ( + 'NAdamW', + 's', + [ + 'NAdamW (Baseline AlgoPerf v0.5) (JAX)', + 'NAdamW (JAX)', + 'NAdamW (Tuned for ResNet) (JAX)', + 'Cautious NAdamW (JAX)', + ], + ), + ('Muon', 'D', ['Muon (PyTorch)', 'Muon (JAX)']), + ( + 'Single Worker DiLoCo', + '^', + [ + 'Single Worker DiLoCo (JAX)', + 'Single Worker DiLoCo v2 (JAX)', + ], + ), + ('AdEMAMix', 'P', ['AdEMAMix (PyTorch)']), + ('Lion', 'X', ['Lion (PyTorch)']), + ] + _FAMILY_MARKER = { + name: marker for _, marker, members in families for name in members + } + + fig, ax = plt.subplots(figsize=(9.5, 5.6)) + + lims = (0.10, 0.60) + ax.plot(lims, lims, linestyle='--', color='#999999', linewidth=1.0, zorder=1) + ax.text( + 0.135, + 0.575, + 'wall-clock advantage\n(lower cost per step)', + ha='left', + va='top', + fontsize=8.5, + style='italic', + color='#777777', + ) + ax.text( + 0.575, + 0.135, + 'step advantage\n(fewer steps to target)', + ha='right', + va='bottom', + fontsize=8.5, + style='italic', + color='#777777', + ) + + scatter_handles = {} + for name, row in comparison.iterrows(): + scatter_handles[name] = ax.scatter( + row.steps, + row.wallclock, + color=styles[name]['color'], + marker=_FAMILY_MARKER.get(name, 'o'), + s=58, + linewidths=0.6, + edgecolors='#333333', + zorder=3, + label=name, + ) + + _annotate = { + 'Schedule-Free AdamW v2 (PyTorch)': (-8, 2, 'right'), + 'AdEMAMix (PyTorch)': (8, 3, 'left'), + 'Muon (JAX)': (8, -3, 'left'), + 'Muon (PyTorch)': (8, -3, 'left'), + 'NAdamW (JAX)': (8, 1, 'left'), + 'Single Worker DiLoCo (JAX)': (-2, 9, 'left'), + } + for name, (dx, dy, ha) in _annotate.items(): + row = comparison.loc[name] + ax.annotate( + name, + (row.steps, row.wallclock), + xytext=(dx, dy), + textcoords='offset points', + fontsize=8, + ha=ha, + color='#333333', + ) + + ax.set_xlim(lims) + ax.set_ylim(lims) + ax.set_aspect('equal') + ax.set_xlabel('Step-based benchmark score') + ax.set_ylabel('Wall-clock benchmark score') + ax.set_title('Wall-clock vs. step-based benchmark scores', pad=8) + + legend_order = [ + name + for _, _, members in families + for name in members + if name in scatter_handles + ] + legend_order.extend( + name for name in comparison.index if name not in legend_order + ) + ax.legend( + [scatter_handles[name] for name in legend_order], + legend_order, + loc='center left', + bbox_to_anchor=(1.03, 0.5), + ncol=1, + borderaxespad=0, + frameon=True, + handlelength=1.0, + labelspacing=0.5, + ) + fig.subplots_adjust(left=0.09, right=0.62, top=0.93, bottom=0.11) + + return fig + + +def plot_leaderboard_profile(scores, profiles, metric='score'): + scores, profiles = validate_profiles(scores, profiles) + styles = submission_styles(scores.index) + set_plot_style( + { + **SERIF_STYLE, + 'font.size': 11.5, + 'savefig.dpi': 350, + 'mathtext.fontset': 'dejavuserif', + 'axes.linewidth': 0.8, + } + ) + fig = plt.figure(figsize=(10.6, max(4.3, 0.25 * (len(scores) + 3)))) + # Compact name/key/score columns; align the table rules with the + # profile's top and bottom edges instead of centering unequal panels. + table = fig.add_axes([0.006, 0.19, 0.38, 0.79]) + ax = fig.add_axes([0.48, 0.19, 0.495, 0.79]) + n = len(scores) + table.set(xlim=(0, 1), ylim=(n + 0.65, -0.65)) + table.axis('off') + columns = [ + (0.01, 'Submission', 'left'), + (0.775, 'Line', 'center'), + (0.99, 'Score', 'right'), + ] + for x, label, align in columns: + table.text(x, 0.22, label, ha=align, va='baseline', weight='bold') + table.hlines( + [-0.65, 0.5, n + 0.65], 0, 1, colors='black', linewidths=[0.9, 0.6, 0.9] + ) + + for rank, (name, score) in enumerate(scores.items(), start=1): + style = styles[name] + if 'Baseline AlgoPerf' in name: + table.axhspan(rank - 0.48, rank + 0.48, color='#EEEEEE', zorder=0) + # Match the names already used in the paper's leaderboard. + label = name.replace('Baseline AlgoPerf v0.5', 'Baseline v0.5') + label = label.replace('(Tuned for ResNet)', 'tuned for ResNet') + label = label.replace('Single Worker', 'Single-worker') + # Shared baselines avoid optical misalignment between names with + # descenders, numeric scores, and the vertically centered keys. + table.text( + 0.01, rank + 0.22, label, ha='left', va='baseline', fontsize=10.8 + ) + table.text( + 0.99, + rank + 0.22, + f'{score:.4f}', + ha='right', + va='baseline', + fontsize=10.8, + weight='bold' if rank == 1 else 'normal', + ) + table.plot( + [0.735, 0.775, 0.815], + [rank] * 3, + **style, + markevery=[1], + linewidth=1.8, + markersize=5.3, + ) + _draw_profiles(ax, profiles, ranked=True) + + ax.set_ylim(-0.02, 1.02) + ax.xaxis.set_major_locator(MultipleLocator(0.5)) + ax.set_yticks(np.arange(0, 1.01, 0.25)) + unit = 'steps ' if metric == 'global_step' else '' + ax.set_xlabel(f'Performance ratio τ\n({unit}relative to best submission)') + ax.set_ylabel('Fraction of workloads solved ρ(τ)', labelpad=6) + ax.grid(axis='y', color='#DDDDDD', linewidth=0.65) + ax.set_axisbelow(True) + assert len(ax.lines) == len(scores) == len(table.lines) + return fig + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--metric', + choices=['score', 'global_step', 'score_relaxed'], + default='score', + ) + parser.add_argument( + '--byproducts', type=Path, default=HERE / 'out/byproducts' + ) + parser.add_argument('--output-dir', type=Path, default=HERE / 'out/results') + args = parser.parse_args() + scores, profiles = load_data(args.metric, args.byproducts) + fig = plot_leaderboard_profile(scores, profiles, args.metric) + suffix = {'score': '', 'global_step': '_steps', 'score_relaxed': '_relaxed'}[ + args.metric + ] + output = args.output_dir / f'leaderboard_profile{suffix}' + save_figure(fig, output) + plt.close(fig) + print( + f'Validated {len(scores)} unchanged scores and profiles; saved {output}.pdf/.png' + ) + + +if __name__ == '__main__': + main() diff --git a/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.ipynb b/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.ipynb index 9d31c6cc..d60e6893 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.ipynb +++ b/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "444243f5", + "id": "c6441859", "metadata": {}, "source": [ "# AlgoPerf Scoring v2: Tables & Performance Profiles\n", @@ -10,16 +10,16 @@ "Second scoring iteration for the tech report. This notebook runs **locally against\n", "the repo's self-contained `scoring/` package**, so scores always match\n", "`python -m scoring.score_submissions` and divide by the config's full base\n", - "workload count (9, including the never-yet-solved ImageNet ResNet).\n", + "workload count (9 for the current config).\n", "\n", - "Outputs (CSVs, plots, LaTeX tables) are written to `artifacts/leaderboard_v2/`.\n", + "Outputs are written to `artifacts/tech_report_v1/section_4_leaderboards/out/`.\n", "\n", "Run from anywhere inside the repo:\n", "\n", "```bash\n", - "uv run --with jupyter jupyter lab # interactive\n", - "uv run --with jupyter,nbclient jupyter nbconvert --to notebook --execute \\\n", - " artifacts/tech_report_v2/leaderboard/score_submissions.ipynb # headless\n", + "uv sync --extra dev --extra analysis # use this environment in Jupyter or VS Code\n", + "uv run jupytext --sync --execute \\\n", + " artifacts/tech_report_v1/section_4_leaderboards/score_submissions.ipynb\n", "```\n", "\n", "**Input format** — your submission data must follow this directory structure:\n", @@ -35,7 +35,7 @@ }, { "cell_type": "markdown", - "id": "59ce9082", + "id": "1c69f9bd", "metadata": {}, "source": [ "## 1. Imports & Repo Root\n", @@ -46,23 +46,25 @@ }, { "cell_type": "code", - "execution_count": 59, - "id": "4a015ec3", + "execution_count": null, + "id": "3e34015e", "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ + "# Notebook cells intentionally import dependencies near their use.\n", + "# ruff: noqa: E402\n", "import os\n", - "import pickle\n", "import sys\n", "from pathlib import Path\n", "\n", "# Run everything relative to the repo root so `scoring` imports and the\n", "# repo-relative paths in Section 2 work from any launch directory.\n", "REPO_ROOT = next(\n", - " p for p in [Path.cwd(), *Path.cwd().parents]\n", - " if (p / 'scoring' / 'score_submissions.py').exists()\n", + " p\n", + " for p in [Path.cwd(), *Path.cwd().parents]\n", + " if (p / 'scoring' / 'score_submissions.py').exists()\n", ")\n", "os.chdir(REPO_ROOT)\n", "sys.path.insert(0, str(REPO_ROOT))\n", @@ -71,19 +73,17 @@ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from IPython.display import display\n", - "from tabulate import tabulate\n", "\n", - "from scoring import performance_profile, scoring_utils\n", "from scoring.config import (\n", - " DEFAULT_TARGETS_PATH,\n", - " SELF_TUNING_RUNTIME_FACTOR,\n", - " WorkloadConfig,\n", + " DEFAULT_TARGETS_PATH,\n", + " SELF_TUNING_RUNTIME_FACTOR,\n", + " WorkloadConfig,\n", ")" ] }, { "cell_type": "markdown", - "id": "888044af", + "id": "3a82776b", "metadata": {}, "source": [ "## 2. Configuration\n", @@ -93,8 +93,8 @@ }, { "cell_type": "code", - "execution_count": 60, - "id": "e03b0807", + "execution_count": null, + "id": "834336b6", "metadata": { "lines_to_next_cell": 2 }, @@ -103,11 +103,17 @@ "# ── Required ──────────────────────────────────────────────────────────────────\n", "# Path to the directory that contains one sub-folder per submission\n", "# (relative to the repo root).\n", - "SUBMISSION_DIRECTORY = 'logs/self_tuning'\n", + "from artifacts.tech_report_v1.report_utils import (\n", + " EXCLUDED_SUBMISSIONS,\n", + " section_output_dir,\n", + " submission_directory,\n", + ")\n", + "\n", + "SUBMISSION_DIRECTORY = str(submission_directory())\n", "\n", "# Where to write output CSVs, plots, and LaTeX tables. Lives next to this\n", "# notebook rather than in the old top-level artifacts/leaderboard_v2/ tree.\n", - "OUTPUT_DIR = 'artifacts/tech_report_v1/section_4_leaderboards/out'\n", + "OUTPUT_DIR = str(section_output_dir('section_4_leaderboards'))\n", "# RESULTS_DIR: the notebook's explicit deliverables — LaTeX tables and plots\n", "# that go straight into the tech report.\n", "RESULTS_DIR = os.path.join(OUTPUT_DIR, 'results')\n", @@ -123,297 +129,74 @@ "# Comma-separated names to include (empty = include all).\n", "INCLUDE_SUBMISSIONS = ''\n", "# Comma-separated names to exclude.\n", - "EXCLUDE_SUBMISSIONS = 'muon_torch_jax_hps,muon_torch_jax_hps_achandr,muon_torch_jax_hps_lr_fix,muon_torch_replicated_jax_hps,muon_torch_replicated_torch_hps'\n", + "EXCLUDE_SUBMISSIONS = ','.join(EXCLUDED_SUBMISSIONS)\n", "\n", "# ── Scoring flags ─────────────────────────────────────────────────────────────\n", "# Set True to enforce the competition's strict trial/study count rules.\n", "STRICT = False\n", "# Set True when scoring the self-tuning ruleset.\n", "SELF_TUNING_RULESET = True\n", - "# Set True to compute and plot performance profiles after building summaries.\n", - "COMPUTE_PERFORMANCE_PROFILES = True\n", "# Benchmark version config: base/held-out workloads, targets, step hints.\n", "# The score divides by the number of base workloads in this config.\n", "WORKLOAD_CONFIG = WorkloadConfig.from_json(DEFAULT_TARGETS_PATH)\n", "\n", "# ── Performance profile parameters ────────────────────────────────────────────\n", - "MIN_TAU = 1.0\n", - "MAX_TAU = 4.0 # set None to auto-detect from data\n", - "NUM_POINTS = 100\n", + "from artifacts.tech_report_v1.report_data import (\n", + " DEFAULT_MIN_TAU,\n", + " DEFAULT_MAX_TAU,\n", + " DEFAULT_PROFILE_POINTS,\n", + ")\n", + "\n", + "MIN_TAU = DEFAULT_MIN_TAU\n", + "MAX_TAU = DEFAULT_MAX_TAU # set None to auto-detect from data\n", + "NUM_POINTS = DEFAULT_PROFILE_POINTS\n", "SCALE = 'linear' # 'linear' or 'log'\n", "\n", "# ── Caching (optional) ────────────────────────────────────────────────────────\n", "# Save the parsed results dict so you can reload it later without re-parsing.\n", - "SAVE_RESULTS_TO = None # e.g. 'results.pkl'\n", + "SAVE_RESULTS_TO = None # e.g. 'results.pkl'\n", "# Load a previously saved results dict instead of re-parsing.\n", "LOAD_RESULTS_FROM = None # e.g. 'results.pkl'\n", "\n", "os.makedirs(RESULTS_DIR, exist_ok=True)\n", - "os.makedirs(SUMMARIES_DIR, exist_ok=True) # os.makedirs also creates BYPRODUCTS_DIR" - ] - }, - { - "cell_type": "markdown", - "id": "60a4126b", - "metadata": {}, - "source": [ - "## 2b. Submission Display-Name Map\n", - "Edit the right-hand side to control how names appear in tables and plots.\\nAny submission not listed here will be shown with its raw folder name." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "a34f3bab", - "metadata": {}, - "outputs": [], - "source": [ - "# Maps raw folder names → display names used in tables, plots, and LaTeX output.\n", - "# Add or edit entries freely; unlisted names fall back to their raw folder name.\n", - "SUBMISSION_NAME_MAP = {\n", - " 'ademamix': 'AdEMAMix (PyTorch)',\n", - " 'cautious_nadamw': 'Cautious NAdamW (JAX)',\n", - " 'lion': 'Lion (PyTorch)',\n", - " 'muon': 'Muon (JAX)',\n", - " 'muon_torch': 'Muon (PyTorch)',\n", - " 'muon_torch_jax_hps': 'Muon (PyTorch, JAX HPs)', #exclude\n", - " 'muon_torch_jax_hps_achandr': 'Muon (PyTorch, JAX HPs, achandr)', # exclude\n", - " 'muon_torch_jax_hps_lr_fix': 'Muon (PyTorch, JAX HPs, LR Fix)', # exclude\n", - " 'muon_torch_replicated_jax_hps': 'Muon (Replicated, JAX HPs)', # exclude\n", - " 'muon_torch_replicated_torch_hps': 'Muon (Replicated, Torch HPs)',\n", - " 'nadamw': 'NAdamW (JAX)',\n", - " 'nadamw_baselinev05': 'NAdamW (Baseline AlgoPerf v0.5) (JAX)',\n", - " 'nadamw_resnet': 'NAdamW (Tuned for ResNet) (JAX)',\n", - " 'schedule_free_adamw': 'Schedule-Free AdamW (PyTorch)',\n", - " 'schedule_free_adamw_jax': 'Schedule-Free AdamW (JAX)',\n", - " 'schedule_free_adamw_jax_v2': 'Schedule-Free AdamW v2 (JAX)',\n", - " 'schedule_free_adamw_v2': 'Schedule-Free AdamW v2 (PyTorch)',\n", - " 'single_worker_diloco': 'Single Worker DiLoCo (JAX)',\n", - " 'single_worker_dilocov2': 'Single Worker DiLoCo v2 (JAX)',\n", - "}\n", - "\n", - "def pretty(name):\n", - " \"\"\"Return the display name for a submission, falling back to the raw name.\"\"\"\n", - " return SUBMISSION_NAME_MAP.get(name, name)\n", - "\n", - "_PRETTY_TO_RAW = {v: k for k, v in SUBMISSION_NAME_MAP.items()}\n", - "\n", - "# Maps raw folder names → LaTeX \\newcommand macros defined in the tech report\n", - "# (e.g. \\newcommand{\\sfadamw}{\\textsc{Schedule-Free AdamW}\\xspace}). Used only\n", - "# when rendering LaTeX tables (see `latex_name()` below); submissions without\n", - "# a defined macro fall back to their pretty display name.\n", - "SUBMISSION_LATEX_MACRO = {\n", - " 'ademamix': r'\\ademamix',\n", - " 'cautious_nadamw': r'\\cautiousnadamw',\n", - " 'lion': r'\\lion',\n", - " 'muon': r'\\muonjax',\n", - " 'muon_torch': r'\\muonpt',\n", - " 'nadamw': r'\\nadamw',\n", - " 'nadamw_baselinev05': r'\\nadamwbase',\n", - " 'nadamw_resnet': r'\\nadamwresnet',\n", - " 'schedule_free_adamw': r'\\sfadamw',\n", - " 'schedule_free_adamw_jax': r'\\sfadamwjax',\n", - " 'schedule_free_adamw_jax_v2': r'\\sfadamwjaxii',\n", - " 'schedule_free_adamw_v2': r'\\sfadamwii',\n", - " 'single_worker_diloco': r'\\dilocosw',\n", - " 'single_worker_dilocov2': r'\\dilocoswii',\n", - "}\n", - "\n", - "def latex_name(name):\n", - " \"\"\"Return the LaTeX macro for a submission, given its pretty display\n", - " name (as used in the DataFrame indices built in Section 4). Falls back\n", - " to the pretty name itself if no macro is defined.\"\"\"\n", - " raw = _PRETTY_TO_RAW.get(name, name)\n", - " return SUBMISSION_LATEX_MACRO.get(raw, name)" - ] - }, - { - "cell_type": "markdown", - "id": "0dc6e606", - "metadata": {}, - "source": [ - "## 3. Helpers: Submission Summary & Leaderboard Score\n", - "\n", - "Imported directly from `scoring/score_submissions.py` so the notebook can never\n", - "drift from the official pipeline.\n" + "os.makedirs(\n", + " SUMMARIES_DIR, exist_ok=True\n", + ") # os.makedirs also creates BYPRODUCTS_DIR" ] }, { "cell_type": "code", - "execution_count": 62, - "id": "f4023703", - "metadata": {}, + "execution_count": null, + "id": "98458f34", + "metadata": { + "lines_to_next_cell": 2 + }, "outputs": [], "source": [ - "from scoring.score_submissions import (\n", - " compute_leaderboard_score,\n", - " get_submission_summary as _get_submission_summary,\n", + "from artifacts.tech_report_v1.report_utils import (\n", + " latex_name,\n", + " save_figure,\n", + " SELECTED_SWEEP_SUBMISSIONS,\n", ")\n", - "\n", - "\n", - "def get_submission_summary(df):\n", - " \"\"\"Canonical per-workload summary, bound to this notebook's config.\"\"\"\n", - " return _get_submission_summary(df, WORKLOAD_CONFIG)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "90f2ca97", - "metadata": {}, - "source": [ - "## 3b. Plot Theme\n", - "\n", - "Sets a publication-quality matplotlib style and defines `plot_performance_profiles_styled`.\\nWith 19 submissions the plot cycles through 10 colorblind-safe colors × 4 line styles so it stays readable in greyscale and print." - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "05c6868f", - "metadata": {}, - "outputs": [], - "source": [ - "import itertools\n", - "import math\n", - "import matplotlib as mpl\n", - "\n", - "# ── Colorblind-safe 10-color palette (Paul Tol \"bright\") ──────────────────────\n", - "_COLORS = [\n", - " '#4477AA', # blue\n", - " '#EE6677', # red\n", - " '#228833', # green\n", - " '#CCBB44', # yellow\n", - " '#66CCEE', # cyan\n", - " '#AA3377', # purple\n", - " '#BBBBBB', # grey\n", - " '#EE7733', # orange\n", - " '#009988', # teal\n", - " '#CC3311', # vermillion\n", - "]\n", - "_LINE_STYLES = ['-', '--', '-.', ':']\n", - "\n", - "# 10 solid lines, then 9 dashed, etc. — enough for 19 submissions.\n", - "_STYLE_CYCLE = list(itertools.islice(\n", - " ((c, ls) for ls in _LINE_STYLES for c in _COLORS),\n", - " 40,\n", - "))\n", - "\n", - "# ── rcParams: tuned for a two-column tech-report (e.g. NeurIPS / ICML) ────────\n", - "mpl.rcParams.update({\n", - " 'figure.figsize': (9, 4.5),\n", - " 'figure.dpi': 150,\n", - " 'savefig.dpi': 300,\n", - " 'savefig.bbox': 'tight',\n", - " 'savefig.pad_inches': 0.05,\n", - " 'font.family': 'serif',\n", - " 'font.serif': ['Times New Roman', 'DejaVu Serif'],\n", - " 'font.size': 11,\n", - " 'axes.titlesize': 11,\n", - " 'axes.labelsize': 11,\n", - " 'xtick.labelsize': 10,\n", - " 'ytick.labelsize': 10,\n", - " 'legend.fontsize': 8.5,\n", - " 'legend.title_fontsize': 9,\n", - " 'legend.framealpha': 0.92,\n", - " 'legend.edgecolor': '#cccccc',\n", - " 'legend.borderpad': 0.5,\n", - " 'legend.labelspacing': 0.35,\n", - " 'axes.grid': True,\n", - " 'grid.alpha': 0.3,\n", - " 'grid.linestyle': '--',\n", - " 'grid.linewidth': 0.6,\n", - " 'axes.spines.top': False,\n", - " 'axes.spines.right': False,\n", - " 'axes.linewidth': 0.8,\n", - " 'lines.linewidth': 1.6,\n", - "})\n", - "\n", - "\n", - "def plot_performance_profiles_styled(\n", - " perf_df,\n", - " df_col,\n", - " scale='linear',\n", - " save_dir=None,\n", - " figsize=(9, 5.5),\n", - " title=None,\n", - "):\n", - " \"\"\"\n", - " Publication-quality performance profile plot for a tech report.\n", - "\n", - " Each submission's (color, line-style) pair comes from the shared\n", - " SUBMISSION_STYLE registry (built in Section 4, once `results` is known),\n", - " so a submission always gets the same color in every figure in this\n", - " notebook — performance profiles and the Section 6 scatter plots alike.\n", - " Colors remain legible in greyscale and for colorblind readers.\n", - " The legend is placed below the plot.\n", - " Saves both a vector PDF and a 300-dpi PNG.\n", - " \"\"\"\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - "\n", - " for submission in perf_df.index:\n", - " style = SUBMISSION_STYLE.get(submission, {'color': '#333333', 'linestyle': '-'})\n", - " ax.plot(\n", - " perf_df.columns,\n", - " perf_df.loc[submission],\n", - " label=submission,\n", - " color=style['color'],\n", - " linestyle=style['linestyle'],\n", - " linewidth=1.6,\n", - " alpha=0.92,\n", - " )\n", - "\n", - " ax.set_xlabel('Performance ratio τ (relative to best submission)')\n", - " ax.set_ylabel('Fraction of workloads solved ρ(τ)')\n", - " ax.set_xlim(perf_df.columns.min(), perf_df.columns.max())\n", - " ax.set_ylim(-0.02, 1.05)\n", - " ax.yaxis.set_major_formatter(mpl.ticker.PercentFormatter(xmax=1, decimals=0))\n", - "\n", - " if title:\n", - " ax.set_title(title, pad=8)\n", - "\n", - " # ── Legend below the axes ──────────────────────────────────────────────────\n", - " n = len(perf_df.index)\n", - " ncol = max(3, math.ceil(n / 4)) # ~4 rows for any submission count\n", - " ax.legend(\n", - " loc='upper center',\n", - " bbox_to_anchor=(0.5, -0.22),\n", - " ncol=ncol,\n", - " borderaxespad=0,\n", - " frameon=True,\n", - " handlelength=2.0,\n", - " handleheight=0.9,\n", - " columnspacing=1.0,\n", - " labelspacing=0.35,\n", - " )\n", - "\n", - " # Reserve vertical space proportional to the number of legend rows so the\n", - " # legend never overlaps the x-axis label. The legend is anchored 0.22\n", - " # axes-heights below the axes (above); the fixed +40pt buffer covers the\n", - " # x-axis ticks, tick labels, and axis label that sit in that same gap.\n", - " n_rows = math.ceil(n / ncol)\n", - " pts_per_row = mpl.rcParams['legend.fontsize'] * 1.55\n", - " fig_height_pts = figsize[1] * 72\n", - " legend_frac = (n_rows * pts_per_row + 40) / fig_height_pts\n", - " fig.subplots_adjust(\n", - " left=0.07,\n", - " right=0.98,\n", - " top=0.91 if title else 0.97,\n", - " bottom=min(0.14 + legend_frac, 0.58),\n", - " )\n", - "\n", - " if save_dir:\n", - " base = os.path.join(save_dir, f'performance_profile_by_{df_col}')\n", - " fig.savefig(f'{base}.pdf', format='pdf')\n", - " fig.savefig(f'{base}.png', format='png', dpi=300)\n", - " print(f'Saved → {base}.pdf / .png')\n", - "\n", - " return fig, ax" + "from artifacts.tech_report_v1.report_tables import (\n", + " scores_to_latex,\n", + " workload_table,\n", + ")\n", + "from artifacts.tech_report_v1.report_data import (\n", + " load_runs,\n", + " write_summaries,\n", + " score_runs,\n", + ")\n", + "from artifacts.tech_report_v1.section_4_leaderboards.plot_leaderboard_profile import (\n", + " plot_performance_profiles,\n", + " plot_score_comparison,\n", + " plot_leaderboard_profile,\n", + ")" ] }, { "cell_type": "markdown", - "id": "6c00924b", + "id": "11e350d3", "metadata": {}, "source": [ "## 4. Load & Summarize Submissions" @@ -421,7724 +204,32 @@ }, { "cell_type": "code", - "execution_count": 64, - "id": "48dd974f", + "execution_count": null, + "id": "5bb9ceda", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Excluding (5): ['muon_torch_jax_hps', 'muon_torch_jax_hps_achandr', 'muon_torch_jax_hps_lr_fix', 'muon_torch_replicated_jax_hps', 'muon_torch_replicated_torch_hps']\n", - "Including (0): (all)\n", - "\n", - "Found 19 folders:\n", - " ✓ ademamix\n", - " ✓ cautious_nadamw\n", - " ✓ lion\n", - " ✓ muon\n", - " ✓ muon_torch\n", - " ✗ ← excluded muon_torch_jax_hps\n", - " ✗ ← excluded muon_torch_jax_hps_achandr\n", - " ✗ ← excluded muon_torch_jax_hps_lr_fix\n", - " ✗ ← excluded muon_torch_replicated_jax_hps\n", - " ✗ ← excluded muon_torch_replicated_torch_hps\n", - " ✓ nadamw\n", - " ✓ nadamw_baselinev05\n", - " ✓ nadamw_resnet\n", - " ✓ schedule_free_adamw\n", - " ✓ schedule_free_adamw_jax\n", - " ✓ schedule_free_adamw_jax_v2\n", - " ✓ schedule_free_adamw_v2\n", - " ✓ single_worker_diloco\n", - " ✓ single_worker_dilocov2\n", - "\n", - "\n", - "=== AdEMAMix (PyTorch) (ademamix) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload trial \\\n", - "0 imagenet_resnet_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "1 fastmri_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "2 imagenet_vit_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "3 librispeech_conformer_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "4 ogbg_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "5 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "6 wmt_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "7 criteo1tb_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "8 finewebedu_lm_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "9 imagenet_resnet_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "10 fastmri_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "11 imagenet_vit_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "12 librispeech_conformer_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "13 ogbg_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "14 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "15 wmt_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "16 criteo1tb_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "17 finewebedu_lm_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "18 imagenet_resnet_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "19 fastmri_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "20 librispeech_conformer_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "21 ogbg_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "22 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "23 wmt_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "24 criteo1tb_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "25 finewebedu_lm_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [212.712702035904, 355.51188921928406, 477.651... \n", - "1 study_2 [537.8633160591125, 545.0480992794037, 552.481... \n", - "2 study_2 [211.12093210220337, 365.9394989013672, 510.08... \n", - "3 study_2 [66.39019894599915, 111.02748608589172, 156.10... \n", - "4 study_2 [75.97684216499329, 106.20078134536745, 136.34... \n", - "5 study_2 [78.01297760009766, 126.90059351921082, 177.35... \n", - "6 study_2 [439.05135011672974, 644.2240459918976, 874.02... \n", - "7 study_2 [902.4336903095244, 1685.4316337108612, 2471.5... \n", - "8 study_2 [218.47494173049927, 400.5624976158142, 582.46... \n", - "9 study_1 [202.49451613426208, 340.2287197113037, 465.98... \n", - "10 study_1 [477.7719442844391, 486.96115922927856, 495.53... \n", - "11 study_1 [211.129508972168, 338.6316747665405, 480.6344... \n", - "12 study_1 [66.44532704353333, 110.58894848823547, 155.92... \n", - "13 study_1 [75.74219942092896, 105.7307584285736, 136.079... \n", - "14 study_1 [74.23156142234802, 122.02011895179749, 169.75... \n", - "15 study_1 [441.09179854393005, 634.3780562877655, 825.61... \n", - "16 study_1 [2540.4423489570618, 3847.182233333588, 5044.2... \n", - "17 study_1 [220.08728098869324, 402.1214201450348, 584.38... \n", - "18 study_0 [205.1945788860321, 322.2347002029419, 439.740... \n", - "19 study_0 [558.2362158298492, 564.1862885951996, 570.134... \n", - "20 study_0 [49.40755701065064, 97.66984963417052, 144.912... \n", - "21 study_0 [80.7018871307373, 110.85863971710204, 141.248... \n", - "22 study_0 [73.9581229686737, 119.08293294906616, 167.936... \n", - "23 study_0 [432.1460151672363, 626.3125128746033, 835.052... \n", - "24 study_0 [904.62606215477, 1678.4431009292605, 2456.474... \n", - "25 study_0 [220.4012830257416, 402.1314270496368, 584.046... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3759973049163818, 0.4364473819732666, ... \n", - "1 [0.0, 0.0418946743011474, 0.0896229743957519, ... \n", - "2 [0.0, 0.0444486141204834, 0.0953114032745361, ... \n", - "3 [0.0, 0.0530710220336914, 0.1154971122741699, ... \n", - "4 [0.0, 0.0435738563537597, 0.0926084518432617, ... \n", - "5 [0.0, 0.0552237033843994, 0.1156258583068847, ... \n", - "6 [0.0, 0.0475642681121826, 0.1040198802947998, ... \n", - "7 [0.0, 0.0377829074859619, 0.084223985671997, 0... \n", - "8 [0.0, 0.0446391105651855, 0.0909500122070312, ... \n", - "9 [0.0, 0.0446701049804687, 0.107499361038208, 0... \n", - "10 [0.0, 0.0413570404052734, 0.0871007442474365, ... \n", - "11 [0.0, 0.1163341999053955, 0.4161286354064941, ... \n", - "12 [0.0, 0.049234390258789, 0.1046385765075683, 0... \n", - "13 [0.0, 0.0446212291717529, 0.0964448451995849, ... \n", - "14 [0.0, 0.05338716506958, 0.1096694469451904, 0.... \n", - "15 [0.0, 0.0460469722747802, 0.1044700145721435, ... \n", - "16 [0.0, 0.0880823135375976, 0.1391046047210693, ... \n", - "17 [0.0, 0.0388789176940918, 0.0849249362945556, ... \n", - "18 [0.0, 0.0465962886810302, 0.1253275871276855, ... \n", - "19 [0.0, 0.1442329883575439, 0.3460185527801513, ... \n", - "20 [0.0, 0.0631611347198486, 0.3700737953186035, ... \n", - "21 [0.0, 0.0459675788879394, 0.099015474319458, 0... \n", - "22 [0.0, 0.1308517456054687, 0.2895371913909912, ... \n", - "23 [0.0, 0.0415325164794921, 0.0913481712341308, ... \n", - "24 [0.0, 0.0439250469207763, 0.0922863483428955, ... \n", - "25 [0.0, 0.0384209156036376, 0.0859086513519287, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [180.99007844924927, 2183.0760629177094, 4176.... \n", - "1 [216.8043031692505, 326.4079144001007, 436.609... \n", - "2 [107.94935297966003, 2693.0065586566925, 5260.... \n", - "3 [20.7898178100586, 1767.2243180274963, 3513.03... \n", - "4 [14.040167093276978, 465.18797612190247, 916.2... \n", - "5 [41.37631154060364, 1486.9480469226835, 2932.7... \n", - "6 [60.56462502479553, 702.6060817241669, 1344.74... \n", - "7 [4.420486688613892, 360.12546730041504, 716.52... \n", - "8 [45.00050735473633, 2613.519317626953, 5182.03... \n", - "9 [122.88367915153503, 2125.182219982147, 4119.2... \n", - "10 [205.920597076416, 315.2158372402191, 424.9942... \n", - "11 [101.01275086402892, 2664.655146598816, 5236.0... \n", - "12 [10.997874021530151, 1758.298228263855, 3504.5... \n", - "13 [16.68334436416626, 467.765088558197, 918.8868... \n", - "14 [37.72291231155396, 1483.5545628070831, 2929.2... \n", - "15 [73.81090426445007, 715.8868398666382, 1357.96... \n", - "16 [13.06631851196289, 371.457216501236, 728.1195... \n", - "17 [44.79646825790405, 2613.4691846370697, 5182.3... \n", - "18 [133.15646123886108, 2138.753703594208, 4134.8... \n", - "19 [239.4470498561859, 348.767276763916, 458.7664... \n", - "20 [14.887816667556764, 1759.8591146469116, 3505.... \n", - "21 [27.189526081085205, 478.3232114315033, 929.55... \n", - "22 [60.05421495437622, 1505.8693597316742, 2951.5... \n", - "23 [51.25460982322693, 693.4892127513885, 1335.81... \n", - "24 [5.074931144714356, 360.9079949855805, 717.175... \n", - "25 [45.30120277404785, 2613.741951227188, 5182.28... \n", - "\n", - " global_step \\\n", - "0 [1, 1831, 4403, 7275, 10308, 13274, 16099, 191... \n", - "1 [1, 285, 390, 492, 592, 687, 789, 897, 3004, 5... \n", - "2 [1, 2411, 5817, 9217, 12359, 15712, 18946, 221... \n", - "3 [1, 1497, 3379, 5751, 8056, 10375, 12845, 1519... \n", - "4 [1, 1936, 3875, 5802, 7730, 9657, 11600, 13547... \n", - "5 [1, 1056, 2516, 4063, 5897, 7650, 9368, 11220,... \n", - "6 [1, 4157, 8331, 12505, 16682, 20857, 25034, 29... \n", - "7 [1, 364, 720, 1083, 1443, 1799, 2161, 2518, 28... \n", - "8 [1, 6353, 12710, 19068, 25427, 31786, 38144, 4... \n", - "9 [1, 1891, 4599, 7546, 10774, 13712, 16935, 198... \n", - "10 [1, 295, 408, 525, 642, 755, 872, 1400, 3680, ... \n", - "11 [1, 3902, 7198, 10468, 13629, 16988, 20296, 23... \n", - "12 [1, 1593, 3736, 6040, 8451, 10951, 13278, 1574... \n", - "13 [1, 1938, 3868, 5788, 7709, 9635, 11557, 13486... \n", - "14 [1, 1080, 2515, 4054, 5951, 7854, 9693, 11440,... \n", - "15 [1, 4145, 8308, 12475, 16633, 20794, 24959, 29... \n", - "16 [1, 164, 323, 485, 643, 802, 971, 1127, 1295, ... \n", - "17 [1, 6359, 12723, 19093, 25462, 31834, 38205, 4... \n", - "18 [1, 2031, 4880, 8187, 11133, 14368, 17297, 204... \n", - "19 [1, 288, 388, 489, 590, 685, 781, 882, 1067, 3... \n", - "20 [1, 2740, 5058, 7526, 9964, 12268, 14740, 1717... \n", - "21 [1, 1947, 3894, 5836, 7832, 9885, 11944, 13993... \n", - "22 [1, 1095, 2726, 4466, 6199, 8103, 10024, 11921... \n", - "23 [1, 4164, 8350, 12536, 16720, 20907, 25095, 29... \n", - "24 [1, 360, 726, 1086, 1451, 1824, 2194, 2558, 29... \n", - "25 [1, 6320, 12651, 18984, 25318, 31648, 37979, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "\n", - " score \\\n", - "0 [180.99007844924927, 2183.0760629177094, 4176.... \n", - "1 [216.8043031692505, 326.4079144001007, 436.609... \n", - "2 [107.94935297966003, 2693.0065586566925, 5260.... \n", - "3 [20.7898178100586, 1767.2243180274963, 3513.03... \n", - "4 [14.040167093276978, 465.18797612190247, 916.2... \n", - "5 [41.37631154060364, 1486.9480469226835, 2932.7... \n", - "6 [60.56462502479553, 702.6060817241669, 1344.74... \n", - "7 [4.420486688613892, 360.12546730041504, 716.52... \n", - "8 [45.00050735473633, 2613.519317626953, 5182.03... \n", - "9 [122.88367915153503, 2125.182219982147, 4119.2... \n", - "10 [205.920597076416, 315.2158372402191, 424.9942... \n", - "11 [101.01275086402892, 2664.655146598816, 5236.0... \n", - "12 [10.997874021530151, 1758.298228263855, 3504.5... \n", - "13 [16.68334436416626, 467.765088558197, 918.8868... \n", - "14 [37.72291231155396, 1483.5545628070831, 2929.2... \n", - "15 [73.81090426445007, 715.8868398666382, 1357.96... \n", - "16 [13.06631851196289, 371.457216501236, 728.1195... \n", - "17 [44.79646825790405, 2613.4691846370697, 5182.3... \n", - "18 [133.15646123886108, 2138.753703594208, 4134.8... \n", - "19 [239.4470498561859, 348.767276763916, 458.7664... \n", - "20 [14.887816667556764, 1759.8591146469116, 3505.... \n", - "21 [27.189526081085205, 478.3232114315033, 929.55... \n", - "22 [60.05421495437622, 1505.8693597316742, 2951.5... \n", - "23 [51.25460982322693, 693.4892127513885, 1335.81... \n", - "24 [5.074931144714356, 360.9079949855805, 717.175... \n", - "25 [45.30120277404785, 2613.741951227188, 5182.28... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0008, 0.0934, 0.2763, 0.3571, 0.3992, 0.419... ... \n", - "1 NaN ... \n", - "2 [0.0026, 0.0731, 0.2118, 0.2776, 0.3254, 0.352... ... \n", - "3 NaN ... \n", - "4 [0.4619208937711783, 0.9835083753144902, 0.984... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.5858927430131893, 0.628... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0007, 0.1089, 0.3003, 0.3899, 0.3996, 0.427... ... \n", - "10 NaN ... \n", - "11 [0.0029, 0.1314, 0.2494, 0.2939, 0.3364, 0.368... ... \n", - "12 NaN ... \n", - "13 [0.4230047614675731, 0.9835353286069612, 0.984... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.582418220905235, 0.6315... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0012, 0.1117, 0.3156, 0.3955, 0.3672, 0.421... ... \n", - "19 NaN ... \n", - "20 NaN ... \n", - "21 [0.4293198336644938, 0.9834970043942288, 0.984... ... \n", - "22 NaN ... \n", - "23 [0.0007088489919237, 0.5865783510545581, 0.630... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [1.5362719065321295, 0.5788924829817023, 0.292... \n", - "4 NaN \n", - "5 [2.94109013662917, 0.597344662772172, 0.293844... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.0943368898759234, 0.5228986626756144, 0.247... \n", - "13 NaN \n", - "14 [2.7858446386327427, 0.5173465939265196, 0.284... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.7491333944865544, 0.2916815526480954, 0.224... \n", - "21 NaN \n", - "22 [2.824593250615556, 0.5557475981267803, 0.2923... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0267209558034942, 0.0978376054268129, 0.152... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0271462820714895, 0.0954856700090699, 0.152... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0257220047936941, 0.0980318224534722, 0.169... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0210783466112722, 0.1041319429622846, 0.189... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0215029409861362, 0.0976289666036284, 0.188... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0213845900783115, 0.1060675831054963, 0.197... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0236058359447, 0.1004020666313432, 0.157579... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0259481132931877, 0.0999415377545876, 0.155... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0242800297084239, 0.1019191154000473, 0.164... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 21.63589020280488, 24.54120106999433, 25... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 20.96236302286336, 24.579385884157613, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [8.423332008968271e-11, 21.796714716189296, 24... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 26.611518146345656, 28.97831885360621, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 26.02344332292685, 29.106520973630467, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 26.62657102641582, 28.9606259556848, 33.... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 23.275810259866887, 25.48070247168356, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 22.11825433109493, 25.730751828327108, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 23.15849105916398, 25.66725228083704, 26... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61312.16303969419, 34.4228276985674, 30.45612... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60663.447855259445, 34.54052703538431, 30.533... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63774.65379783826, 34.657624014547494, 30.286... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61256.367968396415, 34.1707455559584, 30.1575... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60741.87982645398, 34.293349615470774, 30.231... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63813.26303703969, 34.44406182767969, 30.0087... \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n", - "\n", - "=== Cautious NAdamW (JAX) (cautious_nadamw) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "1 fastmri_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "2 wmt_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "3 ogbg_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "7 criteo1tb_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "8 imagenet_resnet_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "9 fastmri_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "10 wmt_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "11 ogbg_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "12 librispeech_conformer_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "13 librispeech_deepspeech_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "14 imagenet_vit_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "15 criteo1tb_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "16 imagenet_resnet_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "17 fastmri_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "18 wmt_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "19 ogbg_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "20 librispeech_conformer_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "21 librispeech_deepspeech_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "22 imagenet_vit_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "23 finewebedu_lm_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "24 criteo1tb_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [53.47813010215759, 76.23289203643799, 100.670... \n", - "1 study_2 [459.32197999954224, 463.0431926250458, 466.59... \n", - "2 study_2 [917.7761840820312, 1421.673722743988, 1965.90... \n", - "3 study_2 [258.8789486885071, 375.4195799827576, 493.516... \n", - "4 study_2 [196.168021440506, 286.378764629364, 389.67272... \n", - "5 study_2 [270.9215397834778, 375.1704075336456, 484.343... \n", - "6 study_2 [72.33083653450012, 103.16862964630128, 165.79... \n", - "7 study_2 [1054.2919402122498, 1948.0834064483645, 2846.... \n", - "8 study_1 [55.10020852088928, 78.96190857887268, 103.808... \n", - "9 study_1 [464.2727341651917, 468.0189688205719, 471.521... \n", - "10 study_1 [921.7007367610933, 1437.4780912399292, 1950.5... \n", - "11 study_1 [256.31949853897095, 372.6062090396881, 488.46... \n", - "12 study_1 [275.27134823799133, 362.620612859726, 451.971... \n", - "13 study_1 [279.7016122341156, 390.7022712230682, 504.003... \n", - "14 study_1 [65.60101318359375, 89.84521460533142, 115.176... \n", - "15 study_1 [937.6430859565736, 1841.45858502388, 2740.799... \n", - "16 study_0 [53.63730978965759, 76.16114783287048, 99.6792... \n", - "17 study_0 [819.9483363628387, 823.6636004447937, 827.160... \n", - "18 study_0 [928.2115778923036, 1470.1444790363312, 1993.5... \n", - "19 study_0 [261.1435639858246, 378.28789138793945, 495.29... \n", - "20 study_0 [244.66708064079285, 369.91285848617554, 506.3... \n", - "21 study_0 [269.88561844825745, 372.2939569950104, 474.10... \n", - "22 study_0 [73.81218934059143, 97.8288414478302, 122.8484... \n", - "23 study_0 [333.78825855255127, 666.2949831485748, 998.65... \n", - "24 study_0 [1084.5783200263977, 1988.1498131752007, 2869.... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0542645454406738, 0.1289248466491699, ... \n", - "1 [0.0, 0.0521607398986816, 0.0849690437316894, ... \n", - "2 [0.0, 0.3827900886535644, 0.4186396598815918, ... \n", - "3 [0.0, 0.0671501159667968, 0.1063554286956787, ... \n", - "4 [0.0, 0.2826833724975586, 0.5167193412780762, ... \n", - "5 [0.0, 0.325585126876831, 0.3746006488800049, 0... \n", - "6 [0.0, 0.054866075515747, 0.161710500717163, 0.... \n", - "7 [0.0, 0.568652868270874, 0.6048638820648193, 0... \n", - "8 [0.0, 0.0523595809936523, 0.0858099460601806, ... \n", - "9 [0.0, 0.0547347068786621, 0.0911693572998046, ... \n", - "10 [0.0, 0.3277342319488525, 0.3654773235321045, ... \n", - "11 [0.0, 0.321786880493164, 0.3612854480743408, 0... \n", - "12 [0.0, 0.0805287361145019, 0.1299047470092773, ... \n", - "13 [0.0, 0.3699574470520019, 0.420339822769165, 0... \n", - "14 [0.0, 0.2905011177062988, 0.4212462902069092, ... \n", - "15 [0.0, 0.0547266006469726, 0.0887467861175537, ... \n", - "16 [0.0, 0.0531654357910156, 0.1693005561828613, ... \n", - "17 [0.0, 0.0502986907958984, 0.0812957286834716, ... \n", - "18 [0.0, 0.0638456344604492, 0.1035013198852539, ... \n", - "19 [0.0, 0.3924715518951416, 0.430260419845581, 0... \n", - "20 [0.0, 0.3927524089813232, 0.444305419921875, 0... \n", - "21 [0.0, 0.0797834396362304, 0.128232717514038, 0... \n", - "22 [0.0, 0.396827220916748, 0.5474104881286621, 0... \n", - "23 [0.0, 0.3884761333465576, 0.4329996109008789, ... \n", - "24 [0.0, 0.1520502567291259, 0.1839184761047363, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [64.11126923561096, 2060.0436477661133, 4056.1... \n", - "1 [173.50703597068787, 283.9921712875366, 394.84... \n", - "2 [64.3289155960083, 708.0036761760712, 1351.936... \n", - "3 [20.6119384765625, 472.67937707901, 924.644150... \n", - "4 [180.09365367889404, 1933.5918200016024, 3686.... \n", - "5 [173.08022499084473, 1620.338052034378, 3082.1... \n", - "6 [59.24174761772156, 2630.226944208145, 5201.14... \n", - "7 [12.798023223876951, 368.3202650547028, 725.22... \n", - "8 [64.66640973091125, 2060.7168028354645, 4056.8... \n", - "9 [169.22429084777832, 279.30333065986633, 390.2... \n", - "10 [65.24013447761536, 708.9454159736633, 1352.93... \n", - "11 [22.744362354278564, 474.54318714141846, 926.5... \n", - "12 [199.64375734329224, 1955.2376239299767, 3711.... \n", - "13 [174.93796801567078, 1628.2746636867523, 3077.... \n", - "14 [58.78333520889282, 2629.6014087200165, 5200.6... \n", - "15 [9.461503505706789, 366.13179183006287, 722.53... \n", - "16 [65.33910250663757, 2061.23659825325, 4057.295... \n", - "17 [253.8499023914337, 364.27534556388855, 474.43... \n", - "18 [62.50007462501526, 706.4707531929016, 1350.42... \n", - "19 [23.31479907035828, 474.9575369358063, 926.934... \n", - "20 [200.7225790023804, 1961.2996790409088, 3710.2... \n", - "21 [172.16022396087646, 1619.7970101833344, 3073.... \n", - "22 [59.80580878257752, 2630.618901491165, 5201.44... \n", - "23 [28.26072239875793, 2598.9086496829987, 5170.0... \n", - "24 [9.774004220962524, 366.27075147628784, 722.47... \n", - "\n", - " global_step \\\n", - "0 [1, 7399, 15335, 23272, 31211, 39150, 47089, 5... \n", - "1 [1, 298, 418, 540, 665, 783, 899, 1428, 2443, ... \n", - "2 [1, 4668, 9816, 14964, 20116, 25264, 30410, 35... \n", - "3 [1, 2113, 4305, 6605, 8918, 11237, 13554, 1587... \n", - "4 [1, 782, 1525, 2041, 2781, 3431, 4008, 4758, 5... \n", - "5 [1, 365, 719, 1109, 1595, 1959, 2545, 2965, 35... \n", - "6 [1, 5368, 11097, 16796, 22519, 28238, 33907, 3... \n", - "7 [1, 355, 718, 1080, 1443, 1822, 2212, 2592, 29... \n", - "8 [1, 7406, 15368, 23329, 31290, 39251, 47213, 5... \n", - "9 [1, 295, 418, 539, 663, 781, 897, 1419, 2433, ... \n", - "10 [1, 4646, 9776, 14906, 20036, 25168, 30298, 35... \n", - "11 [1, 2091, 4307, 6532, 8755, 10979, 13203, 1544... \n", - "12 [1, 475, 931, 1623, 2110, 2828, 3523, 4076, 48... \n", - "13 [1, 363, 727, 1141, 1658, 2018, 2642, 3037, 36... \n", - "14 [1, 5335, 10864, 16377, 21908, 27417, 32918, 3... \n", - "15 [1, 360, 731, 1116, 1502, 1867, 2236, 2624, 29... \n", - "16 [1, 7416, 15367, 23318, 31270, 39222, 47175, 5... \n", - "17 [1, 262, 317, 381, 443, 504, 566, 629, 687, 74... \n", - "18 [1, 4624, 9721, 14817, 19915, 25012, 30110, 35... \n", - "19 [1, 2113, 4377, 6661, 8916, 11197, 13468, 1572... \n", - "20 [1, 431, 872, 1448, 1907, 2581, 3053, 3790, 44... \n", - "21 [1, 373, 729, 1131, 1623, 2008, 2639, 3050, 37... \n", - "22 [1, 5246, 10791, 16315, 21837, 27346, 32853, 3... \n", - "23 [1, 5776, 11600, 17424, 23250, 29074, 34899, 4... \n", - "24 [1, 357, 713, 1068, 1449, 1825, 2200, 2577, 29... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [64.11126923561096, 2060.0436477661133, 4056.1... \n", - "1 [173.50703597068787, 283.9921712875366, 394.84... \n", - "2 [64.3289155960083, 708.0036761760712, 1351.936... \n", - "3 [20.6119384765625, 472.67937707901, 924.644150... \n", - "4 [180.09365367889404, 1933.5918200016024, 3686.... \n", - "5 [173.08022499084473, 1620.338052034378, 3082.1... \n", - "6 [59.24174761772156, 2630.226944208145, 5201.14... \n", - "7 [12.798023223876951, 368.3202650547028, 725.22... \n", - "8 [64.66640973091125, 2060.7168028354645, 4056.8... \n", - "9 [169.22429084777832, 279.30333065986633, 390.2... \n", - "10 [65.24013447761536, 708.9454159736633, 1352.93... \n", - "11 [22.744362354278564, 474.54318714141846, 926.5... \n", - "12 [199.64375734329224, 1955.2376239299767, 3711.... \n", - "13 [174.93796801567078, 1628.2746636867523, 3077.... \n", - "14 [58.78333520889282, 2629.6014087200165, 5200.6... \n", - "15 [9.461503505706789, 366.13179183006287, 722.53... \n", - "16 [65.33910250663757, 2061.23659825325, 4057.295... \n", - "17 [253.8499023914337, 364.27534556388855, 474.43... \n", - "18 [62.50007462501526, 706.4707531929016, 1350.42... \n", - "19 [23.31479907035828, 474.9575369358063, 926.934... \n", - "20 [200.7225790023804, 1961.2996790409088, 3710.2... \n", - "21 [172.16022396087646, 1619.7970101833344, 3073.... \n", - "22 [59.80580878257752, 2630.618901491165, 5201.44... \n", - "23 [28.26072239875793, 2598.9086496829987, 5170.0... \n", - "24 [9.774004220962524, 366.27075147628784, 722.47... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.00080000004, 0.42280003, 0.4661, 0.46980003... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5958631038665771, 0.642... ... \n", - "3 [0.5062430500984192, 0.9842243194580078, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.19530001, 0.3018, 0.34960002, 0.3897... ... \n", - "7 NaN ... \n", - "8 [0.00080000004, 0.41990003, 0.47700003, 0.4818... ... \n", - "9 NaN ... \n", - "10 [0.0007088489946909, 0.5942827463150024, 0.639... ... \n", - "11 [0.4493720233440399, 0.9840579628944396, 0.984... ... \n", - "12 NaN ... \n", - "13 NaN ... \n", - "14 [0.001, 0.1844, 0.29920003, 0.34820002, 0.3812... ... \n", - "15 NaN ... \n", - "16 [0.0011, 0.41320002, 0.4708, 0.49490002, 0.500... ... \n", - "17 NaN ... \n", - "18 [0.0007088489946909, 0.5977224111557007, 0.639... ... \n", - "19 [0.5034125447273254, 0.9839257001876832, 0.984... ... \n", - "20 NaN ... \n", - "21 NaN ... \n", - "22 [0.001, 0.1852, 0.2951, 0.35090002, 0.3686, 0.... ... \n", - "23 NaN ... \n", - "24 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0264434683762991, 0.1357419302974934, 0.186... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 [0.0257377199884663, 0.1349330808526143, 0.188... \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 [0.0283985430520721, 0.1322651706689524, 0.183... \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.5873556, 1.5037689, 0.8129022, 0.45209384, ... \n", - "5 [7.7118635, 1.6239316, 1.4979395, 1.0872473, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [7.823216, 1.5280322, 1.3773315, 0.82368153, 0... \n", - "13 [7.7545323, 1.8865759, 1.6371126, 1.3844644, 0... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [6.3144984, 1.5481284, 1.4650308, 0.9628712, 0... \n", - "21 [7.733238, 1.482744, 1.5655724, 1.4328241, 0.9... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9920378607844332, 0.899579550301627, 0.6415... \n", - "5 [3.91497572766234, 0.853208214002803, 0.848841... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.3951820933113968, 0.899579550301627, 0.8988... \n", - "13 [4.205309446915686, 0.8526394897731197, 0.8509... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.0380842118091524, 0.899579550301627, 0.8892... \n", - "21 [3.907480754778299, 0.8785570653829748, 0.8853... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.8723526, 1.4935609, 0.78827643, 0.42774177,... \n", - "5 [8.006404, 1.7055987, 1.5415457, 1.1210098, 0.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [8.062361, 1.5074098, 1.3654836, 0.8023209, 0.... \n", - "13 [7.990641, 2.0576968, 1.6998858, 1.4502625, 0.... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [6.6704044, 1.5218416, 1.4486065, 0.929039, 0.... \n", - "21 [7.9758477, 1.5585693, 1.6108615, 1.4473181, 0... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9896820273618891, 0.944635537887994, 0.6640... \n", - "5 [4.025659579784686, 0.8846316244773537, 0.8831... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.2126949586656397, 0.944635537887994, 0.9413... \n", - "13 [4.391682110655311, 0.883081707894791, 0.88696... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.1801532598962996, 0.944635537887994, 0.9265... \n", - "21 [4.051334777085979, 0.9158925665794732, 0.9218... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.556006, 1.5107346, 0.8824218, 0.5322696, 0.... \n", - "5 [7.7156754, 1.6395489, 1.53135, 1.1472689, 0.4... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [7.8196363, 1.5333942, 1.4015784, 0.89922535, ... \n", - "13 [7.7360797, 1.9125645, 1.6547824, 1.423782, 0.... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [6.2796364, 1.5544544, 1.4825281, 1.034126, 0.... \n", - "21 [7.707148, 1.5094348, 1.5772007, 1.456541, 1.0... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9914449862405252, 0.8967218654950997, 0.675... \n", - "5 [3.6665475788152366, 0.8561386568821513, 0.851... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.3946989813160815, 0.8967218654950997, 0.896... \n", - "13 [3.920320571621687, 0.8484912856660068, 0.8555... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.0184618355622073, 0.8967218654950997, 0.887... \n", - "21 [3.770134698015739, 0.8792062955631729, 0.8839... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "24 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [61888.85288374133, 42.65454246116733, 34.3687... \n", - "24 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [61864.009689522, 42.85635683143144, 34.469481... \n", - "24 NaN \n", - "\n", - "[25 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - "WARNING: The number of evals may be too low to calculate reliable step time for finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== Lion (PyTorch) (lion) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload trial study \\\n", - "0 imagenet_resnet_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "1 fastmri_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "2 imagenet_vit_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "3 librispeech_conformer_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "4 ogbg_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "5 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "6 wmt_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "7 criteo1tb_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "8 finewebedu_lm_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "9 imagenet_resnet_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "10 fastmri_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "11 imagenet_vit_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "12 librispeech_conformer_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "13 ogbg_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "14 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "15 wmt_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "16 criteo1tb_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "17 finewebedu_lm_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "18 imagenet_resnet_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "19 fastmri_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "20 imagenet_vit_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "21 librispeech_conformer_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "22 ogbg_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "23 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "24 wmt_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "25 criteo1tb_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "26 finewebedu_lm_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [234.53163146972656, 380.7788202762604, 508.68... \n", - "1 [83.36600160598755, 89.63491725921631, 95.5553... \n", - "2 [332.94828271865845, 484.63496017456055, 624.0... \n", - "3 [64.10982418060303, 108.90000200271606, 157.10... \n", - "4 [73.67127776145935, 104.92305970191956, 135.80... \n", - "5 [74.4120876789093, 117.13727378845216, 162.900... \n", - "6 [441.5375723838806, 625.2203524112701, 812.355... \n", - "7 [823.4794235229492, 1562.444446325302, 2303.58... \n", - "8 [219.920399427414, 401.2369964122772, 582.9772... \n", - "9 [225.154953956604, 379.1453785896301, 503.9069... \n", - "10 [492.0313301086426, 498.0816142559052, 504.099... \n", - "11 [363.2983100414276, 501.6828002929688, 631.093... \n", - "12 [66.92553544044495, 108.10422539711, 149.90850... \n", - "13 [73.7761640548706, 104.6031801700592, 134.4429... \n", - "14 [73.67282342910767, 115.58969712257384, 160.15... \n", - "15 [439.4463217258453, 630.8177511692047, 840.434... \n", - "16 [963.3623187541962, 1789.098122358322, 2587.29... \n", - "17 [221.8921980857849, 403.9305377006531, 585.917... \n", - "18 [203.1976864337921, 323.1763339042664, 407.200... \n", - "19 [429.3040490150452, 436.8172800540924, 445.522... \n", - "20 [301.2108738422394, 428.35318303108215, 565.49... \n", - "21 [66.29648637771606, 111.82119488716124, 154.82... \n", - "22 [75.11961722373962, 105.18607544898988, 135.22... \n", - "23 [73.5387008190155, 116.35830450057983, 161.848... \n", - "24 [433.6892330646515, 613.9949643611908, 793.818... \n", - "25 [847.0070641040802, 1608.3387088775637, 2380.4... \n", - "26 [222.616357088089, 404.90422010421753, 586.904... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.4658915996551513, 0.5569427013397217, ... \n", - "1 [0.0, 0.0434930324554443, 0.0881187915802002, ... \n", - "2 [0.0, 0.1000711917877197, 0.3936853408813476, ... \n", - "3 [0.0, 0.052311897277832, 0.1128931045532226, 0... \n", - "4 [0.0, 0.0481119155883789, 0.1117920875549316, ... \n", - "5 [0.0, 0.0887582302093505, 0.2501752376556396, ... \n", - "6 [0.0, 0.1269721984863281, 0.2580170631408691, ... \n", - "7 [0.0, 0.0384566783905029, 0.0830991268157959, ... \n", - "8 [0.0, 0.0415179729461669, 0.0871722698211669, ... \n", - "9 [0.0, 0.4243814945220947, 0.6173498630523682, ... \n", - "10 [0.0, 0.1511950492858886, 0.2761940956115722, ... \n", - "11 [0.0, 0.050922155380249, 0.4900016784667969, 0... \n", - "12 [0.0, 0.0491831302642822, 0.102020263671875, 0... \n", - "13 [0.0, 0.046351671218872, 0.0888957977294921, 0... \n", - "14 [0.0, 0.0529611110687255, 0.1090054512023925, ... \n", - "15 [0.0, 0.0585489273071289, 0.1828587055206298, ... \n", - "16 [0.0, 0.0572617053985595, 0.1021704673767089, ... \n", - "17 [0.0, 0.0622892379760742, 0.1099219322204589, ... \n", - "18 [0.0, 0.0420873165130615, 0.1088960170745849, ... \n", - "19 [0.0, 0.0779659748077392, 0.1575808525085449, ... \n", - "20 [0.0, 0.143531322479248, 0.4039738178253174, 0... \n", - "21 [0.0, 0.0548329353332519, 0.1112222671508789, ... \n", - "22 [0.0, 0.045417308807373, 0.0884642601013183, 0... \n", - "23 [0.0, 0.1531975269317627, 0.4838619232177734, ... \n", - "24 [0.0, 0.0453894138336181, 0.0939962863922119, ... \n", - "25 [0.0, 0.0403828620910644, 0.0841078758239746, ... \n", - "26 [0.0, 0.0426011085510253, 0.0912563800811767, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [200.5226492881775, 2203.342606067657, 4196.85... \n", - "1 [76.44122099876404, 185.24888062477112, 293.95... \n", - "2 [92.12094736099245, 2661.129516839981, 5228.97... \n", - "3 [16.372754335403442, 1763.2128784656525, 3509.... \n", - "4 [6.72886323928833, 457.7499363422394, 908.7993... \n", - "5 [59.20120620727539, 1504.9272112846377, 2950.5... \n", - "6 [66.08641052246094, 707.8739924430847, 1349.83... \n", - "7 [7.380849838256836, 362.9174847602844, 719.091... \n", - "8 [46.79867672920227, 2615.043501138687, 5183.51... \n", - "9 [199.72368240356445, 2192.699465751648, 4190.9... \n", - "10 [216.7514455318451, 326.6783425807953, 436.906... \n", - "11 [93.0429277420044, 2664.684671163559, 5236.870... \n", - "12 [10.802436113357544, 1758.3018491268158, 3505.... \n", - "13 [16.26790189743042, 467.39672803878784, 918.57... \n", - "14 [31.767141819000244, 1478.0001254081726, 2923.... \n", - "15 [62.02650833129883, 704.0027546882629, 1346.07... \n", - "16 [5.52962589263916, 361.4228310585022, 717.2312... \n", - "17 [59.32191562652588, 2627.6868963241577, 5196.1... \n", - "18 [130.69237089157104, 2125.469454050064, 4118.8... \n", - "19 [190.65102910995483, 300.31669664382935, 410.3... \n", - "20 [95.366854429245, 2659.257150888443, 5233.1433... \n", - "21 [20.19631266593933, 1765.789226770401, 3511.60... \n", - "22 [10.930009841918944, 462.1402308940888, 913.30... \n", - "23 [53.68404889106751, 1499.3523709774015, 2944.9... \n", - "24 [51.701682329177856, 693.7180705070496, 1335.7... \n", - "25 [3.3078713417053223, 359.1419172286988, 714.88... \n", - "26 [59.00462555885315, 2626.600440979004, 5194.16... \n", - "\n", - " global_step \\\n", - "0 [1, 1771, 4217, 7115, 9907, 12851, 15736, 1852... \n", - "1 [1, 748, 2648, 4950, 7251, 9556] \n", - "2 [1, 3422, 6662, 9645, 12871, 15927, 19106, 221... \n", - "3 [1, 1424, 3066, 5499, 7918, 10225, 12737, 1514... \n", - "4 [1, 1995, 3994, 5988, 7978, 10064, 12176, 1429... \n", - "5 [1, 1102, 2718, 4457, 6186, 8096, 10015, 11902... \n", - "6 [1, 4528, 9072, 13619, 18162, 22708, 27257, 31... \n", - "7 [1, 378, 755, 1126, 1496, 1861, 2219, 2574, 29... \n", - "8 [1, 6601, 13208, 19818, 26429, 33048, 39664, 4... \n", - "9 [1, 1756, 4233, 7215, 10393, 13450, 16572, 196... \n", - "10 [1, 303, 425, 534, 663, 772, 881, 1476, 3768, ... \n", - "11 [1, 3103, 6315, 9589, 12991, 16152, 19513, 228... \n", - "12 [1, 1661, 3907, 6245, 8808, 11164, 13579, 1609... \n", - "13 [1, 2033, 4054, 6084, 8149, 10276, 12407, 1454... \n", - "14 [1, 1095, 2654, 4304, 6118, 8053, 9980, 11878,... \n", - "15 [1, 4528, 9068, 13608, 18152, 22698, 27242, 31... \n", - "16 [1, 352, 704, 1053, 1396, 1751, 2113, 2470, 28... \n", - "17 [1, 6595, 13196, 19799, 26407, 33018, 39630, 4... \n", - "18 [1, 2032, 4980, 8289, 11260, 14506, 17455, 206... \n", - "19 [1, 302, 426, 546, 669, 791, 913, 2249, 4560, ... \n", - "20 [1, 3773, 7098, 10292, 13453, 16868, 20036, 23... \n", - "21 [1, 1433, 3136, 5653, 8044, 10436, 12982, 1532... \n", - "22 [1, 2004, 4010, 6009, 7998, 9985, 11975, 13957... \n", - "23 [1, 1098, 2697, 4423, 6170, 8098, 10027, 11927... \n", - "24 [1, 4527, 9067, 13607, 18144, 22684, 27224, 31... \n", - "25 [1, 380, 759, 1139, 1514, 1880, 2251, 2628, 29... \n", - "26 [1, 6637, 13278, 19923, 26573, 33229, 39889, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "\n", - " score \\\n", - "0 [200.5226492881775, 2203.342606067657, 4196.85... \n", - "1 [76.44122099876404, 185.24888062477112, 293.95... \n", - "2 [92.12094736099245, 2661.129516839981, 5228.97... \n", - "3 [16.372754335403442, 1763.2128784656525, 3509.... \n", - "4 [6.72886323928833, 457.7499363422394, 908.7993... \n", - "5 [59.20120620727539, 1504.9272112846377, 2950.5... \n", - "6 [66.08641052246094, 707.8739924430847, 1349.83... \n", - "7 [7.380849838256836, 362.9174847602844, 719.091... \n", - "8 [46.79867672920227, 2615.043501138687, 5183.51... \n", - "9 [199.72368240356445, 2192.699465751648, 4190.9... \n", - "10 [216.7514455318451, 326.6783425807953, 436.906... \n", - "11 [93.0429277420044, 2664.684671163559, 5236.870... \n", - "12 [10.802436113357544, 1758.3018491268158, 3505.... \n", - "13 [16.26790189743042, 467.39672803878784, 918.57... \n", - "14 [31.767141819000244, 1478.0001254081726, 2923.... \n", - "15 [62.02650833129883, 704.0027546882629, 1346.07... \n", - "16 [5.52962589263916, 361.4228310585022, 717.2312... \n", - "17 [59.32191562652588, 2627.6868963241577, 5196.1... \n", - "18 [130.69237089157104, 2125.469454050064, 4118.8... \n", - "19 [190.65102910995483, 300.31669664382935, 410.3... \n", - "20 [95.366854429245, 2659.257150888443, 5233.1433... \n", - "21 [20.19631266593933, 1765.789226770401, 3511.60... \n", - "22 [10.930009841918944, 462.1402308940888, 913.30... \n", - "23 [53.68404889106751, 1499.3523709774015, 2944.9... \n", - "24 [51.701682329177856, 693.7180705070496, 1335.7... \n", - "25 [3.3078713417053223, 359.1419172286988, 714.88... \n", - "26 [59.00462555885315, 2626.600440979004, 5194.16... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0009, 0.1035, 0.3092, 0.4064, 0.456, 0.4655... ... \n", - "1 NaN ... \n", - "2 [0.0018, 0.1482, 0.2801, 0.3369, 0.381, 0.4116... ... \n", - "3 NaN ... \n", - "4 [0.4621320980864005, 0.98320936222614, 0.98390... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.5797803730172564, 0.632... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0008, 0.0991, 0.317, 0.4192, 0.4417, 0.4658... ... \n", - "10 NaN ... \n", - "11 [0.002, 0.1338, 0.2684, 0.3375, 0.3776, 0.413,... ... \n", - "12 NaN ... \n", - "13 [0.580627826410689, 0.9832005181770478, 0.9838... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.581279414328046, 0.6312... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0003, 0.1344, 0.3514, 0.4294, 0.4627, 0.481... ... \n", - "19 NaN ... \n", - "20 [0.0018, 0.1704, 0.2879, 0.3531, 0.3852, 0.419... ... \n", - "21 NaN ... \n", - "22 [0.5190258658955779, 0.9832013604674374, 0.983... ... \n", - "23 NaN ... \n", - "24 [0.0007088489919237, 0.5807681134158387, 0.632... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.9249456862839762, 0.8967218654950997, 0.829... \n", - "4 NaN \n", - "5 [2.134186259836817, 0.8967218654950997, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.778380727079612, 0.8967218654950997, 0.8967... \n", - "13 NaN \n", - "14 [3.253464008110848, 0.8967218654950997, 0.8967... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.8870274706705927, 0.8967218654950997, 0.896... \n", - "22 NaN \n", - "23 [2.656689035871192, 0.8967218654950997, 0.8967... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0255343965141723, 0.0618207889101731, 0.121... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0286922205802314, 0.058430242481284, 0.1201... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0270702532464948, 0.0612040507030551, 0.109... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0207589732106201, 0.0601141124146566, 0.127... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0219069202068858, 0.0551165766520747, 0.125... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0206814816708047, 0.0561874754540856, 0.114... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.023578048279932, 0.0603180081204317, 0.1186... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.025848404996964, 0.0544441076379482, 0.1180... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0238766757620266, 0.0580625311316535, 0.109... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 21.10357501921561, 24.696701731203987, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 21.365274825335312, 24.744345874912263, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 21.256201275217464, 24.88223403349778, 2... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 26.41972093850038, 29.268454673187303, 3... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 27.017045197983634, 29.162907533953785, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 26.56864785576268, 29.388621798669284, 3... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 22.32747743258133, 25.64925217977625, 26... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 22.531659881056985, 25.94561024477533, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 22.364809678214144, 25.726263350829896, ... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [60924.48600238165, 33.677105258707606, 29.287... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [62002.905351507805, 33.47343387982745, 29.119... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [60612.974615636704, 33.58860454945548, 29.202... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [60972.15444020428, 33.49267058676701, 29.0976... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [62031.47947377031, 33.28121152216357, 28.9143... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [60507.18536272712, 33.38332889940211, 29.0059... \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n", - "\n", - "=== Muon (JAX) (muon) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial study \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "1 fastmri_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "2 wmt_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "3 ogbg_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "7 finewebedu_lm_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "8 criteo1tb_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "9 imagenet_resnet_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "10 fastmri_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "11 wmt_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "12 ogbg_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "13 librispeech_conformer_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "14 librispeech_deepspeech_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "15 imagenet_vit_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "16 finewebedu_lm_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "17 criteo1tb_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "18 imagenet_resnet_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "19 fastmri_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "20 wmt_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "21 ogbg_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "22 librispeech_conformer_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "23 librispeech_deepspeech_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "24 imagenet_vit_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "25 finewebedu_lm_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "26 criteo1tb_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [85.32101631164551, 143.27223420143127, 229.89... \n", - "1 [86.68694353103638, 90.220228433609, 93.846166... \n", - "2 [923.032478094101, 1481.197552204132, 2002.696... \n", - "3 [245.44457745552063, 357.27092480659485, 467.1... \n", - "4 [245.79879331588745, 329.6961340904236, 415.27... \n", - "5 [223.28561425209045, 340.4317753314972, 444.78... \n", - "6 [65.68547487258911, 89.06284356117249, 116.542... \n", - "7 [331.3541305065155, 660.0183925628662, 988.669... \n", - "8 [2206.252879858017, 3465.675411939621, 4709.18... \n", - "9 [52.432279109954834, 74.98340821266174, 98.320... \n", - "10 [891.3946471214294, 895.1375825405121, 898.678... \n", - "11 [918.139331817627, 1458.6382310390472, 1974.91... \n", - "12 [254.41160321235657, 368.7425117492676, 481.74... \n", - "13 [181.11556196212769, 299.30452275276184, 418.5... \n", - "14 [254.10073971748352, 355.44183683395386, 460.6... \n", - "15 [92.00945734977722, 124.71862697601318, 265.26... \n", - "16 [331.0854260921478, 659.5021979808807, 988.008... \n", - "17 [2142.3030138015747, 3376.085985183716, 4588.4... \n", - "18 [75.56227684020996, 130.63170218467712, 212.17... \n", - "19 [560.0810639858246, 563.818696975708, 567.3463... \n", - "20 [925.4305934906006, 1481.7121119499209, 1990.5... \n", - "21 [244.8257749080658, 356.0581192970276, 466.890... \n", - "22 [249.29896354675293, 333.0759255886078, 418.51... \n", - "23 [295.5003790855408, 397.93260049819946, 504.38... \n", - "24 [65.56098675727844, 89.21928763389587, 116.350... \n", - "25 [330.9129729270935, 659.4397175312042, 987.990... \n", - "26 [2110.755208969116, 3293.6648528575897, 4486.3... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3175292015075683, 0.382401704788208, 0... \n", - "1 [0.0, 0.0615730285644531, 0.0982937812805175, ... \n", - "2 [0.0, 0.0597054958343505, 0.100353717803955, 0... \n", - "3 [0.0, 0.3164477348327636, 0.3542206287384033, ... \n", - "4 [0.0, 0.0676980018615722, 0.1172399520874023, ... \n", - "5 [0.0, 0.3320095539093017, 0.3839359283447265, ... \n", - "6 [0.0, 0.4866328239440918, 0.619377613067627, 0... \n", - "7 [0.0, 0.0544896125793457, 0.0931630134582519, ... \n", - "8 [0.0, 0.047903299331665, 0.077981948852539, 0.... \n", - "9 [0.0, 0.0587384700775146, 0.1846351623535156, ... \n", - "10 [0.0, 0.0566794872283935, 0.0956184864044189, ... \n", - "11 [0.0, 0.2858195304870605, 0.3236966133117676, ... \n", - "12 [0.0, 0.4669585227966308, 0.5051803588867188, ... \n", - "13 [0.0, 0.3999862670898437, 0.4840962886810303, ... \n", - "14 [0.0, 0.3983092308044433, 0.4469871520996094, ... \n", - "15 [0.0, 0.1332242488861084, 1.4424009323120115, ... \n", - "16 [0.0, 0.4143426418304443, 0.4434373378753662, ... \n", - "17 [0.0, 0.3559868335723877, 0.3886592388153076, ... \n", - "18 [0.0, 0.31561279296875, 0.3772523403167724, 0.... \n", - "19 [0.0, 0.4022426605224609, 0.4407854080200195, ... \n", - "20 [0.0, 0.0633051395416259, 0.1031296253204345, ... \n", - "21 [0.0, 0.6725928783416748, 0.7113568782806396, ... \n", - "22 [0.0, 0.0695700645446777, 0.1125705242156982, ... \n", - "23 [0.0, 0.3460767269134521, 0.3970296382904053, ... \n", - "24 [0.0, 0.0525968074798584, 0.1384174823760986, ... \n", - "25 [0.0, 0.1377577781677246, 0.1678836345672607, ... \n", - "26 [0.0, 0.0534687042236328, 0.0880377292633056, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [71.61597466468811, 2067.387476682663, 4063.31... \n", - "1 [45.81852698326111, 155.83249139785767, 265.80... \n", - "2 [60.07726240158081, 704.0305507183075, 1348.05... \n", - "3 [20.30338883399964, 472.0722301006317, 924.120... \n", - "4 [183.9875810146332, 1934.1916689872744, 3689.2... \n", - "5 [140.33310055732727, 1589.9150474071505, 3037.... \n", - "6 [59.65637707710266, 2630.281178712845, 5201.14... \n", - "7 [25.29145765304565, 2596.20752286911, 5167.316... \n", - "8 [10.774063110351562, 367.3413143157959, 723.35... \n", - "9 [56.51526951789856, 2052.428330898285, 4048.36... \n", - "10 [268.306293964386, 378.45234298706055, 491.213... \n", - "11 [63.30758118629456, 707.1445617675781, 1351.18... \n", - "12 [22.809492826461792, 474.36376953125, 926.4589... \n", - "13 [179.39098525047302, 1927.8816254138949, 3677.... \n", - "14 [159.47859120368958, 1618.0629284381866, 3068.... \n", - "15 [64.70180058479309, 2635.90239405632, 5205.798... \n", - "16 [26.088027715682983, 2596.683099508285, 5167.9... \n", - "17 [14.367578268051147, 370.78795981407166, 727.4... \n", - "18 [72.40133500099182, 2068.07758808136, 4064.150... \n", - "19 [216.10517835617063, 326.65109968185425, 437.1... \n", - "20 [60.84638285636902, 704.8664121627808, 1348.91... \n", - "21 [19.63138055801392, 471.1056969165802, 923.132... \n", - "22 [183.7283523082733, 1934.5522394180296, 3688.7... \n", - "23 [162.70529961586, 1609.4858276844025, 3057.117... \n", - "24 [56.139816761016846, 2627.2795379161835, 5198.... \n", - "25 [24.110734939575195, 2595.24762749672, 5166.19... \n", - "26 [9.863986015319824, 366.7837691307068, 723.694... \n", - "\n", - " global_step \\\n", - "0 [1, 5689, 13244, 20809, 28376, 35949, 43494, 5... \n", - "1 [1, 720, 1673, 2640, 3607, 4574, 5541, 6508, 7... \n", - "2 [1, 3375, 7078, 10779, 14480, 18183, 21884, 25... \n", - "3 [1, 2168, 4454, 6872, 9277, 11677, 14062, 1645... \n", - "4 [1, 460, 904, 1615, 2163, 2906, 3703, 4401, 50... \n", - "5 [1, 683, 1216, 1751, 2239, 2803, 3330, 3877, 4... \n", - "6 [1, 5174, 10534, 15757, 21084, 26424, 31759, 3... \n", - "7 [1, 5055, 10151, 15245, 20340, 25436, 30531, 3... \n", - "8 [1, 182, 375, 564, 755, 951, 1182, 1437, 1645,... \n", - "9 [1, 7282, 14879, 22503, 30129, 37765, 45384, 5... \n", - "10 [1, 257, 314, 375, 434, 493, 554, 618, 680, 73... \n", - "11 [1, 3380, 7082, 10785, 14487, 18187, 21889, 25... \n", - "12 [1, 2133, 4474, 6860, 9240, 11619, 13989, 1634... \n", - "13 [1, 821, 1635, 2321, 2945, 3700, 4313, 4972, 5... \n", - "14 [1, 395, 771, 1275, 1778, 2313, 2865, 3483, 40... \n", - "15 [1, 5037, 10415, 15859, 21338, 26819, 32302, 3... \n", - "16 [1, 5056, 10152, 15247, 20342, 25437, 30532, 3... \n", - "17 [1, 189, 377, 568, 782, 970, 1176, 1387, 1605,... \n", - "18 [1, 5712, 13276, 20862, 28404, 35994, 43579, 5... \n", - "19 [1, 283, 386, 491, 596, 698, 798, 901, 1317, 2... \n", - "20 [1, 3381, 7101, 10824, 14544, 18264, 21981, 25... \n", - "21 [1, 2163, 4432, 6708, 8990, 11368, 13746, 1610... \n", - "22 [1, 466, 918, 1642, 2152, 2902, 3690, 4379, 50... \n", - "23 [1, 379, 744, 1195, 1669, 2045, 2652, 3050, 37... \n", - "24 [1, 5298, 10717, 16200, 21680, 27162, 32631, 3... \n", - "25 [1, 5058, 10151, 15248, 20345, 25445, 30541, 3... \n", - "26 [1, 189, 379, 579, 770, 980, 1177, 1366, 1576,... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [71.61597466468811, 2067.387476682663, 4063.31... \n", - "1 [45.81852698326111, 155.83249139785767, 265.80... \n", - "2 [60.07726240158081, 704.0305507183075, 1348.05... \n", - "3 [20.30338883399964, 472.0722301006317, 924.120... \n", - "4 [183.9875810146332, 1934.1916689872744, 3689.2... \n", - "5 [140.33310055732727, 1589.9150474071505, 3037.... \n", - "6 [59.65637707710266, 2630.281178712845, 5201.14... \n", - "7 [25.29145765304565, 2596.20752286911, 5167.316... \n", - "8 [10.774063110351562, 367.3413143157959, 723.35... \n", - "9 [56.51526951789856, 2052.428330898285, 4048.36... \n", - "10 [268.306293964386, 378.45234298706055, 491.213... \n", - "11 [63.30758118629456, 707.1445617675781, 1351.18... \n", - "12 [22.809492826461792, 474.36376953125, 926.4589... \n", - "13 [179.39098525047302, 1927.8816254138949, 3677.... \n", - "14 [159.47859120368958, 1618.0629284381866, 3068.... \n", - "15 [64.70180058479309, 2635.90239405632, 5205.798... \n", - "16 [26.088027715682983, 2596.683099508285, 5167.9... \n", - "17 [14.367578268051147, 370.78795981407166, 727.4... \n", - "18 [72.40133500099182, 2068.07758808136, 4064.150... \n", - "19 [216.10517835617063, 326.65109968185425, 437.1... \n", - "20 [60.84638285636902, 704.8664121627808, 1348.91... \n", - "21 [19.63138055801392, 471.1056969165802, 923.132... \n", - "22 [183.7283523082733, 1934.5522394180296, 3688.7... \n", - "23 [162.70529961586, 1609.4858276844025, 3057.117... \n", - "24 [56.139816761016846, 2627.2795379161835, 5198.... \n", - "25 [24.110734939575195, 2595.24762749672, 5166.19... \n", - "26 [9.863986015319824, 366.7837691307068, 723.694... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.001, 0.37730002, 0.46910003, 0.49930003, 0.... ... \n", - "1 NaN ... \n", - "2 [0.0409737974405288, 0.5593515634536743, 0.610... ... \n", - "3 [0.5054788589477539, 0.98524010181427, 0.98590... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.0015, 0.13530001, 0.26920003, 0.33380002, 0... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0016000001, 0.40320003, 0.47550002, 0.5, 0.... ... \n", - "10 NaN ... \n", - "11 [0.0422404296696186, 0.5574458241462708, 0.607... ... \n", - "12 [0.4808496832847595, 0.9848126173019408, 0.985... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.0021000002, 0.141, 0.26990002, 0.34420002, ... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.001, 0.377, 0.46250004, 0.4963, 0.5016, 0.5... ... \n", - "19 NaN ... \n", - "20 [0.0408227294683456, 0.5492998957633972, 0.607... ... \n", - "21 [0.6391069889068604, 0.9854639768600464, 0.985... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.0026000002, 0.1499, 0.2818, 0.34190002, 0.3... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0281631441374247, 0.2295321659960524, 0.274... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0254543424898782, 0.2331596554741088, 0.263... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0267938387137096, 0.2273265158939825, 0.265... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [9.629445, 1.5371209, 1.4846411, 1.421638, 0.7... \n", - "5 [7.7565045, 1.4724265, 1.4545373, 1.8689185, 1... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [5.938052, 1.4960839, 1.3232819, 0.5820363, 0.... \n", - "14 [7.2329397, 1.3054624, 1.3600887, 1.592771, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.5922017, 1.5404313, 1.4420122, 1.4015602, 0... \n", - "23 [7.8699923, 1.3188987, 1.2785219, 1.5216553, 1... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.899579550301627, 0.899579550301627, 0.89957... \n", - "5 [2.7828082789998576, 0.8355168281437247, 0.899... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.899579550301627, 0.899579550301627, 0.89947... \n", - "14 [3.2920805151016594, 0.8515629760526476, 0.855... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.899579550301627, 0.899579550301627, 0.89957... \n", - "23 [3.0617675136595373, 0.8905815205248512, 0.865... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.8974, 1.5146834, 1.4919598, 1.4403831, 0.78... \n", - "5 [7.988932, 1.5681933, 1.4815395, 1.8689207, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [5.587667, 1.4934237, 1.3410972, 0.56392473, 0... \n", - "14 [7.4968176, 1.3240694, 1.385018, 1.6073829, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [6.7791915, 1.5152707, 1.4577794, 1.4111829, 0... \n", - "23 [8.089003, 1.3387511, 1.3040979, 1.5570803, 1.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9440268204818524, 0.944635537887994, 0.9427... \n", - "5 [2.913786102492556, 0.8642664414739141, 0.9427... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9440268204818524, 0.944635537887994, 0.9426... \n", - "14 [3.2481779563958937, 0.8837202117361126, 0.892... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.9440268204818524, 0.944635537887994, 0.9427... \n", - "23 [3.0996397559502737, 0.9298572634961176, 0.905... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [9.453029, 1.5422884, 1.4866726, 1.4291912, 0.... \n", - "5 [7.7465277, 1.5140741, 1.4765124, 1.8765124, 1... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [5.954085, 1.4968823, 1.3415061, 0.656398, 0.4... \n", - "14 [7.1990952, 1.3392943, 1.3849467, 1.6173807, 1... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.459035, 1.5480436, 1.4407837, 1.4332728, 0.... \n", - "23 [7.8388295, 1.3478667, 1.3200916, 1.534856, 1.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.8967218654950997, 0.8967218654950997, 0.896... \n", - "5 [2.5796842562641817, 0.8351373533529667, 0.896... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.8967218654950997, 0.8967218654950997, 0.896... \n", - "14 [3.090551827354801, 0.8630908125331918, 0.8632... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.8967218654950997, 0.8967218654950997, 0.896... \n", - "23 [2.7855066866219285, 0.8896634963549461, 0.870... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [36728.58366630981, 34.4005429484851, 29.29537... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [37708.6707351216, 34.49948298023403, 29.27663... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [37366.9017364333, 34.3826022462526, 29.278583... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [36857.74502310895, 34.54730519044167, 29.3426... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [37845.10425777425, 34.643578072458546, 29.325... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [37539.06193711134, 34.55318670869796, 29.3231... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== Muon (PyTorch) (muon_torch) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload trial \\\n", - "0 imagenet_resnet_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "1 fastmri_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "2 imagenet_vit_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "3 librispeech_conformer_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "4 ogbg_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "5 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "6 wmt_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "7 criteo1tb_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "8 finewebedu_lm_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "9 imagenet_resnet_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "10 fastmri_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "11 imagenet_vit_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "12 librispeech_conformer_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "13 ogbg_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "14 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "15 wmt_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "16 criteo1tb_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "17 finewebedu_lm_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "18 imagenet_resnet_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "19 fastmri_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "20 imagenet_vit_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "21 librispeech_conformer_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "22 ogbg_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "23 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "24 wmt_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "25 criteo1tb_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "26 finewebedu_lm_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [237.07018637657168, 393.0856432914734, 515.90... \n", - "1 study_2 [760.1554932594299, 766.108484506607, 772.0475... \n", - "2 study_2 [217.46413779258728, 384.8673374652863, 528.25... \n", - "3 study_2 [66.92191243171692, 112.73558521270752, 160.69... \n", - "4 study_2 [69.21829652786255, 100.36791968345642, 131.37... \n", - "5 study_2 [73.66758489608765, 117.91217398643494, 165.16... \n", - "6 study_2 [430.9598994255066, 619.1788249015808, 805.219... \n", - "7 study_2 [822.588604927063, 1587.762639760971, 2362.179... \n", - "8 study_2 [213.78433752059937, 398.2059817314148, 582.46... \n", - "9 study_1 [188.77722454071045, 312.7835910320282, 442.64... \n", - "10 study_1 [492.18932819366455, 498.1758117675781, 504.15... \n", - "11 study_1 [203.7101473808289, 359.85463786125183, 504.73... \n", - "12 study_1 [64.22895288467407, 110.3433027267456, 158.155... \n", - "13 study_1 [69.31761336326599, 100.1215434074402, 130.890... \n", - "14 study_1 [76.49329495429993, 126.28736090660097, 177.37... \n", - "15 study_1 [427.4002466201782, 614.0150721073151, 810.098... \n", - "16 study_1 [1831.8162851333616, 2940.8095242977142, 4023.... \n", - "17 study_1 [212.2922096252441, 396.8452036380768, 581.214... \n", - "18 study_0 [204.34600377082825, 367.6935625076294, 491.98... \n", - "19 study_0 [437.484735250473, 443.5461227893829, 449.6027... \n", - "20 study_0 [203.9482517242432, 363.925279378891, 512.6730... \n", - "21 study_0 [65.95453000068665, 109.96148371696472, 156.33... \n", - "22 study_0 [68.43934321403503, 99.07515549659728, 129.392... \n", - "23 study_0 [74.78789806365967, 119.78562927246094, 168.01... \n", - "24 study_0 [430.6991605758667, 619.934160232544, 831.0293... \n", - "25 study_0 [838.7503161430359, 1612.8941810131073, 2393.5... \n", - "26 study_0 [211.98661756515503, 394.72000217437744, 577.1... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.47701096534729, 1.2003045082092283, 2.... \n", - "1 [0.0, 0.0622785091400146, 0.1070430278778076, ... \n", - "2 [0.0, 0.1212573051452636, 1.3225586414337158, ... \n", - "3 [0.0, 0.0814568996429443, 0.1356451511383056, ... \n", - "4 [0.0, 0.0756001472473144, 0.1275269985198974, ... \n", - "5 [0.0, 0.4967567920684814, 0.5608904361724854, ... \n", - "6 [0.0, 0.3762044906616211, 0.431117296218872, 0... \n", - "7 [0.0, 0.4165420532226562, 0.4629170894622803, ... \n", - "8 [0.0, 0.0736458301544189, 0.1279859542846679, ... \n", - "9 [0.0, 0.5078859329223633, 2.1586294174194336, ... \n", - "10 [0.0, 0.0880179405212402, 0.1384925842285156, ... \n", - "11 [0.0, 0.105222463607788, 0.5305688381195068, 0... \n", - "12 [0.0, 0.0834097862243652, 0.1391124725341797, ... \n", - "13 [0.0, 0.3581366539001465, 0.4076368808746338, ... \n", - "14 [0.0, 0.4057462215423584, 0.4757955074310303, ... \n", - "15 [0.0, 0.0710034370422363, 0.1229746341705322, ... \n", - "16 [0.0, 0.5121884346008301, 0.6163341999053955, ... \n", - "17 [0.0, 0.0620093345642089, 0.1064913272857666, ... \n", - "18 [0.0, 0.0739712715148925, 0.3498718738555908, ... \n", - "19 [0.0, 0.0731599330902099, 0.1258463859558105, ... \n", - "20 [0.0, 0.0716698169708252, 0.3837392330169678, ... \n", - "21 [0.0, 0.0796918869018554, 0.136481761932373, 0... \n", - "22 [0.0, 0.0763318538665771, 0.1288254261016845, ... \n", - "23 [0.0, 0.0935940742492675, 0.1590816974639892, ... \n", - "24 [0.0, 0.4225220680236816, 0.4740092754364013, ... \n", - "25 [0.0, 0.0677759647369384, 0.1182715892791748, ... \n", - "26 [0.0, 0.1853532791137695, 0.2280802726745605, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [223.5566091537476, 2220.451018333435, 4221.40... \n", - "1 [274.21609234809875, 384.146431684494, 494.799... \n", - "2 [143.68791246414185, 2716.6941499710083, 5282.... \n", - "3 [39.832351207733154, 1786.6674716472626, 3532.... \n", - "4 [29.088769912719727, 480.2086806297302, 931.23... \n", - "5 [71.72973155975342, 1517.2784914970398, 2962.6... \n", - "6 [91.20178198814392, 732.8442416191101, 1374.77... \n", - "7 [36.88804602622986, 392.43705701828, 748.09189... \n", - "8 [66.29437732696533, 2633.4035201072693, 5200.9... \n", - "9 [150.7055730819702, 2142.5213186740875, 4135.7... \n", - "10 [202.63741159439087, 312.07030296325684, 421.4... \n", - "11 [140.07307839393616, 2710.320531129837, 5278.5... \n", - "12 [39.605302572250366, 1786.3815639019012, 3532.... \n", - "13 [44.14009642601013, 495.01899003982544, 946.13... \n", - "14 [68.77526068687439, 1513.8398852348328, 2959.3... \n", - "15 [78.06941366195679, 719.7729306221008, 1361.56... \n", - "16 [41.36652088165283, 397.3475036621094, 753.356... \n", - "17 [63.91058588027954, 2631.978570699692, 5200.04... \n", - "18 [146.17477941513062, 2140.449363470077, 4134.6... \n", - "19 [197.37460255622864, 306.51010155677795, 416.4... \n", - "20 [143.55551767349243, 2712.7365052700043, 5281.... \n", - "21 [37.98716616630554, 1785.667103290558, 3531.99... \n", - "22 [26.34694647789001, 477.3165102005005, 928.345... \n", - "23 [37.15535092353821, 1482.7921550273895, 2928.1... \n", - "24 [89.94409418106079, 731.4727942943573, 1373.53... \n", - "25 [24.22519898414612, 379.8066084384918, 735.507... \n", - "26 [69.51201510429382, 2637.08406162262, 5205.049... \n", - "\n", - " global_step \\\n", - "0 [1, 1991, 4696, 7767, 10830, 13694, 16708, 196... \n", - "1 [1, 268, 333, 401, 469, 535, 606, 674, 737, 80... \n", - "2 [1, 2211, 5276, 8326, 11439, 14481, 17483, 205... \n", - "3 [1, 1593, 3797, 6060, 8421, 10866, 13172, 1542... \n", - "4 [1, 1920, 3847, 5763, 7682, 9597] \n", - "5 [1, 1087, 2694, 4397, 6144, 8054, 9954, 11804,... \n", - "6 [1, 4416, 8827, 13237, 17647, 22065, 26489, 30... \n", - "7 [1, 384, 764, 1140, 1518, 1925, 2337, 2751, 31... \n", - "8 [1, 6515, 13034, 19552, 26073, 32598, 39128] \n", - "9 [1, 3344, 6050, 8673, 11149, 13741, 16218, 187... \n", - "10 [1, 284, 386, 492, 600, 704, 808, 917, 2154, 4... \n", - "11 [1, 2291, 5445, 8486, 11699, 14722, 17901, 209... \n", - "12 [1, 1637, 3787, 6045, 8365, 10808, 13130, 1539... \n", - "13 [1, 1928, 3854, 5764, 7711] \n", - "14 [1, 1114, 2618, 4196, 6031, 7936, 9794, 11550,... \n", - "15 [1, 4410, 8825, 13247, 17666, 22091, 26516, 30... \n", - "16 [1, 197, 392, 594, 791, 985, 1196, 1403, 1603,... \n", - "17 [1, 6532, 13065, 19599, 26142, 32683, 39220] \n", - "18 [1, 1765, 4253, 7220, 10350, 13413, 16464, 195... \n", - "19 [1, 307, 430, 555, 679, 806, 932, 2597, 4856, ... \n", - "20 [1, 2293, 5421, 8448, 11619, 14621, 17716, 207... \n", - "21 [1, 1618, 3787, 6053, 8383, 10830, 13148, 1540... \n", - "22 [1, 1945, 3878, 5802, 7724, 9643] \n", - "23 [1, 1059, 2500, 4037, 5920, 7795, 9584, 11323,... \n", - "24 [1, 4404, 8813, 13222, 17631, 22041, 26451, 30... \n", - "25 [1, 380, 753, 1125, 1499, 1876, 2257, 2688, 31... \n", - "26 [1, 6581, 13174, 19762, 26349, 32942, 39534] \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0] \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0] \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0] \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0] \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "26 [0, 0, 0, 0, 0, 0, 0] \n", - "\n", - " score \\\n", - "0 [223.5566091537476, 2220.451018333435, 4221.40... \n", - "1 [274.21609234809875, 384.146431684494, 494.799... \n", - "2 [143.68791246414185, 2716.6941499710083, 5282.... \n", - "3 [39.832351207733154, 1786.6674716472626, 3532.... \n", - "4 [29.088769912719727, 480.2086806297302, 931.23... \n", - "5 [71.72973155975342, 1517.2784914970398, 2962.6... \n", - "6 [91.20178198814392, 732.8442416191101, 1374.77... \n", - "7 [36.88804602622986, 392.43705701828, 748.09189... \n", - "8 [66.29437732696533, 2633.4035201072693, 5200.9... \n", - "9 [150.7055730819702, 2142.5213186740875, 4135.7... \n", - "10 [202.63741159439087, 312.07030296325684, 421.4... \n", - "11 [140.07307839393616, 2710.320531129837, 5278.5... \n", - "12 [39.605302572250366, 1786.3815639019012, 3532.... \n", - "13 [44.14009642601013, 495.01899003982544, 946.13... \n", - "14 [68.77526068687439, 1513.8398852348328, 2959.3... \n", - "15 [78.06941366195679, 719.7729306221008, 1361.56... \n", - "16 [41.36652088165283, 397.3475036621094, 753.356... \n", - "17 [63.91058588027954, 2631.978570699692, 5200.04... \n", - "18 [146.17477941513062, 2140.449363470077, 4134.6... \n", - "19 [197.37460255622864, 306.51010155677795, 416.4... \n", - "20 [143.55551767349243, 2712.7365052700043, 5281.... \n", - "21 [37.98716616630554, 1785.667103290558, 3531.99... \n", - "22 [26.34694647789001, 477.3165102005005, 928.345... \n", - "23 [37.15535092353821, 1482.7921550273895, 2928.1... \n", - "24 [89.94409418106079, 731.4727942943573, 1373.53... \n", - "25 [24.22519898414612, 379.8066084384918, 735.507... \n", - "26 [69.51201510429382, 2637.08406162262, 5205.049... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0011, 0.18, 0.3715, 0.4419, 0.4909, 0.5267,... ... \n", - "1 NaN ... \n", - "2 [0.0023, 0.0859, 0.2135, 0.3011, 0.3525, 0.400... ... \n", - "3 NaN ... \n", - "4 [0.5055384804575995, 0.9844799572790316, 0.985... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.596978676427866, 0.6477... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0008, 0.3113, 0.4121, 0.4546, 0.4916, 0.512... ... \n", - "10 NaN ... \n", - "11 [0.0017, 0.0847, 0.2289, 0.3118, 0.367, 0.4066... ... \n", - "12 NaN ... \n", - "13 [0.5274087609992596, 0.9844559520029244, 0.985... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.5992911510080763, 0.648... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0012, 0.1592, 0.3589, 0.4236, 0.4711, 0.509... ... \n", - "19 NaN ... \n", - "20 [0.0034, 0.0925, 0.2233, 0.3053, 0.3654, 0.395... ... \n", - "21 NaN ... \n", - "22 [0.5226801427513752, 0.9845886127393052, 0.985... ... \n", - "23 NaN ... \n", - "24 [0.0007088489919237, 0.5973389111614665, 0.647... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.9836527784483174, 0.6400231738521701, 0.315... \n", - "4 NaN \n", - "5 [3.3358760198908897, 0.8947907111475885, 0.277... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.2619610872398976, 0.5497996427364457, 0.276... \n", - "13 NaN \n", - "14 [3.331395741804664, 0.8833679331820595, 0.2785... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.722821416501714, 0.5803698160575484, 0.2726... \n", - "22 NaN \n", - "23 [4.148631294356202, 0.8942886110172356, 0.2919... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0259082690112763, 0.1743363814254526, 0.232... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0301337045027577, 0.1768545035055398, 0.235... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0273175938486598, 0.1771009978188172, 0.232... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0216528224792521, 0.1974636694336906, 0.315... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0228227590453474, 0.1953585983757323, 0.324... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0208646144684521, 0.1960204063187819, 0.314... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0249959488764867, 0.1754256218299787, 0.235... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0268141614113101, 0.1709245205141273, 0.242... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0261832805000614, 0.1711007153690219, 0.236... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 22.23946138116313, 26.048988704203428, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 22.45905354819864, 26.12613522918912, 27... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [5.51818938790284e-10, 22.46300486082346, 26.0... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 27.438174065577453, 30.45630457491916, 3... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 27.755337052687462, 30.658562699131032, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 27.71114771727458, 30.625779000917845, 3... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 23.77091350997772, 27.07742723607471, 27... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 23.93844406580485, 26.988093999738496, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 23.864595572562884, 26.892880832819166, ... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61714.26519868653, 34.09501389684652, 28.3165... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60546.41977921857, 34.152758313136694, 28.535... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [61798.03779735442, 33.95846268590055, 28.2785... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61672.85026165453, 33.85262947305149, 28.0120... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60559.72336142421, 33.91907723842377, 28.2472... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [61827.23145246574, 33.7399426521659, 28.01327... \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n", - "\n", - "=== NAdamW (JAX) (nadamw) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial study \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "1 fastmri_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "2 wmt_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "3 ogbg_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "7 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "8 criteo1tb_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "9 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "10 fastmri_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "11 wmt_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "12 ogbg_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "13 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "14 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "15 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "16 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "17 criteo1tb_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "18 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "19 fastmri_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "20 wmt_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "21 ogbg_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "22 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "23 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "24 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "25 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "26 criteo1tb_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [51.90237808227539, 74.61932420730591, 100.193... \n", - "1 [83.20116424560547, 86.73755669593811, 90.4861... \n", - "2 [918.2941384315492, 1483.377329826355, 1897.80... \n", - "3 [248.5209014415741, 361.0606143474579, 473.883... \n", - "4 [219.1846687793732, 337.8954961299896, 453.558... \n", - "5 [261.92410469055176, 361.2731699943543, 460.49... \n", - "6 [64.1781919002533, 87.87314581871033, 115.1403... \n", - "7 [331.91812682151794, 662.5534150600433, 993.04... \n", - "8 [909.4134500026704, 1764.604056596756, 2619.72... \n", - "9 [50.81052589416504, 73.91916966438293, 97.1627... \n", - "10 [408.10442304611206, 411.8153114318848, 415.31... \n", - "11 [920.1400611400604, 1469.083578824997, 2000.24... \n", - "12 [249.5406184196472, 362.92584133148193, 477.28... \n", - "13 [226.3898389339447, 346.6491906642914, 460.955... \n", - "14 [260.0466949939728, 367.05646300315857, 477.52... \n", - "15 [63.57307243347168, 90.2947325706482, 118.4526... \n", - "16 [332.2260537147522, 662.931601524353, 993.0545... \n", - "17 [938.9255018234252, 1804.9299864768984, 2630.1... \n", - "18 [54.63754725456238, 77.89591932296753, 101.496... \n", - "19 [457.8655505180359, 461.6156964302063, 465.164... \n", - "20 [913.3675830364228, 1442.9277577400208, 1980.4... \n", - "21 [247.726003408432, 361.8750648498535, 475.4744... \n", - "22 [203.3264138698578, 294.3983256816864, 415.929... \n", - "23 [281.4623284339905, 380.5997538566589, 483.789... \n", - "24 [64.80931448936462, 88.1339979171753, 115.9059... \n", - "25 [331.7922477722168, 662.2826445102692, 992.787... \n", - "26 [950.9594469070436, 1796.3951213359833, 2628.8... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0643026828765869, 0.189241886138916, 0... \n", - "1 [0.0, 0.0716164112091064, 0.1251900196075439, ... \n", - "2 [0.0, 0.071897268295288, 0.1258275508880615, 0... \n", - "3 [0.0, 0.9330494403839112, 0.9896271228790284, ... \n", - "4 [0.0, 0.2512969970703125, 0.3478367328643799, ... \n", - "5 [0.0, 0.0934476852416992, 0.1613273620605468, ... \n", - "6 [0.0, 0.0660862922668457, 0.1697111129760742, ... \n", - "7 [0.0, 0.3485991954803467, 0.4040088653564453, ... \n", - "8 [0.0, 0.0675971508026123, 0.1269857883453369, ... \n", - "9 [0.0, 0.0805227756500244, 0.1315207481384277, ... \n", - "10 [0.0, 0.0922513008117675, 0.1471989154815673, ... \n", - "11 [0.0, 0.0776503086090087, 0.1299726963043213, ... \n", - "12 [0.0, 0.8798964023590088, 0.9376168251037598, ... \n", - "13 [0.0, 0.3227369785308838, 0.3912594318389892, ... \n", - "14 [0.0, 0.3094844818115234, 0.3819949626922607, ... \n", - "15 [0.0, 0.0685133934020996, 0.2416143417358398, ... \n", - "16 [0.0, 0.4288389682769775, 0.4814865589141845, ... \n", - "17 [0.0, 0.0785014629364013, 0.1327707767486572, ... \n", - "18 [0.0, 0.4143304824829101, 0.4707992076873779, ... \n", - "19 [0.0, 0.3232505321502685, 0.3784902095794678, ... \n", - "20 [0.0, 0.071552038192749, 0.1300771236419677, 0... \n", - "21 [0.0, 0.8936796188354492, 0.9475176334381104, ... \n", - "22 [0.0, 0.3477139472961426, 0.4777727127075195, ... \n", - "23 [0.0, 0.1012487411499023, 0.173581838607788, 0... \n", - "24 [0.0, 0.0654864311218261, 0.1694397926330566, ... \n", - "25 [0.0, 0.362922191619873, 0.4159901142120361, 0... \n", - "26 [0.0, 0.0608084201812744, 0.1265900135040283, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [54.01124930381775, 2050.06639623642, 4046.122... \n", - "1 [45.05637097358704, 155.0656714439392, 265.088... \n", - "2 [57.002378702163696, 701.0134603977203, 1344.9... \n", - "3 [18.658089876174927, 469.7143471240997, 921.76... \n", - "4 [193.8554151058197, 1946.682010889053, 3694.73... \n", - "5 [150.94626140594482, 1598.380912065506, 3046.2... \n", - "6 [50.08027577400208, 2621.24298453331, 5192.111... \n", - "7 [24.989517211914062, 2595.821537733078, 5166.9... \n", - "8 [8.362662315368652, 364.9388041496277, 722.021... \n", - "9 [50.25774669647217, 2046.2609922885893, 4042.1... \n", - "10 [148.6376919746399, 258.60642552375793, 369.94... \n", - "11 [56.65945386886597, 700.674159526825, 1344.642... \n", - "12 [21.087809085845947, 472.202406167984, 924.209... \n", - "13 [195.5174601078033, 1945.6045894622805, 3701.9... \n", - "14 [137.36308789253235, 1586.2535910606384, 3037.... \n", - "15 [50.80202078819275, 2621.868891000748, 5192.77... \n", - "16 [23.087243795394897, 2593.6414427757263, 5164.... \n", - "17 [8.478259801864624, 364.45390701293945, 720.53... \n", - "18 [63.32855319976807, 2059.0223972797394, 4054.9... \n", - "19 [169.98700952529907, 280.22419810295105, 390.6... \n", - "20 [55.58284568786621, 699.517596244812, 1343.459... \n", - "21 [20.859290599823, 472.1289200782776, 924.06205... \n", - "22 [177.73914647102356, 1927.8040823936465, 3678.... \n", - "23 [152.2013635635376, 1607.698400259018, 3061.36... \n", - "24 [51.87806582450867, 2623.07006764412, 5194.006... \n", - "25 [24.786927700042725, 2595.75295329094, 5166.66... \n", - "26 [7.995659112930298, 364.401686668396, 721.1048... \n", - "\n", - " global_step \\\n", - "0 [1, 7484, 15392, 23307, 31219, 39132, 47046, 5... \n", - "1 [1, 759, 1767, 2783, 3799, 4815, 5831, 6847, 7... \n", - "2 [1, 4727, 9888, 15052, 20216, 25380, 30542, 35... \n", - "3 [1, 2182, 4462, 6877, 9271, 11667, 14068, 1645... \n", - "4 [1, 511, 1059, 1744, 2462, 3095, 3951, 4845, 5... \n", - "5 [1, 385, 731, 1103, 1570, 1905, 2409, 2829, 32... \n", - "6 [1, 5822, 11781, 17736, 23689, 29637, 35583, 4... \n", - "7 [1, 5839, 11720, 17606, 23488, 29371, 35253, 4... \n", - "8 [1, 383, 774, 1158, 1547, 1933, 2340, 2745, 31... \n", - "9 [1, 7771, 15681, 23593, 31509, 39427, 47346, 5... \n", - "10 [1, 299, 426, 551, 679, 808, 938, 1788, 2805, ... \n", - "11 [1, 4641, 9662, 14686, 19710, 24734, 29757, 34... \n", - "12 [1, 2161, 4424, 6736, 9040, 11396, 13772, 1613... \n", - "13 [1, 499, 1019, 1682, 2405, 3018, 3878, 4754, 5... \n", - "14 [1, 626, 1075, 1673, 2122, 2729, 3142, 3745, 4... \n", - "15 [1, 5471, 11027, 16609, 22175, 27741, 33299, 3... \n", - "16 [1, 5855, 11751, 17648, 23546, 29444, 35342, 4... \n", - "17 [1, 384, 764, 1139, 1521, 1904, 2290, 2668, 30... \n", - "18 [1, 7699, 15657, 23617, 31577, 39538, 47499, 5... \n", - "19 [1, 289, 404, 518, 632, 743, 860, 1006, 2022, ... \n", - "20 [1, 4768, 9931, 15095, 20257, 25419, 30582, 35... \n", - "21 [1, 2195, 4492, 6758, 9024, 11376, 13746, 1609... \n", - "22 [1, 876, 1712, 2451, 3066, 3904, 4748, 5551, 6... \n", - "23 [1, 399, 792, 1319, 1805, 2382, 2924, 3609, 41... \n", - "24 [1, 5728, 11632, 17549, 23457, 29355, 35249, 4... \n", - "25 [1, 5841, 11719, 17599, 23484, 29368, 35250, 4... \n", - "26 [1, 385, 774, 1165, 1566, 1972, 2382, 2795, 32... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [54.01124930381775, 2050.06639623642, 4046.122... \n", - "1 [45.05637097358704, 155.0656714439392, 265.088... \n", - "2 [57.002378702163696, 701.0134603977203, 1344.9... \n", - "3 [18.658089876174927, 469.7143471240997, 921.76... \n", - "4 [193.8554151058197, 1946.682010889053, 3694.73... \n", - "5 [150.94626140594482, 1598.380912065506, 3046.2... \n", - "6 [50.08027577400208, 2621.24298453331, 5192.111... \n", - "7 [24.989517211914062, 2595.821537733078, 5166.9... \n", - "8 [8.362662315368652, 364.9388041496277, 722.021... \n", - "9 [50.25774669647217, 2046.2609922885893, 4042.1... \n", - "10 [148.6376919746399, 258.60642552375793, 369.94... \n", - "11 [56.65945386886597, 700.674159526825, 1344.642... \n", - "12 [21.087809085845947, 472.202406167984, 924.209... \n", - "13 [195.5174601078033, 1945.6045894622805, 3701.9... \n", - "14 [137.36308789253235, 1586.2535910606384, 3037.... \n", - "15 [50.80202078819275, 2621.868891000748, 5192.77... \n", - "16 [23.087243795394897, 2593.6414427757263, 5164.... \n", - "17 [8.478259801864624, 364.45390701293945, 720.53... \n", - "18 [63.32855319976807, 2059.0223972797394, 4054.9... \n", - "19 [169.98700952529907, 280.22419810295105, 390.6... \n", - "20 [55.58284568786621, 699.517596244812, 1343.459... \n", - "21 [20.859290599823, 472.1289200782776, 924.06205... \n", - "22 [177.73914647102356, 1927.8040823936465, 3678.... \n", - "23 [152.2013635635376, 1607.698400259018, 3061.36... \n", - "24 [51.87806582450867, 2623.07006764412, 5194.006... \n", - "25 [24.786927700042725, 2595.75295329094, 5166.66... \n", - "26 [7.995659112930298, 364.401686668396, 721.1048... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.00080000004, 0.32520002, 0.43190002, 0.4439... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5578758120536804, 0.153... ... \n", - "3 [0.5102195143699646, 0.9840373396873474, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.1606, 0.3122, 0.37340003, 0.4185, 0.... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.00070000003, 0.3255, 0.43240002, 0.4401, 0.... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5554935932159424, 0.616... ... \n", - "12 [0.4708649516105652, 0.9835235476493835, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.1605, 0.31100002, 0.36380002, 0.4216... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.001, 0.3305, 0.4397, 0.45880002, 0.4771, 0.... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.5538667440414429, 0.618... ... \n", - "21 [0.4984333217144012, 0.9833184480667114, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.16510001, 0.3086, 0.3727, 0.4162, 0.... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0258855407948226, 0.1453424219634816, 0.191... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0263018970347086, 0.0911030511403518, 0.155... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0265466781666688, 0.0600200756094912, 0.191... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.492715, 1.512555, 1.5208834, 1.4962583, 1.1... \n", - "5 [7.734332, 1.5984704, 1.4983822, 1.4902854, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.7254257, 1.5097554, 1.5235134, 1.5611156, 1... \n", - "14 [7.9693704, 1.4721419, 1.5703008, 1.4840963, 1... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.605018, 1.5239444, 1.4940355, 1.235258, 0.9... \n", - "23 [7.731372, 1.8455368, 1.4765694, 1.582876, 1.3... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0186257185221297, 0.899579550301627, 0.8995... \n", - "5 [3.733268336278512, 0.899579550301627, 0.89957... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.2072796701399469, 0.899579550301627, 0.8995... \n", - "14 [4.181544898746775, 0.899579550301627, 0.86381... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.3121280441979972, 0.899579550301627, 0.8882... \n", - "23 [2.497085288322873, 0.8995592387219954, 0.8796... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.7295585, 1.4977634, 1.4994171, 1.4757148, 1... \n", - "5 [8.001505, 1.5861665, 1.5134705, 1.5157527, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.9380255, 1.4967417, 1.5009909, 1.5485442, 1... \n", - "14 [8.233555, 1.4928513, 1.5939622, 1.5210807, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.818481, 1.5057889, 1.4813172, 1.2193857, 0.... \n", - "23 [7.9176316, 1.9335651, 1.5028745, 1.6277757, 1... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9577077650292568, 0.944635537887994, 0.9427... \n", - "5 [3.8553661787060367, 0.944635537887994, 0.9427... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9770995148158176, 0.944635537887994, 0.9427... \n", - "14 [4.364689836120192, 0.944635537887994, 0.89613... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.823928117776899, 0.944635537887994, 0.92561... \n", - "23 [2.652874664223393, 0.94460979176536, 0.915723... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.455666, 1.5172017, 1.5281371, 1.5189266, 1.... \n", - "5 [7.6729517, 1.5870099, 1.5094107, 1.502723, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.68937, 1.5142854, 1.5281829, 1.5763985, 1.3... \n", - "14 [7.949968, 1.4857459, 1.5876447, 1.4987065, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.582479, 1.5293611, 1.5134667, 1.2799089, 1.... \n", - "23 [7.6922774, 1.8962749, 1.5027236, 1.6092181, 1... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.015680973301791, 0.8967218654950997, 0.8967... \n", - "5 [3.415536136725728, 0.8967218654950997, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.2079273885965336, 0.8967218654950997, 0.896... \n", - "14 [3.8022691063583256, 0.8967218654950997, 0.869... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.2364022594505866, 0.8967218654950997, 0.886... \n", - "23 [2.3874861198281274, 0.8966542750929368, 0.879... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62594.01908065168, 55.88392690877435, 35.2134... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62044.45258363767, 64.09513362355591, 76.5764... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61618.94619976116, 101.82743547934614, 40.402... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62582.439456052765, 56.1059142324853, 35.2683... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62167.29302458106, 64.34360168840612, 76.9715... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61641.80979454679, 102.33380914052852, 40.516... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== NAdamW (Baseline AlgoPerf v0.5) (JAX) (nadamw_baselinev05) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_conformer_jax \n", - "23 librispeech_deepspeech_jax \n", - "24 imagenet_vit_jax \n", - "25 finewebedu_lm_jax \n", - "26 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "1 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "2 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "3 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "4 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "5 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "6 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "7 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "8 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "9 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "10 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "11 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "12 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "13 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "14 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "15 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "16 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "17 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "18 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "19 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "20 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "21 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "22 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "23 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "24 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "25 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "26 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [51.48059797286987, 73.4251639842987, 96.22257... \n", - "1 [527.0430819988251, 535.2879242897034, 557.935... \n", - "2 [927.469242811203, 1462.9391164779663, 2005.10... \n", - "3 [219.04566764831543, 320.37520575523376, 420.2... \n", - "4 [226.3667311668396, 331.0051839351654, 459.643... \n", - "5 [270.2883107662201, 401.80145740509033, 534.31... \n", - "6 [65.4846076965332, 88.84808611869812, 116.2070... \n", - "7 [331.81660509109497, 662.8467864990234, 993.39... \n", - "8 [1046.161494255066, 1931.1954009532928, 2820.1... \n", - "9 [52.30318260192871, 74.87603306770325, 98.0546... \n", - "10 [526.7056274414062, 530.5104801654816, 534.031... \n", - "11 [915.241138458252, 1509.479169845581, 2009.474... \n", - "12 [255.142140865326, 370.1265525817871, 481.8985... \n", - "13 [240.8509469032288, 359.4669075012207, 482.155... \n", - "14 [270.2786633968353, 407.4143099784851, 540.229... \n", - "15 [65.79198789596558, 89.84797239303589, 117.064... \n", - "16 [331.56597232818604, 662.2329275608063, 992.52... \n", - "17 [1005.4547564983368, 1858.024605512619, 2701.0... \n", - "18 [53.99652576446533, 76.33750796318054, 99.7673... \n", - "19 [516.190141916275, 519.9189643859863, 523.4413... \n", - "20 [912.2646050453186, 1507.2980360984802, 2077.3... \n", - "21 [244.2597694396973, 353.99645233154297, 464.94... \n", - "22 [233.7892622947693, 354.4134202003479, 482.702... \n", - "23 [272.44037342071533, 421.2152700424194, 535.76... \n", - "24 [66.5149998664856, 90.60617542266846, 115.4130... \n", - "25 [331.94024991989136, 661.9062061309814, 991.95... \n", - "26 [1014.4777808189392, 1898.8417718410487, 2780.... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0588934421539306, 0.1068084239959716, ... \n", - "1 [0.0, 0.0753395557403564, 0.1214032173156738, ... \n", - "2 [0.0, 0.4413132667541504, 0.4809820652008056, ... \n", - "3 [0.0, 0.0553259849548339, 0.0874829292297363, ... \n", - "4 [0.0, 0.3954536914825439, 0.8953216075897217, ... \n", - "5 [0.0, 0.0848715305328369, 0.1357815265655517, ... \n", - "6 [0.0, 0.0538709163665771, 0.169656753540039, 0... \n", - "7 [0.0, 0.0853385925292968, 0.1204423904418945, ... \n", - "8 [0.0, 0.5279953479766846, 0.5611443519592285, ... \n", - "9 [0.0, 0.423630952835083, 0.5124669075012207, 0... \n", - "10 [0.0, 0.0588860511779785, 0.0931234359741211, ... \n", - "11 [0.0, 0.4755475521087646, 0.5128471851348877, ... \n", - "12 [0.0, 0.3936202526092529, 0.4314403533935547, ... \n", - "13 [0.0, 0.1062839031219482, 0.1825306415557861, ... \n", - "14 [0.0, 0.0766007900238037, 0.1258268356323242, ... \n", - "15 [0.0, 0.0545308589935302, 0.1488237380981445, ... \n", - "16 [0.0, 0.3716053962707519, 0.4050438404083252, ... \n", - "17 [0.0, 0.0472693443298339, 0.079982042312622, 0... \n", - "18 [0.0, 0.0527141094207763, 0.1315462589263916, ... \n", - "19 [0.0, 0.4149324893951416, 0.4587612152099609, ... \n", - "20 [0.0, 0.0525336265563964, 0.0916855335235595, ... \n", - "21 [0.0, 0.1107754707336425, 0.1471850872039795, ... \n", - "22 [0.0, 0.3880486488342285, 0.4384136199951172, ... \n", - "23 [0.0, 0.3426601886749267, 0.3931038379669189, ... \n", - "24 [0.0, 0.0515773296356201, 0.1762659549713134, ... \n", - "25 [0.0, 0.0543961524963378, 0.0900564193725586, ... \n", - "26 [0.0, 0.3007435798645019, 0.3315153121948242, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [57.07999563217163, 2053.151053905487, 4049.10... \n", - "1 [181.3655138015747, 292.1376211643219, 402.424... \n", - "2 [60.29005146026611, 703.9345781803131, 1347.95... \n", - "3 [18.382744312286377, 470.431764125824, 922.454... \n", - "4 [182.0630955696106, 1936.099143743515, 3686.69... \n", - "5 [143.99548768997192, 1591.621477842331, 3040.8... \n", - "6 [52.34902095794678, 2623.535446166992, 5194.48... \n", - "7 [20.67739987373352, 2591.5677597522736, 5162.6... \n", - "8 [12.02135729789734, 368.27277421951294, 724.80... \n", - "9 [58.50454592704773, 2054.155114889145, 4050.07... \n", - "10 [178.14231944084167, 288.94940090179443, 399.6... \n", - "11 [60.05821514129639, 703.5853009223938, 1347.61... \n", - "12 [21.65388512611389, 473.26898407936096, 925.33... \n", - "13 [196.92340350151065, 1957.001183271408, 3712.4... \n", - "14 [144.58999013900757, 1595.8152797222135, 3051.... \n", - "15 [52.16976881027222, 2623.3687257766724, 5194.2... \n", - "16 [23.976256608963013, 2594.753819465637, 5166.0... \n", - "17 [8.3849778175354, 364.54811835289, 721.0765557... \n", - "18 [54.72272038459778, 2050.6129372119904, 4046.5... \n", - "19 [186.7236540317536, 297.0783066749573, 408.148... \n", - "20 [53.981388092041016, 697.932382106781, 1341.92... \n", - "21 [19.190465450286865, 471.20962142944336, 923.3... \n", - "22 [199.12085151672363, 1950.232220411301, 3710.3... \n", - "23 [157.0471408367157, 1616.143168449402, 3071.72... \n", - "24 [50.729454040527344, 2621.853657960892, 5192.8... \n", - "25 [20.844071865081787, 2592.067393064499, 5163.1... \n", - "26 [11.317752122879028, 367.5072982311249, 724.64... \n", - "\n", - " global_step \\\n", - "0 [1, 7656, 15628, 23600, 31573, 39545, 47518, 5... \n", - "1 [1, 271, 374, 475, 574, 674, 775, 879, 1110, 2... \n", - "2 [1, 4672, 9784, 14897, 20011, 25125, 30238, 35... \n", - "3 [1, 2333, 4799, 7254, 9696, 12164, 14616, 1708... \n", - "4 [1, 832, 1644, 2367, 3001, 3798, 4485, 5066, 5... \n", - "5 [1, 421, 824, 1319, 1739, 2189, 2734, 3180, 37... \n", - "6 [1, 5695, 11540, 17384, 23255, 29130, 34987, 4... \n", - "7 [1, 5843, 11725, 17610, 23495, 29379, 35264, 4... \n", - "8 [1, 355, 718, 1087, 1452, 1838, 2231, 2620, 30... \n", - "9 [1, 7630, 15587, 23545, 31504, 39462, 47421, 5... \n", - "10 [1, 284, 389, 493, 599, 707, 818, 924, 1555, 2... \n", - "11 [1, 4758, 9913, 15066, 20222, 25376, 30531, 35... \n", - "12 [1, 2140, 4397, 6763, 9130, 11501, 13847, 1619... \n", - "13 [1, 487, 975, 1621, 2149, 2840, 3581, 4145, 48... \n", - "14 [1, 388, 783, 1234, 1679, 2065, 2663, 3064, 37... \n", - "15 [1, 5726, 11653, 17582, 23487, 29391, 35285, 4... \n", - "16 [1, 5844, 11728, 17613, 23499, 29383, 35269, 4... \n", - "17 [1, 366, 764, 1163, 1574, 1987, 2391, 2802, 32... \n", - "18 [1, 7420, 15390, 23361, 31333, 39305, 47278, 5... \n", - "19 [1, 284, 396, 497, 604, 708, 817, 922, 1563, 2... \n", - "20 [1, 4767, 9942, 15117, 20292, 25467, 30640, 35... \n", - "21 [1, 2182, 4461, 6805, 9136, 11492, 13882, 1625... \n", - "22 [1, 459, 931, 1573, 2061, 2795, 3504, 4101, 48... \n", - "23 [1, 391, 775, 1233, 1683, 2061, 2659, 3055, 37... \n", - "24 [1, 5559, 11304, 17051, 22802, 28550, 34288, 4... \n", - "25 [1, 5871, 11784, 17691, 23603, 29515, 35425, 4... \n", - "26 [1, 363, 752, 1135, 1514, 1903, 2304, 2707, 31... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [57.07999563217163, 2053.151053905487, 4049.10... \n", - "1 [181.3655138015747, 292.1376211643219, 402.424... \n", - "2 [60.29005146026611, 703.9345781803131, 1347.95... \n", - "3 [18.382744312286377, 470.431764125824, 922.454... \n", - "4 [182.0630955696106, 1936.099143743515, 3686.69... \n", - "5 [143.99548768997192, 1591.621477842331, 3040.8... \n", - "6 [52.34902095794678, 2623.535446166992, 5194.48... \n", - "7 [20.67739987373352, 2591.5677597522736, 5162.6... \n", - "8 [12.02135729789734, 368.27277421951294, 724.80... \n", - "9 [58.50454592704773, 2054.155114889145, 4050.07... \n", - "10 [178.14231944084167, 288.94940090179443, 399.6... \n", - "11 [60.05821514129639, 703.5853009223938, 1347.61... \n", - "12 [21.65388512611389, 473.26898407936096, 925.33... \n", - "13 [196.92340350151065, 1957.001183271408, 3712.4... \n", - "14 [144.58999013900757, 1595.8152797222135, 3051.... \n", - "15 [52.16976881027222, 2623.3687257766724, 5194.2... \n", - "16 [23.976256608963013, 2594.753819465637, 5166.0... \n", - "17 [8.3849778175354, 364.54811835289, 721.0765557... \n", - "18 [54.72272038459778, 2050.6129372119904, 4046.5... \n", - "19 [186.7236540317536, 297.0783066749573, 408.148... \n", - "20 [53.981388092041016, 697.932382106781, 1341.92... \n", - "21 [19.190465450286865, 471.20962142944336, 923.3... \n", - "22 [199.12085151672363, 1950.232220411301, 3710.3... \n", - "23 [157.0471408367157, 1616.143168449402, 3071.72... \n", - "24 [50.729454040527344, 2621.853657960892, 5192.8... \n", - "25 [20.844071865081787, 2592.067393064499, 5163.1... \n", - "26 [11.317752122879028, 367.5072982311249, 724.64... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0012, 0.38340002, 0.46040002, 0.47410002, 0... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5964441299438477, 0.642... ... \n", - "3 [0.5210707187652588, 0.984122395515442, 0.9849... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.19890001, 0.30890003, 0.36620003, 0.... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0014000001, 0.41640002, 0.476, 0.4778, 0.47... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5985823273658752, 0.643... ... \n", - "12 [0.469358742237091, 0.9838326573371888, 0.9848... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.2081, 0.312, 0.35990003, 0.39000002,... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0014000001, 0.4074, 0.44810003, 0.48060003,... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.5977340340614319, 0.643... ... \n", - "21 [0.5575313568115234, 0.983700394630432, 0.9848... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.1939, 0.30580002, 0.35880002, 0.3893... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0270683581755436, 0.138084589199829, 0.2014... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0238374525540801, 0.1235515116206334, 0.188... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0258794911954426, 0.1233214487062388, 0.184... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.7893734, 1.5569134, 0.7816637, 0.33895457, ... \n", - "5 [7.9498143, 1.8458463, 1.6090199, 1.0635448, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.420385, 1.5377542, 1.6539252, 0.83131987, 0... \n", - "14 [7.579191, 2.1455815, 1.5669287, 1.0533187, 0.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.5091677, 1.5375171, 1.5154927, 0.9313895, 0... \n", - "23 [7.557977, 2.6499298, 1.5801556, 1.1599587, 0.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1443950196006742, 0.899579550301627, 0.6092... \n", - "5 [4.3135701663518375, 0.8883472467653809, 0.875... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.486746694290415, 0.899579550301627, 0.89957... \n", - "14 [4.266386366867751, 0.898096804988524, 0.87224... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.2378079743261634, 0.899579550301627, 0.8442... \n", - "23 [3.96404850405216, 1.4803891698657403, 0.89214... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.067161, 1.5562251, 0.7666309, 0.31811875, 0... \n", - "5 [8.217965, 1.8823749, 1.6590989, 1.0879582, 0.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.592122, 1.5153767, 1.6286683, 0.8071933, 0.... \n", - "14 [7.781205, 2.185777, 1.6250331, 1.0760787, 0.7... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.4922957, 1.5135964, 1.5111984, 0.90626943, ... \n", - "23 [7.7852664, 2.7112598, 1.655505, 1.1919456, 0.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.5621941569664537, 0.944635537887994, 0.6359... \n", - "5 [4.457614059929617, 0.9309334514222158, 0.9120... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.5760573058742686, 0.944635537887994, 0.9427... \n", - "14 [4.3928117776898565, 0.9148421247760088, 0.905... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1579920038314977, 0.944635537887994, 0.8746... \n", - "23 [4.115569622889033, 1.475525735824185, 0.93507... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.7558722, 1.5612252, 0.8580343, 0.42480075, ... \n", - "5 [7.9095807, 1.7953491, 1.6158592, 1.1193374, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.3912134, 1.5439751, 1.6546396, 0.90609497, ... \n", - "14 [7.5240173, 2.063898, 1.574347, 1.1183578, 0.7... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.508502, 1.5437258, 1.5247517, 1.0140566, 0.... \n", - "23 [7.5553584, 2.5397453, 1.5961149, 1.2081991, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0818230097040509, 0.8967218654950997, 0.629... \n", - "5 [4.088417901800802, 0.8890841500506929, 0.8780... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.415140250084488, 0.8967218654950997, 0.8967... \n", - "14 [4.004180949162362, 0.887230241877082, 0.87083... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.2195046589098637, 0.8967218654950997, 0.847... \n", - "23 [3.802336696760489, 1.3315598899242025, 0.8789... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [61125.081892343725, 38.930879310723, 30.96462... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61886.55107597829, 34.8090996111288, 29.41887... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60572.81342579189, 35.33258924358858, 29.8471... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [61100.19566912408, 39.0625230274158, 30.98799... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61866.01565802664, 34.88622580915558, 29.4451... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60560.85689156154, 35.413644617271856, 29.875... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== NAdamW (Tuned for ResNet) (JAX) (nadamw_resnet) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "1 fastmri_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "2 wmt_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "3 ogbg_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "7 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "8 criteo1tb_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "9 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "10 fastmri_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "11 wmt_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "12 ogbg_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "13 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "14 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "15 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "16 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "17 criteo1tb_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "18 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "19 fastmri_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "20 wmt_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "21 ogbg_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "22 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "23 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "24 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "25 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "26 criteo1tb_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [53.29654121398926, 115.63498711586, 139.29829... \n", - "1 study_2 [453.4438452720642, 457.160356760025, 460.6911... \n", - "2 study_2 [924.1258401870728, 1457.3507525920868, 2000.3... \n", - "3 study_2 [250.6691026687622, 366.0902395248413, 479.400... \n", - "4 study_2 [252.27302074432373, 336.8422429561615, 422.03... \n", - "5 study_2 [283.492680311203, 424.80824542045593, 525.113... \n", - "6 study_2 [150.5804958343506, 189.68872237205505, 223.59... \n", - "7 study_2 [331.625947713852, 661.9047589302063, 992.0981... \n", - "8 study_2 [1952.1147503852844, 3078.5715944767, 4169.168... \n", - "9 study_1 [78.33134531974792, 114.29001092910768, 163.43... \n", - "10 study_1 [85.53649091720581, 89.18137168884277, 92.8939... \n", - "11 study_1 [915.6409890651704, 1444.0456948280334, 1955.7... \n", - "12 study_1 [250.17895197868347, 364.3520033359528, 475.83... \n", - "13 study_1 [225.57179021835327, 309.71030354499817, 395.5... \n", - "14 study_1 [257.91099095344543, 383.0134937763214, 506.66... \n", - "15 study_1 [100.28288722038268, 143.33695363998413, 294.6... \n", - "16 study_1 [332.7293808460236, 663.5938847064972, 994.281... \n", - "17 study_1 [1826.845852851868, 2953.5929737091064, 4085.8... \n", - "18 study_0 [63.78324842453003, 87.2724232673645, 111.2803... \n", - "19 study_0 [879.2363409996033, 882.9452555179596, 886.479... \n", - "20 study_0 [921.9990084171296, 1482.3677189350128, 2025.1... \n", - "21 study_0 [243.044406414032, 353.09494495391846, 464.023... \n", - "22 study_0 [231.45204496383667, 315.4791302680969, 401.01... \n", - "23 study_0 [266.5336260795593, 366.03945994377136, 468.15... \n", - "24 study_0 [65.17453026771545, 90.2965326309204, 114.9187... \n", - "25 study_0 [331.38761615753174, 661.472690820694, 991.331... \n", - "26 study_0 [988.8383266925812, 1856.9860820770264, 2722.7... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3289008140563965, 0.389009952545166, 0... \n", - "1 [0.0, 0.0736641883850097, 0.1256110668182373, ... \n", - "2 [0.0, 0.4305415153503418, 0.4793281555175781, ... \n", - "3 [0.0, 0.2901830673217773, 0.3422510623931885, ... \n", - "4 [0.0, 0.0801565647125244, 0.143794298171997, 0... \n", - "5 [0.0, 0.1627664566040039, 0.2294199466705322, ... \n", - "6 [0.0, 0.3548729419708252, 0.4607384204864502, ... \n", - "7 [0.0, 0.3151876926422119, 0.3716461658477783, ... \n", - "8 [0.0, 0.062443733215332, 0.1093182563781738, 0... \n", - "9 [0.0, 0.3486645221710205, 0.4194879531860351, ... \n", - "10 [0.0, 0.0682744979858398, 0.1189737319946289, ... \n", - "11 [0.0, 0.0643017292022705, 0.1167762279510498, ... \n", - "12 [0.0, 0.2870972156524658, 0.3424808979034424, ... \n", - "13 [0.0, 0.137164831161499, 0.1980307102203369, 0... \n", - "14 [0.0, 0.0884673595428466, 0.1594488620758056, ... \n", - "15 [0.0, 0.3183367252349853, 1.2613790035247805, ... \n", - "16 [0.0, 0.3594353199005127, 0.4052844047546386, ... \n", - "17 [0.0, 0.0635986328125, 0.1126964092254638, 0.1... \n", - "18 [0.0, 0.062251329421997, 0.1078212261199951, 0... \n", - "19 [0.0, 0.4676225185394287, 0.5206451416015625, ... \n", - "20 [0.0, 0.0689847469329834, 0.120880126953125, 0... \n", - "21 [0.0, 0.6357436180114746, 0.6879937648773193, ... \n", - "22 [0.0, 0.0791037082672119, 0.13938570022583, 0.... \n", - "23 [0.0, 0.344494104385376, 0.4062361717224121, 0... \n", - "24 [0.0, 0.2889273166656494, 0.4219453334808349, ... \n", - "25 [0.0, 0.0625267028808593, 0.109027624130249, 0... \n", - "26 [0.0, 0.4707968235015869, 0.5205724239349365, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [57.370943546295166, 2052.9768857955933, 4048.... \n", - "1 [159.05283117294312, 269.370676279068, 379.638... \n", - "2 [60.93853545188904, 704.4676430225372, 1348.46... \n", - "3 [21.488929271698, 473.3029658794403, 925.32346... \n", - "4 [184.19038033485413, 1931.8993709087367, 3683.... \n", - "5 [147.42911887168884, 1603.638286113739, 3058.8... \n", - "6 [60.48145341873169, 2631.391207695008, 5202.38... \n", - "7 [23.766636848449707, 2594.640924453736, 5165.8... \n", - "8 [9.134706497192385, 366.75317430496216, 723.89... \n", - "9 [64.76098799705505, 2060.5522677898407, 4056.5... \n", - "10 [45.82640838623047, 155.79204893112183, 265.83... \n", - "11 [55.83711576461792, 699.7939651012421, 1343.73... \n", - "12 [20.25373125076294, 472.061416387558, 924.0924... \n", - "13 [185.1137638092041, 1933.8555619716644, 3685.3... \n", - "14 [141.80748629570007, 1598.4305255413055, 3053.... \n", - "15 [64.88337397575378, 2635.93419456482, 5206.104... \n", - "16 [23.105996131896973, 2593.917392253876, 5165.2... \n", - "17 [9.00504755973816, 365.6705503463745, 723.2133... \n", - "18 [56.7663676738739, 2052.791997671128, 4048.826... \n", - "19 [256.4748523235321, 366.6771492958069, 478.321... \n", - "20 [56.687952518463135, 700.6354627609253, 1344.5... \n", - "21 [18.997504949569706, 470.4265224933624, 922.47... \n", - "22 [186.2298052310944, 1941.9859285354607, 3690.9... \n", - "23 [150.63363099098206, 1602.490621328354, 3049.7... \n", - "24 [55.54096364974976, 2626.3958835601807, 5197.2... \n", - "25 [21.72627210617065, 2592.6500630378723, 5163.8... \n", - "26 [10.201725006103516, 366.3240540027618, 722.28... \n", - "\n", - " global_step \\\n", - "0 [1, 7744, 15718, 23693, 31668, 39645, 47622, 5... \n", - "1 [1, 283, 396, 505, 621, 734, 852, 1026, 2043, ... \n", - "2 [1, 4699, 9848, 14998, 20148, 25296, 30444, 35... \n", - "3 [1, 2158, 4415, 6743, 9076, 11421, 13800, 1616... \n", - "4 [1, 467, 919, 1635, 2270, 2939, 3707, 4465, 50... \n", - "5 [1, 379, 751, 1163, 1619, 1996, 2611, 3018, 36... \n", - "6 [1, 4340, 9701, 15127, 18956, 22894, 26746, 30... \n", - "7 [1, 5858, 11757, 17658, 23553, 29447, 35341, 4... \n", - "8 [1, 212, 425, 644, 874, 1102, 1347, 1600, 1848... \n", - "9 [1, 7190, 15166, 23141, 31110, 39088, 47061, 5... \n", - "10 [1, 741, 1742, 2759, 3776, 4793, 5810, 6827, 7... \n", - "11 [1, 4693, 9818, 14945, 20073, 25204, 30335, 35... \n", - "12 [1, 2151, 4417, 6761, 9102, 11465, 13835, 1618... \n", - "13 [1, 451, 921, 1657, 2175, 2881, 3619, 4201, 49... \n", - "14 [1, 444, 892, 1499, 1939, 2599, 3074, 3795, 44... \n", - "15 [1, 4600, 9148, 13399, 17713, 21974, 26357, 30... \n", - "16 [1, 5837, 11716, 17597, 23478, 29358, 35237, 4... \n", - "17 [1, 221, 437, 647, 887, 1105, 1325, 1568, 1794... \n", - "18 [1, 6705, 14656, 22620, 30586, 38553, 46518, 5... \n", - "19 [1, 260, 318, 379, 437, 495, 556, 621, 679, 73... \n", - "20 [1, 4733, 9900, 15068, 20235, 25403, 30570, 35... \n", - "21 [1, 2228, 4538, 6831, 9118, 11459, 13847, 1624... \n", - "22 [1, 463, 907, 1626, 2237, 2906, 3648, 4367, 50... \n", - "23 [1, 431, 874, 1519, 1983, 2674, 3216, 3867, 45... \n", - "24 [1, 5301, 10777, 16223, 21667, 27100, 32524, 3... \n", - "25 [1, 5860, 11760, 17654, 23554, 29452, 35346, 4... \n", - "26 [1, 374, 753, 1131, 1509, 1919, 2333, 2727, 31... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [57.370943546295166, 2052.9768857955933, 4048.... \n", - "1 [159.05283117294312, 269.370676279068, 379.638... \n", - "2 [60.93853545188904, 704.4676430225372, 1348.46... \n", - "3 [21.488929271698, 473.3029658794403, 925.32346... \n", - "4 [184.19038033485413, 1931.8993709087367, 3683.... \n", - "5 [147.42911887168884, 1603.638286113739, 3058.8... \n", - "6 [60.48145341873169, 2631.391207695008, 5202.38... \n", - "7 [23.766636848449707, 2594.640924453736, 5165.8... \n", - "8 [9.134706497192385, 366.75317430496216, 723.89... \n", - "9 [64.76098799705505, 2060.5522677898407, 4056.5... \n", - "10 [45.82640838623047, 155.79204893112183, 265.83... \n", - "11 [55.83711576461792, 699.7939651012421, 1343.73... \n", - "12 [20.25373125076294, 472.061416387558, 924.0924... \n", - "13 [185.1137638092041, 1933.8555619716644, 3685.3... \n", - "14 [141.80748629570007, 1598.4305255413055, 3053.... \n", - "15 [64.88337397575378, 2635.93419456482, 5206.104... \n", - "16 [23.105996131896973, 2593.917392253876, 5165.2... \n", - "17 [9.00504755973816, 365.6705503463745, 723.2133... \n", - "18 [56.7663676738739, 2052.791997671128, 4048.826... \n", - "19 [256.4748523235321, 366.6771492958069, 478.321... \n", - "20 [56.687952518463135, 700.6354627609253, 1344.5... \n", - "21 [18.997504949569706, 470.4265224933624, 922.47... \n", - "22 [186.2298052310944, 1941.9859285354607, 3690.9... \n", - "23 [150.63363099098206, 1602.490621328354, 3049.7... \n", - "24 [55.54096364974976, 2626.3958835601807, 5197.2... \n", - "25 [21.72627210617065, 2592.6500630378723, 5163.8... \n", - "26 [10.201725006103516, 366.3240540027618, 722.28... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0012, 0.4, 0.46160004, 0.48510003, 0.502100... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5476381778717041, 0.626... ... \n", - "3 [0.4759940803050995, 0.9831857681274414, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.1342, 0.24990001, 0.3097, 0.33580002... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.00070000003, 0.39560002, 0.46590003, 0.4882... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5409098863601685, 0.626... ... \n", - "12 [0.4528129994869232, 0.9833908677101136, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.14760001, 0.246, 0.2924, 0.319, 0.32... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0013000001, 0.3858, 0.46620002, 0.48350003,... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.5407007336616516, 0.624... ... \n", - "21 [0.4898046851158142, 0.9832206964492798, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.17330001, 0.26650003, 0.3156, 0.3334... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0265867163025131, 0.0487554422640663, 0.135... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.029255348783255, 0.0567272848068406, 0.1371... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0262365252534235, 0.0566516016028957, 0.134... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.620827, 1.5609409, 1.5602993, 1.9300616, 1.... \n", - "5 [7.592613, 1.9210409, 1.5443093, 1.362662, 1.7... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6855764, 1.5365065, 1.5469178, 1.4893932, 2... \n", - "14 [7.828205, 1.6817404, 1.5051454, 1.4777752, 2.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.184543, 1.5620902, 1.5563731, 1.5345361, 2.... \n", - "23 [7.8586326, 1.5260952, 1.458561, 1.4167997, 2.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0619706294558529, 0.899579550301627, 0.8995... \n", - "5 [2.367375540795808, 0.899579550301627, 0.89957... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0810228911502449, 0.899579550301627, 0.8995... \n", - "14 [3.586090630268316, 0.899579550301627, 0.89957... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.3455609042715253, 0.899579550301627, 0.8995... \n", - "23 [4.143338817459834, 0.899579550301627, 0.89957... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.788194, 1.5281633, 1.5253595, 1.9511633, 1.... \n", - "5 [7.8061852, 1.896192, 1.5516807, 1.3766756, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.8771033, 1.516304, 1.5184199, 1.4971937, 2.... \n", - "14 [8.068174, 1.6876341, 1.5170608, 1.5028363, 2.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.4495716, 1.5278099, 1.5240636, 1.5471938, 2... \n", - "23 [8.079127, 1.5362146, 1.4699464, 1.43682, 3.02... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1250390437915163, 0.944635537887994, 0.9427... \n", - "5 [2.431131957603648, 0.944635537887994, 0.94272... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.4230733190346292, 0.944635537887994, 0.9427... \n", - "14 [3.738364950128064, 0.944635537887994, 0.94272... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.509438185869271, 0.944635537887994, 0.94272... \n", - "23 [4.309429856527081, 0.944635537887994, 0.94272... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.6224656, 1.5672481, 1.5671345, 1.9169345, 1... \n", - "5 [7.58517, 1.9028931, 1.5559242, 1.3816026, 1.8... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.649563, 1.541554, 1.5533521, 1.490264, 2.70... \n", - "14 [7.7952633, 1.6940677, 1.5166017, 1.478127, 2.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.1497803, 1.5678438, 1.5627043, 1.5334496, 2... \n", - "23 [7.836566, 1.5370063, 1.4677546, 1.4443249, 2.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.050509341959156, 0.8967218654950997, 0.8967... \n", - "5 [2.54484623183508, 0.8967218654950997, 0.89672... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0258388451697005, 0.8967218654950997, 0.896... \n", - "14 [3.466702071163038, 0.8967218654950997, 0.8967... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.3082412011780042, 0.8967218654950997, 0.896... \n", - "23 [3.921450296914981, 0.8967218654950997, 0.8967... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62611.45224591156, 39.057084479004665, 31.934... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61513.55432331878, 39.17379737821917, 32.1160... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61367.42042051339, 39.40923829116489, 32.2515... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62589.78092824439, 39.183511934110605, 31.994... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61473.08954956363, 39.30504426005093, 32.1724... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61423.45396440031, 39.52823807872984, 32.3004... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== Schedule-Free AdamW (PyTorch) (schedule_free_adamw) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload \\\n", - "0 imagenet_resnet_pytorch \n", - "1 fastmri_pytorch \n", - "2 imagenet_vit_pytorch \n", - "3 librispeech_conformer_pytorch \n", - "4 ogbg_pytorch \n", - "5 librispeech_deepspeech_pytorch \n", - "6 wmt_pytorch \n", - "7 criteo1tb_pytorch \n", - "8 finewebedu_lm_pytorch \n", - "9 imagenet_resnet_pytorch \n", - "10 fastmri_pytorch \n", - "11 imagenet_vit_pytorch \n", - "12 librispeech_conformer_pytorch \n", - "13 ogbg_pytorch \n", - "14 librispeech_deepspeech_pytorch \n", - "15 wmt_pytorch \n", - "16 criteo1tb_pytorch \n", - "17 finewebedu_lm_pytorch \n", - "18 imagenet_resnet_pytorch \n", - "19 fastmri_pytorch \n", - "20 imagenet_vit_pytorch \n", - "21 librispeech_conformer_pytorch \n", - "22 ogbg_pytorch \n", - "23 librispeech_deepspeech_pytorch \n", - "24 wmt_pytorch \n", - "25 criteo1tb_pytorch \n", - "26 finewebedu_lm_pytorch \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "26 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [188.40417313575745, 304.5577299594879, 433.33... \n", - "1 [385.8169026374817, 391.8268404006958, 397.841... \n", - "2 [210.3460204601288, 357.32116079330444, 495.26... \n", - "3 [65.41454076766968, 109.48870968818665, 154.85... \n", - "4 [82.16063690185547, 113.87860584259032, 144.65... \n", - "5 [72.17463803291321, 118.88966178894044, 164.70... \n", - "6 [436.5034852027893, 635.3879280090332, 817.769... \n", - "7 [900.722579240799, 1692.1641857624054, 2480.99... \n", - "8 [219.5692663192749, 400.5903584957123, 581.498... \n", - "9 [189.40433645248413, 314.1819438934326, 453.77... \n", - "10 [385.3162007331848, 391.297327041626, 397.2388... \n", - "11 [216.1942207813263, 359.7478902339936, 499.582... \n", - "12 [69.58658456802368, 116.71394205093384, 162.13... \n", - "13 [74.18388938903809, 104.65180921554564, 135.36... \n", - "14 [64.17442655563354, 113.19223427772522, 160.88... \n", - "15 [437.2961142063141, 637.4638092517853, 819.420... \n", - "16 [935.4482862949372, 1724.7284927368164, 2505.6... \n", - "17 [221.9116239547729, 403.2949366569519, 584.469... \n", - "18 [188.15465569496155, 313.9955747127533, 451.09... \n", - "19 [597.1743896007538, 604.236298084259, 611.2129... \n", - "20 [213.28488421440125, 359.41196727752686, 506.7... \n", - "21 [64.73557591438293, 115.330060005188, 163.9394... \n", - "22 [76.52495288848877, 107.02263736724854, 137.39... \n", - "23 [71.40001225471497, 117.40976858139038, 164.10... \n", - "24 [440.55203223228455, 638.3998064994812, 821.37... \n", - "25 [2427.6146557331085, 3654.2787730693817, 4854.... \n", - "26 [221.59697914123527, 402.8922758102417, 584.03... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.4307634830474853, 2.630591869354248, 6... \n", - "1 [0.0, 0.488943338394165, 0.5394423007965088, 0... \n", - "2 [0.0, 0.0724058151245117, 0.5697054862976074, ... \n", - "3 [0.0, 0.0774331092834472, 0.1349451541900634, ... \n", - "4 [0.0, 0.3755390644073486, 0.427170991897583, 0... \n", - "5 [0.0, 0.0958874225616455, 0.1644661426544189, ... \n", - "6 [0.0, 0.0725338459014892, 0.1285097599029541, ... \n", - "7 [0.0, 0.5293781757354736, 0.6177034378051758, ... \n", - "8 [0.0, 0.0743107795715332, 0.1386497020721435, ... \n", - "9 [0.0, 0.531510591506958, 2.59226131439209, 5.8... \n", - "10 [0.0, 0.3206825256347656, 0.3711030483245849, ... \n", - "11 [0.0, 0.0708386898040771, 0.6410713195800781, ... \n", - "12 [0.0, 0.1155736446380615, 0.1971933841705322, ... \n", - "13 [0.0, 0.0812935829162597, 0.1400051116943359, ... \n", - "14 [0.0, 0.5405266284942627, 1.4859302043914795, ... \n", - "15 [0.0, 0.070636510848999, 0.1236491203308105, 0... \n", - "16 [0.0, 0.4588284492492676, 0.5904839038848877, ... \n", - "17 [0.0, 0.2821135520935058, 0.333235502243042, 0... \n", - "18 [0.0, 0.3999185562133789, 2.641523838043213, 6... \n", - "19 [0.0, 0.0782670974731445, 0.133885383605957, 0... \n", - "20 [0.0, 0.0722122192382812, 0.619274377822876, 1... \n", - "21 [0.0, 0.1090619564056396, 0.1784663200378418, ... \n", - "22 [0.0, 0.3187165260314941, 0.3755946159362793, ... \n", - "23 [0.0, 0.0917487144470214, 0.1559562683105468, ... \n", - "24 [0.0, 0.0733084678649902, 0.126462697982788, 0... \n", - "25 [0.0, 0.0797321796417236, 0.1310348510742187, ... \n", - "26 [0.0, 0.2729113101959228, 0.325847864151001, 0... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [122.52722930908205, 2114.7013082504272, 4108.... \n", - "1 [206.929099559784, 315.5003550052643, 425.3296... \n", - "2 [100.2393765449524, 2671.8500096797943, 5240.1... \n", - "3 [10.09779143333435, 1755.7859191894531, 3501.9... \n", - "4 [31.78741478919983, 482.60107922554016, 933.68... \n", - "5 [31.14275050163269, 1476.5096814632416, 2921.3... \n", - "6 [51.72783255577088, 693.4519994258881, 1335.38... \n", - "7 [9.57097339630127, 365.60620188713074, 721.591... \n", - "8 [43.15337920188904, 2611.250637292862, 5179.66... \n", - "9 [120.12487483024596, 2113.546407222748, 4114.0... \n", - "10 [209.6208968162537, 319.09749150276184, 429.24... \n", - "11 [100.73967742919922, 2672.270813703537, 5240.4... \n", - "12 [15.163714408874512, 1760.9359152317047, 3506.... \n", - "13 [6.500248670578003, 457.5994780063629, 908.800... \n", - "14 [50.04203796386719, 1493.9251699447632, 2937.5... \n", - "15 [53.44974541664124, 695.3744008541107, 1337.41... \n", - "16 [8.970545768737793, 364.76555728912354, 720.94... \n", - "17 [54.66056180000305, 2622.199852705002, 5190.02... \n", - "18 [124.35874366760254, 2119.432560920716, 4114.3... \n", - "19 [210.71099472045896, 320.18286204338074, 429.6... \n", - "20 [102.12174987792967, 2672.4705748558044, 5243.... \n", - "21 [20.10005784034729, 1767.299765110016, 3513.43... \n", - "22 [15.827686548233032, 466.7542796134949, 917.87... \n", - "23 [29.82626271247864, 1475.2559759616852, 2919.9... \n", - "24 [53.99105525016785, 695.8093495368958, 1337.89... \n", - "25 [7.88826584815979, 364.17549657821655, 721.565... \n", - "26 [49.91865062713623, 2617.6593272686005, 5185.5... \n", - "\n", - " global_step \\\n", - "0 [1, 3385, 6106, 8777, 11399, 14021, 16668, 193... \n", - "1 [1, 644, 944, 1238, 1522, 1810, 3639, 6890, 10... \n", - "2 [1, 2431, 5837, 9271, 12419, 15769, 19106, 222... \n", - "3 [1, 1879, 4454, 7103, 10051, 12751, 15502, 183... \n", - "4 [1, 1956, 3900, 5846, 7836, 9836, 11839, 13847... \n", - "5 [1, 2138, 4879, 7895, 11207, 14420, 17917, 211... \n", - "6 [1, 4331, 8663, 12995, 17330, 21663, 25999, 30... \n", - "7 [1, 362, 718, 1075, 1437, 1787, 2134, 2494, 28... \n", - "8 [1, 6575, 13158, 19738, 26313, 32897, 39482, 4... \n", - "9 [1, 3404, 6145, 8837, 11510, 14167, 16838, 195... \n", - "10 [1, 643, 952, 1241, 1526, 1810, 3667, 6940, 10... \n", - "11 [1, 2429, 5816, 9226, 12382, 15719, 18970, 221... \n", - "12 [1, 1643, 3556, 6384, 9129, 11754, 14691, 1740... \n", - "13 [1, 1964, 3922, 5868, 7816, 9751, 11702, 13656... \n", - "14 [1, 3489, 6640, 9969, 13287, 16486, 19886, 230... \n", - "15 [1, 4341, 8685, 13032, 17376, 21715, 26058, 30... \n", - "16 [1, 353, 709, 1066, 1429, 1784, 2140, 2510, 28... \n", - "17 [1, 6559, 13122, 19692, 26254, 32817, 39381, 4... \n", - "18 [1, 3363, 6105, 8758, 11418, 14101, 16766, 194... \n", - "19 [1, 565, 748, 931, 1115, 1309, 1496, 1692, 188... \n", - "20 [1, 2432, 5856, 9297, 12450, 15725, 18989, 221... \n", - "21 [1, 1617, 3501, 6240, 9024, 11656, 14488, 1727... \n", - "22 [1, 1958, 3910, 5873, 7832, 9796, 11755, 13718... \n", - "23 [1, 2151, 4908, 7834, 11077, 14308, 17731, 209... \n", - "24 [1, 4305, 8612, 12917, 17221, 21528, 25834, 30... \n", - "25 [1, 163, 332, 497, 660, 857, 1027, 1232, 1424,... \n", - "26 [1, 6565, 13133, 19701, 26264, 32828, 39395, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [122.52722930908205, 2114.7013082504272, 4108.... \n", - "1 [206.929099559784, 315.5003550052643, 425.3296... \n", - "2 [100.2393765449524, 2671.8500096797943, 5240.1... \n", - "3 [10.09779143333435, 1755.7859191894531, 3501.9... \n", - "4 [31.78741478919983, 482.60107922554016, 933.68... \n", - "5 [31.14275050163269, 1476.5096814632416, 2921.3... \n", - "6 [51.72783255577088, 693.4519994258881, 1335.38... \n", - "7 [9.57097339630127, 365.60620188713074, 721.591... \n", - "8 [43.15337920188904, 2611.250637292862, 5179.66... \n", - "9 [120.12487483024596, 2113.546407222748, 4114.0... \n", - "10 [209.6208968162537, 319.09749150276184, 429.24... \n", - "11 [100.73967742919922, 2672.270813703537, 5240.4... \n", - "12 [15.163714408874512, 1760.9359152317047, 3506.... \n", - "13 [6.500248670578003, 457.5994780063629, 908.800... \n", - "14 [50.04203796386719, 1493.9251699447632, 2937.5... \n", - "15 [53.44974541664124, 695.3744008541107, 1337.41... \n", - "16 [8.970545768737793, 364.76555728912354, 720.94... \n", - "17 [54.66056180000305, 2622.199852705002, 5190.02... \n", - "18 [124.35874366760254, 2119.432560920716, 4114.3... \n", - "19 [210.71099472045896, 320.18286204338074, 429.6... \n", - "20 [102.12174987792967, 2672.4705748558044, 5243.... \n", - "21 [20.10005784034729, 1767.299765110016, 3513.43... \n", - "22 [15.827686548233032, 466.7542796134949, 917.87... \n", - "23 [29.82626271247864, 1475.2559759616852, 2919.9... \n", - "24 [53.99105525016785, 695.8093495368958, 1337.89... \n", - "25 [7.88826584815979, 364.17549657821655, 721.565... \n", - "26 [49.91865062713623, 2617.6593272686005, 5185.5... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.001, 0.3376, 0.4038, 0.3322, 0.0525, 0.0035... ... \n", - "1 NaN ... \n", - "2 [0.0025, 0.1238, 0.2825, 0.366, 0.4191, 0.4567... ... \n", - "3 NaN ... \n", - "4 [0.5020598211480587, 0.9838099152740096, 0.984... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.6038696182673872, 0.648... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0011, 0.334, 0.3954, 0.2438, 0.0287, 0.0041... ... \n", - "10 NaN ... \n", - "11 [0.0025, 0.1243, 0.2806, 0.3687, 0.4217, 0.459... ... \n", - "12 NaN ... \n", - "13 [0.5475603480006974, 0.9837947540469948, 0.984... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.604369298704317, 0.6513... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0014, 0.3354, 0.3854, 0.312, 0.0402, 0.0049... ... \n", - "19 NaN ... \n", - "20 [0.0018, 0.1209, 0.2785, 0.3595, 0.4122, 0.452... ... \n", - "21 NaN ... \n", - "22 [0.4630994685989931, 0.9838153901615428, 0.984... ... \n", - "23 NaN ... \n", - "24 [0.0007088489919237, 0.6026610888385335, 0.649... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.8979964273644571, 0.5033167575918506, 0.264... \n", - "4 NaN \n", - "5 [3.563868102158065, 0.3702602230483271, 0.2321... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.668478733162748, 0.8967218654950997, 0.8967... \n", - "13 NaN \n", - "14 [3.009945444889683, 0.2753343310964128, 0.2136... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.93370347124994, 0.5525322261381741, 0.26492... \n", - "22 NaN \n", - "23 [2.888929657702892, 0.3416212040747357, 0.2327... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0286454494728756, 0.1252931290455174, 0.183... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0276119301900269, 0.1181063828931509, 0.172... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0275782540726277, 0.1232724964532807, 0.181... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0224851376974589, 0.1278227398880211, 0.213... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0209393234166708, 0.1254156439907528, 0.198... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0217786536529118, 0.1306459357750615, 0.210... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0269816932386676, 0.1237312812521327, 0.178... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0255686252060375, 0.12088667309898, 0.17106... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0259055133411359, 0.1241643103561598, 0.175... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 22.86065128907516, 26.08106501120403, 27... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 23.06412255430461, 26.3366748722229, 27.... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0003661181415447, 22.91479166122137, 26.088... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 27.66182240239, 30.857110669212165, 31.6... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 27.858731377195745, 30.763583581435693, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0001128467829092, 28.279439253689297, 30.36... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 24.30197015696545, 27.19784961556557, 28... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 24.17111238909736, 27.279842062455515, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0003788727564227, 23.901786163755663, 26.97... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [51012.97839501722, 35.23560628922688, 30.1449... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [52591.32159809857, 40.83976108228861, 33.0165... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [52557.94902797553, 37.493859383696126, 31.326... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [50984.556038845, 35.05851025704972, 29.887070... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [52603.11095883379, 40.658782679203, 32.758094... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [52526.30881435957, 37.29713317785342, 31.0583... \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n", - "\n", - "=== Schedule-Free AdamW (JAX) (schedule_free_adamw_jax) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_conformer_jax \n", - "23 librispeech_deepspeech_jax \n", - "24 imagenet_vit_jax \n", - "25 finewebedu_lm_jax \n", - "26 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "26 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [64.80277180671692, 89.22458910942078, 119.436... \n", - "1 [562.5822427272797, 566.3612205982208, 569.855... \n", - "2 [915.2593765258788, 1444.0837428569794, 1969.2... \n", - "3 [260.9838900566101, 378.12336826324463, 492.87... \n", - "4 [265.1032419204712, 348.87857151031494, 433.98... \n", - "5 [263.85190200805664, 379.78293538093567, 495.4... \n", - "6 [66.87388229370117, 90.63721203804016, 115.975... \n", - "7 [331.3653769493103, 660.2042541503906, 988.886... \n", - "8 [1039.6335072517395, 1943.679639339447, 2856.6... \n", - "9 [52.0152485370636, 75.18314480781555, 98.93893... \n", - "10 [832.002769947052, 835.7692911624908, 839.3070... \n", - "11 [921.6159455776216, 1455.3569869995115, 1961.9... \n", - "12 [260.5434820652008, 377.3438639640808, 491.391... \n", - "13 [218.01492071151733, 337.27996706962585, 458.7... \n", - "14 [309.2518792152405, 468.4228076934815, 610.767... \n", - "15 [99.04877591133118, 139.8188512325287, 162.457... \n", - "16 [331.578319311142, 660.5214908123016, 989.3946... \n", - "17 [1110.7750465869904, 2260.6320898532867, 3332.... \n", - "18 [54.83784818649292, 78.51011872291565, 102.161... \n", - "19 [909.214072227478, 912.9807786941528, 916.4760... \n", - "20 [921.2270264625548, 1425.4174120426178, 1951.8... \n", - "21 [251.4593493938446, 362.342609167099, 475.8495... \n", - "22 [227.9441404342652, 354.4669382572174, 478.201... \n", - "23 [304.57498955726624, 420.5781497955322, 537.85... \n", - "24 [66.66235852241516, 91.09455060958862, 116.961... \n", - "25 [331.6346070766449, 660.3451807498932, 988.784... \n", - "26 [2125.166263818741, 3338.8044052124023, 4501.5... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0399310588836669, 0.1748163700103759, ... \n", - "1 [0.0, 0.0449609756469726, 0.2544362545013428, ... \n", - "2 [0.0, 0.0431361198425293, 0.1667077541351318, ... \n", - "3 [0.0, 0.0471258163452148, 0.0980126857757568, ... \n", - "4 [0.0, 0.0582027435302734, 0.1153597831726074, ... \n", - "5 [0.0, 0.0630712509155273, 0.1200852394104003, ... \n", - "6 [0.0, 0.0408036708831787, 0.1093075275421142, ... \n", - "7 [0.0, 0.0397620201110839, 0.0868630409240722, ... \n", - "8 [0.0, 0.0415139198303222, 0.0870864391326904, ... \n", - "9 [0.0, 0.040722370147705, 0.1945395469665527, 0... \n", - "10 [0.0, 0.0416243076324462, 0.0897467136383056, ... \n", - "11 [0.0, 0.043943166732788, 0.0927212238311767, 0... \n", - "12 [0.0, 0.0440804958343505, 0.0944094657897949, ... \n", - "13 [0.0, 0.0640156269073486, 0.1387176513671875, ... \n", - "14 [0.0, 0.0628175735473632, 0.1223938465118408, ... \n", - "15 [0.0, 0.1362159252166748, 0.2361433506011963, ... \n", - "16 [0.0, 0.0382122993469238, 0.0834162235260009, ... \n", - "17 [0.0, 0.0392022132873535, 0.0838687419891357, ... \n", - "18 [0.0, 0.0346267223358154, 0.0786693096160888, ... \n", - "19 [0.0, 0.0403687953948974, 0.0838174819946289, ... \n", - "20 [0.0, 0.0448617935180664, 0.0953803062438964, ... \n", - "21 [0.0, 0.0445392131805419, 0.0951671600341796, ... \n", - "22 [0.0, 0.0699548721313476, 0.1357693672180175, ... \n", - "23 [0.0, 0.0661942958831787, 0.1261601448059082, ... \n", - "24 [0.0, 0.0425713062286376, 0.2632975578308105, ... \n", - "25 [0.0, 0.0388171672821044, 0.0852296352386474, ... \n", - "26 [0.0, 0.0395026206970214, 0.0845065116882324, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [50.136358976364136, 2046.26813864708, 4042.30... \n", - "1 [187.10374927520752, 297.3187327384949, 408.16... \n", - "2 [61.88168597221375, 705.8881783485413, 1349.77... \n", - "3 [22.543950080871586, 474.4983825683594, 926.56... \n", - "4 [180.89342784881592, 1933.7958116531368, 3680.... \n", - "5 [98.00283241271973, 1545.4830293655396, 2993.2... \n", - "6 [54.57469153404236, 2626.0510778427124, 5197.0... \n", - "7 [20.073198318481445, 2591.0787456035614, 5162.... \n", - "8 [11.854544401168823, 368.587194442749, 724.853... \n", - "9 [50.05170655250549, 2045.952622413636, 4041.75... \n", - "10 [272.0154337882996, 382.8766484260559, 493.851... \n", - "11 [58.44010210037232, 702.387955904007, 1346.422... \n", - "12 [22.18412470817566, 474.3226864337921, 926.356... \n", - "13 [187.69154739379883, 1940.580727338791, 3690.5... \n", - "14 [101.32069444656372, 1549.7593817710876, 2999.... \n", - "15 [67.60156393051147, 2639.2176098823547, 5210.1... \n", - "16 [21.00716352462769, 2592.113157272339, 5163.20... \n", - "17 [11.743894577026367, 369.3973135948181, 725.42... \n", - "18 [47.26798915863037, 2043.3844883441925, 4039.4... \n", - "19 [293.4855115413666, 405.7374980449677, 516.738... \n", - "20 [59.11289930343628, 703.1445062160492, 1347.12... \n", - "21 [22.072036266326904, 474.0736424922943, 926.02... \n", - "22 [196.95326209068293, 1947.0643391609192, 3695.... \n", - "23 [102.37653636932372, 1549.4199659824371, 2997.... \n", - "24 [56.1491334438324, 2627.396884918213, 5198.311... \n", - "25 [20.501079082489014, 2591.3998839855194, 5162.... \n", - "26 [10.077565431594849, 367.7837171554565, 724.04... \n", - "\n", - " global_step \\\n", - "0 [1, 6793, 14780, 22768, 30754, 38739, 46718, 5... \n", - "1 [1, 288, 382, 481, 575, 673, 767, 863, 959, 19... \n", - "2 [1, 4463, 9353, 14256, 19158, 24061, 28954, 33... \n", - "3 [1, 2146, 4349, 6572, 8789, 11005, 13220, 1545... \n", - "4 [1, 457, 918, 1608, 2028, 2761, 3395, 4009, 47... \n", - "5 [1, 835, 1644, 2753, 3707, 4885, 5875, 7138, 8... \n", - "6 [1, 5455, 11203, 16951, 22705, 28473, 34229, 3... \n", - "7 [1, 11428, 22885, 34339, 45790, 57249] \n", - "8 [1, 349, 707, 1063, 1426, 1789, 2173, 2549, 29... \n", - "9 [1, 7775, 15765, 23760, 31756, 39751, 47749, 5... \n", - "10 [1, 268, 330, 393, 460, 524, 587, 649, 708, 76... \n", - "11 [1, 4449, 9323, 14197, 19082, 23965, 28859, 33... \n", - "12 [1, 2148, 4333, 6614, 8897, 11184, 13493, 1581... \n", - "13 [1, 443, 872, 1504, 2024, 2784, 3535, 4173, 49... \n", - "14 [1, 787, 1593, 2666, 3599, 4702, 5732, 6988, 8... \n", - "15 [1, 4401, 9959, 14095, 18294, 22443, 26585, 30... \n", - "16 [1, 11405, 22836, 34273, 45709, 57145] \n", - "17 [1, 222, 448, 650, 869, 1092, 1294, 1517, 1748... \n", - "18 [1, 7524, 15513, 23503, 31494, 39482, 47474, 5... \n", - "19 [1, 267, 325, 384, 448, 508, 567, 629, 687, 74... \n", - "20 [1, 4442, 9334, 14230, 19129, 24027, 28910, 33... \n", - "21 [1, 2207, 4426, 6657, 8898, 11237, 13569, 1589... \n", - "22 [1, 439, 889, 1527, 2035, 2793, 3524, 4102, 48... \n", - "23 [1, 789, 1606, 2753, 3755, 5113, 6070, 7511, 8... \n", - "24 [1, 5392, 10919, 16443, 21964, 27486, 32996, 3... \n", - "25 [1, 11427, 22879, 34332, 45787, 57242] \n", - "26 [1, 187, 381, 582, 780, 963, 1154, 1332, 1528,... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [50.136358976364136, 2046.26813864708, 4042.30... \n", - "1 [187.10374927520752, 297.3187327384949, 408.16... \n", - "2 [61.88168597221375, 705.8881783485413, 1349.77... \n", - "3 [22.543950080871586, 474.4983825683594, 926.56... \n", - "4 [180.89342784881592, 1933.7958116531368, 3680.... \n", - "5 [98.00283241271973, 1545.4830293655396, 2993.2... \n", - "6 [54.57469153404236, 2626.0510778427124, 5197.0... \n", - "7 [20.073198318481445, 2591.0787456035614, 5162.... \n", - "8 [11.854544401168823, 368.587194442749, 724.853... \n", - "9 [50.05170655250549, 2045.952622413636, 4041.75... \n", - "10 [272.0154337882996, 382.8766484260559, 493.851... \n", - "11 [58.44010210037232, 702.387955904007, 1346.422... \n", - "12 [22.18412470817566, 474.3226864337921, 926.356... \n", - "13 [187.69154739379883, 1940.580727338791, 3690.5... \n", - "14 [101.32069444656372, 1549.7593817710876, 2999.... \n", - "15 [67.60156393051147, 2639.2176098823547, 5210.1... \n", - "16 [21.00716352462769, 2592.113157272339, 5163.20... \n", - "17 [11.743894577026367, 369.3973135948181, 725.42... \n", - "18 [47.26798915863037, 2043.3844883441925, 4039.4... \n", - "19 [293.4855115413666, 405.7374980449677, 516.738... \n", - "20 [59.11289930343628, 703.1445062160492, 1347.12... \n", - "21 [22.072036266326904, 474.0736424922943, 926.02... \n", - "22 [196.95326209068293, 1947.0643391609192, 3695.... \n", - "23 [102.37653636932372, 1549.4199659824371, 2997.... \n", - "24 [56.1491334438324, 2627.396884918213, 5198.311... \n", - "25 [20.501079082489014, 2591.3998839855194, 5162.... \n", - "26 [10.077565431594849, 367.7837171554565, 724.04... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0006, 0.25370002, 0.0014000001, 0.001, 0.03... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5998954176902771, 0.649... ... \n", - "3 [0.4752404391765594, 0.9839476346969604, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.20610002, 0.3452, 0.41560003, 0.4586... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0016000001, 0.172, 0.0013000001, 0.001, 0.0... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5998256802558899, 0.650... ... \n", - "12 [0.4883911311626434, 0.983948051929474, 0.9847... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.17400001, 0.3258, 0.38480002, 0.4248... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.00080000004, 0.17940001, 0.0016000001, 0.00... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.6002324223518372, 0.650... ... \n", - "21 [0.5051379799842834, 0.9839733242988586, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.20080002, 0.33490002, 0.4022, 0.4494... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0269368781957848, 0.1223161671621748, 0.170... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0275654394828914, 0.122451880402328, 0.1712... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0255881800798176, 0.1290474442283525, 0.172... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.774599, 1.5475664, 1.4796066, 0.632051, 0.4... \n", - "5 [7.3038, 1.3286598, 0.6331472, 0.2732478, 0.18... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6317697, 1.4954873, 1.520395, 1.5451847, 1.... \n", - "14 [7.3628473, 1.379529, 0.7006643, 0.27088106, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.74551, 1.5424807, 1.4962969, 0.67853576, 0.... \n", - "23 [7.403621, 1.2196025, 0.6824632, 0.26378787, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.948510145634026, 0.899579550301627, 0.89957... \n", - "5 [4.227814677147442, 0.91588974874576, 0.566307... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.95695976276075, 0.899579550301627, 0.899579... \n", - "14 [4.313184246338838, 0.9578940954238012, 0.6090... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.8997014197794162, 0.899579550301627, 0.8995... \n", - "23 [4.305181483964008, 0.8887128551987488, 0.6190... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.9402175, 1.5198174, 1.4613268, 0.6281934, 0... \n", - "5 [7.6031795, 1.4342304, 0.6494276, 0.26546466, ... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.9059625, 1.4892366, 1.5057417, 1.5166953, 1... \n", - "14 [7.666715, 1.4848164, 0.730589, 0.26049194, 0.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.9014397, 1.5166935, 1.4767932, 0.66586787, ... \n", - "23 [7.6999955, 1.3150111, 0.7145784, 0.2549867, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.032276200987027, 0.944635537887994, 0.94272... \n", - "5 [4.334141973637632, 0.9406706350023688, 0.5886... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9496595381379755, 0.944635537887994, 0.9427... \n", - "14 [4.407674447660496, 0.9968847191612944, 0.6385... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.9440268204818524, 0.944635537887994, 0.9427... \n", - "23 [4.455349520021656, 0.9415254062738152, 0.6458... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.752598, 1.5533421, 1.4846033, 0.68937147, 0... \n", - "5 [7.296087, 1.3874875, 0.7322531, 0.36960682, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.5802503, 1.4973441, 1.5229473, 1.5508139, 1... \n", - "14 [7.3890595, 1.4361861, 0.804853, 0.36850327, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.7533803, 1.5483526, 1.5070449, 0.73295695, ... \n", - "23 [7.41381, 1.284577, 0.7789574, 0.35871878, 0.2... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9315598899242022, 0.8967218654950997, 0.896... \n", - "5 [4.058340172838314, 0.9096992227103752, 0.6138... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.951904600975233, 0.8967218654950997, 0.8967... \n", - "14 [3.9227152030126007, 0.9474243228890068, 0.655... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.896866702071163, 0.8967218654950997, 0.8967... \n", - "23 [4.032684787331627, 0.8925891951914257, 0.6576... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60637.141937818495, 29.48409050378142, 25.674... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [65275.64552526401, 30.606369571683185, 26.217... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63467.41467824364, 29.66270909212912, 25.3519... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60650.44385614428, 29.551975621652595, 25.676... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [65334.87375255469, 30.6844387737482, 26.21801... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63435.22235195929, 29.72729136497202, 25.3439... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== Schedule-Free AdamW v2 (JAX) (schedule_free_adamw_jax_v2) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_conformer_jax \n", - "23 librispeech_deepspeech_jax \n", - "24 imagenet_vit_jax \n", - "25 finewebedu_lm_jax \n", - "26 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "26 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [58.0493426322937, 80.8735921382904, 104.81943... \n", - "1 [559.0533547401428, 562.8078515529633, 566.306... \n", - "2 [915.6216826438904, 1430.5752911567688, 1956.2... \n", - "3 [244.306161403656, 355.0137469768524, 463.5082... \n", - "4 [246.77522158622745, 381.94140005111694, 514.0... \n", - "5 [266.1567747592926, 380.7729184627533, 497.768... \n", - "6 [65.16466951370239, 90.6530590057373, 116.1852... \n", - "7 [332.7077293395996, 662.0156135559082, 991.533... \n", - "8 [909.38507771492, 1780.0008041858673, 2646.882... \n", - "9 [88.55480742454529, 143.2671549320221, 181.964... \n", - "10 [558.4159188270569, 562.2682967185974, 565.801... \n", - "11 [919.6205627918245, 1456.450924396515, 2041.88... \n", - "12 [247.80656695365903, 359.1231412887573, 472.22... \n", - "13 [229.04721355438232, 325.10712933540344, 411.1... \n", - "14 [292.07610416412354, 445.9605395793915, 567.38... \n", - "15 [74.86340236663818, 98.76595664024352, 123.677... \n", - "16 [333.7029254436493, 664.2292051315308, 994.872... \n", - "17 [976.9460093975068, 1825.04330778122, 2671.016... \n", - "18 [83.23402738571167, 118.17159128189088, 183.03... \n", - "19 [489.11433959007263, 492.89446902275085, 496.3... \n", - "20 [916.7374877929688, 1434.679277420044, 1949.38... \n", - "21 [244.35787796974185, 355.29258275032043, 464.4... \n", - "22 [229.3446192741394, 321.6874759197235, 407.459... \n", - "23 [285.8121194839477, 430.90722274780273, 547.67... \n", - "24 [76.57610821723938, 101.54883575439452, 129.81... \n", - "25 [331.95021772384644, 661.1177418231964, 990.29... \n", - "26 [962.4220168590546, 1826.649857759476, 2666.44... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0282888412475585, 0.0968890190124511, ... \n", - "1 [0.0, 0.0282468795776367, 0.0568208694458007, ... \n", - "2 [0.0, 0.0300424098968505, 0.0642564296722412, ... \n", - "3 [0.0, 0.0336849689483642, 0.0699138641357421, ... \n", - "4 [0.0, 0.0517921447753906, 0.0927190780639648, ... \n", - "5 [0.0, 0.0520830154418945, 0.1004714965820312, ... \n", - "6 [0.0, 0.0270428657531738, 0.0953762531280517, ... \n", - "7 [0.0, 0.0501048564910888, 0.0824878215789794, ... \n", - "8 [0.0, 0.0279419422149658, 0.0590729713439941, ... \n", - "9 [0.0, 0.0286586284637451, 0.06117844581604, 0.... \n", - "10 [0.0, 0.0262553691864013, 0.0537238121032714, ... \n", - "11 [0.0, 0.0308592319488525, 0.0663516521453857, ... \n", - "12 [0.0, 0.0363237857818603, 0.1557934284210205, ... \n", - "13 [0.0, 0.0453114509582519, 0.0877230167388916, ... \n", - "14 [0.0, 0.0540707111358642, 0.1005995273590087, ... \n", - "15 [0.0, 0.1161983013153076, 0.2656311988830566, ... \n", - "16 [0.0, 0.0644490718841552, 0.0969510078430175, ... \n", - "17 [0.0, 0.0275282859802246, 0.0576918125152587, ... \n", - "18 [0.0, 0.0278799533843994, 0.0581820011138916, ... \n", - "19 [0.0, 0.029649019241333, 0.0734004974365234, 0... \n", - "20 [0.0, 0.0310356616973876, 0.0633888244628906, ... \n", - "21 [0.0, 0.0353169441223144, 0.072155475616455, 0... \n", - "22 [0.0, 0.0436325073242187, 0.086782693862915, 0... \n", - "23 [0.0, 0.0493862628936767, 0.0974702835083007, ... \n", - "24 [0.0, 0.0275194644927978, 0.0730621814727783, ... \n", - "25 [0.0, 0.0305087566375732, 0.0659692287445068, ... \n", - "26 [0.0, 0.029773473739624, 0.0620107650756835, 0... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [55.403265714645386, 2051.405519247055, 4047.7... \n", - "1 [196.9033393859864, 307.3230459690094, 417.390... \n", - "2 [56.32971405982971, 700.3005366325378, 1344.34... \n", - "3 [21.242717504501343, 473.3129940032959, 925.38... \n", - "4 [219.76593780517567, 1967.1575129032133, 3714.... \n", - "5 [127.73932814598083, 1574.7836694717407, 3022.... \n", - "6 [54.33276605606079, 2625.439747095108, 5196.64... \n", - "7 [25.705768823623657, 2596.7469022274017, 5167.... \n", - "8 [9.263241529464722, 365.3596320152282, 721.927... \n", - "9 [60.91907024383545, 2058.181893348694, 4054.16... \n", - "10 [200.95578265190125, 311.1789586544037, 421.27... \n", - "11 [58.005565881729126, 702.021279335022, 1346.03... \n", - "12 [22.54257607460022, 474.6149091720581, 926.657... \n", - "13 [210.54182243347168, 1958.5652182102203, 3711.... \n", - "14 [120.3093535900116, 1570.8978261947632, 3018.8... \n", - "15 [55.49204921722412, 2626.603167295456, 5197.67... \n", - "16 [25.405643224716187, 2596.313731908798, 5167.2... \n", - "17 [8.835359811782837, 365.288192987442, 721.8082... \n", - "18 [62.0377836227417, 2058.049063682556, 4054.171... \n", - "19 [176.35712265968323, 286.5588183403015, 396.94... \n", - "20 [57.330106258392334, 701.2851095199585, 1345.2... \n", - "21 [19.258131980896, 471.29798221588135, 923.4478... \n", - "22 [210.4243857860565, 1957.622484207153, 3716.01... \n", - "23 [126.54717898368835, 1573.5303466320038, 3022.... \n", - "24 [58.52012538909912, 2629.6919548511505, 5200.5... \n", - "25 [20.79915022850037, 2591.924871206284, 5162.82... \n", - "26 [8.664476871490479, 365.3622269630432, 722.084... \n", - "\n", - " global_step \\\n", - "0 [1, 5091, 10483, 15877, 21268, 26661, 32053, 3... \n", - "1 [1, 297, 396, 503, 607, 715, 827, 937, 1725, 2... \n", - "2 [1, 4467, 9353, 14240, 19134, 24029, 28916, 33... \n", - "3 [1, 2206, 4456, 6802, 9130, 11466, 13801, 1611... \n", - "4 [1, 494, 963, 1617, 2115, 2824, 3527, 4105, 48... \n", - "5 [1, 633, 1229, 1802, 2365, 2920, 3468, 4009, 4... \n", - "6 [1, 5384, 11038, 16692, 22336, 27982, 33626, 3... \n", - "7 [1, 11410, 22846, 34294, 45744, 57200, 68640] \n", - "8 [1, 384, 768, 1131, 1509, 1908, 2312, 2715, 31... \n", - "9 [1, 3667, 8555, 13898, 19241, 23383, 28732, 33... \n", - "10 [1, 299, 399, 506, 610, 718, 830, 943, 1755, 2... \n", - "11 [1, 4428, 9278, 14138, 19013, 23884, 28746, 33... \n", - "12 [1, 2196, 4423, 6658, 8899, 11254, 13620, 1596... \n", - "13 [1, 429, 821, 1327, 1779, 2290, 2830, 3416, 39... \n", - "14 [1, 634, 1219, 1791, 2347, 2902, 3451, 3994, 4... \n", - "15 [1, 5308, 10882, 16456, 22050, 27606, 33179, 3... \n", - "16 [1, 11293, 22619, 33948, 45278, 56608, 67936] \n", - "17 [1, 377, 754, 1131, 1506, 1853, 2242, 2649, 30... \n", - "18 [1, 4518, 9801, 14506, 19882, 25270, 30022, 34... \n", - "19 [1, 299, 406, 512, 626, 731, 845, 953, 1847, 2... \n", - "20 [1, 4457, 9347, 14247, 19144, 24043, 28930, 33... \n", - "21 [1, 2204, 4420, 6651, 8920, 11191, 13492, 1583... \n", - "22 [1, 434, 827, 1339, 1781, 2289, 2831, 3421, 39... \n", - "23 [1, 626, 1207, 1783, 2346, 2908, 3459, 4006, 4... \n", - "24 [1, 5278, 11064, 16849, 22622, 28394, 34169, 3... \n", - "25 [1, 11381, 22790, 34204, 45622, 57046, 68461, ... \n", - "26 [1, 374, 736, 1113, 1489, 1873, 2268, 2666, 30... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [55.403265714645386, 2051.405519247055, 4047.7... \n", - "1 [196.9033393859864, 307.3230459690094, 417.390... \n", - "2 [56.32971405982971, 700.3005366325378, 1344.34... \n", - "3 [21.242717504501343, 473.3129940032959, 925.38... \n", - "4 [219.76593780517567, 1967.1575129032133, 3714.... \n", - "5 [127.73932814598083, 1574.7836694717407, 3022.... \n", - "6 [54.33276605606079, 2625.439747095108, 5196.64... \n", - "7 [25.705768823623657, 2596.7469022274017, 5167.... \n", - "8 [9.263241529464722, 365.3596320152282, 721.927... \n", - "9 [60.91907024383545, 2058.181893348694, 4054.16... \n", - "10 [200.95578265190125, 311.1789586544037, 421.27... \n", - "11 [58.005565881729126, 702.021279335022, 1346.03... \n", - "12 [22.54257607460022, 474.6149091720581, 926.657... \n", - "13 [210.54182243347168, 1958.5652182102203, 3711.... \n", - "14 [120.3093535900116, 1570.8978261947632, 3018.8... \n", - "15 [55.49204921722412, 2626.603167295456, 5197.67... \n", - "16 [25.405643224716187, 2596.313731908798, 5167.2... \n", - "17 [8.835359811782837, 365.288192987442, 721.8082... \n", - "18 [62.0377836227417, 2058.049063682556, 4054.171... \n", - "19 [176.35712265968323, 286.5588183403015, 396.94... \n", - "20 [57.330106258392334, 701.2851095199585, 1345.2... \n", - "21 [19.258131980896, 471.29798221588135, 923.4478... \n", - "22 [210.4243857860565, 1957.622484207153, 3716.01... \n", - "23 [126.54717898368835, 1573.5303466320038, 3022.... \n", - "24 [58.52012538909912, 2629.6919548511505, 5200.5... \n", - "25 [20.79915022850037, 2591.924871206284, 5162.82... \n", - "26 [8.664476871490479, 365.3622269630432, 722.084... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.00080000004, 0.025600001, 0.0092, 0.0046, 0... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.6015571355819702, 0.651... ... \n", - "3 [0.54930579662323, 0.9839819669723512, 0.98475... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.2028, 0.33490002, 0.40050003, 0.4466... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0012, 0.029900001, 0.013300001, 0.0048, 0.0... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5996630191802979, 0.652... ... \n", - "12 [0.5500994324684143, 0.9840356111526488, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.19970001, 0.3323, 0.39560002, 0.4453... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0013000001, 0.029500002, 0.007900001, 0.004... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.601266622543335, 0.6496... ... \n", - "21 [0.5132913589477539, 0.9839556217193604, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.2088, 0.33800003, 0.4072, 0.45270002... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0253999915231944, 0.1209215189084952, 0.170... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0283739277753704, 0.1295064363925236, 0.179... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0262547068500254, 0.1173298612342307, 0.163... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.721686, 1.5433471, 1.4547613, 0.6074762, 0.... \n", - "5 [7.599229, 1.5933617, 0.6930949, 0.4062324, 0.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.7219095, 1.469696, 1.4844515, 1.5153385, 1.... \n", - "14 [7.5903873, 1.551974, 0.77204025, 0.4166957, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.6164026, 1.4853637, 1.8755568, 1.7902044, 1... \n", - "23 [7.9597225, 1.4082513, 0.7803582, 0.43200895, ... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1889992484715537, 0.899579550301627, 0.8995... \n", - "5 [3.9952877135254807, 0.9890114354193326, 0.617... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.961001767107428, 0.899579550301627, 0.89957... \n", - "14 [4.370259785103488, 1.064976743241322, 0.69433... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1780919302094124, 0.899579550301627, 0.9003... \n", - "23 [4.648284687100116, 0.9053074157577234, 0.6687... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.004865, 1.5167239, 1.447025, 0.5991005, 0.4... \n", - "5 [7.763394, 1.731378, 0.70260745, 0.40471458, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.9469433, 1.4678591, 1.4934036, 1.4973278, 1... \n", - "14 [7.886663, 1.6670026, 0.7908021, 0.42054507, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.9698772, 1.4752581, 1.5140996, 1.7457054, 1... \n", - "23 [8.196242, 1.5066614, 0.82029676, 0.43138903, ... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9958509464215064, 0.944635537887994, 0.9427... \n", - "5 [4.1193855027799176, 1.0421927457724869, 0.640... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.044306894612998, 0.944635537887994, 0.94272... \n", - "14 [4.535722466318223, 1.1096784824205477, 0.7283... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1730733190346292, 0.944635537887994, 0.9427... \n", - "23 [4.826046894196531, 0.92307573479434, 0.699246... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.6813645, 1.5494846, 1.4620444, 0.66371936, ... \n", - "5 [7.5782866, 1.6362473, 0.78430516, 0.50880057,... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6784267, 1.4717903, 1.488873, 1.5197185, 1.... \n", - "14 [7.57745, 1.5971037, 0.859292, 0.5192453, 0.36... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.590369, 1.4892555, 2.0417223, 1.7875694, 1.... \n", - "23 [7.9328957, 1.4552202, 0.8768337, 0.5423497, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1928354173707334, 0.8967218654950997, 0.896... \n", - "5 [3.7919374305991407, 0.969806401776662, 0.6599... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9375175010862744, 0.8967218654950997, 0.896... \n", - "14 [4.132148892000193, 1.0488292376768211, 0.7274... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1852170134698017, 0.8967218654950997, 0.898... \n", - "23 [4.3034615941679135, 0.8934195915608555, 0.703... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [59605.40389065451, 33.93450762623022, 27.6305... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [60002.92729324393, 33.16179841895657, 27.0589... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60222.03362979968, 32.81367021462304, 27.2247... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [59615.23873864268, 34.04377705462479, 27.6453... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [60005.33071790546, 33.2487797876805, 27.06711... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60219.73638534624, 32.90676735747443, 27.2323... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== Schedule-Free AdamW v2 (PyTorch) (schedule_free_adamw_v2) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload \\\n", - "0 imagenet_resnet_pytorch \n", - "1 fastmri_pytorch \n", - "2 imagenet_vit_pytorch \n", - "3 librispeech_conformer_pytorch \n", - "4 ogbg_pytorch \n", - "5 librispeech_deepspeech_pytorch \n", - "6 wmt_pytorch \n", - "7 criteo1tb_pytorch \n", - "8 finewebedu_lm_pytorch \n", - "9 imagenet_resnet_pytorch \n", - "10 fastmri_pytorch \n", - "11 imagenet_vit_pytorch \n", - "12 librispeech_conformer_pytorch \n", - "13 ogbg_pytorch \n", - "14 librispeech_deepspeech_pytorch \n", - "15 wmt_pytorch \n", - "16 criteo1tb_pytorch \n", - "17 finewebedu_lm_pytorch \n", - "18 imagenet_resnet_pytorch \n", - "19 fastmri_pytorch \n", - "20 librispeech_conformer_pytorch \n", - "21 ogbg_pytorch \n", - "22 librispeech_deepspeech_pytorch \n", - "23 wmt_pytorch \n", - "24 criteo1tb_pytorch \n", - "25 finewebedu_lm_pytorch \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [249.11051225662231, 409.8751678466797, 556.52... \n", - "1 [296.68140029907227, 302.8516414165497, 308.98... \n", - "2 [210.3744921684265, 368.30675625801086, 519.52... \n", - "3 [66.95272040367126, 117.95686078071594, 166.87... \n", - "4 [77.86068320274353, 107.99291062355042, 138.74... \n", - "5 [56.27024698257446, 96.27249240875244, 144.551... \n", - "6 [431.9141161441803, 635.4876143932343, 829.028... \n", - "7 [914.4495341777802, 1702.3832795619965, 2468.4... \n", - "8 [221.4766297340393, 402.8152713775635, 584.092... \n", - "9 [279.9216039180756, 416.338365316391, 548.7897... \n", - "10 [391.99245381355286, 402.0045380592346, 411.42... \n", - "11 [304.1490981578827, 486.1130685806274, 660.091... \n", - "12 [65.65768480300903, 112.98680996894836, 160.27... \n", - "13 [72.12119626998901, 100.6438446044922, 129.059... \n", - "14 [64.48158812522888, 98.41296625137328, 147.146... \n", - "15 [435.32351565361023, 641.7875559329987, 828.96... \n", - "16 [823.8291246891022, 1591.9094185829165, 2356.5... \n", - "17 [221.5483334064484, 403.7193796634674, 585.796... \n", - "18 [217.3025598526001, 336.2104983329773, 460.497... \n", - "19 [308.4529986381531, 314.60500955581665, 320.74... \n", - "20 [64.37843656539917, 113.8451201915741, 163.379... \n", - "21 [76.71926641464233, 107.38231706619264, 137.97... \n", - "22 [76.65600275993347, 126.87334179878236, 177.69... \n", - "23 [431.166291475296, 630.1243770122528, 821.5166... \n", - "24 [779.652889251709, 1524.1723053455353, 2267.50... \n", - "25 [221.125262260437, 403.004412651062, 584.58507... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3801503181457519, 1.1023294925689695, ... \n", - "1 [0.0, 0.3137989044189453, 0.3557281494140625, ... \n", - "2 [0.0, 0.3512694835662842, 1.6509487628936768, ... \n", - "3 [0.0, 0.300149917602539, 0.3589334487915039, 0... \n", - "4 [0.0, 0.0929186344146728, 0.1309175491333007, ... \n", - "5 [0.0, 0.2907252311706543, 0.5344891548156738, ... \n", - "6 [0.0, 0.3168292045593261, 0.4186694622039795, ... \n", - "7 [0.0, 0.3814537525177002, 0.4164624214172363, ... \n", - "8 [0.0, 0.352717638015747, 0.4059216976165771, 0... \n", - "9 [0.0, 0.2659287452697754, 1.4724721908569336, ... \n", - "10 [0.0, 0.271064281463623, 0.3074986934661865, 0... \n", - "11 [0.0, 0.3571417331695556, 1.068497657775879, 2... \n", - "12 [0.0, 0.0769686698913574, 0.1230995655059814, ... \n", - "13 [0.0, 0.0557470321655273, 0.0874710083007812, ... \n", - "14 [0.0, 0.3230507373809814, 0.6127181053161621, ... \n", - "15 [0.0, 0.3003222942352295, 0.3495957851409912, ... \n", - "16 [0.0, 0.3675975799560547, 0.4284005165100097, ... \n", - "17 [0.0, 0.0677485466003418, 0.113591194152832, 0... \n", - "18 [0.0, 0.0625197887420654, 0.0969834327697753, ... \n", - "19 [0.0, 0.3745512962341308, 0.4103329181671142, ... \n", - "20 [0.0, 0.2909564971923828, 0.3771781921386719, ... \n", - "21 [0.0, 0.0652134418487548, 0.104417085647583, 0... \n", - "22 [0.0, 0.0822052955627441, 0.1311945915222168, ... \n", - "23 [0.0, 0.0612545013427734, 0.0998022556304931, ... \n", - "24 [0.0, 0.0582411289215087, 0.0954034328460693, ... \n", - "25 [0.0, 0.0637731552124023, 0.1116249561309814, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [145.55826592445374, 2138.894546985626, 4133.0... \n", - "1 [145.96252608299255, 255.07068753242493, 364.4... \n", - "2 [94.90353989601137, 2661.42169547081, 5229.087... \n", - "3 [18.94313645362854, 1764.1741247177124, 3509.5... \n", - "4 [14.544916152954102, 465.7149586677551, 916.85... \n", - "5 [34.503788232803345, 1478.536323785782, 2922.8... \n", - "6 [54.089704275131226, 695.9262759685516, 1337.9... \n", - "7 [6.098940372467041, 362.3438584804535, 718.723... \n", - "8 [53.8807008266449, 2622.0064418315887, 5190.76... \n", - "9 [162.8230459690094, 2155.6817536354065, 4148.5... \n", - "10 [187.53205919265747, 296.4313855171204, 406.46... \n", - "11 [88.86981630325317, 2662.2931270599365, 5236.0... \n", - "12 [17.005546808242798, 1762.7828562259674, 3508.... \n", - "13 [6.708303213119507, 457.85532116889954, 909.04... \n", - "14 [39.70852279663086, 1484.1050803661346, 2928.9... \n", - "15 [58.43246555328369, 700.232017993927, 1342.203... \n", - "16 [6.935627937316895, 362.9498031139374, 719.467... \n", - "17 [41.42606282234192, 2609.49827337265, 5177.869... \n", - "18 [162.14458894729614, 2158.090327978134, 4151.4... \n", - "19 [146.65601301193237, 255.6350064277649, 365.17... \n", - "20 [17.390963792800903, 1762.5864510536194, 3508.... \n", - "21 [9.465001106262209, 460.63598465919495, 911.72... \n", - "22 [29.35258436203003, 1474.7683084011078, 2919.8... \n", - "23 [52.19884514808655, 694.1772229671478, 1336.11... \n", - "24 [4.689499139785767, 360.6912479400635, 716.459... \n", - "25 [40.73595309257507, 2609.0001788139343, 5177.8... \n", - "\n", - " global_step \\\n", - "0 [1, 2037, 4400, 6815, 9178, 11260, 13531, 1594... \n", - "1 [1, 674, 995, 1323, 1659, 2455, 5431, 8408, 11... \n", - "2 [1, 3645, 6877, 9859, 13026, 16012, 19150, 221... \n", - "3 [1, 1586, 3453, 5964, 8703, 11358, 13941, 1649... \n", - "4 [1, 1969, 3942, 5904, 7919, 9986, 12060, 14125... \n", - "5 [1, 3123, 5817, 8490, 11152, 13953, 16598, 192... \n", - "6 [1, 4409, 9012, 13612, 18201, 22797, 27402, 32... \n", - "7 [1, 358, 725, 1099, 1478, 1849, 2220, 2599, 29... \n", - "8 [1, 6479, 12959, 19442, 25928, 32414, 38901, 4... \n", - "9 [1, 3079, 5586, 7929, 10148, 12444, 14821, 172... \n", - "10 [1, 606, 851, 1091, 1321, 1560, 1818, 3452, 64... \n", - "11 [1, 2131, 4913, 7891, 10783, 13633, 16563, 194... \n", - "12 [1, 1674, 3742, 6391, 9036, 11604, 14170, 1693... \n", - "13 [1, 2113, 4225, 6337, 8501, 10668, 12826, 1498... \n", - "14 [1, 3209, 6107, 9208, 12216, 15307, 18321, 213... \n", - "15 [1, 4388, 8974, 13560, 18149, 22733, 27313, 31... \n", - "16 [1, 382, 756, 1130, 1504, 1878, 2262, 2642, 30... \n", - "17 [1, 6477, 12961, 19452, 25946, 32441, 38936, 4... \n", - "18 [1, 1831, 4644, 7695, 10809, 13692, 16888, 197... \n", - "19 [1, 654, 967, 1276, 1588, 1914, 4771, 7753, 10... \n", - "20 [1, 1723, 3779, 6466, 9120, 11701, 14443, 1717... \n", - "21 [1, 1956, 3901, 5853, 7796, 9773, 11833, 13899... \n", - "22 [1, 2028, 4524, 7188, 10031, 12802, 15598, 183... \n", - "23 [1, 4389, 8986, 13579, 18170, 22741, 27311, 31... \n", - "24 [1, 394, 783, 1177, 1573, 1970, 2362, 2752, 31... \n", - "25 [1, 6486, 12978, 19475, 25973, 32473, 38972, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [145.55826592445374, 2138.894546985626, 4133.0... \n", - "1 [145.96252608299255, 255.07068753242493, 364.4... \n", - "2 [94.90353989601137, 2661.42169547081, 5229.087... \n", - "3 [18.94313645362854, 1764.1741247177124, 3509.5... \n", - "4 [14.544916152954102, 465.7149586677551, 916.85... \n", - "5 [34.503788232803345, 1478.536323785782, 2922.8... \n", - "6 [54.089704275131226, 695.9262759685516, 1337.9... \n", - "7 [6.098940372467041, 362.3438584804535, 718.723... \n", - "8 [53.8807008266449, 2622.0064418315887, 5190.76... \n", - "9 [162.8230459690094, 2155.6817536354065, 4148.5... \n", - "10 [187.53205919265747, 296.4313855171204, 406.46... \n", - "11 [88.86981630325317, 2662.2931270599365, 5236.0... \n", - "12 [17.005546808242798, 1762.7828562259674, 3508.... \n", - "13 [6.708303213119507, 457.85532116889954, 909.04... \n", - "14 [39.70852279663086, 1484.1050803661346, 2928.9... \n", - "15 [58.43246555328369, 700.232017993927, 1342.203... \n", - "16 [6.935627937316895, 362.9498031139374, 719.467... \n", - "17 [41.42606282234192, 2609.49827337265, 5177.869... \n", - "18 [162.14458894729614, 2158.090327978134, 4151.4... \n", - "19 [146.65601301193237, 255.6350064277649, 365.17... \n", - "20 [17.390963792800903, 1762.5864510536194, 3508.... \n", - "21 [9.465001106262209, 460.63598465919495, 911.72... \n", - "22 [29.35258436203003, 1474.7683084011078, 2919.8... \n", - "23 [52.19884514808655, 694.1772229671478, 1336.11... \n", - "24 [4.689499139785767, 360.6912479400635, 716.459... \n", - "25 [40.73595309257507, 2609.0001788139343, 5177.8... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0006, 0.1991, 0.3832, 0.45, 0.4925, 0.5145,... ... \n", - "1 NaN ... \n", - "2 [0.0019, 0.1725, 0.2875, 0.3543, 0.4039, 0.437... ... \n", - "3 NaN ... \n", - "4 [0.5090411450432474, 0.983667989343342, 0.9843... ... \n", - "5 NaN ... \n", - "6 [0.0007183408643262, 0.6176456957478855, 0.664... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0012, 0.2961, 0.4226, 0.4762, 0.5035, 0.520... ... \n", - "10 NaN ... \n", - "11 [0.002, 0.0937, 0.2224, 0.3144, 0.3703, 0.405,... ... \n", - "12 NaN ... \n", - "13 [0.4962120095448347, 0.9837913848854358, 0.984... ... \n", - "14 NaN ... \n", - "15 [0.0007183408643262, 0.6183292781832928, 0.663... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0009, 0.1755, 0.3885, 0.466, 0.511, 0.5337,... ... \n", - "19 NaN ... \n", - "20 NaN ... \n", - "21 [0.5332266712936485, 0.983707155846464, 0.9843... ... \n", - "22 NaN ... \n", - "23 [0.0007183408643262, 0.6207044374927586, 0.664... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [1.053145367643509, 0.7029981171245112, 0.5013... \n", - "4 NaN \n", - "5 [1.2424274610148216, 0.6870757495292811, 0.300... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.9206488678607636, 0.6727079611837976, 0.456... \n", - "13 NaN \n", - "14 [3.8984019697774346, 0.5887124028387969, 0.294... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.875797808139816, 0.6706995606623859, 0.4368... \n", - "21 NaN \n", - "22 [3.9378361415536136, 0.8254139912132478, 0.455... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0285243041517041, 0.1137622490271116, 0.167... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0287862891572014, 0.1250517388826788, 0.172... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0281322343950815, 0.1205822140332979, 0.173... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0256960702858887, 0.118437313605253, 0.1823... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0239173888396002, 0.1272893895702323, 0.201... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0214269779044028, 0.1207575478512613, 0.188... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0276898548246173, 0.115050673413703, 0.1658... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0271704411799167, 0.1257482433444859, 0.171... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0258981082843745, 0.1192643607230662, 0.168... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 23.67505993855702, 27.329239650889456, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 23.86868636064076, 27.25486369109001, 28... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 23.739233918672067, 27.21511668994115, 2... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 28.10511323899001, 31.886264878653023, 3... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 28.219594972970707, 31.61761329079054, 3... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 28.79396870386552, 31.82215738103054, 33... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 25.109248114112816, 27.91356231651028, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 24.944971668070828, 27.792643983819328, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 24.99278448504232, 27.897490286134783, 2... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [54003.45385027949, 36.45710903200461, 30.8870... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [55555.89769149712, 41.7789448887792, 33.53522... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [52602.99897662387, 41.00457724362877, 33.1240... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [53914.279919016335, 36.2771393256473, 30.6320... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [55541.71316424559, 41.61970338730468, 33.2918... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [52583.93273466763, 40.84033839084643, 32.8907... \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n", - "\n", - "=== Single Worker DiLoCo (JAX) (single_worker_diloco) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 wmt_jax \n", - "20 ogbg_jax \n", - "21 librispeech_conformer_jax \n", - "22 librispeech_deepspeech_jax \n", - "23 imagenet_vit_jax \n", - "24 finewebedu_lm_jax \n", - "25 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "1 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "2 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "3 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "4 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "5 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "6 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "7 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "8 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "9 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "10 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "11 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "12 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "13 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "14 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "15 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "16 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "17 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "18 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "19 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "20 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "21 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "22 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "23 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "24 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "25 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [54.93394470214844, 77.65910649299622, 101.350... \n", - "1 [488.04167652130127, 494.37904047966, 504.3951... \n", - "2 [923.5906100273132, 1486.2823479175568, 2045.4... \n", - "3 [245.27266764640808, 357.203111410141, 464.550... \n", - "4 [269.6399447917938, 352.97594594955444, 438.19... \n", - "5 [265.1276106834412, 395.9384162425995, 505.397... \n", - "6 [72.47451758384705, 97.15354514122008, 120.968... \n", - "7 [337.83612847328186, 671.4962995052338, 1004.8... \n", - "8 [2433.226147174835, 3746.494707107544, 5046.53... \n", - "9 [77.40477871894836, 106.90606665611269, 147.81... \n", - "10 [997.3023977279664, 1000.8910071849824, 1004.4... \n", - "11 [923.016721725464, 1472.3084964752195, 1997.63... \n", - "12 [256.8354649543762, 372.5580561161041, 486.347... \n", - "13 [224.8493490219116, 343.9610321521759, 462.755... \n", - "14 [240.16997742652893, 373.14461040496826, 473.3... \n", - "15 [119.4431505203247, 301.4704976081848, 496.367... \n", - "16 [336.5430357456207, 668.9646303653717, 1001.20... \n", - "17 [2554.917941570282, 3910.4106504917145, 5197.6... \n", - "18 [53.0907781124115, 76.29391121864319, 100.5034... \n", - "19 [923.0034399032592, 1453.6598098278046, 1973.5... \n", - "20 [250.2954442501068, 363.5142397880554, 475.330... \n", - "21 [206.0729546546936, 296.4235508441925, 387.905... \n", - "22 [246.5164430141449, 353.7335891723633, 458.653... \n", - "23 [62.19135785102844, 86.0208649635315, 110.7701... \n", - "24 [335.931485414505, 668.4215061664581, 1000.601... \n", - "25 [947.042496919632, 1810.6609337329865, 2656.97... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.364088773727417, 0.4894285202026367, 0... \n", - "1 [0.0, 0.4791250228881836, 0.5800347328186035, ... \n", - "2 [0.0, 0.0687258243560791, 0.1189558506011962, ... \n", - "3 [0.0, 0.5725998878479004, 0.6235589981079102, ... \n", - "4 [0.0, 0.1083638668060302, 0.1676850318908691, ... \n", - "5 [0.0, 0.0920515060424804, 0.2624502182006836, ... \n", - "6 [0.0, 0.0717225074768066, 0.1830096244812011, ... \n", - "7 [0.0, 0.4595606327056885, 0.5113751888275146, ... \n", - "8 [0.0, 0.0568771362304687, 0.1014730930328369, ... \n", - "9 [0.0, 0.4633722305297851, 0.5256507396697998, ... \n", - "10 [0.0, 0.0701143741607666, 0.1177473068237304, ... \n", - "11 [0.0, 0.351701021194458, 0.4035556316375732, 0... \n", - "12 [0.0, 0.3668982982635498, 0.4231963157653808, ... \n", - "13 [0.0, 0.4087870121002197, 0.4757328033447265, ... \n", - "14 [0.0, 0.0898795127868652, 0.1571307182312011, ... \n", - "15 [0.0, 0.3030455112457275, 0.4322013854980469, ... \n", - "16 [0.0, 0.1699869632720947, 0.2150421142578125, ... \n", - "17 [0.0, 0.4298927783966064, 0.4766197204589844, ... \n", - "18 [0.0, 0.1289854049682617, 0.1785833835601806, ... \n", - "19 [0.0, 0.4406452178955078, 0.4953742027282715, ... \n", - "20 [0.0, 0.288888931274414, 0.3394525051116943, 0... \n", - "21 [0.0, 0.0895514488220214, 0.1525795459747314, ... \n", - "22 [0.0, 0.0936219692230224, 0.1596615314483642, ... \n", - "23 [0.0, 0.0656430721282959, 0.1698439121246338, ... \n", - "24 [0.0, 0.0699305534362793, 0.117136001586914, 0... \n", - "25 [0.0, 0.3879146575927734, 0.4399378299713135, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [56.26010727882385, 2052.1432723999023, 4048.2... \n", - "1 [169.82940220832825, 280.85251116752625, 390.9... \n", - "2 [56.91378450393677, 701.2662165164948, 1345.56... \n", - "3 [20.07199788093567, 471.6521027088165, 923.638... \n", - "4 [184.6883807182312, 1939.4339129924767, 3695.5... \n", - "5 [132.95004320144653, 1580.1831188201904, 3031.... \n", - "6 [49.60117316246033, 2621.1932892799377, 5192.5... \n", - "7 [23.897384881973267, 2594.808893918991, 5166.7... \n", - "8 [10.494952917099, 368.0562832355499, 725.30107... \n", - "9 [58.44966769218445, 2054.207333803177, 4050.45... \n", - "10 [276.87992691993713, 387.42562079429626, 497.9... \n", - "11 [56.55395293235779, 700.5711402893066, 1344.91... \n", - "12 [22.014230966568, 473.7200002670288, 925.83500... \n", - "13 [192.77552723884585, 1951.3585050106049, 3698.... \n", - "14 [141.3566656112671, 1591.755771636963, 3050.36... \n", - "15 [66.12649583816528, 2637.2447090148926, 5208.6... \n", - "16 [21.83658623695373, 2593.6851353645325, 5165.7... \n", - "17 [15.059802770614624, 378.0891873836517, 736.25... \n", - "18 [45.628106117248535, 2041.7665169239044, 4038.... \n", - "19 [59.6278817653656, 703.6324298381805, 1348.012... \n", - "20 [21.56647562980652, 473.44666147232056, 925.54... \n", - "21 [182.16398119926453, 1929.362173318863, 3676.3... \n", - "22 [133.79193377494812, 1585.8211448192596, 3033.... \n", - "23 [47.870569944381714, 2619.370136976242, 5190.6... \n", - "24 [20.48937511444092, 2592.545851945877, 5164.60... \n", - "25 [10.436060428619385, 367.1423001289368, 724.46... \n", - "\n", - " global_step \\\n", - "0 [1, 7668, 15507, 23353, 31201, 39052, 46902, 5... \n", - "1 [1, 273, 380, 482, 591, 692, 796, 898, 1341, 2... \n", - "2 [1, 4137, 8672, 13207, 17749, 22300, 26850, 31... \n", - "3 [1, 2121, 4394, 6686, 8977, 11312, 13638, 1596... \n", - "4 [1, 399, 807, 1323, 1787, 2346, 2895, 3565, 40... \n", - "5 [1, 462, 895, 1443, 1852, 2390, 2880, 3469, 39... \n", - "6 [1, 5432, 11017, 16586, 22145, 27690, 33212, 3... \n", - "7 [1, 5500, 11060, 16621, 22184, 27748, 33313, 3... \n", - "8 [1, 171, 341, 510, 707, 875, 1072, 1246, 1445,... \n", - "9 [1, 5520, 13363, 21207, 29050, 36899, 44742, 5... \n", - "10 [1, 255, 306, 357, 406, 458, 510, 565, 617, 67... \n", - "11 [1, 4168, 8743, 13307, 17881, 22450, 27028, 31... \n", - "12 [1, 2133, 4335, 6566, 8812, 11053, 13331, 1558... \n", - "13 [1, 483, 983, 1595, 2039, 2698, 3190, 3841, 44... \n", - "14 [1, 459, 887, 1436, 1900, 2505, 2973, 3669, 40... \n", - "15 [1, 3979, 8375, 13698, 18990, 24322, 29663, 35... \n", - "16 [1, 5531, 11115, 16703, 22296, 27886, 33474, 3... \n", - "17 [1, 150, 308, 467, 654, 829, 998, 1143, 1295, ... \n", - "18 [1, 7387, 15220, 23060, 30903, 38747, 46587, 5... \n", - "19 [1, 4157, 8735, 13307, 17889, 22463, 27047, 31... \n", - "20 [1, 2147, 4395, 6760, 9104, 11435, 13751, 1607... \n", - "21 [1, 750, 1450, 1987, 2734, 3372, 3967, 4705, 5... \n", - "22 [1, 640, 1126, 1672, 2099, 2702, 3091, 3762, 4... \n", - "23 [1, 5521, 11204, 16882, 22540, 28189, 33836, 3... \n", - "24 [1, 5518, 11086, 16650, 22221, 27793, 33361, 3... \n", - "25 [1, 388, 778, 1169, 1559, 1933, 2344, 2760, 31... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [56.26010727882385, 2052.1432723999023, 4048.2... \n", - "1 [169.82940220832825, 280.85251116752625, 390.9... \n", - "2 [56.91378450393677, 701.2662165164948, 1345.56... \n", - "3 [20.07199788093567, 471.6521027088165, 923.638... \n", - "4 [184.6883807182312, 1939.4339129924767, 3695.5... \n", - "5 [132.95004320144653, 1580.1831188201904, 3031.... \n", - "6 [49.60117316246033, 2621.1932892799377, 5192.5... \n", - "7 [23.897384881973267, 2594.808893918991, 5166.7... \n", - "8 [10.494952917099, 368.0562832355499, 725.30107... \n", - "9 [58.44966769218445, 2054.207333803177, 4050.45... \n", - "10 [276.87992691993713, 387.42562079429626, 497.9... \n", - "11 [56.55395293235779, 700.5711402893066, 1344.91... \n", - "12 [22.014230966568, 473.7200002670288, 925.83500... \n", - "13 [192.77552723884585, 1951.3585050106049, 3698.... \n", - "14 [141.3566656112671, 1591.755771636963, 3050.36... \n", - "15 [66.12649583816528, 2637.2447090148926, 5208.6... \n", - "16 [21.83658623695373, 2593.6851353645325, 5165.7... \n", - "17 [15.059802770614624, 378.0891873836517, 736.25... \n", - "18 [45.628106117248535, 2041.7665169239044, 4038.... \n", - "19 [59.6278817653656, 703.6324298381805, 1348.012... \n", - "20 [21.56647562980652, 473.44666147232056, 925.54... \n", - "21 [182.16398119926453, 1929.362173318863, 3676.3... \n", - "22 [133.79193377494812, 1585.8211448192596, 3033.... \n", - "23 [47.870569944381714, 2619.370136976242, 5190.6... \n", - "24 [20.48937511444092, 2592.545851945877, 5164.60... \n", - "25 [10.436060428619385, 367.1423001289368, 724.46... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0005, 0.40390003, 0.45690003, 0.46370003, 0... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5827087759971619, 0.634... ... \n", - "3 [0.5712358355522156, 0.9831680655479432, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.1106, 0.22340001, 0.2754, 0.3291, 0.... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.001, 0.36740002, 0.4514, 0.4821, 0.4663, 0.... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5804659724235535, 0.632... ... \n", - "12 [0.5311293601989746, 0.9834051728248596, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.0948, 0.20170002, 0.2675, 0.30600002... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.001, 0.34870002, 0.43370003, 0.4656, 0.4691... ... \n", - "19 [0.0007088489946909, 0.5843240022659302, 0.632... ... \n", - "20 [0.4223818778991699, 0.9834001064300536, 0.984... ... \n", - "21 NaN ... \n", - "22 NaN ... \n", - "23 [0.001, 0.104600005, 0.22110002, 0.2764, 0.319... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0281086044240346, 0.0760312814730795, 0.150... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0256289938034138, 0.0837449784418454, 0.163... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [0.0244166748859538, 0.0846153862361216, 0.154... \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.49836, 1.5693011, 1.4578109, 1.4745129, 1.5... \n", - "5 [7.866069, 1.439223, 2.3455865, 3.3769433, 3.6... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.704191, 1.5388334, 1.533351, 2.001911, 1.73... \n", - "14 [7.8493266, 1.5207433, 2.9322114, 3.611226, 3.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [7.599224, 1.5329341, 1.5396421, 2.1677024, 1.... \n", - "22 [7.8128476, 1.5743126, 2.966502, 3.6380544, 3.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.957000385920013, 0.899579550301627, 0.89957... \n", - "5 [3.4800235614323727, 0.8920642658379542, 0.899... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0758637499238315, 0.899579550301627, 0.8995... \n", - "14 [2.844535169500132, 0.8427680620721874, 0.8995... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.7277029634594685, 0.899579550301627, 0.8995... \n", - "22 [4.153271179899661, 0.899579550301627, 0.89957... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.5945024, 1.5498501, 1.4638834, 1.5136615, 1... \n", - "5 [8.115769, 1.4617958, 2.3639185, 3.4144714, 3.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.8811975, 1.5138025, 1.5073831, 2.0152452, 1... \n", - "14 [8.117988, 1.5539541, 2.9378726, 3.6487691, 3.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [7.7964563, 1.5108746, 1.511539, 2.135476, 1.5... \n", - "22 [8.063176, 1.5744107, 2.9992657, 3.6825545, 3.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.949138954251088, 0.944635537887994, 0.94272... \n", - "5 [3.6068290194281913, 0.9356243949661182, 0.942... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.2129968973200342, 0.944635537887994, 0.9427... \n", - "14 [2.8499000478937178, 0.8739315359106918, 0.942... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.914062011952606, 0.944635537887994, 0.94272... \n", - "22 [4.336760510588676, 0.944635537887994, 0.94272... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.4885645, 1.5872782, 1.4632089, 1.4703661, 1... \n", - "5 [7.8678637, 1.434491, 2.3578951, 3.386508, 3.6... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6687646, 1.5452462, 1.538966, 1.9933962, 1.... \n", - "14 [7.822478, 1.5180161, 2.9425602, 3.6166, 3.605... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [7.5792956, 1.5383534, 1.544482, 2.1513786, 1.... \n", - "22 [7.809781, 1.5809687, 2.9607267, 3.6274774, 3.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9571766523439386, 0.8967218654950997, 0.896... \n", - "5 [3.394138946555304, 0.8912856660068555, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0471877564814367, 0.8967218654950997, 0.896... \n", - "14 [2.873837686477092, 0.8470622314488485, 0.8967... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.6671172693477527, 0.8967218654950997, 0.896... \n", - "22 [3.935035967749722, 0.8967218654950997, 0.8967... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "25 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62718.06722126679, 39.17421766972369, 34.4877... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62175.65310309591, 38.40545697641737, 37.9822... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [60631.64851860736, 39.25752428722655, 34.4034... \n", - "25 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62732.12475977242, 39.33720949623695, 34.5638... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62186.62370567977, 38.56233562607169, 38.1047... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [60615.80712863738, 39.4020886639981, 34.46599... \n", - "25 NaN \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "=== Single Worker DiLoCo v2 (JAX) (single_worker_dilocov2) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_deepspeech_jax \n", - "23 imagenet_vit_jax \n", - "24 finewebedu_lm_jax \n", - "25 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "1 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "2 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "3 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "4 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "5 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "6 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "7 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "8 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "9 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "10 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "11 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "12 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "13 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "14 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "15 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "16 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "17 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "18 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "19 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "20 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "21 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "22 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "23 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "24 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "25 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [80.47464275360107, 122.6698670387268, 152.225... \n", - "1 [799.7285838127136, 803.3222856521606, 806.849... \n", - "2 [926.7753138542176, 1790.791965007782, 2337.51... \n", - "3 [252.4080445766449, 366.20419454574585, 480.06... \n", - "4 [185.5909707546234, 276.1213903427124, 404.317... \n", - "5 [300.44232654571533, 409.3896160125733, 509.11... \n", - "6 [69.39710760116577, 93.04616236686708, 147.867... \n", - "7 [347.7568938732147, 692.1363089084625, 1036.28... \n", - "8 [2135.4776134490967, 3383.0855734348297, 4592.... \n", - "9 [65.62747931480408, 88.31560039520264, 112.218... \n", - "10 [829.4049801826477, 833.0718367099762, 836.686... \n", - "11 [934.611057281494, 1693.333464860916, 2243.752... \n", - "12 [243.44965720176697, 353.9625146389008, 461.95... \n", - "13 [261.93196749687195, 393.7517874240875, 520.39... \n", - "14 [246.9361436367035, 350.5411994457245, 453.810... \n", - "15 [88.79012846946716, 112.59346508979796, 137.06... \n", - "16 [335.45933532714844, 667.3529777526855, 999.99... \n", - "17 [2215.190994501114, 3422.7398810386658, 4629.3... \n", - "18 [92.15677738189696, 126.89766263961792, 174.48... \n", - "19 [790.4747951030731, 794.366536617279, 797.9666... \n", - "20 [923.3191974163057, 1677.8003385066986, 2210.5... \n", - "21 [231.4763276576996, 336.0118579864502, 437.262... \n", - "22 [292.74510741233826, 392.8842489719391, 495.87... \n", - "23 [71.21652340888977, 95.21234583854675, 119.905... \n", - "24 [347.69923877716064, 692.395316362381, 1036.66... \n", - "25 [1292.4564418792725, 2514.51624751091, 3676.47... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3285839557647705, 0.3921957015991211, ... \n", - "1 [0.0, 0.3797206878662109, 0.4209856986999511, ... \n", - "2 [0.0, 0.3940949440002441, 0.4312126636505127, ... \n", - "3 [0.0, 0.431227445602417, 0.4683587551116943, 0... \n", - "4 [0.0, 0.3614022731781006, 0.413492202758789, 0... \n", - "5 [0.0, 0.3889837265014648, 0.4353790283203125, ... \n", - "6 [0.0, 0.0611801147460937, 0.1742575168609619, ... \n", - "7 [0.0, 0.1662302017211914, 0.197615385055542, 0... \n", - "8 [0.0, 0.0529079437255859, 0.0886600017547607, ... \n", - "9 [0.0, 0.0537352561950683, 0.1716251373291015, ... \n", - "10 [0.0, 0.0526926517486572, 0.0831003189086914, ... \n", - "11 [0.0, 0.0599377155303955, 0.0976490974426269, ... \n", - "12 [0.0, 0.0687026977539062, 0.1071565151214599, ... \n", - "13 [0.0, 0.1269705295562744, 0.1667487621307373, ... \n", - "14 [0.0, 0.07916259765625, 0.1269495487213134, 0.... \n", - "15 [0.0, 0.5260531902313232, 0.6469161510467529, ... \n", - "16 [0.0, 0.1834690570831298, 0.2182302474975586, ... \n", - "17 [0.0, 0.2906394004821777, 0.3242685794830322, ... \n", - "18 [0.0, 0.1361677646636963, 0.8077182769775391, ... \n", - "19 [0.0, 0.3696622848510742, 0.4037783145904541, ... \n", - "20 [0.0, 0.3165249824523926, 0.3549463748931885, ... \n", - "21 [0.0, 0.1860105991363525, 0.2200644016265869, ... \n", - "22 [0.0, 0.0838289260864257, 0.1310744285583496, ... \n", - "23 [0.0, 0.0535049438476562, 0.1721456050872802, ... \n", - "24 [0.0, 0.2111172676086425, 0.2429029941558838, ... \n", - "25 [0.0, 0.0504634380340576, 0.083202838897705, 0... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [61.25292730331421, 2057.2855401039124, 4053.5... \n", - "1 [247.96657514572144, 358.09745836257935, 469.2... \n", - "2 [60.17778515815735, 704.1820552349091, 1348.50... \n", - "3 [21.011845111846924, 472.7813169956207, 924.93... \n", - "4 [179.8093180656433, 1931.1715903282168, 3681.2... \n", - "5 [149.95571851730347, 1607.0826470851898, 3055.... \n", - "6 [46.73759913444519, 2618.0756616592407, 5189.3... \n", - "7 [21.47393274307251, 2593.709819793701, 5165.73... \n", - "8 [9.619165897369385, 367.18895173072815, 724.11... \n", - "9 [48.448254346847534, 2044.7006561756127, 4040.... \n", - "10 [252.1949598789215, 364.0293734073639, 476.044... \n", - "11 [57.16991138458252, 701.5083611011505, 1345.91... \n", - "12 [18.40320611000061, 470.4710736274719, 922.553... \n", - "13 [180.6115384101868, 1936.8847064971924, 3697.6... \n", - "14 [133.51365399360657, 1581.924886226654, 3031.2... \n", - "15 [52.0203263759613, 2623.021533727646, 5194.577... \n", - "16 [19.84875869750977, 2591.7337641716003, 5164.0... \n", - "17 [12.925746440887451, 369.7731881141663, 726.35... \n", - "18 [53.25284075737, 2049.324117898941, 4044.77459... \n", - "19 [243.82849168777463, 353.62104654312134, 464.3... \n", - "20 [58.92920994758606, 702.9748380184174, 1347.35... \n", - "21 [18.05807399749756, 470.02969241142273, 922.06... \n", - "22 [147.27141690254211, 1606.2805190086365, 3053.... \n", - "23 [55.70216536521912, 2627.222187280655, 5198.67... \n", - "24 [21.38729691505432, 2593.30307674408, 5165.587... \n", - "25 [9.436538696289062, 367.4553608894348, 742.407... \n", - "\n", - " global_step \\\n", - "0 [1, 5793, 13578, 21356, 29138, 36905, 44679, 5... \n", - "1 [1, 261, 317, 379, 439, 497, 560, 617, 677, 73... \n", - "2 [1, 4328, 9090, 13860, 18627, 23399, 28167, 32... \n", - "3 [1, 2091, 4272, 6483, 8704, 10915, 13116, 1532... \n", - "4 [1, 816, 1623, 2334, 2984, 3751, 4422, 5060, 5... \n", - "5 [1, 391, 755, 1191, 1680, 2100, 2707, 3143, 37... \n", - "6 [1, 5512, 11219, 16891, 22570, 28225, 33856, 3... \n", - "7 [1, 5356, 10768, 16186, 21600, 27019, 32437, 3... \n", - "8 [1, 195, 389, 589, 791, 981, 1197, 1337, 1529,... \n", - "9 [1, 6574, 14471, 22370, 30271, 38175, 46080, 5... \n", - "10 [1, 265, 323, 386, 446, 504, 563, 624, 682, 73... \n", - "11 [1, 4146, 8700, 13266, 17826, 22387, 26951, 31... \n", - "12 [1, 2130, 4356, 6625, 8885, 11223, 13544, 1584... \n", - "13 [1, 503, 987, 1628, 2165, 2851, 3564, 4084, 48... \n", - "14 [1, 652, 1173, 1747, 2279, 2825, 3386, 3919, 4... \n", - "15 [1, 5351, 10912, 16465, 22027, 27549, 33061, 3... \n", - "16 [1, 5620, 11285, 16950, 22619, 28288, 33964, 3... \n", - "17 [1, 189, 405, 592, 779, 962, 1125, 1344, 1520,... \n", - "18 [1, 5475, 13301, 21175, 29074, 36961, 44803, 5... \n", - "19 [1, 261, 323, 390, 457, 519, 583, 651, 712, 77... \n", - "20 [1, 4324, 9070, 13815, 18567, 23317, 28065, 32... \n", - "21 [1, 2229, 4584, 7021, 9465, 11894, 14312, 1672... \n", - "22 [1, 379, 755, 1211, 1716, 2133, 2737, 3209, 38... \n", - "23 [1, 5328, 11024, 16710, 22383, 28058, 33729, 3... \n", - "24 [1, 5350, 10750, 16150, 21552, 26956, 32361, 3... \n", - "25 [1, 189, 375, 566, 750, 926, 1125, 1385, 1575,... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [61.25292730331421, 2057.2855401039124, 4053.5... \n", - "1 [247.96657514572144, 358.09745836257935, 469.2... \n", - "2 [60.17778515815735, 704.1820552349091, 1348.50... \n", - "3 [21.011845111846924, 472.7813169956207, 924.93... \n", - "4 [179.8093180656433, 1931.1715903282168, 3681.2... \n", - "5 [149.95571851730347, 1607.0826470851898, 3055.... \n", - "6 [46.73759913444519, 2618.0756616592407, 5189.3... \n", - "7 [21.47393274307251, 2593.709819793701, 5165.73... \n", - "8 [9.619165897369385, 367.18895173072815, 724.11... \n", - "9 [48.448254346847534, 2044.7006561756127, 4040.... \n", - "10 [252.1949598789215, 364.0293734073639, 476.044... \n", - "11 [57.16991138458252, 701.5083611011505, 1345.91... \n", - "12 [18.40320611000061, 470.4710736274719, 922.553... \n", - "13 [180.6115384101868, 1936.8847064971924, 3697.6... \n", - "14 [133.51365399360657, 1581.924886226654, 3031.2... \n", - "15 [52.0203263759613, 2623.021533727646, 5194.577... \n", - "16 [19.84875869750977, 2591.7337641716003, 5164.0... \n", - "17 [12.925746440887451, 369.7731881141663, 726.35... \n", - "18 [53.25284075737, 2049.324117898941, 4044.77459... \n", - "19 [243.82849168777463, 353.62104654312134, 464.3... \n", - "20 [58.92920994758606, 702.9748380184174, 1347.35... \n", - "21 [18.05807399749756, 470.02969241142273, 922.06... \n", - "22 [147.27141690254211, 1606.2805190086365, 3053.... \n", - "23 [55.70216536521912, 2627.222187280655, 5198.67... \n", - "24 [21.38729691505432, 2593.30307674408, 5165.587... \n", - "25 [9.436538696289062, 367.4553608894348, 742.407... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0014000001, 0.36560002, 0.45650002, 0.4169,... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.2840625345706939, 0.578... ... \n", - "3 [0.4694536924362182, 0.9831327199935912, 0.983... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.045300003, 0.1454, 0.22700001, 0.263... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0016000001, 0.344, 0.3014, 0.4679, 0.382500... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.2598686814308166, 0.568... ... \n", - "12 [0.4896935224533081, 0.9831398725509644, 0.983... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.053900003, 0.1444, 0.2194, 0.266, 0.... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.00070000003, 0.33710003, 0.42810002, 0.4347... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.3020394146442413, 0.591... ... \n", - "21 [0.4907908141613006, 0.983127236366272, 0.9830... ... \n", - "22 NaN ... \n", - "23 [0.001, 0.072100006, 0.18210001, 0.2469, 0.293... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0251479251828367, 0.0338156570553674, 0.044... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0277080923342443, 0.0341890814433129, 0.044... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0287873659014232, 0.0344600833593851, 0.043... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.8188148, 1.5198857, 1.4607787, 2.23269, 2.2... \n", - "5 [7.7995296, 1.4993261, 1.4718937, 1.4417106, 1... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.5704126, 1.6006178, 1.5195636, 1.44746, 2.6... \n", - "14 [7.9034896, 1.4649384, 1.4316331, 1.4175234, 1... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.7791758, 1.5051069, 1.4606261, 1.4253486, 1... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0177320090183413, 0.899579550301627, 0.8995... \n", - "5 [4.225478845489814, 0.899579550301627, 0.89957... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.7537830317063758, 0.899579550301627, 0.8995... \n", - "14 [4.2069749964454735, 0.899579550301627, 0.8995... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [3.209331139682733, 0.899579550301627, 0.89957... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.013115, 1.5044522, 1.476835, 2.2691593, 2.2... \n", - "5 [8.034092, 1.5055914, 1.4746667, 1.4530343, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.7630796, 1.5612469, 1.4995697, 1.4617863, 2... \n", - "14 [8.1575575, 1.4792901, 1.4447198, 1.43035, 1.2... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [8.043934, 1.5205169, 1.4679037, 1.4379932, 1.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9561616308852008, 0.944635537887994, 0.9427... \n", - "5 [4.4350883951439934, 0.944635537887994, 0.9427... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.4653343189721593, 0.944635537887994, 0.9427... \n", - "14 [4.366798200862087, 0.944635537887994, 0.94272... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [3.2846396518334964, 0.944635537887994, 0.9427... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.8037643, 1.5250415, 1.46053, 2.2193222, 2.2... \n", - "5 [7.78249, 1.4993496, 1.4746159, 1.4503418, 1.3... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.5522285, 1.6074548, 1.5243387, 1.4466227, 2... \n", - "14 [7.8522906, 1.468107, 1.4339567, 1.418764, 1.3... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.789264, 1.5134877, 1.4641047, 1.4278629, 1.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.031690242842659, 0.8967218654950997, 0.8967... \n", - "5 [3.972181721624101, 0.8967218654950997, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.7525322261381742, 0.8967218654950997, 0.896... \n", - "14 [3.9483223096606, 0.8967218654950997, 0.896721... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [3.0233862791483608, 0.8967218654950997, 0.896... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "25 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60717.98161110941, 64.16837368116923, 39.2298... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [63439.6992540603, 58.72698558678992, 38.87932... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [61231.50162351116, 67.49141266621827, 39.7736... \n", - "25 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60716.24448057119, 64.56990602453749, 39.3894... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [63461.54380719361, 59.05956577665261, 38.9908... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [61163.97597290908, 67.93948885788608, 39.9232... \n", - "25 NaN \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n", - "\n", - "Loaded 14 submission(s): ['AdEMAMix (PyTorch)', 'Cautious NAdamW (JAX)', 'Lion (PyTorch)', 'Muon (JAX)', 'Muon (PyTorch)', 'NAdamW (JAX)', 'NAdamW (Baseline AlgoPerf v0.5) (JAX)', 'NAdamW (Tuned for ResNet) (JAX)', 'Schedule-Free AdamW (PyTorch)', 'Schedule-Free AdamW (JAX)', 'Schedule-Free AdamW v2 (JAX)', 'Schedule-Free AdamW v2 (PyTorch)', 'Single Worker DiLoCo (JAX)', 'Single Worker DiLoCo v2 (JAX)']\n" - ] - } - ], + "outputs": [], "source": [ - "results = {}\n", - "\n", - "_exclude = {s.strip() for s in EXCLUDE_SUBMISSIONS.split(',')} - {''}\n", - "_include_raw = {s.strip() for s in INCLUDE_SUBMISSIONS.split(',')} - {''}\n", - "\n", - "print(f'Excluding ({len(_exclude)}): {sorted(_exclude) or \"(none)\"}')\n", - "print(f'Including ({len(_include_raw)}): {sorted(_include_raw) or \"(all)\"}')\n", - "\n", - "def _is_included(raw_name):\n", - " if raw_name in _exclude:\n", - " return False\n", - " if _include_raw and raw_name not in _include_raw:\n", - " return False\n", - " return True\n", - "\n", - "if LOAD_RESULTS_FROM:\n", - " load_path = os.path.join(OUTPUT_DIR, LOAD_RESULTS_FROM)\n", - " print(f'\\nLoading cached results from {load_path}')\n", - " with open(load_path, 'rb') as f:\n", - " cached = pickle.load(f)\n", - " _pretty_to_raw = {v: k for k, v in SUBMISSION_NAME_MAP.items()}\n", - " for name, df in cached.items():\n", - " raw = _pretty_to_raw.get(name, name)\n", - " if _is_included(raw):\n", - " results[name] = df\n", - " print(f' ✓ {name}')\n", - " else:\n", - " print(f' ✗ {name} ← excluded')\n", - "else:\n", - " all_submission_dirs = sorted(os.listdir(SUBMISSION_DIRECTORY))\n", - " print(f'\\nFound {len(all_submission_dirs)} folders:')\n", - " for s in all_submission_dirs:\n", - " tag = '✓' if _is_included(s) else '✗ ← excluded'\n", - " print(f' {tag} {s}')\n", - " print()\n", - "\n", - " for submission in all_submission_dirs:\n", - " if not _is_included(submission):\n", - " continue\n", - " print(f'\\n=== {pretty(submission)} ({submission}) ===')\n", - " experiment_path = os.path.join(SUBMISSION_DIRECTORY, submission)\n", - " df = scoring_utils.get_experiment_df(experiment_path)\n", - " results[pretty(submission)] = df\n", - "\n", - " summary_df = get_submission_summary(df)\n", - " summary_df.to_csv(os.path.join(SUMMARIES_DIR, f'{submission}_summary.csv'))\n", - " # display(summary_df)\n", - "\n", - " if SAVE_RESULTS_TO:\n", - " save_path = os.path.join(OUTPUT_DIR, SAVE_RESULTS_TO)\n", - " with open(save_path, 'wb') as f:\n", - " pickle.dump(results, f)\n", - " print(f'Results cached to {save_path}')\n", - "\n", - "print(f'\\nLoaded {len(results)} submission(s): {list(results.keys())}')\n", - "\n", - "# ── Shared color/linestyle per submission ──────────────────────────────────\n", - "# Assigned once, from a fixed alphabetical order, so every figure in this\n", - "# notebook (performance profiles in Sections 5-7, scatter plots in Section 6)\n", - "# uses the same color for the same submission.\n", - "SUBMISSION_STYLE = {\n", - " name: {'color': color, 'linestyle': linestyle}\n", - " for name, (color, linestyle) in zip(sorted(results.keys()), _STYLE_CYCLE)\n", - "}" + "results = load_runs(\n", + " SUBMISSION_DIRECTORY,\n", + " include=INCLUDE_SUBMISSIONS,\n", + " exclude=EXCLUDE_SUBMISSIONS,\n", + " cache=Path(OUTPUT_DIR) / LOAD_RESULTS_FROM if LOAD_RESULTS_FROM else None,\n", + " save_cache=Path(OUTPUT_DIR) / SAVE_RESULTS_TO if SAVE_RESULTS_TO else None,\n", + ")\n", + "write_summaries(results, WORKLOAD_CONFIG, SUMMARIES_DIR)\n", + "SCORING_OPTIONS = dict(\n", + " min_tau=MIN_TAU,\n", + " max_tau=MAX_TAU,\n", + " num_points=NUM_POINTS,\n", + " scale=SCALE,\n", + " strict=STRICT,\n", + " self_tuning_ruleset=SELF_TUNING_RULESET,\n", + ")" ] }, { "cell_type": "markdown", - "id": "18f2fb7b", + "id": "9b4afe32", "metadata": {}, "source": [ "## 5. Performance Profiles, Leaderboard Scores & LaTeX Table" @@ -8146,303 +237,64 @@ }, { "cell_type": "code", - "execution_count": 65, - "id": "b41681ea", + "execution_count": null, + "id": "4b3b8ac4", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:absl:Expecting 3 studies for workload imagenet_vit_pytorch but found 2 studies for AdEMAMix (PyTorch).\n", - "WARNING:absl:Expecting 3 studies for workload finewebedu_lm_jax but found 1 studies for Cautious NAdamW (JAX).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: STRICT=False relaxes criteria on held-out workloads, trial counts, and study counts. Scores may not match official competition scoring. Set STRICT=True to enforce all rules.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:absl:Expecting 3 studies for workload imagenet_vit_pytorch but found 2 studies for Schedule-Free AdamW v2 (PyTorch).\n", - "WARNING:absl:Expecting 3 studies for workload fastmri_jax but found 2 studies for Single Worker DiLoCo (JAX).\n", - "WARNING:absl:Expecting 3 studies for workload librispeech_conformer_jax but found 2 studies for Single Worker DiLoCo v2 (JAX).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved → artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score.pdf / .png\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABdAAAAIsCAYAAADyPIt9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAXEgAAFxIBZ5/SUgABAABJREFUeJzs3Xd4FOXaBvB7djebbHpPgEDoIKE3adIkCPaCelTEDnr0oCLFgoKoHEUFURTkE0EERRFErCBIF6SXREAIARJSIIX0sjvzfn/k7CSb3SS7kGRS7t915boy/Xl259lN3pl5X0kIIUBERERERERERERERDZ0WgdARERERERERERERFQXsQGdiIiIiIiIiIiIiMgBNqATERERERERERERETnABnQiIiIiIiIiIiIiIgfYgE5ERERERERERERE5AAb0ImIiIiIiIiIiIiIHGADOhERERERERERERGRA2xAJyIiukItW7aEJEnqz9mzZ7UOqc6TZRmLFi1Cz5494efnBz8/P3Tv3h0zZ87UOjSXDB061Oa937p1q8P1CgoKMHv2bHTu3Bne3t4IDAzEtddei08++aR2A6Y64eGHH7Y5b5YtW6Z1SFQG65Vq2+XLlzFlyhR07NgRnp6eCAkJweDBg7F69eoKt3H2+4eIiIiqDxvQiYiIyrFYLGjatCkkScKaNWsqXG/fvn1ITk5GRERELUZXsfKNc+V/3Nzc0LRpU9x5553YvHmzJjFOnToVTz31FHr37o09e/Zg586dCA4OrraGxG3btuGBBx5AmzZtYDKZ4OnpiVatWmHAgAF4+umnsXLlSiQmJl71cdauXYvk5GT079+/0vXGjh2LV155BXfddRcOHTqE3377DUVFRfj222/t1l22bFml719lP1o3xH7xxRfw8/PDl19+qWkczih/4av8j06nQ0BAAIYOHYrly5dDCFFtx54/fz6Sk5Nxzz33VNs+a9PMmTMxc+ZMXL582eVtyzf6lf8xGo2IjIzE2LFjceDAgeoP3gmu1CvVXWfPnq3yM9PHxwc9evTAjBkzkJWVpUmciqIgOjoa77//Pp599lnExMRg9erVOHv2LH7++WccO3YM4eHheOqpp2y2c/b7h4iIiKqRICIiIhtr164VAAQAMXLkyCrXj4yMFABEfHx8zQdXicuXL4vk5GTxwgsvCACif//+Ijk5WSQn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r3tF54Iz57PVDz/8IEaNGiWCgoKE0WgUrVq1EnfddZfYtWuXzXqVfeaU/3x2pV5d/Uy+2s9I63eSo3N2yJAhQoiKz6myeW7atElcf/31wsfHR7i5uYkWLVqIRx991C536z6ro25TUlLE5MmTRfv27YWHh4cIDg4WgwYNEqtWrRKKojh8f8+cOSOeeuop0apVK2E0GkVISIjo16+fWLRokSgsLHS4jSOVvf8V1XlZV3Kels3X3d1deHt7iz59+oh58+bZxV7R3xRlj1HZ3xeVff9c6euZn58v1qxZI+677z51fR8fH9GpUycxceJEu7ohIiJqbCQhar8jOZ1Oh9TUVLU/Q0diYmLQt29fvPPOO/jPf/5Ti9ERERHVjvXr1+O2227DHXfcgbVr12odDlG9kp2dDT8/PwQEBLBrQCIiIiIiqjEGrQ7cu3dv6PV6h8uKi4uRnJwMSZLUAdiIiIjqo/feew8PP/wwgoOD7ZbFxsYCgDqAJxHZ+vbbb9G2bVu1v/GyWD9ERERERFQbNGtAT0hIqHS50WjEm2++iR49etRSRERERNVv+vTpMBgMeO6552zmFxYWYunSpXBzc8O4ceO0CY6ojvv888/h4eGBdevW2S2zDoD5+OOP13JURERERETUmGjWgL527VoEBAQ4XGY0GnHNNdfA39+/doMiIiKqAS+99BJkWcYNN9wAX19fnDhxAm+88Qbi4uKwePFitGzZUusQieqsH374AU8++SQee+wxhIeHIzk5GZ9++im+/PJLPPTQQ7j//vu1DpGIiIiIiBowzfpAT0lJQWhoaG0fmoiIqFb9/PPPWLduHf766y8kJycjKysLwcHBGDhwIF544QX069dP6xCJ6qxDhw7hm2++wZYtW5CYmIhLly7B29sb3bt3x+OPP87GcyIiIiIiqnGaNKDr9XqkpKRUOogoEREREREREREREZGWdFocVAiBd999F7/88osWhyciIiIiIiIiIiIiqpImDejjxo3DpUuXkJ6ersXhiYiIiIiIiIiIiIiqpEkXLkREREREREREREREdZ0md6ATEREREREREREREdV1NdqALoTAiBEjsHr16qveV1paGgYOHIg///yzGiIjIiIiIiIiIiIiIqpcjTagS5KEp59+Gg8++CBWrVp1xftJSEjA6NGj4evriwEDBlRjhEREREREREREREREjtV4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K5dR+vXrB6PRaDMvPz8f+/btg7u7O1q0aIHw8HAAQHJyMhISElBUVIQOHTqo84mIiIiIiIiIiIiIalOtNKB///33CA0NVadzcnIQHR2Nd999F08++SS8vLxs1s/Ly8PChQuxcOFCfPnll7URIhERERERERERERGRjRpvQL/hhhvg7u5uM+/111/HPffcg0mTJjncxsvLC5MnT4YkSXjttdfw+eef13SYjZ5er4dOp9M6DKJ6QafTwc/PjzVD5ATWC5FrWDNErmHNELmGNUPkPNYJWUlCCFHbB23Tpg02btyINm3aVLpeXFwchg4dioSEhFqKrHGKiooCAMTGxmocCREREREREREREVHdocmllAsXLkCW5SrXUxQFly5dqoWISFEUKIqidRhE9YKiKMjKymLNEDmB9ULkGtYMkWtYM0SuYc0QOY91QlaaNKAHBQXhm2++qXK9r7/+GkFBQbUQEbEBnch5iqKgoKCANUPkBNYLkWtYM0SuYc0QuYY1Q+Q81glZ1cogouXdeOONmDVrFsxmM55++mmEhYXZLE9NTcWCBQvw9ttv45FHHtEiRCIiIiIiIiIiIiJq5DTpAz05ORk9e/bExYsXIUkSIiIiEBISAgC4ePEiEhMTAQBhYWE4cOAAmjRpUtshNipRUVGwWCyIjY2FwaDJNRWiesVisSAtLQ3BwcGsGaIqsF6IXMOaIXINa4bINawZIudZLBbWCQHQqAuXJk2aYPv27ejTpw8URcH58+dx4MABHDhwAAkJCRBCoG/fvti2bRsbz4mIiIiIiIiIiIhIE5rcgV7W7t27sWXLFvWu84iICAwdOhQDBgzQMqxGJSoqCgAQGxurcSREREREREREREREdYfmDeikPTagExEREREREREREdnTpAuX8oQQyMjI4Oi2GrJYLLBYLFqHQVQvWCwWpKSksGaInMB6IXINa4bINawZItewZoicxzohK00b0H/99VeMHDkSPj4+CA0NxdmzZwEADz/8MJYsWaJlaERERERERERERETUyGnWgP7iiy/i5ptvxqZNm5Cfn4+yPclkZWXhiSeewLhx48AeZoiIiIiIiIiIiIhIC5o0oP/888+YM2cOmjdvjlmzZmHlypXw8PBQl3///fdYt24dvv/+e3z33XdahEhEREREREREREREjZwmg4jedNNNuHz5MrZs2QKj0QgA8PHxwZEjR9C6dWt1vbfffhu///47Nm/eXNshNipRUVFQFAWxsbHQ6epEt/hEdZqiKMjJyYGPjw9rhqgKrBci17BmiFzDmiFyDWuGyHmKorBOCIBGd6Dv27cPr7/+utp4XpGbbroJJ0+erKWoGjedTscPBSIn6XQ6+Pn5sWaInMB6IXINa4bINawZItewZoicxzohK03OhKysLJs7zSvi6+uLtLS0WoiIhBBQFEXrMIjqBUVRUFBQwJohcgLrhcg1rBki17BmiFzDmiFyHuuErDRpQA8ODkZMTEyV6/31118ICwurhYhIlmV+MBA5SVEUZGVlsWaInMB6IXINa4bINawZItewZoicxzohK00a0IcMGYIXXngBKSkpFa5z4cIFvPLKKxg2bFgtRkZEREREREREREREVMKgxUGnTZuGPn36oF27dhg7diz69u0LRVGwZcsW7Nq1C7t378ZXX32FwsJCTJ48WYsQiYiIiIiIiIiIiKiR06QBvVu3bli8eDHGjx+PxYsXY/HixQCA8ePHAyjpj9tgMOCzzz5D586dtQiRiIiIiIiIiIiIiBo5zYaTffjhh7Fnzx7ceuut8PT0hBACQgh4enri9ttvx+7duzFu3Ditwmt09Ho99Hq91mEQ1Qt6vR6BgYGsGSInsF6IXMOaIXINa4bINawZIuexTshKEkIIrYNQFAXp6ekAgKCgIOh0mrXrN0pRUVEAgNjYWI0jISIiIiIiIiIiIqo7NGmpfvTRR5GTk1MahE6HkJAQhISEsPFcI7IsQ5ZlrcMgqhdkWUZGRgZrhsgJrBci17BmiFzDmiFyDWuGyHmsE7LSpLX6iy++QHx8vBaHpgpYu9AhoqoJIVBcXMyaIXIC64XINawZItewZohcw5ohch7rhKw0aUAXQqBXr164+eab8dNPP/GEJCIiIiIiIiIiIqI6R7P+UlatWgU/Pz/cfffdiIyMxKxZs3DhwgWtwiEiIiIiIiIiIiIisqFJA3pkZCSGDh2KlStX4sKFC3j22Wfx1VdfoVWrVrjtttvw66+/8q70WiZJEiRJ0joMonpBkiTodDrWDJETWC9ErmHNELmGNUPkGtYMkfNYJ2QliTrUUr1lyxZ8+umnWLduHcLDw/HEE0/g0UcfRZMmTbQOrUGLiooCAMTGxmocCREREREREREREVHdUaca0K02bdqE++67DxkZGTAYDCgqKtI6pAbN2oAeExPDq2tEThBCQJZl6PV61gxRFVgvRK5hzRC5hjVD5BrWDJHzhBCsEwKgURcu58+ft+uipbCwEMuWLcOAAQNwww03ID09HUIIdOjQQYsQGx2LxQJZlrUOg6hekGUZaWlprBkiJ7BeiFzDmiFyDWuGyDWsGSLnsU7IyqDFQVu1aoXk5GSEhoYiJiYGn376KVauXImsrCwIIeDh4YG7774bEyZMwIABA7QIkYiIiIiIiIiIiIgaOU0a0IUQWLFiBdasWYM9e/ao8zp27IgJEyZg3LhxCAgI0CI0IiIiIiIiIiIiIiIAGjWgA8CUKVMghIC7uzvuuusuTJgwAdddd51W4RARERERERERERER2dCsAb1du3YYP348HnroIQQFBWkVBv2PTqeDTqdJl/hE9Y5Op4OXlxdrhsgJrBci17BmiFzDmiFyDWuGyHmsE7KSRPnRPGuBTqdDSkoKQkNDa/vQ5EBUVBQAIDY2VuNIiIiIiIiIiIiIiOoOTS6lLF26FH5+flocmiqgKAoURdE6DKJ6QVEU5OTksGaInMB6IXINa4bINawZItewZoicxzohK00a0B966CG4u7tXuV5qair0en0tRERsQCdynqIoyMvLY80QOYH1QuQa1gyRa1gzRK5hzRA5j3VCVnW+Mx8NepghIiIiIiIiIiIiIqr5QUSv9g5ySZKqKRIiIiIiIiIiIiIiIufVeAP61d5BzgZ0IiIiIiIiIiIiItJCjXfhIkkSUlJS1D62XflJSkqq6fDofwwGA/ubJ3KSXq9HcHAwa4bICawXItewZohcw5ohcg1rhsh5rBOyqvEG9Ku5A12SJM37QN+xYwfuvPNOtG7dGiaTCc2bN0d0dDR+/PHHCrdZsWIF+vXrB29vbwQEBGDkyJHYsmWLw3XNZjOmTp2K8PBweHh44LrrrsO+ffscrivLMnr16oUbb7yxWnIrj3f7EzlHkiQYDAbWDJETWC9ErmHNELmGNUPkGtYMkfNYJ2RV4w3oiqIgNDT0irYNCwvTdMTbBQsWYPDgwTh16hRWrFiB9PR0/PHHH/Dz88Ott96KiRMn2m3z/PPP48EHH8SoUaOQmJiImJgYBAcH4/rrr8fSpUvt1n/11Vfx8ccfY/ny5UhMTERYWBiio6ORlpZmt+68efNw8uRJLFy4sNpzlWUZsixX+36JGiJZlnHx4kXWDJETWC9ErmHNELmGNUPkGtYMkfNYJ2QlCa1v8QaQlpaGc+fOAQAiIyMRHByscUQld4YHBwcjOzsbe/fuRZ8+fdRlBQUFiIiIQEZGBk6cOIEOHToAAH799VfceOONGDNmDFavXm2zr6ioKCQkJODEiROIjIxU9xMYGIixY8fi//7v/wAACQkJaNGiBWbOnIkZM2ao+4iPj0fnzp3x5ptv4vnnn6/WXKOiomCxWBAbGwuDoca7xSeq9ywWC9LS0hAcHMyaIaoC64XINawZItewZohcw5ohcp7FYmGdEIBauAO9Mj/99BN69+6NsLAw9O3bF3379kVYWBj69OmDn3/+WcvQkJmZiezsbAAlDcxlmUwmtGnTBgBw+PBhdf67774LABg/frzN+m5ubnj00UdRWFiIDz/8UJ1/+vRpFBYWolu3buq85s2bIyAgADExMTb7ePLJJ9GpUyeHd70TERERERERERERUfXTrAH97bffxm233YaDBw9CCGHzc+DAAdx66614++23tQoPoaGhaN68OQAgNjbWZllhYSHi4uIAAE2aNAEAZGdnY9u2bZAkCf3797fb36BBgwAA69evV+dZu6cp36eSTqeDxWJRp1esWIHNmzdj8eLFHMCAiIiIiIiIiIiIqJZo0oC+Y8cOvPzyy4iIiMAbb7yBjRs34siRIzhy5Ag2btyIWbNmoWnTpnjllVewc+dOLUIEUNJwHRYWhkcffRS7d+9GQUEBTp06hbFjxyIjIwN9+vTBwIEDAQDHjh2DoigICQmBt7e33b5at24NAIiLi0NeXh4AoE2bNjAYDDYN9KmpqcjIyEDHjh0BAOnp6Xj++ecxadIk9OjRo8ZylSSJgyMQOUmSJBiNRtYMkRNYL0SuYc0QuYY1Q+Qa1gyR81gnZKVJH+h33XUXkpKS8PvvvztsbAaAnJwcjBw5Ek2bNsWaNWtqOcJS58+fxwsvvIDvvvtOnRcSEoK7774bs2fPhp+fHwBgzZo1GDNmDDp27Ijjx4/b7aegoACenp4AShrRrQ3qTz75JL7++mts3rwZXbt2xb///W+sXLkSJ0+eRIsWLfDQQw9hx44diImJUbe/UuW7orGKi4tDmzZtcOTIEZv5er0ekiRBlmWUPU0kSYJer4cQwm5ABZ1OB51OB0VR7AaAtfYbVfbu+qq2qe4YmBNzYk7MiTkxJ+bEnJgTc2JOzIk5MSfmxJyYE3NyZn/sA50AQJOz4M8//8TXX39dYeM5APj4+OCtt97CAw88UIuR2frxxx/x8MMPo2XLlti5cye6deuGxMRE/N///R+ysrKQl5enNqDn5+cDAIxGo8N9ubu7q79b1wVK+k2/fPky+vfvD51Oh/DwcHz77bdo0aIFNm3ahOXLl2PDhg3w9PTEsWPH8PLLL+PQoUPw9/fHuHHjMGXKlGq5IibLMi5dumSzL+ugIunp6TYfKEajEYGBgTCbzcjIyLDZj5+fH0wmE3JyclBQUGCzLDw8HEDJoLFlmUwm+Pn5oaioCFlZWTbLAgMDYTQakZWVheLiYnW+TqdDaGgoZFm225+Xlxd8fHyQl5en3u3PnJhTdeYUEhKCwsJCXL582aZm6nNODfF9Yk51IychBHx8fODl5dVgcgIa3vvEnOpOTkIIuLm5ISgoqMHkBDS894k51Z2chBCwWCyIiIiAJEkNIierhvQ+Mae6k5O1ZoKCguDp6dkgcrJqSO8Tc6obOcmyrHbdTI2bJnegu7u7Iy4uDhEREZWul5CQgLZt26KoqKiWIit17tw5dOrUCTqdDqdPn0ZYWJi6TAiBPn364OzZszh48CBatGhxxXegl12em5uLkJAQdbpz584YMGAAvvzyS6Snp6Ndu3bo2bMn3nvvPRw6dAgTJkzAa6+9hunTp19VrlFRUbBYLDh69KhNH+uN4Uoic2JOVxKDEAKXLl1CYGCgTc3U55wa4vvEnOpGTrIsIyMjAyEhIWr91PecaiIG5sScrGRZRnp6OkJDQ9Xt6ntOtR0Dc2pcOVkbRsLCwmAwGBpETlYN6X1iTnUnJ2vNhISEwGg0NoicnNkfc2JOV7I/i8Vic0MsNV6a3IEeGBjoVAP66dOnERgYWEtR2Vq1ahXy8/Nx66232jSeAyVFeN9992Hy5MmYOXMmPv/8c/UqWfkra1aZmZnqtuX3B5RcTTOZTOr0zJkzkZWVhXnz5gEAFixYgMzMTCxevBitW7dG9+7dsXnzZrz99tuYPHkyPDw8rjpnvV7v8NGUsg2EZUmSVOGjLNYPI0euZJvqjoE5Vb2/uhBDXc3JYrGoX8aO9lkfc7qaGJhT1furCzFomZP1SY2GlFNNxcCcqt5fXYihpnOyrteQctIiBuZU9f7qQgzVsb+y+2goOZVVF2JgTlXvry7E4Oz+9Hq9U9819SknZ/dXF2JgTlXvry7EYG18JwKgzSCiAwYMwEsvvWTTlUl5eXl5eOWVV9RBOmtbfHw8AFT4qEbTpk0BAAcOHAAAdOnSBTqdDpcuXbJ7/AMAzpw5A6Bk4FAvL69Kj3348GHMnTsXc+fORXBwMADg6NGjCAgIsLlzvU+fPsjLy0NcXJyL2RERERERERERERFRVTS5A33ixIkYNmwYoqKiMH78ePTr1w+hoaEAgNTUVOzZsweLFy9GQkICtm3bpkWIasN1UlKSw+XW+W5ubgAAX19fDBkyBFu2bMHu3bsxYsQIm/V37doFALj11lsrPa4sy3jiiScwdOhQjBs3Tp2vKIrd1TTrFbTyj6IQERERERERERER0dXT5A70IUOGYObMmTh37hymT5+OESNGoGvXrujatSuio6Px6quv4vz583jjjTcwaNAgLUJUG7q3bNmCixcv2iwTQmDVqlUAgOjoaHX+1KlTAQCLFy+2Wd9sNmPp0qXw8PDAxIkTKz3uhx9+iNjYWCxatMhmfqdOnZCeno6UlBR13rFjx2A0GtG2bVsXs7NX9hEuIqqcTqeDn58fa4bICawXItewZohcw5ohcg1rhsh5rBOy0uxMeO2117BmzRp06dIFQgibn27dumHdunV4+eWXtQoPffv2xaRJk5Cbm4ubbroJu3fvRl5eHk6ePIkHH3wQ+/fvR+fOnTFt2jR1m1GjRuHZZ5/F6tWrMWvWLGRlZSEpKQmPPPII/vnnH3z88ceIjIys8Jjnzp3Dq6++ihkzZqBNmzY2y55++ml4enriueeeQ3p6OrZs2YKVK1di4sSJ6uCkV0OSJH4wEDlJp9PBZDKxZoicwHohcg1rhsg1rBki17BmiJzHOiErSdSBHvFTU1Nx/vx5AECLFi0cDrKplXXr1uHTTz/F/v37kZmZCZPJhA4dOuDOO+/Es88+67A/8y+//BILFixATEwMDAYD+vbti5deegnDhw+v9Fg33ngjkpKSsH//focDHOzatQuTJ0/GwYMH4e/vjwcffBCzZ8+G0Wi8qhyjoqKgKApiY2P54UDkBEVRkJOTAx8fH9YMURVYL0SuYc0QuYY1Q+Qa1gyR8xRFYZ0QgDrSgE7aioqKgsViQWxsbIUjExNRKYvFgrS0NAQHB7NmiKrAeiFyDWuGyDWsGSLXsGaInGexWFgnBECjQUQrs3nzZhw6dAgtW7bEHXfcYTdwJhERERERERERERFRbdDkOYTjx4+jdevWaN26NVasWKHOf+GFFzBy5EhMmzYN9957L0aMGAGz2axFiERERERERERERETUyGnSgP7dd9/h3LlzGDFiBHr27AkAOHjwIObNmwchBIYNG4ZBgwZh27ZtWL58uRYhEhEREREREREREVEjp0kf6P3790d0dDRmzZqlzvv3v/+NRYsWYdKkSXjvvfcAAM8++ywOHjyIHTt21HaIjUpUVBQAIDY2VuNIiIiIiIiIiIiIiOoOTRrQ/f39sXPnTnTu3Fmd16xZM1y6dAmJiYkIDQ0FABw6dAg33XQTkpKSajvERoUN6ERERERERERERET2NOnCxWw2w8fHR53et28fkpOTMWTIELXxHACCgoKQnp6uRYiNjsVigcVi0ToMonrBYrEgJSWFNUPkBNYLkWtYM0SuYc0QuYY1Q+Q81glZadKAHhERYXO385IlSyBJEsaMGWOz3oULF+Dv71/L0RERERERERERERERAQYtDjpkyBBMmjQJRUVFOHv2LJYsWQIPDw/ce++9NustWrRI7V6EiIiIiIiIiIiIiKg2adKAPm3aNKxatUq941wIgeeff1692/ybb77BJ598gp07d+L999/XIkQiIiIiIiIiIiIiauQ0aUBv06YN/vzzT7z//vu4dOkSoqOj8Z///EddfvbsWeh0OgwePNiuWxeqGTqdDjqdJj36ENU7Op0OJpOJNUPkBNYLkWtYM0SuYc0QuYY1Q+Q81glZSUIIoXUQpC1rNzll+6UnIiIiIiIiIiIiaux4KYUAlHSjoyiK1mEQ1QuKoqCgoIA1Q+QE1guRa1gzRK5hzRC5hjVD5DzWCVmxAZ0AALIs84OByEmKoiArK4s1Q+QE1guRa1gzRK5hzRC5hjVD5DzWCVmxAZ2IiIiIiIiIiIiIyAE2oBMREREREREREREROcAGdCIiIiIiIiIiIiIiB9iATgAAvV4PvV6vdRhE9YJer0dgYCBrhsgJrBci17BmiFzDmiFyDWuGyHmsE7IyaB0A1Q2SJEGSJK3DIKoXJEmC0WjUOgyieoH1QuQa1gyRa1gzRK5hzRA5j+1kZMU70AkAIMsyZFnWOgyiekGWZWRkZLBmiJzAeiFyDWuGyDWsGSLXsGaInMc6Ias6dQe6EAKff/45Dh06hFatWmH8+PHw8fHROqxGQQgBIYTWYRDVC0IIFBcXs2aInMB6IXINa4bINawZItewZoicxzohK03uQN+/f7/a5/Ynn3yizr/vvvswfvx4LFy4EFOnTkW/fv2Ql5enRYhERERERERERERE1Mhp0oC+Zs0auLu744033sDNN98MANi2bRu+/fZb6HQ6PPLIIxg7dixOnjyJTz/9VIsQiYiIiIiIiIiIiKiR06QLlw0bNmD27Nl47rnn1Hmff/45JEnCm2++iWnTpgEA2rZti1WrVmHSpElahNmocBBRIudJkgSdTseaIXIC64XINawZItewZohcw5ohch7rhKwkoUGHPj4+Pti7dy+uueYaAICiKAgNDUVeXh5SU1Ph6+sLAIiJicHw4cNx8eLF2g6xUYmKigIAxMbGahwJERERERERERERUd2hSRcuAODu7q7+vn37dmRkZGDkyJFq4zlQ0tCelZWlRXiNEgdHIHKOEAIWi4U1Q+QE1guRa1gzRK5hzRC5hjVD5DzWCVlp0oDeokULHDhwQJ1etGgRJEnCmDFjbNaLj49HcHBwbYfXKFksFsiyrHUYRPWCLMtIS0tjzRA5gfVC5BrWDJFrWDNErmHNEDmPdUJWmvSBfuONN2LixIlITEzE2bNn8e2338LPz8+mAd1iseC9995D9+7dtQiRiIiIiIiIiIiIiBo5Te5Af+GFFwAAkydPxkcffQQAeP3112EymQAAH3/8Ma655hr8+uuvuP3227UIkYiIiIiIiIiIiIgaOU3uQA8PD8ehQ4fw6aef4tKlS4iOjsZtt92mLvfw8MCgQYMwaNAg3HnnnVqESERERERERERERESNnCTYI36jFxUVBUVREBsbC51Os3FlieoNRVGQl5cHLy8v1gxRFVgvRK5hzRC5hjVD5BrWDJHzFEVhnRAAje5Ad1Z+fj4WLFiAqVOnah1Kg6fT6fihQOQknU4HHx8frcMgqhdYL0SuYc0QuYY1Qw1dWlYB5q7dj8RLOeo8k2zB5MSDLu3ny7AOOOvhZzOvZ85F3JRx1ul9FOgMeK95T7v5D6aeQMvCbKf3c9A7BD8HtbKZx5xKMCfHtMyp3ccznd4/NVx1ugE9JycHL730EhvQa4GiKLyyRuQk3rVB5DzWC5FrWDNErmHNUEO3fFMs/knMsJ2pWOCuWFzaj7nYgnzJDAhAQECCBNlsdmk/MoD8IrPdfJ3FxXgsFvv9XE1OZWNkTsypMtWUEzU+Nd6APmvWrCveNjc3txojocqwAZ3IedZ/1EwmE2uGqAqsFyLXsGaIXMOaoYYs93IOcg7/Db2bD2Spes5vAUAIAUhSteyPiKgxqPE+0HU6HSRJQvnDSOU+rK3Ly84XQkCSJMiyXJMhNnpRUVGwWCyIjY2FwVCnH0ogqhMsFgvS0tIQHBzMmiGqAuuFyDWsGSLXsGaoITv4zUYEb92OPJ0BB02B8LljFEweRkiyjMC40y7tKzsiAmZPL8iKgtycHHj7+MAzOxveF1Od3oei0yOzbVu7+b6JCXDLz3d6P4V+/sgLC7OZdzU5leV++TJzYk4VcjUnRQj0vn+U0/unhqtW/sKYNGkSvL29beadOHEC33zzDQYOHIhOnTohPDwcAJCcnIzjx49j165dGDx4MIYNG1YbIRIRERERERER1RnKoRgAgJdiwTVSEXoObF+6sG+bK9pnjVx06tWyevZzhTnVCOZUsUaUk8XCrl2oRK00oE+ZMgWhoaHq9KlTp3DHHXdg37596NWrl8Nt9u/fj3vuuQfR0dG1ESIRERERERERUZ1wMT4JoVmlfZ8rXTppGA0RUeNW453E/fe//7UbFf21117Da6+9VmHjOQD07t0bb7/9Nt56662aDpEAGAwG6PV6rcMgqhf0ej2Cg4NZM0ROYL0QuYY1Q+Qa1gw1VPEb/lR/VyCh3Q39q2W/rBki57FOyKrGG9CnTZsGk8lkM2/r1q3o37/qD//+/ftj7969NRUalVO+X3oickySJBgMBtYMkRNYL0SuYc0QuYY1Qw2RoijwPPGPOn0xJBx+YYHVsm/WDJHzWCdkpckw5ZmZmUhLS6tyvUuXLiEnJ6cWIiJZljlYK5GTZFnGxYsXWTNETmC9ELmGNUPkGtYMNUTx+47Dr6h0YERT327Vtm/WDJHzWCdkpUkDesuWLTFnzpwq15szZw5atmxZ8wERhBAQQmgdBlG9IISAoiisGSInsF6IXMOaIXINa4Yaokvb96u/F+kMaH99n2rbN2uGyHmsE7LSpAH9gQcewDfffIOhQ4fi22+/xdmzZ5GXl4e8vDzEx8fjm2++wZAhQ7B69WqMHTtWixCJiIiIiIiIiGpVcWExAs+dVafTW0TC3eSuXUBERASDFgedOnUqNmzYgO3bt2PHjh0O1xFCYODAgZgyZUotR0dEREREREREVPtObt4HP9msTgcP6athNEREBGh0B7q7uzs2b96MqVOnwtvbW+0+xPrj7e2NqVOn4vfff4e7O6+01gZJkjg4ApGTJEmC0WhkzRA5gfVC5BrWDJFrWDPU0BTsPaL+nm00oXXfa6p1/6wZIuexTshKEhp36FNUVIQDBw4gMTERABAREYFevXqx4bwWRUVFAQBiY2M1joSIiIiIiIioccq6dBkZM96H/n/NNMldu+Hap+7WOCoiItKkC5ey3N3dMWDAAK3DaPSsd//z6hpR1YQQMJvNcHNzY80QVYH1QuQa1gyRa1gz1JDsPn0Jh/1aondBOtoV5SByZPW3lbBmiJzHdjKy0qQLF2elpaWhdevWWoeBQ4cO4cEHH0SLFi3g7u6OkJAQXHvttZg8eTJycnLs1l+xYgX69esHb29vBAQEYOTIkdiyZYvDfZvNZkydOhXh4eHw8PDAddddh3379jlcV5Zl9OrVCzfeeGO15mfdtyzL1b5fooZIlmVkZGSwZoicwHohcg1rhsg1rBlqSLYdT8Z+z2AsCuqAL3sMRXibZtV+DNYMkfNYJ2RVpxvQZVnGuXPnNI1h4cKF6N+/Pzp06IBdu3YhOzsbv//+O/R6Pd5//32kp6fbrP/888/jwQcfxKhRo5CYmIiYmBgEBwfj+uuvx9KlS+32/+qrr+Ljjz/G8uXLkZiYiLCwMERHRyMtLc1u3Xnz5uHkyZNYuHBhjeVLRERERERERLXrQlouTl3IVKf79mqjYTRERFSWZg3omZmZmDRpEtq2bQsPDw/o9Xq7n6ZNm2oVHgBg69atePrppzF79mxMnz4dzZs3h7u7O7p3745ly5ahQ4cOcHNzU9f/9ddf8cEHH2DMmDGYOXMm/P390axZM3zxxRdo27Yt/v3vf9tcECgoKMD8+fNx//33Y+TIkQgODsa8efOQlZWFjz/+2CaW+Ph4zJgxA2+88QYiIyNr7TUgIiIiIiIiopq17ViC+rtBr8OATtq2hxARUSlNGtCzs7MxYMAAfPDBBzhz5gyKi4vVPrjL/2hp8uTJ8PX1xTPPPGO3rH379jhx4gSaNSt9pOrdd98FAIwfP95mXTc3Nzz66KMoLCzEhx9+qM4/ffo0CgsL0a1bN3Ve8+bNERAQgJiYGJt9PPnkk+jUqRMmTpxYLbkRERERERERkfYURWDHsUR1une7cHibjBpGREREZWnSgP7OO+8gJycHO3bsgNlshpeXF06fPg1FUaAoChISEvDOO+/A19cXR44c0SJE/P333zhw4AAGDBgAo7HqL67s7Gxs27YNkiShf//+dssHDRoEAFi/fr06T1EUALAbkECn08FisajTK1aswObNm7F48WLo9foryqcqer0eOl2d7tGHqM7Q6XTw8/NjzRA5gfVC5BrWDJFrWDPUEJzecwy3xB9B14JM6IWCIV2b19ixWDNEzmOdkJUmZ8IPP/yAWbNmYeDAgQ4bhJs1a4YpU6Zg2rRpmD17tgYRArt27QIAREZGYuPGjRg2bBh8fX3h6emJ7t274/3337dp5D527BgURUFISAi8vb3t9mcdDDUuLg55eXkAgDZt2sBgMCA2NlZdLzU1FRkZGejYsSMAID09Hc8//zwmTZqEHj161Fi+kiTxg4HISTqdDiaTiTVD5ATWC5FrWDNErmHNUEOQsW0fOhdexsOZp/FS2t/o1jqkxo7FmiFyHuuErAxaHDQ+Pt7mLm1Jkhx213L77bdjwYIFtRma6tSpUwCADRs24Ouvv8Ynn3yCtWvXoqCgAG+88QYmT56MP/74A+vXr4der0dKSgoAIDAw0OH+AgICAABCCKSmpqJ169bw9vbGY489hpUrV+LRRx9F165d8corr8Dd3R1PPfUUAGDSpEnw8fHBzJkzrzqnqKgoh/Pj4uLQsmVLFBcX23w46PV6SJIEWZZt3h9JkqDX6yGEsBuRWKfTQafTqU8TlGUwlJxuZS88VLVNdcfAnJhTdcQgSRKys7Ph6elpUzP1OaeG+D4xp7qRk6IoyM/Ph6+vr133bPU1p5qIgTkxJytFUZCXlwc/Pz91ur7nVNsxMKfGlZOiKMjNzYW/v7/dk7z1NSerhvQ+MaeKYyjMLUBw4nl1WWFkc7gZau5cttaMr68vDAYD3yfmxJwq2Z8sy071SkENnyYN6G5ubvD09FSnTSYTLly4gDZtbEeZLi4uRlpaWm2HBwDIysoCUNLYv3jxYtx///0AShrCFy5ciL/++gu//PILlixZgvHjxyM/Px8AKiwsd3d39XfrukBJv+mXL19G//79odPpEB4ejm+//RYtWrTApk2bsHz5cmzYsAGenp44duwYXn75ZRw6dAj+/v4YN24cpkyZYtcFzJVQFAWXLl2yeSIgODgYBoMB6enpNh8oRqMRgYGBMJvNyMjIsNmPn58fTCYTcnJyUFBQYLMsPDwcAOzeU5PJBD8/PxQVFamvu1VgYCCMRiOysrJQXFysztfpdAgNDYUsy3b78/Lygo+PD/Ly8tS7/ZkTc6rOnAIDA9W4y9ZMfc6pIb5PzKlu5CTLMhRFgbe3N7KzsxtETkDDe5+YU93JSZZlFBYWwsfHB2azuUHkBDS894k51Z2cZFlGdnY2fH19odPpGkROVg3pfWJOFed04rc9iFBKG/fChvSt0ZysNePm5gYfHx++T8yJOVWSk9lsthn7kBovSWgwUmfXrl0xe/Zs3HzzzQCAPn36YMCAAZg/f77NepMnT8ayZcs0aUSfMGECFi9eDADIy8uzafAHgPnz5+O5557DkCFDsHXrVqxZswZjxoxBx44dcfz4cbv9FRQUqPuIi4tTu3Qpuzw3NxchISHqdOfOnTFgwAB8+eWXSE9PR7t27dCzZ0+89957OHToECZMmIDXXnsN06dPv6pco6KiYLFYcPToUZvGwIZ+JZE5MacrjUEIgUuXLiEwMNCmZupzTg3xfWJOdSMnWZaRkZGBkJAQuyfO6mtONREDc2JOVrIsIz09HaGhoep29T2n2o6BOTWunKwNI2FhYTAYDA0iJ6uG9D4xp4pj2D/jYzRJvwgAyPTwQpf3p6nLaiIna82EhITAaDTyfWJOzKmS/VksFpsbYqnx0uQO9H79+mH69Ono1asXmjRpgujoaMyZMweFhYUYNWoUAODHH3/E8uXLccstt2gRotoVS3BwsF3jOQC0atUKAPDPP/8AKL1KVv7KmlVmZiaAkgIOCwuzW24ymWAymdTpmTNnIisrC/PmzQMALFiwAJmZmVi8eDFat26N7t27Y/PmzXj77bcxefJkeHh4XGmqKr1er35YlZ/viCRJDtcHSj+MHLmSbao7BuZU9f7qQgx1NSeLxaJ+GTvaZ33M6WpiYE5V768uxKBlTtYnpRpSTjUVA3Oqen91IYaazsm6XkPKSYsYmFPV+6sLMVTH/sruo6HkVFZdiIE5Vb2/K9km+2ImwtIvqdNFnTqq69ZkTnq93qnvmrrwutaF94k51f7+6kIM1sZ3IgDaDCJ611134ejRo7juuusAlPTzHRwcjM8++wxjxozBmDFjsGzZMri5uWHGjBlahIhOnToBgM3jH45YGwW6dOkCnU6HS5cu2T3+AQBnzpwBUDJwqJeXV6X7PHz4MObOnYu5c+ciODgYAHD06FEEBATY3Lnep08f5OXlIS4uzvnEiIiIiIiIiEhzpzfshg6lDXStRvavZG0iItKKJg3oI0eORHJyMvbs2QOg5C7vnTt34qabboKXlxdMJhOGDRuGrVu3onv37lqEiBEjRkCn0yE7O9vhXeVnz54FUNrQ7uvriyFDhkAIgd27d9utv2vXLgDArbfeWulxZVnGE088gaFDh2LcuHHqfEVR7K6mWa+glX8U5UoYDIYKr8gRkS2DwYDw8HDWDJETWC9ErmHNELmGNUP1meFYafevqf7BCIkMr/ljsmaInMY6IStNGtCt3ZhY764GgLZt22L9+vXIzs5Gbm4uNm/ejGuvvVaL8AAATZo0wb/+9S8AwLJly+yWL1++HADw+OOPq/OmTp0KAGrf6VZmsxlLly6Fh4cHJk6cWOlxP/zwQ8TGxmLRokU28zt16oT09HSkpKSo844dOwaj0Yi2bds6nxgRERERERERaSoh5gyC8rPVaUOvLhpGQ0REldGkAb2++OCDD9ChQwfMnDkT33zzDQoKCpCcnIxnnnkGBw4cwBNPPIF7771XXX/UqFF49tlnsXr1asyaNQtZWVlISkrCI488gn/++Qcff/wxIiMjKzzeuXPn8Oqrr2LGjBlo06aNzbKnn34anp6eeO6555Ceno4tW7Zg5cqVmDhxosM+2l1lsVjsBmkgIscsFgtSUlJYM0ROYL0QuYY1Q+Qa1gzVVxc271F/t0g6dIjuVyvHZc0QOY91QlaaP4vw008/4bfffsO5c+cAAJGRkRg1ahRuvvlmjSMDQkJC8Ndff2H27NmYPn06xo0bB5PJhB49euDrr79W71Av64MPPkCvXr2wYMECvPPOOzAYDOjbty82bdqE4cOHV3q8p556Cm3btsULL7xgt6xp06bYsGEDJk+ejKZNm8Lf3x8TJkzAW2+9VW35EhEREREREVHNslhk+JYZy+xi0wi09qt8rDQiItKOJDQaUjYhIQFjxozB/v37AUAd2dY6KGfv3r3x3XffoXnz5lqE16hERUXBYrEgNjaW/TsROcFisSAtLQ3BwcGsGaIqsF6IXMOaIXINa4bqo5i9J+C+7Gu4i5LxzPLvvh0dh/eulWOzZoicZ7FYWCcEQKM70HNzcxEdHY1//vkHXl5e6NatG8LCwgAAqampOHLkCPbt24fo6Gjs378f3t7eWoRJRERERERERFSt/kjKx+7wbuhceBk9LTmIHtRN65CIiKgSmjSgz5s3D/Hx8fjggw8wYcIEuLu72ywvKirCwoULMW3aNMyfPx+vvPKKFmE2KjqdDjodu8QncoZOp4PJZGLNEDmB9ULkGtYMkWtYM1TfFBRZsOd4EsySHodMQYjody0MRrdaOz5rhsh5rBOy0qQBfc2aNZg1axYmTpzocLm7uzuee+45FBYWYtWqVWxArwWNsQFdCAEoivMbSBKkcq+RUBTAxV6QJL3ePhZZdmkfjvbjcj4Ac3IhFqA0JwmAr7c3IESVedaXnK5mP1eSk6wIoIHl1BDfp+rKydPDBNlsRtks6ntO9fV9EooCoTjO1XFOCgBXXhsJkr5cLFeUkw6STrLdjyIA4dp+6mtO7pIOxbl5jndTT3OqdDfMqaK9NMqcZEXAUS+jOp0E3f+6+7TmpAgBWVYgBJB1OdupnPQ6Se021JqTrCjqR6YzOUkSoFc/d0tzssiKw5wqUlFOyv8+p519n5hT/cpp999JMBfmQ0LJV3WfVgHIzcmpcnv7nEpZc3KWm0GP4sICm3llc3JW2ffJquz75Izqysnmffof5lSCOTnmbE7ePj4uxUYNkyZ9oHt7e+Pw4cNo27ZtpeudOnUKPXr0QG5ubi1F1jhFRUVBCIGYmJhG04huOX8B+cu/g5KZ7fQ2Xo/cA7fOHWzmFe8/ivyvf3D+wAY9/N952W523pJVMP99yundGHt1gef9t9vME2YLsl78r/OxgDlVqMqcBIQo+cItaU53rH7l5JyrzUlAoKDIgsV+bRDj4W+zrHd+Gu6/HO90LBZImNrUvq/IxzJOIarwstP72W8KwlcBrW3mGYSCOckHnN4HACwJbItYjwCbecwJMJgLcer4d9CV+8cyIqI/vH2aOL2frKzzSE7abzNPknTo0PF2p/cBAIkJu5Gbm2wzz9evBZo6eN0rIoSCkyfW2c2vFzlV9FefUHDm2Hd2s8NbDoKnb1OnY8nNPIeLCX/ZzJMkHVp1GeP0PgAg5exO5Gcn2czzDohEaPNrnd8Jc6oQc6oYc6pALeVk1hth0RkgHPx95S4XQa9YAJTmtLH1AGxpcycUScKAossYn5dYZQwWXcnFTrMEDGhf8iR0i6wmCCj0AwA8l3MO3c2VN2YKSUCWSr7XfvXV4bUmJXcPd03tAAkSDELBZ5l/VxmLIilQpJIP5heauWG7tw6+hd5olRUBAMypkeXkjGxjLuIDLtjN75raHlIl/5eUd943GZkm2/+FS3Jq5vQ+AOBo6D8Qku0fFyU5+Tq9D+ZUMeZUsdrMaevs+1yKjRqmOt9aWv6KEtUMWZahuHo3Sz1W8P0GlxrPicrTaPzles9sUWCRFQiX7laj+kqvWGBQiiG5eJcj1RCWHRHVYYqkg1nn5rDx3BEB4MeOUVD4/yIRERHVME0a0Nu2bYu1a9dWud6aNWuqvEud6Ep4/utWuF8/UOswiBods4UNqY2J9U5BIiKiqlh0rvUuGhcQhFQv7xqKhqi28AIQEVF9oEkXLq+//jrefvttvPvuuxg/fjyMRqPN8uLiYixatAhTp07F9OnTMX369NoOsVGJioqCxWJBbGwsDAZNusXXhBACln/OQBQUOuzTsTx9ZDPofG37vlIysyAnJlewhQOSZNcVBwBYziZA5Dju69Thbvx9YWhu+7isUBRYYv9xPhYwp4qDqTwnWZaRnZ0NX19f6Cs5d+pTTk7v5ipySsvKx+JfjgIAzhq9MGTANbimRZC63JCTA/dLaU7HIiQJ+a1a2s13T0mBIb/AfoMKWLy9URQaYjtTUeB19pzT+wCAwrBQyF5eNvMadU4FedAtewNQZOTlJUPpfyOkroPUxe7Z+dCbzU7HYjG6odjH03amEPDMcO1poiIfT8jlBuoyFBbDmOf86wtIyA+yfzy0LueUt/ME5Kx8AIDO1wT3dvZdzeSaPOzmmYqKoXfhCTWLXo/C8gOhCQHvwiKn9wEABUY3yOU+Xw0WGR4uvL5APc1JETCbzXBzcwN09g0r9TKnKjAnxxpTTp4FRfi50B/Wy65NdWY0NxTbrBYgyTDpSo5VYHTDIh8FvxgBryIj3ATwYI5AmKXqC7e++mJIUskd7IleJd1o5FjcUKiUvEZNiorgWUVObpICT33JsfIMOmS4l+SUVuwBAUASAq0LC6uMxVNngdv/ckpzd0OBQYciRYdsS8n/xz4WC0KdeJ+YU/3L6YKXO3y93JFjcUOB7Px9je56gSB3+/M8Kd/5QUiFIuCJfPh7GmzGUCmUJWQUudYeEG4y231VZRbpaz0nAPA3yvA02J4TzKkEc3LMmZyEIvDaC0+4FBs1TJo0oOfk5KBHjx6Ij4+Hl5cXevTogdDQUABAamoqDh8+jLy8PLRt2xYHDhyAtzfvLKhJjbUBnehKWSwWpKWlITg4mDXjgpV/HMf3u0oa2g16HT57/gZ4m4xVbEX1Vdq65biw4A0IlFxk6fDFJng2b6V1WI1Szvk0/PHoQnW623M3ouXNvTSMiCrD7xhqjP78Owlz1+xTp9965Dp0iAiscH2LoqDLd0uQ9r9BEG8Jb4HFw29mzRA5gd8zRM6zWCysEwIAaHIW+Pj4YNOmTbjzzjtx+PBh7NixQ+3r3Nqe37NnT6xZs4aN57VEr9dXeictEZXS6/UIDAxkzbhAUQR2HCsdXKl3u3A2njdwGb+vA1DyYLJn514wRbTUMpxGLfH3o+rvOjc9mg7ppGE0VBV+x1BjtO1ogvp7k0BvtG8WUMnawNak82rjOQA80LEra4bISfyeIXIe64SsNLuM0rJlSxw4cADr16/Hhg0bcO5cyWPlkZGRGDVqFG655RYOIFqLJElqFK+3EKJR5Ek1S5Iku66nqHJ/n09HWna+Oj2kW3MNo6GaVnjuNApOHlOng264i5+9GhGKgsTNpe9FeP/2MPqYNIyIqsLvGGpssvKKcOh0qjo9pGvzKr8zvjlzXP29qac3hka05PcMkZP4PUPkPH63kJWmzyFIkoTbbrsNt912m5ZhEABZliHLcoO+uibMZuTM+wxundrB2Lsr9OGhWodE9ZQsy8jKyoKfn1+DrpnqVPbOMh+TET3asP4assxNP6i/S25uEF37NfjvmLoq/eh55F8s7VO9eXRXDaMhZ/A7hhobN4MOD4/sjK1HE3Am+TIGd4modP3s4iL8cv6MOn1ny/bIunyZNUPkJH7PEDmP/8OQlfO962sgLy8Ps2bN0jqMRkEIAQ26w69V5piTUFLTULRlN3Le/RRyUmrVGxE5IIRAcXFxg6+Z6lJklrHneJI6PahzBAz6Ov31Q1dBKAoyN5c2oPv0Gw6LmzvrRSMJZbpvMfqaENqnjYbRkDP4HUONjae7G27s2xpzHh+Cj58ZgVB/z0rX//HcaRQrsjp9V8t2rBkiF/B7hsh5rBOyqtMtGLm5uXj99de1DoMaiOIDpY+w60KDoGvCO2CJasPek8koKC4d3XxIFXeWUf2Wd3QvzBeT1Wn/EXzKTCtyoRlJ2/9WpyOGd4bOwDtoiKjuCgvwqnKdb+JOqL93CwpFR/+gmgyJiIiIqOa7cLmaO8hzc3OrMRJqzJTsXFhOxqnTxl5d2ZcVUS3ZfrR08NBmQT5o09Rfu2CoxmVs/F79Xe8XCO9eg1B0OUvDiBqv5D9PwlJgVqfZfQsR1XcJudnYffGCOn1P644aRkNERESNRY03oM+cOROSJLn82IN1GzZy1o6GPoio+VAMoJSeg8ZeXTSMhuo7SZKg0+kadM1Ul8zcQhw+c1GdHtI1gq9bA6YUFiBrx2/qdMDwm6FzM7JeNFK2+xafFsHwa99Ew2jIWfyOIarY6jOld5/rJR3ubNWeNUPkItYMkfNYJ2RVK4OITpo0Cd7e3i5vl5OTg3nz5tVARFSeXq9v0AMjFB8obUQwtI2ELsBPw2iovtPr9QgNZRdAztgZc8HmAup17L6lQcva9TuUgnx1OiD6DtaLRgrTc3DpQOkgexEjuvAfgHqCNUONxd/n0vHH4fMY2q05OrUIgk5X+WeUEMKm+5brm0Ui2KOkv3TWDJHz+D1D5LyG3E5GrqmVBvQpU6Zc0Qd0SkoK5s6dWwMRkSMN9Y5/Ofki5AulA4Yae/ERdro6Qgh1NO6GWDPVadvRBPX3zpHBCPGrfGAwqt8yfy/tvsW9RRuY2kWxXjRyYUssxP+evJIkIOJ6PnlVX7BmqLH44/B5bD1a8tOmaQDeeWxwpesfSEvBmZzL6rS1+xbWDJFrWDNEzmuo7WTkuhofRHTGjBlXdPc5APj4+GDmzJnVGxA5ZLFYIMty1SvWQ8X7S+8+h5sBbl2v0S4YahBkWUZaWlqDrZnqci41G2dTS/u+HtKtuYbRUE0zp19EzsE/1emA6NshSRLrRSMJG4+ovwd3bwnPMD55VV+wZqgxKCy2YPfxJHW6Y0RgldusPnNS/d3XzR03RLQCwJohchVrhsh5rBOyqpUGdE9P2zsOly9fjqKioiq3zc3Nxeuvv15ToVEjIBQFxQePqdNuXTpC8nDXMCKixqPs3edGgx79OjbVMBqqaZl//AgoSsmEJCHg+lu1DagRyz6TiqwyYw9EjOCTV0RUt+w9mYIis0WdHlrFRfZiWcb3Z/9Rp29r2RYehlp5mJqIiIio5hvQHXnkkUeQlZVV5XqZmZm1EA01ZJZT8RDZueo0Bw8lqh2yIrAjJlGd7tuxCUzu/Ee3ISvbfYt3934whvKCiVbKDh6qdzeg6XUdNYyGiMhe2YvszUN80TLMt9L1f79wFplFher0vW34RCkRERHVHk0a0IUQyM3NrXSd77//HoMHV94PHlFVzAdK7z6XfLxgaNdKw2iIGo9j8ZeQmVv6j+7Qruy+pSEriDuOwjKP1geMuE3DaBo3xSIjcXPpd1+TQR1h8OSTV0RUd2TkFOJo/CV1ekiXiCr7l119pnTw0Bbevugb0qTG4iMiIiIqT5MGdAAYM2aMw7vQ8/Ly8Nhjj2HMmDFIS0vTILLGSafTQafT7HSoEUIIKDl56rSxZxdIHEGZqoFOp4OXl1eDq5nqVPbOMn8vD3RpGaxhNFTTMjetU3+X3D3gd90N6jTrpXalHT6LwozS777m0ey+pb5hzVBDtyMmEUL8b5BjSLiuS0Sl62cUFmBj4ll1+p7WHW0a3FkzRK5hzRA5j3VCVpqdCUajEaNGjUJeXuk/ebt370a3bt2wbNkyGI1GvPjii1qF1+g0xAZ0SZLgPeEB+Lz0NDxGDoaxbzetQ6IGQqfTwcfHp8HVTHUpKLLgrxPJ6vR1XSKg1/O1aqiExYLMzevVaf/rboDes3TwcNZL7SrbfYtHoDeCu7fULhi6IqwZasiEENh2pPQie5dWwQjyNVW6zbqzp2BWSgdxu6e1bbdUrBki17BmiJzHOiErzc6EVatWwc3NDbfccgtycnLw6quvYsiQIThz5gw6deqEffv2YdKkSWjRooVWITYqiqJAsQ7+1sDogwPhccMQ6MNDtQ6FGghFUZCTk9Nga+Zq7TmRhGJL6T+67L6lYcs9vBuWjNInxsp338J6qT2W/CIk7yzt5iDi+s7QGfjkVX3DmqGG7GxqNs5fylanhzjxN8Lq+NLPtT4hTdDK199mOWuGyDWsGSLnsU7ISpMR3awn4M8//4xhw4YhIiICubm5EELgP//5D+bMmQN395L+OuPj47UIsdGxNqDz6hpR1RRFQV5eHkwmE2vGgW1HSwcPbRHqi8gqBgaj+i1jY+ngoYbAEHj3GGCznPVSe5J2nIBcZFGn2X1L/cSaoYasbBdv7m4G9O1YeV/mcdmZ2H8pRZ0uf/c5wJohchVrhsh5bCcjK03PAh8fH2zYsAEREREwGAz45ZdfMH/+fLXxPC8vD7NmzdIyRCIickFaVgFiz5bejcy7zxs2OS8HWbs2qtMBI27jWBMaStxU2n2LX+tQ+LYO0zAaIiJbsqxgR0zpRfZrOzaByVj5/VzfxpXefW7U6XFby3Y1Fh8RERFRRTS/jBIUFIRNmzahefPm+Pnnn22W5ebm4vXXX9coMqqvhBCwnD4LIctVr0xE1Wr7sUQI/G9gMEnCdZ0rHxiM6resHRshiorU6YDo27ULppHLT81C2uGz6nTzkRz3g4jqlrOp2cgtMKvTVXXfogiB1WdOqtMjI1oiwN2jxuIjIiIiqkiNd+Hy6KOPOrVeZGQkPvnkE5w5cwZhYSV3TBUUFNRkaNRAyRdSkLvwS0g+XjD26Az3EYOg8/LUOiyiBk8IgW3HSh/N7toqBAE+/Ee3IcvctE793aPNNTC16qBdMI1c4uZjECXXriDpJDQbFqVtQERE5bRp6o//e/4G7Iq9gCNxF9G5ZXCl6/91MQkJeaX9pTvqvoWIiIioNtR4A/qyZctcWv/XX3+1mZYkqRqjoYoYDAboG8hj9+b9JY+wi5w8FP91EB6jh2kcETU0er0ewcHBDaZmqsuZ5CxcSMtRp9l9S8NWnJKI3MN71OnA6Dscrsd6qXlCCCRuOqZOh/RqDY8gHw0joqvBmqGGzNfTiNF9WmF0n1ZVrvtN3HH190B3E65v1tLheqwZItewZoicxzohq1oZRPSDDz6An5+fy9tdvnwZkyZNqoGIyJGGcLFCyDKKD8ao025droFkdNMwImqIJEmCwaDJGMx12tYyA4N5ODEwGNVvmX/8WDqh08F/+M0O12O91Lysf5KRc7507AEOHlq/sWaIgEKLBevPnVan72jZDsYKGjFYM0SuYc0QOa8htJNR9aiVT81//etfCA0NdXm71NRUPP/88zUQEZUnyzJkWa73V9csJ89A5OWr08Y+7AOWqp8sy0hPT0dQUFC9r5nqYpEV7Iq9oE73u6Yp3N342jRUQgib7lt8eg2CW2CIw3VZLzUvoczgoQZPI5oMYFc69Rlrhgj4LfEMcszF6vQ9bSruvoU1Q+Qa1gyR8xpCOxlVjxofRHTp0qVXdPc5AAQGBmLLli3VHBE5IoSAsHaeWo8V7z+i/q7z94W+dQsNo6GGSggBRVEaRM1Ul8NxF5GdXzqY5NBu7L6lISs4eQxF58+o0wEjHXffArBeappikZG4ufTJq6bXXQO9B5+8qs9YM9TQ5BWaUVBkcWmbb+JOqL+39Q1Aj6CwCtdlzRC5hjVD5DzWCVnV+B3oDz30kN0869WbsLAwJCUlVbitm5sbhgwZUmOxUcMiCgphjv1HnXbr1QWSrsavERERgG1lum8J8jWhU4sgDaOhmlb27nOdlzf8BozQLphG7uK+OBRnlw66zu5biKiu+W1fPNbs/Af9rmmKoV2bo2trx08sWV0qyMeWpPPq9L1tOvIReiIiItKUJq2LQggMGDAAn3/+uRaHpwaq+MhxwCKr08ZeXTSMhqjxyCs0Y98/Ker04C7NodPxH92GSjEXI/OPn9Rp/+tugM7dQ8OIGreE30u7b/EM9UVQVz55RUR1hxAC244loNgiY/uxBPz0V1yV26yN/weyUNTpu1qxWyoiIiLSliYjR7i7u2PRokWIiorS4vDkgCRJ9f7ODnOZ7lv0zZtAH1b53S1EV0qSJBiNxnpfM9Xlz7+TYJFL/9Ed0iVCw2iopuXs2w45O1OdDoiuuPsWgPVSk4pzCpCyu/TJq4jr+eRVQ8CaoYbkdNJlJKXnqtNDulbdxds3Z46rvw8Mi0Bzb99K12fNELmGNUPkPNYJWWnyX1arVq3g5lZ1/5xmsxnbt2+vhYhIr9fX64ERlIzLsMSXdiFh7M1H2Knm6PV6BAYG1uuaqU5lu29p0zQAESE+GkZDNS3z9+/V393CmsGrS59K12e91JykbX9DMZc+eRXB7lsaBNYMNSRl/0YwubuhT/vwStc/npmGYxmX1Ol7Kxk81Io1Q+Qa1gyR81gnZKXJHegPPPAAVq1ahddee63S9TIyMjBs2DDIslzpenT1rIOI1tTVNVFUDFFYBMnTA1K5iyfCbIbIL3Rpf5Kvt02sxQdKH2GHTge37ny6oT4RQiDHIuDK8BwFRWYUmZWqV6wBQgiYzWa4ubnV+SvSQlZgzsqvsf1n5RXi3Lk0mP433bdFEE7FXXTpvTQZDXB3s/3DxCIryC00uxSLr6cRunLvR36RGcUW588Tg14HbwcDMGblFTXYnJT8HAhzcZX7MbnpYbQU4vKuPyCUkldD13ckTsWnVbqdEALFhYXQ6fWABPiaHOVkQbEL3/UGXQU55RfDlU8Sk1sF71ORi+9TBTldKiiARTiXl16vg6e7/Z9lOQVmoILBi+J/P4g8r5J7ITxbBCNGFMEjORVGBznlu3jueTs49wqKLDBbnH+f9DodvEz271NOnmvvk4fR0KhyEkJAtijQG3RVfsfUl5xcoUVOQgigoBDlF3m46R3n5OKAmN4mN8c5yc5/lut1Onh5OPiMyDe79j7VYk6KAvxx+Jz6lFr7Zj7458KFSvf7f/F/q98xRp0O13r442JKVd8zgEW2wKA3oI7/WUZUJ7BmqDGzyAqyzblVr2glBDq2alNzAVG9IQkNhpS1WCy455570K5dOzzzzDNo3tzxo3ypqalo0qQJFEWbRrLGIioqChaLBbGxsTAYqv+aStHOvSj4cRNgkeE59g4Ye3S2WV589Djyv/jOpX36vfuK+pi6EAJFm3fBEn8elhNxcOvUDl6P/ava4qealWtRsOB0Li4VOV/nhcWWkgZEjohdKc+Lmej+f+thzC2oeuXqIAESgO+6t0Wx3vkHnPqcS0W7tCybeSk+nvijvWtdwdx1+DTcyzVG7G0RhtMhfk7vIzw7H8NPJdrNb6g5WXQyJDjXKDXq1A/ombzPZt6e8Mfxe4fK7w4s/3/ZvYdO2OW0O7IJToUEOBUHAIRn52HkP+fs5q/q0QHFLtwl0u9cMtpfyrSZl+TrhU3tI53eB2CfkyIBi/pFQOicf59yjAU4FZhqN79bagvohfPnXkLwZaT55tnM8ylwR9vkYKf3AQBHI5Mg620/Y5un+SM428vpfeSYinC6iX3DV9dzTaCXmRNzcow5OdYQcjrV5BJyTVVfsLUa4BWAZ0JauRQXERFRZVy7ba/EzSOG10AkVN9ocgd6+/btIYTADz/8gPfeew8mkwkhISF2d9nIslzn7+6kyglFQeEvW0oH91Sqv8FTkiR4jBiEvC/XAADc2H1LvbLlYpFLjeeKIlBs5lMpzmj1+97aazynekcSzjeeO1KkD4UseVd+jCvee/12uIkel7x0CGb5EREBAIrdZOR6ON94DgDXeQfVUDRERNQY8fY7uhqaNKCfPXvWZjo/Px/nztnfSQaww/76TrmUAVFU+seynJAE9OpSY8fTt2gKt6j2NbZ/ql6KEDiY6do/U6487tyYGfILEXTc8edqjZAab2NpfaWDGVc8FIoEpLv1qtZ4GpLdLTT584qIqM5K9s926Q+Fazy80dmDY6oQEVF1YhM6XTlNunDR6/XYu3cvgoMrf1Tw4sWL6NevH/tAr2E12YVL8eFY5H+5Vp32eelp6IMDbdZR8vKhXEx3ab/6lhF2F1eUzCxIfj5q1y5U953MMWPxmdLHiO9sZkJTU8XdLwgh8N53+5CRXdJnftum/hjRs2VNh2lHlmXk5ubC29u7zg4qUrjlGHJXbFWnfZ6+ETpfz2o9xs4zF5FXLKNjqC+6RATA8399Uidk5EFx4Y+TQE93+JTrz7rAbMHFHNfGRojw94JeZ/u5kJ5X5FJ/1h4GPcJ8TXbzG1pOQpFx9r3noOSVdDMjteoCXe8bKt1PgFGCj1tJLFJIBCRv/0pzUiwWZCbElzwmKQCTrz/cvXzR1NfDLqeM/GLkFTv/Xe9u0CHU291ufmJWgUs9OwWY3OBdrt/xQrOMS3muXdgrm1OWXIx747dBZ9bBTdZhkFcY+nhWfRelm16Cn5d9n83p2cWVnnk6kzsMfqXvr4+3ESaTbU7FxTIuZxU5l8z/BAeZoCv3PuXkFKOg0Pl+kt3cdAjw97Cbfykt36X3qdHlJAQKCgth8vBAVZ3T1pucXFCbOYmsHFhOxqnT+pbNoPMs/a709jTA5G77PV9sVpCV61q/7kF+Rvuc8swoLHb+pgA3gw7+PvafEZcyXXt9tcjJy6SHp4P+2yvirtOjraevXR/rFVEUBfn5+fD09ISO/wcQVYk1Q43RtuQD2J58CACglyTc13YUDFLV/8srQuDG/tfVdHhUD2hyi5QQAs2bN0doaGil63l4eECD9v1GSa/X18iXp5xU2p+rLsDPrvEcAHRentC1uvqGPV2A833NUt1wILP0nzUfg4R+QUboK/ln6WRCBi4mXFKnb47uiH6t7c+pmqYoCoqKvOHu7l5n/+jc8cEZFP2vz+7ATs1w3Zg+1bp/s0XBiiPnkVdYjLNZeTAEeuLhQe0AADX3jIl2GlpOOft3QGScUKdbP/wWfHpX7x+GCQkJOONV2g983759YTLZX5yoTnXhnvilJ48CiToobkARFMy+PRqtff21DovqkZLvmKI6/R3TUOR/tQ7FySWDWko+XvC94yFIdfTCOFWMNUPkGtYMNTZCCLx84HUkZSUDAAa3HoCb+w9xaluOyUhWmjSgJyQkVNl4DgBhYWE8WWuJJEk13oCubxZW7fun+qtIFjh6ufQuz54BlTeeA8DWownq714ebujVLrzG4quMTqer8YbAq5GbmI6Mv0sHjYwYUf3jAhw4lYK8wtL3r981Tav9GFRzMn5fp/5uCAyBd/f+1bp/IQRSU0s//wMCAup0zVSnb8+UXpjoE9KEjefksrr+HdNQiKJiFB89rk4be3Zh43k9xZohcg1rhhqbo8mxauM5ANzUMdrpbXmRiaw0OROaNWumxWGpEoqi1MjFCiW5TAN6EzagU6mjWWaYyzxg0jvAWOn6ZouCP/++oE4PjGoGN4M2X2aKoiArK6vOXuBL3HRM/V1n0KHZ0E7Vfoztx0ob6EP9vdAhIqDaj0E1Q87PRdbOjep0wPW3Qqrm7rvy8vKQl1faPZOPj0+drZfqdCb7MvZfSlGn72ndUcNoqL6q698xDYX56HHAXNotjJGD0NdbrBki17BmqLH5+cQm9XcfDx8MatXP6W1ZJ2Sl6aWUpKQkTJ48GZ07d4aPjw98fHzQuXNnTJkyBUlJSVqG1ujURAO6kpcP5XKOOq1rygZ0KnWgzOChTTz0lfZ9DljveC7t8mVIl+Y1FltVFEVBQUFBnfwyFYqChN+PqtNh/drBWM19n2fnF+PAqdKLY0O62o9JQHVX1o4NEEWl/ZYHRN9e7ccoe/e5TqeDu7t7nayX6lb27nOjTo/bWrbTMBqqr+ryd0xDUnyg9LtS3yQUev6dWm+xZohcw5qhxqTIUozfT21Vp6PbDYVRbz+mSEVYJ2SlWQP6pk2b0LlzZ8ybNw9///23erfa33//jblz56Jz587YvHmzVuFV6Pz58/D19YUkSdi6dWuF661YsQL9+vWDt7c3AgICMHLkSGzZssXhumazGVOnTkV4eDg8PDxw3XXXYd++fQ7XlWUZvXr1wo033lgd6dQoJfmizTT/MSGry8UKTueW3vXVO6DqL7Cy3beEBXihPe94digjNhH5qaX9Tjevge5bdsVegFzmDwktL2aQ6zI3/aD+7tG6I0zVfJe0oii4eLH08z8oKKhRPPqoCIFv40ob0EdGtESAu/0ghkSkPeVyNiynz6rTbrz7nIiIqEHaeXYPcoty1embOo7QMBqqzzT5j/bs2bO48847kZ2djeHDh+Pll1/G/PnzMX/+fLz88ssYNmwYsrOzceedd+Ls2bNahFihxx9/HDk5OZWu8/zzz+PBBx/EqFGjkJiYiJiYGAQHB+P666/H0qVL7dZ/9dVX8fHHH2P58uVITExEWFgYoqOjkZaWZrfuvHnzcPLkSSxcuLDacqopZfs/l9zdoAv01y4YqlMOXi6GtfcWCSX9n1cmO78Yh06XNsgN7dqcdzxXoOzd50ZfE8KubVvtx9h+rPRiRoeIQIQHelX7MahmFF9MQu7hPep0Tdx9fvnyZRQXlz5h4syYJw3B3otJSMjLVqfvZvctRHVW8cFjKP1DRIKxZ2dN4yEiIqKa8cuJ39XfI/ybokt49XdvSo2DJoOIvvPOO/Dx8cG2bdvQo0cPh+scPHgQt9xyC+bMmYNPPvmkliN0bPHixdi/fz86duyIEydOOFzn119/xQcffIAxY8Zg5syZAAB/f3988cUX2L9/P/79739j+PDhiIyMBAAUFBRg/vz5GDt2LEaOHAmgpJG8RYsW+PjjjzFjxgx13/Hx8ZgxYwbefPNNdfu6rGwDuq5JGKRGcAciVU0Igf0ZpY1r7X0M8HWr/NzYGZNoc8fz4C4RNRZffSYXmZG07W91utnQKOjcqvdj/kJaLk5dyFSnh3bl3ef1Sebm9YD4X6uRToeA4bdU+zHKdt9iNBrh5+eH9PT0aj9OXfNNmbvPA9w9MKJZS+2CIaIKCSFQvL/0YrOhfSvofH00jIiIiIhqQmbBZew6u1edvrFDNG/EoyumSYvmxo0bMXfu3AobzwGgZ8+eeO+997Bhw4ZajKxi58+fx5QpUzBv3jyEhVXcFcm7774LABg/frzNfDc3Nzz66KMoLCzEhx9+qM4/ffo0CgsL0a1bN3Ve8+bNERAQgJiYGJt9PPnkk+jUqRMmTpxYHSnZMBgMMFTzIHKioED9nQOIklVigYzUotLG8KoGDwWAbWUGrOzYPAhhAdre8WwwGBAeHl7tNXO1Unb/A3NekTrdPLpLtR9jW5m7zw16Hfp3alrtx6CaIYRA5u/r1GmfXgPhFlS9d4dbLBabp6fCwsLg5uZWJ+ulOhVaLPjh3Cl1+s6W7WHUVz6uA1FF6up3TEMhJyZDSS39nOLgofUfa4bINawZaiw2/rMVsiKr0zdeQfctrBOy0uRMSEpKQv/+/atcb+DAgXVmMNHHH38cAwcOxEMPPeSwGxYAyM7OxrZt2yBJksP8Bg0aBABYv3493n//fQClAxKUvwqm0+lgsZT2Eb1ixQps3rwZ+/btg76e/FPu9ci9EIVFkFMuQvJw1zocqiMOZJYOBOquk9DZr/L+zxPTchCXVHrH8xDe8VyhxE3H1N+9mwXCv2Ozat2/ogjsKHMxo3e7cHibqr4AQnVDwalYFJ2PU6cDRtxe7cdIS0uzGWinsgvODcmGxHjkmEufrGH3LUR1l/lA6Xel5O4Gt86sVyIiooaobPct3Zp2RjO/JhpGQ/WdJnegm0wmZGRkVLleeno6TCZTLURUuf/7v//DX3/9hU8//bTS9Y4dOwZFURASEgJvb2+75a1btwYAxMXFIS8vDwDQpk0bGAwGxMbGquulpqYiIyMDHTuW/EGfnp6O559/HpMmTar0rv2rYbFYbBrsq4vk4Q5Dy+bQhzeOPnCpcrIQOJhZ2sjUxc8NRl3lj1BtO1raYGvQ6zCgDtzxbLFYkJKSUiM1c6WKLuchdd9pdbp5dNdqfzzteEI6LmXlq9NDuvFiRn2S+fv36u86kyf8BkZX+zHKdt/i7e0NLy+vOlkv1e2buOPq7218/dEzuHFcOKCa0RhqRitCllF8sPQJT7cu10AyVj2QOdVtrBki17BmqDGIzziHv1NPqtM3dbyy/31YJ2SlyR3oXbt2xUcffYQlS5ZUut6HH35o07WJFhISEjB58mS89957aN688sailJQUAEBgYKDD5QEBAQBKHqNPTU1F69at4e3tjcceewwrV67Eo48+iq5du+KVV16Bu7s7nnrqKQDApEmT4OPjo/apfqWioqIczo+Li0NkZCRkWbaZr9frIUkSZFmGsPaZi5K75fV6PYQQdtvodDrodDooimJzFyJQ+uhL+Q+gyrap7hiYk7Y5Hc+xIM/yv+US0CfQWOn+zGYLth9LULts7tUuDF4ebprnBKDOvU/nNx2FkK3rSGh6fZRdvlcbw/nULBh0OphlBT6eRnRvHQIA9eLc02p/dSUnyBZk/vGjOmae76AbINxKnh6orpyKi4tx+fJldTokJAQWi8Umj4b4PqXk5uCPpHPq/LtbdYAkSfU6p4b4PtWnnGRZVtdrKDnVdgwV7U8+fhoiz3ohWEDXo/S7sr7m1BDfJ1f3J/8/e/cd39R1/g/8c6+2lyxvzLAxywwDYYQZMLOMTEhI0wxI0nzbJM0Oya9J2tCU9ts0O22a0aQh85tJKEkIEHYIEEYAmw0eTG/LW9a49/z+ELqS8JLsK11Zet6vV1od6ere5yA9knXuuc8RBK/twqFPLuH0OlGfQqdPrpxp77umu/XJl/1RnyKrT98cWQ8GgAOgUWmQ23eS1z593Z8gCFTGhQBQaAB98eLFuPPOO1FXV4eHHnoIY8eOhUbjnP1ht9uxZ88evPDCC1i1alWb5VKC5a677sLYsWNx1113dbhtU5PzD3KttvWSBjqdrsW2gLNuek1NDSZMmACe55GWlobPPvsMffr0wYYNG/D+++9j3bp1iIqKQn5+Pp544gns378f8fHxuO2227B06dIuzzRljKGystKrPExSUhLUajWqqqq8PlC0Wi0SEhJgt9tbXElgNBphMBhQX18Pi0cNdABIS0sDAK/6uIDzigSj0Qir1Yra2lqvxxISEqDValFbWwubzT1zmed5pKSkQBCEFvuLjo5GbGwsGhsbpZn+1KfQ6NMOsxoic174Eq/mkBWtQmNDQ5t92nWoCBU17sfGZDlPQindp4SEBIii2CJnlHydir/7GaLIwHFA0vAMqOINLfrb1ffeZX2iMeiWy7C/sBp2QQR3cTi2O7z32upTd84nf/rUtPcH2M0eC3mOmYra2lpZ++Tqh+uPVp7nUVlZ6fUDLRxfp/87lge7x4+C6Ub3iaXu2qdwfJ26U58EQUBzczMAhE2fgBB5nXbtAw+AgUGMiUJNXDRwcb/dtk/h+Dr52SdBEFBXVyeVDQuHPrmE0+tEfQqdPrlyJi4uDlqtNiz65BJOrxP1qfN9EpnoHEAXRXA8j8mZ42Gtb4a1vtnvPtntdvTsKW9pVNI9cczzFFGQMMYwf/58rF27VjorZTQaATh/XLvOGs2fPx9ff/11sMOTvP3223jwwQdx6NAhZGZmSvfn5uZi69at2Lx5M3Jzc6X7v/zyS1x//fXIzs7G0aNHW+zPYrEgKioKgHPWt6uki+fjDQ0NSE5OltrDhg3DxIkT8cEHH6CqqgoDBgyQFljdv38/fvOb3+CPf/wjnnrqqU73c+hQ5+ybvLw8r8HAUD2T2JUYqE/K9anB5sCfjzVCuPjw9BQt5qdHtbu/f/z3Z2w56Fy0Mi5KizfunwmdVvkZ6IwxVFRUICEhwStnlHqd6osrsO23/5YeG/nIVej9ixH03qM+Sfs7/ef7UbNtLQBAk5yGge9tBK9SydYnxhj2798v/QFsMpkwZMgQAM4fadXV1UhOTpbyR44+hcrrNP3r/0O+uQIAMCElHV/Nuq7b94nySfkZ6FVVVUhJSZGe1937FOwYWtsfszSj8c+vABev1tJMmwDdnNxu3aeu7C+c+uQa7ElNTYVarQ6LPrmE0+tEfQqdPrlyJjk5GVpt61cEd7c++bI/6lPk9GnvuQP43er/54wDwAtX/hkT+4zt1P4cDofXZFgSuRSZgc5xHFatWoXHHnsMb7zxBmw2G6qq3DPjtFot7rnnHjz77LNKhAcAOHfuHB555BH87W9/8xo8b4/rTFlb9d3NZudCiBzHtbqwmsFg8Kr5vmzZMtTW1uKll14CAPzzn/+E2WzGW2+9haysLIwcORIbN27E3/72Nzz66KPQ6/X+dNELz/PQaDTg+ZZl8T0HCD1xHNfmpSyNL70NLjYaqh6p0I7OgSrd3d+2nuP6AGtNZ2II5v5CIYZQ79PhBhEC4PwGAzAmQdfu/qx2AT8dLYHr4orJw3pBd7FOqdJ9EkURUVFRbeZMsF+nki1H4PqHVWlVSL9iML33uhhDOPVJaKhD3c5NrtRDwsxrofG4UkqOPtXV1XnNHklLS5Me53keUVFR7e6ru75Ox2qqpMFzAPhl/yFSTN21T4GIgfrU8f48n8PzPKKjo6Xtw6FPSsXguT/r4RPS4DkA6MeOgKqVfXanPsmxv1CIoav743keMTExUjsc+nSpUIiB+tTx/kIhBl/258oZz3Z375M/+wuFGKhPHe+vKzGsPen+7RNvMGJCxlioVZ3bH+cakCART7FCPlqtFi+//DKefPJJbN68GadPO+uHZmRkYPr06UhKSlIqNADAhg0bUFdXh/vuuw/33Xdfq9tMmzZNur1582aMGjUKPM+joqICjY2NiI6O9tq+sLAQgHPh0Esfu9SBAwfw4osv4p133pH+LfLy8mAymbxmro8dOxYfffQRCgoK2qxx7ov2PjT8JTY0QrjgXEjOcbwQ6sxeXgPoJDLtNdul270NKqTqW/+Cddl9vATNdvdZ59zhobNgJc/z0lUzSmOCiHMb86V22sRB0MR0/mQaCT81W78Ds7svzzTNulb2Y3guHqpWq5GYmCi1Qylf5PZ54THptk6lwlV9+ikYDQkX4ZwzSrLvzZNuq3r3gCo1WcFoiJwoZwjxD+UMCWfN9mZsOvWD1P7FwOnQtDF47gu5xslI96fIO+HMmTPSpR3JyclYtGgRli5diqVLl2LRokWKD54DwJIlS8AYa/W/qVOnAnAOmrvuy83NRVxcHKZOnQrGGHbu3Nlinz/++CMA4Oqrr2732IIg4K677kJubi5uu+026X5RFFuc1XOdlbv0khh/McZaXLbSWa7BcxdVzzRZ9ku6ryqrgKJG92D4mITW1wnwtDXvrHS7Z1IssnqEzh95oijCYrHIljNdUXmwGJaKeqnde9Zw2Y9xurwOjc32jjckIcn8/VfSbcOgHOhlHuQVRREVFe5Z2ElJSV7fVaGUL3ISRBGfFx6X2vN690Osli7vJF0XrjmjJKHKDEeR++8K7Rj5vyuJcihnCPEP5QwJZ1sKf4TF7r4ydv7gWV3aH+UJcVFkAL1v374tFgQIF4899hgA4K233vK63263491334Ver8f999/f7j5effVVHD58GG+88YbX/UOGDEFVVRVKS0ul+/Lz86HVatG/f/8uxe25yFtXeQ6gc3odOFPoDHwSZezzmH3OAxgZr2l3e3N9Mw4Wugfkpub0DqlLp0RRRG1tbUh8mZ793j37XBcfheTRWe1s3Tn/WPUz7nxxLV74Yg+On229RBUJTdaSs2g8tE9qJwRg9nl1dTXsdneOX1qiLJTyRU7bS8+hpKlBat/YL1vBaEg4CdecUZJ9n/u7EjwPzcjOX7VJQg/lDCH+oZwh4ezbo99Lt/smZCA7eUCX9kd5QlwUGUBnjOH222/HBx98gJqaGiVCCJg5c+bggQcewOeff45nnnkGtbW1uHDhAm6//XacOHECr732GjIyMtp8/unTp/GHP/wBTz/9NPr1854leO+99yIqKgoPPvggqqqqsHnzZnz00Ue4//77pcVJQ4HoMYCu6pESUgOfJPgYY9hndpePyI7TIEbd/kfP9sPnpatUOHCYktMroDF2V45mG0p+cC9Y3Gv6MPDq9kvj+Ot0eR2Ky2rhEETsPHoBF6obOn4SCRnmDavcDZUa8dOukv0YnuVb9Hp9xFwS7Dn7PFkfhak9+igYDSGkLYwx2Pa5y7dosvuBj2m/lCIhhBBCup/Kxir8dPZnqT03eyaNRxHZKFbMJz09HU8//TRSU1Mxe/ZsvPnmm14/wkNNcXExOI4Dx3HYunUrAGcNdI7jkJub67Xtyy+/jPfffx/ffvst0tPTMXjwYJSVlWHDhg2444472j3O3Xffjf79++ORRx5p8Vh6ejrWrVuH06dPIz09Hb/85S/xm9/8Bn/5y19k66ccPGeg81T7POKdbhJQaXOftR1jan/2OQBsOei+zHpYZhKSjIZ2to5cJduPweFRWqX37BGyH2ObRykdrVqF8dnpsh+DBAZjDObvV0ntuMunQm00yXoMu93utQh4ampqRPyR2mi34eszp6T2wr4Doab6iISEJOH0OYiVZqmtofIthBBCSFhae3wTGLs49sBxmDtohrIBkbCi2CKiy5cvx1tvvYV9+/bhq6++wiuvvIJ7770XEyZMwIIFC7BgwYJ2Z2oHW2ZmpjQj1he33norbr31Vr+Ps2bNmnYfnzRpUqv11UMFczgglLvL86h6pCgYDQkFez1mnxtUHIbEtT+AfrqsDqfLa6X2lOE0+7wt5zzKt8T1TUZcP3lPWAkiw7b8c1L78uweMOgU+9ogfmo6sh+2C2ektmn2dbIfo6Kiwuu7MSUlMj7zvz1TgCaH++TVjf0GKxgNIaQ9tr3u70rOoIdmyEAFoyGEEEJIoHx7zF2+ZWyvkUiLjYzfJiQ4FJkuVVRUhOTkZADA6NGjsXz5chw5cgR5eXmYM2cOPvjgA2RlZWH06NH461//qkSIEUelUrVYoLQzxPIqQHDPNlbRDPSI5hAZDta4B5lGGDXQ8O3PTt3aDWY8q1QqJCQkyJIznWWprEPF/iKp3WtGjuwzfw8VVcDc0Cy1c4f3lnX/JLA8y7eoYuIQN36a7MfwvHIsLi6u1XJioZAvcvMs3zI4PhFDTcovfk7CRzjmjFKYwwH7wcNSWzNiMDgNnQgON5QzhPiHcoaEoxMVBThVWSi15w6aKct+KU+IiyID6BkZGa0O9PTr1w/Dhg3DkCFDoNfrsX//fvzhD39QIMLI4ypP01We5VvA0Qz0SHekzo4mwT07dUyCtt3tBZHhh0PuGc/jB6eH5IxnjuOg1WoVLVVxfuMhMPFinXgO6DUzR/ZjbPWYfR4frUdOJg0Sdhei3YaaLe4rmuJz54HXtJ9//mpqakJdXZ3UvnTxUJdQyBc5lTQ1YGuJ+0TfoqzssOkbCQ3hljNKsh85CdbkPhGsHSN/qTOiPMoZQvxDOUPC0ZpjG6TbOrUO0/tfIct+KU+Ii+IjU01NTfj222/x5ZdfYs2aNWhsbATgrN2amZmJBQsWKBxhZBAEAYIgdPnsmlf986QEcFp5B2xI97LP7J59nqDlkRnV/vsr/5IZz6G6eKggCKitrYXRaFTkjDRjDGc3uBdESx6VBUNSnKzHsNgc2HX0gtS+IqcXVCqq8dxd1O3aDKHeXQrJNEv+8i3l5eXSbY7jpCvLLqV0vsjty8LjYHCevOI5DtdnDVI4IhJuwi1nlGTf5y7fwifEQ5UZmn9XkK6hnCHEP5QzJNw4RAfWHt8otaf3vwLR2pZXxnaGHONkJDwoMoBeX1+Pr7/+Gl988QXWrVuH5uZmqYbqoEGDsHDhQixYsACjRo1SIryIxBjzq8Z7W4QS9wA6lW+JbI0OEUfr3QPoY0wdz3LwLN9iitEjp2/rA3JKY4zBZrPJkjOdUVdQhrqiCqkdiNnnPx0tgc0hSG0q39K9eC4eqk3vg6ghl8m6f8aYV/mWxMREaDStr2+gdL7IiTGGTwuPSe0pab2RFhWjYEQkHIVTzihJbGyC/ehJqa0dM5xmkYUpyhlC/EM5Q8LNnrMHUNVULbXlKt8CgPKESBQZQE9OTobd7hxYY4xh5MiRWLBgARYuXIjBg2khru7Mcwa6qgcNoEey/TV2eFRvwWhT+4uHWqwO/HSsRGpPyekFVQf10iPV2e/ds8/Veg16TM6W/RieJzP6pMQhI1XeGe4kcBy1ZtT9tEVqm2ZeI/ugUV1dHZqb3VeLtFW+JdwcMlfiWE2V1F7UT/7cI4TIw77/sNe6PJrR8p9sJoQQQojyvj22XrqdGJ2Ay3vLO3mIEEChAfSJEyfihx9+gCAIuO2227B06VIMHTpUiVCIjBhjiPrVtRAulEMsKYM6q4/SIREF7TPbpNuZUSok6dq/7GnXsQteM56n0IznVokOAec2HZLaPa7Ihtogb6mkyloLDhVXSm2afd691Gz+BhAcUts081rZj+E5+1yj0SAhIUH2Y4SizwqOSrej1BrM79NPwWgIIe2xeZRvUWX2giopMj6nCCGEkEjSaGvC5oIfpfbcQTOg4qnkCpGfIgPomzZtQmVlJb766it88cUXuOyyy5CVlYWFCxdi4cKFVLpFAXIsIspxHDSD+kEziAYUIl15s4AzTe7B8I4WDwWArXnuBSszU43ISAndGc8cx4HneUUuBa/4uQhWc6PU7j1zuOzH2JZ/TqrxzHEcrhhGNWO7E/OGVdLtqKGjoEuX92SmIAioqHCXEEpOTgbPt10fX8l8kZNDFPFF0XGpfVWf/ohSt39lDSGdES45oyShvBLCmfNSWztG/u9KEjooZwjxD+UMCSebTv0Am8Mqtednz5Z1/5QnxEWxFeGSkpJw1113Yd26dSgrK8Njjz2GAwcOYOLEicjKysKjjz6KnTt3KhVexFGpVLQwApHNXo/Z52oOGGFsf5CpstaCwx4znqeG+IxnlUqFlJQURXLGs3yLISkWSSMzZT/GkIxEXDGsF7RqFYb3TYYpVi/7MUhgNJ8tRNMx93skIQCLh1ZVVcHhcM9w76h8i5L5IqctF86gstkital8CwmUcMkZJdn2umefQ62CZsQQ5YIhAUc5Q4h/KGdIOPn22PfS7QHJ/dA/qa+s+6c8IS6KzEC/lMlkwh133IE77rgDtbW1eOutt7Bs2TK89NJL6NGjB86dO9fxTkiXMcbo7BrpMpEx/Gx2Lx46OE6DKHX75+ounfE8eVjPgMbYVYwxaTXuYOaMvdGK0h/dCxj2mjEMnEr+86DZvROQ3TsBFqsDdU3Wjp9AQobn4qGcRgvj1LmyH6O8vFy6bTAYEBsb2+72SuWL3D7zWDy0R1QMJqWG9ucU6b7CJWeUwkQR9p/dA+iawQPARxkUjIgEGuUMIf6hnCHhoqSuDPvOH5Ta87NnyX4MGicjLooMoN9xxx145ZVXvH50nz17FitXrsTKlSuxY8cOCIKz/INnnVUSOA6HA4IgQK0OiXMqYaPWLqLaYkeFucmv56UlxkB9ycBoTb0FDRZ7G89oSatRIcUU3eL+ksp6CKLvK0nHx+gQE6Xzus9qd7TZp0qrgAsVFrgOoRc5/NhYg1RTVMs+NVjR2GzHur1FEETnQl+DeyehttGK2saWA7c6tQo9EmNa3H+2ol56fltstXVoOH4KAGDUqRCr9Y7FKjBUNDlae2oLIhPRUN+I/qlx0F6SM+ZmAY329mPxpFVxSIlqmXcXGhwQL1nxu/ZkCQp0DbBEO2N3JNlRvO0HAECMXoXoS+rM2xwiqhocsNts8FVCjArqSxZvPdXBcwShGaLDv/d4OLA6rGiwhVa/ha1fA9HOHOGGDsWpgh2y7p8xoLbMnSdR2gaUHl3fzjMA0eFAU0Ul9AYD1N30j08bY1hdcBbCxZycGgUcz/9W4ahIuHKIIpoaGhAVEwN1O+WRSOsEcw1swgngYiU43YABUJ39QdmgSECJgoC6ujrExcWBp5mChDgxBlVtJTih5e8bURTR0NCAmJiYdsvwERLqfj5/EGPgADgA4DBdH4XGInm/80VBQGz/XFn3SbonjjHm+0iaTFQqFUpLS1FTU4Mvv/wSK1euxL59+wA4z+5otVpMnz4dCxcuxLXXXovExMRghxhRhg4dCofDgcOHD3d6AJ05HLBu/BGq9FSoeqaBMxkj/izdhrJmfFfajKaqWhRt3e/XcwfOGQ9NlHfZjNK8U6g65fvVGFEJceib23I9gRNrdsLe7Pus4rScfkgc4F1Spd0+MUD6UGEMzO78oy3GoAF/ycBss80B2yWDzQadGpo2ZqwP7JWAv95+RYv7/+fl9aiut7TyDCfRaoPQ1CC1Zxauwbjz3gOL52J7472Rv2lzH62576e/I85W53Xf91nzsLvnRJ/30avuDBYffKvF/a9e/hjqdd514JvValjbyNELseWojDZ73Wew6TGgOsPnWADgSHIB7CrfTiSQ0MZ0ekAV6JOizfDI+Ijxasoe9NGE1skTQkgbIvvPUUJIBOJEhsxDjYiqFzremJAwwgXoSz/pz7sDsl/SvSgy3ZgxhkmTJqGgoEBqGwwGzJkzBwsWLMBVV12FuLjQXUCQtCSWVaJ5/TapHfPgnVD3TlcwImVZBIbvy5qVDkMRXkNp/p6f49BilrocxOa2B9e7C5Hj2hw8J6QFjgvC4LmISBw8z9LU0+A5Id0FDZ4TQiJQbJWdBs9JxAnU4DkhLoqNxpw6dQpxcXGYP38+Fi5ciLlz58JgoPqE3ZVwwaPUDsdBlZasXDAh4GCNDY7IG1fyHktjDEzw7w83vUYNuS9cYKIIJnb/PyDtfl6SHIlvP+LGNNpAHwGA7yWlwoWWE3FbXJHSYRBCCCGEtCm+PPL+RiOEkEBTpIQLz/P45JNPcN1110Gj0QT78OQSQ4cOhSiKOHz4cKdroFn+ux7WbT8BAPjUJMQ9drecIXY7r51qQGGjswxGmgaYa/JvVDjR2LJeeF2jFRar738MqVU8Eo1RLe6vqGmC2EG9cE8xBi2iDd6DcTa7AHMrJVM+2HgUpy6YAQYk6VX47fwR0mOJcYYWfapvsqHpYp9i9FpEG9r/PNCoeSS30qcyc2Obdd3LV76Pkg/euNjiELvwMWSMGYho7SX1wgUR1RbfBtoZY7A1W9EjIRraS18nq4AmP2qga3gOia3UQK9otENg7uPdXpSHc3bnv/nlCUl4uG+21/ZROhWiPGqgV1RU4My582iyO997GRkZUPswCB8frYaK9+39WlmyAU01RwAAnEqPtMwbEAnT/bac+gH7LxwCAGjVWvxyxHXgudCpH8lFx4IL8IJ5vJpvUZLpUmJjE5pXrYerrpM6ZxDUfXu3+5xQl6LVwED1dUmAiaIIq9UGnU5LtWm7gIuLAcdTvkYCURTR3GyBXm+gnCERj2uqQ9yHzwDM+XvEOnI6bIMu99pGFBmstmbotPoO/54jJNSpeBUSDaaAlRAWRRHRfcYGZN+ke1FkBvrUqVMxe/ZsGjwPITzPd+kPTs8Z6KoeqXKE1G1VWQVp8BwAxicbMCxZ184zfJOsazlw3Kn9pMZ2vFFHdCr0jPEeVDc3NKOwuBzcxXNyv5g0GJf17+C9INPyBqmtLJYKOAeeqzd8ikRLFQDAqs7A8KtnIa5vSqvbp8kQS4IM+7h0P/sqSlF0bjegcf5RcPvll2NK5oB2n7+vYR/69HAOHMTHx2PEiBHtbu8vUbDicN0rEPXOUkVJPXPRs/9sWY8RimyCHU/sfx21amft+6uHzMXcqTcqHFVoav7+BzTXGp0NnkPc7JvBx7Seq4QQQgghpOusu76AheOBi5M70nJ/A94Y2b/PCSFEDoqcot+8eTPi4+OVODRpgyiKfs1K9sQYg1DiMYCe3vrgZKR4c9MxFG87AHNxCZjdgctMkXGiaPuh83Bd0MKBwxU5vRSOCGg6dhC2kjNS22LIRkzvro/ai6KI+vr6TueMvz4rPCbdjtPo8ItefdvdvrGxEQ0N7kVTU1Pl/6O5tnI3RMFd59+Umiv7MULRjuLdqLW4F46dP3iWgtGELsYYbHvzXC2gXwYQ4FnxhISLYH/HENLdUc4Q4mbL+166rc4Y2ergOeUMIb6jPCEudI0bAdDFAfS6erBGdzkPVboc83i7J1EUse/weTRW1uDCz8dRn3cCMerISLOteWel20MzElsttRJs5g3/BROc72vGaaHtNwa8uuuXc4uiiMbGxqB8mdoEAV8Vn5DaV2f0h76DxUTLytwntHieR1JSkuxxmcu3Srd1UT1hiMmS/RihaM2xDdLtHnGpGJk+TMFoQpdw5jzEymqpbcvOoj8+CfFRML9jCAkHlDOEOAnlRRDKCqS2dvjMVrejnCHEd5QnxCUyRvZIQHktIApAlR65l4htK6hCY32T1J4WArOwg+F0eR2Ky2ql9tQRytc5Fu021Gz+RhpAt2j6wTigp8JR+W/D+WKYre6Z3jf2y25na+fMX88B9KSkJKg7GHD3l91qRr35oNQ2pU4NWM25UFLXXI/txbuk9txBM0Oq9nkose3Ndzf0Ooj9MpQLhhBCCCEkAnjOPodaB83gK5QLhhBCwgz98iddJpx3D9Zx0QZwcTEKRqOsb352lwtRa9S4dkS6gtEEzzaP2edatQrjs5Xvd/1PWyHU1YCJrgH0gYjL6n4ndz73KN/SJyYOl6e0/29bU1MDm80mtQNRvsVc/gMgrT/NwZQyRfZjhKLvT26FXXAv5Dsvm8q3tIY5HLAfOCy11cMHAxpFllwhhBBCCIkITBRgy98otTXZk8DpaO0ZQgiRCw2gky7zqn/eIzUiZqK2xmITcPxUqdQe2C8NUdrwHzQSRIZt+eek9uXZPWDQKd9v88ZVYCIDY4DAx8KmSkNcv+41gG62NmPduWKpfUNWNvgO8stz9rlWqw3IehPmMnf5lpj4odDq5S8RE4q+PbZeuj00bTAyTJFxhYm/HEdPgTW5y3ppRuUoGA0hhBBCSPhzFO0Ha6iS2tocmuhBCCFyUn6Ui4QEtVoNlapztaE9S7hEcvmW1fkXYLe5Z6fOH91HwWiCJ7+oAuYGd4mR3OHKl29x1NWgbudmj/ItAwGOg1GmGegqlQpJSUmdzhlfrSo+AbsoSO1FWe2XbxEEARUVFVI7JSUFPC/veVJLQzGaG09LbVPqVFn3H6rO1pxHfskRqT0/u/WakgSw7cuTbvMJ8dBk9UESYwHPF0LCRbC+YwgJF5QzhAD2fPc6PVx0AtR9L2tzW8oZQnxHeUJcAj4D/Z577oFKpcI999wT6EORLurMzHFmt0OscC8UF8kD6BsPusuYGKINmNY/Mmbles4+j4/WIydT+X7XbPkWzGGHeHEAvUkzAPrEGGhlWtiU4zio1eqAX23xeeFx6faY5DRkxcW3u31lZaXXIicBKd/iMfuc47UwJo2X/RihaM1x948StUqNWQNylQsmhImNTbAfOSm1taNzwKtUQckXQsJFsL5jCAkXlDMk0jGbBbajP0ht7bDp4FRtz5WknCHEd5QnxCXgA+hbt27FTTfdhKeeekq67/3334fVag30oYkfBEGAIAgdb3gJZrFCM2wg+IR4AJE7gF5a14yzZ90zfy8b0lP2mb+hyGJ1YNfRC1L7ipxeUKmU77d5w38BAEwUYVOlQlDFyzb7HHDmS3l5eadyxleFdTXYU1EitTuafQ54l2+Jjo5GdLS8dQ+ZKDjrn19kTBoHldog6zFCEWMM3x51L8o0KXMc4g1GBSMKXfYDRwDBfRJHMzonKPlCSDihnCHEP5QzJNLZj/4AONzjK9oR7ZdvoZwhxHeUJ8Ql4CVczpw5g1WrViE93b3w3e233445c+YgJSWl3efW1dXhwQcfxH/+859AhxnxGGNg0qKAvuPjYhC9ZJFzH81WQKuRO7Ru4fN9Z8FE97/f9WMio3zLrmMXYHO4v1BCoXyL9Vwxmo7sBwAwQYRFOxAAZK1/zhiDKIqdyhlffeaxeKiGV+HazIHtbm+1WmE2m6V2aqr86xE01OTDYauR2gkRUr7lYMlhlNS51zeYT4uHtsmzfIsqsxdUyYlwOBwBzxdCwkkwvmMICSeUMyTS2fLcEz1UKVlQpfZrd3vKGUJ8R3lCXAI+VVSn08Fms3nd5+sb0GKx4L333gtEWCQAOL0OXATMum7NzkPuMiaJyUYMSYtTMJrg2Zbn7neflDhkpCrfb/OGVQAunhQSOVg0zj8gjd1oAVGRMXxW4B5An90rEyadvt3neM4+5ziuwxOUnVFdtkW6rdaaEGOKjMUh1xxz/yiJ1cdiUuY4BaMJXUJFFYTT56W2dnRkvD8IIYQQQpQi1lXAUXxAamuG0zo9hBASCAEf7Rw4cCCeeuopFBYWetXmpTpCJFzkX6hFdWWt1J40rJeC0QRPZa0Fh4orpXYozD5noojq71ddvM3QrMkA450Dz3EylnAJtN3lF3C2sU5qd1S+hTHmNYAeHx8PnU4na0yCw4Layt1S25RyBTgu/BdUsTps+P7kFqk9e0AutKrIvNKmI/Z9+e6GWgXNiCHKBUMIIYQQEgFs+RsBXJygyPHQDpuuaDyEEBKuAl7C5YEHHsBNN92E1atXe92flpYW6EMTP3AcRyc1OmnH2TqodVo4rDbwPI+Fo5UfSA6GbfnnwC7+scZxHK4IgRMHjYf3wV7mnAHLBBEWjbPsCa9RIbpngmzH4TgOWq02YDnzqcfsc5NOj5k9M9vdvqGhAU1NTVI7EIuH1lbuAhPdVxOZ0iKjfMsPRTvRYG2U2vOofEurmCjCttddvkUzeAD4aOeivYHOF0LCDeUMIf6hnCGRijHmVb5F3XcU+NikDp9HOUOI7yhPiEvAB9BvvPFGlJeX49VXX0VxcTEEQQDHcT6XcaE3a3CoVCqoVP7NJmU2O5jNBj5G3oUKuxORMVTEGjFw7ng0lJuR5LAiNbb9UhvhgDGGbflnpfbwvskwhUC/zeu/km4zlQHNvLMWfVzfFPBq+WZLq1QqJCTINyDvqdnhwOrTp6T2dZkDoe0gNz1nn6tUKiQldfyHs7/MZVul2/qYTBiiM2Q/Rihac2yDdLt3fE/kpA1WMJrQJRSdhWh2X4mjHTNcuh3IfCEkHFHOEOIfyhkSqYTSUxArT0ttrY/lWyhnCPGdv+NkJHwFpWD1fffdh5MnT8Jut0tlXEpLSyGKYrv/XbhwIRjhEXRuEVHHySLUPf0iape9iIa3PgKz2wMUXegqahRgtovgeB6xaYn41eQBSocUFIUltThXWS+1Q6F8i2htRs22tVLbHjcYuFhiJC5L3nrgjDHYbLaALCiy7lwR6uxWqd1R+RZRFFFeXi61k5KSZP+StzVXoKHmsNSOlMVDq5tqsOO0u2zNvOxZdFK3DZ6Lh3LRBqiz3YtXBTJfCAlHlDOE+IdyhkQqe9566TanMUAzaLJPz6OcIcR3lCfERZEVH/2ZfU5v1uAQBAGCIPj3nAvOWa+svhHChTJwmsirC7zX7C5pEa3ikB0b8Is6QsKWPPfsc71GjcuzeygYjVPdzk0QG92D+rXN7kF9Yz95S0YJgoDq6mq/c8YXnxYclW73i4vHqKT2y7GYzWbYPU5eBaJ8i7n8B7hrK3KIT/Htj/Pubv2JzRBE92s8L5sWZWoNs9thP+h+32pGDgWndn8WBjJfCAlHlDOE+IdyhkQiJjhgO7RJamsGXwFO69sVwZQzhPiO8oS4KDLa57mYaHtSU1N93pYEn1DiUTYivfss0CgXu8hwsMY9cHmZSQs1H/6zUx2CiB8Pn5fa4wenQ6dR/rKm6u/d5VvUKb3QXJYAXHw5ussCopXNTdh04YzUXpSV3eGMZ8/yLTqdDvHx8bLGxBjzKt8SaxoJjdYk6zFC1Zpj7pqSI9NzkB5Ha3e0xn74BFiz+6oJz/IthBBCCCFEfo7CvWBN7vJ5muG0Tg8hhASSIjPQSXhwzUAHAFUPeUtkdAcbC6pRX+9euHG0KTJm4B8oKEddk3uwLHeE8uVb7OZK1O/9QWprBk8BPAae5S7hEigri05AYO6Thjd0UL7F4XCgqqpKaqekpMheYsRSXwBrk/uEiSlCyrcUVhXjaPkJqT1/MP0oaYvn4qF8ciJUvdMVjIYQQgghJPzZDronevBxKVBnjFAwGkIICX+KDqBfuHABjz76KIYNG4bY2FjExsZi2LBhWLp0KdU/D3HMZoNYWS21I3EG+udbjuLkup9QtHU/uPJK9DYoPws7GLZ6lG9JjDNgSJ9EBaNxqtn8DeBxaZUjPke6bUiJgzbWoERYfvu04Jh0e2JqT/SOiWt3+4qKCq+rdAJTvsU9+5xXGWBMvFz2Y4SiNcfdi4dqVBrM6D9FwWhCl1jfAMfxAqmtHZNDdeIJIYQQQgKINTfAfmKH1NbkzADH09xIQggJJMUKNm/YsAGLFi1CbW2tV53zI0eO4OjRo3jnnXfw+eefY8aMGUqFGFFUKhV4P750hZJyqSQyAKjSI6u0wdkaCy6cd878baqqRaIjNSIGjRqb7dhzolRqT8npDT4EytaYv18l3Y4efjmqyt2D6cYAlG/heR5Go9GvnOnIsZoq5FW7FwPtaPFQwLt8S2xsLKKjo2WLBwBE0Q5z+XapHZ88HrxKK+sxQpHIRHx3bKPUnpo1EbG6GAUjCl32/YcB0f1loB2V02KbQOQLIeGMcoYQ/1DOkEhjO7oNENylRLU5/q3TQzlDiO8oT4iLIgPoxcXFWLBgAZqamjB9+nSMGzdOmjlZVlaGXbt2YcuWLViwYAEOHjyIzMxMJcKMKBzH+TeA7lG+BWoV+BTlZyEH0+d7z3id+Ll+TB8FowmeHUcuwCG4ZzxPzemlYDROzcUnYDl5WGonzL4ORR+4r2AJRP1znudhMMg7q/3zQvfsc51Khasy+re7fXNzM2pr3XUPAzH7vL76AAS7e2FWU2qu7McIRfvOHUR5Q4XUnp9N5VvaYtt7ULqt7pcBPiG+xTaByBdCwhnlDCH+oZwhkcbuUb5F1WMgVMkZfj2fcoYQ39EAOnFRZAD92WefRWxsLLZu3YrLLrus1W1+/vlnXHXVVfj73/+Of/3rX0GOMPKIoghRFH3+cBAuuGfKqlKSwKkio3yJy0+Hz0m3U9JMGJAcGbNTPcu39Es3oVdyrILROJk3/Fe6zWm1iBqVi6bnX5fuM/aTf2BZFEXU19cjNjZWli9UQRTxeeFxqT2vdz/EaXXtPsdz9jnHcUhOTu5yHJfyXDxUo0tCtHGw7McIRd96LB5qMsRjXJ8xCkYTuoSScgjn3e/DthYPlTtfCAl3lDOE+IdyhkQSsaYUjrP5Uls7fLb/+6CcIcRn/oyTkfCmyLtg/fr1ePHFF9scPAeAUaNG4fnnn8e6deuCGFnkcg2g+7x9iccCohFW/3zvGTNqq92zcq/IUX4RzWAoMzfi2Fn3gpWhMPucCYLXALpx0iw0ljZ6bRMXoAF0i8XiV86058ey8yhpapDaHZVvYYx5DaAnJCRAq5W3tIrD3oC66r1S25Q6BRwX/n84WOzN2HTKvSDt7EHToFEpVu0spNn2uRcPhVoFzfDWT7DInS+EhDvKGUL8QzlDIoktz71OD3gVNENz/d4H5QwhvqM8IS6KjIZcuHABEyZM6HC7SZMm0WKiIYgx5qyBflGkDaCv2ndGus3zPBaOUn4gORi25btn3at4HpOH9lQwGqeGA7tgr3QPJJtmXYfaQo+TOzo1onuYlAjNL595LB6apDcgN739kkD19fWwWCxSOxDlW2ordoCJDqltSp0q+zFC0ZaC7bDY3f+2V2b7P6snEjBRhG2fe/aTJicbnL79qyYIIYQQQkjnMcZgy1svtTX9LgcfHa9cQIQQEkEUGUA3GAyorq7ucLuqqiqqzRWCmLkWrNkqtfkeKQpGE1x2QUT+cfdJnb59U5AQFf6LKjLGvMq3XNY/BXHRyg+Wec4+V5sSETtqEuoK3APocX1TwKlCe9Z0k8OOr8+cktrX9x0EdQeXiHnOPler1UhMlH8NgmqP8i1Rsf2hj1L+hEkwrDnmntWTlZiJQcnt16KPVI5TxWB17qsmtKNbL99CCCGEEELkIZw/CtHs/i2qGU7r9BBCSLAoMrI0fPhw/OMf/+hwu1dffRUjRowIQkTEH0JpuVdb1TNNoUiCb+3RUlgt7pMHs0dExuKhJ86ZUWp2l0aZGgJlawRLI2p/WCu146dfBU6tRl2h+/0ZiAVE5fbtmQI0OexSe1G/9uuMi6KIigr3ApfJycmy12SzWkrRVOeuyR4ps88rGirx09mfpfbcQTPBcZyCEYUu+153+RYuNhrqgX0VjIYQQgghJPzZ8tzr9HC6aGgGjlcwGkIIiSyKFHZdvHgx7rzzTtTV1eGhhx7C2LFjodFoAAB2ux179uzBCy+8gFWrVuHdd99VIsSIo1aroVb79nbQDBmIuGUPQbhQBrGiCnx0VICjCx3rD7jLmGj1WswdGvoDtHLYmu+efR6t12D0QOX7Xbt9PcRmd6mNhFnXgQki6ordA+jGAA2gq9VqpKXJc+LIs3zL4PhEDDMltbt9dXU17Hb3gHsgyrd4Lh7KcSrEp0yS/RihaO2JTWDsYo07jsPcQTOUDShEMasNtryjUls7ali7C0nLmS+ERALKGUL8QzlDIgFz2GE/vEVqa4bkglN37kpoyhlCfOfrOBkJf4q8E5YsWYLPP/8cX375JVauXAmVSgWj0QgAqK2thSAIYIxh/vz5uO2225QIkXSAj40BPygGGNRP6VCCptZiR4FHfe1hg9KhVbc9aBQu7A4RPx52Xyo4YXDPkOi3Z/kWfd+B0PcbjIazVRCs7rrdcf2VH+hvT0lTA7aVuk9O3JCV3eGMZ8/yLXq9HnFxcbLGxBjzGkCPTRgFtUbeY4Qqz/ItY3uNRGpssoLRhC57/jHA7s4zKt9CCCGEEBJYjlM/gTXXS20tlW8hhJCgUqSEC8dxWLVqFe6//35oNBo4HA5UVVWhqqoKDocDGo0GDz74IFauXKlEeBHJ4XDA4XB0vGEE++LncxAFQWpfOzoyyrfsO1mKxmab1M4doXz5FntlKRp+3iG1TTOvBcdxqPM4wQEAcX0DM4DucDhQWlra5Zz5svA4RMYAABw4XJ81qN3t7XY7qqqqpHZqaqrsJUaa6o7D1uyexR8p5VtOVBTgVGWh1J6XTT9K2mLb5y7fokpLBt/BQtJy5QshkYJyhhD/UM6QSOBZvoWPT4Oq99BO74tyhhDfUZ4QF8WuRdBqtXj55Zfx5JNPYvPmzTh9+jQAICMjA9OnT0dSUvtlDIi8HDYHivNOQeVjLWVHeg8wg96nbUVRhO3YAYg1lV0JsV1MZKhttMIhsoAdo6kB6G8ELtQy6FUA9mzEnr3yDl7WigIKBFvHGwZRYUkNjKKzVEqUToND+TYczle2LrT1+EE0JV5cvJbjkNxvKFQnDqPk8GGUJTnfA1pTNFTn3Ytzik3NYA2Nre3Ob6IowtLcDINe71V/vNpah3p7k8/7+XdFGex25+s9MioaJ/dtxcl2j8vDYXd/bJ89dxjnLxxq/yCsCZzY8aLNLirHUaguvgcZp8XhE2XAyW98fn53tfbcDrCLJ8j0Ki2uYL1gP1HY7nPEhkqw+vJ2twk7djvsJ/cAFz8C+KwMOIp+bvcpgiCAq62Fo94I1k6pFyKP/OpiWPz4HukVnYT0qASv+xodzThsPuPXcXNMmTBccin56bpTKG887/M+dCoDhqdc3uL+vPLdsAqWVp7RurSYDPSOzfS6r95Wi2NVB3zeBwAMSRyNaG2M133B6BMTRTQ3N0Ov14O7+B3T3fvUGupT26hPrWurTwdKd6Gu0eyVM+3pDn0Kx9eJ+tSFPokCbKXbgThnqcGcIZNbTKIpLjuAMnN7vyQ8dieKsFmBpKSFLR47UPgdrLaGVp7VuvTEweidPMzrvnpLFY6c3uTzPgBgWOYsROvjve7zp08AoNPGYmTWnBb3U5+oT+3pqE+iKGLCkBv92icJT4oX80lOTsaiRYuUDiPiqevqoX/vU5+3Xzn/BlxITfdp2+kf/h4pu7/rbGg+C3Ql9nEX/xPBoV4TC2yohZzD9YVGEx6YfhVsoTbApAJgcjc/PFWrWCgSlQqYOFO6zQ7uBAAwOMAmOgdwOJUDnGuRUSb9T0B15QhjtTGobvDl7LZzYOxc43m8e/LDdrfMiuFxd38deHTuhMeOylp8ee7ZTj23O5vUnAj2zpdo73QL484Dqrx2tghjHh9R9kOHYD/SwfuLARomopnj0cm3IvHDMnU9znOiz9vfIehws+h9QryAE3C/2vcfMACwwh6D3vD+/trfy4HkNN+/08osIvp9/2WL+8/liDDqfH/z7D/mQMIFjdd9RVECbEP8u/DyzI9fo49VmT6pANg9XoJw6NOlqE9toz61rq0+XbjYJ7uPH1vdoU/h+DpRn7rYpwGAq4CAuU9fJLbY9/swWXz/29Qs6ICclgPoZ479A3G87yfi91dejt7Jf/W671zlEViK3/R5HwBQFt8PWWmjvPftZ59KREOrA7PUJ+pTe3zqEw2gEyhUwqW72LRpE+68804MHDgQer0eUVFRGDJkCJYuXYqKioo2n/fhhx9i/PjxiImJgclkwuzZs7F58+ZWt7Xb7XjssceQlpYGvV6PK664Anv27Gl1W0EQMHr0aMybN0+W/gWDseoskoMweB74oVE3HgxGm/yDyJ9mDw+9wfPuQO3xR6jnFQi85x+zoT14ruM4jNbHdLyhh3zz4Q63mZ2m6fTgOQDsNQsdbxSGZlrbPznIwACV77MswpZKdUmeEUIIIYSQQONpnR5CCAk6GkBvw2uvvYYZM2Zg7969eOONN1BRUYGTJ09iyZIleOWVV5CTk4MTJ060eN5DDz2EW2+9FXPmzMG5c+dw6NAhJCUlYcaMGXj33XdbbP+HP/wBr732Gt5//32cO3cOqampmDVrFiorW5Y7eemll3D8+HG8/vrrAelzIAz+aVX4TThk8g/GNqo12JGeIft+w55KDaa6OIDOvF8arpsM7Gk5DjcZk6H3sXwSABTVF2N/Vftn+eM1HPrHdO6EDAOws8qB042+z2INBxyAWc3pGGPvoIQYZwbg++W6YYnjwGk1HW/n2jz8vgkU5QDDX1RN2MTZYA3qKWRCCCGEKEq29Y84r1KUhBBC2scxFoDRwDDw/PPP48knn8SpU6fQu7f3oon/7//9Pzz77LOYM2cOvvvOPbv6u+++w7x583D99dfj888/l+632+0YOnQozp49i2PHjiEjwzlQarFYkJCQgFtuuQX//ve/AQBnz55Fnz59sGzZMjz99NPSPoqKijBs2DAsX74cDz30kKx9HTp0KERRxN6f9vr+JJ0WXAezpUVRxLFbp4GVngUA8NmXIevP/l1O05Fmh4Cn3/8RDodzpuyUnN6YPTpT1mN4UnOAKgADs1+eL8ITh3ZL7U/GzUBWdJzsx+ksDc9Bow6x2fEqNVQGd+Ge6kNnsfdPX0jtyf+8HVGp8WjeuhO27Rff2yoVYn57C6DXyRrK8m2vYM/5AwCAHjGpeG7WH3z+29agVkHL+/5vy3GAyocrFWrK1sJcusr5HHDomb0MvMq3We4crwbPy/tv1B1oeA0Mmo7XdrCsexX2/PUAAE4fi+g73vCp5mpY0ekir88hZMfZfXjwuz8DAKK1UfjPNc+ir8n5t0q9tdF5lYSPdCotdJfULneIAprs/p0kilLroVZ5Vwa02BrQbPd97QkVr0ac4dKL0oHapkqIzPcrYvSaaBguqXdrF2xoaDb7vA8AiNWboFZ5/9tQn6hP7aE+tY361DrqU9uoTy1xWgM4XoVYQ0LLPlnr/esTp0ZcdMtJIzWN5WDM90k0ek00DLpYr/vsDqv/rxP1qVXUp7YFs0+mmDS/9knCk+I10ENVWloabrrpphaD5wBw9dVX49lnn8WGDRsgCII0mPXcc88BAP7nf/7Ha3uNRoM77rgDv//97/Hqq6/ihRdeAACcOnUKzc3NGDFihLRt7969YTKZcOiQ98KAv/3tbzFkyBDcf//9svbTheM4GGIMsp6Frty/Byg9K807TPjFAphSUmTbPwBsOnAG1XYNAOdMyGkThiE9Rd6B55XbT8Jqd2Dq8N5ISfSvzIav1uTtlAajchKSMXNwTkCOE87qztcjxu58t6kNGvTp2xMAUL//GESb8w9bzfABiO7Vs8vHEkURVqsVOp0OtdY67LmwG8LFP57nD81F/17KXk3AGEPpqX3gOed7KjZhJJLT6D0lB2a3wnFyhzT7R5MzA+ok+oOqPZ75QjOd5LGm8Edp8bBoXTQy0waBv3gizmiIbe+pPtEC0CLer+dUnl8Dc/l2mFKnIj55ItSaWEQbYhHd5WgAkwx90gHQxbQc/PBXMPrka850pz75ivrUNupT24y66C5/z4Ran8LxdaI+tU6uPhl0sS0GE9vi+p4RRbFFzsRHd/33ukatk2XA0Z8+tYf61DrqU9s8+ySKkXVVNmkb/ZJtwy233IIVK1a0+pjRaATgHHR2TeCvq6vD1q1bwXEcJkyY0OI5kydPBgCsXr1aus+ViJeuoM3zPBwO92KCH374ITZu3Ii33nrLp5mnnSEIguwfDKXfuhclZVo9ev3iOln3DwDb8s5Kt/umGpEh8+C5QxDxzU8F+HL7Cdz/r434fNtxWfcPAGcb6vBj2TmpvSgrW/ZjRIK6wjLpdlzfVHA8D6HoLESzu169dvRwWY4liiJqa2shiiLWn9gCQXTPPJmXPVOWY3SFpaEQ1qbzUtuUMlXBaMKL/cROMKt7NoI2R/nXO9R55gvpugZrI7YW/Ci15w6aCZUfV7EESnXZVjTVncD5k/9G8ZHnlQ6nW6OcIcQ/lDOE+IdyhhDfUZ4QFxpA74Rjx44BcA6Kq9XOSfz5+fkQRRHJycmIiWk5SzkrKwsAUFBQgMZG5+BLv379oFarcfiwezHAsrIyVFdXIzvbOYhaVVWFhx56CA8//DAuu+yygPZLToLNCsuODVJbO2YKNNHyzt4ur2nCodPuWvFTR7S8WqCrDhZWoK7JKrWzeyfIfowvi9yD8iqOx4K+A2U/RiTwGkDvlwoAsO111wnnog1QZ/eT/bjfHl0v3R6ZnoP0OOVnI5vLtki3eZUexqTLlQsmzNjyvpdu8wm9oOpJJ7xIcG0q+AE2wSa1Q+GkXXPjOVjqC6S2KWWygtEQQgghhBBCiLyohEsnvP/+++A4Dn/84x+l+0pLSwEACQmtD7CaTCYAztIKZWVlyMrKQkxMDO6880589NFHuOOOOzB8+HA8+eST0Ol0uPvuuwEADz/8MGJjY7Fs2bIuxz106NBW7y8oKEBGRgYEwbt+m0qlAsdxEAQBnqXyOY6DSqUCY6zFc3ieB8/zuLBlLbjGOun+xF8skG57zq73fI4oii3O7rUXw/ZDzlnbjDnrko/PToPD4ej0/lrr0+YDp50rKnJAYpwBg3rGe8XvOoHS2T6JoohPC45Kj01L74NkfZRs/0YdvU6t7a+rfZIjBn/3JzoE1BVXXGwxxGQkwW6xwHbwCFwvoPayYRCcHetyDIAzlwsqi3Ck3L2Y8LxBzoEsJV8nDiLM5T9e/JdgiEscB5GpIDocir9One1TqLz3uOZ6OAr2wFVeWj1sBgRB6NZ9Csbr5HnccOlTIGLwdX9fH1knVTjPTu6PfomZivfJXL4VgPMzh+M0iDFdDkcAPnO60+vUlT55XhUYLn0KdgzUp8jqkyAIXtuFQ59cwul1oj6FTp9cOdPed01365Mv+6M+UZ86sz9BEKSYSGQL6XdBY2MjXnjhBa+BaqWtXbsWq1evxiOPPILc3Fzp/qamJgCAVqtt9Xk6na7FtoCzbnpNTQ0mTJgAnueRlpaGzz77DH369MGGDRvw/vvvY926dYiKikJ+fj6eeOIJ7N+/H/Hx8bjtttuwdOnSFiVgOoMxhsrKSq8SMUlJSVCr1aiqqvL6QNFqtUhISIDdbkd1dbXXfoxGIwwGAyrWfO5ewsyYCH6Au/5yZWWl13MMBgOMRiOsVitqa2u9HktISIBWq0VtbS1sNveMO47jsDXvHBgDGBMxKN0Eh6UelZZ6REdHIzY2Fo2NjdJs/870qcnqwO5jJa7xc1w+IBnV1VVe+0tLS+tSn/ZVlOBEjfN4HJzlWwRBaLE/ufrk4nqd6uvrYbF4LxTX1T55vk48zyMlJSXgfWo6Ww3R5gAullUSE7Qw79oHtaX5YhwcNKNzZOtTQkICRFHEyvxvwC7Gp+bVGNdjFAAo+jox23EI9jowxpx/PGiHS9so/Tp1tk+h8t6LPrkFTBSlxW3q0kcClZXduk/BeJ08f6CFS58AZV6no2eP4+dzB6XHZvefBgCK9ikqygBz2TbpM0cXOxTmGgsAS8S+Tl3tkyAIaG52fn+FS5+A8HudqE+h0ydBEFBXV4fU1NSw6ZNLOL1O1KfQ6ZMrZ+Li4qDVasOiTy7h9DpRn0KjT3a7HT17dn0dNdL9cczz9EyIKSsrQ3p6eoszRUo5efIkJk+ejCuuuAKffvqp12Dzl19+ieuvvx7Z2dk4evRoi+daLBZERUUBcM74dpV08Xy8oaEBycnJUnvYsGGYOHEiPvjgA1RVVWHAgAEYNWoUnn/+eezfvx+/+c1v8Mc//hFPPfVUl/o1dOhQMMZw8OBBr8H4zp7Fs9fVIG/B5eAE5xlDw5U3Y9BDf5L1TGJBSS2eXLEdgHMG+gPXXoaJQ9I7vb/W+rTpwBm8uSbfuQgqB7zwP7nomei93ExX+/TEnm34z4l8AECsRosjN/waOpWKzvj6ub/zmw7jwN//C4ADxwGzVz4C+/99BeG4s6QAn5KE2Mfuli0GnufRbG3G9R/fgbIG58z3Gf2uwP/O/YPir9PZ4y+jrnKXcxttIgaO+Qe4i4uJKv06dbZPofLea/rP7yCUngQYoOqTA8Mtz3X7PgXjdWKMQRRFaLVaiKIYFn0KRAy+7O+d3R/ijZ/ec27P8fj29k+QFJOgaJ+a6o6gKP8ZAM4Z6BmDH0NswuiA/Bt1l9epq31y7UOn00n50937FOwYqE+R1SfGGBwOB/R6PTiOC4s+uYTT60R9Cp0+uXJGq9VCpVKFRZ982R/1ifrUmf2JogiNRgNCFJuBXlpaihUrVuDnn3+G2WxudZDc88yR0k6fPo1Zs2Zh8uTJ+Pjjj70GzwH3WbJLz6y5mM1mAM4Eds2O8GQwGGAwGKT2smXLUFtbi5deegkA8M9//hNmsxlvvfUWsrKyMHLkSGzcuBF/+9vf8Oijj0Kv13epfxzHtfmhcGlfPZ/T2qUs59Z8IQ2eA0D6Vb/02q6ty19cH2C+xLD98AXpdpReg/GDe0Kt9t7Gn/25ePbph0MX4Dqf0K9HPDJSja0+B+hcnwQAq06fktpXZfSH/uJ+5Pg3cmnrdepof6EQg6/7azxdAeccfiCqhwlaiGg+WSTdpx09XPYYDlceR3lDBVynnK4c8gtpH0q9ToKjEfXVe6V2QtoUaDQtr4pR6nXydX+hEMOl+xPKi52D5wDAAdoRs1vst7v1qav7C4UYIqlPAPDd8Y3SZ86EjLFIiknocH+B7lNN+Tb3sTRGxCeNBsd7bxNJr5NcfXL9TeY6aRuMGOh16nh/oRAD9an1/Xn+jgmXPnkKhRioTx3vLxRi8HV/njkTLn3ydX+hEAP1qeP9hUIMKpWq3b/NSWRRZAD9wIEDmD59Ompra73ODrWG47h2Hw+GU6dOYcaMGZgyZQpWrFjRagLl5OSA53lUVFSgsbER0dHeM5ULCwsBOBcOvfSxSx04cAAvvvgi3nnnHSQlJQEA8vLyYDKZvGaujx07Fh999BEKCgrarG/uK1dtJzk+HGo2rJJuc336w5Sd0/bGnWB3iFL9cwCYMDgdWo28H2rlNU04etZdrmXqcPkXKN104TSqre7LlW7MosUIO6u2sFy6beyXCvv+w4Do/mzRjpb3PSgIAr7c/7VU3ifeYMT4PmNkPUZn1FTsABPdJ69MKVMVjCa82PLdiyJDpYV28BXKBdPNCIKA2tpaGI1G+gO0Cw6XHceZGvd33/zBsxSMxkkUrKi9eMULAJhSJrUYPCf+o5whxD+UM4T4h3KGEN/JNU5Guj9FfuU8/vjjqKurw9VXX40JEyYgISGh1dnPNTU1ePjhhxWI0O3IkSOYOXMm5s+fjzfffNPrzNTzzz+PG2+8Eb1790ZcXBymTp2KzZs3Y+fOnZg5c6bXfn780bmo39VXX93u8QRBwF133YXc3Fzcdttt0v2iKLZIWtcZNDlK3Ej1kruorvgUWMERqR03vf3+dsaBgnLUW9xXJ+QGYHB7a95Z6baK5zFpqPw1rzwXD+0dHYfxqVRXq7PqCsqk23FZqbDtddcIVvfPAG9q++qBzrDYLNh2eqfU/sWg6dColB80MpdtlW4bYvtBH91LwWjCBxMF2D0G0DXZk8DpYxSMqHthjMFms8nyHRPJ1hz7Xrodo4vGlL4TFIzGqbZyN0ShWWqbUnOVCyaMUM4Q4h/KGUL8QzlDiO8oT4iLIiM+u3btwp///Gf8/ve/b3e7srIyPPTQQ0GKqqWDBw9i1qxZuPHGG/Hqq6+2mA2/dOlSjBkzBr17OwdwH3vsMWzevBlvvfWW1wC63W7Hu+++C71ej/vvv7/dY7766qs4fPgw8vPzve4fMmQI/vvf/6K0tFQqF5Ofnw+tVov+/fvL0V1ZnP/6/6TbjFeh55WLZD/GFo/B7WRjFLJ7J8i6f8aY1wD6yH4pMEbr2nmG/2qszVh/rlhqX581CHwIXG3RHVlrGtFc3SC1Y+J1EA64B9S1o4fLfsytRTvQ7GgGd/GE2vxs5WeCWi1laKw9JrUTUmn2uVwcxQch1rsXndHmzGxna0LkxxjDzjN7pPaM/lOgU8v7vdQZ5rIt0m1dVE8YYrLa3pgQQgghhBBCuilFBtBFUcTChQs73C45ORlFRUVBiKilvXv3Yvbs2bBaraioqMBNN93U4XPmzJmDBx54AK+88gqeeeYZPPDAA2hsbMRjjz2GEydO4O2330ZGRkabzz99+jT+8Ic/4Omnn0a/fv28Hrv33nvxyiuv4MEHH8Rrr72GvLw8fPTRR7j//vulxUmVJooiGrd8K7XVw8YgKjlN1mM0WGzYd7JUak/J6QWel3fg+cR5M0rN7lWYA1G+5b+nT8Imuq8cWETlWzrNc/Y5ABjqKtwNjRqa4YNlP+aa4xul230TMpCdPED2Y/jL7FGHGJwK8cmTlQsmzNjz3TN/uah4qLNGKxgNiUQcx+GTX72N7cW7sObY97hy8C+UDgl2qxn1NXlS25Q6NSTK7hFCCCGEEEKI3BQZQL/sssvQ1NTk07ZK/Rj78MMPpYU/P/30U5+f9/LLL2P06NH45z//iWeffRZqtRqXX345NmzYgOnTp7f73Lvvvhv9+/fHI4880uKx9PR0rFu3Do8++ijS09MRHx+P3/zmN/jLX/7iX8fawHFcl/+tK/ZsByrdg9sJsxd0NawWdhy5AIfgXiE5EIPbh4vdM02jdBqMGdhy0deu+rTAPVN4dFIa+htNsh8jUtQWugfQNdE68CdPuNs52eD08s7SrGyswp5zP0vtedmzFB80Yox5zQSNS7gMam2ccgGFEWZrhv3oD1JbmzMDXAiU6+lOXIsgKp0n3Z1OrcWM/lMwo/8UpUMBAFgtJdBoTbBbqwFwMKWERlzhgHKGEP9QzhDiH8oZQnxHeUJcFBkFeOKJJ/C///u/+OSTT9p9M1ZUVKBv376y1Pj218svv4yXX365U8+99dZbceutt/r9vDVr1rT7+KRJk7Bz5852t+ksOVYXLv/uC+k200eh5yz56597lm8Z0NOE9ET56xAvmDwQlw/qga3556DiOWjV8i4YUVxfiz0VJVL7hqxBsu4/0tR5DKDHpMQA9e7FX+VePBQA1h7fBMaYcz0EjsPcQTNkP4a/mupOwGZx/zuYqHyLbOzHtoPZ3TWetcOVL9fT3ahUKqSkpCgdBpFZTPwQDB73OhpqDqGpvgBafZLSIYUNyhlC/EM5Q4h/KGcI8R0tIEpcFBlAj4qKQmJiIgYPHozbb78d/fv3R1JSUovB9Kqqqjb2QAKBMdbps2sOazOad22E69m6cdOg1hvkCw5AaXUjTpyrltpTc+Sffe7SKzkWN0+Xv/QHAHzmMftcw6twXebAgBwnUniWcIlRO6TbXGw01AP6yn68b499D9cyIpf3GonU2GTZj+Evc7l78VCVOhpxiVRiRC42j/ItquS+4FP7tbM1aQ1jTFq9nmZwhBeOUyHWNAKxphFKhxJWKGcI8Q/lDCH+oZwhxHddGScj4UWRAfTc3FxwHAfGGJ544gklQiCXcDgcEAQBanXn3hIXvl8NzuKuG546X/7FQ7fmu2efq3geE4f2lP0YgcYYw2eF7gH0WT0zkSDziYZIItodqD/jKrnDoG8yA1HOhT21o3LAyXy2+ERFAU5VFjqPJoqYM6D9skzBIIp21JT/KLXjkyeC57UKRhQ+xLpKOArd5Xo0w2fSH0+dIAgCKisrkZSU1OnvmEhWY6lFvMGodBgkiChnCPEP5Qwh/qGcIcR3XRknI+FFsXfB+PHjodW2P8hjs9mwa9euIEVEuqLq+1XuRmIqksdeIev+GWPY6lG+ZfSAVMRFdb9Bwj0VJTjdUCu1qXxL1zScrYLouFgT3yEgRuce3NSOGS778dYc2yDd1ql1yO2n/EKddVX7IDjcJ6+ofIt8bIc2AtL1Bhy0w5Qv10Miy9ma81j4we0Y13sU5mbPxIz+V0CnlnddB0IIIYQQQggh7VNsAP2rr77qsO5WaWkp0tPTgxQR6SxLZTkc+T9J5Vuip8x11oeW0bGz1SivcS88G4jFQ6vrm2GM1kHFB26GqefiofFaPWb3kr/ESCSp9SjfAocD0VHOgSVVjxSo0uVd/NUhOrD2+EapPbHXWERplL96wFzmLt+i1acgKo5OysiBMQZ7nrt8izprFPg4qvFMgmvNse/BmIhdZ/Zi7/kDmJgxVvEB9OamcwAD9NG9FI2DEEIIIYQQQoJFkQH0GTNmQKfr+AdgVFQUFi9eHISISFec++ZTcB4LvaZf/SvZj7E175x0O8agxaj+8g6OAsBzn+9GVV0zpuT0woyRfdBD5gVKrYIDq4pPSu3rMgdASwtSdIm0gCgTYdAyqFTOkx+aAMw+3312P6qa3DX4p2cqP/vcYa9DXbW7xIgpNZdKjMhELCuAUFEstbU5tHgoCS7GGL71uOplcub4kCjlUnb6C9SUb4chth+S0uciIS1X6ZAIIYQQQgghJKAUGUD//vvvO94IQFxcHN59990AR0MAgOf5Ts8ar9v8jXSb65sNY5a8i2LaHAJ2HDkvtScN6QmNWt4Z7ucrG3DyvBkAsGrHSaTER8k+gL7+XDHq7FapfUNWtqz7j0TSDHSHgOjYi+8JjoN21DDZj7XmmPtzKzk6ERP7Xi77lRb+qin/EWDuk1em1CkKRhNebB6zzzmNHpps5U+YdFc8zyM6OlrxfOluDpYcRkldqdSelz1TwWicBIcFtZW7AQCW+gI0N55ROKLwRDlDiH8oZwjxD+UMIb6jPCEuilfCF0URP//8M06fPg0AyMjIwKhRo+hNGmSdHUCvOXEYrPi41DbOuEbOsAAAe0+Uoclql9pThst/2fg2jwVK1SoeE4fIXzro04Kj0u2+sfEYk5wm+zEijWsGOnM4EBPt/DhTD+wLPi5W1uM0WBuxucC9UOfcQTMQb4yX9Rid4Vm+JSpuEHQGek/JgQkO2PLd5Xo0g68Ap9UrGFH3xvM8YmPlzclI8O3R9dLtOH0cJmWOUzAap9rKXWCiTWqb0mjNhUCgnCHEP5QzhPiHcoYQ39HYJHFR9J3w2muvIT09HePGjcOiRYuwaNEijBs3Dunp6XjttdeUDC3iiKIIURT9ft6Frz+RbjO1Gr3m3yBnWACAbR6Lh/ZIiMHAniZZ9y+KDNvy3SViRg9IQ4xB3gVKq5ot2Hj+tNS+sV82ldrooubqBlhrmgBRBEQRMVHOf89ALB66qeAH2BzuqwfmDJqB+vr6TuWMXJqbzqOp/pTUTkjNVSyWcOMo3AfWVCO1NVS+pUtEUVQ8X7obq8OGDafcJ8hmD8yFVqVRMCInz5N2+phMGKIzFIwmfFHOEOIfyhlC/EM5Q4jvKE+Ii2ID6HfffTfuv/9+lJeXgzHm9V95eTnuv/9+3HPPPUqFF3E6M4AuCgKatq+V2pqccdAnyLvIXm2jFfsLyqX2lJxesg88Hz1bhYpa9wKluQFYoPSr4hNwMPe/L5Vv6Tqp/rnDAQCIjubB6TTQDJP/33aNRx3iAcn9kGXKQGNjo6Jfpp4DWRyvhjF5gmKxhBtbvvv15mOToM4coWA03Z8oiornS3fzQ9FONFgbpfa8bOVP4tiaK9BQc0hqJ6TS7PNAoZwhxD+UM4T4h3KGEN9RnhAXRQbQV69ejTfffBOjR4/GBx98gBMnTqC2tha1tbU4ceIE3n//fYwaNQpvvvkmvv76ayVCJD4o37UFqK6Q2olzFsp+jB8Pn4fg8YE1NQCD254LlMYatBjZL0X2Y3iWbxmfko4+MXGyHyPS1J4qBcDAHA6o1Rx0Wg6anMHgtPLO0rxQV4p95w5I7StDYCCLMRHmsm1SOy5hDNQaeWv2RyrW3AD7MXe5Hk3OTHA8LfZLgutbjzUX+sT3wrBU5U+6mst/cDc4DvEptC4AIYQQQgghJDIoUgP99ddfx5VXXomvvvoKKpX3wERsbCz69++Pm266Cddccw3+9a9/4aqrrlIiTNKB8jWfS7dZdCx6TJsn+zG2epRvGdwnESnxUbLu32YXsNNjgdLJw3rJvkDpiZpqHKhyz6K/sd9gWfcfqeoKywFBBBhDTJQKHMdBO1b+mcLrjm+SbvO8CrMHTpf9GP5qrD0Cu7VSalMdYvnYjv4ACO4az9oc5RduJJGluqkGO07vkdrzsmcqXvKLMeZ11UusaSQ0WnnLqRFCCCGEEEJIqFJkAH3v3r34+uuvWwyee1KpVHjyySdx9dVXBzEy4it7UyOse7bA9ZPeMGEm1Dp5F9k7W1GPgpIaqR2I2ee7j5fCYnNI7Sk58i9Q+nnhMem2llfhqoz+sh8jEtUVlgF252sXE82Dj4+DKquPrMdgjOFbj/It43qPQlJ0AhwORzvPCjzPgSyVJhZxpssUjCa82PPcM39VaQOgSslULhgSkdaf2AxRFKT23GzlT+JYGgpgbXKfbDalTlEwGkIIIYQQQggJLkVKuNTX16Nnz54dbterVy/U19cHISKiVqvbPaFxqfPrV4GzNkvtlHmBXTxUreIxYXC67MfYmu8+RnpiDPqnx8u6f5ExfF50XGrP7Z0Fo1Yn6zEikWh3oP5MBZjgHGSKjuahGZ0DTuYVso+UH8dp8xmpPX/wbADOE3xJSUl+5YxcRMGKmopdUtuUMhkcr8i50LAj1pTCcSZPamuHK1+uJxwomS/dkWf5llE9hyM9Lk3BaJw8T9rxKgOMiZcrGE34o5whxD+UM4T4h3KGEN9RnhAXRQbQU1JScOjQoQ63O3jwIFJS5K9HTVrnzyXi5u+/cjdSeiLpsvGyxiKKDNvy3bXJxw7sgWi9vLWtzQ3NOOixQGnu8N6yXya/o+w8zje6TwIt6qd8HdtwUH+6EszmAMAAADFRHLSjc2Q/jufioVHaKORmTQTgzBW1Wq1IWYXaqj0QBYvUNqVQ+Ra52PI3uhucCpphypfrCQdK5kt3YxccGJaWjTi9c52MUFg8lIkOmMu3S+345PHgVXQiOJAoZwjxD+UMIf6hnCHEd5QnxEWRAfQpU6bgkUceQWlpaZvblJSU4LHHHkNubm7wAotggiBAEISONwTQVHoejiM/S+2Y3PngZZ75e/h0Jarq3YOEuSPkL9+y/dB5iIxJ7cnD5C/f4rl4aKLOgGnp8pYYiVS1BWVgF8u3cOAQN7AnVKnJsh7DJtix7oS7/vmM/lOgUzsHjQRBQHl5uc85IyfPmaC6qJ4wxPYLegzhiDEGm0f5FnW/MeCj45ULKIwomS/djUalxuO59+O7Oz/F3+cvw/T+VygdEurM+yHY3SeCTal00i7QKGcI8Q/lDCH+oZwhxHeUJ8RFkev+ly5dirFjx2LQoEG48cYbMWHCBGmmeVlZGXbt2oVPP/0Uzc3N+PTTT5UIMeIwxsA8BpPbc+6bT8GJotTuedUvZY9na5579nlclA4jsuQdHAWAZKMBA3sl4MS5agzNSJJ9gVKLw46vT5+S2gv7DoKGp8t/5FB76DRwsUZwlIGDfpz8i4fuPL0HtZY6qT3fYyYoYwyiKPqcM3Kx28yoNx+Q2qbUqXRGXCbC+WMQq92fO1S+RT5K5Ut3plVpMK3fZKXDAAAYojOQ0mchzOXbAMYQbRyidEhhj3KGEP9QzhDiH8oZQnxHeUJcFBlAHzFiBN544w389re/xTvvvIN33nnH63HGGNRqNd5++23k5MhfloG0ZK6rxd/eec2nwTjVgR3ge/cFAIgpvbG2qBQoavtqAr8xYPvpI4hOrAEAJPaIx8f5q+XbP5zvseZSC3oYrIjrw8Eh1OAfn5yQ9RgnHTbUWRqk9uWnT+P4+c/afU69tRGVjdWyxtEdMJsNzGJxVWTpUPMPzRB458YNKY34UbsL3P59ssb009l9GBnrvG0yGNFXUwtz+Q8AAEEQYamrQw2Lg0oVvAt5GmuOAB5f4KYU5WenBgNz2OE4fRDM44SG3OxH3DP7OV00NAMnBOxYpHs6WVmIwqriVh/rm5CBgcneV4M02pqwvWhXq9u3ZULGWMTpY33e3tZciaa642Bwn9TmVXoYE8e22Lau+mcIjkaf962P6g1DTCa0+hT06HsT0jJvhN1aBY5T5OJFQgghhBBCCFGMYivP3XHHHRg+fDiWL1+OjRs3orHR+aMuOjoas2bNwpNPPonRo0crFV7EqYKIF6xm3zbOHibddKh1sB3dIWssKk6ENsomtTdVl4KrlnGAHoBo58BslwwCBHC92vQ6AY4P83C4nW0YfL8KgADcxcn8uoFV4KuPtr9xJ4zXAuN7OG/r1VacPfaq9BgDAxMZaks5cFBmBnhM/DBo9fJfmRGKmlb/HfbDm4N2PM3gKeA0VOOZuG04uRW//+7PbT6+ZMxNLQbQq5qq8dS6v/p1nA9vesPnAfTmpvM4sW8pmGjzul9rSGt1AL2k8CM0N572OZaUPtfBEJMptTmOj5jPHEIIIYQQQgjxpNgAOgCMGTMGq1atgiiKqKqqAgAkJibKXk+bBI6dk/8tpOYd0m3u4n9yYgCYPbjvsYlnrAoNs4Y/TXpTwI+hVV+6gC0HcAzyvzt9Fyl1iIXqC0EdPAcA7YjZQT1euOM4DlqttluXG/rP3o+VDqGFyvNrWgyek/AQDjlDSDBRzhDiH8oZQnxHeUJcFB1Ad+F5HsnJLWc12e127Ny5E1OmTFEgqsjCAeD9mf3McbCrdQA45ziiXHFwDBpO8Gi7opMPEwCPq90DimMMQyrsmFlo6XDJXsaYkuOx3Q7HM2iHVYPPaIQYoH84DoBBY4CK17S4X6kyBhzHw5g0DqaUyPhctOdv8L6DC9w6ApxaA+2oK6HqPazjjYnPVCoVEhISlA6j005WFuJkRYHU5ji+xR/Sbf1hzQdo3QtRtKOm4kfPCFxfmG1+NnEcD/j1uUVfSErp7jlDSLBRzhDiH8oZQnynUtE6dsSJYyFcM6KsrAzp6em06m2ADR06FIwxHD58WPGza+Vn/4uSwg8utjgMHv86tLokWY/x1p9Wwn6gCOn1TYhKiMasjx8Ar1b2Q/GLvNV4dou7RMiXt61An/heCkYUHLa9eWj6v/9K7diH74KqZ5qCEfmGMQa73Q6NRqN4zoQzxhjqX1sM0XwBAKAZOBHRNz6jcFTEX909X17Z/iY+/PlzAIBWrcP6X3+OaK28i077q7byJxQffk5q9x/5Z0QbBysYEZFTd88ZQoKNcoYQ/1DOEOI7xhjlCQEQxBno1dXV0lnObdu2+fQcV1kXEniCIEAQBKjVyl6UYC5zL+QXEz9M9sHzhtomfFfbDEdWOqIcAq7PMCk+eA4Aa467Z9kOSxsSEYPnAGDbly/dVqUlg09PVTAa3wmCgOrqaiQlJSmeM+FMOHdEGjwHAM3wWQpGQzqrO+eLIAr47vhGqT2932TFB88B7+9KrT4FUXHZCkZD5Nadc4YQJVDOEOIfyhlCfBcK42QkNATlXXDVVVdhzZo1uO+++/Dyyy8jNzeXzuCQFiwNxWhuPCO1A1Hjed3qn+G4+N5rUquQfYXyM/bO1JxDfskRqT0/e6aC0QSPWFsHx8lCqa0ZM5w+F4gXW9730m1OHwPNgPEKRkMi0e6z+1HVWC2152UrfxLHYa9DXdU+qW1KnUKfnYQQQgghhBASQEEZQD9y5AgYYzhx4oR03/jx46HVatt9ns1mw65duwIdHgkR5rIt0m2O18KYPE72Y2w7dE66nQyGYWP6yn4Mf6055p59rlapMWtgrnLBBJFtX75zRVcA4DhoR+UoGg8JLcxhg/3IFqmtGToNXIvFXAkJrOToRFw1ZA42ntoGg0aPy3tfpnRIqCnfAcbcpe0iZUFhQgghhBBCCFFKUAbQf/zxR2zfvh2zZrlnbn311VdISUlp93mlpaXo2bNnoMMjIYCJAszl26V2fPJ4qFQGWY9xrqgcRQ53yf+JWcmKz9oTmYg1x9yzbCdnjodRH6dgRMHBGIPdo3yLekBf8MZYBSMiocZ+8iew5gaprc2JjCszSGjpn9QXf5z5KB6b+jucrjkHVYAWBfWHudxdviUqbiB0hh4KRkMIIYQQQggh4Y8PxkHS0tJw/fXXw2g0AgCmTp3a4exzANDpdJgyZUqgwyNwrizM80F5O7SqviYPDluN1DalyD+jbs03+90TngHMv1L5mYQHLxxGSV2Z1J4XKeVbLpRBKK2Q2tox3Wv2Oc/zMBqNiuZMuLPnrZdu86Z0qHoNUTAa0hXhkC96jR6DkvsrHQYAoNeA3yC511VQa+Np9nmYCoecISSYKGcI8Q/lDCG+ozwhLopUwt+8eXOH2zQ3N8NkMvm0Lek6juMU/WDwXBBNrTUhxjRM1v2LooidxVVwDp0DWRoOPTLkXaC0Mzxnn8fp4zApU/6yNaHItjdPus1pNdDkdK8F8Hieh8Eg7xUSxE1sqoX91G6prR0+S/GrRUjnUb7IyxCTCUNMJnr0vQUMotLhkACgnCHEP5QzhPiHcoYQ39EAOnFR5J1wxx13oL6+vs3Hy8rKEBUVhcmTJ6OoqCiIkUUuURQhisr8EBccTaitdA+WORdEk/cy+fw9haiEewBuak5vWfffGVaHFRtOuU8czB6YC60q/Gs8M0GA7Wd3+RbN8MHgfLgiJZSIooja2lrFcibc2Q9tBkR3jWcNlW/p1ihfAoPjVeD58P/OiESUM4T4h3KGEP9QzhDiO8oT4qLIAPp7770Hi8XS5uNGoxEvvPAC6uvr8dBDDwUxssil5AB6beUuMNEmtU2p8pftWbvhsHRbwxhmXaV8+ZZtRTvRYG2U2vOyZ7WzdfhwnCgEa2iS2prR3at8C+DMF4vFQl+mAWLLd1+Zoe49DCoT1XjuzrpjvnxzdD0+3v8FKhurlQ6FRKDumDOEKIlyhhD/UM4Q4jvKE+KiyAA6Y6zdx/V6PR566CF8+OGH2LFjR5CiIkoxl22Tbhti+sIQnSHr/m1WO/ZVuQeqc2J1iImLkvUYnbHm2Abpdu/4nhiW2r3KmHSWba979jlvjIW6f6ZywZCQI1SegXDhuNSm2eck2BhjeG/fJ3jphzcw/92b8OauFUqHRAghhBBCCCFEQYoV8/Glnq3ZbG631Avp/mzN5WioOSS1AzH7fNu6fFg83m8zJw2Q/Rj+qm6qwY7Te6T2/OzIqPHMLM2wHzomtTWjc8BRTTHiwZbnnn0OlQaaIbRIIgmuo+UnUFx9BgAgigIyTX0UjggQBRuO730EpcWfwNpUonQ4hBBCCCGEEBJRgrKI6HvvvYf33nvP677rrrsO2nbqHjc2NuLQoUPIzo6MWbmRyly+3d3geMSnTJb9GJt3F0i3YxnDxOlDZT+Gv9ad2ATRo8bz3OzImGVryzsKONz91nbD8i0kcJgowp6/UWprBk4Ab4hVMCISib71WNw5ShuFqVkTFYzGqa5qD5obT6O58TTKTn+BgWNekP1qLUIIIYQQQgghrQvKAHpxcTG2bNnidZ8vpVl0Oh2eeeaZAEVFPKnVaqjVQXk7SBhjMJe5F9GMNY2ARmuS9Rj2hmZctr8AxmgDTibEYWhWMlRqeRco7QzP8i2X9cxBelyagtEEj31fnnRb1TMNqrQUBaPpPLVajbS0yHjNgkk4kwexrlxqa4dHxroA4a475YtdcGDdiU1Se3r/K6DX6BWMyKm6bIt0WxeVDn2U8rPiSeB0p5whJBRQzhDiH8oZQnwX7HEyErqC8k649tprkZmZCcA5aHrnnXfipZdegtFobHV7nucRHx+PCRMmICkpKRghEgVY6gtgbTovtU2p8pdquLDtKDRWOwZZ7RhUXYfcx+fLfgx/FVQV41j5Cak9P3u2gtEEj1hdA0fBGamtHTNcwWhIKPIs38IZ4qDuN1bBaEgk2nl6D2otdVJ7fggs7my31aDefFBqm1JzI6LkFyGEEEIIIYSEiqAMoI8YMQIjRoyQ2nfccQd++ctfIiWle84+DUcOhwMOhyOoZ9fM5e7Z57zaAGPi5bIf4+z37kGH+IE9YOyr/HvOc/a5VqXF9P5XKBhN8Nj2uRcPBc9BM2qYcsF0kcPhQGVlJZKSkuiMtEyYvRn2I+4FhbXDZoBT0b9tOOhO+bLGo3xLWmwKRvVU/kRfTfl2gIlS25QSGd8Zkaw75QwhoYByhhD/UM4Q4rtgj5OR0KXI6n1FRUU0szzCiaLdq/55fNIE8Kq2a+J3RlNpDaryz0rt3rOUHwgRRAFrj7trPE/JmohYXYyCEQUHYww2j/It6kH9wMdEKxgRCTX24zvA7BaprRkeGesCkNBR11yPbUU7pfacQTPAc8ovcuxZ6iw6fii0+mQFoyGEEEIIIYSQyKPIL8OMjAzwfNuHdjgcQYyGKKG++gAEe73UNqXmyn6M0x6zz3kVj57TlF88dN/5gyhvqJDaVw5WvjxAMAhnzkOsqJbaVL6FXMqzfAuf1AeqHgMVjIZEog2ntsIu2KX2vBAo32JpPA1LQ5HUTghAqTNCCCGEEEIIIe1T5DqEqqoqLFq0CIwxxMTEYPXq1V6PX3fddTCZTHjppZeQmJioRIgkwMweC6Jp9MmINmbLun9RFPH3n88hNiMNA8x1GD2kJ3Txys949iwPYDLEY1yf0QpGEzy2ve7yLZxeB81QGhwlbmJ9FRyF+6S2NmcW1XgmQedZXmtI6iD0TVB+oU5zmbusEcdrYEwar2A0hBBCCCGEEBKZFJmB/uGHH2Lz5s04duwYBg5sOZA2ceJEfPvtt5g0aRLMZrMCEUYenufbvSpATg57A+qq3YNlppQp4GS+TH7f9hOo5HkUxcdgfd90mIf3lXX/nWGxN2PjqR+k9i8GTYeaD/9aWszhgP3AYamtGTEYnEajYERdx/M8DAZD0HIm3NkPb/ao8cxBmzND0XiIvLpDvpyvLcHBC4ekdijMPmdM8BpANyaNg0odpWBEJFi6Q84QEkooZwjxD+UMIb6jPCEuirwT1q5dizFjxuDIkSN4/vnnWzz++9//HocPH4ZGo8ELL7ygQISRJ5gD6LUVO8BEd5meQFySvn7rMem2jjFMv3Kk7Mfw1+aC7Wi2N0vtKwfPVjCa4HEcPQXW5K5trR0zop2tuwee52E0GunLVCa2g+ul2+rMkeCNyi/2S+TTHfJlS+GP0m0Vr8IvBk5TMBqnBvMhOGzuSQSm1CkKRkOCqTvkDCGhhHKGEP9QzhDiO8oT4qLIOyEvLw/Lli1DfHx8m9ukpaXhz3/+M1atWhW0uCIZYwyiKHa8oQyqPcq3RMUNgC4qXdb9Wy02HDA3Se0R8XoYonSyHqMzPMu39Evsi4FJ/RSMJng8Fw/lE+KhyuylYDTyEEURFoslaDkTzoSyQgjlhVJbS4uHhp3ukC+/GrkQb1//Mq4bdiXmDJqBeINR6ZBgLncvHqrWGhEb3/1PPhLfdIecISSUUM4Q4h/KGUJ8R3lCXBSpH1FZWYkhQ4Z0uN3IkSNRXFwc+IAIBEGAKIoBP7tmtZSiqe6E1DalyD/7fOOaA2j2qJ88a4q89dU7o7yhErvP7pfac7NnRESNZ7GxCfYjJ6W2dnQOuDA4gyuKImpra5GUlERnpLvIc/FQqHXQZF+hXDAkILpDvnAchxHpwzAifZjSoQBwntS2NVdKbVPKFeB4lYIRkWDqDjlDSCihnCHEP5QzhPguGONkpHtQZAA9OjoaZrMZmZmZ7W5XU1MDrVYbnKBIUJjL3DPqOE6F+JSJsh9jy75i6baRMVweAgPoa49vBHPVeOY4zB0UGbNs7QeOAIL7jK1mdI6C0ZBQwwQHbPkbpbYmezI4HdV4JoTjOPQf+QyaG8/CXLYN8amTlQ6JEEIIIYQQQiKWIqdRRowYgddee63D7f7xj39gxAi6ZDlcMMa8BtBjE0dDrYmT9RhVpTU4YRWk9rie8YqfLWSMYc2xDVJ7XO9RSIlJUjCi4PEs36LK7AVVcqKC0ZBQ4yg+ANZYLbW1w5VfuJGQUKKP7o0eWTfDEJ2hdCiEEEIIIYQQErEUGVlcsmQJ/vOf/+DGG2/Erl27YLfbpcfsdjt27tyJRYsWYcWKFbj99tuVCJEEQFPdcdiay6V2IBYPXbP6Zwge7flzlT8Bc6KyAAVVRVI7UmafCxVVEE6fl9raUTT7nHjzLN/CxSRA3fcyBaMhkajJZgFjTOkwCCGEEEIIIYSEMEUG0G+77TbMnz8fn3/+OSZNmoTo6GgkJycjOTkZ0dHRmDx5Mr744gvMmzcPt912mxIhdllzczOeeeYZDBo0CHq9Hj169MCtt96KoqKiFtuWlJTghhtuQGxsLIxGI375y1+irKys1f2ePXsWsbGx+Pvf/y5rvCqVCipVYOurei4eqtLEIDZhlOzH+PGE+9+tFw9kDekp+zH89e1R9yChXqPHtH6RcSm+fV++u6HioRnZ8boH3YVKpUJCQkLAcyacMWsT7Me2S23tsBlU4zlMhXK+/GH9/+Kmj/8H7+37BOUNlR0/gZAgCOWcISQUUc4Q4h/KGUJ8R3lCXBQZQOc4DitXrsSDDz4IjUYDh8OBqqoqVFVVweFwQKPR4MEHH8TKlSuVCK/LLBYLZsyYgeeeew7Lly9HdXU11q5di/z8fFx22WU4ePCg1/YLFixAfn4+9u3bh71792L//v1YuHBhq/u+++670b9/fzz88MOyxsxxXEAXtRRFG2ordkrt+ORJ4HmNrMc4eegszntMJJyc3UPW/XeGQ3Rg3YlNUntG/ysQpTUoGFFwMFGEba+7fItmyEDw0eFT25rjOGi12ohYCDZQ7Md+ABxWqa0dMVvBaEgghWq+1Fhq8WPxTyioKsI/f3wbqw6vUTokMMbQWHvMvWYGiUihmjOEhCrKGUL8QzlDiO8oT4iLIouIAoBGo8GLL76IJ554Aps2bcLp06cBABkZGZg+fTqSkrpvjehly5Zhx44d+Oc//4kbbrgBgLPu+5dffolBgwbh5ptvxsGDB6FSqbB582bs2rULH374IQYOHAgAeOqpp3Dbbbdh69atmDrVXebk008/xdq1a7Fr1y6o1fK+dIIgQBCEgJ1dq6vaB8HRKLVNqVNkP8aatR71tgHMuUr5chA/nfkZ1U1mqR0x5VuKz0E010ptbZgtHioIAmpra2E0GumMdCfZ8tzrAqhSsqBK6atgNCSQQjVf1p3YDEF0F/2an618DX5LQxFOHXgKGl0iTKlTkNzrGqg1MUqHRYIsVHOGkFBFOUOIfyhnCPFdIMfJSPei2AC6S1JSEhYtWqR0GLJpamrCa6+9Bq1Wi8WLF3s91q9fP8ycORPr1q3DmjVrcNVVV+HQoUMA4LVYquv2oUOHpAF0s9mMBx54APfddx/GjBkje9yMsYDWgfVcPFRr6IGo2IGy7p+JIswFZVAb9HBwHAbp1UhMMcp6jM749pi7fEtyTBLG9BqpXDBBZNvrvsqCizJAPbi/gtHIjzEGm81GtZM7Sawth6P4gNSm2efhLVTzZY3H5/OI9GHoaVT+qiXzxVJndmsVKs9/h9Q+rV+NRsJbqOYMIaGKcoYQ/1DOEOI7yhPiokgJF1+ZzWZMnz5d6TD8smnTJjQ2NmLEiBGIiWk5a2zyZGf969WrVwMARNF5mbbnZSE873xZHA6HdN/SpUuh0+mwfPnygMUeKA5bHeqq90vthNQpsl8GU33oLC47eR6/OlSIKWfKcNUE5QdsG6yN2Frwo9SeO2gGVBFQ45nZ7bAfPCq1NSOHgpP5ignSvdnyNwK4+IcIx0MzdJqi8ZDIU1R9BkfKjkvtednKXx3ERAdqyt3rAhiTxoNX6RWMiBBCCCGEEEIIEAIz0Ntjs9mwdevWjjcMIa765n37tl6OICsry2u7QYMGAQAOHz6MoUOHAgCOHDkCAMjOzgYAbN26Ff/5z3/wzTffIDo6OiBx19aX4B//vhGAbwPbmRUa9LB5b3sshsFstLeytQiec9dzFY58BobPwAk8xlyIbbH1zymNEHSOFve3Japej5yTaiTFO5/TQ82h6fQhvPt+uc/7AIDkpkTEMu/65BXqWtTr6n3eBydy6GtxLlxaYavF9HpnGRO1CUgtXo/Vp7f4FouYgOGc93uogVnxE3/I51gAIEfshxQu3uu+4+w8zvGlPu9DDRWmspEt7t+BI7Bwlhb3M4cDLL1BaqtQCO6bVUjWpWOkcbjXtg2ORuys/sHnWAAgJ2400vTJXvcdqz+Js5YCn/eh4jSYnjyjxf3bq36ERej49WaMwe5woEdUH4wyjfB6rLv2ySUYr5NQeQYs1ZmvfGwi1IffaHUfarUBs8e0XO9h68F/o9Hie36nJuZg9ICrve5rsJix7eC/fN4HAIwaeCPSErxPzh05sxXFF7a38YyWIrFPTBRhtVqh0+nA8W2ftw9mn06bz2JyvPO2ildhbIwNFefdNdB5XofEHi3zqaZiB+y2Gp9jMURnIibeewFlQbCgunRzi21tzeVw2Ouktil1aottCCGEEEIIIYQEn2ID6Ha7Ha+//jpWr16Nc+fOwWaztdhGEIRWnhnaSkudA5MJCQmtPm4ymby2mzVrFoYMGYK//vWvmDZtGniex9/+9jcMGzYMM2fOhNVqxf/8z/9g0aJFmDdvXpdicw3QX6qgoABpqWqMzKxt9fHWVJrV6Fvrvf3P6YkYmdns8z5q7RwGFp5pcX9xzzj0jvH9tT9cokP/0mrg4li8QyWitEKENivO530AgD2vDH1qvI9b1keLvr18X/Szwc7QZ+duAEAfAKMv3r93UAySY6p93s+Z0jPIPrbP674aHRA3wb8FSC8cKEJ8jfd9pzN5mDJ1Pu+j0c5g+/FUi/trx2iRFNPGjHqvcVPna3z6wnEM2uk9CFupFREzwr+rEc7tOwFjg0qawAwARWkOxPf2fXZ/o53BsvaYs8FB2lfNEAGJ0T5emKMGzpQWYvBP3gON3bpPCNLrlAo4VyoAwNUCNS0HEwGgUVTD4bgfPM+D53mIoghRFFF5/lsk8g2tPqc1xY3nMaKv+/OT53nUWyoR1cZx21JqHolUUz+v76bCc1sQU+f7yYVI7VM0AFjb3U1Q+zSYAwanOG9rVDyqT38MAGAX37AabQKMyVNb9Kn87Ndoqj8BAOAunnBmHv8Lr0eAhB5zoI9xlyzjeR6iowkXTv1HOtalz2IANNpE6GMGweFwgOM4qFQqMMZa/F10aXyeXGuleF7N1tFzVCoVOI6DIAhel6t2Nga59xcpffK8OjFc+hTsGKhPkdUnURTBGJOucA2HPrmE0+tEfQqdPrlyxrVdOPTJl/1Rn6hPndnfpY+RyKXIALrNZsPMmTOxfXvHM9y624q3TU1NAACtVtvq4zqdzms7lUqFL7/8EkuWLEFaWho4jsPYsWPxf//3f1CpVHj66adRUVGBV155BQDw1Vdf4bnnnkNxcTEyMzPx+9//HldddVUQetZ9CHzofcB15l3sPRzTNV2t2sUuiaEz+2NgEJn7telKbjMGMI99XToQ5QuRieDAgeM4MDj/gPR/L+HXp5B6nRhDZWUlDAYDjEYjrFYramtrvfbpC7vDgcrKSqndlSt57HY7qqvdJ8OszVb4tcQj9antOBTqk4bXSLeZ6HyPOi7GcmmfbDabtA1456A3Y+IlH4oMHM+DgaHJYmnRJ722jXVHXPsTRWijR6Gqyhm/VqtFQkJCiz4BgNFohMFgQH19PSwW7yuC0tLSAMDr+ABa9MlTQkICtFqt1FcpNJ5HShCC0W4AAP4mSURBVEoKBEFosb/o6GjExsaisbERjY2NXo8lJSVBrVajqqrK68cH9cm3PqlUKlgslrDqUzi+TtSn0OiTa5AknPoEhN/rRH0KnT5xHAeHwwGNRhM2fQLC73WiPoVGn1wxkcimyAD6Sy+9hLy8PHzwwQcYP348RowYge+++w59+vQBAJw7dw4ff/wxVqxYge+++06JEDstKioKAFqdUQ8AVqvVazvAWapl165dqKmpAcdxMBqdi18eOnQIf//73/H6668jNTUVGzduxIIFC/DQQw/hrbfewjvvvINrrrkGW7ZswZQpUzqM7fDhw63eP3ToUNTXn0Z9a9VX2sA5eNiES94+Ds6vfTTZOTQ7Wr4FrXb/9sMcF/fDAVaNAKuKQxOcM3L9wRiHes57pq4g+rcfq0NssQ8D1BAcQJMf+1EJPDje+yQMx4l+7QMAEjgtwKu8Br9VgsOv/VjtDBzvPfOdAyA6hPb3c8m4q4rTQhUb732fyo4mRx38kaCLAc+86wKrVbVouuQMdXtsAqCKTZQC5eCafVGFJocfrxP1qU0d94kDeBXQzgC9jdMiKSlJWhdCp9MhKSkJTBWFJrGD6cwedFFxSEpKkto8z6OplkeT6N+aBAm8FhqNxmtf0dFGNDX7vh/qU9uC3ScOHKJ1UYgymKQTRa5BbbU2vtU+NZYnAmKN8/mu9+4lJ6o454MAgJiYxBZ9EuwOaHTxuHT83LU/Q+wA9BxwM1QX65+77r+0T679AUBsbGybJxzaeo6rT55cg09Go7HF7B3X423tLzo6GgaD93eFa3+JiYmt7o/61HqfXCdYGGNh0yfP51CfqE9y94kx5jULPRz6dCnqE/VJzj65csY10zcc+nTp/qhP1Ce5+kQz0IkLxxRYUnb06NG47bbb8MADDwBwJs3Bgwel+uAujz32GMxmM/79738HO8RO+8tf/oKnnnoKixYtwqefftri8Y8//hg333wzLr/8cvz0009t7kcURUyaNAk6nQ6bN28Gx3GYNm0aioqKUFRUJF3W27dvX/Tv3x8bN27sdMxDhw6Fw+HA4cOHpS9RQkjbXLNTXWemCSFto3whxD+UM4T4h3KGEP9QzhDiO4fDQXlCACg0A/3EiROYPn16h9vdcsstuOaaa4IQkXxGjhwJACgqKmr18cLCQgDA8OHDW33c5V//+hf279+PvLw86axZXl4epk6dKrV5nseoUaN8KoVDCCGEEEIIIYQQQgghxD++rywnM1eZEgDQ6/XSopqe1Go1SkpKghlWl02bNg3R0dHIy8trUUcJAH788UcAwNVXX93mPs6dO4cnnngCTz31FAYOdC8+JoqidCmJi1qt7paLrRJCCCGEEEIIIYQQQkioU2QGeu/evXHy5Emp5nnPnj2xbt06TJw40Wu7VatWQa/Xt7aLkBUVFYXf/e53ePbZZ/Hee+/hnnvukR4rLCzEhg0bMHToUMybN6/Nfdx7773IyMjA448/7nX/kCFDcOjQIa/7Dh06hKFDh3Yp5jNnzsBms2HEiBFd2g8hkYQu5SLEd5QvhPiHcoYQ/1DOEOIfyhlCfNevXz+sXr1a6TCIwhT5xBw1ahSWL1+OyZMnQ6fTYerUqXjuueeg1+sxZ84cAMDXX3+N//3f/8UVV1yhRIhd8vTTT2Pbtm34f//v/yE1NRXz5s3DyZMnsXjxYkRFReGjjz5qMZPc5YsvvsA333yD7du3Q6PReD32+OOP45prrsGLL76IO++8E++++y6OHTuGb775pkvxWiwWKFAKn5Buq6CgAIDzi5QQ0j7KF0L8QzlDiH8oZwjxD+UMIb4rKCjAmTNnlA6DhABFFhFduXIlrr/+egwdOhT5+fkoKipCTk4OLBZLi203bNiAadOmBTvELmtubsazzz6Ljz76CGfOnIHRaMSsWbPwzDPPtFgs1aW2thaDBw/Gddddh9dee63Vbd5++208++yzOH36NDIyMvD73/8ed9xxR5didc1gP3z4cJf2Q0ikoJwhxHeUL4T4h3KGEP9QzhDiH8oZQnxH+UJcFJmBfuWVV2Lnzp3Q6XQAgL59+2L9+vX47W9/K5Uo6du3L55//vluOXgOOOu6P/3003j66ad9fo7RaMSFCxfa3ebXv/41fv3rX3c1PEIIIYQQQgghhBBCCCEdUGQAXavVYty4cV73TZw4EXl5eaiuroYoikhKSlIiNEIIIYQQQgghhBBCCCEEgEID6NOnTwcAJCQk4IsvvvB6LCEhQYmQCCGEEEIIIYQQQgghhBAvvBIH3bJlC44cOSLVEiKEEEIIIYQQQgghhBBCQo0iM9BVKhU++eQT5ObmKnF4QgghhBBCCCGEEEIIIaRDHGOMBfugvXv3xo8//og+ffoE+9CEEEIIIYQQQgghhBBCiE8UKeEyb948bN26tcPtysrKoFKpghARIYQQQgghhBBCCCGEEOJNkRIuy5cvx7x585CUlIS5c+e2u60CE+QJIYQQQgghhBBCCCGEEGUG0B9//HH06NEDV155Jfr27Yvs7GwkJyeD4ziv7SwWS4v7CCGEEEIIIYQQQgghhJBgUKQGOs/z4DjOp9nlHMdBEIQgREUIIYQQQgghhBBCCCGEuCkyAx0AXnrpJRiNxna3qampwcMPPxykiAghhBBCCCGEEEIIIYQQN8VmoJeWliIlJaXd7crKytCjRw+IohikyAghhBBCCCGEEEIIIYQQJ16Jg37wwQeIj4/vcLuEhARs3rw58AERQgghhBBCCCGEEEIIIZdQZAD95ptvhlar7XA7jUaDqVOnBiGi8NPc3Iwnn3wSWq0WS5Ys6fR+RFHEq6++ihEjRiAqKgpJSUm47rrrcODAAdliJSQUyJEzy5YtA8dxbf7XlVwkJBRs2rQJd955JwYOHAi9Xo+oqCgMGTIES5cuRUVFhd/7a25uxjPPPINBgwZBr9ejR48euPXWW1FUVBSA6AkJPjlzZsmSJe1+xyxbtiwwnSAkiPbu3Ys//vGPmDx5Mnr27Am9Xo+MjAzMnz8f33zzjd/7o98yJNzJmTP0W4ZEmjNnziAuLg4cx2HLli1+P59+y0SWoAygZ2VlSf/V1tYG45ARbfPmzRg+fDhef/112O32Tu9HFEUsWrQIjzzyCH7729+ioqICu3btQn19PcaNG4f169fLGDUhypErZwAgLi4OgwYNavW/Hj16yBQxIcH32muvYcaMGdi7dy/eeOMNVFRU4OTJk1iyZAleeeUV5OTk4MSJEz7vz2KxYMaMGXjuueewfPlyVFdXY+3atcjPz8dll12GgwcPBrA3hASe3DkDAImJiW1+xyQlJQWoJ4QEz5VXXom///3vuPXWW7F//35UVVXhww8/xNmzZ3HVVVfhj3/8o8/7ot8yJBLImTMA/ZYhkeXXv/416uvrO/Vc+i0TgVgQcBzHHn30UbZs2TJmsViCcciI9fHHHzOj0chee+019p///IcBYIsXL+7Uvv71r38xAOzRRx/1ur+6upqZTCaWkpLC6urqZIiaEOXImTNPP/10p59LSKh77rnnmFarZWfOnGnx2OOPP84AsDlz5vi8v8cee4wBYP/85z+97j916hRTqVRs6NChzOFwdDluQpQid84sXryYPf300zJGSEjoSU1NZX/6059a3L93714GgOl0OtbU1OTTvui3DIkEcuYM/ZYhkeTNN99kJpOJZWdnMwBs8+bNfj2ffstEnqCVcFm6dCmefvpp6PV6TJ8+vcV/RB59+/bFkSNHcM8994DjuC7t6/nnnwcA/M///I/X/SaTCYsWLUJ5eTlWrFjRpWMQojQ5c4aQcJaWloabbroJvXv3bvHY1VdfDQDYsGEDBEHocF9NTU147bXXoNVqsXjxYq/H+vXrh5kzZ+Lw4cNYs2aNPMETogA5c4aQSPH555/j3nvvbXH/oEGDAABWqxXNzc0+7Yt+y5BIIGfOEBIpzpw5g6VLl+Kll15Camqq38+n3zKRSZEa6BkZGdJ/27dvR2JiohJhhKXx48cjPT29y/s5dOgQCgsLkZycjAEDBrR4fPLkyQCA1atXd/lYhChJrpwhJNzdcsstbQ40GI1GAADHcWCMdbivTZs2obGxESNGjEBMTEyLx+k7hoQDOXOGkEhxxRVXtPrbcMeOHQCAMWPGwGQydbgf+i1DIoVcOUNIJPn1r3+NSZMmtRj89hX9lolMigygv/vuu9J/Op0Ozz77rBJhkHa46jX17du31cezsrK8tiOEOBUVFeFXv/oVevfuDa1Wi9TUVFx99dXYuHGj0qEREjDHjh0D4PxjUa1Wd7g9fceQSOdvzrgcOHAAV199NdLT06HT6dCzZ0/88pe/xN69ewMVKiGKEQQBFy5cwAcffIAlS5Zg9OjR+OSTT3x6Ln3PkEjUlZxxod8yJNz9+9//xk8//YQ333yz0/ug75jIpMgAOgl9paWlAICEhIRWH3edxa6oqIAoikGLi5BQt3v3bowZMwa7d+9GQ0MDvv32W5jNZsycORPLly9XOjxCAuL9998Hx3E+L1Tl63eMaztCwo2/OePyww8/4JprrkF+fj5qa2vx4Ycf4tChQ5gwYQLee++9AEVLiDJcJ4luv/12XHvttVizZg369evn03PptwyJRF3JGRf6LUPC2dmzZ/Hoo4/i+eefb7XEnq/ot0xkCukBdLvdjm3btikdRkRqamoCAGi12lYf1+l0LbYlJNL96le/wp49e/Dwww+jR48e0Gq1GDNmDL755huYTCb84Q9/wI8//qh0mITIau3atVi9ejUefvhh5Obm+vQcX79j6PuFhKPO5AwAPPTQQ9i9ezfuvPNOJCYmQq/XY9q0afjvf/8LwFnnuaioKEBRExJ8DocDFRUV+O677/DTTz+hf//++OCDD3x6Lv2WIZGoKzkD0G8ZEv7uuusujB07FnfddVeX9kO/ZSJTSA+gV1dXY9q0aUqHEZGioqIAADabrdXHrVZri20JiXQDBw7EsGHDWtxvNBpx8803A3CWsCIkXJw8eRKLFy/GwoUL/SrH5ut3DH2/kHDT2ZwBgBEjRrQ6k7Bfv36YM2cObDYbPvroI7lCJSQkJCUlYdasWdi8eTNiYmKwePFibN68ucPn0W8ZEqk6mzMA/ZYh4e3tt9/G9u3b8fbbb3d5X/RbJjIFbQCd47hOPY8WVlJGWloaAOdJjNaYzWYAQEpKCng+pM/DEBIS+vfvDwA4evSowpEQIo/Tp09j1qxZmDx5Mj7++GOoVCqfn+vrd0yPHj26HighIaIrOdMR+o4h4S4uLg4333wzGGN4/fXXO9yefsuQSOdvznSEvmdId3bu3Dk88sgj+Nvf/obMzMwu749+y0Qm31ct6qL7778fBoOhxf02mw2PP/44YmNjWzxmsVg6PfBOumbkyJEA0OalwIWFhQCA4cOHByskQro1V31N+kwj4eDUqVOYMWMGpkyZghUrVvg9EEjfMSTSdDVnOkLfMSQSuBZrKy4u7nBb+p4hxL+c6Qh9z5DubMOGDairq8N9992H++67r9VtPKtfbN68ud0ye/QdE5mCNoD+2WeftTmb/Msvv2xxH8dxYIzRB7RChg4diqysLBQWFuLUqVPSGWcXV+2zq6++WonwCAk5Z8+exdixY7F+/fpWvyhPnjwJAMjOzg52aITI6siRI5g5cybmz5+PN99802vm3vPPP48bb7yxw0V5pk2bhujoaOTl5aGxsRHR0dFej9N3DAkncuTMjh07sGDBAhw9elRamMoTfceQcPDBBx/goYceQkVFRau/AS9cuAAASExM7HBf9FuGRAI5c4Z+y5BwtmTJEixZsqTVx3Jzc7F169YOB8090W+ZyBS069VuuOEGLF682Of/brvtNtxwww3BCi9i5efnY9KkSXjiiSdaPLZ06VIAwFtvveV1f01NDT777DOkpKS0+SFESLhqK2cEQUBZWRnWrFnT4jlmsxkff/wxAFDOkG7t4MGDyM3NxcKFC/HWW2+1uOx96dKlKCgokNqbN2/G5Zdfjn/84x9e20VFReF3v/sdrFYr3nvvPa/HCgsLsWHDBgwdOhTz5s0LXGcICQK5csZms6GsrAzr1q1rcYwTJ05g/fr10Gg0Uo1aQrojQRBQVVWFLVu2tHjMYrHgk08+AeA9IEG/ZUgkkzNn6LcMIS3RbxnihQUBx3GsrKzM7+eVlJQwnucDEFFkePfddxkAtnjx4ja3uffeexkABoBVVlZ6PSYIAluwYAFTq9XsjTfeYA0NDezUqVNs1qxZTKPRsHXr1gW4B4QEV1dypri4mAFger2evfTSS+zs2bPMarWy3bt3s4kTJzIAbNmyZUHoBSGBsWfPHmYymVhUVBS78cYbW/0PANu8ebP0nPnz5zMALCYmpsX+mpqa2IQJE1hsbCz74osvWFNTEzt48CAbOXIki4uLYwcOHAhi7wiRn5w5s2XLFgaAJSQksHfffZeVlpYyi8XCNm3axAYPHsxUKhV7++23g9xDQuS1YsUKBoClpaWx9957j124cIHV19ezHTt2sKlTpzIAbO7cucxut0vPod8yJJLJmTP0W4ZEKleueP495kK/ZYinoAyg5+bmMrPZ7PfzqqurWW5urvwBhTnXF2Jr/7377rte237//ffMZDKxa6+9lomi2GJfDoeDvfzyyywnJ4fp9XqWkJDArrnmGvbzzz8HqTeEBJ5cObN371722GOPsZEjR7KYmBimVqtZWloau/baa9n3338fxB4RIr8HHnig3Vxx/ef5x+f777/PYmNj2f3339/qPi0WC1u2bBkbMGAA0+l0LCUlhd18882soKAgSL0iJHDkzBlRFNm2bdvYvffey4YMGcIMBgPTaDSsd+/e7Fe/+hXbs2dPkHtHiPzsdjv77rvv2O23384GDBjADAYDU6vVLDk5mc2aNYutWLGCCYLg9Rz6LUMimdw5Q79lSKQoKipq8++yqVOnStvRbxniiWOsjcLkhBBCCCGEEEIIIYQQQkgEC1oNdEIIIYQQQgghhBBCCCGkO6EBdEIIIYQQQgghhBBCCCGkFTSATgghhBBCCCGEEEIIIYS0ggbQCSGEEEIIIYQQQgghhJBW0AA6IYQQQgghhBBCCCGEENIKGkAnhBBCCCGEEEIIIYQQQlpBA+iEEEIIIYQQQgghhBBCSCtoAJ0QQgghhBBCCCGEEEIIaQUNoBNCCCGEEEIIIYQQQgghraABdEIIIYQQQgghhBBCCCGkFTSATgghhBBCCCGEEEIIIYS0ggbQCSGEEEJIRBNFUekQCCEk4OizjhBCCOkcGkAnhBBCujmLxYK//vWvGDZsGGJiYpCQkIBx48bhX//6l9KhERLytm3bhssuuyxox1uxYgU4jpP+W7JkSdCOTdrm+ZpwHKd0ON3WsmXLvP4dly1bpnRIxMNNN92Et956S+kwCCGEkG6HBtAJIYSQduTm5rYYWPH8T6vVIiMjA7fccgv27dunSIy33HILnnzySSxcuBD79+/H2rVrYbVa8dlnnykSDwltW7ZswbJly7Bq1ao2t8nPz0daWhruvvvu4AWmgDfeeAMzZszAbbfdFrRj3njjjSgpKcHLL78s+75XrFiBZcuW4cCBA21u895778FoNOKDDz6Q/fhyOXDgAJYtW4YVK1YE7ZglJSUoKSkJ2vE6w5fcVdqjjz6KkpISPPLII0qH4kXJz7S//OUvSEhIwKZNm4J+7EvdfffdeOSRR3DrrbfSbHRCCCHEDzSATgghhLRj5cqVKCkpwaJFiwAAixYtkgZazp07h02bNmHOnDn4+OOPMW7cOLz55ptBje/8+fNYuXIlevXqhT/96U8YMGAALr/8crz00ku4+uqrgxoL6R62bNmCP/3pT+0Owq1duxZlZWUhPcjaVatWrcI999yDZcuWBXWwz2AwIC0tDUajUfZ9r1ixAn/605/aHUD/7LPPUFdXh08//VT248vlwIED+NOf/hTUAfS0tDSkpaUF7Xid4UvuKi0mJgZpaWmIiYlROhQvSn6mffzxxzCbzVi5cmXQj32p3NxcfPvtt/jwww9D7iQHIYQQEsrUSgdACCGEhLKEhAQAzkEv1/97DrL07NkTkydPhl6vx6uvvorf/e53mDZtGgYOHBiU+IqKigAAGRkZXvdPmzYN06ZNC0oMJPzccMMN+PrrrzFnzhylQwmI2tpa/Pa3v0Xv3r3x6KOPKh1OUP3ud79DRUUF7r33XqVDISRolPxMW7p0Kd544w3cfvvtQT92a6ZMmYKFCxfilVdewQ033ICJEycqHRIhhBAS8mgGOiGEECID12XhDocjqDM7HQ4HAECtpnPiRD6ZmZnYtm0bnnjiCaVDCYg333wTZWVlePDBB6HT6ZQOJ6jmzp2L3bt3Y+7cuUqHQkjQKPmZtmTJEuzatQujR48O+rHb8vjjj4Mxhr/85S9Kh0IIIYR0CzSATgghhMjAcwb4uXPnvB5buXIlZs+ejYSEBOh0OvTp0we33XYbDh065LXd9u3bveqr5+bmoqGhAY8++iiysrKg1WrBcRwyMzOxZcsWcBwnzTLfunWr13OLi4ul/YqiiHfffRdTp06FyWSCXq9HVlYWfvvb30oz2D1j99xPZmYm7HY7li9fjsGDB0Ov10uPtRZvXV0d7rvvPvTo0QMxMTEYN24cvv76a2n/77zzDoYOHQq9Xo+MjAz88Y9/hCAILf49rVYrvvzyS9x8880YPHgwYmJiEBMTg1GjRuFvf/sbrFZri+f079+/xb/Bhx9+iNGjRyMqKgomkwkLFixAYWFhm69jeXk5HnvsMQwePBgGgwFRUVHIzs7GkiVLsHr16lZjLSgowF133YXMzEzodDokJCRg2rRpeP/998EYa/NYl/r1r3/tFf+KFSuwb98+XH311UhKSmqxKF9lZSXefPNNzJs3D1lZWdKxp0+f3mr9e9d75k9/+hMAZy3s1hb7y8zMbPO95Gnr1q1YsGAB0tLSoNVqkZaWhgULFmDbtm0+9xlouehge//JVdLDtZ/Zs2e3eMzf18HF1zz3xYkTJ7B8+XJMnjwZ6enp0Gq1SE9Px6JFi7Bnz54W27v+Dbdu3QoAuP322736sGXLFhQXF7fIbZclS5a0+Lf2fPzS57b2WsjRf9dxXDN1L/1cu3TBVX8+2/wliiL+8Y9/YMSIEdLnx5VXXtnqv79LaWkpHn74YQwcOBB6vR5GoxETJkzAP/7xD9hsthbbC4KA9957D5MnT0Zqaqq0psZNN92EL774Ak1NTQB8z92O+Hq81j7bPV1//fU+fUa4nDhxAjfeeCNSU1Oh1+sxaNAgLF++HM3NzV7bzZw5s8X79rvvvsOECRMQHR2Nnj174p577oHZbAYAnDlzBr/85S+RmJiI6OhozJgxA/v3729xfF8+01atWoWZM2eiZ8+eUr5de+21eO+991BTU+O1bU1NDZYvX44RI0YgPj4eBoMBQ4YMwX333YetW7dKtcVdr1tb/44uVqsVL7/8MsaNG4e4uDgYDAYMHjwYS5cuRXl5ude2bX3vPvDAA+jduze0Wi2ysrKwbNmyVr+vXMaMGYOEhAR89913LY5BCCGEkFYwQgghhHRo8eLFDABbvHhxq4+fOnWKAWAA2FNPPSXdf9dddzEAbNasWWzLli3s+PHj7KOPPmI9evRgOp2OrVy5UtrWZrOxkpIS9uWXXzIAbPz48eyKK65gr7zyCjt16hT76aef2KBBg1hGRgazWq1e206YMIGVlJRI/zkcDsYYY83NzWzu3LlS7Pv27WNFRUXs448/Zj169GAxMTFs3bp1UgyCILCSkhK2e/duBoD16dOHXXvttezpp59mR48eZXl5eWzSpEkMQKvxzp49m3344YesqKiIrV+/nvXv35/xPM++/fZb9ve//50988wz7OTJk2z37t1szpw5DAB7/PHHW/x77ty5kwFgU6ZMYevXr2dFRUXswIED7MUXX2RxcXFs0qRJrLm52es5FRUVrKSkhPXq1YsBYHfffTe7++672aFDh1h+fj574IEHGACWkZHBGhsbWxzz559/ZqmpqSwuLo7961//YgUFBSwvL4+9+OKLLDY2lgFgK1as8HrO2rVrWXR0NEtOTmbvv//+/2fvvMOiOr7//15677BLExEsWFBRFDtijyWWYC/YCypGjZqYBLsxGhsm9qBGsPdeKPaOWD6KEQUrRbHRy+75/cHv3i/L3m2IYpJ5Pc8+ytRz5945M3Pu3DP04MEDio2NpS5duhAA6tOnD8lkMvUPGBG9f/+eUlJSqHfv3gSARo4cSY0aNaITJ05QUlISbdiwgUQiEYWGhhIR0cKFC/l0V65coeTkZLp8+TJNnDiRANDkyZPlyueemSlTphAA6t27t9wzk5mZSURE6enpcu2YlJSkIOvs2bMJADVu3JiioqLoyZMnFBUVRY0bNyYANH/+fI2umYgoNDRUThbu2QMgJ19KSgrl5ORoXK4ynj17RgDIwMCACgsLFeK1vQ9E2vVzjvDwcKU6pUOHDmRoaEi//vor3b17lx4/fkwnT56kDh06kJ6enkJ5mZmZlJKSQk2aNCEAtHz5crl2y8/Pp6KiIrn2dXNz4/O/e/eObt26Rbq6ugSALly4QOnp6Xw8l/fbb78lDw8PhXtRlusXgqtn+fLlgnrt3bt3fFptdZumcM/eyJEjacSIERQXF0dJSUm0adMmsrGxIX19fTpw4IBCvri4OHJwcCBTU1NatWoV3b9/ny5evEjDhg3jdVnp53fw4MF8X42Pj6fHjx/ToUOHyNvbmwBQeHg4EWned9WhaX2cbufuQ6tWreTKefv2rVodERoayuvAmjVr0vbt2yk5OZmuXbtGgYGBfJuU1ONv3ryRe47Hjh1Lffv2pZs3b9K9e/fo+++/55+LtLQ06tq1K0VHR9OjR49o48aNZGJiQlZWVpSSkiInizqd9vPPPxMAGjRoEF27do2Sk5MpKiqKWrVqRQDk+np2djZ5eXmRiYkJrV27lhISEujBgwe0fv16srW1lSu/9Dhduh2JiDIyMqhhw4YEgKZOnUp37tyhR48e0erVq8nCwoLEYjHFxcXx6UuPu40bN6aAgADavHkzJSUlUUxMDNWpU4cA0HfffafyefD39ycAtHXrVpXpGAwGg8FgEDEDOoPBYDAYGqDOgD537lwCQCKRiG7cuEFERCtWrCAAVL9+fZJKpXLp7969Szo6OmRubk4vX76Ui4uJieGNOGFhYXJxa9eupYYNGyqkFVqYExFvNO7Ro4dC3I0bN0hHR4csLS3p2bNncnFJSUm8DFOmTJGLO3r0KInFYkF5IyIi5NKePHmSAFD16tVp/PjxcnHv3r0jAwMDMjc3p/z8fLm4uLg4qlmzpqChe8uWLQSAli1bJnjNbm5uBIACAgIU4urWrSsoZ2ZmJrm6uhIAOnTokEK+yMhIOQMTEdHTp0/JwsJC7p5zyGQy8vPzIwC0atUqQTmVwT1rJiYmlJaWJhcXEBBAixcvJiKiP/74g/r27StYBme0K2l44eAMW8qeZQ6uHUsbm/bu3UsAyNXVlT58+CAX9+HDB74dhYyMQhw6dEjuxUTJZ+9TcPToUQUDshCa3oey9nNVBvTBgwfT8uXLFcILCgqoevXqJBaLFV4gERFv8Cv5nJaGa1+h6+de/MyYMUMhrqioiFxdXWnRokVy4WW9flVwbaNMrxGVXbepg3v2unTpohB34sQJAkBWVlZyLxhK6o99+/Yp5OvTpw9vIOVITk4mAFSrVi2F9M+ePSORSKRwHzXtu0KUpT5190GZjigpKwC6du2aXJxUKqXmzZsTAPrhhx8U8nLPcY0aNRSeqaZNmxIA8vHxoSdPnsjFTZ8+nQDQwoULNZY3NzeXjIyMyNzcXKGuzMxMsra2ljOgb9q0iQBQcHCwQvlbt24VbA9V4/TXX39NAGjSpEkKcfv27eNfZGdlZQmWCYC2bNkiF3fz5k0CQGZmZgpja0m4FypCL7EZDAaDwWDIw1y4MBgMBoPxEaSlpWHJkiW8H9EffvgBPj4+KCoqwrx58wAAU6dOhY6O/JBbq1Yt+Pv7IzMzExs3bhQs28TEBMOHD5cLGzVqlEoXAiVJT0/H6tWrAQCTJ09WiPfx8UHr1q3x/v17LF26VGk5EyZMkPu7U6dOSE1NVUhnbm6OwMBAuTBfX18AwIMHDzBgwAC5OEtLS9SoUQOZmZl4+PChXFz9+vXxv//9DyYmJgr1cAeeHTx4UKnMQLErjtI0adIEABAXFycXvnHjRjx79gxVq1ZFly5dFPIFBgbCxcUFBgYGfNjSpUvx4cMHtG3bFj4+PnLpRSIRxo0bBwBYtmyZSjmV0bt3bzg4OMiFRUVF8Ydejh07Ftu2bRPMy7VRSfc55QXnRmLUqFEwNzeXizM3N8eoUaMAQGO3El26dMGQIUPKVUZVcK497OzsNEqv6j6URz8XYvPmzQgJCVEI19fXh6+vL9LS0nDlyhWNy9OU0aNHAwDCw8NRWFgoF3fs2DGkpaXJHYT4qa5fHeWl21Qh1P7t27dH9erV8e7dO7nr4fRHtWrV0L17d4V83IGta9as4d2WcG4zMjIykJ2dLZfexcUFGzZsgJ+fX5lkF+Jz18fRrFkzNGzYUC5MR0eHb5Pff/9d0CUXAAwZMkThmeLGFHt7e1SqVEkurnHjxgCAGzduaCxfZmYm8vLykJ+fj7S0NLk4MzMz3k0WB9eOT548USjrq6++QlhYGGxtbTWqOz4+HgcOHAAATJkyRSG+e/fu8PDwwNOnT5X2HzMzM/Tp00curG7dujA2NkZWVhb+/vtvpfVzOvBj3R0xGAwGg/FfgBnQGQwGg8HQgoiICN4ft7GxMSQSCWbMmIF69eph9+7dvDHpxo0bePXqFYD/W9SXxtPTEwBw7tw5wXg3NzcYGxuXWdaYmBgUFBRAV1eXNzqUhpPt+PHjgvHGxsZy/t1VUalSJejr68uFWVpa8v/nrrckVlZWAIA3b94oxCUlJSEkJAR169aFnZ0d3+7e3t4AFH3Nl0aoPhsbGwDgfehycNev7F7p6enh2bNn6N+/v8Z5uPofPXqElJQUlbIK4eXlpTbN+fPnMWDAAFStWhXW1tZ8G3HGKXVtpC2pqam4desWgP97GVEarj1u3rz5RfrW/fDhAwDAyMhIo/Sq7kN59HMhiAhbt25Fp06d4OrqCgsLC/7ebt++HUD531sAfH1paWnYv3+/XNzatWvRo0cP2Nvb82Gf6vrVUR66TR21atUSDOfqi46O5sO4Oho1aiSYh2uDrKws3kd3rVq14OjoiNTUVDRo0AAbN26U87U9bNgw1KhRo0yyC/G56ytZrxBcO75//16pwVtIh3NjirbjiTLs7e1Rt25dFBQUwNfXF8uXL5d7QRwYGCh3X9u0aQMdHR0cPnwYHTp0wOHDh3n/9tbW1hg/frzCi0VlnDhxAkDxCwwXFxfBNOqe40qVKsm92AWKX+BaW1sDUBzrSsLpQE4nMhgMBoPBUA4zoDMYDAaDoQXdunVDfHw84uPjcefOHTx58gSZmZm4dOkSevXqxacruTutbt26vPGr5C88PBwA8OLFC8G6ShqqygIng6WlJQwNDQXTiMViBXnLKoPQrjuRSKRRfOnDzi5evIg6depg7dq16Nq1K/bv38+3+9GjRwFA8FC+kgjtMOYM/KXr466/9E5jVXB5Fi9eLHh/27Zty6dVdo9Voa7tV6xYgRYtWiAmJgZTpkzB6dOn+TaaM2cOAPVtpC1Pnz7l/6+srbhnClD+XFUkRUVFAKCws1UZqu5DefTz0hARvvnmGwwaNAivXr3CihUrcPHiRf7eduvWDUD531sA0NXV5b/cWLduHR/+7NkzHDt2jN+hzvEprl8TykO3qaPkc1wS7rkv+QKDq2PHjh2CbVC1alU+LdcOJiYmOHr0KLy9vfHgwQOMGDEC9vb2aNmyJdatW4esrKwyya2Mz10fh7p2BJS/DFI1Zmgznqhj3759aNmyJV68eIFvv/0WTk5O8PX1xW+//YaMjAy5tD4+PoiIiICDgwNOnjyJrl27wtbWFr169cKhQ4f4A0Q1QZNxR91zrOxLGmVjXUl0dXUB/J9OZDAYDAaDoRy9ihaAwWAwGIx/Eubm5oI731Rx8eJFQVckHKV3bXOUND5XFNrIoC6tNmWNGTMG2dnZmDt3Ln788Ue5OD09zaYvn6v9ZsyYgYEDB6pMo2x3oSpUyZ+amopp06YBAHbu3InmzZvLxWvzIuC/hqmpKQDNDdCaPkdl7eel2bdvH/bu3Qs7OzucPn2a31XLoenu1rIyfPhwzJkzB1FRUXj06BE8PDywYcMGeHh4oHXr1krzldf1f+kQkdy/JRk8eDBmzJihMn9Jg3K9evVw69YtnD9/Htu3b8fevXtx7tw5nDt3DgsWLMChQ4dQp06dcpO9vOsTaoOy5FVWjqq+V5763d3dHWfOnEF8fDwiIyOxZ88eXL9+HdevX8fChQuxa9cuuWe/b9++6NmzJw4dOoRdu3bh8OHD2Lt3L/bu3Qt/f38cOHAAFhYW5SafKj6mHTjXOWZmZuUlDoPBYDAY/1qYAZ3BYDAYjE9ASbcnlpaWGrtB+RQyvH//Hvn5+YI7NTmfrxUhnzIyMjJw584dAMUuJT4Hbm5uuH//vlYuR9zc3JCQkACRSKT1S5WP5cKFCygoKIC5ubmC8fxTUtLncFpamqCxraQf4S/pueKQSCQAysdtwafo5zExMQAAPz8/BeP558DZ2RldunTBgQMHsH79esyfPx8bN27Et99+q5C2ovTc59BtqampcHJyUgjndISrq6ucPPfv34dUKi2TLmjevDmaN2+OlStX4sSJE5g4cSISExMxZswYXLhwoUzyl0d93A5lZbuYOfc9qhA6LwOAnK4t2ZYVSb169VCvXj38+uuvuHDhAiZNmoTr169j0KBBCrvkDQwM0KtXL/Tq1Qs5OTnYsmULpk6ditjYWCxatIg/F0UV3LNZ2vd6ST7lGP3+/XsAyr8SYDAYDAaD8X8wFy4MBoPBYHwCGjRowLt+uHTpkmCa169fw8fHBytXrvwkMgQEBMDAwABSqVTpwaOXL18GAHTs2PGTyFAW1H0C/yl8P3PXz7VHafLy8tCpUycsWbJEIY+y+wsUHx7Yrl27j9qpKcTHtJGQ65KsrCyVRhwOiUSCevXqAVDeVlx4/fr1y7QTvqQ/30/hpoTz81wWv/Sl+RT9vLzv7Zs3b1T6QRai5GGie/fuxevXrwUPev1Uek7oOnJzc5GamgqZTPZZdNu9e/cEw7n6Su5I1kQXzJ8/H40aNeJdpSQkJCAoKIg/VBQovu5OnTrhzz//BADeX3rJ+NJo2nfLUp8qn+IvXrxAbm6u2nrVtaOFhYXCIcyfk9evXyMoKEihXzVr1gx79+4FUHytnMF///79Cgckm5iYYMyYMZg+fToAxXZUBvfcvHjxAs+ePRNMwx0W/CnGaO7lRvXq1cu9bAaDwWAw/m0wAzqDwWAwGJ8APT09zJw5EwCwdOlSQR+jCxYswK1bt9C+fftPIoO9vT3GjRsHAPjtt98U4uPi4hAbGwsLCwtMnjz5k8hQFuzt7eHu7g4AOHTokEL8tm3byr3O4cOHw9XVFYmJiTh8+LBC/ObNm3H8+HHUrVuXD5s8eTIsLCxw+vRpxMXFKeS5ceMG1q1bB19f33J3J+Pr6wsdHR1kZmYiNjZWLk4qlWLXrl1K83JGsezsbD5s5syZGrtu4IxH69atQ2ZmplxcZmYm7zu7tJFJUyQSCb8j8uTJkyAi3ohUHtSpUweWlpZ49+7dRx9y+in6OXdo4MWLFxUMl0+ePFFppBW6t61bt1bwXa6ODh06wM3NDenp6Rg7dix69eol6Gv5U+k5oetYs2YNHB0dkZeX91l024oVKxTCTp48ib///htWVlYYPnw4H87pjwcPHuDAgQMK+Z48eYIlS5bA09OTd5eRmpqKzZs34/z58wrpuXasXLmyXPjH9N2y1Fe/fn2IRCI8fPiQ363MsXHjRrV1AsVfy5Q+JFQmk+H3338HAIwfP17jA30/BVlZWbx+Lw3XLhYWFvyhnPHx8Vi6dKngSyll7aiMunXronv37gCK+09p9u/fj0ePHsHV1VXueSsv7t+/DwBo2bJluZfNYDAYDMa/DmIwGAwGg6GUjIwMSklJod69exMA6t27N6WkpFBKSgrl5+erzCuTyWjUqFEEgAICAigqKoqePHlCly9fphEjRhAAWrNmDZ++qKiIUlJSaM+ePQSAmjRpwtdVVFQkV3Z+fr7StDk5OXLpOnfuTABoyJAhdOPGDUpOTqbIyEhydHQkMzMzOnHihFzZKSkpdPXqVQJALi4uSq9Xmbzv3r0jIqL09HRKSUkhAASAUlJSKCMjg4iI3r17RykpKdSkSRMCQHv27JG7zj179pBIJCIDAwOaN28e3b17l+Lj42nq1KlkbGwsJxtXJnevXFxcCABdvXqVUlJS5NprypQpcvexZFvFxcWRg4MDWVpa0po1a+jRo0d0584dWrhwIRkZGVFISIjCPT5x4gSZmZmRg4MDrV+/nhITE+nevXv0xx9/kJ2dHfn7+1Nubq7K54QjMzNT7llbvny53PWVJiQkhACQo6Mj/fXXX/Tw4UM6f/48derUiQwNDeWuMzMzk89369YtEolEJJFI6Pr163T58mVycnKivn37yt230u1Y8hmcN28eAaDGjRvzz3VUVBT5+fkRAJo3b55G16yMyMhI0tfXJz09PbKxsaHGjRt/VHmlGThwIAGgffv2KcRpex+07ec5OTmUkpJCy5cvl7tHXL8pKCggX19fAkC+vr508uRJevToER04cICqV6/O31tOrpL9cuXKlbwcDx8+pO3bt5NIJKI1a9bw/bV0305PTxe8Lu4eA6AzZ84obUttr18T0tPTydDQkIyMjCg2NpZu375NderUIT8/Pz5NWXSbKjg9x11z69atacSIEXTz5k1KTk6mzZs3k62tLenr69OBAwcU8sfFxZFYLCZTU1P67bffKCEhgf7++2/666+/qHLlylSrVi25ZygmJoYAkLOzM23atInu3btHiYmJtHv3bvL09CQ9PT06dOiQXB3q+q4qylIfEVHPnj0JAHXs2JGuXLlCjx8/ppUrV1KvXr2oUqVKcjpCJpPx/YfTtc2bN6fKlSvTjh07KDk5ma5fv06BgYEEgFq2bEl5eXl8XarGBa7fcOVOmTKFf/41HYuEdFpSUhIBIEtLS1q5ciXduXOHkpKS6OjRo9SwYUMCQKtXr+ZlDA0NJQDk5+dHR44coUePHtG9e/coLCyMTExMSCwWU3JyMhEpH6dLPgdv3ryhRo0aEQCaOnUq3b17lx49ekSrV68mCwsLcnBwoLi4OD69umvl2pC7Vq4NS5OWlkYikYjc3NxIJpOpfX4YDAaDwfivwwzoDAaDwWCooFWrVrxBpfQvJiZGozIOHDhAHTt2JFtbWzIwMCB3d3fq1asXXbhwQS4dt5AX+iUlJcml5YwhQr/w8HC5tFKplMLDw6lly5ZkaWlJBgYGVLlyZRo1ahQ9evRIQV5Nr1eZvEOGDCEiIjc3N4W4Vq1aERHRkCFD1F7n6dOnqU2bNmRubk76+vpUqVIlGjZsmMK1c2Uqu1eq2qt0W6WmptLUqVOpWrVqZGRkRHZ2dtS8eXPavn27UiPD48ePaezYseTu7k4GBgZkb29Pfn5+tGbNGjnjkDo4w4yyNiuNTCaj1atXU7169cjIyIgMDQ2pZs2a9NNPP9GqVavkyggNDZXLu27dOqpatSrp6+uTWCymAQMGUFpamtL7JvQMnjlzhnr06EEODg6kp6dHDg4O1L17d4qNjdX4mlWRkJBAK1eupMjISMrKyiqXMjmuXbtGAOjrr79WiNP2PnBo2s/Dw8NV9huiYiP+d999R+7u7qSnp0fm5ubUpEkT+vPPPxX6Tsl+WVBQQCEhISSRSEhfX5/c3Nzoxx9/JKlUqrS/urm5CV7Py5cvSU9Pj2rUqKFRm2p6/Zqyf/9+8vb2JgMDA7K1taUuXbpQYmKiXBptdZsqSrdLdnY2/fjjj7wusLS0pK+++oquXLmitIy0tDT67rvvqEaNGmRkZETW1tbk4+NDixYtovfv38ulLSwspGPHjtHw4cOpWrVqZGxsTCYmJlStWjUaOnQo3b17V7AOVX1XFWWtLysriyZMmEBOTk6kr69P7u7u9NNPP1F+fr6Crnj79q1C/wkNDaVz585Rx44dycbGhvT19alq1ao0Z84chZeLqsYFZf0mJiamTGMRV65MJqOzZ8/ShAkTqHbt2mRqakqGhoZUpUoVCgwMpIsXL8rJ+P79e9qyZQt1796dXFxcSF9fn6ysrMjb25t+/PFHuRdSysad0rokLy+Pli9fTr6+vmRmZkaGhoZUrVo1mjJlCqWmpsqlVXetytqwNEuWLCEA9Ntvv6l9dhgMBoPBYBCJiMrZKSeDwWAwGAwGg/GFM3LkSGzYsAEXL15EkyZNKlocBoPB+Cx8+PABVapUgVgsxs2bN+XOnWAwGAwGgyEMM6AzGAwGg8FgMP5z5OTkoF27dnj58iVOnz4NDw+PihaJwWAwPik5OTno0aMHbt68ifPnz6NatWoVLRKDwWAwGP8I2CGiDAaDwWAwGIz/HCYmJjh58iSaN2+O5s2bV7Q4DAaD8ckZPnw4Xr9+jUuXLjHjOYPBYDAYWsB2oDMYDAaDwWAw/tOcP3+eGdEZDMa/nosXL8LPzw86OmwfHYPBYDAY2sAM6AwGg8FgMBgMBoPBYDAYDAaDwWAIwF49MxgMBoPBYDAYDAaDwWAwGAwGgyEAM6AzGAwGg8FgMBgMBoPBYDAYDAaDIQAzoDMYDAaDwWAwGAwGg8FgMBgMBoMhADOgMxgMBoPBYDAYDAaDwWAwGAwGgyEAM6AzGAwGg8FgMBgMBoPBYDAYDAaDIYCepgmJCET0KWVhMBgMBoPBYDAYDAaDwWAwGAwG45MiEokgEok0SqvWgJ6dnY3U1FRkZWV9tGAMBoPBYDAYDAaDwWAwGAwGg8FgVDSGhoawtLSEg4MDdHV1laYTkYpt5UVFRUhISIBUKv0kQjIYDAaDwWAwGAwGg8FgMBgMBoNRURgbG8PDw0OpEV3lDvTU1FRIpVIYGRnBzc0N+vr6Gm9tZzAYDAaDwWAwGAwGg8FgMBgMBuNLQyqVIisrCy9evEBubi7S09Ph6OgomFalAf3Dhw8AAEdHRxgZGZW/pAwGg8FgMBgMBoPBYDAYDAaDwWB8RnR0dGBtbQ0AePr0Kd6/f6/UgK6jrBAiQmFhIYDibewMBoPBYDAYDAaDwWAwGAwGg8Fg/FswMzMDAOTn50OZp3OVBnQ+kY7SZAwGg8FgMBgMBoPBYDAYDAaDwWD84yhp99bagF4S5vecwWAwGAwGg8FgMBgMBoPBYDAY/yY0sXuzreUMBoPBYDAYDAaDwWAwGAwGg8FgCMAM6AwGg8FgMBgMBoPBYDAYDAaDwWAIwAzoDAaDwWAwGAwGg8FgMBgMBoPBYAjADOiMfwUFBQUoKCioaDH+MWRmZla0CAwGAPYsagPTcwwGg8Fg/Hth47x2sDkkg8H4r8D0nXZ8qvZiBnQ1TJ8+HSKRCKdOndI4j4+PDywtLSESiRAbG8uHf/3117C3t4dIJIKxsTEkEonCz8zMDEFBQXweFxcX2NjY8HlevXqlsu5169bJlX/gwAHBdMeOHYNIJMLMmTOVllWedfv7+8Pf319l/rISHx+P+vXr4927dwCA8ePHQyKRQCQSwcDAgG9bU1NTuLm5ISQkBO/fv9eqjqCgIJiZmcndKwMDA4hEIrkwGxsbVK5cufwvUg2dO3fm79WmTZvUph85ciSWLl366QVjaExKSgokEgmvO5ycnNQuon744QeIRCL+2YyLi/tM0pYPv/32G0aOHAkAkEqlctdvaWkJiUQCe3t7mJiYwNfXF1u3btW6DpFIBHt7e76PKtPBxsbGmDVrVjlfoWoSExP5ujU5tOTdu3fw8fHBrVu3PoN0DAaDoZzs7GwsWrQI9evXh6OjIyQSCapXr47AwECsWrVK63nWli1bIJFIoKur+8nmiyVRNlfXBm9v748uQ4hz587JjQ0lx7DS81BN5nwVjSZrDiHGjx/Pj9mfe3wGgJiYGH49oaenB4lEgvXr18ul6dOnD4yMjJCbmysX7u3tDQsLC5iZmaFt27Ya1cfWM2w98ylhOpvpbE1hOlszna2OS5cuYdCgQbxNzdHREQMHDsSjR4+0Luv06dNo1KgR/7cyu6KxsTGqVq2K0NBQ5Ofna1WHv78/v/7mfrq6utDV1ZULs7S0/Cx9vjTa9t8uXbogMjKy/AUhJUilUoqPj6f4+HiSSqXKkv2rkclk5OrqSgAoKChIq7zh4eEEgGJiYuTCk5KSCAANGTJEMF9oaKhCXExMDAEgABQaGqpS3ho1aqgsn2PAgAEEgNzd3VWmK6+6a9WqRbVq1VJZV1m4e/cu2djY0KFDhxTiAFCrVq34vwsLCyk8PJx0dHSofv36lJ+fr3E9Q4YMUbj+Vq1aUekuFBMTQ25ubtpcQrnB3avw8HC1adPT08nLy4vmz5//6QVjaAWnO9Tdy6ysLLK2tlbbN79U5s6dS7Vq1aJXr17JhXPXX/LaX79+Td27dycA9Ouvv2pVDwBKSkri/1amg4X6+OdiyJAhCrpEGQcOHCAbGxu6d+/eJ5aKwWAwhCksLCRfX19yc3OjS5cu8eH379/n50Ylw7XBzc1Nbu72KVE2V//cZSiDGxtKjmEladWqlUZzvopG0zWHENyYXZHznGrVqpGJiQkVFBTIhctkMrK3tycAdOrUKYV848ePp/Xr12tUB1vPyNfN1jPlC9PZ5VuGMpjO/u/obHVcuXKFAFCvXr34te7du3epevXqZGNjQ4mJiRqXFR0dTTY2NnTlyhW5cKE1bV5eHs2fP58A0FdffaWVzELPp5ubm8JYEB4e/tn6fGm06b8PHz4kR0dH2rp1q8bla2IDZzvQVXDu3Dno6+vDxMQEe/fuRV5eXoXJIhaLYWdnhz/++EOpHEeOHIG+vr7asnJycnDo0CHUrFkTSUlJuHTp0iev++bNm7h586Za2bRBJpNh8ODB6NKlC7p06aI2vZ6eHoKCgtC7d2/cvHkT27dvL1d5/knY29tj+fLl+Pnnn9lu1i+QatWqQV9fX+WumvDwcLi4uHxGqcqPuLg4hIaGIiwsDHZ2dmrT29ra4s8//4SJiQlmz56tsGvgv0S3bt3QoUMHDBkyBERU0eIwGIz/IAcOHMC1a9cQGhoKPz8/PrxGjRrYuXMndHV1K1A6xpeEtmuOL5GAgADk5OTg8uXLcuG3b9/md/hFRUUp5IuOjkZAQIDa8tl6puyw9YxmMJ3N0BSms9XrbE2QyWQwNjbGpk2b+LVurVq1sHLlSrx58wbz5s3TqJzs7GwMHjwY48ePl9uBrgxDQ0P88MMP8PPzw9GjR3H27NmPuo5/Mp6enpg1axbGjh2LlJSUciuXGdBVEBkZicGDB6Nr16748OEDDh8+/Mnr/Pnnn/Hnn38qhBsZGWHs2LF49eoVtmzZIpj3t99+w7fffqu2joMHD8LHxwcTJkwAAERERKhMXx516+vra2Tc14ajR48iLi4OkydP1ipf48aNAQBXrlzROM/ChQsxfvx4tekaNWokqJC/RNq3bw8vLy8sXLiwokVhlMLR0RF9+/bFnTt3cPLkSYV4mUyGlStXIiQkpAKk+3gWLFgAb29vtG7dWuM81tbWqFq1KrKzs3H37l2N892/fx/Ozs5q02nax78EpkyZgmvXruHEiRMVLQqDwfgP8vfffwOA4AtQBwcHTJs2Dfb29p9brP8cUVFRGDJkSEWLoRJt1xxfIm3atAFQbFwpSVRUFEaPHg0TExOFuX9aWhpyc3NRpUoVteWz9czHwdYz6mE6+8uA6ezPw6fW2Zrg4uKCJUuWwMzMTC68SZMmAIDr169rVE54eDhSUlIwceJEreovy/iwZcsW9OjRQ226Hj16KLUJfmkEBQVBX18fK1asKLcymQFdCYWFhdi9ezf69++P/v37A4BSHzqnTp1CgwYNYGFhgapVq2L27NmQSqVa1ZecnAyRSAQdHR3o6AjflnHjxsHAwABLly5V2HkYFxeHt2/famSQioyMRP/+/REYGAh9fX3s3LkTRUVFKvOUte43b94I+vj19vaGoaEh7yfs1q1bOHfuHMRiMe+HLyYmRqVMO3bsgI2NDerWrav2mkvCyS8SidCzZ08YGRnxdS5fvhwA8ODBA0gkEujr68PW1hYJCQka7ZQ1MTGBh4cHgOJd+c2aNYODgwMcHBzQoUMHOSVW2v/x8+fP0bNnTzg7O0MkEsn5lrpy5Qo6duwIBwcHSCQS1K1bF5MmTUJiYqKCDFKpFD/99BM8PDxgbW2NHj16ID09XVDegIAAHDhwoEK/rmAIw72QWrJkiULc/v37UbNmTf5ZK8n69et5/28lz1MICQlR6Vdy8+bN8PHxgYODA8RiMXr16oWEhAQ+nvMrZ2BggMqVKyM+Ph4tWrSAjY0NqlWrpvFAyu1s0MZ4zsH13by8PF5XcH7fuDfLc+bMgZ2dHfT09ODt7Y0aNWpo9PLO0dERdnZ2yMvL4/uPWCxGpUqVEBISwvskBYD58+fLtfG+ffv4MaBk+8pkMixfvhy1atWCWCyGq6srAgICsGrVKkG/dMnJyejUqRPs7e3h7u6ORYsWCcrq4+MDKyur//SuMwaDUXFIJBIAxYstoS9hFixYoDA+vXv3DpMmTUKlSpUgFovh4eGBnj17Yv/+/YJ1REVFoVGjRrCysoK3tzeOHz+ukEYmk2Hp0qXw8vKCjY0NxGIx+vfvj6SkJIW0mszVjx8/LujTd8mSJVr7deXGkipVqsDGxgYuLi4YM2aM2vOENGHWrFkICgqCrq4uRCKRwvj8v//9D23btuXHyZJzgaNHj6Jp06awsbGBjY0N2rRpgzNnzijU8e7dO0ycOBHOzs6wsbGBu7s7pk2bhpycHK1k1WbNkZiYiC5dusDCwgKVKlXCoEGDkJGRIZh206ZNaNu2LVxdXWFlZYWaNWsiLCxM7nks7aP59OnTaNiwIczNzdGyZUskJCRAKpVi8uTJcHZ2hqurKxYsWKBQV+vWrSESiRSMMdHR0ejYsSOaNWuGuLg4uXlCTEyMxvMctp5h65lPDdPZ6mE6uxims5UzZ84cmJubQyQSwdbWFkOHDuXjXFxcYGxsDAsLCyxfvhwuLi4YN26cQhnc+WY2NjYq6+LYsWMHvL29YWtrq1F6jpLjg6+vL/T19Xlf5nv27AFQ7FddIpFAR0cHDg4OKCgogKWlpdqyLS0tUalSJQDa2w9UPevHjh1DixYtYG9vD0dHR/j6+mLmzJlITU1VkCE3Nxfjxo2Dq6srHBwcMHToUGRlZSmkMzAwQPPmzct3zVxW/y/5hUX0JO39F/vLLyzS2NeNEIcOHaKGDRsWX2t+PtnY2JChoSG9fftWLl1sbCzp6enRkCFDKDs7mwoKCigsLIz3B66pD3QuXIiSfug431oHDx6US9OvXz/atGmTWh/rGRkZZGZmRm/evCEios6dOxMAOnr06CetW8jH759//kkAaObMmXzYsmXLqFevXoKylKZy5crk5+enNB6lfAZyBAYGEgCKiIggIqJ58+YRADp79qxcunfv3pGNjQ29e/dOsHwhn4Ec4eHhJBKJaOnSpVRUVER5eXk0ZcoUMjAwoKioKLm0XNt8/fXXvF/j77//npc9KiqKDAwM6Ntvv6W8vDySyWR0+PBhMjQ0pJCQEL4czmegt7c37dq1i2QyGSUkJJCtrS117txZUM7Vq1cLXvs/hQKpjFJyi77IX4FUVqZrKulXjHvGbt26JZemSZMmFBsby99zIT9zQn1RmV/JWbNmka6uLm3fvp2IiDIzM6lv375kaWlJd+/elUvbqlUrsrW1pT59+lBGRgYVFhbSuHHjCABdu3ZN7fXFxsYSAFqzZo3S6xeS8fXr12RsbEwWFhaUm5tLRERVq1YlDw8PhTLWrl1L/fv3FyxflZ4qKiqiNm3akJOTE9/mSUlJVLt2bfL29qbs7Gy59ADIy8uLRo0aRVlZWZSZmUnVqlXjZR8xYgSZmZnR6dOniajYb/3IkSMJAN28eZMvh9MBgYGB9PTpU5LJZPTbb78RANq1a5fgdTRu3JiqVKkiGMdgML4cpPl5lJv04Iv9SfPztL6m1NRUMjU1JQDUsGFD2rRpk8L8uCTZ2dnk7e1NtWrVokePHhER0dOnT6lx48ZkaWkpl9bNzY0qV65Mw4YNo6ysLMrLy6NevXqRoaEhPX/+XC7t8OHDydLSktexqamp1Lp1axKLxfTy5Us+nbZzdSGfvsr8ugr545RKpdS+fXtydXWlGzduEBFRYmIi1alTh7y8vCgrK0tpW5VEmT9dofOSiP5vfO7atSs9f/6cZDIZDRgwgE+7ZcsWEolEtHz5ciooKKDc3FyaPHky6enp0cmTJ/lyuPvl7e3N+2m9ceMGubi4kL+/v8ZnY2mz5nj16hU5OjpS/fr16dmzZySTySg6Opr8/PwE293W1pa+++47KigoIKlUSrt27SI9PT1atWqVQtncMzV+/HjKy8ujV69eUbVq1cjLy4sWL15MV69eJSKi5cuXK5Wvbt26ZGBgQDk5OURU7FPa3t6ecnNzaeHChQSA9u3bx6cfOXKkxn5X2Xrmy13PSDOzqCglTfPfqwzBcopeZWhVjjRTMx2hKUxn/x9MZyuH6Wz1OvvYsWMEgJYtW6YQV6tWLTp//rzK/MePHycAtHTpUrV1FRQUkL6+PvXt21cwXtWa1tfXlwDQhQsXiKh4TSoSiSg5OVku3YMHD8jV1VXpMyLkA52jLPYDdc/6b7/9RkVFRSSVSmn9+vUkEonk2prrv40bN6bY2FgiIrp48SLp6+tTcHCwoJzTp08nAPT06VPB+JJo4gO9zAb0J2nvqdec/V/s70nae7UNpIp+/frJPdic0WPDhg1y6Ro2bEhGRkYKk5I2bdqoNKAbGRmRWCzmf3Z2dhoZ0OPj4xUmUk+fPiVXV1fKz89Xa0Bfu3YtdevWjf87IiKCANDAgQM/ad3KDslr164d6erq0uXLl+n+/fvk7OxMqampgrKUJD8/n3R0dKh79+5K05SWNSsri37//XfS0dEhPz8/Kiws5K9BR0eHhg4dKpd/zZo1NGDAAKXlK5twvn//niwsLKhBgwZy4YWFhSQWi8nT01OuT3Fts2PHDj4sOTmZdu3aRVKplDw9Pcnd3V2hH44bN05wwlm6TQYPHkx6enqChwzt3btX8Ln+p5CSW0ST499+kb+U3LK9xCtpQD9w4IBCn7p48SL5+PgQEZWLAf3Ro0eko6Oj8OLq9evXZGBgQAEBAXLhQkb9xMREAkA///yz2utbv349AaD9+/cLxgsZ0J8+fUpfffUVAZCbaHGHpJw5c0auDD8/P8HDYYhUTza4usPCwuTCDx48SABozpw5cuEAyMbGhp+cEREdPXqU/ve//9GZM2cE26SgoICsrKwEDegl2yQ/P5/09PRo8ODBgtfRrVs30tHR0erwMAaD8fnJTXpA8W08v9hfbtKDMl3X0aNHSSwWE/7/odf6+vrUrl07ioyMpKIi+fFv9uzZBICio6Plwq9evSpojNHX16f09HQ+LDo6mgDQn3/+yYdxOnbu3Lly+R8+fEgA5OZH2s7VP9YYs3nzZgJAf/31l1zaU6dOKV14C8GNDXZ2dnJrBlNTU6XGGAByB43dvn2bTpw4QR8+fCBLS0tq06aNXJ6ioiKqVKkS1a1blw/j7te5c+fk0nLjd0mjgyq0WXNMnTqVANDx48flwufOnSvY7p06dVIY//r27UtOTk4KZbu5uZGBgQFvFCIqXvgDoBkzZvBh+fn5ZGBgQCNHjlQo49tvvyUAvNHqwoUL1Lp1ayIqfo4B0Pjx4/n0np6ecgZBZbD1zJe9nsk9HktvJ8/R+Pd+0R+C5bxf9IdW5eQejy3X6yBiOpuD6WzlMJ2tXmcXFRWRk5MT1atXTy78+vXrVLVqVbX5u3btSu7u7hq9lOH6xqRJkwTjhda07969ox9//JEA0DfffMOHX7hwgQDQ7Nmz5cqYMWOG3GbW0igzoJfVfqDqWW/ZsqVCPV999ZWgAb10m7Rs2ZIqVaokeA1Lly4lAPyLO1WwQ0TLSHZ2Ng4fPoy+ffvyYUJuXNLS0nD9+nX4+fkpfO6g7hOQPn36IDU1lf9du3ZNI9nq1q2LgIAAnDlzBjdu3AAArFixAqNGjYKBgYHa/NxnORxff/01TE1NsX//frWf+Hxs3UKsW7cORkZGGDRoEAYPHowFCxZALBarzff27VvIZDKYmJioTHfx4kVIJBJIJBK4uLggLCwM06dPx+nTp6GnpwcAcHV1RZs2bbBr1y5kZ2fzecPDw+U+zdGUkydP4sOHDwoHAenp6aFDhw5ITExEfHy8Qr6WLVvy/3dzc8M333yDmzdvIjExEW3atFFw7fP9999jzJgxCuVwvrU4nJ2dUVRUJPgJmqmpKQAo/dyKUbF06dIFVatWxbZt23gXJZqedaApe/fuhUwmU3hebW1t4efnh5iYGIXnw8TEBN7e3vzfrq6uAICXL1+qrY8rS13fDQkJgUQigYODA3x8fJCdnY29e/ciODiYTzN48GDo6OggPDycD0tISEBKSkqZDoHZvXs3ACi0RadOnaCrq4tdu3Yp5PH19YWxsbFc2po1a/Jp27dvL5deX18fx48fF3S/U7LvGhgYwN7eXmmbmpqaQiaTyX1+yGAwGJ+LTp064fHjx9i4cSOv506dOoX+/fujRYsWeP/+PZ92165dMDQ0lJvnAEDDhg35T4lL4unpKeePlzvHoqQ+5HRsu3btFPJaWFjwZ0R8zFy9rCiTrUGDBgCg9fkV165dk1szTJ06VWlaIyMjuYPG6tSpg/bt2+PkyZN4//69gky6urqoV68ebt26hbS0NF5+U1NTNG3a9KPk12bNcfjwYejp6aFt27Zy4cru0dGjRxXWHlWrVsXLly/lnj0OT09PWFtb8387OTkBKHaJxmFgYABbW1s8f/5cIX9pn7pRUVH8PMPHxweWlpa8T91nz55BX18fjo6OgrKXhK1n2Hrmc8F0tnKYzi6G6Wz1OltXVxcDBw5EfHw8bt++zYdv3rwZgwcPVpl37969OHHiBP766y9eZ6lC0zXzjh07+PGhcuXKOHToEBYtWoRt27bxaZo2bYpq1aph06ZNvHsXqVSKv/76S86NiqaUxX6g7lkvvWYGgOXLlwv6ZRcaH1StmYHyGx+YAV2AAwcOwNfXV64TtWzZEs7OzoiNjeVvDuevi/MrVhKhsPKCO2Tmt99+w4cPHxAREYGxY8eqzff8+XPcvHkT3bp148NMTU3RrVs3ZGVl4eDBg5+sbmVUrlwZCxcuxMOHD6Grq6tW8XBw/qO4SaMymjZtyg9eb9++xf3797FgwQIFpcX5TeIG0Pv37yMtLa1MRrhHjx4BgKAS5sKEfP05ODgohHHpuEGjJC4uLqhRo4ZCeGnfhtxgVVhYqJCWaz+uPRlfFjo6OggJCUFBQQHCwsLw+PFjXL16FX369Cm3OtQ9r0TEp+Eo7YdN1TNWGk377ooVK5Camor09HS8evUKsbGxCgOoi4sL2rZti127dvF+z8LDwzFkyBClZ0moQllb6Onpwc7OTuN+C6juu40bN4a5ublCuFDfVdamrO8yGIyKxsTEBMOGDcOJEyeQnp6ONWvWwNnZGZcuXcL8+fP5dImJiRCLxdDV1ZXLLxKJ+EVuSTSZx3A6tmvXrvzCkfsREd6+fQugYubqnGx169aVk8vLywumpqb8Im7JkiUKsn8syg4C5GRauHChQp1nz56Fqakpv75JTExEXl4enJyc5NJ17NgRpqameP36tVo5tF1zJCUlwc7OTuEZUdYm165dQ2BgIDw9PSEWiyGRSLB06VIA4O99SUo/U9zZKELPmtCGopYtW0JPT483xkRHR/NrBF1dXbRq1Qr3799HSkqKXJw62HqGrWc+J0xnC8N0NtPZ2uhIzuDMnXlVWFiIHTt2qLRj3b59G0FBQdiwYQOaNWumUT2ajg8lN+a+ffsW8fHxmDZtmkK+oKAgJCUl8T70T548CQ8PD3h6emokT0nKYj9Q96wLjQ9Vq1aFm5ubQrjQc6DMV395jw+q74YKJDamWDr607wFLA8kNurf6igjIiICN27cUFAAWVlZkMlk2L59u9YnpaujcuXKgod6CPHVV1+hevXq2LVrFxwcHNCtWzeNDhbYtm0bCgsL4e7uLhfOPUyRkZFyu+7Ls25VNG/eHAAQHx+PBw8eoHr16mrzcG/iNDHYaUKPHj1gZWWF8PBwBAUF8Ua4kgeffmpUGfy06fDaGA65ctW92fxSsTXQwXfVFQ2RXwK2BuXzfjIoKAg//fQT1qxZg9TUVIwdO1ajQzGFkMlk5SJTWYzTHOXdd4cOHYqTJ09i165dGDx4MLZu3Yrz58+XS9maoK4tWN9lMP7bGDi5ofqGIxUthlIMnBQXJmXBysoKo0ePhr+/P7y8vBQOgv9UuvDcuXMazRs/lrKMn8nJyTAyMlIaP3XqVJU7E5Wh6lA8dW23aNEijB49Wm0d9vb2/JdvZaE81hzKuHbtGpo1a4aAgADExsbCxcUFQHG7zJ49WzCPsvm8pvN8c3NzNGzYkN9ZeufOHbmddAEBATh48CCioqIQExMjZ4RSBVvPlK0cZeWW95zIoFlD6Nf10jyDEkOX6bA+gBLjjhAis7LbMTSF6WxFmM5mOlsTvLy84Ovri4iICPz66684cuQIateuzR+sWZrHjx+jY8eOmDVrFgYNGqRxPeU9PgwePBg//vgjwsPD4e/vX+avk8rKv2XNXGYDuoGeLio5WJSLEF8SGRkZOH/+PF68eAEzMzO5uLt376JOnTqIiIjA5MmTeQUjdDKsUFh5IRKJMGnSJIwdOxYrV67EvXv3NMoXGRmJw4cPK7xhk0qlcHZ2xvHjx/HmzRuVpwKXtW5lFBUVYeTIkQgLC8N3332H4cOH49y5c2qVo7W1NQwNDcvNfYGRkRH69OmDdevW4cGDB4iIiMCFCxfKVBb3Fk/oMxJuYNP0TR+XTmhAzMrKQnZ2tkYub5TBtZ/QG79/Avo6IkiMdNUn/AdjamqKUaNGYdGiRdixYweePXumUT5dXV2FN7FCn72qe15FIpGgu5Gywr2pLq++2717d36x6ODggGrVqilM/jTF09MTCQkJePnypVwZRUVFeP36NWrWrKlVWUBxG5ZeKKSnp8PY2FhwF7qmvHv3DsbGxnKfNzIYjC8PHQNDGFWuVtFilCsRERE4ePAgduzYoRBXvXp12NnZye0I8/T0xP3791FUVCS3I4qI8OLFCzg4OGjtCpDTsS9evFDQsU+ePEFaWhoaNWpUprm6np6eRuOnKtm4saRKlSpycQ8ePEB+fr6cG7TPQcn2Ks2HDx9w9epVtG7dGrq6uvD09MS9e/dQWFio8MI+Pj4epqamqFq1qsr6tF1zuLu7IzExEVKpVG5Ho9A9ioiIQGFhIebOncsbYj4Hbdq0weXLl7FgwQI0atRI7lnmduVGRUXhzJkzWLZsmUZlsvXMl72e0TEzBcrBmK1rp3xt/TlgOlu9bExnM52tDUFBQQgODsaxY8ewefNmpW5QXr58ibZt22LUqFFyG3CvX7+Ohg0bqqyjvNfMzs7OaNeuHXbv3o05c+YgOjpazg2qNpSn/UDV+PD+/XsUFhYq7DjXhvIeH5gLl1Ls3LkTHTt2VDCeA0Dt2rVRq1YtxMXF4cGDBxCLxfD19cXly5cVfDfFxsaWqf4tW7YIfhpVmsGDB8PW1hYdO3YU/OytNAkJCUhLS4O/v79CnK6uLr755hsUFhYK+vj92LpVsXjxYnh7e2P8+PGYNWsWLly4gFWrVqnNp6OjAy8vL8FBpawMHToURITBgwejRo0aqFy5cpnKad++PSwtLXHkiPyOs6KiIpw4cQKenp6oV6+eRmXVr18fnp6eOHHihMLEIDg4+KO/hOB8htWqVeujymF8WsaPHw99fX0MGTJE5Quukjg5OSn4hLt8+bJCup49e0JXV1fhec3IyMDly5fRunXrj/7KpCTcs1ZefdfIyAh9+/bFuXPnMHv2bAwbNqzMZfXu3RsAFNri2LFjkEqlCAwM1Lqsw4cPy4VnZ2fD3d1d8F5ow/Pnz+Hl5fVZd5UxGAwGULwb6sKFC8jLy1OIS09Px+vXr3nfq0CxPpRKpTh+/Lhc2tjYWFSrVk2wHHVwOnb//v0KccHBwdi6dSsAlGmurun4qa1sRITAwECcPn1a47LKC25uKtRe69atw+TJk3kjSO/evSGTyXDo0CG5dHl5eWjXrh3u3Lmjsq6yrDm6du2KoqIihbYRukeGhoaC9Wq6waCscIaldevWKRiZateuDQcHB+zZswc2NjYav9xm6xm2nvkcMJ1dNtmYzmY6Wxl9+/aFoaEhli5dirNnz6Jnz54KaTIyMtCuXTt0795d4SsEX19ftXU4OTnB2tq63MeHnJwc9O7dm/dxXxbK037APeul18wA0K1bN61fbpTm+fPn/FhbHjADeikiIyPRr18/pfGc7+GIiAgAxQbgoqIiTJo0CTk5OSgsLMQff/yBu3fvlql+mUwGqVSqNp2JiQnS09MVHlplREREoHfv3ko/dyh9XeVZtzISEhKwfv163v/V1KlT0bBhQ3z//fdITk5Wm79Nmzb8W+HyoHHjxvDy8sLVq1c/6nMWc3NzhIWFIS4uDsuXL4dUKkVBQQFmzJiBt2/fYt26dRp/dqKjo4O1a9fizZs3mD59OvLz80FE2L59O/bt24dp06aVWU4AuHXrFiQSCWrXrv1R5TA+LS4uLsjNzcXvv/+ucZ4uXbrg0qVLuHjxIgDg7NmzuHLlikI6d3d3zJ49G/v378fOnTsBFO8GmjBhAoyNjREWFlY+F/H/8fb2hr29vdzBKx8L99Y/ISEBvXr1KnM5AwYMQPv27bFw4UJevidPnuCHH36At7c3pkyZonFZLVq0wIgRI7B27Vr+s9gPHz5gxIgRaNCggUYvSpWRm5uLhw8fKhwsxGAwGJ+LFy9eYNCgQby/WqD4S83AwEBYWFhg5syZfPiUKVPg7e2N77//nk//+PFjTJw4EZMnT4aFhfZftHI6dsOGDThw4ACICIWFhVi0aBGuXbsm95m9tnP1Ll264MmTJ/xheXfv3sXRo0c1lq3kWMK5FMvJycGkSZNQUFCA4cOHa329Hws3N7179y5mzZrFzydPnDiBefPm4ZdffuHTcvdr+vTpfBu9efMGgwcPhpeXF7p27aqyrrKsOaZNmwZHR0f88MMPvLHgzJkzguuS7t27Q0dHB6Ghobzv3JMnTyIyMlKLFtGepk2bwsjICPn5+YL+clu3bo3MzEyt/Y2z9Qxbz3wOmM5WDtPZTGdri42NDbp27YrY2FhBQ3RmZiY6deqE9PR0WFhYYNasWXI/TQkICCjXNTP35fbHjg/laT8oOdYsW7YMUqkUUqkUS5cuRUJCAsaNG1dmOYHi8cHX11fhUOIyQ0qQSqUUHx9P8fHxJJVKlSX71/Dy5UsSi8UkEonIzs6O5s2bp5CmX79+ZGVlRQDI0NCQxGIxERGdPHmSGjRoQObm5lS5cmX69ttvafXq1QSArK2t6auvviIiooCAADIwMCAApKOjQ4aGhgo/PT09atWqFV9n/fr1ydramnR0dEgsFtPixYuVXkOPHj3Izs6OAJCRkRGJxWKKjo4mPz8/MjQ0JAsLC16WkoSFhZGDgwMBIJFIRGKxmC5cuFAudWdkZJBYLCYjIyMCQGKxmH755RcKDAwkMzMzMjY2pm7duhER0ffff0/m5uYEgMzNzWnEiBEq79ndu3dJJBLR/v375cKDg4NJLBYTANLX1yexWEyBgYEqy+JYtGgRWVhYUE5OjtI027dvJ7FYTPr6+vw1TZw4USHdkSNHqFmzZmRnZ0f29vbUrl07unTpEh///v17hbYpee9LcunSJWrfvj3Z2dmRRCKh1q1b04ULF/j4oKAgsra2JgBkYWFBPXr0ICKihg0bkqmpKQEgOzs7mj17Np8nJyeH7O3t6fvvv9eobRiflqKiIhKLxWRhYcE/t9u3b1eavmHDhvw9NzU1JbFYTA8fPuTjP3z4QEFBQWRvb0/Ozs4UHBxMx44d45+R+vXry5W3ZcsWql+/Ptnb25ODgwP16NGD7t27x8ffvXuXf+45nXDhwgW+P5Ts+9nZ2Sqv9bvvviOxWEx5eXmC18/JKBaLaffu3Rq1n5eXl1qdIaSnSvYjIqK8vDz66aefqEqVKuTg4EAuLi40YcIEevv2LZ9m3bp1Ctf8xx9/KNQnlUpp6dKl5OXlRQ4ODlSpUiUaN24cvXnzhoiEdcD27dvpwoULJBaLSUdHh38WEhIS+HJ37dpFIpFILozBYDA+FxkZGbRu3Trq0aMHeXp68rq7cuXKNHToUEpMTFTI8/btW5o4cSK5uLiQWCymatWq0ZIlS/g1xrFjxxT03tOnT2nx4sW83jY1NaWaNWvyZUqlUlq+fDnVrFmTbG1tyc3NjXr37i2oGzWdqxMRFRQU0JQpU8jJyYnEYjH169eP4uLi5MbboqIiqlOnDj9mWVtb8/NZouKxJDQ0lKpUqUL29vbk7u5OI0aMoBcvXqht37Nnz8qNDXZ2dgrjQEmExueBAwcKpj127Bi1aNGCbGxsyNnZmVq1akUnT54UvF8hISH8/fLw8KApU6bIjYVClHXNQUSUmJhInTt3JnNzc3J2dqYePXrQ2bNn5dqdmzfs3buX6tevT6amplSpUiXq168fjRw5Um6+K/RMvXz5kvr16yd33yZPnkw3btxQSHv37l0F+QMCAsja2lpwbbxu3ToCQEePHlXZRqVh6xm2nvnUMJ3NdLYymM7WXmdzHDp0iABQbGysQty+ffsIgMqfJhw5coQAUHx8vFx4t27dFNa0kydP1qjMsWPHUtWqVVWmWbx4Md++qmyBZbEfKHvWjx49yo81jo6O1LVrV/rf//7Hx7dp00buOeDGq9Ljz59//snnefnyJenr69PatWs1ahtNbOAiIuGTK2UyGf+5R506dT7q0DgG41MxbNgw3LlzB1evXi0XVwbLli1DQkIC1q5dWw7SfdksX74cCxcuREJCAvOjzPisZGRkoEaNGggNDcX48ePLpcy6detizZo1aNKkSbmU96Uik8nQsGFDNGzYEOvWratocRgMBoPBYHwkbD1Tdth6hsFg/Jtp06YNrK2tsXv37nIpLyQkBBKJBN9//325lPclM2nSJJw6dQrx8fEK5wMIoYkNnFnFGf9oVq1aBX19fYwZMwZK3gWpRCaTITMzk/97y5Ytn/U04ori9OnTmD9/Pvbu3csmm4zPjq2tLfbu3Ys5c+YgKiqqTGXk5OTwp2rfunUL+fn5/3rjORFhzJgxMDY2xooVKypaHAaDwWAwGOUAW8+UDbaeYTAY/3YiIyNx+/ZtLFiwoEz5CwsLkZ2dzf9/165dGDx4cHmK+EWyZcsW7Ny5E/v27dPIeK4pzIDO+EdjYmKC6OhomJiYlOmAhadPn6JRo0YoLCzE4cOHoa+vDz8/v08g6ZdFVFQUYmJi0KxZs4oWhfEfpUWLFoiKiirzwTy//vorfv31VxAR5s+fj4kTJ5azhF8eL168gKmpKaKiomBsbFzR4jAYDAaDwSgH2HqmbLD1DIPB+LcjFotx+fJlJCQklCn/hQsX0L17dxAR1q5di+bNm8PZ2bmcpfzyuHLlCq5cuYJq1aqVa7nMhQvjP01qair8/Pzw4cMHuLq6IiIigh1Aw2D8A1i/fj2mTZsGQ0NDtG/fHn/++Sf09PQqWiwGg8FgMBiMzwpbzzAYDAZDiJs3b6Jz584oKChAtWrVsHv3bjg5OVW0WF8kmtjAmQGdwWAwGAwGg8FgMBgMBoPBYDAY/zmYD3QGg8FgMBgMBoPBYDAYDAaDwWAwyggzoDMYDAaDwWAwGAwGg8FgMBgMBoMhADOgMxgMBoPBYDAYDAaDwWAwGAwGgyEAM6AzGAwGg8FgMBgMBoPBYDAYDAaDIQAzoDMY/0JkMhmys7MrWgyezMzMihaBwVDJl/SMfkmyMBgMBoPB+DwUFBSgoKCgosXgYfMRBoPBKOZL0odfkiz/NZgBXQAiQkREBNq1awdnZ2fY2NhAIpGgXbt2WLhwIRITEytaRPz8889wcnJCampqRYuilKtXr0IikcDMzAwikQiLFi0STOfh4QEbGxvo6upCIpEgJCREMN39+/chEokwYMAAreRYtGgRJBIJRCIRgoKCtL2MjyYxMRESiQR6enoQiUSQSCT4+eef5dJMnz4dIpEISUlJcuGdO3eGtbU1jI2NUb16dY3qS05Ohp+fH/7++28AQEhICCQSCYyNjSESiWBvb4+vv/5aMK9MJoOTkxNcXV1BRArxBw4cgEQigY6ODkQiEaytrdG5c2c5ee3t7fnrXLVqFQBg1qxZ+O677yCVSjW6hv8iKSkpkEgksLS0hEgkwtixYwXT+fv7y7Vxz549BdO9e/cORkZGaNasmVZyREZGQiKRQFdXF/7+/tpexkeTn58PiUQCQ0NDiEQiODg4YOjQoXJpVq9eDZFIhJiYGLnwMWPGwM7ODgYGBpBIJPjw4YPa+jIyMtChQwdER0cDAJYsWSKnt2xsbODj46M0f+PGjWFsbCw4kYmLi4NEIoG+vj5EIhEsLCzg7e0tJy+nmxwcHDB9+nQAwJ9//onBgwcjNzdXrfwMBoNREWRnZ2PRokWoX78+HB0dIZFIUL16dQQGBmLVqlV4//69VuVt2bLls449Pj4+/HgbGxtbpjK8vb0/ugwhzp07pzBvk0gkCj8DAwNs2rSp3Or9VBw7dgwikQgzZ87UKt/48eP5+c6sWbM+jXAqiImJ4cdoPT09SCQSrF+/Xi5Nnz59YGRkpDBee3t7w8LCAmZmZmjbtq1G9cXHx6N+/fp49+4dAKBnz578febmfOPHjxfMq27Ot2rVKojFYohEIohEItjZ2WHMmDFy8trY2PDXeeDAAQDAyJEjsXTpUo3kZ3zZaKOz8/Pz4eXl9VnWzdy8n5t3Jycnl0u5Y8aMgZWVFUQiEczNzRXWBZmZmdDX18eQIUPk8nH9Xl9fH/b29gp9vqxw9gBOr1c0ysYZe3t7VK1aFUFBQTh//rxg3tTUVDg5OSE0NJQP49aPmuirslJRNrrc3FwMGjQIf/75JwBgx44dcmt2S0tLSCQSpXaOPn36QCQS4eHDhwpxr169gkQigZGREUQiEUxNTSGRSJCfnw8AmD9/Pj83srW1Rf/+/QEAUVFR6NixI968efNJrpmhAlKCVCql+Ph4io+PJ6lUqizZv46srCzq1KkTValShY4fP85fe1paGoWGhpKuri4BoDt37nxyWYYMGULKblFwcDCZmJhQcnLyJ5fjYwkNDSUAZGBgQLdv3xZMExMTQ25ubirLmTlzJgEgU1NTys7O1loOADRkyBCt85UX7du3JwD0/PlzhbgGDRoQAFq/fr1C3JIlS2jmzJka1fHy5UtycXGhP/74QyGOe56SkpKU5j916hQBIAAUGxurNN3o0aMJAAUFBSnEzZs3T6Gds7OzqWXLljRy5EiNruO/THh4OH8Pjh8/LpgmKSlJqW7gWL9+PQEgkUik8p4rw83NjVq1aqV1vvJi1KhRBIDOnz+vENerVy8CINgvdu/eTQMGDNCojszMTKpbty5NmzZNIY7TWzExMUrzP3z4kL9XmzZtUppu4cKFBIBat26tELd161by9/eXCysqKqI+ffpQx44dqaioSKNrYTAYjM9FYWEh+fr6kpubG126dIkPv3//PrVq1YoAyIVrw+cce7jxVpWe/xxlKEPdvK1Vq1YUHh5e7vWWNwMGDCAA5O7urnVebr4TGhpa/oJpSLVq1cjExIQKCgrkwmUyGdnb2xMAOnXqlEK+8ePHC87rhbh79y7Z2NjQoUOHFOK4PqUKTed8HTt2JAA0a9YshbgRI0YotHN6ejp5eXnR/PnzNboOxpeJtjo7KyuLHBwcqHPnzp9NRm7eXZY1izIuXrxIAGjEiBEKcYcOHSIA5OzsrBBXVFRE9vb2ZbI3qEOVfaciEBpn7t+/T+PHjyeRSESDBw+m3NxcuTzJyclkYmJCwcHBCuVpoq/KQkXZ6IqKiqhDhw7Ur18/BZsoN/6rGoc/fPhAxsbGSvUux7Zt2wgAVa9enfLz8+Xizp07RzVq1KC8vDy58ClTplC9evUoKytL+wtjCKKJDZztQC/FsGHDcO7cOURHR6NDhw7Q0SluIgcHB8yaNYvfAVFUVFSBUgJhYWF49eoV3NzcKlQOTXFzc0NBQQEGDRpU5k8Tt23bhtq1ayM7O5vfGfFPIiAgAAD4na4cb9++xaNHjwAUv00sTXR0NJ9XHePGjUOVKlWU7l5WR2RkJGrXrs3/XxkLFy6Evb09Nm/ejAsXLvDhjx49wpo1a7BkyRK59CYmJli7di02btyII0eOlEm2/xJOTk7Q09PDsGHD8Pbt2zKVwd1LIsK2bdvKWcJPj7L+IpPJcOHCBRgbG390f/npp5+QmZmJ+fPnl0lGTfvLlClT4OXlhZiYGLl0b9++xffff481a9bIpdfV1cXvv/+O8+fPK8QxGAxGRXPgwAFcu3YNoaGh8PPz48Nr1KiBnTt3QldXtwKlY3xJ5OTk4NChQ6hZsyaSkpJw6dKlihZJawICApCTk4PLly/Lhd++fZvfJfgx8xGZTIbBgwejS5cu6NKlS5lk1HTOFxYWBkNDQ/zyyy94/PgxH37+/HmcP38e33//vVx6e3t7LF++HD///DNu3bpVJtkYFY+2OtvU1BRPnjz5R663S+Lr6wtzc3OFtQRQ3GctLCzw4sULPHjwQC4uLi4ONWrUgImJyecS9YuiRo0aCAsLw4YNG7BlyxaMGDFCLt7NzQ2vXr1CWFjYZ5Opomx0q1atwqVLl/DHH3/wdWrDvn37UKVKFQCq14p9+/ZFmzZt8ODBAzk7SmFhIcaMGYPVq1fD0NBQLs/ChQvx9u3bCvlC678MM6CXIDo6Gjt37sTo0aOVGqYnTJgAAwODzyyZIiKR6B+l1P39/TF8+HDcunWrTJ388uXLICIsXrwYABAREVHOEn562rRpA0DRIBgTE4POnTvDw8MD0dHRcq5TioqKcP36dTRt2lRt+Xfv3sX+/fsxefLkMsmXn5+Pffv2YevWrTA0NMTu3btRWFgomNba2hqLFi0CESE4OJj/ZGns2LGYO3cu7OzsFPLUqFEDX331FebOnVsm+f5LVK1aFaGhoXj58iWCg4O1zv/y5UvcuHGD/7Rb1YD9pRIQEACRSKTQX+Lj4+Hh4YGmTZvi2rVrCm5aYmJi+L6mioyMDKxevRoTJ06Enp5emWTctm0bVq5cCScnJ0RFRSEtLU0wnb6+Pn7//XcAwNSpU3mZp02bhmHDhgm6Z7K1tUVQUBAWLlzIXB8xGIwvCs5FnNBY7+DggGnTpsHe3v5zi/WfIyoqSsH9wJfGwYMH4ePjgwkTJgD4d83fo6KiMHr0aJiYmCgY0NPS0pCbm8sbTlRx9OhRxMXFlXn+rs2cz9PTE9OnT0deXh4mTpwIQLWBBgDat28PLy8vLFy4sEzyMSqesuhsIyOjf/zLUD09PbRs2RKPHz/GkydP5OKioqLw7bff8v8viaZriX87w4YNQ8eOHREREaHgNtPExOSzuaKpKBtdUVERfvnlFwwbNgxWVlZlKiMyMhLfffcdGjdujL///hvXr19Xmvb333+HgYEB5s+fj6dPnwIAfv31VzRs2FDQtZ2+vj4mTJiA33//vcwb7hjawwzoJeD8Gql6+29paYlLly6hatWqfNiBAwfQrVs3uLm5wcbGBh4eHpg1a5ac8XH9+vWCfrhDQkJgY2MDkUjET3w4X2A7duwAAN7XoYeHB4BiY7Qyn4tv377FxIkTUalSJYjFYnh4eODnn3/md0gAQNu2bQXzK/PLVVRUhLlz56Jq1apwdHRElSpV0LdvX8HdFqpYvnw5PD098euvv2q9AyUyMhL9+vVD27Zt4eDggJMnTyIjI0MwbXp6OgYMGAArKys4OzujW7duCoMmhyb3jvOFZmBggMqVK+PmzZto0aIFLC0t4ePjg4sXLwIAfvnlF7i7u0MsFmPSpEkKxmcfHx9YWVkpDEDcDpWAgACkp6fj7t27fNz169dRu3ZtGBkZqW0j7nlp3bq12rRCHDlyBDVr1kTdunXx1Vdf4c2bNzh27JjS9EFBQWjWrBlu3bqFVatWISIiAoWFhSr95QUEBODKlSvl5t/u38z333+PZs2aYdu2bdi1a5dWebdv344uXbqgQYMGqF+/Pu7evYvbt28Lps3KykJwcDDs7e3h5OSE1q1bK91ldObMGfTt2xdVqlSBnZ0dXF1dERISgqysLD5NaR9/ycnJ6NChA2xsbFCjRg0cPHgQALBp0yZ4eXnBxsYGgwYNkisDKN71VLt2bVy6dAl5eXl8eMn+IpVKcebMGT4uNTUVBQUFGn2Zs3//fuTn55e5v8TFxSErKwv+/v7o06cPpFIp3weFaN26Nfr374+UlBSEhoYq3e1VkoCAALx48QLnzp0rk4wMBoPxKZBIJACK/ZaTwHkpCxYs4OesHO/evcOkSZPk5qc9e/bE/v37BeuIiopCo0aNYGVlBW9vbxw/flwhjUwmw9KlS/mxRCwWo3///grnyQDAqVOn0KBBA1hYWKBq1aqYPXu2wsvJ48ePC/phX7Jkida+uPPy8vDTTz+hSpUqsLGxgYuLC8aMGYNXr15plF8Vs2bNQlBQEHR1dfnzQErOU//3v/+hbdu2vM/rkvOyo0ePomnTprCxsYGNjQ3atGkjN45yvHv3DhMnTuT9zLq7u2PatGnIycnRStbIyEj0798fgYGB0NfXx86dO5XuEExMTESXLl1gYWGBSpUqYdCgQUrn+ps2bULbtm3h6uoKKysr1KxZE2FhYXLPY2m/+qdPn0bDhg1hbm6Oli1bIiEhAVKpFJMnT4azszNcXV2xYMEChbpat24t+EI/OjoaHTt2RLNmzRAXF8f7LgeK1w6azi927NgBGxsb1K1bV6P0pdFmzgcUzy89PDxw5MgRHDhwQKWBhiMgIAAHDhyQm48x/jloo7Nv3bolp084xowZI6cHV65cCS8vL1haWqJNmzaC/qe5Pm1ubg4XFxf06tULZ8+ehUgkgpmZmZyvZ2V8rC4S+qL11atX+PDhA0aNGgVA0YBe+usRTp97eHhALBajUqVKCAkJkevznK9qTufu27ePH3NK2nlKs379er5dHRwceB/Xml57586deVvSn3/+ifnz56NGjRr8+Usfu+YePnw4AGDjxo0AgMOHD5fbeSXcGF6zZk2IxWI4OTkhKCgIL168kEtXVhsdUGzfaNasGRwcHODg4IAOHTrgypUrGsl35swZpKamlnmtmJ6ejgsXLqBnz578fVX1grN69eqYOnUqcnJyEBISovTL/pIEBAQgNzf3H/+1yD+Ksvp/kRUUUlFK2hf7kxUUau3zxt3dnQBQWlqaVvkaNGhAAwYM4P0PxcTEkIWFBU2dOlUhLQT8cMfExAj6T1LlI0vI52JWVhbVrl2bateuzfuxunXrFjk5OVGHDh3k7qMyn41Cdf7444/k7OxMDx8+JCKiN2/eULdu3TT2URkaGspf86VLl0hXV5c8PT3l/Iqp8oFeVFREYrGY7t69S0TF/t8BCPr5zsvLozp16pCbmxvdu3ePiIji4+N5/+Ol216be9eqVSuytbWlIUOG0IcPHygrK4uaN29Otra2tHr1ajpy5AgREe3bt0+pfF9//TUBoMTERD6sRo0alJSUxPu+WrZsGR83f/58mjdvnmC7lMbf358kEonSeHW+NHv16kWrVq0iIqJdu3YRAOrdu7fKOm/fvk16enpkYWFBrq6ulJCQoDL9sWPHCABt2bJF9cVoiFQqpaysrC/yV9azI8LDw/m+9fjxYzI3NydbW1tKSUnh06jzgd6gQQM6fPgwEREtXryYAAj6+SYq9s1vaWlJFy5c4Mtu164d2djYKPTxXr16UZs2bej169dERHTz5k1ydXWlb775RqFc7nkbOHAgpaWlUWFhIfXu3ZsMDAxo48aN9Oeff5JMJqOrV6+Snp6eoHwhISEEgE6fPs2HdezYkWJiYujSpUsEgEJCQvi4iIgIQT+HQgQFBREABX9yHOp8oE+ZMoXXE9euXSMA1KhRI5V1pqSkkIWFBenq6pK7u7tan7n3798nADRnzhy118NgML5M8ooK6f7b11/sL69I+/lyamoqmZqaEgBq2LAhbdq0id6+fas0fXZ2Nnl7e1OtWrXo0aNHRET09OlTaty4MVlaWsqldXNzo8qVK9OwYcMoKyuL8vLyqFevXmRoaKhwhszw4cPJ0tKSHyNSU1OpdevWJBaL6eXLl3y62NhY0tPToyFDhlB2djYVFBRQWFgY1ahRQ1DPC/lhV+aLW2g+LZVKqX379uTq6ko3btwgIqLExESqU6cOeXl5aeyvVNm8reS8uiTcPLVr1670/PlzkslkNGDAAD7tli1bSCQS0fLly6mgoIByc3Np8uTJpKenRydPnuTL4e6Xt7c3P1+9ceMGubi4kL+/v8bzm4yMDDIzM6M3b94QEVHnzp0JAB09elQh7atXr8jR0ZHq169Pz549I5lMRtHR0eTn5yfY7ra2tvTdd99RQUEBSaVS2rVrF+np6fHz2JJwz9T48eMpLy+PXr16RdWqVSMvLy9avHgxXb16lYiIli9frlS+unXrkoGBAeXk5BBRsU9pe3t7ys3N5c852bdvH59+5MiRtHXrVo3aqXLlyuTn56c0Xp1PYW3mfBxHjx4lAOTi4kIuLi706tUrlelXr15NAOjs2bMq0/3byMh+S4mvkzT+PX2reM4VEdHTt8+1Kicj+225Xoe2Opuo+LkrvTbn9GDNmjVpxYoVVFRURM+fPyd3d3eqXbu2XFplfbp69eqCfVrIB3p56KKbN2/y6xGO7du383qxevXqZG1tzZdVUFBADg4O/JkHRUVF1KZNG3JycqJbt27x7VC7dm3y9vZW8JMOgLy8vGjUqFGUlZVFmZmZVK1aNd7OU9rWUlhYSL169aIJEybIlaPNtXO2JG9vb1q/fj0VFhbSvXv3SFdXV61PeXX2gSdPngieYaHsvBJtfKAHBQWRmZkZRUdHE1HxmQv+/v7k4uJCqampfLqy2ujCw8NJJBLR0qVLqaioiPLy8mjKlClkYGBAUVFRavPPmjWLACi1b6jzgR4WFsavkVNTU0lXV5ccHR1VPrc5OTlUuXJlAkCenp5qzznJyckhADRs2DC118NQjyY+0Mv23ToAWcYbZC5eW9bsnxzz70ZDV+KgVZ6UlBQA0PoTjZo1a+KXX36BqakpgOId4uPGjcOSJUswe/bsz+ZqZfHixbh79y4OHTrEvzH29vbGjBkzMHHiRERERGDQoEFal3v48GE0btwYnp6eAIrddyxYsACLFi3Suiw/Pz/MnDkTc+bMwXfffce7NVBFVFQUxGIxatWqBQDo378/fv/9d0RGRir4+t6wYQPu3LmDNWvWwMvLCwBQt25dDBo0CCdPnlQoW9t7l5GRgWnTpsHc3BwAMGLECAQFBeHMmTO8z8Hu3bvDzc0N+/btU5CP28ERHR0NDw8PvHz5EgUFBahcuTL/KVRUVBQmTZoEoHgHy5w5c9S2EQA8fPiQ32GgLR8+fMCJEyewevVqAOB3AB06dAhZWVkwMzMTzFenTh1MmDABy5YtQ8OGDQVdUZRELBYD+L9PCT+W3NxclZ9CVSQNGzbkn6uy4u7ujhUrVmDYsGEYPny4Rv7j//77bzx58gTt27cHUOxTbfr06di+fTt++eUXuS9Mjhw5gpMnT2LGjBm8m6DKlSvj559/RosWLRTK9vDwQGBgIGxtbQEA9erVw8yZMzFmzBg8fPhQ4a0/APTr1w8ODsW6eNy4cdi5cyfWr1/Pf4Xi6+uLZs2aYd++fQo6JSAgACtWrEB0dDTatGmDwsJCXL9+HU2aNIGenh4sLCzkdo3ExMRo7P/84cOHsLKyEvxcWR0ymQw7duzgd9M3bNgQ1apVw9WrV/Ho0SOFnZccEokEc+fORUhICHR0dNCqVSuV9ZR3f2EwGJ+fpMz3aHHwy3Vbca7bANSwstUqj1gsxq5duzB06FBcv34dQUFB0NfXh7+/P4YOHYrevXvLffq/ZMkS3L59G9HR0bxLC1dXV4SFhaFdu3YK5b948UJubhYcHIw9e/bg5MmTGDp0KADg7Nmz2LhxI+bOnct/ai8Wi7Fu3TpUrVoVixYtwvLlywEUu87S09PDihUr+Hnd+PHjsX//fiQkJGjXYBqwdetWnDx5En/99Rd8fHwAFI+fS5cuRbt27bB+/Xp+nqcJvr6+cu2ZlZWFb775RjBtRkYGfvzxRzg7OwMApk+fjpSUFGRmZmLChAkICAhASEgIgOLPv3/99Vfs3r0b3333HeLj4wH83/06d+4cP575+PggNDQUI0eOxMGDB9G9e3e1cu/evRsBAQGwtrYGUDx/P3LkCCIjI9GpUye5tIsWLUJKSgrCw8Ph4uICoHjnd+fOnRV8jwNAo0aNMG/ePOjr6wMAvvnmG+zZswcLFiwQdH338uVLzJkzB4aGhjA0NET//v0xa9YsZGRkwNfXF0CxG8Jp06Zh3759CvIFBATg1q1bOH/+PNq1a4erV6/yX4hyz19UVBTfLjExMZg9e7baNiooKMDTp09Rr149tWmF0GbOV5JOnTqhR48e2LdvH4YNGybo2qMkJecjQvPDfyu77hzAhit/aZze3cYNOwduVAifcvhnJL0R/hpaiBGNB2F04/Jzz6StzlaHoaEh7wLI2dkZAwYMwLx585CUlAR3d3cAyvv0wIED8dNPP2lUT3noorp168LW1lbuC/CoqCh+vdCmTRv88ccfuHnzJho0aICrV6+iXr16vG7566+/EBUVhbCwMHh7ewMoXistWLAA3bp1w2+//aZwPWlpaVi+fDmMjY0BFH+FL/R1rFQqxaBBg2Bvb4+VK1d+9LU7Ozvz/sq9vLywevVq2NjYqGwfdXB9PzU19aPKKU1sbCw2bdqEKVOm8Du8uXbw9vbGDz/8wO96L4uN7sOHDwgJCYGPjw/vqkdXVxe//PILtm7ditGjR+PBgwcq/Zo/fPgQAMpsX+HctwDF7RgQEIBTp06pdBFkbGyMFStW4Ouvv0Zqair69Omjsg5jY2NYWFiwteJnhLlwKQE3ydDWn9OWLVvg5OQkF1a1alUUFRUJfs70qdi9ezd0dXXRsWNHuXDucxdt3UBwODg44OjRo1i3bh3/yVCtWrWwZcuWMpX3008/oXHjxli9ejVOnTqlNj33+SdH06ZNUblyZVy4cIH3D8Vx+PBhAFBoA2Wf3mh770xNTVGzZk3+by4vt0AqGf78+XOF/KX9KEZFRfGyOTg4oFatWjhz5gyKiopQUFCAO3fu8BN7dWRkZJT5Zc3evXvRvHlz3v+dkZERevTogdzcXOzbt09lXu7FSnR0tFq3PtxiWNknuQxFhg4dil69euHo0aNYv3692vSRkZH45ptv+Imfi4sLWrRogadPn+L8+fNyaZX1l2bNmvH5S7Jo0SI0bNhQLowzmt+/f19QnpLPr7b9pVWrVtDV1eX7y+XLl1G3bl0YGhpCV1cXLVu2xN27d3nf49oY0D+mv5w9exZmZmaoX78+H9avXz8A6v3Nc/3l0aNH/CeJymD9hcFgfKl06tQJjx8/xsaNG3nj3alTp9C/f3+0aNEC79+/59Pu2rULhoaGaNmypVwZDRs2xJ49exTK9vT0lPPHyxmDX758KVcmAAUDvKenJywsLHDixAkAxYaM69evw8/PD5aWlnJpy/pZtjqUydagQQMA4GXTlGvXriE1NZX/TZ06VWlaIyMjNGrUiP+7Tp06aN++PU6ePIn3798ryKSrq4t69erh1q1b/Fi6a9cumJqaKpy/o638pefvX3/9NUxNTbF//34F9wuHDx+Gnp4e2rZtKxeu7B4dPXpUwd9t1apV8fLlS7lnj8PT05M35APC8xEDAwPY2tpqPH/n5hs+Pj6wtLTk58DPnj2Dvr4+HB0dBWUvydu3byGTyco8H9Fmzlcabj7y119/qX2RxOYj/3y00dnqKHkQKVD8QhSQ19Ha9mkhykMXiUQitG7dWu6w0JIuWrh/uf7Lbdrh2L17NwBF9yGdOnWCrq6uoH3F19eXN55zaUvaD4DizThDhw5FQUEB/vjjj3K59tJj7MiRI2FhYaGQThtkMhkA7e1j6lDWrnXq1EGlSpWwZ88ehbq1keHkyZP48OGDQvl6enro0KEDEhMT+ZfGyuD0XVn0c3JyMhISEvDVV1/xYZq4cQGKN9Dp6OggKytL0K1YaUxNTZlu/owwA3oJuLdL2jrhf/DgAYKCglCjRg04ODhAIpHwb7revHlT7nIq49GjR7C3t1c4EI+bwJXVmL9ixQpUqVIFo0ePhoODAwIDA3H06FFBH2qaoKenh61bt8LExARDhw6V8x9Wmry8POzfv583TnH069cPRKSggDi/l6XfFCp7c6jtveN23nJwE9bSOzcMDAwEfbPVqlULYrGYfwte2sdaQEAAMjMzce3aNVy6dAkNGzbU+IDDgoKCMh+GWHqRA/yfkld14FNqaip+/vln3j9acHAwCgoKlKbn5FOVhqHI2rVr4ejoiMmTJwv6di2JNvdSWX8RiUT8joOSvHjxAhMmTEDt2rUhFoshkUj4XXDKdF3JvqGqv+Tm5irktbS0RIMGDXD9+nVkZmYK9heguB89efIExsbGgnIL8an6i6pJUU5ODsaPH4/Ro0cDAGbMmKFyjGD9hcFgfMmYmJhg2LBhOHHiBNLT07FmzRo4Ozvj0qVLmD9/Pp8uMTERYrFYYYejSCQS3IUlNEYAkDtbhpvTdu3alT8riPsRET+XVzbOKQsrDzjZ6tatKyeXl5eX3EJ3yZIlCrJ/LMoOb+VkWrhwoUKdZ8+ehampKW/8SkxMRF5eHpycnOTSdezYEaampnj9+rVaOZ4/f46bN2+iW7dufJipqSm6deuGrKws/gsujqSkJNjZ2Sk8I8ra5Nq1awgMDISnpyc/H1m6dCkA4XVc6WdK2/l7y5YtoaenxxvQS85HdHV10apVK9y/fx8pKSkKcxVVcOP7556/37lzBxs3bkT//v1RWFiIcePGqayHzUf+HWiqs9WhiY7Wtk8LUR66CFBcL+jq6srtiue+AOfSlOy/jx49AgCFF2J6enqws7MTtK9wX96qYuTIkYiIiMDNmzcFdU5Zrl2TerUlPT0dQPmPl8ralQt7//49f41lsdGpKx9Qbxv7GP0cGRmJHj16yH3p3LNnTxgZGWHPnj1Kff8TEUaNGoVhw4ZBV1cXixcv5nfCK0NPT4/p5s9ImV246NjawPy70eUpS7miY6v95yrNmjVDUlIS7t27p7ECevr0KRo1agRPT08cPHgQ1apVA1B8uA33mak6uLdrXwJCstSoUQN3797FqVOnsH37duzatQu7d+9G9+7dsXfv3jK9kfT09MSyZcswatQoBAcHY+TIkYLpDh06hNzcXLndNAD4A4giIyMxY8YMresHynbvlF2rNm3QunVrbN++Hf/73/8QHR0td6p9QEAAVq5ciaioKBQVFWk8AQeKJ0WlDy7VhNTUVMTGxiI+Pp7/zAgoVuC6urqIiopCenq6YJ8ICQnB8OHDsWDBAty6dQvXr1/H4sWLMXPmTMG6OOVeXm6NjI2NFXZEfymU3Hnwsdja2mLTpk3o2LEjhgwZovQgmmvXruHx48cIDAyUC5fJZBCJRNi9ezfCwsIEd5erIzMzE02aNIGOjg727NkDHx8f/iBiVbtJhPqGNv0lICAAV69exdmzZxEVFYVff/1VLg4o3jWi7YGgJiYmZXpbX1BQgD179kBHR0fBBZW+vj4SEhIQFxensMseAGbPng1fX1+sWbMG6enp2LdvH6ZPn670y4Ly7i8MBuPz425uiXPdBlS0GEpxN7dUn0gDrKysMHr0aPj7+8PLy0vhwHRtFneqPqkuzblz59S6jysPyjJXT05OVnkI/NSpU1XuJleGqoNM1bXdokWL+Je4qrC3t+c/my8L27ZtQ2FhIe/OgYN7DiIjI9G3b98ylX3t2jU0a9YMAQEBiI2N5Q1hs2bNUuo25WPn7+bm5mjYsCH/NcCdO3fk1iYBAQE4ePAgoqKiEBMTI/fiQBXc+F6W+XtZ53ycgWbevHkYNGgQzp07h5iYGERERGDAAGFd9V+djwTW+RptPVW72yuJga7w/Pq3LnNQINX8HlsbW2mctqyo09mq0EZHfywfq4sAeQO6oaGh3HqBO8D3/Pnz+PDhAxISEgTn8NqgSfvk5uZi8+bNGDRoEGbOnMm7HCuJttf+Ke4L50KrWbNm5V62ppTFRlcelNTPpb94UkdkZCRSUlIE3a++f/8eR44cQc+ePRXi1qxZA6B485y5uTmWLVuG4OBgQVfEHAUFBVq7oGaUnTL3MpG+HnQlDl/sT6Sv/bsBzmeUKj/Dt2/fRr169XD06FEAxa4vPnz4gBkzZvAGWFXo6uoqnD7/6tUrrWUVwtPTE69evVIon1O83Kd6wP+9SdNEFqlUCpFIhPbt2+PPP//E8+fP0a1bN+zfv1/hRHptGDlyJLp164bIyEj+M57SREZGYvXq1XKfrqampuL169do0KAB7ty5gzt37vDpuYl6aT9dQn67tL135QW322rt2rUwNTWVe6Pr7+/PG61Lf0KmDkdHR5W7+ZWxY8cO9O3bF+np6XJtnJaWhkmTJqGoqAg7duxQyHf8+HHcvHkTs2bNgq6uLtatWwddXV3Mnz9f6YnfnHyl3eaUFR0dHZiamn6Rv/KexLRv3x7jx4/HuXPn+F1WpYmMjMQPP/yg0F/S09PRs2dPZGRk4Pjx43x6Zf2FiPgdBxxRUVF49uwZgoOD0aBBg3L/lE8ZXB84dOgQ7t27J/fCxNvbG3Z2dp+1vxw7dgy1atXCq1evFNqZuy9Cu77u3LmDzZs3IywsDAAQFhYGCwsLbNy4UdC/K1D+/YXBYHx+DHX1UMPK9ov9GepqP1+OiIhQ6pezevXqsLOzk9tRp2x+SkR4/vx5mXZOcXPaFy9eKMQ9efIEV69eBaB8nFMWBhTPkT9mrs7JVtKdAceDBw9w+/ZtjcsqL1S114cPH3D69GlIpVI+bXp6uqBRNz4+Xu1uOKB4PnL48GGFcfLVq1cQi8U4fvy43BdY7u7ueP36NS8Dh9A9ioiIQGFhIebOncsbzz8Hbdq0gVQqxYIFC9CoUSO5XYkl/aCfOXNG4xf61tbWMDQ0LNN8RNs5H8eaNWugr6+PMWPGwMzMjN8MMHXqVKVuPP6r8xEbEyt42FbW+Odq5SxYjquVs1bl2JhYlet1aKuzywNt+rQyykMXAcXX6OzsjNjYWJw+fVphg1qbNm2Qk5OD3377DX5+fnJrOGX6vKioCK9fv5azr2jDli1bMHDgQHTr1g1hYWH82VAl6y2Pa/9YOD/k3NfmH8O7d+/4F8CqxsmUlBRYWlryXzqUxUanrvySaZTB7VTXVj/funULmZmZeP36tYJ+5lz+CK0VU1NTMWvWLGzcuBE6OjqYO3cuKlWqhFOnTgnaYjjevXv3n9PNFQlz4VKCVq1aYeDAgVi7di2ePXsmmGb27NlIT0/nJ0rKDqBTll/I168y4wn31oubxP/222+4efOmUvl79+4NqVSqMFni/ByX3KHAdbKSshQWFuLGjRsK5Xp4eODatWv835aWlvyO8bJM+EqyYcMGiMViQd9f7969Q3R0tODbOQD8zpWSLhO6du0KAAptEBsbq5Bf23tXXnCD9rp16xQGcEtLS/j4+ODSpUt49OgRf1iJJtSqVUtwYaSOyMhIBRc5HEJtDBS7oggODsb69ev5ndb169fHt99+i9zcXP5gmdJwzxt3ICxDO3799VfUrFlTsL9wB1tqcy+V9ZeLFy8qGDQqqr80a9YMhoaG2LRpE/z8/OQWrJxfw+TkZBw6dEjtoZwlqVWrFnJzc7V22aWqvwQGBkJXVxfbt2+X263I7fb69ddf+Z0Tzs7OWLBgAYgIY8eOVVhgAKy/MBiML5PCwkJcuHABeXl5CnHp6en8JgcOZfPT2NhYVKtWTbAcdfTu3RsAsH//foW44OBgbN26FUDxwV2+vr64fPmygnFQaG4IaDdX10Y2IkJgYCBOnz6tcVnlRfv27WFpaSnYXuvWrcPkyZN5Vwu9e/eGTCbDoUOH5NLl5eWhXbt2chtXhEhISEBaWhr8/f0V4nR1dfHNN9+gsLBQzndw165dUVRUpNA2/5T5e+3ateHg4IA9e/bAxsZGzt+6KnR0dODl5aX1/L0scz6g2EAze/ZsbNiwgd8I0bVrV3zzzTdITU3Fjz/+KFgem4/8s9FWZ5cH2vRpZXysLipJQEAAXr9+jX379im84OL687JlyxT6NqfPSxtvjx07BqlUqvAFiKZw65k1a9bAwsICw4cPl3PrUZ7XXlbWr1+PU6dOYdCgQVqtsZTx7t07/ishZe16584dPH36FL169eJfZJTFRseNeaXLLyoqwokTJ+Dp6an28GZO32mrn7kvrIQ2m3Xo0AHW1tY4cuSIwpwkJCQEwcHBvL98U1NTfs0/efJkZGZmKpT3+vVr5OfnM938OSElSKVSio+Pp/j4eJJKpcqS/evIycmhLl26kKenJ508eZK/9uTkZBoyZAhZWlrS9evX+fSPHz8mU1NTatCgAT1//pyIiK5du0b29vYEgGJiYuTKHzt2LBkYGNCFCxeIiOjMmTPUpEkTAkDh4eFyaVeuXEkA6NatW/T27VuytbWluLg4IiIKDw9XKD87O5u8vb2pdu3alJSUREREt27dIicnJ2rfvr3cfczJySFbW1tq2rQpvX//nvLz82n69Onk5eVFpR8LNzc36tSpE6WnpxMR0bt376hnz55kb29Pb968UdumoaGhNGTIEKXxR44cIQDk5uYmF75hwwb6+uuvleZ78uQJiUQicnNzI5lMRkREeXl5VLt2bXJzc6P79+/zbdC4cWMCICeHtveuVatWCjLGxMQI3juhtCVxc3MjALRnzx6FuOnTpxMA+uabb5TmFyIsLIwAUHJysmD8kCFDCAD/bBARJSYmkp2dHRUWFiot18PDgwDQo0eP+LBp06bRqFGjFNJmZ2eTu7s7AaD9+/crxP/4449kYGBA79690+LK/luEh4dTq1atlMbfvHmTDAwMFPrp6dOnqW7dukrz5eTkkJmZGZmYmFBmZiYREclkMmrfvj1ZWlrSxYsXiahY1zVv3pzMzMzk5Hj37h05OjrK9a2///6bqlWrJtgHuOetJElJSQSAQkND1aYtSatWrQgA/fbbbwpxq1evJgDUsGFDpfmFOHToEAGg2NhYwfjQ0FAFPZCZmUkWFhb06tUrpeUGBAQQAIqKiuLD/vjjD2rfvr1CWqlUSn5+fgSAli9frhC/YcMGAsC3N4PBYHwJcHPQb775hh4/fsyH37lzh1q2bEmWlpaUkJDAh5ecn3LpHz16RLVr16aZM2fKle3m5qYwBiobO0aMGEHGxsa0f/9+kslkVFBQQL/88gs5ODjQkydP+HSxsbGkp6dHQUFBlJ2dTQUFBfT777+TRCIRnO8tWrSIANDu3bv562rfvr2gDELzcalUSu3btyc7Ozs6d+4c3wYTJ06k6tWrazwHEpq3qULd3HPLli0kEokoNDSU8vLySCaT0fHjx8nS0pKOHDnCp+Pul6enJ925c4eIiDIyMigwMJBatGhBBQUFKuX48ccfKSQkRGn82bNnCQC1aNGCD3v16hU5OjqSj48PPyePjY3l1yUl2/3ixYuko6NDnTp14tchJ06cICMjI8H2EnqmhO6bsrQcubm5fB03btxQiO/Tpw8BoKlTpyq9diGmTJlChoaGlJeXJxjPzYFKUpY5HxFR7969acGCBQrpX758SZaWlqSrqyt4bQMHDiSJRMKvtxj/LLTV2UTC+kSZLhbqT8r6dNOmTQXL4ObdJfvvx+oiIRnr1KmjEJeZmUl6enoEgO7evSsXx+lzJycnunXrFhEVr5Vq165N3t7elJ2dLZe+tL2hNEJrHk62kuOhNteuzB6hCULjzL1792jcuHEkEolo0KBBlJubq5BPma4U0lcc3PPDMWLECDIzM+Ofm1evXlHr1q3JxcWFUlNT5fJqa6Mj+r8xb9myZVRUVET5+fk0ZcoUMjAwoOjoaLVtc+fOHQJAmzZtEozn7lvJdpfJZFSpUiW6efOm0nKHDRtGAGjjxo182LFjx6h27dqCz3Tv3r0JAE2aNEkh7vTp0wSAjh07pvZ6GOrRxAbODOgCyGQy2rp1K7Vu3ZrEYjE5ODiQl5cXTZw4UW5CznHmzBlq1qwZmZubk7OzM3Xp0oU3glpbW9OIESP4tB8+fKCgoCCyt7cnZ2dnCg4OpmPHjhEAsrCwoPr168ul7dGjB9na2pKLiwv9/PPPRFSsmCwsLPjyu3Xrxud5+/YtTZw4kVxcXMjBwYHc3d3pxx9/FFR8V65coUaNGpG5uTl5e3vTrl27eCUqFovpl19+ISKigwcPUs+ePaly5cokkUioUqVK1L9/f/r7779VtuOVK1dILBaTqakpGRkZkVgsFjSqEhW/WCg5SAcGBpKJiQmZmpoKDnT79+8nsVhMIpGIAJCDgwNt376diIjS0tKof//+ZGlpSY6OjtS2bVteAXJyPHz4UON7d/fuXRKLxaSvr086OjokFovpypUrNG3aNLK2tubvXWBgIKWnpyukFVJow4YNI5FIRBkZGQpxJ0+eJAD0xx9/qGzf0rx+/ZqMjY0FDXFE/zdAcs/wsmXLyMrKivT19eXahIO7FkNDQwJAVlZW5OnpSWKxmHR0dMjGxkbuec3IyCCxWEwmJiZybc1NLGQyGdWuXZv69eun1XX9V3j58iWJxWKysLDg70lYWJhgWm5xzzF58mQyNzfn27z0IuzGjRskFov5yaGtrS0tXryYiIonjePGjSNbW1sSi8Xk5+dHZ8+eJTc3N14ObpJx69Ytat++PVlZWZFEIiF/f39asGAB3wc6dOhA79+/J7FYzC8yxWIx7d69m8LCwsjOzo4AkKmpKfn5+RFR8QSsZNp169YpXO+cOXMIgOBk5O+//yYANG3aNK3au7CwkJycnAQnI0T/N5E/c+YMERHt3r2bbG1t+X4tNPFyc3Pjn39zc3Py9/fn9YGlpSWJxWIqKiri01epUoXMzc0JAN/WJRcwnTt3piZNmmh1XQwGg/GpycjIoHXr1lGPHj34eYGFhQVVrlyZhg4dSomJiQp5Ss5PxWIxVatWjZYsWcKvMY4dO8bPLzh9+PTpU1q8eLHc2FGzZk2+TKlUSsuXL6eaNWuSra0tubm5Ue/evRUMQUTFc6sGDRqQubk5Va5cmb799lv+Bay1tTV99dVXfNqCggKaMmUKOTk5kVgspn79+lFcXBwvA6fL69Spo3Q+npeXR6GhoVSlShWyt7cnd3d3GjFiBL148UJt+549e1ZuHLWzs1MYH0oiNE8dOHCgYNpjx45RixYtyMbGhpydnalVq1Z08uRJwfsVEhLC3y8PDw+aMmUKvX37VqXsfn5+ZGhoSBYWFnJtyhEWFkYODg4EgEQiEYnFYn5TUWJiInXu3Jmfk/fo0YM3tnPtzs1v9u7dS/Xr1ydTU1OqVKkS9evXj0aOHMm31+zZswWfqZcvX1K/fv3k7tvkyZP5eVLJtKUNaUTFL8mtra0F18br1q0jAHT06FGVbVSau3fvkkgkUrpGatWqFYlEIv7vssz5fvnlFxKLxQSA7O3t5Z7V+Ph4ufl+6X6Wk5ND9vb29P3332t1XYwvB210Nvc8lNQnERER9NNPP8npYm7jSo8ePeT6U0m7R8k+7erqSgMHDqRr164RAJo9ezYRFetKzl7A9d/g4GC+jLLqotI8ffqUACh9ude0aVMSi8WCcXl5efTTTz9RlSpVyMHBgVxcXGjChAlyMqxbt47vY1zfLLmWF1ofrVu3jk6dOsXnK2ln0PTag4KC5OwRYrGY4uPj1baHsnHG1taWPDw8aPDgwXT27FmFfIcOHVLQlWfPnqXw8HAyNDTkbTOGhoYKv9IbwKRSKS1dupRq1KhBDg4OJJFIaPDgwfTs2TNBmbW10REVb9Rs1qwZ2dnZkb29PbVr144uXbqktn04fH19qXv37oJxnAF98+bNRFRs++LGN7FYzIeXpHnz5vzaz8TEhG93IyMjMjMzI7FYLPcyo1WrVmRlZSX3fJw6dYqPDw4OJldXV7n1JaPsaGIDFxERKe5LL/40jPs0pE6dOp/1sAgGg1E25syZg3Xr1iExMVHh4Kq+fftix44dyMjIgI2N9ofsfiz79+9H//79cefOHXh4eHz2+hmM0mzZsgVjx47F48ePIRaL5eJmzJiBRYsW4caNGx99mFBZuHnzJnx9fREbG4vmzZt/9voZDAaDwWB8HoYNG4Y7d+7g6tWrCp/9+/n54d69e/jw4UOFyLZ8+XIsXLgQCQkJGrumYTCUceXKFfj5+WHVqlUIDg6uaHEYDJXExsaibdu2iIuLU3Ctu2bNGowdOxZ79uxR6nL4U5KSkoIqVapg48aN6N+//2ev/9+IJjZwZhVnMP5FzJw5E40aNcI333yDpk2byvm6e/78ORwcHCrEeH779m2MGTMGW7ZsYcZzxhfD4MGDMWLECHTt2hU9evSQO/z2+fPn0NPTQ9WqVT+7XM+ePUOvXr2wZMkSZjxnMBgMBuNfzqpVq/iDPbnzaTieP38OLy+vCpHr9OnTmD9/Pvbu3cuM5wytSE9PR/fu3RXCucMyW7Zs+ZklYjC0x9/fH7/++it69uyJoUOHyh32yp0NURH6+f379+jatSvGjBnDjOefGWZAZzD+Rejq6mL37t1o0qQJLl26hJ07dwIALly4gCtXrmDIkCEVItfx48exa9cufPPNNxVSP4OhjBUrVmDEiBE4c+YMtmzZAqD4ALRjx46hR48eMDc3/+wynTx5EkuXLsWkSZM+e90MBoPBYDA+LyYmJoiOjkZ6ejoOHz6MM2fOAAB27dqFFy9eVNj8PSoqCjExMWjWrFmF1M/451JQUIADBw4gLCwMUqkURISzZ8/il19+wcCBA1GnTp2KFpHB0IjJkydj8eLFOH36NDZu3AgiQkpKCrZv345GjRpViAH9zJkzGD16NJYtW/bZ6/6vw1y4MBj/UsaMGYPjx48jMzMTRkZG6Nu3LxYuXAgDA4OKFo3B+OKYNWsWIiMjkZGRAV1dXXTp0gXLli2DpaVlRYvGYDAYDAbjP8CHDx8wbtw4xMTEIDc3F5aWlhg1ahRmzJih4NqFwfiSycvLwy+//ILDhw/j5cuXyMnJgYODAwYPHowZM2ZAT0+vokVkMLTijz/+wOrVq5GSkgKZTIaAgACsWLECzs7OFS0ao5zQxAbODOgMBoPBYDAYDAaDwWAwGAwGg8H4z8F8oDMYDAaDwWAwGAwGg8FgMBgMBoNRRpgBncFgMBgMBoPBYDAYDAaDwWAwGAwBmAGdwWAwGAwGg8FgMBgMBoPBYDAYDAGYAZ3BYDAYDAaDwWAwGAwGg8FgMBgMAZgBncFgMBgMBoPBYDAYDAaDwWAwGAwBmAH9X0ZmZmZFi/CPITs7GzKZrKLFYDAYXwBMdzIY2lFQUICCgoKPKuNL6nflcT0MBoPxT+FL0r/AlycPg8FgVBRfkj78kmT5EmAG9P+PVCqFRCKBpaUlRCIRLC0tIZFIIJVKleY5ceIErKyscOLEic8oqTBSqRTfffcdZs+eDQBITk6GRCKBmZkZRCIRbGxsIJFIYGtrCzMzM7Rs2RLHjh3Tqo7k5GSIRCJIJBL+Z2NjA5FIBDMzM7lwAwMDbNq06RNcqXJiYmL4uitXrqw2/d9//w0/Pz88efLk0wvHYKghJSVFTgeNHTtWMJ2/vz/s7e35vtizZ0/BdO/evYORkRGaNWumlRyRkZGQSCTQ1dWFv7+/tpfx0eTn50MikcDQ0BAikQgODg4YOnSoXJrVq1dDJBIhJiZGLnzMmDGws7ODgYEBJBIJPnz4oLa+jIwMdOjQAdHR0QD+7/oNDAzk9J25uTlsbW3RpEkT7Nmzp/wu+CMYM2YM/yzMmjVLLu7nn3+Gk5MTUlNTK0a4UshkMjg5OcHV1RVEpBDP3XduzEpOTv7kMvn4+CiMYWKxGMbGxqhduzZWrFjxSV+yrly5EtWqVYODgwOcnZ2V9nltSU9Px5AhQyCRSODg4IC2bdsiLi5O4/xBQUH8nKH0r2Q57969g4+PD27dulUmOX/77TeMHDkSAPDs2TNIJBL+eTY2NoZEIsG5c+cE83I6YP369YLxLVq0gIWFBUQiEfT19SGRSHh9wc0VjI2NYW5uzs8XPvZ6/mtkZ2dj0aJFqF+/PhwdHSGRSFC9enUEBgZi1apVeP/+vVblbdmy5bOOPT4+Pvx4GxsbW6YyvL29P7oMIc6dO8c/oyKRCPb29oL9sSLm2mXh2LFjEIlEmDlzplb5xo8fr3SM+xxwukIkEkFPTw8SiURB5/Tp0wdGRkbIzc2VC/f29oaFhQXMzMzQtm3bcpHn0qVLGDRoEFxcXGBjYwNHR0cMHDgQjx490rqs06dPo1GjRvzfvr6+fP/T1dWFRCLBokWLBPPev38fIpEIAwYMEIyfPn067OzsIBKJIBKJIBaLMX/+fAD/N9ZbWlrC0NBQblzp0qULIiMjtb4WhmZoo7Pz8/Ph5eWFoKCgTy7Xp5r/jRkzBlZWVhCJRDA3N1dYF2RmZkJfXx9DhgyRy8f1e319fdjb2yudZ2hLYmKinF6vaJSNM/b29qhatSqCgoJw/vx5wbypqalwcnJCaGgoHya0fho/fny5ykxEiIiIQLt27eDs7MzPVdu1a4eFCxciMTGxXOvTlLS0NMydOxd16tSBra0tLC0t0bx5c+zevVvrskqvS5csWaJg0/Px8VGav3HjxjA2NhY0esfFxfHPtkgkgoWFBby9vfn4MWPG8GOeg4MDpk+fDgD4888/MXjwYIVx7j8LKUEqlVJ8fDzFx8eTVCpVluxfR3h4OAGg8PBwtWl37txJIpGIdu7c+ekFU8Pw4cPJ39+fcnJy5MJDQ0MJAMXExPBhT58+pWbNmpFIJKIdO3ZoXEdSUhKVfmRiYmIIAIWGhsqFt2rVSqM2/BS0atWK3NzcNEq7atUqcnV1pZSUlE8rFIOhIZwOAkDHjx8XTCPUF0uzfv16AkAikYiSkpK0lsPNzY1atWqldb7yYtSoUQSAzp8/rxDXq1cvAkAzZ85UiNu9ezcNGDBAozoyMzOpbt26NG3aNIW4Vq1aKbTx/fv3ydvbmwDQ/v37NbySTwv3LJTWwcHBwWRiYkLJyckVI1gpTp06xT/XsbGxStNxY1ZZntmyIDSGZWZm0tixYwkAjRs37pPUe+jQIQJAERERRER04cIFjcctVbx//56qV69OAQEB9ObNGyosLKRvv/2WTExM6NatWxqVMWTIELk5gyoOHDhANjY2dO/ePa3knDt3LtWqVYtevXolF849z0OGDFGZv1mzZgSA/P39laZ5/PgxGRsbk4GBAT148EAu7s2bN+Tq6koJCQnlcj3/NQoLC8nX15fc3Nzo0qVLfPj9+/d53VkyXBs+59jDjbeaPu+fqgxlDBkyRKU+rMi5tjYMGDCAAJC7u7vWeZWNcZ+TatWqkYmJCRUUFMiFy2Qysre3JwB06tQphXzjx4+n9evXl4sMV65cIQDUq1cvXm/evXuXqlevTjY2NpSYmKhxWdHR0WRjY0NXrlxRiHNzc1M7Fs2cOZMAkKmpKWVnZwumKSwspNq1axMA2rRpk0J8u3btFJ7dhw8fkqOjI23dulXja2FohrY6OysrixwcHKhz586fTcZPMf+7ePEiAaARI0YoxHHzMGdnZ4W4oqIisre3V/p8fwycXv9SEBpn7t+/T+PHjyeRSESDBw+m3NxcuTzJyclkYmJCwcHBCuUJrZ/Kg6ysLOrUqRNVqVKFjh8/ztsn09LSKDQ0lHR1dQkA3blzp9zrVoeXlxc5OjrShQsXeFlHjx5NAGjp0qUal6NqXSpk0yvNw4cP+bWWkN7lWLhwIQGg1q1bK8Rt3bpVYW5dVFREffr0oY4dO1JRUZHG1/NPRBMbONuB/hEEBgYiMzMTgYGBFSrHgQMHsGnTJqxfvx7GxsZq07u6umLjxo0gIsyYMeMzSPjlEhwcDBcXF0yYMKGiRWEweJycnKCnp4dhw4bh7du3ZSojMjIStWvXBhFh27Zt5SzhpycgIAAA+DfwHDKZDBcuXICxsTGioqIU8kVHR/N51fHTTz8hMzOT3xmljho1amDhwoUAgLVr12qUp6IICwvDq1ev4ObmVtGiAPi/55H7/5eMmZkZVqxYAVdXV6xevfqT7Ibnnt0ePXoAAJo2bYrLly9/dLmLFi3C33//jXXr1sHa2hp6enr49ddfYWdn90nGuW7duqFDhw4YMmSI4JcFQsTFxSE0NBRhYWGws7PTus4nT57gf//7H1xdXXH27Fm8ePFCMJ27uzt++OEHFBQUKFz7tGnTMGzYMFSvXv2jr+e/yIEDB3Dt2jWEhobCz8+PD69RowZ27twJXV3dCpSO8SWRk5ODQ4cOoWbNmkhKSsKlS5cqWiStCQgIQE5OjoKOvn37NvLz8wHgo+cj6pDJZDA2NsamTZt4vVmrVi2sXLkSb968wbx58zQqJzs7G4MHD8b48ePldqBrw7Zt21C7dm1kZ2fjwIEDgmn09PTwxx9/ACjWt+/evePjIiIiUFhYqLC72dPTE7NmzcLYsWORkpJSJtkYwmirs01NTfHkyROl9/efgq+vL8zNzRXWEkBxn7WwsMCLFy/w4MEDubi4uDjUqFEDJiYmn0vUL4oaNWogLCwMGzZswJYtWzBixAi5eDc3N7x69QphYWGfTaZhw4bh3LlziI6ORocOHaCjU2zGdHBwwKxZs/ivlIqKij6bTBwymQzz5s1D06ZNART3n7CwMFSqVAk//vijxju3tV2XlkbTtdaUKVPg5eWFmJgYuXRv377F999/jzVr1sil19XVxe+//47z588rxP0XYQb0j8TU1LSiRcDcuXPRtWtXeHp6apynevXqsLS0RFJSEl69eqVRHmdnZ9y/f1+jtFu2bOENA186U6ZMwe7du5GQkFDRojAYAICqVasiNDQUL1++RHBwsNb5X758iRs3bvCfdn/pBkshAgICIBKJFCa98fHx8PDwQNOmTXHt2jUFNy0xMTFo06aN2vIzMjKwevVqTJw4EXp6ehrL5e7uDgBfvOsnkUj0xUz88/PzsW/fPmzduhWGhobYvXs3CgsLK1oslejr68PHxwdEhGvXrpV7+dyLsZIvvSUSyUeVSUQIDw+Ht7c3PDw8+HA9PT106dIFZ8+eLdOn/uqYMmUKrl27prE7uwULFsDb2xutW7cuU33btm1D9+7d0b9/f8hkMpUvCL/77jtUrVoVJ0+e5D+lPX/+PM6fP4/vv/9eMI+21/Nf5O+//wYAwRcgDg4OmDZtGuzt7T+3WP85oqKiFNwPfGkcPHgQPj4+/EusiIiICpZIe7g5Ren5SFRUFEaPHg0TExMFA3paWhpyc3NRpUqVcpHBxcUFS5YsgZmZmVx4kyZNAADXr1/XqJzw8HCkpKRg4sSJZZLj8uXLICIsXrwYgOr72aJFCwwePBjp6en48ccfASg30HAEBQVBX18fK1asKJN8DGHKorONjIz+8S9D9fT00LJlSzx+/Fhh3h4VFYVvv/2W/39JNF1L/NsZNmwYOnbsiIiICAW3mSYmJp/NFU10dDR27tyJ0aNHK90YNGHCBBgYGHwWeUozduxYfPXVV3Jh+vr6aNiwIXJycnDv3j21ZZR1XVqSbdu2YeXKlXByckJUVBTS0tIE0+nr6+P3338HAEydOpVfSyvbXAIAtra2CAoKwsKFC1W6uP4vUGYDen5RAR5lJH+xv/yiT3sQ1A8//KDUL59MJsPSpUtRs2ZNiMViODk5ISgoSG6XVGlfj1FRUWjUqBGsrKzg7e2N48ePayTHo0ePcOPGjTItRLndVffv3+d91ZmZmcHFxYVPM3LkSFhbW8PQ0BDdu3dHjRo1NCq7UqVKsLS0xNu3bzFx4kRUqlQJYrEYHh4e+Pnnn/kdG4CiH99169ahTp06vE8uzq9kfn4+QkND4enpCbFYjMqVK6NTp07YvHmzoJ/a+Ph4tGjRAra2tqhWrRq2bNkiKCu3O2T79u0aXRvjy0FaUIQPyelf5E9a8HFvwL///ns0a9YM27Ztw65du7TKu337dnTp0gUNGjRA/fr1cffuXdy+fVswbVZWFoKDg2Fvbw8nJye0bt1aqQ/gM2fOoG/fvqhSpQrs7Ozg6uqKkJAQZGVl8WlK+/hLTk5Ghw4dYGNjgxo1auDgwYMAgE2bNsHLyws2NjYYNGiQXBkAYG9vj9q1a+PSpUvIy8vjw7kdXQEBAZBKpThz5gwfl5qaioKCAo12Xe/fvx/5+fla607Ov17pRbEmbcPx+++/o1atWnB0dETlypXRrVs3Bb/q3DjCtZFYLEb//v2RlJSkVkZ/f38Fv7ylz4jg9KONjY1K/bhlyxbUr18fNjY2sLW1Rbdu3bT2EX3kyBHUrFkTdevWxVdffYU3b95ofQZHYmIiunTpAnNzc7i4uKBXr144e/asnP/ykuPK5s2b4ePjAwcHB4jFYvTq1Uvrl6TcGMktEPLy8vDTTz+hSpUqsLGxgYuLC8aMGSP3ElrdeLZhwwZIJBLs2LEDAHhfxnPmzBGUYc6cOTA3N4dIJIKtra3ceQAuLi4wNjaGhYUFli9fjocPHyIlJUXOnyEHF3b27Fmt2kATfHx8YGVlpdEYyu1GLavxHCh+Idi/f3/079+f/1sZhoaG/CLh22+/xdu3bzFmzBisXr0ahoaGgnm0uR5teJ+dj6fpHzT+pbzJFiwn5U22VuW8z85XKKOgSCoYrincy54tW7YI7tRfsGCB3EscoNjH/KRJk+Tmgz179sT+/9fefYdFcbV9AP4tVUBA6izFIIJG1GDDBCUGRUWNJbFGjQWNvZFoYstrRI0FNYrBFoyxBewt1qgUSdGIBZVXSTRiF1FiQaXuPt8ffDMvy86yu0DUxOe+Lq7E2TMz58zunDlz5sxzdu2S3Ych7WJj6snDhw+jSZMmsLOzQ61atTBjxgytm8CDBw/KxmFfuHCh0bG4DakvyisiIgJhYWEwNTWV5gMpWb//97//RZs2bSAIAhQKhcZI3/3796N58+ZwdHSEo6MjWrdurXEdFT18+BDjxo2T4sx6e3tj4sSJePbsmVF5Fc/Xnj17wtzcHFu2bNE5QlCs5+3s7PDaa6+hf//+yM7Olk27du1atGnTBtWrV0e1atVQt25dREdHa/weS99rHTlyBAEBAbC1tcU777yD9PR0qFQqjB8/Hh4eHqhevTrmzJmjta9WrVrJPtBPSEhA+/btERQUhNOnT2uMsk5MTNRbzxlTv3t6emLUqFFa2xAnPnZ0dCxzX6LNmzfD398fTk5OBqUvLS4uDn369EGbNm3g6uqKQ4cO6fyOAGDBggWoVq0aVqxYgdOnT5fZQQMAFhYWePvtt1+ae7KigkfIe3rd4L/8XPmR8/m5d4zaTlGBcXNI6GNMnX327FnZOcVKt2++/vpr+Pn5wd7eHq1bt5aNP21s201OResiuTda7927h8ePH2PYsGEAtDvQS789ItbnPj4+EAQBr732GsLDwzXO+dmzZ0vxo8PCwrBz507pmqNQKHTOV7Fq1SrpuLq6ukptG0PL3rFjR2k+n++++w6zZ89GnTp1pDjXFX2L8qOPPgIArF69GgCwd+/eSpuvxJA+M6A4BjdQPE+CLvb29jh27Bhq1aqlsXzfvn0ICgqCq6srXF1d0a5dO/z2229l5uv333+Hq6urNBipZPz8CRMmwNHREebm5tIDzPDwcNlBMMbUz+W9LxWdPn0aT548QcuWLfHBBx9ApVJJ9xpyWrVqhb59++LOnTuYPn263sElQPG5dOvWLZ3zE70yyhv/5fL9DApY0vql/bt8P6NccW+MiYGuKy5fWFgYVa1alRISEoiIKCsri1q2bEmenp6UmZmpkdbLy4tq1KhBgwcPpidPnlBubi516dKFLC0t6ebNm3rzsHbt2jJjJeuKl/Tf//6XAFCtWrWIiOjZs2dkZ2dHISEhWtuYMmUKTZ06VXb7umKgExXHf6pfvz7Vr19fiqt19uxZcnd3p3bt2mn8rsRjWb9+fZo+fTrl5eVRZmYmOTg4UGJiIqlUKgoNDSU3Nzc6c+YMERHdv3+fOnfuTADowYMH0raCg4PJycmJPvjgA8rOzqaioiIKDw8nAJSSkiJbDkEQZMvOXm6PMu7SrtYzX8q/Rxl3y1WmNWvWSPFfr1y5Qra2tuTk5KQRp19fDPQmTZrQ3r17iYhowYIFBEA2nhoRUWhoKNnb20tx2zIyMqht27bk6OioFYe2e/fu1Lp1a7p//z4REZ05c4aqV69OPXr00NquGFOvX79+dPfuXSosLKRevXqRhYUFrV69mr777jtSq9V04sQJMjMzk82feN4eOXJEWta+fXtKTEykY8eOEQAKDw+XPouNjZWNcygnLCyMAFBeXp7s56Vj+BUVFdGpU6eobt265OjoSCdPnizXsfn222+patWqUl307NkzGjZsmFbM0Y8++ojs7e2lsmdmZlKrVq1IEAS6ffu2lE7XdUhXXN7S9WNhYSGNGjVKtn6cNWsWmZmZ0aZNm0ilUtGjR4+od+/eZGNjQ+fOnZM9bnK6d+9OS5cuJSKirVu3EgDq1auXbFq5GJj37t0jNzc3atSoEd24cYPUajUlJCTQ66+/Llv2iIgIMjU1pU2bNhFRcUzB3r17k729PaWlpWmk1XUNy8/PJw8PDzI1NaXr169L16Dq1avTqVOniIjo8uXL9MYbb5Cfnx89efJEWlff9YzIuBiYBw4cIAC0ePFirc/q1asnzROwd+9enef67t27CQBNmTJF7/4GDhxIw4YNozfffJOUSiV5eXlR3759tY5dSW+99RbVrFlT77aTkpIIAK1cuVL2c30x0NPS0kipVEoxGOvVq0cA6OLFi2Xut1evXgSAfH199cZXJzK8PMbYlHSRus/cZfBf+PJ42e2EL483ajubkrSPzbW7j2SXGyozM5NsbGwIAAUEBNDatWs12mGlPX36lPz9/alevXr0559/ElHxfDxvvfUW2dvba6Qt3S7Oy8uj7t27y7aLDa0nk5KSyMzMjAYOHEhPnz6lgoICio6Opjp16sjWk3Jx2I2pa42pL8qiKwb69OnTZX/HYv3euXNnunnzJqnVavrwww+ltOvXryeFQkFRUVFUUFBAubm5NH78eDIzM6NDhw5J2xG/L39/fym29qlTp8jT05Natmxp8NxY2dnZVLVqVfrrr7+IiKhjx44EgPbv36+VVlc9HxgYKHvcnZyc6LPPPqOCggJSqVS0detWMjMzk641JYm/qTFjxlBeXh7du3ePateuTX5+frRgwQI6ceIEERFFRUXpzF+DBg3IwsJCmmuqsLCQXFxcKDc3V4onu3PnTin90KFDDYrlbWj9rsvBgwcNjrNbUFBA5ubm1Lt3b51pyoqBXlRURIIgSNeC0aNHEwBavnx5mftdvnw5ASAfHx+qU6eOznaXaNKkSQSArl+/XnaBnoM7GZsoNam7wX8XT4TLbufiiXCjtnMnY1OllsPYOptIfk4xsR6sW7cuLVmyhIqKiujmzZvk7e1N9evX10hrbNtNrv1XGXXRmTNnpPsR0aZNm6R68fXXXycHBwdpWwUFBeTq6irNeVBUVEStW7cmd3d3aS6ZjIwMql+/Pvn7+2vFSQdAfn5+NGzYMHry5Anl5ORQ7dq1pb6l0u2/wsJC6t69O40dO1ZjO8aUXWzL+vv706pVq6iwsJAuXLhApqamemPK65tr49q1a7JzWOiar8SYGOiG9pl5e3sTALp717h76zVr1pBCoaBFixZRUVER5eXl0YQJE8jCwoLi4+XbWKKioiJyd3enBg0aaH22YMECvfebKpVK5/py9N2X6ouBPmHCBPr000+JiCglJYUA0JtvvlnmPu/cuUN2dnZkampK3t7eeudyuXjxIgGgmTNn6i3PPxXHQH8BkpKSsHbtWgwfPlx6guTi4oKvv/4aN2/exNSpU7XWuX37NiIjI2FjY4MqVapg3LhxyM/Px6FDh/Tu79KlSwCMe/U7PT0dgwYNgomJCRYuXAig+DXyDz74AImJiRpPKtVqNTZs2FCuWbgXLFiAtLQ0zJ07V3qC7e/vj8mTJ+PHH3+Ufe1PpVIhIiIClpaWEAQBK1asgK+vL77//nscOnQIs2fPRsOGDQEUv0qyatUq2deHsrOzMWXKFDg6OsLU1BTh4eEAgD179sjmVRAE6fU2xl4W3t7eWLJkCbKzs6URAPr88ccfuHbtGkJDQwEAvXv3homJCTZt2qQ16mTfvn04dOgQRo4cKcVtq1GjBr744gv89ddfWtv28fHBvHnzpJFLDRs2xOeff45t27ZJdVFpffr0gaurK8zMzDBq1CgUFBRg1apVGDRoEBQKBZo2bYqgoCDs3LlTa93So0YKCwtx8uRJNGvWDE2bNoWdnZ3GqJHExESD441eunQJ1apV0zkKVSSOEHZwcECTJk1gamqKrVu3okmTJuU6Nnv37kXt2rUREBAAoLjujYyM1BitmZycjNWrV+PTTz+VXiEVBAExMTG4e/cuIiMjDSqjLtnZ2Zg6dSocHR1hZmaG8ePHA9CsHzMyMhAREYGBAwfigw8+gImJCezs7LBy5UoQEaZNm2bQvh4/fowff/wRvXr1AgBpdOGePXtkR+fLiYyMxJ07dzB37lx4enpCoVCgVatW6Nevn1baK1euYObMmXj//ffxwQcfACiOab506VLk5uYa9Nr6vXv3MHLkSNy6dQuffPIJqlevLl2D5syZg8aNGwMo/s4XLVqEixcvYtWqVVrb0XU9M1bbtm3h7u6OdevWaSw/deoUCgoKEBQUBAB49Kh4xJpc6B5xmZhGn3v37mHLli24ffs2Dh48iBs3bqBp06Y6R50IgoCrV69Ko210KU+bpaTY2Fj06tVLeq1cHKmlLyzEokWLYGtri8uXLxtUlxpanleVIAjYunUrBEHAyZMnERYWBldXV4SGhmLjxo1aI7sXLlyIc+fOITo6Wnp7p3r16jrjp966dQvz5s2DjY0NLC0tMXr0aK12sTH15KeffgozMzMsWbIE1tbWMDc3x5gxY+Dh4VHZhwYAylVflKVp06bStUipVEptdznZ2dn4z3/+Aw8PDygUCkyaNAl9+/ZFTk4Oxo4di5CQEISHh8Pc3BxVqlTB/Pnz4e7ujs8++0zahvh9LVu2TLo2NW7cGNOnT0dSUpL0Jpk+27ZtQ0hICBwcHACgzLdGdNXzHTt2lN32m2++iS+//BLm5uYwMTFBjx490KNHD9kR5EDxvdbMmTNhaWkJZ2dn9O3bFxcvXkR2djaaNm0KoPg1fAsLC53tkYKCAvz8888AgBMnTqB+/fqoUqWK9PsrT3vE0Ppdl2XLlsHb21saSVuWa9euobCwsNz1b3x8PARBQL169QCU/X2WNHz4cAQEBODPP/9E37599ba7BEEAAL4vq0TG1tn6WFpaYty4cTA1NYWHhwc+/PBDpKWlabz9Y0zbTZfKqIsaNGgAJycnjRAk8fHx0vnZunVrPHjwAGfOnAFQfG43bNgQ5ubmAIANGzYgPj4eU6ZMkd7mq1GjBubMmYNz587hq6++0trn3bt3ERUVBRsbG1StWhVRUVGycw6oVCr0799f6iuqaNk9PDwwZMgQmJmZwc/PDytWrDD47RRdxPMxMzOzQtspzZg+M3FOhGrVqhm8/cePHyM8PByNGzfGJ598AlNTU1haWmLevHlwcHDA8OHDZSMYiExNTdG/f3+cPXtW683bdevW6e0b27VrF27fvq3zmlSaofelctRqNTZv3izVyQEBAahduzZOnDhRZuhGpVKJWbNmQaVSwcTEBMHBwWXuh+vmYtyBXsnEGJulXzF544038Nprr2H79u1aJ6uPj49GTLLq1asDKG7s6SO+Nqcv1m23bt2gVCrh7OyM4OBgODo6IiEhAV26dJHShIWFgYg0GnGHDh1CjRo1tF6HMcS2bdtgamqK9u3baywXj41cWIp33nlH498ffPABPD09pbRip6BIEAQkJCRoxQS0trZGgwYNpH+LN0m6jqmNjU2ZryAy9qIMGjQI3bt3x/79+w266Y6Li0OPHj2khp+npydatGiB69evSzd+or179wKA1jkaFBQkrV9SZGSk1PErEusGXfMjiDemQPHkqACkDoWSy2/evKm1bnBwMExNTaUO9OPHj6NBgwawtLSEqakp3nnnHaSlpUkx3ozpQM/OzjYoRnhmZiYyMzPx+PFj3L9/HwMGDEDbtm2luIkiQ4+Nq6srzpw5g7lz50qvflarVk3jxlus79q2bauxPV9fX9jZ2VU4NrO1tbVGmA+5a86OHTugUqm08mBvbw9fX18cOXKkzIZnye28/fbbUmzNKlWqoGvXrsjNzZXtpJCzd+9emJmZoU2bNhrL5V5z3LFjB9RqtdY12MnJCYGBgUhMTJSt6xcuXAilUglBEFCnTh2kpaVh1apVUpxXXd+J+CBF7jvRdT0zlqmpKfr164fU1FSNUEzr1q3DgAEDjN6ePosXL8bWrVvh5eUFhUKBOnXqSOUfMWKE7Do2NjZQq9UarzPLMbTNosumTZs0Xm/u06cPAOidKNnBwUG6iRRj8ZbF0PK8yjp06IArV65g9erVUtvs8OHD6Nu3L1q0aKHxsGbr1q2wtLTUOicCAgK0wlcBxXVdyXi8cm04Q+vJu3fv4uTJkwgMDIS9vb1G2oqEEipLeeqLsqSkpEjXoszMTHz66ac601apUkWjo+aNN95AaGgoDh06hEePHmnlydTUFA0bNsTZs2ela+nWrVthY2MjPVgvb/7F8C2i9957DzY2Nti1a5dW+AVj6nmgOBRN6Xi3tWrVwu3bt2UfFPr6+kod+YB8e8TCwgJOTk6y7ZHScdBLdsA1btwY9vb20nX8xo0bMDc3h5ubm2zeS6pI/b5jxw78+OOP2LBhg0FzclW0/i39fTZv3hw1atTAL7/8guvXr+tcz8TERJo/JioqCvfv3y9zP2JZ+L6schlTZ+tTciJSQL4daew5Lacy6iKx477kZKElQ7SI/xXP34SEBI3457r6djp06CANqimtadOmGnPcdOjQAXXr1tVIo1arMWjQIBQUFEgT7la07KWvsUOHDoWdnZ1WOmOIbf3KjnduTJ+ZuG9j8nDo0CE8fvxYa/tmZmZo164dLl++jNTU1DK3Ic4xUjL8zunTp5GXl1fmw80HDx7gk08+wahRo7Rio+ti6H2pnOTkZFStWhWNGjWSlontY30POMWBPX/++acUKkcXrpuLlS9CPQBPe3ds+vDbysxLpfK0d38h+xWf8sg1mtzc3HD9+nXcv38frq6u0vLSE3qIDUJDJlkTR0fpm2xgx44deuNUNW/eHLVr18a6devwxRdfQKFQYM2aNRg8eLDefMj5888/4eLiopU38djIxUoreVxKEtPKHVe5cpWO7afvmJqZmfFIs38gG3dHtPp2+IvOhiwb94o98S/pm2++wa+//orx48ejTZs2ZTYg4uLipDh1or59++Lo0aOIjY1FixYtpOXiSJHSo5EUCoX0lLkkcVRgYmIi7t27B4VCIZ03ciPWAc36TeyUl6vz5GYot7e3R5MmTXDy5Enk5ORoxSQMCQnB3r17kZCQgObNm8PKyko233IKCgqMnqTFyckJn376KVJSUhAVFYW2bdtKDSNDj01ERATS0tIwdepUREREoE2bNhgwYAC6d+8u5Ues7zp37izNMi8iImkCyvIypH4U8zBq1CjpDR6R+F09ePBAbxzVuLg49O/fX2NZ3759sW7dOsTGxmp9JicjIwPOzs5ak1nJjaLTdw0mIvz5559a+f7000/LjG0sHo+SD2ZFuh7A6rqelUdYWBjmz5+PtWvXYtGiRSgsLMTmzZs1JjgVOwfl4oKKy0p3IMop2ckkEgQBb731FpKSknD16lWNuKjA/9og+q6jhrZZ5Pz6668wMTHBW2+9JS3z9vZGs2bNcOzYMRw/flzrpl40Y8YM1KtXDyqVCsnJyVi3bl2Zky8aWh5jtA/wRjM/w9um5mbyk7dN+uAtFBYZPlrQ3kZ7NJPS0QbtA7wN3oYu1tbWGDx4MAYPHoyHDx9i8+bNmDVrFo4dO4bZs2dj/vz5AIrPH0EQtM5hhUIhO1GbIe1iQ+tJXdc5Xcsqg6H1xcKFC7VGk1d0lJ+uyVvFPM2dOxeLFy/W+Cw/Px82Nja4ffs2BEHA5cuXUVhYKHUyi4gINjY2ejtAAeDmzZs4c+aMxkAdGxsbdOnSBRs3bsQPP/yA3r17S58ZU88DxQ8V5s+fjzNnziAnJwcKhUJ6q+nBgwdadV3p31RZ7RG5OvSdd96BmZmZ1IGekJCA2bNnAyjuBA8ODsYPP/yAO3fuaLVV9DGkfi/t3LlzCAsLw7fffqt3lLqoIvVvXl4edu3apTVfR58+fTB37lzExcVh8uTJsusePHgQv/32Gzp06IADBw7gs88+w5o1a3Tu6++of8vL2b09qrk0Mzi9wkR78AkAeNefBFIbPnm6mbn+a3V5GFpn62NIHW3sOS2nMuoioPh+Ydu2bUhISJAmRxUHNIhzHMTHx2PixIlISEiQBk8AutuVZmZmcHZ2Nqo/o6ShQ4ciNjYWXl5eePbsmdZDsPKUvTLbnaKsrCwAlX+9NKbPTKlUIiMjAw8ePDC4jPq2DxQf49KDukry8/PDm2++ibi4OCxYsABmZmZ624+FhYXo2bMn/Pz8jJoMuTz3paLSDzeB4nutGTNmIC4uTudbw8+ePcOYMWMwfPhwfPPNN5g8eTK6du2q862Fl6lufpHK3YFuaWYBH6calZiVV1fphr8xxCdVhnS2G2LQoEGYMmUKkpKS0LBhQ8THx2t1xv2d9B2LwsJCg15tMfaYFhQUlPupH3txTC3MYFej8hsLLxsnJyesXbsW7du3x8CBA3VORJOSkoIrV66gZ8+eGsvVajUUCgW2bduG6Oho2dHl+uTk5KBZs2YwMTHB9u3b0bhxY2mSyrJGk8h19hszgiAkJAQnTpxAcnIy4uPjNRr3JUeNGDvxirW1dbmfoAcGBmLLli1ITEzEu+++a9SxcXNzwy+//IJff/0VGzduxMaNG7F//34EBgYiISFBY8TKTz/9pHOirYowpn6Mi4tDu3btyrWfzMxMJCUlITU1VSM8ABHB1NQU8fHxyMrK+lsa/H+Xq1evokqVKgalrci1vTQ/Pz80bdoUsbGxmD9/Pvbt24f69evjtddek9KIbzyIr7qWJC4rTwgZkfhwKisrS6sDXWxM67uOVqTNEhsbi7t372rdxIkPdOLi4mQ70M+fP4/vvvsO586dQ0pKCt577z1MnDgR7733ns7XgQ0tjzHsbSxlO7ON5eaof6SpPhZmprDQ0UFfXtWqVcPw4cPRsmVL+Pn5abwuDxh3w2XMufN31ZOlGfLGTWn66otPP/20zNHkupT1sE/fsYuMjMTw4foHHri4uMjWJYbauHEjCgsLpZHHIvF3EBcXp9GBboyUlBQEBQUhJCQESUlJUkdYREQEZsyYIbuOrnaHoe0RW1tbBAQESG8DnD9/XmOkf0hICH744QfEx8cjMTFR48GBPobU7yVduXIF7du3R0REhEEPoUUVqX/37NmD3NxcrTAU4oSwujrQnz17hlGjRmHFihXw9/dH3bp1sW7dOgwZMkRnx//fUf+Wl5mFPcwsKt6ZbWml/22E501fnV2Wymzf6FPRugjQDAlpaWmp0TZ3dHREgwYN8PPPP+Px48dIT08vs1PVEIYcn9zcXKxbtw79+/fH559/jqioKK00xpb97/hejh8/DgAGP6j7OwQFBSEjIwMXLlx47vcMAwcOxOjRo7F//3506NABmzZt0vlwU61WY8CAAXj27BkOHz5sVId4ee9LCwoKsH37dpiYmGDZsmUan5mbmyM9PR2nT5+W/U3PmDEDTZs2xcqVK5GVlYWdO3di0qRJOt94f5nq5heJQ7gYae3atWW+7iHenMqFCrlz5w7s7e21ntpWhPgErbJeM+7fvz9MTEywZs0axMXFoXPnzlrhUQzl6+uLe/fuSY0rUXlu5MW0cheR27dvy45eNcbDhw+1nvAy9jIJDQ3FmDFj8NNPP2HRokWyaeLi4jB16lSNV70zMzORlZWFbt26ITs7GwcPHpTSize2pUe8EZE04kAUHx+PGzduYPTo0WjSpEmlv8qnizg6cc+ePbhw4YJGmBR/f384OzsjPj5e65VLfdzc3Mpdb4plF0epGXNsVCoViAjNmzdHdHQ0bt68ieHDh+P48ePSa3ZifVd6FnqgOIbpiRMnypVvY5SVh6ysLBw9elTvNjZv3ozevXsjKytL4/d49+5dfPzxxygqKipzhniRt7c37t+/rxWjU26kpr5rsEKh0Ig3b6iytvv7779rvHr/dwkLC0NWVhYOHDggG3+xVq1acHNzk82LuExffMOrV6/qbDiL4R3k2jAPHz6ElZWV7Oj1ksrbZikqKsLWrVuRmpqqVb9dvXoV5ubm2Lx5s9ZvhIgwbNgwzJ07F25ubujSpQu6deuGrKwsTJkyRef+DC3Pqyo2NlaaY6C0119/Hc7OzhqjeHW1B4kIN2/eLNdoJkPrSV3XOV3LgOJRVqXzeu/ePaPz9iLri9LKOl6PHz/GkSNHpPPH19cXWVlZsh2tqampOuc8KSkuLg579+7VOl/v3bsHQRBw8OBBjbezjKnnY2NjUVhYiFmzZpUrLFZ5tW7dGiqVCnPmzMGbb76p0TlSMg760aNHjQ4PpK9+F92+fRtt2rTBsGHDpPlLAODkyZN691GRe8a4uDisWLFC6/u8f/8+mjRpgvPnz+P8+fNa682YMQPNmzfHu+++C09PT8yePRtEhJEjR2qdYyIxf3xfVnmMrbMrgzHntC6VURcBxWX08PBAUlISjhw5ovWGSOvWrfHs2TN89dVXCAwM1OiI1lWfFxUV4f79++UemLB+/Xr069cPXbp0QXR0NI4dO6bxeWWVvaLEgZSGzsVVlocPH0oPgI3pMxsyZAiA4rm7dDl37hwaNmyI/fv3G7T9kmnK0qdPH1haWmLdunXYv39/mQ83R40ahfT0dOzfv196o+Dq1asGdYyX9770wIEDqFevHu7du6dVP4v9BXLzBJ0/fx7r1q2T5qKJjo6GnZ0dVq9eLT00KY3r5mLcgW4kfR3o4kRppU/w8+fP4/r16+jevXulPh0UJ3KRaxCXh4eHB0JDQ7F9+3asXLmy3OFbgOJjoVKpNDrsgP/FXS49SlbftkquK7py5Qo8PT1x48aNcucTKD5+4rFk7GU1f/581K1bVzZWnjiBiBjzrDRxpFfJWGidO3cGAK1z9Ndff9Xq0ND15kdFzz19goKCYGlpibVr1yIwMFDjhlWMa3j16lXs2bNHb+dgSfXq1UNubm65wqH89ttvACDFmjPm2LRu3VqK+wcUx6sdM2YMgP81TMT6bteuXVrrjx49Gt9//73ReTZWt27dYGpqKpuHmTNnyk6aVFpcXJxRv0ddOnfujKKiIhw5ckRjeVJSks58l74GZ2dn4/jx42jVqpXesDNydH0nRISePXtq5e3v0Lt3b1haWmLRokVITk5Gt27dND5XKBQYNGgQzp07hytXrkjLi4qKsHfvXrzzzjtaDw9Kx/q9evUqpk6dqnX+37t3DykpKfD19ZUmgSy9HT8/P70P1srbZjl8+DC8vb1lH344ODggNDQUWVlZWt/DypUrYW1tLd18AcU3Cfb29oiJidE5isjQ8ryqCgsL8csvvyAvL0/rs6ysLKlTTaSrPZiUlITatWvLbkcfQ+tJQRDQtGlTHD9+XCvGr1wdAsjPy6HrhtKYvD3P+qK00NBQ2Nvbyx6vmJgYjB8/Xgq10KtXL6jVao2JpYHiMB5t27aV7SgtKT09HXfv3pUNsWhqaooePXqgsLBQI3awMfX8i2qPiJ1uMTExWh1w9evXh6urK7Zv3w5HR0ejH77pq9+B4utY27Zt8f7772u9hVByvhld3N3d4eDgYHT9+/DhQyQkJMjmScw7oH09P3/+PL7//nuNMAajR4/GW2+9hfPnz+sMb3Dz5k2YmJjAz8/PqHwy3YytsyuDMee0LhWti0oKCQnB/fv3sXPnTq0HXOL5vHjxYq1zW1ffzoEDB6BSqYzqzyhJvJ9ZuXIl7Ozs8NFHHyE/P19jv5VV9vJatWoVDh8+jP79+xt1j6XLw4cPpbeEjOkzCw4ORr9+/fDNN9/orOdnzJiBrKws6WGmeM0rvf2ioiL8+OOP8PX1RcOGDfXm2cHBAZ07d8bevXsRFRWlM3zL5MmTkZSUhEOHDmm83RgREaH1Hcop731pWfdaPXv2hKmpKTZt2qTxFp04uGT+/PnSiH4PDw/MmTNHesApN7Gw2C561fvMuAO9krVo0QJDhgzBN998I10g7t+/j/DwcHh6eho8E6+h3nnnHZibm1fqaJawsDA8e/YMeXl5GvGSjTVhwgT4+/tjypQpuHr1KoDip4Pz5s1DaGgoPvzwQ4O39eGHHyI0NBRz586VZkK+e/cuhgwZgr59+6J27drlzueff/6JJ0+eaE2sxNjLpkqVKoiNjZUNwZKYmAhXV1edNxwdO3ZE1apV8cMPP0hxQjt06IDQ0FCsWLFCGvlw7do1TJ48WevNk+bNm8PNzQ3Lli1Deno6gOIZw7/88svKLKIWKysrBAYGIj8/XzamqLjM19fXqNnZxQaWMXVnXl4eli9fji1btqBu3bpSHWbssYmMjMS1a9ekba5cuRJWVlZ47733APzvOvLtt99i9+7dICIUFhYiMjISKSkp5Xrl31je3t6YMWMG9u3bh5iYGKhUKqjVamzYsAEbNmwoM4QAUFyvXrlyRWe9GhAQAB8fHxw/flyjs1fOxIkT4ebmhqlTp0o3/kePHpVGmcjle9euXdiyZQsA4MmTJxg7diysrKykkRbGKnkNEifjffbsGT7++GMUFBRUysgcfRwdHdG5c2ckJSVJk/GVNmnSJNSqVQtDhw7FgwcPUFRUhEmTJuH+/ftaZZ83bx6qV6+OyMhIjeX379/H8OHDpdGh169fR58+fZCfn4+lS5dq7TM3NxeXLl0y6Brq7+8PFxcXo9ssZd0gAJBG1pUcZZOZmYlZs2YhJiZGI627uzvmzp0LtVqNkSNHaoXmMKY8r7Jbt26hf//+UoxxAEhLS0PPnj1hZ2eHzz//XFpesj0opr9y5QrGjRuH8ePHl2uSM2PqyQULFqCoqAgff/wxnj17hsLCQixfvhxpaWmy2+7UqROuXbsmTXCalpYmW9/o8jLUF6XZ2toiOjoaaWlpiIiIQH5+PogIP/74I7788kvMmzdPSit+X5MmTZKO0V9//YUBAwbAz89PeviuS2xsLHr16qVzwJDc+aqrnpcbOff+++/DxMQE06dPlzobDh06ZNAD2Ypo3rw5qlSporM90qpVK+Tk5BgV/1ykr37PyclBhw4dkJWVBTs7O0RERGj8GSokJMTo+nf79u1o1aqVzjZWr169oFAosHHjRhARgP910CxcuFDjobWJiQlWrVoFMzMzREREyHbmnz17Fk2bNjVozg5mOGPq7MpgTNtNl4rWRSWJ52WtWrW05ooQ5ziQO39L1ufiuXPt2jVMnToV/v7+mDBhgsF5kOPm5obFixfj4sWLmDVrlrS8MsturIsXL2L06NEYPnw4+vfvr9WOqgzG9pnFxMQgODgYISEhOHz4sNR2u3btGsLCwhAfH489e/ZID1jFa97p06cRFRUFlUqFgoICTJ48GQ8ePEBMTIzBg1rDwsJQUFCAkydPonv37lqfz5s3D5GRkXj77bexbNkyjbpZ30SlovLclz558gQHDx7U+RBHEAQEBwfj9u3bGg+uxIc2pSeqHjlyJAIDA5Gamirb3hf74F759jHpoFKpKDU1lVJTU0mlUulK9q9RVFRElpaWZGZmRgDIzMyMLC0ttf4UCgWtWbOGpkyZQs7OzgSAbGxsSBAEKioqIqLiY7do0SKqU6cOubq6klKppAEDBtCNGzek/R04cIAEQSATExMyNzcnQRDo+vXrtGDBAo3t1q1bV2/ee/bsSQ0bNtRYlpGRQYIgkI2NDQEgBwcHEgSBfvvtN73by8vLIwcHB/ryyy/LTBcQEEAODg4ax+D69esaaR48eEDjxo0jT09PcnV1JW9vb/rPf/5Dubm5Uppp06ZpHcs9e/bI5mvatGlUs2ZNEgSBatasSVOnTpW2lZaWRoIgkLm5OZmYmJAgCPTLL7/Qpk2bSBAEAkBVqlQhQRDo6dOn0nYXLFhA1tbW9ODBA73HhrG/y+3bt0kQBLKzs5PqhOjoaNm0kZGRVLL6Hj9+PNna2kq/77y8PI30p06dIkEQpPrNycmJFixYQEREOTk5NGrUKHJyciJBECgwMJCSk5PJy8tLykdCQgIREZ09e5ZCQ0OpWrVqpFQqqWXLljRnzhwCQHZ2dtSuXTt69OgRCYJAVapUIQAkCAJt27aNoqOjNc7zwMBAIiLy8vLSSBsTE6NV3pkzZxIAOnPmjNZnf/zxBwGgiRMnGnW8CwsLyd3dnT7++GON5bGxsVI9IuZJEARydXWlqlWrkr+/P02dOlWrvjDk2BARJScnU//+/cnHx4eUSiV5eHhQly5d6NSpUxrbU6lUFBUVRXXr1iUnJyfy8vKiXr16UXp6upRm+PDhsteh4OBgsrOzk+r+Ll26lLt+3LBhAzVp0oQcHR2pevXq9O6779KJEyfKPLaLFy+matWqSb+fS5cuaXyelZVFgiCQpaUlAaBq1arRiBEjNK5Zzs7ONHr0aGmdy5cvU8eOHcnW1paqV69O/fr1o5SUFAJAM2bM0MrD+vXrqVGjRuTi4kKurq7UtWtXunDhgkaaRo0aaV3DFi9erLNceXl5NH36dKpZsya5uLiQt7c3DRkyhG7duiWl0Xc9u3Tpktb5IXfO6rJnzx4CQElJSTrT3L17l/r370+CIJCLiwuFhIRo/b6IiNasWUM2Nja0bt06aVlubi59//331LFjR/Ly8iInJydydnam999/X2f7YevWraRQKDR+m2X57LPPdJY5IyODANCgQYOkZR4eHmRmZkYODg40fPhwrXUmTpxITk5OUttNEASqUaMG2dnZkYWFBQmCQLGxsVL6KVOmkKurKwGQfmslf0PGludVlJ2dTTExMdS1a1fy9fWVrl01atSgQYMG0eXLl7XWKdkeFASBateuTQsXLpTuMcrTLjaknhQdOnSImjRpQra2tlSjRg365JNPaMWKFVI9+e6770ppCwoKaMKECeTu7k6CIFCfPn3o9OnTWnXtG2+8oVXXigypL3RJTk7WqCecnZ1JEASdv0m5+r1fv36yaQ8cOEAtWrQgR0dH8vDwoODgYDp06JDs9xUeHi59Xz4+PjRhwgS9beXAwECytLQkOzs7jWMqio6Ols4/hUIhXYuINOt5Dw8P6tq1KyUnJ2scd7He2LFjBzVq1IhsbGzotddeoz59+tDQoUM1zmm539Tt27epT58+Gt/b+PHjpXZSybRpaWla+Q8JCSEHBwfZe+OYmBgCQPv37y/zGOlSVv2+c+dOqc7S9WeIffv2EQBKTU2V/dzLy4u8vb2lf/fs2ZOsra3JxsaG3njjDa30u3btIkEQSKFQEABydXWlOnXqSOesIAga1/I9e/ZotEdLto+IitvC5ubm9M033xhUHmYYY+rs1NRUrfokNjZWq30TEBBARERdu3bVOJ+GDBkibcuQtlteXl6Z7b/y1kWlXb9+nQBQeHi47OfNmzcnQRBkPyvZB+Hq6kqenp40duxYjTzExMRotaeXL18ufS53fxQTE0OHDx+W1hOPt9jeMqTsYWFhUlvWzs6OBEHQeX6XpOs64+TkRD4+PjRgwABKTk7WWk88h0vWlcnJybRmzRqprwyAbD+ahYWFRl1lSJ9ZSWq1mr7//ntq1aqVdG/m5+dH48aNo2vXrsmus2/fPgoKCiJnZ2dycXGhtm3b0rFjx/Qen5IKCwtJqVRSWFiY7Of29vZl1s1r1qwxaB9y96Wi6dOnEwA6evQoERFt27aNnJycpN+MeK9ekpeXF1lbWxMAsrW1pZYtW0rntr29vUb/JRFRzZo1ydbWlgBI323JdkfHjh2pWbNmesvyT2ZIH7iC6P8fFZeiVqulV0PeeOON5zpZBDPOH3/8gQYNGmDr1q3o1KlThbdXWFgIT09PnDp16rnGFnwRcnNzUbNmTYwdOxZTp0590dlhjD1H69evx8iRI3HlyhVpgkT2z/Hbb78hMDAQS5cuxejRo190dl5JarUaAQEBCAgIMHiEUnZ2NurUqYPp06dL4YtE6enp8PPzw9ixY/H111//HVkuU3nKwxhj/yStW7eGg4ODRjg5kVKphKur6wuJ0w8AH3/8MQ4fPozU1NRyTXjPXn7cdmNMXln3pZMnT0ZkZCROnTpV4Uluy+PMmTNo2rQpkpKS8Pbbbz/3/T8vhvSBc6/4v0Dt2rWxbt06DB06tNwNnidPnkixjvbv349GjRr96zvPCwoK0KNHDwQFBcnOHM8Y+3cbMGAAhgwZgs6dO2vFxmUvj6ysLLz//vtay8WwQ++8885zzhEDil/RHzFiBKysrHTGspXj5OSEHTt2YObMmVi9erXGnA5ifMUXEfu2vOVhjLF/kri4OJw7dw6zZ8/G0KFDpeV5eXm4f//+C4s9vn79emzZsgU7d+7kzvN/AW67MWackvelXbt2lUIgA8XtYzMzM9SqVeu55+vGjRvo3r07Fi5c+K/uPDcUd6D/S/Tq1QubN2/WmqDJUGPGjMHGjRtRUFCAyMhIjBs3rpJz+PJJTU1F8+bNsWXLFn7DgrFX1JIlSzBkyBAcPXr0RWeF6VBQUIDdu3cjOjoaKpUKRITk5GTMmzcP/fr1wxtvvPGis/hKunXrFmxsbBAfHw8rKyuj1m3RogXi4+Nx+fJlxMTEICcnB/n5+Vi2bBlsbW11Tlb3d6pIeRhj7J9CEAQcP34c33zzDb7//nv8/vvvICIsXboUKpVK5yR5f7fffvsNv/32W4XmtWIvD267MWa8kvel69evB1D8duaBAwfQtWtX2NraPvc8HTp0CIsWLcLHH3/83Pf9MuIQLgwAMH36dERFRcHGxgb9+vXD/PnzX3SWGGOMMeTl5WHevHnYu3cvbt++jWfPnsHV1RUDBgzA5MmTYWZm9qKzyMopMTERX3zxBdLT01FYWIj69esjMjISQUFBLzprjDH2r3bjxg2MGzcOx44dQ35+PgRBwGefffZCJrll/z7cdmOs/CIiIhAXF4fs7GyYmpqiU6dOWLx4MU+u/DczpA+cO9AZY4wxxhhjjDHGGGOMvXI4BjpjjDHGGGOMMcYYY4wxVk7cgc4YY4wxxhhjjDHGGGOMyeAOdMYYY4wxxhhjjDHGGGNMBnegM8YYY4wxxhhjjDHGGGMyuAP9FZeTk/OisyApKChAQUHBi84GY+wV9DLVhezVVdHf4ct2HeXzijHGGGOMMfZvwB3o/+/OnTtQKpWwt7eHQqGAu7u73pvQqVOnQqFQoGrVqlAqlTh9+vRzym3l+OqrrzB06FAAwI0bN6BUKuHi4gKFQgErKysolUr89NNPsuuuWLECCoUCq1atkv28RYsWsLOzg0KhgLm5OZRKJRITEwEAiYmJUCqVsLKygq2tLWrUqAEAePjwIRo3boyzZ89WfmEZe8mVroNGjhwpm65ly5bSeapUKtGtWzfZdA8fPkSVKlUQFBRkVD7i4uKgVCphamqKli1bGluMCsvPz4dSqYSlpSUUCgVcXV0xaNAgjTRi/SPWKaIRI0bA2dkZFhYWUCqVePz4sd79ZWdno127dkhISEBSUhJMTU2hVCqlP/H7sLe311huamqKpKSkyix6pbp69apUzyoUCoPXO3XqFFq1agWlUglXV1e8/fbbuHTp0t+YU0ClUuk81tbW1qhVqxbGjBmDv/7662/LQ2Wff+U1dOhQLFq0qFzrpqamolGjRnj48CEAoFu3blAqlbCwsJDyO2bMGNl19dUXS5cuhSAIUCgUUCgUcHZ2xogRI6TP/f394ejoCDMzMyiVSuzevbvC5WGMMcYYY4yxlwbpoFKpKDU1lVJTU0mlUulK9q+zZs0aAkAAaM2aNTrTPXnyhBwcHAgATZ8+/bnlr7LMmjWL6tWrR/fu3dNYnpGRQQBo4MCBZa4fFBREAKhly5Y601y5coWsrKzIwsKCfv/9d43P/vrrL6pevTqlp6drLN+9ezc5OjrShQsXjCsQY/8SJeuggwcPyqYRz9OyrFq1igCQQqGgjIwMo/Ph5eVFwcHBRq9XWYYNG0YA6Oeff9b6rHv37gSAPv/8c63Ptm3bRh9++KFB+8jJyaEGDRrQxIkTiYgoMTGRvLy8NNKI30fp64GXlxclJiYatJ8XaeDAgXp/K6K8vDzy8PCgd999lwoKCujp06fUoEGD51ZOuWNdUFBAK1euJABUt25dKigoeC55qOj5VxZxfbm2Q1ZWFvn5+dHs2bON2mZaWho5OjrSnj17tD4LDg6utPqiffv2BIAiIiK0PhsyZIhWmcpbHsYYY4wxxhh7XgzpA+cR6DJq164Nc3PzMkdNrVmzBp6ens8xV5Xn9OnTmD59OqKjo+Hs7Gz0+teuXcN///tfVK9eHcnJybh165ZsOm9vb0ydOhUFBQUYO3asxmcTJ07E4MGD8frrr2ss79KlC9q1a4eBAweCiIzOG2P/Bu7u7jAzM8PgwYPx4MGDcm0jLi4O9evXBxFh48aNlZzDv19ISAgAICEhQWO5Wq3GL7/8AisrK8THx2utl5CQIK2rz7Rp05CTk4PZs2dXPMP/Aunp6bh16xY6deoEc3NzWFtbIzExEc2aNXtheTI3N8fw4cMREhKCCxcuYM+ePX/7Pivj/CsvFxcXREVF4YsvvjD4bSy1Wo0BAwagU6dO6NSpU7n2a2h9ER0dDUtLS8ybNw9XrlyRlv/888/4+eefMWXKlAqXhzHGGGOMMcZeNtyBLsPNzQ29e/fG+fPncejQIa3P1Wo1vv76a4SHh7+A3FXcnDlz4O/vj1atWpVr/Y0bN+L9999H3759oVary7zZ/uyzz1CrVi0cOnQI27ZtA6D7Rls0YcIEpKSk4McffyxX/hj7p6tVqxamT5+O27dvY/To0Uavf/v2bZw6dQpr164FUNw59k8TEhIChUKh1YGempoKHx8fNG/eHCkpKVphWhITE9G6dWu928/OzsaKFSswbtw4mJmZAQDefPNN2U55OfHx8XjzzTcNLM0/g9hZbGVlJS1zcHCApaXli8qSpEGDBgCAP/7442/fV0XPv4oKDQ2Fn58f5s6da1D6/fv34/Tp0xg/fny59mdMfeHr64tJkyYhLy8P48aNAwAUFhZixIgRWLFihexvxdjyMMYYY4wxxtjLhjvQdfjkk08AAAsXLtT6bNeuXahbty58fHy0Plu1ahWUSiUUCgXCwsKk5eHh4XB0dIRCoZBuUktat24dGjduDFdXVwiCgO7duyM9PV36XIwbbmFhgRo1aiA1NRUtWrSAo6MjateujfXr1xtUrmfPnmHPnj3l7jwHim+u+/bti759+0r/1sXS0hLLli0DUHxMHzx4UOaNNgA0btwY1apVw6ZNm8qdR8b+6aZMmYKgoCBs3LgRW7duNWrdTZs2oVOnTmjSpAkaNWqEtLQ0nDt3TjbtkydPMHr0aLi4uMDd3R2tWrXSOVL06NGj6N27N2rWrAlnZ2dUr14d4eHhePLkiZTm8uXLGrG3r169inbt2sHR0RF16tTBDz/8AABYu3Yt/Pz84OjoiP79+2tsAygeuVq/fn0cO3YMeXl50nJxhHlISAhUKhWOHj0qfZaZmYmCggJ4eXnpPUa7du1Cfn6+Rl1obW0tW6/L8fHxQUZGhka9LNq8ebPsdWDEiBFS/OyIiAh8/fXX8PPzg729PVq3bo3Lly9r7efhw4cYN24cPDw84OjoCG9vb0ycOBHPnj3TShsVFSV9Nw0aNMCWLVsMKgsAdOzYUYrnHR4eDqVSiXr16kmf5+XlYdq0afDx8YEgCHjttdcQHh4uxdsGgNmzZ2uUe+fOnWjSpIk0H4bctc9Q4htJpd+aUqvVWLRokfRbEgQBffv2RUZGhka6u3fv4qOPPoKXlxfc3Nzg5+eHcePG4ffff5fdX3nPv/Xr16NRo0ZwdHSEk5MTunTponE+zZ49G02bNgVQ3L4QY72vWLFCYzshISHYvXu3xm9fl82bN8PR0VF6yGAsY+oLoPjY+Pj4YN++fdi9ezfmz5+PgICAMudMMKY8jDHGGGOMMfbSKW/8F5Uqn3KfXHtp/1Sq/HLFvVmzZo0U91eMG3r27FmNNM2aNaOkpCRKTEzUGccUMnHExfSlY+lGRESQqakpbdq0iYiK4/L27t2b7O3tKS0tTSNtcHAwOTk50QcffEDZ2dlUWFhIo0aNIgCUkpKit3xJSUkEgFauXCn7ub4Y6GlpaaRUKqmoqIiIiOrVq0cA6OLFi2Xut1evXgSAfH199cZXJyJ66623qGbNmnrTsVebujCfiu5mvJR/6sKK10FXrlwhW1tbcnJyojt37khp9MVgbtKkCe3du5eIiBYsWEAApDjfpYWGhpK9vT398ssv0rbbtm1Ljo6OWjHQu3fvTq1bt6b79+8TEdGZM2eoevXq1KNHD63tirG3+/XrR3fv3qXCwkLq1asXWVhY0OrVq+m7774jtVpNJ06cIDMzM9n8hYeHEwA6cuSItKx9+/aUmJhIx44dIwAUHh4ufRYbG0tDhgzReVxKCgsLIwCUl5dXZjpdMdBLCg4O1oqdTiR/HRC/u7p169KSJUuoqKiIbt68Sd7e3lS/fn2NtE+fPiV/f3/y9/eny5cvExHRqVOnyNPTk1q2bKlxbZ49ezYBoBUrVpBKpaLHjx/TgAEDqHbt2gbH69Z1jSoqKqLWrVuTu7u7dD3MyMig+vXrk7+/Pz19+lSr3H5+fjRs2DB68uQJ5eTkUO3atcs8hkRlH+vg4GCytrammzdvaiz/6KOPyN7eXvqNZGZmUqtWrUgQBLp9+7aU7u2336Z27drRw4cPiYjo999/Jx8fH63rd0XOv1mzZpGZmRlt2rSJVCoVPXr0iHr37k02NjZ07tw5rfXLmj9lxYoVBICSk5N1phHVqFGDAgMDdX6uLwa6MfWFaP/+/QSAPD09ydPTU2s+ldKMKQ9jjDHGGGOMPU+GxEA3K2/He0FuJn4/Wb7XhZ+H1wMWoYrNaxXaxvjx43H06FEsWrRIGjl37Ngx5OfnIzg4GElJSRXO55UrVzBz5kx07doVH3zwAQCgatWqWLp0Kdzd3TFu3DitkALZ2dmYOnUqHB0dpXwuX74ce/bsQUBAQJn7u3TpEgBAqVSWK7+xsbHo1asXTE1NAQB9+/bF559/jtjYWMyaNUvneosWLcKBAwdw+fJlfPfdd3r3IwgCUlJSUFBQAAsLi3Lllf37qf+6jZxvhrzobMiyHf4tTF1rVGgb3t7eWLJkCQYPHoyPPvoI+/bt07vOH3/8gWvXriE0NBQA0Lt3b0yaNAmbNm3CvHnzoFAopLT79u3DoUOHMHnyZDRv3hwAUKNGDXzxxRdo0aKF1rZ9fHzQs2dPODk5AQAaNmyIzz//HCNGjMClS5dQq1YtrXX69OkDV1dXAMCoUaOwZcsWrFq1CseOHQMANG3aFEFBQdi5cyciIyM11g0JCcGSJUuQkJCA1q1bo7CwECdPnkSzZs1gZmYGOzs7jfoxMTHR4Pjnly5dQrVq1V5YeBJLS0spBIaHhwc+/PBDfPnll8jIyIC3tzeA4hHK586dw08//SSNjG/cuDGmT5+OoUOH4ocffsD777+P7OxszJw5E4GBgRgxYgQAwNbWFsuXL4eHh0eF87phwwbEx8cjOjoa/v7+AIp/J3PmzEGXLl3w1VdfYdq0aRrr3L17F1FRUVI4mKioKIPeDCjt6dOnWLVqFf766y/s27dPozzJyclYvXo1Zs2aJYXtEQQBMTExqFWrFiIjIxEVFYWHDx/i559/xtdffw17e3sAxXOdfP7553j69KnOfRtz/mVkZCAiIgJhYWHStdzOzg4rV67EDz/8gGnTpmHXrl0Gl1sQBADF57PcuSgqKCjA9evX0bBhQ4O3XZIx9UVJHTp0QNeuXbFz504MHjxY73wqhpaHMcYYY4wxxl5GHMKlDJ06dUKtWrWwceNG3LlzBwDw1VdfSeFdKsOOHTugVqu1Jv5ycnJCYGAgEhMTkZ2drfGZtbW11IkBANWrVwdQHMdUH3Fb1tbW5crvpk2bpNAtQHHnGAC9kxQ6ODhIHf7/+c9/9O7HxsYGarVaIzwAY6+iQYMGoXv37ti/fz9WrVqlN31cXBx69OgBc3NzAICnpydatGiB69ev4+eff9ZIu3fvXgBA+/btNZYHBQVJ65cUGRmp9ZBO7DS/ePGibH7EcBVA8eSMQHEncEnu7u64efOm1rrBwcEwNTWV4qAfP34cDRo0gKWlJUxNTfHOO+8gLS0Nd+/eBWBcB3p2dna568HKEBgYqPFvuXp869atsLGxkR5uiJo0aQIA0jwRR44cQX5+vtb3aGNjo3H8y0ucv6L0dapDhw4wNTWVDXHStGlTjVjqHTp0QN26dQ3anxhCxsnJCba2tpgzZw5mzZqlFSJE3G/btm01lvv6+sLOzk46PtbW1rC1tcXixYvx448/Qq1WAyg+t8aMGVNmXgw9/3bs2AGVSqWVF3t7e/j6+uLIkSPSfg1hY2MDAFrX/9IePHgAtVpd7t+yMfVFab6+vgCKH7CUDDknx9DyMMYYY4wxxtjLiDvQy2BiYoLw8HAUFBQgOjoaV65cwYkTJ6TRZZXhzz//BFA8cWlpbm5uICIpjUgc/SkSR2gXFhbq3V9BQQEASJPmGePXX3+FiYkJ3nrrLWmZt7c3mjVrhj///BPHjx/Xue6MGTNQr149eHp6Ijk5GevWrStzX2L+xPwy9ir75ptv4ObmhvHjx2vFdi5NnKOgJPHfsbGxGsvFbZV+I0WhUEgjRku6desWxo4di/r160MQBCiVSvTo0QMA8Ndff8nmp+TIVLGTrvRoVQsLC+Tm5mqta29vjyZNmuDkyZPIycmR4p+LxP9PSEjAtWvXYGVlJZtvOQUFBeWqByuL3DEANOvxy5cvIy8vD+7u7lKsbKVSifbt28PGxgb3798HoPt71LXMWLquU2ZmZnB2dpaN3S6+dVAeS5YsQWZmJu7fv48DBw7gyZMn6NWrl9Z+xH937txZ4/golUoQkTQpqoWFBdavX49Hjx6hffv28PT0xOjRo3XG+i/NkPNPzMuoUaO08nL16lUA/5uk1RCGXgMrck0HjKsvSjp//jxWr16Nvn37orCwEKNGjSpzP3xNZ4wxxhhjjP2Tlbv3wMJKidcDFlVmXiqVhVXFOw0AICwsDNOmTcPKlSuRmZmJkSNHyo7MNIQxo8/KYmJS/uce4ig1QzrbS4uNjcXdu3e1OmTEjq+4uDitUZVA8Y32d999h3PnziElJQXvvfceJk6ciPfeew/VqlWT3Zd4k/0iR4iyl5+Joztsh3/7orMhy8TRvdK25eTkhLVr16J9+/YYOHCgzskYU1JScOXKFfTs2VNjuVqthkKhwLZt2xAdHV2uOiwnJwfNmjWDiYkJtm/fjsaNG0OhUCApKanMSYnlQkDoCgshJyQkBCdOnEBycjLi4+Mxf/58jc8AID4+XmtCUH2sra3/1tGw+up7Q+txFxcX6Q2of5KKXKdECoUC7dq1w9SpUzFt2jTMmzcP336rfb7/9NNPeP3118vc1vvvv4/Q0FBs374dGzduxMqVK7FixQosXLgQ48eXHY7O0PMPKL4OtmvXzqDylcXQa2BFrunlrS+ICMOGDcOXX36J/v3746effkJiYiJiY2Px4YcfVqg8jDHGGGOMMfYyKvcdromJBarYvPbS/pmYVE7cbBsbGwwbNgwPHjzA5s2bMXz4cIPWMzU1RVFRkcaye/fuaaUTX4GWC79y584dKBQKKfZtZRBHEBobGqWoqAhbt25FamoqMjMzNf6uXr0Kc3NzbN68GSqVSmM98UZ77ty5cHNzQ5cuXdCtWzdkZWVhypQpOvf38OFDWFlZwcHBwegysleHwswCpq41Xso/hVnlxu4PDQ3FmDFj8NNPP2HRIvmHl3FxcZg6darWOZqVlYVu3bohOzsbBw8elNKLsbYzMzM1tkNEyMrK0lgWHx+PGzduYPTo0WjSpIlRneAVIca23rNnDy5cuKARQsbf3x/Ozs6Ij4+X4qQbys3NrdJCRJmZmRlU3xvL19cXWVlZsp2jqamp0pwWur5HXcvKkw9A+zpVVFSE+/fvS5//XT7++GM4OTnh+++/l8L1lMzXrVu3tNa5du0aTpw4If1bpVLB2toa/fv3x/79+5Geng4fHx9MnjwZeXl5evOg7/wrKy9ZWVk4evSo/oKWIP42xbBHujg4OMDS0rJcv2Vj6wvRypUrYW5ujhEjRqBq1apYtmwZAODTTz/Fo0ePKlQexhhjjDHGGHsZcQgXA4wZMwbm5uYYOHCgFMdbH7mYvnIhTrp16wZTU1Otycmys7Nx/PhxtGrVSitkS0XUq1cPgPxNflkOHz4Mb29v2c58BwcHhIaGIisrC0eOHNH4bOXKlbC2tsaQIf+b6DE6Ohr29vaIiYlBSkqK7P5u3rwJPz+/59ZJx9g/wfz581G3bl0sX75c6zO1Wo3NmzdL8xKU1rt3bwDFnWaizp07A4BWJ9mvv/6qFWpB12SbN27cMLwA5RAUFARLS0usXbsWgYGBGqEqFAoFWrVqhatXr2LPnj0IDg42eLv16tVDbm6uUWE1dHF3d0dWVpbGMSsrpJWhevXqBbVajT179mgsz8vLQ9u2bXH+/HkAxTHAq1SpovU9Pn36FCdPnqyUfADQuk4dOHAAKpVKawRzZatatSrGjx+P/Px8LF26VCtfcpNzjh49Gt9//z0A4OrVq7C3twcRSZ/XqlUL7733HgoLC8ucSLSkss4/8Voul5eZM2fiq6++kv4tjsIWH7pcvHgRs2fP1lhHbD+I12xdTExM4OfnZ/Q1vTz1BVD8QGbGjBn49ttvpetz586d0aNHD2RmZuqc48TQ8jDGGGOMMcbYy4g70A3g6emJ3NxcaZSVITp16oRjx47h119/BQAkJyfjt99+00rn7e2NGTNmYNeuXdiyZQsA4MmTJxg7diysrKwQHR1dOYX4f/7+/nBxccG5c+eMWi8uLk7njTYAKS58yZipmZmZmDVrFmJiYjTSuru7Y+7cuVCr1Rg5cqRWqIPc3FxcunRJazI2xl51VapUQWxsrGwIlsTERLi6usLPz0923Y4dO6Jq1ar44Ycf8OTJEwDFEzuGhoZixYoVOHbsGIDikbuTJ09G1apVNdZv3rw53NzcsGzZMmnCwEuXLuHLL7+szCJqsbKyQmBgIPLz82UnCBWX+fr66gwJJUccrW5sXSinU6dOKCwsxNKlS0FEuHHjht6JlQ0xYcIE+Pv7Y9KkSUhLSwNQHGt+wIAB8PPzkx6AODo6Ytq0aTh+/DhWrlwJtVqNnJwcjBo1SueDD2N8+OGHCA0Nxdy5c6Xjde3aNUydOhX+/v6YMGFChfehz5gxY+Dg4IAVK1bg2bNnAIAWLVpgyJAh+Pbbb7F7924QEQoLCxEZGYmUlBR8+umn0vpPnz7FtGnTkJ+fDwC4cuUKdu/ejTZt2hj8kLqs80+8lu/btw8xMTFQqVRQq9XYsGEDNmzYgIiICCmti4sLnJyccOHCBQDFk7SWHC0PAGfPnoVSqUT9+vX15qt169b4/fffpbIZojz1BVA8wWt4eDhq166tkf7rr7+Gvb09VqxYgdOnT2ttz5jyMMYYY4wxxthLh3RQqVSUmppKqamppFKpdCX71ygqKiJBEMjOzo7Mzc1JEATatGmTzvQBAQHk4OBAAMjGxoYEQaBLly5Jnz9+/JjCwsLIxcWFPDw8aPTo0XTgwAECQHZ2dtSoUSON7a1fv54aNWpELi4u5OrqSl27dqULFy5In6elpZEgCGRubk4mJiYkCAL98ssvtGnTJhIEgQBQlSpVSBAEevr0aZll/eyzz0gQBMrLy9P6LCMjgwDQoEGDpGUeHh5kZmZGDg4ONHz4cK11Jk6cSE5OTgSAzMzMSBAEqlGjBtnZ2ZGFhQUJgkCxsbFS+ilTppCrqysBIADk7OxMM2bMkD7funUrKRQKSk9PL7McjP2b3L59W6sOio6Olk0bGRlJJavv8ePHk62trVQHlD63T506RYIgkJmZGQEgJycnWrBgARER5eTk0KhRo8jJyYkEQaDAwEBKTk4mLy8vKR8JCQlERHT27FkKDQ2latWqkVKppJYtW9KcOXOkeq1du3b06NEjEgSBqlSpQgBIEATatm0bRUdHk7Ozs1RnBgYGEhGRl5eXRtqYmBit8s6cOZMA0JkzZ7Q+++OPPwgATZw40ajjXVhYSO7u7vTxxx/rTCN+H2L5BEGQTadWq2nu3Lnk5eVFzs7O9O6779K1a9c06uWMjAyaNm2axjEICAggIqKuXbtK+3FwcKAhQ4ZI237w4AGFh4eTp6cnCYJAPj4+NGHCBHrw4IFWPqKiosjb25scHR3Jz8+PVq5cSQMHDpSO7ZdffqmzrO+++650TRPLum7dOunzvLw8mjZtGtWsWZNcXV3J09OTxo4dq5GPmJgYrevR8uXLde5TVPL6W3L/qampGukiIiIIADk6OlLr1q2JqLitEhUVRXXr1iUnJyfy8vKiXr16aVw/8vPzadmyZdSyZUvy9PQkpVJJvr6+NHnyZHr06BERVez8K2nDhg3UpEkTcnR0pOrVq9O7775LJ06c0Eq3fft2qlmzJrm4uNBbb72lcb1/9uwZubi40JQpU/QeO6Li9oFCoaBdu3bJfh4cHEwKhUL6d3nqi3nz5knfrYuLC3Xp0kVKn5qaSoIgkKWlpfTbrlu3brnLwxhjjDHGGGPPkyF94AqiEu80l6BWq6XXw994441KmRCMvRyys7NRp04dTJ8+HWPGjNH4LD09HX5+fhg7diy+/vrr5543tVqNgIAABAQEaI1cZ4yxyrR+/XqMHDkSV65cgSAILzo7jAEAoqKiMHfuXKSnpxs8D8jgwYNx/vx5nDhxQiv0WWBgIC5cuIDHjx//HdnVqzzlYYwxxhhjjLHnxZA+cDOtJexfz8nJCTt27ED37t1hZWWF/Px8jBo1CsD/4pTqeq3770REGDFiBKysrLBkyZLnvn/G2KtlwIABOHXqFDp37ozDhw/D3t7+RWeJveKOHDmC2bNnY9euXUZ1Ni9duhRt2rTBiBEjcPv2bY24+eKcIi9CecvDGGOMMcYYYy8THlb+imrRogXi4+Nx+fJlxMTEICcnB/n5+Vi2bBlsbW3RrVu3556nW7duwcbGBvHx8bCysnru+2eMvXqWLFmCIUOG4OjRoy86K4whPj4eiYmJCAoKMmo9a2trJCQkICsrC3v37pV+z1u3bsWtW7cwcODAvyO7epW3PIwxxhhjjDH2MuEQLq+4xMREfPHFF0hPT0dhYSHq16+PyMhIvtlljDHG/mEeP36MUaNGITExEbm5ubC3t8ewYcMwefJkrdAujDHGGGOMMcYM6wPnDnTGGGOMMcYYY4wxxhhjrxxD+sC5V5wxxhhjjDHGGGOMMcYYk8Ed6IwxxhhjjDHGGGOMMcaYDO5AZ4wxxhhjjDHGGGOMMcZkGNSBriNMOmOMMcYYY4wxxhhjjDH2j2RIv7fODnSFQiH9v1qtrpwcMcYYY4wxxhhjjDHGGGMvgZL93iX7w0sqswPd3NwcAJCbm1vJWWOMMcYYY4wxxhhjjDHGXpwnT54AACwtLXV2oJuVtQE7OztkZ2fjzp07sLCwgLm5uc4NMcYYY4wxxhhjjDHGGGMvMyKCWq3GkydPcOvWLQCAvb29zvQKKiPQS1FREdLT06FSqSo/p4wxxhhjjDHGGGOMMcbYC2RlZQUfHx+YmprKfl5mBzoAPH36FHfv3kVOTs7fkkHGGGOMMcYYY4wxxhhj7HmytLSEvb09XF1ddXaeAwZ0oIuIyKBZSRljjDHGGGOMMcYYY4yxl5VCoTA4VLnBHeiMMcYYY4wxxhhjjDHG2KvE5EVngDHGGGOMMcYYY4wxxhh7GXEHOmOMMcYYY4wxxhhjjDEmgzvQGWOMMcYYY4wxxhhjjDEZ3IHOGGOMMcYYY4wxxhhjjMn4PywTUCeEsWD2AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "--- Leaderboard Scores ---\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
score
submission
Schedule-Free AdamW v2 (PyTorch)0.567901
AdEMAMix (PyTorch)0.519080
Schedule-Free AdamW (PyTorch)0.466891
NAdamW (Baseline AlgoPerf v0.5) (JAX)0.450617
Schedule-Free AdamW v2 (JAX)0.440516
Muon (PyTorch)0.423120
Schedule-Free AdamW (JAX)0.410774
NAdamW (JAX)0.384400
Cautious NAdamW (JAX)0.314254
Muon (JAX)0.284512
Lion (PyTorch)0.278339
NAdamW (Tuned for ResNet) (JAX)0.185746
Single Worker DiLoCo (JAX)0.136925
Single Worker DiLoCo v2 (JAX)0.130191
\n", - "
" - ], - "text/plain": [ - " score\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.567901\n", - "AdEMAMix (PyTorch) 0.519080\n", - "Schedule-Free AdamW (PyTorch) 0.466891\n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.450617\n", - "Schedule-Free AdamW v2 (JAX) 0.440516\n", - "Muon (PyTorch) 0.423120\n", - "Schedule-Free AdamW (JAX) 0.410774\n", - "NAdamW (JAX) 0.384400\n", - "Cautious NAdamW (JAX) 0.314254\n", - "Muon (JAX) 0.284512\n", - "Lion (PyTorch) 0.278339\n", - "NAdamW (Tuned for ResNet) (JAX) 0.185746\n", - "Single Worker DiLoCo (JAX) 0.136925\n", - "Single Worker DiLoCo v2 (JAX) 0.130191" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores.csv\n", - "\\begin{table}[h]\n", - " \\centering\n", - " \\caption{AlgoPerf Self-Tuning Leaderboard}\n", - " \\label{tab:scores}\n", - " \\begin{tabular}{rlr}\n", - " \\toprule\n", - " Rank & Submission & Score \\\\\n", - " \\midrule\n", - " 1 & \\sfadamwii & \\textbf{0.5679} \\\\\n", - " 2 & \\ademamix & 0.5191 \\\\\n", - " 3 & \\sfadamw & 0.4669 \\\\\n", - " 4 & \\nadamwbase & 0.4506 \\\\\n", - " 5 & \\sfadamwjaxii & 0.4405 \\\\\n", - " 6 & \\muonpt & 0.4231 \\\\\n", - " 7 & \\sfadamwjax & 0.4108 \\\\\n", - " 8 & \\nadamw & 0.3844 \\\\\n", - " 9 & \\cautiousnadamw & 0.3143 \\\\\n", - " 10 & \\muonjax & 0.2845 \\\\\n", - " 11 & \\lion & 0.2783 \\\\\n", - " 12 & \\nadamwresnet & 0.1857 \\\\\n", - " 13 & \\dilocosw & 0.1369 \\\\\n", - " 14 & \\dilocoswii & 0.1302 \\\\\n", - " \\bottomrule\n", - " \\end{tabular}\n", - "\\end{table}\n", - "\n", - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_table.tex\n" - ] - } - ], + "outputs": [], "source": [ "if not STRICT:\n", - " print(\n", - " 'WARNING: STRICT=False relaxes criteria on held-out workloads, '\n", - " 'trial counts, and study counts. Scores may not match official '\n", - " 'competition scoring. Set STRICT=True to enforce all rules.'\n", - " )\n", - "\n", - "if COMPUTE_PERFORMANCE_PROFILES:\n", - " performance_profile_df = performance_profile.compute_performance_profiles(\n", - " results,\n", - " WORKLOAD_CONFIG,\n", - " time_col='score',\n", - " min_tau=MIN_TAU,\n", - " max_tau=MAX_TAU,\n", - " reference_submission_tag=None,\n", - " num_points=NUM_POINTS,\n", - " scale=SCALE,\n", - " verbosity=0,\n", - " self_tuning_ruleset=SELF_TUNING_RULESET,\n", - " strict=STRICT,\n", - " output_dir=BYPRODUCTS_DIR,\n", - " )\n", - "\n", - " # Save profile CSV for reuse without re-running the full pipeline.\n", - " profile_csv = os.path.join(BYPRODUCTS_DIR, 'performance_profile_score.csv')\n", - " performance_profile_df.to_csv(profile_csv)\n", - "\n", - " # ── Styled plot ────────────────────────────────────────────────────────────\n", - " fig, ax = plot_performance_profiles_styled(\n", - " performance_profile_df,\n", - " 'score',\n", - " scale=SCALE,\n", - " save_dir=RESULTS_DIR,\n", - " title='AlgoPerf: Self-Tuning Ruleset Performance Profiles',\n", - " )\n", - " plt.show()\n", - "\n", - " # ── Scores table ──────────────────────────────────────────────────────────\n", - " scores = compute_leaderboard_score(performance_profile_df)\n", - " scores_path = os.path.join(BYPRODUCTS_DIR, 'scores.csv')\n", - " scores.to_csv(scores_path)\n", - "\n", - " print('\\n--- Leaderboard Scores ---')\n", - " display(scores.sort_values('score', ascending=False))\n", - " print(f'Saved to {scores_path}')\n", - "\n", - " # ── LaTeX table ────────────────────────────────────────────────────────────\n", - " def scores_to_latex(scores_df, caption='AlgoPerf Self-Tuning Leaderboard', label='tab:scores'):\n", - " \"\"\"\n", - " Render a leaderboard scores DataFrame as a LaTeX table.\n", - " Submission names come from the DataFrame index (pretty-named), rendered\n", - " via their `latex_name()` \\\\newcommand macro.\n", - " Scores are formatted to 4 decimal places; best score is bolded.\n", - " \"\"\"\n", - " df = scores_df.sort_values('score', ascending=False).copy()\n", - " df['rank'] = range(1, len(df) + 1)\n", + " print(\n", + " 'WARNING: STRICT=False relaxes criteria on held-out workloads, '\n", + " 'trial counts, and study counts. Scores may not match official '\n", + " 'competition scoring. Set STRICT=True to enforce all rules.'\n", + " )\n", + "\n", + "performance_profile_df, scores, ttt = score_runs(\n", + " results,\n", + " WORKLOAD_CONFIG,\n", + " BYPRODUCTS_DIR,\n", + " time_col='score',\n", + " artifact_suffix='',\n", + " **SCORING_OPTIONS,\n", + ")\n", "\n", - " best_score = df['score'].iloc[0]\n", + "# Save profile CSV for reuse without re-running the full pipeline.\n", + "profile_csv = os.path.join(BYPRODUCTS_DIR, 'performance_profile_score.csv')\n", + "performance_profile_df.to_csv(profile_csv)\n", "\n", - " rows = []\n", - " for rank, (name, row) in enumerate(df.iterrows(), start=1):\n", - " score_str = f'{row[\"score\"]:.4f}'\n", - " if row['score'] == best_score:\n", - " score_str = r'\\textbf{' + score_str + '}'\n", - " rows.append(f' {rank} & {latex_name(name)} & {score_str} \\\\\\\\')\n", + "# ── Styled plot ────────────────────────────────────────────────────────────\n", + "fig, ax = plot_performance_profiles(\n", + " performance_profile_df,\n", + " title='AlgoPerf: Self-Tuning Ruleset Performance Profiles',\n", + ")\n", + "save_figure(\n", + " fig,\n", + " Path(RESULTS_DIR) / 'performance_profile_by_score',\n", + ")\n", + "plt.show()\n", "\n", - " body = '\\n'.join(rows)\n", + "# ── Scores table ──────────────────────────────────────────────────────────\n", + "scores_path = os.path.join(BYPRODUCTS_DIR, 'scores.csv')\n", + "scores.to_csv(scores_path)\n", "\n", - " latex = (\n", - " r'\\begin{table}[h]' + '\\n'\n", - " r' \\centering' + '\\n'\n", - " r' \\caption{' + caption + '}\\n'\n", - " r' \\label{' + label + '}\\n'\n", - " r' \\begin{tabular}{rlr}' + '\\n'\n", - " r' \\toprule' + '\\n'\n", - " r' Rank & Submission & Score \\\\' + '\\n'\n", - " r' \\midrule' + '\\n'\n", - " + body + '\\n'\n", - " r' \\bottomrule' + '\\n'\n", - " r' \\end{tabular}' + '\\n'\n", - " r'\\end{table}'\n", - " )\n", - " return latex\n", + "print('\\n--- Leaderboard Scores ---')\n", + "display(scores.sort_values('score', ascending=False))\n", + "print(f'Saved to {scores_path}')\n", "\n", "\n", - " latex_table = scores_to_latex(scores)\n", - " print(latex_table)\n", + "# ── LaTeX table ────────────────────────────────────────────────────────────\n", + "latex_table = scores_to_latex(scores)\n", + "print(latex_table)\n", "\n", - " latex_path = os.path.join(RESULTS_DIR, 'scores_table.tex')\n", - " with open(latex_path, 'w') as f:\n", - " f.write(latex_table)\n", - " print(f'\\nSaved to {latex_path}')" + "latex_path = os.path.join(RESULTS_DIR, 'scores_table.tex')\n", + "with open(latex_path, 'w') as f:\n", + " f.write(latex_table)\n", + "print(f'\\nSaved to {latex_path}')" ] }, { "cell_type": "markdown", - "id": "8448aa71", + "id": "ad6cb6ce", "metadata": {}, "source": [ "## 5b. Time-to-Target Table\n", @@ -8451,337 +303,14 @@ }, { "cell_type": "code", - "execution_count": 66, - "id": "f9a0301e", + "execution_count": null, + "id": "89e180e6", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--- Time to Target (fraction of max runtime budget) ---\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
criteo1tbfastmrifinewebedu_lmimagenet_resnetimagenet_vitlibrispeech_conformerlibrispeech_deepspeechogbgwmt
submission
Schedule-Free AdamW v2 (PyTorch)0.560.27\\textemdash{}\\textemdash{}\\textemdash{}0.850.760.370.43
AdEMAMix (PyTorch)0.590.370.38\\textemdash{}\\textemdash{}0.75\\textemdash{}0.370.72
Schedule-Free AdamW (PyTorch)0.770.29\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}0.730.210.83
NAdamW (Baseline AlgoPerf v0.5) (JAX)0.610.390.43\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}0.240.62
Schedule-Free AdamW v2 (JAX)0.610.450.32\\textemdash{}0.88\\textemdash{}\\textemdash{}0.32\\textemdash{}
Muon (PyTorch)0.53\\textemdash{}0.32\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}0.110.59
Schedule-Free AdamW (JAX)\\textemdash{}0.580.27\\textemdash{}0.91\\textemdash{}\\textemdash{}0.320.67
NAdamW (JAX)0.560.440.54\\textemdash{}0.75\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
Cautious NAdamW (JAX)\\textemdash{}0.390.54\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}0.290.59
Muon (JAX)\\textemdash{}0.450.43\\textemdash{}0.80\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
Lion (PyTorch)\\textemdash{}0.340.48\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}0.430.64
NAdamW (Tuned for ResNet) (JAX)\\textemdash{}0.470.48\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}0.37\\textemdash{}
Single Worker DiLoCo (JAX)\\textemdash{}0.580.59\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
Single Worker DiLoCo v2 (JAX)\\textemdash{}0.630.59\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
\n", - "
" - ], - "text/plain": [ - " criteo1tb fastmri \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.56 0.27 \n", - "AdEMAMix (PyTorch) 0.59 0.37 \n", - "Schedule-Free AdamW (PyTorch) 0.77 0.29 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.61 0.39 \n", - "Schedule-Free AdamW v2 (JAX) 0.61 0.45 \n", - "Muon (PyTorch) 0.53 \\textemdash{} \n", - "Schedule-Free AdamW (JAX) \\textemdash{} 0.58 \n", - "NAdamW (JAX) 0.56 0.44 \n", - "Cautious NAdamW (JAX) \\textemdash{} 0.39 \n", - "Muon (JAX) \\textemdash{} 0.45 \n", - "Lion (PyTorch) \\textemdash{} 0.34 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} 0.47 \n", - "Single Worker DiLoCo (JAX) \\textemdash{} 0.58 \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} 0.63 \n", - "\n", - " finewebedu_lm imagenet_resnet \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) \\textemdash{} \\textemdash{} \n", - "AdEMAMix (PyTorch) 0.38 \\textemdash{} \n", - "Schedule-Free AdamW (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.43 \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) 0.32 \\textemdash{} \n", - "Muon (PyTorch) 0.32 \\textemdash{} \n", - "Schedule-Free AdamW (JAX) 0.27 \\textemdash{} \n", - "NAdamW (JAX) 0.54 \\textemdash{} \n", - "Cautious NAdamW (JAX) 0.54 \\textemdash{} \n", - "Muon (JAX) 0.43 \\textemdash{} \n", - "Lion (PyTorch) 0.48 \\textemdash{} \n", - "NAdamW (Tuned for ResNet) (JAX) 0.48 \\textemdash{} \n", - "Single Worker DiLoCo (JAX) 0.59 \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) 0.59 \\textemdash{} \n", - "\n", - " imagenet_vit librispeech_conformer \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) \\textemdash{} 0.85 \n", - "AdEMAMix (PyTorch) \\textemdash{} 0.75 \n", - "Schedule-Free AdamW (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) \\textemdash{} \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) 0.88 \\textemdash{} \n", - "Muon (PyTorch) \\textemdash{} \\textemdash{} \n", - "Schedule-Free AdamW (JAX) 0.91 \\textemdash{} \n", - "NAdamW (JAX) 0.75 \\textemdash{} \n", - "Cautious NAdamW (JAX) \\textemdash{} \\textemdash{} \n", - "Muon (JAX) 0.80 \\textemdash{} \n", - "Lion (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} \\textemdash{} \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} \\textemdash{} \n", - "\n", - " librispeech_deepspeech ogbg \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.76 0.37 \n", - "AdEMAMix (PyTorch) \\textemdash{} 0.37 \n", - "Schedule-Free AdamW (PyTorch) 0.73 0.21 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) \\textemdash{} 0.24 \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} 0.32 \n", - "Muon (PyTorch) \\textemdash{} 0.11 \n", - "Schedule-Free AdamW (JAX) \\textemdash{} 0.32 \n", - "NAdamW (JAX) \\textemdash{} \\textemdash{} \n", - "Cautious NAdamW (JAX) \\textemdash{} 0.29 \n", - "Muon (JAX) \\textemdash{} \\textemdash{} \n", - "Lion (PyTorch) \\textemdash{} 0.43 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} 0.37 \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} \\textemdash{} \n", - "\n", - " wmt \n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.43 \n", - "AdEMAMix (PyTorch) 0.72 \n", - "Schedule-Free AdamW (PyTorch) 0.83 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.62 \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} \n", - "Muon (PyTorch) 0.59 \n", - "Schedule-Free AdamW (JAX) 0.67 \n", - "NAdamW (JAX) \\textemdash{} \n", - "Cautious NAdamW (JAX) 0.59 \n", - "Muon (JAX) \\textemdash{} \n", - "Lion (PyTorch) 0.64 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "LaTeX saved → artifacts/tech_report_v1/section_4_leaderboards/out/results/time_to_target_table.tex\n" - ] - } - ], + "outputs": [], "source": [ - "ttt = pd.read_csv(os.path.join(BYPRODUCTS_DIR, 'time_to_targets.csv'), index_col=0)\n", + "\n", "\n", "# ── Per-workload max time budget ───────────────────────────────────────────────\n", "# `max_allowed_runtime_sec` comes straight from WORKLOAD_CONFIG (i.e.\n", @@ -8791,78 +320,47 @@ "# Format: finite values as a fraction (2 decimals) of the workload's time\n", "# budget, inf as em-dash.\n", "def _fmt(workload, v):\n", - " if pd.isna(v) or v == float('inf'):\n", - " return r'\\textemdash{}'\n", - " budget = WORKLOAD_CONFIG.max_runtime_sec(\n", - " workload, self_tuning_ruleset=SELF_TUNING_RULESET\n", - " )\n", - " return f'{v / budget:.2f}'\n", + " if pd.isna(v) or v == float('inf'):\n", + " return r'\\textemdash{}'\n", + " budget = WORKLOAD_CONFIG.max_runtime_sec(\n", + " workload, self_tuning_ruleset=SELF_TUNING_RULESET\n", + " )\n", + " return f'{v / budget:.2f}'\n", + "\n", "\n", "ttt_display = ttt.apply(lambda col: col.map(lambda v: _fmt(col.name, v)))\n", "ttt_display.index.name = 'Submission'\n", "# Order rows by wall-clock leaderboard score (best first), matching Section 5.\n", - "ttt_display = ttt_display.loc[scores.sort_values('score', ascending=False).index]\n", + "ttt_display = ttt_display.loc[\n", + " scores.sort_values('score', ascending=False).index\n", + "]\n", "\n", "print('--- Time to Target (fraction of max runtime budget) ---')\n", "display(ttt_display)\n", "\n", - "# ── Workload column → LaTeX macro ─────────────────────────────────────────────\n", - "_WL_MACRO = {\n", - " 'criteo1tb': r'\\criteo',\n", - " 'fastmri': r'\\fastmri',\n", - " 'finewebedu_lm': r'\\finewebedu',\n", - " 'imagenet_resnet': r'\\resnet',\n", - " 'imagenet_vit': r'\\vit',\n", - " 'librispeech_conformer': r'\\conformer',\n", - " 'librispeech_deepspeech': r'\\deepspeech',\n", - " 'ogbg': r'\\ogbg',\n", - " 'wmt': r'\\wmt',\n", - "}\n", - "\n", - "workloads = list(ttt.columns)\n", - "col_spec = 'l' + 'r' * len(workloads)\n", - "wl_headers = ' & '.join(_WL_MACRO.get(w, w) for w in workloads)\n", - "\n", - "rows = []\n", - "for name, row in ttt_display.iterrows():\n", - " # % is a LaTeX comment character; escape it so a value like \"34%\"\n", - " # doesn't swallow the rest of the row.\n", - " cells = [str(v).replace('%', r'\\%') for v in row]\n", - " rows.append(' ' + latex_name(name) + ' & ' + ' & '.join(cells) + r' \\\\')\n", "\n", "_budget_caption = (\n", - " r\"Time to target as a fraction of each workload's self-tuning-ruleset \"\n", - " rf'time budget (${SELF_TUNING_RUNTIME_FACTOR:g}\\times$ the external-tuning maximum allowed runtime).'\n", - " if SELF_TUNING_RULESET else\n", - " r\"Time to target as a fraction of each workload's maximum allowed runtime.\"\n", + " r\"Time to target as a fraction of each workload's self-tuning-ruleset \"\n", + " rf'time budget (${SELF_TUNING_RUNTIME_FACTOR:g}\\times$ the external-tuning maximum allowed runtime).'\n", + " if SELF_TUNING_RULESET\n", + " else r\"Time to target as a fraction of each workload's maximum allowed runtime.\"\n", ")\n", "\n", - "latex = '\\n'.join([\n", - " r'\\begin{table}[htbp]',\n", - " r' \\centering',\n", - " r' \\caption{' + _budget_caption + r' \\textemdash{} = target not reached.}',\n", - " r' \\label{tab:time_to_target}',\n", - " r' \\resizebox{\\textwidth}{!}{%',\n", - " r' \\begin{tabular}{' + col_spec + '}',\n", - " r' \\toprule',\n", - " r' Submission & ' + wl_headers + r' \\\\',\n", - " r' \\midrule',\n", - " *rows,\n", - " r' \\bottomrule',\n", - " r' \\end{tabular}%',\n", - " r' }',\n", - " r'\\end{table}',\n", - "])\n", + "latex = workload_table(\n", + " ttt_display,\n", + " caption=_budget_caption + r' \\textemdash{} = target not reached.',\n", + " label='tab:time_to_target',\n", + ")\n", "\n", "ttt_latex_path = os.path.join(RESULTS_DIR, 'time_to_target_table.tex')\n", "with open(ttt_latex_path, 'w') as f:\n", - " f.write(latex)\n", + " f.write(latex)\n", "print(f'\\nLaTeX saved → {ttt_latex_path}')" ] }, { "cell_type": "markdown", - "id": "3fe94ea8", + "id": "a2cd9c74", "metadata": {}, "source": [ "## 6. Step-Based Scoring: Step vs. Wall-Clock Efficiency\n", @@ -8884,505 +382,110 @@ }, { "cell_type": "code", - "execution_count": 67, - "id": "401f974c", + "execution_count": null, + "id": "82aa984e", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:absl:Expecting 3 studies for workload imagenet_vit_pytorch but found 2 studies for AdEMAMix (PyTorch).\n", - "WARNING:absl:Expecting 3 studies for workload finewebedu_lm_jax but found 1 studies for Cautious NAdamW (JAX).\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:absl:Expecting 3 studies for workload imagenet_vit_pytorch but found 2 studies for Schedule-Free AdamW v2 (PyTorch).\n", - "WARNING:absl:Expecting 3 studies for workload fastmri_jax but found 2 studies for Single Worker DiLoCo (JAX).\n", - "WARNING:absl:Expecting 3 studies for workload librispeech_conformer_jax but found 2 studies for Single Worker DiLoCo v2 (JAX).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved → artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_global_step.pdf / .png\n" - ] - }, - { - "data": { - "image/png": "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9FCR4zIcPHgQjzzyiG39gIAA9OrVCx999JHLfZlbx1E5c+YMgGvflirus0vNtVYc63W4bds2AMATTzxR5GfZX3/9hXHjxuGmm25CQEAA3N3d0aRJE7zwwgu4ePGiw76ffvpph/FC9u/fj4EDByIoKMg2v+BA5jk5OXjrrbfQrFkzmEwmBAUFYcCAAfjnn39ssVp/5syZY/d6av6OUHs9hYaGol27doiOjsa+fftcPr5ERER2tOw/Jjs7Wxw/flzs2bNH/P333+LIkSMiMTFRy5CIiOgGWCwWUadOHfHBBx8IIYQ4evSorW/KH374ocjtiuv/dfz48ba+bf/8809x5swZsWXLFtG9e3dx66232vVVfuXKFdt2OTk5on///gKAGDFihNi/f7+IjY0V3377rahVq5bw8vIS69evdxrPtGnTBADRq1cvp8tzc3OFXq8XAMSwYcNs89966y0BQLRv31788ccf4uTJk2Lt2rWiWbNmQpIk8emnn9rWlWXZrm/funXrinvvvVdMmzZNHDt2TBw5ckR0795dABAWi8Vu3fDwcLs+vHNzc4s5K6758ssvBQCh0+nEN998IxRFUbV9bGysaNy4sTAYDOKtt94SR44cEXv37hWTJ08WkiSJyMhIcenSJYftnPWBbu33ePXq1Q590cfHxwuLxaI6NrjQR2pKSoqIj48X4eHhDjHl5+eL+Ph4MWfOHNs1VdDly5ftth0zZowYM2aMiIqKEkePHhXjxo0TAES9evXs+hAufG7r1atXJvu1WrNmjTAYDCIwMFAsXrxYxMbGigMHDoinn37aVj/4/37j1f7tZT1306ZNc7p848aNtv1/+eWXQohr5/buu++29Re9c+dO8e+//4r58+cLHx8f4evrK3bu3GnbR3Z2tt1xHzBggOjQoYMtl02bNomQkBDRq1cvkZWVZbfu0KFD7a4bq+TkZNGxY0cBQEycOFEcPXpUxMTEiHnz5gkfHx8RGhoqDhw4YFs/Ly/P7nrs0qWL6NGjh5g7d644deqU2L17t2jWrJmoV6+e03h79uwpfv75Z3H69GmxevVqERISIsxmszh48KB48cUXxeeffy5Onz4ttm/fLjp06CAAiHnz5jkczxUrVggAYvDgwWL79u0iLi5O7N+/X0ybNk24ubmJIUOGONRtQkKCrZ9/AOK5554Tb7zxhjhx4oTYv3+/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pZdewscff+xaooWUx3VkfQ8v+F7u4eGB//3vf5g+fTpWrFiBH374AXv27MGsWbMwd+5cvP/++9Xi4a233noLJ06cwG233YaVK1c6LDcYSm4SKO86Ku+/I6w3aYtqpCciIipJuTagCyEwfvx4dO3atdQfugMGDMCuXbtcenqRiIgqxh9//IGEhATs27fP7h/ugoYNG4bdu3dj4cKFLjWgBwYGwt3dHTk5Obh06ZLTdeLj453Ot3aFkpqaitzcXKdPoScmJtqtWxoFb+h6eHiobnSvDPbv348///wTr7zySpHrPPDAA2jevDmOHz+O06dP2+Zbj2FOTk6F5D59+nRMnz693PZvfULN2ZPixX21vbIJDw/H8ePHVddPebFeJxkZGahfv75LjTXlFYO1/p0py/eGsnL06FEkJycDAPr3718hr1mvXr1ir5/CAgMD4enpiczMTBiNxir3PmjNt6hrIycnB6mpqbZ1y1tpj6fRaMT999+P+++/H1lZWViyZAkmTpyIrVu34v3338c777xT4j58fX1tn8MldXkREBCAMWPGYMyYMUhISLB9e3j27Nno37+/rZuUkpTFdXTp0iUIIZz+32m9niMiIhyW1alTBxMnTsTEiRNx+vRpvPHGG1i+fDkmTZqEu+++u8yeRNfqWrN2B1Ne7yEFu8W6dOmS0wcqSvq7rbz/jrAeV+s3jYiIiNQq1z7QJUlCz549y6zROzIyErVq1SqTfRERUektXLgQ99xzD9q2bYvGjRs7/XnyyScBABs3brRrfC2KwWCw9a1b1NOqx44dczr/1ltvhdFohCzL2Lt3r9N1du3aBQC48847S4ylJGFhYWjXrh0A4J9//nG6Tn5+Pnr06IGXX3651K9XHo4ePYoZM2bYus0pirUP4YJfPbcewwMHDhT5lOKiRYtw0003IS4urmwCLkfWJxpTUlIclp08ebKCo7lxvXv3BqC+fsqLtS7z8/Oxb98+p+scPXoU7dq1ww8//FAuMViv1QsXLuDcuXNO19m9e7fdupWBoijFLnf1CXQ1rPlb3ysLu3DhAm6//XYsW7YMwLUbT9ZG0qLeBwFg8ODBqvvFrggl5bt3714oigKj0VjiU9Fl4UaP59q1ax1uMHp4eOCZZ57BlClTAAAHDx50KQadToemTZsCKLrh87333nN4mjksLAwff/wxbr31Vqev56xh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LysrS8yYMUM0adJEGI1GERwcLO6//35x7Ngx8cYbbwgAYsaMGU63VfN3hJWr19MPP/wgAIgXXnhBxVElIiKyJwlRYCjyCqLT6ZCQkGDXj2phFosFQUFBWLJkCQYOHFiB0RERUWW3bt06DBo0CIMHD8aaNWu0DoeoSklLS4Ovry/8/f2d9vdORAQA27dvR69evTBy5EgsWLBA63CKFBcXhwYNGqBevXpVYryNmmj8+PGYPXs25s6di7Fjx1bY68qyjFatWiElJQXHjh1DQEBAhb02ERFVL5r0gQ44H/SjoOPHjyMvLw9nzpypoIiIiKgy+eijj5CUlOR0WXR0NADYBvAkInvff/89Dhw44HQZ64eIXNGjRw/Mnj0bX375pctjmFDNdPHiRXzyySdFLtfic0eWZTz11FM4c+YMfvzxRzaeExFRqRi0euGOHTtCr9c7XZaXl4f4+HhIklQpBxsiIqLyN3XqVBgMBrz44ot283NycrBo0SK4ublh+PDh2gRHVMl9/fXXcHd3x9q1ax2WWQdqe/rppys4KiKqasaNG4fAwEA8++yziIiIwJ133ql1SFQJnT17FuPGjUPPnj0dGsn/++8/bN68Gc2aNavQ/+2nTp2KHTt2YPv27ejQoUOFvS4REVVPmjWgOxtZvSCj0Yi3334bN910UwVFRERElc0rr7wCWZZxxx13wMfHB8ePH8dbb72FmJgYLFy4EPXr19c6RKJK66effsIzzzyDp556CmFhYYiPj8eCBQuwdOlSjBgxAo888ojWIRJRFTBs2DD069cPV69e1ToUO7Is4/Lly7h8+bJtOiEhAXq9HsHBwRpHVzMNHjwYM2fOtD0st3PnTrz22mvw9vbGt99+C52u4r4Af99992HGjBkwGo0V9ppERFR9adYH+po1a+Dv7+90udFoRIsWLeDn51exgRERUaXx66+/Yu3atdi9ezfi4+ORmpqKoKAgdO/eHRMmTECXLl20DpGo0jp48CC+++47bNmyBefPn8fly5fh5eWFdu3a4emnn2bjORFVeda+zwtjX+gVLysrC9999x1++eUXREVFIT4+Hnl5eYiIiMAdd9yBKVOmICIiQuswiYiIblilHUSUiIiIiIiIiIiIiEhLmgwiKklSiYOIEhERERERERERERFpSZMGdCEEPvzwQ/z2229avDwRERERERERERERUYk0aUAfPnw4Ll++jOTkZC1enoiIiIiIiIiIiIioRJr0gU5EREREREREREREVNlp8gQ6EREREREREREREVFlV64N6EII3H777Vi1alWp95WUlITu3bvj77//LoPIiIiIiIiIiIiIiIiKV64N6JIk4bnnnsNjjz2GlStX3vB+zp07h/79+8PHxwfdunUrwwiJiIiIiIiIiIiIiJwr9y5cBg8ejAkTJuCRRx5B9+7dsW7dOmRmZrq07ZEjRzB+/Hg0a9YMGRkZWLZsWTlHS0RERERERERERER0TYUNIvrJJ5/glVdeQU5ODiRJQoMGDRAREYGgoCC4u7tDp9MhLy8PaWlpiI+Px8mTJ5GZmWnrBubbb79FUFBQRYRKRERERERERERERFRxDegAEBcXhw8++ADffvst0tLSil1XkiR0794dL774Iu67774KirBmGjhwIABg3bp1GkdCREREREREREREVHlUaAO6lSzL2LVrF44ePYrY2FikpaXBYrHA09MTYWFhaN68Obp3747g4OCKDq1GioyMhKIoiI6Ohk5X7r36EFV5iqIgMzMTnp6erBmiErBeiNRhzRCpw5ohUoc1Q+Q6RVFYJwQAMGjxonq9Ht27d0f37t21eHlyQggBDe6lEFVJQghkZ2fDw8ND61CIKj3WC5E6rBkidVgzROqwZohcx3YystLkCXSqXCIjIwEA0dHRGkdCREREREREREREVHlo8gR6QRcvXsRff/2F8+fPQwiBiIgI9OzZE7Vr19Y6tBpHCAFJkrQOg6jSE0JAlmXo9XrWDFEJWC9E6rBmiNRhzRCpw5ohch3bychKswb05ORkjB07Ft9//z0URbFbptPp8PDDD2Pu3Lnw9/fXKMKaxWKxQJZlGAya31MhqvRkWUZSUhKCgoJYM0QlYL0QqcOaIVKHNUOkDmuGyHVsJyMrTa6CzMxM9OnTB9HR0RBCQKfTwdfXF5IkITU1FbIsY9myZTh48CB27twJHx8fLcIkIiIiIiIiIiIiohpMk6FkZ8+ejaioKNx9993YsWMHsrKykJycjKSkJGRlZWH37t149NFHER0djbfffluLEImIiIiIiIiIiIiohtPkCfQ1a9Zg6NChWLlypcMyNzc3dOrUCUuXLoWfnx9WrVqFDz74QIMoiYiIiIiIiIiIiKgm0+QJ9JiYGEyZMqXE9UaPHo34+Pgyfe2cnBy89tprMBqNePzxx0tc//fff8ett94KX19f+Pj44JZbbsEPP/xQ7DYXL17E008/jTp16sDd3R2NGzfGK6+8goyMDKfr7969G926dYO7uztq166NV155BRaLxem6P/74I/R6PXbt2lVi7GrodDrodJpcDkRVjk6ng6enJ2uGyAWsFyJ1WDNE6rBmiNRhzRC5jnVCVppcCRaLBX5+fiWu5+XlhYCAgDJ73S1btqBNmzaYN28e8vPzS1x/zpw5uOuuu9CkSROcOHECsbGx6Ny5Mx544AFMnz7d6TYnT55Eu3btsGPHDqxduxZXrlzBnDlzMH/+fNxyyy1ITU21W//SpUvo27cv6tSpg3PnzmHx4sWYO3cupk2b5rDvtLQ0PP/88xgzZgy6dOlyQ8egKGxAJ3KdTqeDt7c3a4bIBawXInVYM0TqsGaI1GHNELmOdUJWmlwJDRs2xM8//1zieps3b0bfvn3L5DVXrFiBwYMH48UXX8SsWbNKXD8qKgoTJ05Ep06dMH/+fISGhiIwMBAff/wxevfujRkzZjh9Cnz48OFISkrCqlWr0KlTJ5jNZgwYMACzZ8/G4cOH8fLLL9ut//nnnyM9PR2zZ89GcHAw+vXrh4cffhizZ89GTk6O3bpTpkyBTqfDu+++W7qD4YSiKFAUpcz3S1QdKYqC9PR01gyRC1gvROqwZojUYc0QqcOaIXId64SsNGlAf/TRR/Hqq69iyZIlRV6Ma9euxezZszFz5swyec0GDRrg33//xbPPPgtJkkpc/+OPP4Ysyxg5cqTD+qNHjwYAfPjhh3bz//rrL+zatQtdu3ZF69at7ZY9/PDD8PHxwVdffYWUlBTb/KioKAQGBiI8PNw2r23btsjOzkZMTIxt3s6dO7FgwQJ89tln8Pb2dj1xF7EBnch1iqIgMzOTNUPkAtYLkTqsGSJ1WDNE6rBmiFzHOiErTQYRnTRpErZu3YonnngCr776KiIjIxEWFgadTofExEQcP34cZ86cQd++ffH66687bC9JEr766itVr6m2yxPrE/Ldu3d3WHbLLbcAAH777TdYLBYYDNcO47p164rcxmQyoVOnTti0aRN+//13PProowCuFWPhBnrrV0Ss/aDn5eVh1KhRGDx4MAYNGqQqDyIiIiIiIiIiIiK6MZo0oOv1eqxbtw4TJ07EV199hQ0bNjhd788//3Q6/0Ya0NW4cOECkpKSAFx7cr2wOnXqwGg0IicnBydOnEDLli0BAIcPHy5yG+Ba1zWbNm3C4cOHbQ3ozZo1w08//YSEhASEhYUBAP79918YDAY0btwYAPDuu+/iwoULRR4nIiIiIiIiIiIiIip7mjSgA4DRaMQnn3yC999/HwcPHsSFCxeQnZ0NIYRWIdkkJCQAANzd3WE2mx2WS5IEPz8/XLp0CQkJCbYGdOt2RQ186u/vb7ceAIwZMwZz5szBK6+8ggULFiA6OhrLly/HyJEj4enpiePHj+Pdd9/FnDlzULt27VLlFRkZ6XR+TEwM6tWrB1mW7ebr9XpIkgRZlu3OiyRJ0Ov1EEI4bGMdjNRZlzDWJ/WtT9a7sk1Zx8CcmFNZxACg2uVUHc8Tc6ocORV83eqSU3nEwJyYk5Usy7b1qktOFR0Dc6pZOcmybLdedcjJqjqdJ+ZUeXKy1kxxnzVVLSdX9secmNON7E+WZVtMVLNpfhWYzWZ069ZN6zDsZGVlAbjWyF8Uk8lkt64r2znbpl69evj+++/x/PPPw8vLC0IIPPDAA/jggw8ghMCoUaPQsWNHjB49Goqi4P3338fy5ctx9epVtG/fHu+9956tAb80dDodUlJS7LqTCQoKgsFgQHJyst0bitFoREBAAPLz8+36cwcAX19fmM1mpKenIzs7226Z9Ql769P9VmazGb6+vsjNzUVqaqrdsoCAABiNRqSmpiIvL88u3pCQEMiy7LA/T09PeHt7IzMzE5mZmXbLmBNzKoucgoODERAQ4FAzVTmn6niemFPlyEkIAV9fX+j1ely5cqVa5ARUv/PEnCpPTkIImEwm6PV65OTkVIucgOp3nphT5cnJ2lii1+urTU5W1ek8MafKk5O1ZiwWC4xGY7XIyao6nSfmVDlykmUZtWrVApEkKsMj3xVs8eLFeOKJJzBixAgsXrzYYfn+/fvRsWNHuLu7OxSzVWhoKC5duoRNmzbh1ltvBQC0bt0aUVFRWLlyJR588EGHbaZMmYIPPvgAjz32GJYsWWK3TAiBpKQkeHl52Z56X7BgAcaOHYtDhw6hRYsWeOONN/D+++9j/vz5uOmmmzB+/HgcPXoUJ06csD3dfiOsT6Zbu6Cxqu53EpkTc2JOzIk5MSfmxJyYE3NiTsyJOTEn5sScmBNzKmp/fAKdgErwBHplZL3jlZOTg+zsbIduXIQQuHr1KgDY3YkKCwtDVFSUw901qytXrjhsYyVJEoKDg23T8fHxePnll/Hyyy+jRYsWyM7OxkcffYQHH3wQTzzxBABg4cKFaNKkCT777DOng62qIcuy7c2lMGfzrDEX9UZifTNy5ka2KesYmFPJ+6sMMVTWnGRZRnJyMgIDA50ur4o5lSYG5lTy/ipDDFrlJMsyLl++XGS9lCYGnqeS91cZYmBOJe+v4DbWp6SsNVMdctIqBuZU8v4qQwyl3V/hv8uqQ06FVYYYmFPJ+6sMMbiyv4I1U9L+qkpOavZXGWJgTiXvrzLEoNfrHRreqeZyfpXUcHXq1EFQUBAAIDY21mH5hQsXkJeXB7PZjCZNmtjmt2vXrshtAOD06dMAgDZt2pQYwwsvvICwsDC8+uqrAIBTp04hOzsbHTt2tK3TuHFj+Pn54ciRI64lVgwhhN2dOiIqmhACiqKwZohcwHohUoc1Q6QOa4ZIHdYMketYJ2TFBvQi3HPPPQCAv//+22HZzp07AQD9+/e3u4tV3DZ5eXnYu3cv3Nzc0L9//2Jfe926dVizZg0WLlxo6zfd+pWSwnfUDAYD74gRERERERERERERlQM2oBdhwoQJ0Ov1+PLLLx3uOC1cuBAAMGnSJLv5PXv2RJcuXfD3338jOjrabtnKlSuRlpaGp556CgEBAUW+bnp6Op577jmMHDkSPXr0sM1v3Lgx3NzcEBUVZZsXHx+P5ORkWx/mRERERERERERERFR22IBehMjISHz00UfYvXs3nn32WVy6dAkpKSmYOHEiNm/ejGnTpqFLly4O2y1ZsgRBQUEYMmQI9u/fj5ycHPz666948cUX0aZNG7z33nvFvu4rr7wCi8WC999/326+p6cnnn/+eSxbtgwbN25EcnIyJkyYAC8vLzz33HOlzleSJEiSVOr9ENUEkiTBaDSyZohcwHohUoc1Q6QOa4ZIHdYMketYJ2QliRrUoU9xF/6iRYvw+OOPO8z/7bff8OGHH2L//v0QQqBNmzZ46aWXMGTIkCL3deHCBUybNg2//fYbkpOTUadOHQwdOhRTp06Fl5dXkdvt2rUL3bt3x8qVK/HAAw84LM/NzcWrr76KZcuW4erVq2jfvj1mzZqFbt26FZ94CaxPsBd+ap6IiIiIiIiIiIioJqvUDegWiwUHDhxA586dtQ6lWouMjIQQAtHR0by7RuQCIQTy8/Ph5ubGmiEqAeuFSB3WDJE6rBkidVgzRK4TQrBOCEAl78IlOTkZXbt21TqMGkGWZQ5GSuQiWZaRkpLCmiFyAeuFSB3WDJE6rBkidVgzRK5jnZCVobxf4K+//rrhbZOTk8swEiIiIiIiIiIiIiIi15V7A3rv3r35dQciIiIiIiIiIiIiqnLKvQEdALp06QKj0Wg3LysrC3v37oXJZELdunURFhYGAIiPj8e5c+eQm5uLZs2a2eYTEREREREREREREVWkch9EVKfTISEhASEhIbZ56enp6Nu3Lx544AE888wz8PT0tNsmMzMT8+bNw7x587Bt2zaEh4eXZ4g1nnUQ0aioKOh0lbpbfKJKQVEU5ObmwmQysWaISsB6IVKHNUOkDmuGSB3WDJHrFEVhnRCACmhA79+/P1auXAlfX1/bvIkTJ6J27doYP358sdvOmjUL0dHR+Prrr8szxBovMjISABAdHa1xJERERERERERERESVR7nfRvn999/tGs8B4Mcff8SgQYNK3Pbee+/Fhg0byis0KkBRFCiKonUYRFWCoihITU1lzRC5gPVCpA5rhkgd1gyROqwZItexTshKk+8hXLhwAbIsl7ieoii4fPlyBUREbEAncp2iKMjOzmbNELmA9UKkDmuGSB3WDJE6rBki17FOyEqTBvTAwEB89913Ja63YsUKBAYGVkBERERERERERERERET2DFq86F133YU333wT+fn5eO655xAaGmq3PDExEZ999hnee+89PPHEE1qESEREREREREREREQ1XLkPIupMfHw82rdvj0uXLkGSJISHhyM4OBgAcOnSJZw/fx4AEBoaiv3796NWrVoVHWKNEhkZCYvFgujoaBgMmtxTIapSLBYLkpKSEBQUxJohKgHrhUgd1gyROqwZInVYM0Sus1gsrBMCoFEDOgCcPHkSjz32GPbs2eN0+c0334wlS5agSZMmFRxZzRMZGQkAiI6O1jgSIiIiIiIiIiIiospDswZ0q3/++QdbtmyxPXUeHh6O3r17o1u3blqGVaOwAZ2IiIiIiIiIiIjIkeYN6KQ9duFCpA6/9kjkOtYLkTqsGSJ1WDNE6rBmiFzHLlzISqd1AAAghEBKSgoURdE6FCIiIiIiIiIiIiIiABo3oP/+++/o168fvL29ERISgri4OADA448/jq+++krL0IiI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Pvj888/1bgbpTJcZ6D179sSBAwfUcvfu3bF8+fJG9T777DPYbEGsUhgm5s+fj3HjxuH3v/89PvnkE9TV1WHHjh2YPXs2IiIi8N577zWaSe7x8ccf48svv8Trr7/eKB/5o48+ir179+K5555DRUUFXnjhBezduxe///3vz6i9dXV1jRZoIKLm5eTk4PDhw3o3g+iswHghCg5jhig4jBmi4DBmiAKXk5ODrKwsvZtBYUCXRURvuOEGHD9+HN988w2sVivuu+8+/Otf/8KTTz6JmTNnAgC++OIL/OUvf8EFF1yAb7/9NtRNPGP19fVYuHAh3nvvPRw5cgSxsbGYMWMG/vSnPzWaae9RUVGBQYMG4YorrsCiRYuarPPGG29g4cKFOHz4MNLS0vDYY4/h1ltvPaO2emaw79q164yOQ9RZMGaIAsd4IQoOY4YoOIwZouAwZogCx3ghD10G0JcuXYqrrroKmZmZyM7ORm5uLoYOHYq6urpGdVeuXIkpU6aEuomdCj8QiILDmCEKHOOFKDiMGaLgMGaIgsOYIQoc44U8dEnhcskll2D9+vV45513AAC9e/fGt99+i8zMTAghIIRAeno6Pv74Yw6eExEREREREREREZEudFk1wmKxYOzYsX6PnX/++dixYwdKS0uhKAoSExP1aBoREREREREREREREQCdBtCnTp0KAEhISMDHH3/s91xCQoIeTSIiIiIiIiIiIiIi8qNLCpc1a9Zg9+7dai4hIiIiIiIiIiIiIqJwo8siomazGStWrMDkyZNDfWoiIiIiIiIiIiIiooDoMgM9NTUVGRkZepyaiIiIiIiIiIiIiCggugygz5o1C2vXrm21XmFhIYxGYwhaRERERERERERERETkT5dFRJ9++mnMmjULiYmJuOiii1qsq0OGGSIiIiIiIiIiIiIifQbQH330UXTt2hWXXHIJevfujYEDByIpKQmSJPnVq6ura/QYEREREREREREREVEo6LKIqMFggCRJAc0ulyQJsiyHoFVERERERERERERERF66zEAHgOeffx6xsbEt1ikvL8eDDz4YohYREREREREREREREXnpNgO9oKAAycnJLdYrLCxE165doShKiFpGRERERERERERERNTAoMdJ33nnHcTFxbVaLyEhAVlZWe3foA6ovr4ef/jDH2CxWDB37tw2H0dRFLz00ksYPnw4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zVIXWIyIiMB7772naY5oolDTMmY83zF333036uvrcdFFFyE2Nhbr16/H3XffDQB49dVX1dv1ic5Gnvf5r371KyxcuBAzZsxAdHQ0srOz8dhjjyEnJwcXXXQRbr/9dnUf/pahzkzLmOFvGaLG+FuG/IgQkCRJFBYWBr1ffn6+MBgM7dCijg1As/8tXrzYr+6KFStEfHy8uPzyy4WiKI2O5Xa7xQsvvCCGDh0qbDabSEhIEL/85S/Fli1bQtQbovanVcxs2rRJPPLII+Kcc84RUVFRwmQyidTUVHH55ZeLFStWhLBHRNq77777WowVz39ZWVnqPm+//baIjo4W9957b5PHrKurEwsWLBD9+vUTVqtVJCcni+uvv17k5OSEqFdE7UfLmFEURXz33Xfi7rvvFoMHDxZ2u12YzWbRs2dP8atf/Ups3LgxxL0j0p7L5RLLli0Tt9xyi+jXr5+w2+3CZDKJpKQkMWPGDLFkyRIhy7LfPvwtQ52Z1jHD3zLUWeTm5jb777JJkyap9fhbhnxJQrT/Kp1TpkzBp59+iri4uKD2Kysrw5VXXomsrKz2aRgRERERERERERERUTNCMoBORERERERERERERHS2CdkiokREREREREREREREZxMOoBMRERERERERERERNYED6ERERERERERERERETeAAOhERERERERERERFREziATkRERERERERERETUBA6gExERERERERERERE1gQPoRERERERERERERERN4AA6EREREREREREREVETOIBORERERERERERERNQEDqATERERERERERERETWBA+hERERE1KkpiqJ3E4iI2h0/64iIiNqGA+hERERnubq6Ovzf//0fhgwZgqioKCQkJGDs2LF45ZVX9G4aUdj77rvvMGLEiJCdb8mSJZAkSf1v7ty5ITs3Nc/3NZEkSe/mnLUWLFjg93dcsGCB3k0iH9dddx1ef/11vZtBRER01uEAOhERUQsmT57caGDF9z+LxYK0tDTccMMN2Lx5sy5tvOGGG/CHP/wBs2fPxtatW/HNN9/A4XDgww8/1KU9FN7WrFmDBQsW4LPPPmu2TnZ2NlJTU3HnnXeGrmE6+Oc//4lp06bhpptuCtk5r7nmGuTn5+OFF17Q/NhLlizBggULsG3btmbrvPXWW4iNjcU777yj+fm1sm3bNixYsABLliwJ2Tnz8/ORn58fsvO1RSCxq7eHH34Y+fn5eOihh/Ruih89P9P+/Oc/IyEhAatXrw75uU9355134qGHHsKNN97I2ehERERB4AA6ERFRC5YuXYr8/HzMmTMHADBnzhx1oOXYsWNYvXo1Zs6ciffffx9jx47Fa6+9FtL2HT9+HEuXLkWPHj3w1FNPoV+/fjj33HPx/PPP47LLLgtpW+jssGbNGjz11FMtDsJ98803KCwsDOtB1jP12Wef4a677sKCBQtCOthnt9uRmpqK2NhYzY+9ZMkSPPXUUy0OoH/44YeorKzEBx98oPn5tbJt2zY89dRTIR1AT01NRWpqasjO1xaBxK7eoqKikJqaiqioKL2b4kfPz7T3338fZWVlWLp0acjPfbrJkyfjq6++wrvvvht2FzmIiIjCmUnvBhAREYWzhIQEAA2DXp7/+w6ydO/eHRMmTIDNZsNLL72E3/3ud5gyZQr69+8fkvbl5uYCANLS0vwenzJlCqZMmRKSNlDHc/XVV+OLL77AzJkz9W5Ku6ioqMAdd9yBnj174uGHH9a7OSH1u9/9DkVFRbj77rv1bgpRyOj5mTZv3jz885//xC233BLyczdl4sSJmD17Nl588UVcffXVOP/88/VuEhERUdjjDHQiIiINeG4Ld7vdIZ3Z6Xa7AQAmE6+Jk3bS09Px3Xff4fHHH9e7Ke3itddeQ2FhIe6//35YrVa9mxNSF110EX7++WdcdNFFejeFKGT0/EybO3cuNmzYgFGjRoX83M159NFHIYTAn//8Z72bQkREdFbgADoREZEGfGeAHzt2zO+5pUuX4sILL0RCQgKsVit69eqFm266CTt37vSr98MPP/jlV588eTKqq6vx8MMPIyMjAxaLBZIkIT09HWvWrIEkSeos87Vr1/rtm5eXpx5XURQsXrwYkyZNQnx8PGw2GzIyMnDHHXeoM9h92+57nPT0dLhcLjz99NMYNGgQbDab+lxT7a2srMQ999yDrl27IioqCmPHjsUXX3yhHv/NN99EZmYmbDYb0tLS8Mc//hGyLDf6ezocDnzyySe4/vrrMWjQIERFRSEqKgojR47EX//6Vzgcjkb79O3bt9Hf4N1338WoUaMQERGB+Ph4XHnllTh06FCzr+PJkyfxyCOPYNCgQbDb7YiIiMDAgQMxd+5cfP755022NScnB7fffjvS09NhtVqRkJCAKVOm4O2334YQotlzne7Xv/61X/uXLFmCzZs347LLLkNiYmKjRfmKi4vx2muvYdasWcjIyFDPPXXq1Cbz33veM0899RSAhlzYTS32l56e3ux7ydfatWtx5ZVXIjU1FRaLBampqbjyyivx3XffBdxnoPGigy39p1VKD89xLrzwwkbPBfs6eAQa54HYv38/nn76aUyYMAHdunWDxWJBt27dMGfOHGzcuLFRfc/fcO3atQCAW265xa8Pa9asQV5eXqPY9pg7d26jv7Xv86fv29RroUX/PefxzNQ9/XPt9AVXg/lsC5aiKPjHP/6B4cOHq58fl1xySZN/f4+CggI8+OCD6N+/P2w2G2JjYzFu3Dj84x//gNPpbFRflmW89dZbmDBhAlJSUtQ1Na677jp8/PHHqK2tBRB47LYm0PM19dnu66qrrgroM8Jj//79uOaaa5CSkgKbzYYBAwbg6aefRn19vV+96dOnN3rfLlu2DOPGjUNkZCS6d++Ou+66C2VlZQCAI0eO4Nprr0WXLl0QGRmJadOmYevWrY3OH8hn2meffYbp06eje/fuarxdfvnleOutt1BeXu5Xt7y8HE8//TSGDx+OuLg42O12DB48GPfccw/Wrl2r5hb3vG7N/R09HA4HXnjhBYwdOxYxMTGw2+0YNGgQ5s2bh5MnT/rVbe5797777kPPnj1hsViQkZGBBQsWNPl95TF69GgkJCRg2bJljc5BRERETRBERETUqptvvlkAEDfffHOTzx88eFAAEADEE088oT5+++23CwBixowZYs2aNWLfvn3ivffeE127dhVWq1UsXbpUret0OkV+fr745JNPBABx3nnniQsuuEC8+OKL4uDBg+Knn34SAwYMEGlpacLhcPjVHTdunMjPz1f/c7vdQggh6uvrxUUXXaS2ffPmzSI3N1e8//77omvXriIqKkosX75cbYMsyyI/P1/8/PPPAoDo1auXuPzyy8X8+fPFnj17xI4dO8T48eMFgCbbe+GFF4p3331X5Obmim+//Vb07dtXGAwG8dVXX4m//e1v4k9/+pM4cOCA+Pnnn8XMmTMFAPHoo482+nuuX79eABATJ04U3377rcjNzRXbtm0Tzz33nIiJiRHjx48X9fX1fvsUFRWJ/Px80aNHDwFA3HnnneLOO+8UO3fuFNnZ2eK+++4TAERaWpqoqalpdM4tW7aIlJQUERMTI1555RWRk5MjduzYIZ577jkRHR0tAIglS5b47fPNN9+IyMhIkZSUJN5++22xb98+sWbNGnHJJZcIAOKaa64RiqK0/gYTQlRUVIj8/HwxZ84cAUDcfvvt4txzzxXLly8Xubm54o033hCSJIn58+cLIYT4y1/+otb76aefRF5entiwYYO49957BQDx4IMP+h3f85556KGHBAAxZ84cv/dMVVWVEEKIkydP+v0dc3NzG7X1qaeeEgDE2LFjxapVq8Thw4fFqlWrxNixYwUA8ec//zmgPgshxPz58/3a4nnvAfBrX35+vqitrQ34uM05evSoACAsFotwuVyNng/2dRAiuDj3WLx4cbOfKb/4xS+E1WoVf/vb38TOnTvFoUOHxLfffit+8YtfCJPJ1Oh4VVVVIj8/X4wbN04AEC+88ILf383hcAi32+33901LS1P3Ly8vF9u3bxdGo1EAED/++KM4efKk+rxn3wceeED06dOn0WvRlv43xXOeF154ocnPtfLycrVusJ9tgfK8926//Xbx61//WmzZskXk5uaKJUuWiISEBGE2m8X//ve/Rvtt2bJFJCcni8jISPHyyy+LPXv2iHXr1olbb71V/Sw7/f170003qbG6bds2cejQIfHFF1+IYcOGCQBi8eLFQojAY7c1gZ7P89nueR0mTZrkd5yysrJWPyPmz5+vfgYOHjxY/Pe//xV5eXli48aN4uqrr1b/Jr6f46WlpX7v4zvvvFNce+21YuvWrWL37t3iscceU98XhYWF4tJLLxWrV68WOTk54s033xQREREiLi5O5Ofn+7Wltc+0P/7xjwKAuPHGG8XGjRtFXl6eWLVqlZg0aZIA4BfrNTU1YtCgQSIiIkK89tprYu/evWLfvn3iX//6l+jSpYvf8U//nj797yiEECUlJWL06NECgHj44YdFdna2yMnJEa+++qqIiYkR/5+98w6L6vj+/3vpvbO7NBFBBQsqimJH7LHEEuwFexejRk1Mgt0YjQ0TW6wR7L0Xir0jlo9iRLFTFBu97J7fH/zu/bLs3YYoJpnX8+yjTD137p0zM+fOPSORSCguLo5PX3LcbdCgAQUFBdGmTZsoKSmJYmJiqGbNmgSAvvvuO7XPQ2BgIAGgLVu2qE3HYDAYDAaDiBnQGQwGg8HQAk0G9NmzZxMAEolEdP36dSIiWrZsGQGg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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--- Step-based Leaderboard Scores ---\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
score
submission
AdEMAMix (PyTorch)0.525814
Schedule-Free AdamW v2 (PyTorch)0.525253
NAdamW (Baseline AlgoPerf v0.5) (JAX)0.454545
Schedule-Free AdamW (PyTorch)0.446128
Muon (PyTorch)0.432660
Schedule-Free AdamW v2 (JAX)0.412458
Schedule-Free AdamW (JAX)0.409091
NAdamW (JAX)0.404040
Cautious NAdamW (JAX)0.319865
Muon (JAX)0.319865
Lion (PyTorch)0.273288
NAdamW (Tuned for ResNet) (JAX)0.195286
Single Worker DiLoCo (JAX)0.186308
Single Worker DiLoCo v2 (JAX)0.182941
\n", - "
" - ], - "text/plain": [ - " score\n", - "submission \n", - "AdEMAMix (PyTorch) 0.525814\n", - "Schedule-Free AdamW v2 (PyTorch) 0.525253\n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.454545\n", - "Schedule-Free AdamW (PyTorch) 0.446128\n", - "Muon (PyTorch) 0.432660\n", - "Schedule-Free AdamW v2 (JAX) 0.412458\n", - "Schedule-Free AdamW (JAX) 0.409091\n", - "NAdamW (JAX) 0.404040\n", - "Cautious NAdamW (JAX) 0.319865\n", - "Muon (JAX) 0.319865\n", - "Lion (PyTorch) 0.273288\n", - "NAdamW (Tuned for ResNet) (JAX) 0.195286\n", - "Single Worker DiLoCo (JAX) 0.186308\n", - "Single Worker DiLoCo v2 (JAX) 0.182941" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\\begin{table}[h]\n", - " \\centering\n", - " \\caption{AlgoPerf Self-Tuning Leaderboard (steps to target)}\n", - " \\label{tab:scores_steps}\n", - " \\begin{tabular}{rlr}\n", - " \\toprule\n", - " Rank & Submission & Score \\\\\n", - " \\midrule\n", - " 1 & \\ademamix & \\textbf{0.5258} \\\\\n", - " 2 & \\sfadamwii & 0.5253 \\\\\n", - " 3 & \\nadamwbase & 0.4545 \\\\\n", - " 4 & \\sfadamw & 0.4461 \\\\\n", - " 5 & \\muonpt & 0.4327 \\\\\n", - " 6 & \\sfadamwjaxii & 0.4125 \\\\\n", - " 7 & \\sfadamwjax & 0.4091 \\\\\n", - " 8 & \\nadamw & 0.4040 \\\\\n", - " 9 & \\cautiousnadamw & 0.3199 \\\\\n", - " 10 & \\muonjax & 0.3199 \\\\\n", - " 11 & \\lion & 0.2733 \\\\\n", - " 12 & \\nadamwresnet & 0.1953 \\\\\n", - " 13 & \\dilocosw & 0.1863 \\\\\n", - " 14 & \\dilocoswii & 0.1829 \\\\\n", - " \\bottomrule\n", - " \\end{tabular}\n", - "\\end{table}\n", - "\n", - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_steps_table.tex\n" - ] - } - ], + "outputs": [], "source": [ "# ── Step-based performance profiles and leaderboard scores ────────────────────\n", - "performance_profile_steps_df = performance_profile.compute_performance_profiles(\n", - " results,\n", - " WORKLOAD_CONFIG,\n", - " time_col='global_step',\n", - " min_tau=MIN_TAU,\n", - " max_tau=MAX_TAU,\n", - " reference_submission_tag=None,\n", - " num_points=NUM_POINTS,\n", - " scale=SCALE,\n", - " verbosity=0,\n", - " self_tuning_ruleset=SELF_TUNING_RULESET,\n", - " strict=STRICT,\n", - " output_dir=BYPRODUCTS_DIR, # writes time_to_targets_steps.csv\n", - " artifact_suffix='_steps',\n", + "performance_profile_steps_df, scores_steps, stt = score_runs(\n", + " results,\n", + " WORKLOAD_CONFIG,\n", + " BYPRODUCTS_DIR,\n", + " time_col='global_step',\n", + " artifact_suffix='_steps',\n", + " **SCORING_OPTIONS,\n", ")\n", "performance_profile_steps_df.to_csv(\n", - " os.path.join(BYPRODUCTS_DIR, 'performance_profile_global_step.csv')\n", + " os.path.join(BYPRODUCTS_DIR, 'performance_profile_global_step.csv')\n", ")\n", "\n", - "fig, ax = plot_performance_profiles_styled(\n", - " performance_profile_steps_df,\n", - " 'global_step',\n", - " scale=SCALE,\n", - " save_dir=RESULTS_DIR,\n", - " title='AlgoPerf: Self-Tuning Performance Profiles (steps to target)',\n", + "fig, ax = plot_performance_profiles(\n", + " performance_profile_steps_df,\n", + " title='AlgoPerf: Self-Tuning Performance Profiles (steps to target)',\n", + ")\n", + "save_figure(\n", + " fig,\n", + " Path(RESULTS_DIR) / 'performance_profile_by_global_step',\n", ")\n", "plt.show()\n", "\n", - "scores_steps = compute_leaderboard_score(performance_profile_steps_df)\n", "scores_steps.to_csv(os.path.join(BYPRODUCTS_DIR, 'scores_steps.csv'))\n", "print('--- Step-based Leaderboard Scores ---')\n", "display(scores_steps.sort_values('score', ascending=False))\n", "\n", "# ── LaTeX table ────────────────────────────────────────────────────────────\n", "scores_steps_latex = scores_to_latex(\n", - " scores_steps,\n", - " caption='AlgoPerf Self-Tuning Leaderboard (steps to target)',\n", - " label='tab:scores_steps',\n", + " scores_steps,\n", + " caption='AlgoPerf Self-Tuning Leaderboard (steps to target)',\n", + " label='tab:scores_steps',\n", ")\n", "print(scores_steps_latex)\n", "\n", "scores_steps_latex_path = os.path.join(RESULTS_DIR, 'scores_steps_table.tex')\n", "with open(scores_steps_latex_path, 'w') as f:\n", - " f.write(scores_steps_latex)\n", + " f.write(scores_steps_latex)\n", "print(f'\\nSaved to {scores_steps_latex_path}')" ] }, { "cell_type": "code", - "execution_count": 68, - "id": "b8bef794", + "execution_count": null, + "id": "02fcaf3e", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--- Wall-clock vs. Step-based Leaderboard Comparison ---\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
wallclockstepsrank_wallclockrank_stepsrank_shift
submission
Schedule-Free AdamW v2 (PyTorch)0.56790.525312-1
AdEMAMix (PyTorch)0.51910.5258211
Schedule-Free AdamW (PyTorch)0.46690.446134-1
NAdamW (Baseline AlgoPerf v0.5) (JAX)0.45060.4545431
Schedule-Free AdamW v2 (JAX)0.44050.412556-1
Muon (PyTorch)0.42310.4327651
Schedule-Free AdamW (JAX)0.41080.4091770
NAdamW (JAX)0.38440.4040880
Cautious NAdamW (JAX)0.31430.3199990
Muon (JAX)0.28450.31991091
Lion (PyTorch)0.27830.273311110
NAdamW (Tuned for ResNet) (JAX)0.18570.195312120
Single Worker DiLoCo (JAX)0.13690.186313130
Single Worker DiLoCo v2 (JAX)0.13020.182914140
\n", - "
" - ], - "text/plain": [ - " wallclock steps rank_wallclock \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.5679 0.5253 1 \n", - "AdEMAMix (PyTorch) 0.5191 0.5258 2 \n", - "Schedule-Free AdamW (PyTorch) 0.4669 0.4461 3 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.4506 0.4545 4 \n", - "Schedule-Free AdamW v2 (JAX) 0.4405 0.4125 5 \n", - "Muon (PyTorch) 0.4231 0.4327 6 \n", - "Schedule-Free AdamW (JAX) 0.4108 0.4091 7 \n", - "NAdamW (JAX) 0.3844 0.4040 8 \n", - "Cautious NAdamW (JAX) 0.3143 0.3199 9 \n", - "Muon (JAX) 0.2845 0.3199 10 \n", - "Lion (PyTorch) 0.2783 0.2733 11 \n", - "NAdamW (Tuned for ResNet) (JAX) 0.1857 0.1953 12 \n", - "Single Worker DiLoCo (JAX) 0.1369 0.1863 13 \n", - "Single Worker DiLoCo v2 (JAX) 0.1302 0.1829 14 \n", - "\n", - " rank_steps rank_shift \n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 2 -1 \n", - "AdEMAMix (PyTorch) 1 1 \n", - "Schedule-Free AdamW (PyTorch) 4 -1 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 3 1 \n", - "Schedule-Free AdamW v2 (JAX) 6 -1 \n", - "Muon (PyTorch) 5 1 \n", - "Schedule-Free AdamW (JAX) 7 0 \n", - "NAdamW (JAX) 8 0 \n", - "Cautious NAdamW (JAX) 9 0 \n", - "Muon (JAX) 9 1 \n", - "Lion (PyTorch) 11 0 \n", - "NAdamW (Tuned for ResNet) (JAX) 12 0 \n", - "Single Worker DiLoCo (JAX) 13 0 \n", - "Single Worker DiLoCo v2 (JAX) 14 0 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_wallclock_vs_steps.csv\n", - "\n", - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_comparison_time_vs_steps.tex\n" - ] - } - ], + "outputs": [], "source": [ "# ── Wall-clock vs. step-based leaderboard comparison ──────────────────────────\n", "# Both use the same performance-profile scoring; only the notion of training\n", "# time differs (seconds vs. optimizer steps to target). rank_shift captures\n", "# how much a submission's rank changes between the two.\n", - "cmp = pd.DataFrame({\n", + "cmp = pd.DataFrame(\n", + " {\n", " 'wallclock': scores['score'],\n", " 'steps': scores_steps['score'],\n", - "})\n", - "cmp['rank_wallclock'] = cmp.wallclock.rank(ascending=False, method='min').astype(int)\n", - "cmp['rank_steps'] = cmp.steps.rank(ascending=False, method='min').astype(int)\n", - "cmp['rank_shift'] = cmp.rank_wallclock - cmp.rank_steps\n", + " }\n", + ")\n", + "cmp['rank_wallclock'] = cmp.wallclock.rank(\n", + " ascending=False, method='min'\n", + ").astype(int)\n", + "cmp['rank_steps'] = cmp.steps.rank(ascending=False, method='min').astype(int)\n", + "cmp['rank_shift'] = cmp.rank_wallclock - cmp.rank_steps\n", "cmp = cmp.sort_values('wallclock', ascending=False)\n", "\n", "cmp_csv_path = os.path.join(BYPRODUCTS_DIR, 'scores_wallclock_vs_steps.csv')\n", "cmp.to_csv(cmp_csv_path)\n", - "print(f'--- Wall-clock vs. Step-based Leaderboard Comparison ---')\n", + "print('--- Wall-clock vs. Step-based Leaderboard Comparison ---')\n", "display(cmp.round(4))\n", "print(f'Saved to {cmp_csv_path}')\n", "\n", + "\n", "def _fmt_shift(d):\n", - " if d > 0:\n", - " return rf'$\\uparrow${d}'\n", - " if d < 0:\n", - " return rf'$\\downarrow${-d}'\n", - " return '--'\n", + " if d > 0:\n", + " return rf'$\\uparrow${d}'\n", + " if d < 0:\n", + " return rf'$\\downarrow${-d}'\n", + " return '--'\n", "\n", - "_best_wall = cmp.wallclock.max()\n", + "\n", + "_best_wall = cmp.wallclock.max()\n", "_best_steps = cmp.steps.max()\n", "_cmp_rows = []\n", "for name, row in cmp.iterrows():\n", - " wall = f'{row.wallclock:.4f}'\n", - " steps = f'{row.steps:.4f}'\n", - " if row.wallclock == _best_wall:\n", - " wall = r'\\textbf{' + wall + '}'\n", - " if row.steps == _best_steps:\n", - " steps = r'\\textbf{' + steps + '}'\n", - " _cmp_rows.append(\n", - " f' {latex_name(name)} & {wall} & {int(row.rank_wallclock)} & {steps} & '\n", - " f'{int(row.rank_steps)} & {_fmt_shift(int(row.rank_shift))} ' + r'\\\\'\n", - " )\n", - "\n", - "cmp_latex = '\\n'.join([\n", + " wall = f'{row.wallclock:.4f}'\n", + " steps = f'{row.steps:.4f}'\n", + " if row.wallclock == _best_wall:\n", + " wall = r'\\textbf{' + wall + '}'\n", + " if row.steps == _best_steps:\n", + " steps = r'\\textbf{' + steps + '}'\n", + " _cmp_rows.append(\n", + " f' {latex_name(name)} & {wall} & {int(row.rank_wallclock)} & {steps} & '\n", + " f'{int(row.rank_steps)} & {_fmt_shift(int(row.rank_shift))} ' + r'\\\\'\n", + " )\n", + "\n", + "cmp_latex = '\\n'.join(\n", + " [\n", " r'\\begin{table}[htbp]',\n", " r' \\centering',\n", " r' \\caption{Wall-clock vs.\\ step-based benchmark scores. Both use the same'\n", @@ -9400,512 +503,78 @@ " r' \\bottomrule',\n", " r' \\end{tabular}',\n", " r'\\end{table}',\n", - "])\n", + " ]\n", + ")\n", "\n", - "leaderboard_steps_latex_path = os.path.join(RESULTS_DIR, 'scores_comparison_time_vs_steps.tex')\n", + "leaderboard_steps_latex_path = os.path.join(\n", + " RESULTS_DIR, 'scores_comparison_time_vs_steps.tex'\n", + ")\n", "with open(leaderboard_steps_latex_path, 'w') as f:\n", - " f.write(cmp_latex)\n", + " f.write(cmp_latex)\n", "print(f'\\nSaved to {leaderboard_steps_latex_path}')" ] }, { "cell_type": "code", - "execution_count": 69, - "id": "d059ebe7", + "execution_count": null, + "id": "ddc44c57", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
criteo1tbfastmrifinewebedu_lmimagenet_resnetimagenet_vitlibrispeech_conformerlibrispeech_deepspeechogbgwmt
submission
AdEMAMix (PyTorch)8,37110,20644,503\\textemdash{}\\textemdash{}67,706\\textemdash{}27,247112,742
Schedule-Free AdamW v2 (PyTorch)7,95112,431\\textemdash{}\\textemdash{}\\textemdash{}83,18478,66928,44973,222
NAdamW (Baseline AlgoPerf v0.5) (JAX)9,1456,64847,039\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}20,879118,600
Schedule-Free AdamW (PyTorch)10,34610,599\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}90,58815,853133,517
Muon (PyTorch)7,716\\textemdash{}39,220\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}7,71197,224
Schedule-Free AdamW v2 (JAX)9,0058,75068,640\\textemdash{}164,206\\textemdash{}\\textemdash{}27,457\\textemdash{}
Schedule-Free AdamW (JAX)\\textemdash{}7,16057,242\\textemdash{}175,889\\textemdash{}\\textemdash{}27,341122,198
NAdamW (JAX)8,2869,92458,784\\textemdash{}152,461\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
Cautious NAdamW (JAX)\\textemdash{}7,51858,199\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}24,948112,372
Muon (JAX)\\textemdash{}8,80140,724\\textemdash{}151,926\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
Lion (PyTorch)\\textemdash{}10,64559,524\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}33,386109,080
NAdamW (Tuned for ResNet) (JAX)\\textemdash{}9,22053,029\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}32,738\\textemdash{}
Single Worker DiLoCo (JAX)\\textemdash{}9,34261,209\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
Single Worker DiLoCo v2 (JAX)\\textemdash{}10,14059,550\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}\\textemdash{}
\n", - "
" - ], - "text/plain": [ - " criteo1tb fastmri \\\n", - "submission \n", - "AdEMAMix (PyTorch) 8,371 10,206 \n", - "Schedule-Free AdamW v2 (PyTorch) 7,951 12,431 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 9,145 6,648 \n", - "Schedule-Free AdamW (PyTorch) 10,346 10,599 \n", - "Muon (PyTorch) 7,716 \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) 9,005 8,750 \n", - "Schedule-Free AdamW (JAX) \\textemdash{} 7,160 \n", - "NAdamW (JAX) 8,286 9,924 \n", - "Cautious NAdamW (JAX) \\textemdash{} 7,518 \n", - "Muon (JAX) \\textemdash{} 8,801 \n", - "Lion (PyTorch) \\textemdash{} 10,645 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} 9,220 \n", - "Single Worker DiLoCo (JAX) \\textemdash{} 9,342 \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} 10,140 \n", - "\n", - " finewebedu_lm imagenet_resnet \\\n", - "submission \n", - "AdEMAMix (PyTorch) 44,503 \\textemdash{} \n", - "Schedule-Free AdamW v2 (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 47,039 \\textemdash{} \n", - "Schedule-Free AdamW (PyTorch) \\textemdash{} \\textemdash{} \n", - "Muon (PyTorch) 39,220 \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) 68,640 \\textemdash{} \n", - "Schedule-Free AdamW (JAX) 57,242 \\textemdash{} \n", - "NAdamW (JAX) 58,784 \\textemdash{} \n", - "Cautious NAdamW (JAX) 58,199 \\textemdash{} \n", - "Muon (JAX) 40,724 \\textemdash{} \n", - "Lion (PyTorch) 59,524 \\textemdash{} \n", - "NAdamW (Tuned for ResNet) (JAX) 53,029 \\textemdash{} \n", - "Single Worker DiLoCo (JAX) 61,209 \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) 59,550 \\textemdash{} \n", - "\n", - " imagenet_vit librispeech_conformer \\\n", - "submission \n", - "AdEMAMix (PyTorch) \\textemdash{} 67,706 \n", - "Schedule-Free AdamW v2 (PyTorch) \\textemdash{} 83,184 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) \\textemdash{} \\textemdash{} \n", - "Schedule-Free AdamW (PyTorch) \\textemdash{} \\textemdash{} \n", - "Muon (PyTorch) \\textemdash{} \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) 164,206 \\textemdash{} \n", - "Schedule-Free AdamW (JAX) 175,889 \\textemdash{} \n", - "NAdamW (JAX) 152,461 \\textemdash{} \n", - "Cautious NAdamW (JAX) \\textemdash{} \\textemdash{} \n", - "Muon (JAX) 151,926 \\textemdash{} \n", - "Lion (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} \\textemdash{} \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} \\textemdash{} \n", - "\n", - " librispeech_deepspeech ogbg \\\n", - "submission \n", - "AdEMAMix (PyTorch) \\textemdash{} 27,247 \n", - "Schedule-Free AdamW v2 (PyTorch) 78,669 28,449 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) \\textemdash{} 20,879 \n", - "Schedule-Free AdamW (PyTorch) 90,588 15,853 \n", - "Muon (PyTorch) \\textemdash{} 7,711 \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} 27,457 \n", - "Schedule-Free AdamW (JAX) \\textemdash{} 27,341 \n", - "NAdamW (JAX) \\textemdash{} \\textemdash{} \n", - "Cautious NAdamW (JAX) \\textemdash{} 24,948 \n", - "Muon (JAX) \\textemdash{} \\textemdash{} \n", - "Lion (PyTorch) \\textemdash{} 33,386 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} 32,738 \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} \\textemdash{} \n", - "\n", - " wmt \n", - "submission \n", - "AdEMAMix (PyTorch) 112,742 \n", - "Schedule-Free AdamW v2 (PyTorch) 73,222 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 118,600 \n", - "Schedule-Free AdamW (PyTorch) 133,517 \n", - "Muon (PyTorch) 97,224 \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} \n", - "Schedule-Free AdamW (JAX) 122,198 \n", - "NAdamW (JAX) \\textemdash{} \n", - "Cautious NAdamW (JAX) 112,372 \n", - "Muon (JAX) \\textemdash{} \n", - "Lion (PyTorch) 109,080 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LaTeX saved -> steps_to_target_table.tex\n" - ] - } - ], + "outputs": [], "source": [ "# ── Steps-to-target table (analog of the time-to-target table) ────────────────\n", - "stt = pd.read_csv(os.path.join(BYPRODUCTS_DIR, 'time_to_targets_steps.csv'), index_col=0)\n", + "\n", "\n", "def _fmt_steps(v):\n", - " if pd.isna(v) or v == float('inf'):\n", - " return r'\\textemdash{}'\n", - " return f'{v:,.0f}'\n", + " if pd.isna(v) or v == float('inf'):\n", + " return r'\\textemdash{}'\n", + " return f'{v:,.0f}'\n", + "\n", "\n", "stt_display = stt.map(_fmt_steps)\n", "stt_display.index.name = 'Submission'\n", "# Order rows by step-based leaderboard score (best first), matching this\n", "# section's own leaderboard above.\n", - "stt_display = stt_display.loc[scores_steps.sort_values('score', ascending=False).index]\n", + "stt_display = stt_display.loc[\n", + " scores_steps.sort_values('score', ascending=False).index\n", + "]\n", "display(stt_display)\n", "\n", - "_stt_workloads = list(stt.columns)\n", - "_stt_col_spec = 'l' + 'r' * len(_stt_workloads)\n", - "_stt_headers = ' & '.join(_WL_MACRO.get(w, w) for w in _stt_workloads)\n", - "\n", - "_stt_rows = []\n", - "for name, row in stt_display.iterrows():\n", - " _stt_rows.append(' ' + latex_name(name) + ' & ' + ' & '.join(str(v) for v in row) + r' \\\\')\n", - "\n", - "stt_latex = '\\n'.join([\n", - " r'\\begin{table}[htbp]',\n", - " r' \\centering',\n", - " r' \\caption{Median number of optimizer steps to reach the validation target.'\n", - " r' \\textemdash{} = target not reached. Submissions choose their own batch'\n", - " r' sizes, so step counts compare optimizer updates, not examples seen.}',\n", - " r' \\label{tab:steps_to_target}',\n", - " r' \\resizebox{\\textwidth}{!}{%',\n", - " r' \\begin{tabular}{' + _stt_col_spec + '}',\n", - " r' \\toprule',\n", - " r' Submission & ' + _stt_headers + r' \\\\',\n", - " r' \\midrule',\n", - " *_stt_rows,\n", - " r' \\bottomrule',\n", - " r' \\end{tabular}%',\n", - " r' }',\n", - " r'\\end{table}',\n", - "])\n", + "stt_latex = workload_table(\n", + " stt_display,\n", + " caption=r'Median number of optimizer steps to reach the validation target.'\n", + " r' \\textemdash{} = target not reached. Submissions choose their own batch'\n", + " r' sizes, so step counts compare optimizer updates, not examples seen.',\n", + " label='tab:steps_to_target',\n", + ")\n", "\n", "with open(os.path.join(RESULTS_DIR, 'steps_to_target_table.tex'), 'w') as f:\n", - " f.write(stt_latex)\n", + " f.write(stt_latex)\n", "print('LaTeX saved -> steps_to_target_table.tex')" ] }, { "cell_type": "code", - "execution_count": 70, - "id": "9593a5ab", + "execution_count": null, + "id": "e0873ff4", "metadata": { "lines_to_next_cell": 2 }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved -> wallclock_vs_steps.pdf / .png\n" - ] - }, - { - "data": { - "image/png": "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2dkZwK+31VRXVlZmtF9jO3v2rNnt+pksNZVTy8S42ibG1TYxrraJcbVNNc0AJiIiaima9RorPj4+AIDc3Fyz5Xl5eQAAX1/fRusTEREREREREZFes06shIWFAQAyMjLMluunBPfs2bOxukREREREREREZNCsEyvDhw+Hi4sLTp8+jaKiIpPyo0ePAgAmTJjQ2F0jIiIiIiIiImreiRVnZ2e8/vrrKCsrw/r1643K0tPT8dNPPyE0NBTjxo0zbD9z5gyGDBmCBQsWNHZ3iYiIiIiIiOg+06wTKwCwaNEiDBo0CG+//Ta2bt2KkpISnD59GlOmTIGzszM2bNgApVJp2P/zzz/HsWPHsHz5cty8ebMJe05EREREREREtk4hItLUnbib0tJSfPDBB9iwYQMuXrwId3d3jB49GosXL0anTp2M9v3pp5/w1FNPYdiwYdi2bRsUCoVReceOHZGVlWX2OIsWLUJkZKS1hkFERERERERENqZFJFaIiIiIiIiIiJqjZn8rEBERERERERFRc8XEChERERERERFRAzGxQkRERERERETUQEysEBERERERERE1EBMrREREREREREQNxMQKEREREREREVEDMbFSB6WlpVi8eDFCQkLg6OgIX19fTJ8+HRkZGQ1qT6vVYsWKFXB1dUVERIRlO0t1Zqm4xsTE4I033sCDDz4IZ2dnODo6okuXLvjd737X4GuEGs5ScT137hyWL1+OESNGIDAwEI6OjvD398fw4cOxYcMG6HQ6K42AzLH072G927dvo0OHDlAoFFi3bp1lOkt1Zqm4RkZGQqFQ1Ph68cUXrTMAMsvS79e0tDS8+uqr6Ny5MxwdHeHp6YmwsDC8/vrruHLlioV7T0RE1ABCtSouLpbBgweLq6ur/Oc//5GioiJJSEiQXr16ibu7uyQkJNSrvfj4eOnbt694eHgIABk2bJh1Ok61slRcd+/eLQAkMDBQtm/fLrm5uXLt2jVZs2aNtGrVSlxdXeXo0aNWHg3pWfL9OmDAAFEoFLJ06VK5fPmyFBcXS2xsrDz88MMCQKZPn27FkVBVlv49XNXLL78sAASArF271nKdpruyZFwXLVokbm5uEhISYvb19ttvW3EkVJWl3687duwQR0dH+cMf/iAXLlyQ0tJSSU5OlvHjxwsAiYqKss5AiIiI6oGJlbuYP3++AJB//OMfRttT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qM6iRYvk8OHDMnbsWPH09BR7e3vp2rWrLF68WEpKSmpsp67j0Me7+mvGjBkiIibnV/+q7tChQzJp0iTx8vIyHO/555+Xc+fOGe1XU3sZGRk19mXRokUiImbLhg0bJiKm15j+GjZ3TqtfKyIisbGxMmHCBPHw8BCVSiU+Pj7y9NNPS2Jiotk2axqH/rxVpU/y1adva9eurTG2IiIVFRXy448/yssvvyzBwcHi5OQkzs7OEhwcLC+99JJRgrWq/Px8effdd6Vnz57i7OwsrVu3ln79+snq1aulvLzcbJ3s7GyZO3euBAcHi1qtFldXV+nXr5+sWLHCJLG3du1as+PRj7cm0dHRMnnyZPH29hYHBwcJCAiQRx99VL7//vta6xERERG1BAqReqxISUQtXmZmJoKCghAYGIjMzMym7g4REREREVGLxjVWiIiIiIiIiIgaiIkVIiIiIiIiIqIGYmKF6D6h1WqRnZ2N69evm/2ZiIiIiIiI6o9rrBDdJ/Rrq1THtVaIiIiIiIgajokVIiIiIiIiIqIG4q1AREREREREREQNxMQKEREREREREVEDMbFCRERERERERNRATKwQERERERERETUQEytERERERERERA3ExAoRERERERERUQP9H7vd3lMrxH2AAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "# ── Scatter: wall-clock score vs. step-based score ────────────────────────────\n", - "# Reuses `cmp` (built above for the wall-clock-vs-steps comparison table).\n", - "# Color comes from the shared SUBMISSION_STYLE registry (matches the\n", - "# performance-profile plots); marker shape is one shape per algorithm family\n", - "# (_FAMILIES), so points from the same algorithm are visually grouped even\n", - "# before reading the legend. Dark marker edges keep light fills legible on\n", - "# white.\n", - "_FAMILIES = [\n", - " ('Schedule-Free AdamW', 'o', [\n", - " 'Schedule-Free AdamW v2 (PyTorch)',\n", - " 'Schedule-Free AdamW v2 (JAX)',\n", - " 'Schedule-Free AdamW (PyTorch)',\n", - " 'Schedule-Free AdamW (JAX)',\n", - " ]),\n", - " ('NAdamW', 's', [\n", - " 'NAdamW (Baseline AlgoPerf v0.5) (JAX)',\n", - " 'NAdamW (JAX)',\n", - " 'NAdamW (Tuned for ResNet) (JAX)',\n", - " 'Cautious NAdamW (JAX)',\n", - " ]),\n", - " ('Muon', 'D', ['Muon (PyTorch)', 'Muon (JAX)']),\n", - " ('Single Worker DiLoCo', '^', [\n", - " 'Single Worker DiLoCo (JAX)',\n", - " 'Single Worker DiLoCo v2 (JAX)',\n", - " ]),\n", - " ('AdEMAMix', 'P', ['AdEMAMix (PyTorch)']),\n", - " ('Lion', 'X', ['Lion (PyTorch)']),\n", - "]\n", - "_FAMILY_MARKER = {\n", - " name: marker\n", - " for _, marker, members in _FAMILIES\n", - " for name in members\n", - "}\n", - "\n", - "fig, ax = plt.subplots(figsize=(9.5, 5.6))\n", - "\n", - "lims = (0.10, 0.60)\n", - "ax.plot(lims, lims, linestyle='--', color='#999999', linewidth=1.0, zorder=1)\n", - "ax.text(0.135, 0.575, 'wall-clock advantage\\n(lower cost per step)',\n", - " ha='left', va='top', fontsize=8.5, style='italic', color='#777777')\n", - "ax.text(0.575, 0.135, 'step advantage\\n(fewer steps to target)',\n", - " ha='right', va='bottom', fontsize=8.5, style='italic', color='#777777')\n", - "\n", - "_scatter_handles = {}\n", - "for name, row in cmp.iterrows():\n", - " _scatter_handles[name] = ax.scatter(\n", - " row.steps, row.wallclock,\n", - " color=SUBMISSION_STYLE[name]['color'],\n", - " marker=_FAMILY_MARKER.get(name, 'o'),\n", - " s=58, linewidths=0.6, edgecolors='#333333', zorder=3, label=name,\n", - " )\n", - "\n", - "_annotate = {\n", - " 'Schedule-Free AdamW v2 (PyTorch)': (-8, 2, 'right'),\n", - " 'AdEMAMix (PyTorch)': (8, 3, 'left'),\n", - " 'Muon (JAX)': (8, -3, 'left'),\n", - " 'Muon (PyTorch)': (8, -3, 'left'),\n", - " 'NAdamW (JAX)': (8, 1, 'left'),\n", - " 'Single Worker DiLoCo (JAX)': (-2, 9, 'left'),\n", - "}\n", - "for name, (dx, dy, ha) in _annotate.items():\n", - " row = cmp.loc[name]\n", - " ax.annotate(name, (row.steps, row.wallclock), xytext=(dx, dy),\n", - " textcoords='offset points', fontsize=8, ha=ha,\n", - " color='#333333')\n", - "\n", - "ax.set_xlim(lims)\n", - "ax.set_ylim(lims)\n", - "ax.set_aspect('equal')\n", - "ax.set_xlabel('Step-based benchmark score')\n", - "ax.set_ylabel('Wall-clock benchmark score')\n", - "ax.set_title('Wall-clock vs. step-based benchmark scores', pad=8)\n", - "\n", - "_family_legend_order = [\n", - " name\n", - " for _, _, members in _FAMILIES\n", - " for name in members\n", - " if name in _scatter_handles\n", - "]\n", - "_family_legend_order.extend(\n", - " name for name in cmp.index if name not in _family_legend_order\n", - ")\n", - "ax.legend(\n", - " [_scatter_handles[name] for name in _family_legend_order],\n", - " _family_legend_order,\n", - " loc='center left', bbox_to_anchor=(1.03, 0.5), ncol=1,\n", - " borderaxespad=0, frameon=True, handlelength=1.0, labelspacing=0.5,\n", + "fig = plot_score_comparison(cmp)\n", + "save_figure(\n", + " fig,\n", + " Path(RESULTS_DIR) / 'wallclock_vs_steps',\n", ")\n", - "fig.subplots_adjust(left=0.09, right=0.62, top=0.93, bottom=0.11)\n", - "\n", - "for ext in ('pdf', 'png'):\n", - " fig.savefig(os.path.join(RESULTS_DIR, f'wallclock_vs_steps.{ext}'),\n", - " format=ext, dpi=300)\n", - "print('Saved -> wallclock_vs_steps.pdf / .png')\n", - "plt.show()" + "display(fig)\n", + "plt.close(fig)" ] }, { "cell_type": "markdown", - "id": "c6d3af3f", + "id": "6fbcbcae", "metadata": {}, "source": [ "## 7. Relaxed Convergence Targets: Score Table & Performance Profile\n", @@ -9929,237 +598,50 @@ }, { "cell_type": "code", - "execution_count": 71, - "id": "7ca9d6b0", + "execution_count": null, + "id": "862a341a", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:absl:Expecting 3 studies for workload imagenet_vit_pytorch but found 2 studies for AdEMAMix (PyTorch).\n", - "WARNING:absl:Expecting 3 studies for workload finewebedu_lm_jax but found 1 studies for Cautious NAdamW (JAX).\n", - "WARNING:absl:Expecting 3 studies for workload imagenet_vit_pytorch but found 2 studies for Schedule-Free AdamW v2 (PyTorch).\n", - "WARNING:absl:Expecting 3 studies for workload fastmri_jax but found 2 studies for Single Worker DiLoCo (JAX).\n", - "WARNING:absl:Expecting 3 studies for workload librispeech_conformer_jax but found 2 studies for Single Worker DiLoCo v2 (JAX).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved → artifacts/tech_report_v1/section_4_leaderboards/out/results/performance_profile_by_score_relaxed.pdf / .png\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABdAAAAIsCAYAAADyPIt9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAXEgAAFxIBZ5/SUgABAABJREFUeJzs3Xd4FFXbBvB7djebnpCQBoTeCU16L0oQ0A8bYAPsIBZUqgoKdkWqrwqiSBEUaSIKSJPeO0noIZRACklIb1vO90fcSTa72eyGJBOS+8fFdWX6c2bnmZ09M3OOJIQQICIiIiIiIiIiIiIiMyqlAyAiIiIiIiIiIiIiqohYgU5EREREREREREREZAUr0ImIiIiIiIiIiIiIrGAFOhERERERERERERGRFaxAJyIiIiIiIiIiIiKyghXoRERERERERERERERWsAKdiIiIiIiIyozRaFQ6BCJyAHOWiMgcK9CJiEqoXr16kCRJ/n/16lWlQ6rwDAYDFixYgHbt2sHb2xve3t5o27Ytpk+frnRoDunTp4/ZZ79r1y6r82VlZeHzzz9Hy5Yt4eHhAV9fX3Tu3Bnff/99+QZMFcLzzz9vdtwsWbJE6ZCoAOYrlbfk5GRMnDgRzZo1g5ubG/z9/dGrVy+sXr26yGXs/f6pKLKysjB+/HjMmDFD6VCoFF29etXsOKxXr57SIZWaL7/80qxsd3ONmp2djXfffRcajQZ9+vQptRjLw969e/HII4/g2rVrSodCRFQhsAKdiKgQvV6PmjVrQpIkrF27tsj5jh49ipiYGAQHB5djdEUrXDlX+L+TkxNq1qyJxx9/HDt27FAkxkmTJmHMmDHo0KEDDh06hH379sHPz6/UKhJ3796NZ599Fg0bNoSrqyvc3NxQv359dOvWDa+//jpWrFiB6Ojou97OunXrEBMTg65du9qcb/jw4ZgyZQqeeOIJnDx5Ev/88w9ycnKwatUqi3mXLFli8/Oz9V/pitilS5fC29sbv/zyi6Jx2KPwja/C/1UqFXx8fNCnTx8sW7YMQohS2/a8efMQExODYcOGldo6y9P06dMxffp0JCcnO7xs4Uq/wv+1Wi3q1q2L4cOH4/jx46UfvB0cyVequApX7Fn77+npifvuuw/Tpk1DSkqKInEajUaEhoZi1qxZeOuttxAeHo7Vq1fj6tWr2LhxI8LCwhAUFIQxY8aYLWfv909FcPv2bXTr1g2bN2/GiBEjzKbt2rUL06dPx/r165UJTiFLlizB9OnTcerUKaVDuSu1a9dGTEwMjhw5onQope7NN99ETEwMxo8ff1frOXjwIO677z589dVXMBgMDi27fv16PPDAA/D19YW7uzvatGmDr7/+Gjqdzur8er0e06dPR7169aDValG/fn188sknRW5XCIH7778f/v7+uH37ttV5unbtCo1Gg/bt2+PgwYMOxU9EVCkJIiIys27dOgFAABD9+/cvdv66desKACIqKqrsg7MhOTlZxMTEiPHjxwsAomvXriImJkbExMSIW7duiUOHDon33ntPODk5CQDi/fffL9f4cnNzhZubm3BychKZmZny+NOnT5dKLBMnThQARPfu3cWaNWtERESEuH79ujhy5Ij49NNPhaenpwAgnnzyybvelknv3r0FALFz506LadHR0QKACA4ONhv/77//ilmzZlnMv3jxYgFA/sxM/48cOSIfj0eOHLGYDkAsXry41MpUEoMGDRIAxEMPPaRoHPaIj48XMTExomvXrgKAGD9+vNn+PHPmjPjhhx9EUFCQACBGjhxZ6jE899xzFeJzc5TpOCzJuS4xMVHExMSIYcOGCQBi2LBh8j6Pjo4We/fuFaNGjRKSJAm1Wi0WLFhQ+gWwwdF8pYpLr9ebnR8BiLVr18rjLl26JP744w/Rpk0bAUDUqVNHREZGlnuc+/btk7+zClq9erVYsmSJmDFjhgAg3N3drS5v6/unIsjNzRWdOnUSQUFB4vbt2xbTp02bJgCI5557rvyDU5Dpc7vXzv9FiYqKEgBE3bp1lQ6l1JmO0WnTpjm87PTp04VarRajRo0S48aNEwBE79697Vp2woQJAoB45JFHxLFjx8TFixfFhx9+KCRJEt27dxcZGRkWy7z44otCrVaLOXPmiAsXLog5c+YIlUolRo0aZXUbP/zwgwAgVqxYYTMWvV4vQkNDha+vr7hy5Ypd8RMRVVaasq6gJyK61yxcuFB+ImPbtm2IiopC/fr1lQ6rWKYmUTw8PAAAWq0WQUFB8vQaNWqgc+fO8Pf3x7hx4/D555/jgQcewP33318u8cXFxSEzMxO1atWCq6urPL5169Zo3br1Xa3733//xddff42WLVtix44dcHZ2lqfVrl0bHTt2RKdOnfDggw/e1XYcERUVBQCo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vBlqtRqzZ89GbGwstm/fjgceeAAAsHDhQgwYMABz5szBF198YbHegp2iFuyUlIioKinzCvSxY8eid+/eWL16tdVKmeK4ublhypQpaNOmDZ5++mkMGTIEderUKYNIiaiqMhqN+Pnnn3Hr1i2Li04g/0IxLi4Of/75J4YMGVLeIZaIq6ur1ScHbVmzZg0aN25c5PSizuMlOb+Xh2rVquHpp5/G008/jdWrV2PYsGG4evUqNm3ahKFDh5rN269fv2Ir74v6oeyIhIQEXLhwwWK86UdRWSr8xFJRyurzrKjHSWEffvghFi9ejH/++Qfr16/Ho48+6tDy9u7noowcORLvvvuuzXlMFbZA3tPkp0+fxr59+7By5UqsW7cOe/fuxd69e/H555/jr7/+sniAobyO96J4eno6fH46cOAA3Nzcipxe1M3NinDcORJDcfM6sq5XX30VGRkZ+OSTTzB16lSzaRqNfT8Dymv/vfvuuxg+fLjNeYKDg0u07lq1ajl8vAEV49gpKUf35/3334/IyEhs3boVq1atwp9//oktW7Zgy5Yt+Oqrr7Bx40a797+7u7v8lnFJ/fHHH1i3bh38/Pywfft2+S0LE2vXa4WV9edXrVo1syfErbF1zrJGrVbj888/x4QJE/D7779jzZo12L17NxYsWIAFCxbgnXfewezZsx2O1d598c033xRZUW1S+LOwJjY2FpMmTQIArFq1Cj169DCbbs9NtoYNGyIkJARHjhzBhg0bcPXqVdSrV6/I+R397qxoTOeo2NjYIucxvTVi61q9oN27d2PhwoWYNm0aWrZsCSDvrSqtVov7779fni80NBROTk7YtWuX1fWYbggBKPLmOxFRZVemFehCCIwbNw5du3a96wuYhx9+GIcOHbLryU8iIkf8888/iI2NxbFjx+SnkgsbPnw4Dh8+jIULF9pVgV69enW4uLggOzu7yNchi3oV3fS6eEpKCnJycqw+8RgXF2c2790oeFPSzc2tRJUMSjt+/Di2bt2K9957r8h5hg4dimbNmuH8+fO4cuWKPN60D7Ozs8ul7NOnT8f06dPLbP2mp4SsPSluagrjXhAcHIzz5887nD+lwdvbG2PHjsVHH32EadOm4ZFHHrG4jimL/Vy3bl2cO3cOBoOhRMdijx490KNHD3zzzTfYsmULxo4di8uXL+PVV1/F/v375W0A5Xe8362C5zhvb+9SOeeVNIbyOieXlsTERLnJqoEDB5bLNk3HcFF5W9Qy58+fhyRJ98QxWZCpvKbP35ryPjbuZn+qVCoMGDAAAwYMgE6nw9q1a/HWW2/hzJkzmDx5stlbbbYEBQUhNTX1rpp6MDXj1aVLF7sqbB1VGtdp6enpqFevnt03oxzh6+uLMWPGYMyYMYiNjZXfyp4zZw4GDhwoN/VSGqpXrw53d3dkZGRAq9WWSh7u378fubm58PT0tKg8t9fcuXMRGxuLQYMGYdOmTRgxYgR2795t8WZDSb47C94Mio+Pt3pDpiyvM6wxvSWTlJSE+Ph4qzcZzp49azavLVlZWXjllVcQEhKC999/Xx6fmJiI6tWrm13XqFQq+Pn5ISEhweq6UlJS5L8r8k0IIqKyVKZtoEuShF69epVapbepnU8iotK0cOFC/N///R/atGmDRo0aWf3/4osvAgC2b99uVvlaFI1GI/9gKOrppHPnzlkdf//990Or1cJgMODo0aNW5zl06BAAYMCAAcXGUpygoCC0bdsWAHDw4EGr8+h0OvTs2bPYJ3uUEhYWho8++kh+HbsopuYhCv4oMe3DEydOFPm03OLFi3Hffffh6tWrpRNwGbLVFvKlS5fKOZqS69OnDwDH86e0vPXWW/D09MSZM2ewZs0ai+llsZ9Nx2JReQgAn332GTp16oT09HQAwPnz5/H888+bHfsqlQoDBw7Ezz//DABym68Ft1GS493awxCxsbHyq/9loX379vLr9UXtl4SEBLRr1w7ffPNNmcRQ3ufk0mI0Gm1OL67t85Iwld+0PwrLzs7GwIEDMXPmTItlbB33r7/+OkJDQ+/67Y7SVlx5b9y4gVu3bpnNW14xObI/9+3bhzfeeMNsHicnJzz11FPyZ1XwPFIcU3vbtiogrTXvkp6eLt9wKOvjtzSu03Q6HY4dO2Z1nrCwMLlPh4KslTspKUnuT+DLL7+U23c3CQoKwuzZs+Unhh35LOyhVqvlCnlbx81jjz1mdxvsd/v5nT17FlOmTMGSJUuwbNky1KhRA/v27bPavEhJvjvbt28vV5ordZ1RWNu2bdG0aVMAeb83CouJiUF4eDhUKhWGDRtW7PqmTZuGK1eu4Oeffzarj/Hx8bHan01SUpLcv0Vhpqfivb29y71pGyKiiqJcOhEtbM+ePWw7i4gqhJiYGGzcuBEvvPCCzfmefPJJuLi4ONSZqKnPht9//93iidTMzMwi1+Pv74/XXnsNADBr1iyL6SdOnMCuXbvg5eVVav1CmJ6Inj9/vtypUkHz58/Hvn37zF73LAtjx45F/fr1sWzZMoeXzcnJwYIFC4qcfvLkSZw+fRpubm4YNGiQPP7//u//0K5dO6SmpmL+/PkWyyUnJ+OTTz6Bq6urzVeHK4p27doBgEVFX1paGlavXq1ESCXy8ssvw8vLCxcvXpQ7Nyto3rx5Zbp9Hx8fuZOz6dOnW1QGmPbziRMnLJ5CX7RoUYm2+dJLL6F27dq4cOEC/vzzT4vp165dw8yZM9GoUSP5FerY2FgsXbrUaoefpmutgsft3RzvppsGpgrzO3fuoEaNGli6dGlJimsXjUaDKVOmAABmz55t9frx888/x+nTp9G/f/8yiUGJc3Jp8Pf3R/369QEAf/31l8X03377rdS3aTqGL1++jL///tti+tKlS/HPP/+YtWc/btw4eHl5Yfv27Thx4oTFMsePH8fChQvRsWPHCtekiqm8kZGRVnPWdLw89thjcqetZa0k+/Py5cv47rvvcPnyZYv5rZ1HitOzZ08AsNpcmUnh8wkATJkyRW5uyvSE7YEDByxuVF67ds1mZam9SuM6bcaMGRbThRCYPn06Ll++LLcxbWKt3H379sXo0aMB5L0V+d1331ndbkk+C3tNmTIFGo0Gv/76K27cuGExfcOGDVi/fr3dT5N37NgRKpUKaWlpFs2CGAwGm9cjOp0OI0aMwOjRo9G3b19Ur14dS5cuhSRJmD59usX1TUm+O11cXDBmzBgAwPfff2/xHX/s2DH5za3yZOpAe/bs2RbXFrNnz4bRaMQrr7xS7DFw7NgxzJ49G2+//bZF59d9+vRBdna2Wfn27duHnJwc9OrVy+r6TDcTTLlNRFQlCQWoVCoRFxenxKaJiIQQQuj1ehETEyM++OAD4evrK6Kjo0VycrLVeTMzM0VMTIx4+OGHBQARGBgobt68KWJjY0VMTIwIDg4WAMSRI0dETEyM0Ov18rLjxo0TAESbNm3E1q1bxfXr18WuXbtEz549xUsvvSQAiN69e1tsMycnRzz00EMCgHjuuefE8ePHxdWrV8Wvv/4qatSoITw8PMSWLVvMlklOThYxMTFi/PjxAoDo2rWriImJETExMSIzM7PYffLpp58KAOK+++4Tf//9t7h69ao4fvy4mDRpklCr1eLdd981mz8mJkYcOXJEABDBwcHytnJycqzua2vzpqWlyfPdvn1bABAARMuWLYuNt6AlS5YIAEKlUolRo0aJHTt2iKioKHHlyhWxb98+8f7774tq1aoJJycn8dtvv1ksf/XqVdG4cWOh0WjEBx98IMLCwkRkZKRYt26daN26tahZs6a4cuWKPH9iYqKIiYkRXbt2FQDE2rVr5bLn5OSImJgYsXbt2hJ9Diam9Zj2W8FjrPA+Luj48eNCo9EINzc38dNPP4nLly+LAwcOiNDQUPHKK68IAGLYsGEiJiZGpKammpWn8LFcMA7TcWVaNjMzs8jPNj4+/q7Wa7J27Vqh0WhE9erVxdKlS8XVq1fFqVOnxMsvvyznj6OXMvHx8Waf3fjx481iLjyvm5ubACB+/PFHERMTI1JSUoQQQhiNRtG+fXsBQIwcOVKcPHlSXLx4UUybNk28+eabcmwxMTHyNY8pR4cNGyYAiLlz51qU+cSJEyIwMFC4u7uLWbNmifPnz4uLFy+KX375RdSrV0+EhISIxMREef6dO3cKAKJWrVpiyZIl4uzZs+Ly5ctizZo1olGjRkKj0Yi//vrLrFyOHu8mjz/+uAAgJk6cKCIjI8WECROEWq0W4eHhxe5307FgKrvp8y7ueDbt61GjRgkA4v777xc7duwQ165dE4cOHRIvv/yyACAWLFggz286Lq3lYMHzsxDC7nwtyTnZ0XNk4RhM30mmY7bgMWU6BkzHVOFzkamca9euFZIkCa1WKz799FMRHh4uTp06JSZMmCBcXV3NYjOt827z9sSJEyIgIEB4e3uLBQsWiMjISBEWFia++OIL4eLiIt566y2Lz3jLli3Cw8NDBAQEiB9//FFcvnxZnD17Vnz//ffCz89P9OnTR2RlZdk8Tgrvz4L7zLRfrOV5YfZ+boXL6+XlJb7//nsRGRkpwsPDxcSJEwUA0alTJ5GUlCTPb7qmmDt3bpG5YPrMrV1f2Pr+Ken+XLx4sQAgmjdvLlavXi0uXrwoLly4IJYuXSr8/f2Fh4eHOHr0qF37XwghLl68KCRJEm3atClyntOnTwtJkkRQUJA4duyYOHTokKhZs6Z46qmnhBBC5Obmio4dOwoAomPHjmLr1q0iMjJS/Pnnn6Jp06bC2dnZ7Dxa8PvX2r4tyt1cp5muC4cNGyYOHDggrl27Jnbv3i0effRRq+deIYT45ptv5HPZpUuXxMqVK4UkSfI5rHfv3gKAGDFihNi/f798LTZ27FgBQPTs2VPk5uYW+xmUZF8sWbJEODk5iQYNGoiVK1eKqKgocfr0afHFF18Id3d38cwzzwiDwSCEKPrarmCOvfXWWwKAqFGjhvjll1/EpUuXxL59+8TAgQPlz88UV1pampwbkydPFnXq1BFRUVHyuSwxMVE899xzAoBo3LixuHbtmtl3oaPfnULk5WL37t3lOI4dOyauXbsmfv/9d1GvXj3Rs2dPs+uE9PT0Yvd7wXWb9re16/KifnMIIeT5H3nkEXH8+HH52kKSJNGtWzeRkZFhc9u5ubmidevWolGjRlavO2/evCn8/PxE8+bNxYEDB8TBgwdFixYthJ+fn7h586bVdb7++usCgFi0aJHd+4CIqLJRpAJdkqRiK9CPHTsmnn76aaHT6copKiKqSqKiouQf1qb/zz33nNV5TT8sC/+vW7eu1fFRUVFmy//yyy+iY8eOwtXVVXh5eYlevXqJv//+W/z7778CgOjbt6/V7RoMBrF48WLRq1cv4e3tLbRarahXr54YNWqUiIyMtJjf9MPC2v/FixfbtV/27NkjHn/8cREYGCi0Wq2oXbu2GDhwoNi4caPFvEVta+fOnWbzWdvXpv/Tpk0zm3fYsGHCw8NDzJs3z654TfR6vdi9e7eYMmWKeOCBB0SdOnWEi4uLUKvVwtvbW9x3333inXfeEZcuXSpyHampqeKTTz4Rbdq0EW5ubsLLy0u0atVKvP/++xbfWaYfuNbKbqrQvJvPQQhhcz2F93FhW7duFd26dROurq7C09NThIaGisOHD1scy6aKrKLKYyuOxYsXF/nZ1q1b967WW9ChQ4fEoEGDhLe3t3B1dRUtW7YUs2fPFnq9XgAQkiTZvU+FEEXmrSnmwt555x2z+UaPHi1Pi4uLEyNHjhT+/v5Cq9WKZs2aiTlz5gij0Wi2jLe3txCi6BwtXOa4uDgxceJE0axZM+Hi4iJ8fHxEu3btxFdffSVX4JvodDqxefNm8dJLL4kmTZoIV1dX4ebmJpo0aSJeeOGFIiu3HTneTW7evCkeeeQR4e3tLVxcXETLli2t3pCypqhjwZ7j2eTPP/8UAwYMENWrVxdarVbUr19fPPHEE2L//v1m89k65xQ+PzuSr46ek+/2HGn6TrJ2zJoq9Io6pgqWc/v27eKBBx4Qnp6ewsnJSdSpU0e8+OKLFmU3rbM08jY2NlZMmDBBNGnSRLi4uAg/Pz/Ro0cPsXLlSmE0Gq1+vleuXBFjxowR9evXF1qtVvj7+4suXbqIBQsWiOzsbKvLWGPr8y8qzwsqyXFasLzOzs7Cw8NDdOzYUcyZM8ci9qKuKQpuw9b1ha3vn5Luz8zMTLF27Vrx9NNPy/N7enqKFi1aiLFjx1rkjT1MlcsnT54scp6FCxeKxo0bCycnJxEYGCieffZZs/NPWlqamDhxoqhfv77QaDTC09NTdO3aVfz8888Wx35x37+23M112tKlS0Xv3r3l82Ljxo3Fc889J8LCwqwuk5ubK9566y0RFBQknJycRN26dcXUqVPliulr166JWbNmid69ews/Pz+h0WhEYGCg6Natm/jhhx/szoWS7ovTp0+LESNGiODgYOHk5CRq1Kgh+vTpI3777TezG5DFff8LkXfzc/78+aJt27bCxcVFODs7ixYtWogPPvhAfPvtt2bLTZs2zWpumI49a8d94Rsbjnx3mmRmZoqPPvpIPg59fX3FgAEDxN69e8W0adPMtvfFF1/Yte+FsJ3nBc/vRfnjjz9E37595WufVq1aia+++qrYG85CCPHxxx8LSZJsnrPOnTsnHnroIeHh4SHc3d3FoEGDxLlz56zOm56eLgIDA0VAQIDdNzKJiCojSYjyb0xQpVIhNjbWZu/ber0efn5+WLZsGQYPHlyO0RERlY8NGzbgkUcewWOPPYZ169YpHQ7RPSU1NRXe3t7w8fGx2g45EREp5/Lly2jdujV69uyJLVu2KB1OifA6jSiv/fipU6fil19+wfDhw5UOh4hIMYq0gQ5Y74iqoPPnzyM3NxfXrl0rp4iIiErfzJkzi+zRPiIiAgDkDjyJyNyqVaustuELMH+IiCqyRo0aYfny5dixYwc+/PBDpcMpEq/TiIr2999/49NPP8Vbb73FynMiqvI0Sm24Q4cOUKvVVqfl5uYiJiYGkiTZ3VEJEVFFNHXqVGg0Grz99ttm47Ozs7F48WI4OTlh5MiRygRHVMH9/PPPcHFxwfr16y2mmTrAfPnll8s5KiIissfjjz+OzZs3Y/jw4ahVq5bcUWZFwus0IuvCw8Px1FNP4eOPP8bEiROVDoeISHGKVaBb6927IK1Wi08//RT33XdfOUVERFQ23nvvPRgMBjz44IPw8vLC+fPn8cknnyAyMhILFy5EvXr1lA6RqML6888/8eqrr+Kll15CUFAQYmJi8MMPP+CXX37Bc889h2eeeUbpEImIqAihoaG4fPkyrly5onQoReJ1GpElHx8fhIeH8/gnIvqPYm2gr1u3Dj4+Plana7VaNG/eHNWqVSvfwIiIStnGjRuxfv16HD58GDExMUhJSYGfnx+6d++O8ePHo0uXLkqHSFRhnTx5Er///jt27tyJ6Oho3L59Gx4eHmjbti1efvllVp4TEdFd4XUaERER2aPCdiJKRERERERERERERKQkRToRlSSp2E5EiYiIiIiIiIiIiIiUpEgFuhACX3/9NTZt2qTE5omIiIiIiIiIiIiIiqVIBfrIkSNx+/ZtJCYmKrF5IiIiIiIiIiIiIqJiKdIGOhERERERERERERFRRafIE+hERERERERERERERBVdmVagCyHQr18/rF69+q7XlZCQgO7du+PAgQOlEBkRERERERERERERkW1lWoEuSRJef/11jBgxAitXrizxem7cuIGBAwfCy8sL3bp1K8UIiYiIiIiIiIiIiIisK/MmXB577DGMHz8ezzzzDLp3744NGzYgIyPDrmXPnDmDcePGoWnTpkhPT8fy5cvLOFoiIiIiIiIiIiIiojzl1onoN998g/feew/Z2dmQJAn169dH7dq14efnBxcXF6hUKuTm5iI1NRUxMTG4dOkSMjIy5GZgfv31V/j5+ZVHqERERERERERERERE5VeBDgBXr17FjBkz8OuvvyI1NdXmvJIkoXv37nj77bfx+OOPl1OEVdPgwYMBABs2bFA4EiIiIiIiIiIiIqKKo1wr0E0MBgMOHTqEsLAwREVFITU1FXq9Hu7u7ggKCkKzZs3QvXt3+Pv7l3doVVJISAiMRiMiIiKgUpV5qz5E9zyj0YiMjAy4u7szZ4iKwXwhcgxzhsgxzBkixzBniOxnNBqZJwQA0CixUbVaje7du6N79+5KbJ6sEEJAgXspRPckIQSysrLg5uamdChEFR7zhcgxzBkixzBniBzDnCGyH+vJyESRJ9CpYgkJCQEAREREKBwJERERERERERERUcWhyBPoBd26dQt79uxBdHQ0hBCoXbs2evXqhZo1ayodWpUjhIAkSUqHQVThCSFgMBig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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "--- Leaderboard Scores (targets relaxed 10%) ---\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
score
submission
Schedule-Free AdamW v2 (PyTorch)0.607183
NAdamW (Baseline AlgoPerf v0.5) (JAX)0.601010
Muon (PyTorch)0.599327
Schedule-Free AdamW (PyTorch)0.578563
Schedule-Free AdamW v2 (JAX)0.574074
Schedule-Free AdamW (JAX)0.556117
Muon (JAX)0.552189
AdEMAMix (PyTorch)0.521324
Cautious NAdamW (JAX)0.508979
NAdamW (JAX)0.481481
Lion (PyTorch)0.443883
NAdamW (Tuned for ResNet) (JAX)0.434343
Single Worker DiLoCo (JAX)0.425926
Single Worker DiLoCo v2 (JAX)0.323232
\n", - "
" - ], - "text/plain": [ - " score\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.607183\n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.601010\n", - "Muon (PyTorch) 0.599327\n", - "Schedule-Free AdamW (PyTorch) 0.578563\n", - "Schedule-Free AdamW v2 (JAX) 0.574074\n", - "Schedule-Free AdamW (JAX) 0.556117\n", - "Muon (JAX) 0.552189\n", - "AdEMAMix (PyTorch) 0.521324\n", - "Cautious NAdamW (JAX) 0.508979\n", - "NAdamW (JAX) 0.481481\n", - "Lion (PyTorch) 0.443883\n", - "NAdamW (Tuned for ResNet) (JAX) 0.434343\n", - "Single Worker DiLoCo (JAX) 0.425926\n", - "Single Worker DiLoCo v2 (JAX) 0.323232" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/byproducts/scores_relaxed.csv\n", - "\\begin{table}[h]\n", - " \\centering\n", - " \\caption{AlgoPerf Self-Tuning Leaderboard (targets relaxed 10%)}\n", - " \\label{tab:scores_relaxed}\n", - " \\begin{tabular}{rlr}\n", - " \\toprule\n", - " Rank & Submission & Score \\\\\n", - " \\midrule\n", - " 1 & \\sfadamwii & \\textbf{0.6072} \\\\\n", - " 2 & \\nadamwbase & 0.6010 \\\\\n", - " 3 & \\muonpt & 0.5993 \\\\\n", - " 4 & \\sfadamw & 0.5786 \\\\\n", - " 5 & \\sfadamwjaxii & 0.5741 \\\\\n", - " 6 & \\sfadamwjax & 0.5561 \\\\\n", - " 7 & \\muonjax & 0.5522 \\\\\n", - " 8 & \\ademamix & 0.5213 \\\\\n", - " 9 & \\cautiousnadamw & 0.5090 \\\\\n", - " 10 & \\nadamw & 0.4815 \\\\\n", - " 11 & \\lion & 0.4439 \\\\\n", - " 12 & \\nadamwresnet & 0.4343 \\\\\n", - " 13 & \\dilocosw & 0.4259 \\\\\n", - " 14 & \\dilocoswii & 0.3232 \\\\\n", - " \\bottomrule\n", - " \\end{tabular}\n", - "\\end{table}\n", - "\n", - "Saved to artifacts/tech_report_v1/section_4_leaderboards/out/results/scores_relaxed_table.tex\n" - ] - } - ], + "outputs": [], "source": [ "TARGET_RELAXATION_FRACTION = 0.10 # 10% relaxation, applied to every workload\n", "_RELAXATION_LABEL = f'{TARGET_RELAXATION_FRACTION:.0%}'\n", "_RELAXATION_LABEL_LATEX = _RELAXATION_LABEL.replace('%', r'\\%')\n", "\n", "RELAXED_WORKLOAD_CONFIG = WORKLOAD_CONFIG.with_target_relaxations(\n", - " {'all': TARGET_RELAXATION_FRACTION}\n", + " {'all': TARGET_RELAXATION_FRACTION}\n", ")\n", "\n", - "performance_profile_relaxed_df = performance_profile.compute_performance_profiles(\n", - " results,\n", - " RELAXED_WORKLOAD_CONFIG,\n", - " time_col='score',\n", - " min_tau=MIN_TAU,\n", - " max_tau=MAX_TAU,\n", - " reference_submission_tag=None,\n", - " num_points=NUM_POINTS,\n", - " scale=SCALE,\n", - " verbosity=0,\n", - " self_tuning_ruleset=SELF_TUNING_RULESET,\n", - " strict=STRICT,\n", - " output_dir=BYPRODUCTS_DIR, # writes time_to_targets_relaxed.csv\n", - " artifact_suffix='_relaxed',\n", + "performance_profile_relaxed_df, scores_relaxed, ttt_relaxed = score_runs(\n", + " results,\n", + " RELAXED_WORKLOAD_CONFIG,\n", + " BYPRODUCTS_DIR,\n", + " time_col='score',\n", + " artifact_suffix='_relaxed',\n", + " **SCORING_OPTIONS,\n", ")\n", "performance_profile_relaxed_df.to_csv(\n", - " os.path.join(BYPRODUCTS_DIR, 'performance_profile_score_relaxed.csv')\n", + " os.path.join(BYPRODUCTS_DIR, 'performance_profile_score_relaxed.csv')\n", ")\n", "\n", "# ── Styled plot ────────────────────────────────────────────────────────────\n", - "fig, ax = plot_performance_profiles_styled(\n", - " performance_profile_relaxed_df,\n", - " 'score_relaxed',\n", - " scale=SCALE,\n", - " save_dir=RESULTS_DIR,\n", - " title=f'AlgoPerf: Self-Tuning Ruleset Performance Profiles '\n", - " f'(targets relaxed {TARGET_RELAXATION_FRACTION:.0%})',\n", + "fig, ax = plot_performance_profiles(\n", + " performance_profile_relaxed_df,\n", + " title=f'AlgoPerf: Self-Tuning Ruleset Performance Profiles '\n", + " f'(targets relaxed {TARGET_RELAXATION_FRACTION:.0%})',\n", + ")\n", + "save_figure(\n", + " fig,\n", + " Path(RESULTS_DIR) / 'performance_profile_by_score_relaxed',\n", ")\n", "plt.show()\n", "\n", "# ── Relaxed scores table ───────────────────────────────────────────────────\n", - "scores_relaxed = compute_leaderboard_score(performance_profile_relaxed_df)\n", "scores_relaxed_path = os.path.join(BYPRODUCTS_DIR, 'scores_relaxed.csv')\n", "scores_relaxed.to_csv(scores_relaxed_path)\n", "\n", - "print(f'\\n--- Leaderboard Scores (targets relaxed {TARGET_RELAXATION_FRACTION:.0%}) ---')\n", + "print(\n", + " f'\\n--- Leaderboard Scores (targets relaxed {TARGET_RELAXATION_FRACTION:.0%}) ---'\n", + ")\n", "display(scores_relaxed.sort_values('score', ascending=False))\n", "print(f'Saved to {scores_relaxed_path}')\n", "\n", @@ -10167,23 +649,23 @@ "# Keep the score and rank movement in one auditable DataFrame, then use it for\n", "# both the CSV byproduct and the report table. Positive rank_shift means that a\n", "# submission moves up when targets are relaxed.\n", - "relaxed_cmp = pd.DataFrame({\n", + "relaxed_cmp = pd.DataFrame(\n", + " {\n", " 'standard_score': scores['score'],\n", " 'relaxed_score': scores_relaxed['score'],\n", - "})\n", - "relaxed_cmp['standard_rank'] = (\n", - " relaxed_cmp.standard_score.rank(ascending=False, method='min').astype(int)\n", - ")\n", - "relaxed_cmp['relaxed_rank'] = (\n", - " relaxed_cmp.relaxed_score.rank(ascending=False, method='min').astype(int)\n", - ")\n", - "relaxed_cmp['rank_shift'] = (\n", - " relaxed_cmp.standard_rank - relaxed_cmp.relaxed_rank\n", + " }\n", ")\n", + "relaxed_cmp['standard_rank'] = relaxed_cmp.standard_score.rank(\n", + " ascending=False, method='min'\n", + ").astype(int)\n", + "relaxed_cmp['relaxed_rank'] = relaxed_cmp.relaxed_score.rank(\n", + " ascending=False, method='min'\n", + ").astype(int)\n", + "relaxed_cmp['rank_shift'] = relaxed_cmp.standard_rank - relaxed_cmp.relaxed_rank\n", "relaxed_cmp = relaxed_cmp.sort_values('relaxed_rank')\n", "\n", "relaxed_cmp_path = os.path.join(\n", - " BYPRODUCTS_DIR, 'scores_standard_vs_relaxed.csv'\n", + " BYPRODUCTS_DIR, 'scores_standard_vs_relaxed.csv'\n", ")\n", "relaxed_cmp.to_csv(relaxed_cmp_path)\n", "print(f'Saved to {relaxed_cmp_path}')\n", @@ -10192,23 +674,24 @@ "_best_relaxed = relaxed_cmp.relaxed_score.max()\n", "_relaxed_cmp_rows = []\n", "for name, row in relaxed_cmp.iterrows():\n", - " standard_score = f'{row.standard_score:.4f}'\n", - " relaxed_score = f'{row.relaxed_score:.4f}'\n", - " if row.standard_score == _best_standard:\n", - " standard_score = r'\\textbf{' + standard_score + '}'\n", - " if row.relaxed_score == _best_relaxed:\n", - " relaxed_score = r'\\textbf{' + relaxed_score + '}'\n", - " _relaxed_cmp_rows.append(\n", - " f' {latex_name(name)} & {standard_score} & '\n", - " f'{int(row.standard_rank)} & {relaxed_score} & '\n", - " f'{int(row.relaxed_rank)} & {_fmt_shift(int(row.rank_shift))} '\n", - " + r'\\\\'\n", - " )\n", - "\n", - "scores_relaxed_latex = '\\n'.join([\n", + " standard_score = f'{row.standard_score:.4f}'\n", + " relaxed_score = f'{row.relaxed_score:.4f}'\n", + " if row.standard_score == _best_standard:\n", + " standard_score = r'\\textbf{' + standard_score + '}'\n", + " if row.relaxed_score == _best_relaxed:\n", + " relaxed_score = r'\\textbf{' + relaxed_score + '}'\n", + " _relaxed_cmp_rows.append(\n", + " f' {latex_name(name)} & {standard_score} & '\n", + " f'{int(row.standard_rank)} & {relaxed_score} & '\n", + " f'{int(row.relaxed_rank)} & {_fmt_shift(int(row.rank_shift))} ' + r'\\\\'\n", + " )\n", + "\n", + "scores_relaxed_latex = '\\n'.join(\n", + " [\n", " r'\\begin{table}[htbp]',\n", " r' \\centering',\n", - " r' \\caption{Standard vs.\\ ' + _RELAXATION_LABEL_LATEX\n", + " r' \\caption{Standard vs.\\ '\n", + " + _RELAXATION_LABEL_LATEX\n", " + r' relaxed-target AlgoPerf self-tuning leaderboard. $\\Delta$ is the rank'\n", " + r' change after relaxing targets.}',\n", " r' \\label{tab:scores_relaxed}',\n", @@ -10222,430 +705,186 @@ " r' \\bottomrule',\n", " r' \\end{tabular}',\n", " r'\\end{table}',\n", - "])\n", + " ]\n", + ")\n", "print(scores_relaxed_latex)\n", "\n", - "scores_relaxed_latex_path = os.path.join(RESULTS_DIR, 'scores_relaxed_table.tex')\n", + "scores_relaxed_latex_path = os.path.join(\n", + " RESULTS_DIR, 'scores_relaxed_table.tex'\n", + ")\n", "with open(scores_relaxed_latex_path, 'w') as f:\n", - " f.write(scores_relaxed_latex)\n", + " f.write(scores_relaxed_latex)\n", "print(f'\\nSaved to {scores_relaxed_latex_path}')" ] }, { "cell_type": "code", - "execution_count": 72, - "id": "9d1ad5c0", + "execution_count": null, + "id": "3ace94dd", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--- Time to Target, targets relaxed 10% (fraction of max runtime budget) ---\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
criteo1tbfastmrifinewebedu_lmimagenet_resnetimagenet_vitlibrispeech_conformerlibrispeech_deepspeechogbgwmt
submission
Schedule-Free AdamW v2 (PyTorch)0.030.060.59\\textemdash{}\\textemdash{}0.610.420.160.06
NAdamW (Baseline AlgoPerf v0.5) (JAX)0.030.070.320.430.56\\textemdash{}\\textemdash{}0.130.11
Muon (PyTorch)0.030.080.22\\textemdash{}\\textemdash{}0.72\\textemdash{}0.080.08
Schedule-Free AdamW (PyTorch)0.030.08\\textemdash{}\\textemdash{}\\textemdash{}0.720.420.130.08
Schedule-Free AdamW v2 (JAX)0.030.070.21\\textemdash{}0.27\\textemdash{}\\textemdash{}0.130.08
Schedule-Free AdamW (JAX)0.030.090.16\\textemdash{}0.27\\textemdash{}\\textemdash{}0.160.08
Muon (JAX)0.050.080.320.400.48\\textemdash{}\\textemdash{}0.050.27
AdEMAMix (PyTorch)0.030.080.32\\textemdash{}\\textemdash{}0.670.470.190.24
Cautious NAdamW (JAX)0.030.070.480.430.59\\textemdash{}\\textemdash{}0.160.16
NAdamW (JAX)0.030.060.480.450.51\\textemdash{}\\textemdash{}0.160.27
Lion (PyTorch)0.030.070.38\\textemdash{}\\textemdash{}\\textemdash{}0.440.270.13
NAdamW (Tuned for ResNet) (JAX)0.030.070.380.430.77\\textemdash{}\\textemdash{}0.210.27
Single Worker DiLoCo (JAX)0.050.080.480.450.72\\textemdash{}\\textemdash{}0.160.19
Single Worker DiLoCo v2 (JAX)0.030.090.540.61\\textemdash{}\\textemdash{}\\textemdash{}0.270.27
\n", - "
" - ], - "text/plain": [ - " criteo1tb fastmri finewebedu_lm \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.03 0.06 0.59 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.03 0.07 0.32 \n", - "Muon (PyTorch) 0.03 0.08 0.22 \n", - "Schedule-Free AdamW (PyTorch) 0.03 0.08 \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) 0.03 0.07 0.21 \n", - "Schedule-Free AdamW (JAX) 0.03 0.09 0.16 \n", - "Muon (JAX) 0.05 0.08 0.32 \n", - "AdEMAMix (PyTorch) 0.03 0.08 0.32 \n", - "Cautious NAdamW (JAX) 0.03 0.07 0.48 \n", - "NAdamW (JAX) 0.03 0.06 0.48 \n", - "Lion (PyTorch) 0.03 0.07 0.38 \n", - "NAdamW (Tuned for ResNet) (JAX) 0.03 0.07 0.38 \n", - "Single Worker DiLoCo (JAX) 0.05 0.08 0.48 \n", - "Single Worker DiLoCo v2 (JAX) 0.03 0.09 0.54 \n", - "\n", - " imagenet_resnet imagenet_vit \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) 0.43 0.56 \n", - "Muon (PyTorch) \\textemdash{} \\textemdash{} \n", - "Schedule-Free AdamW (PyTorch) \\textemdash{} \\textemdash{} \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} 0.27 \n", - "Schedule-Free AdamW (JAX) \\textemdash{} 0.27 \n", - "Muon (JAX) 0.40 0.48 \n", - "AdEMAMix (PyTorch) \\textemdash{} \\textemdash{} \n", - "Cautious NAdamW (JAX) 0.43 0.59 \n", - "NAdamW (JAX) 0.45 0.51 \n", - "Lion (PyTorch) \\textemdash{} \\textemdash{} \n", - "NAdamW (Tuned for ResNet) (JAX) 0.43 0.77 \n", - "Single Worker DiLoCo (JAX) 0.45 0.72 \n", - "Single Worker DiLoCo v2 (JAX) 0.61 \\textemdash{} \n", - "\n", - " librispeech_conformer \\\n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.61 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) \\textemdash{} \n", - "Muon (PyTorch) 0.72 \n", - "Schedule-Free AdamW (PyTorch) 0.72 \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} \n", - "Schedule-Free AdamW (JAX) \\textemdash{} \n", - "Muon (JAX) \\textemdash{} \n", - "AdEMAMix (PyTorch) 0.67 \n", - "Cautious NAdamW (JAX) \\textemdash{} \n", - "NAdamW (JAX) \\textemdash{} \n", - "Lion (PyTorch) \\textemdash{} \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} \n", - "Single Worker DiLoCo (JAX) \\textemdash{} \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} \n", - "\n", - " librispeech_deepspeech ogbg wmt \n", - "submission \n", - "Schedule-Free AdamW v2 (PyTorch) 0.42 0.16 0.06 \n", - "NAdamW (Baseline AlgoPerf v0.5) (JAX) \\textemdash{} 0.13 0.11 \n", - "Muon (PyTorch) \\textemdash{} 0.08 0.08 \n", - "Schedule-Free AdamW (PyTorch) 0.42 0.13 0.08 \n", - "Schedule-Free AdamW v2 (JAX) \\textemdash{} 0.13 0.08 \n", - "Schedule-Free AdamW (JAX) \\textemdash{} 0.16 0.08 \n", - "Muon (JAX) \\textemdash{} 0.05 0.27 \n", - "AdEMAMix (PyTorch) 0.47 0.19 0.24 \n", - "Cautious NAdamW (JAX) \\textemdash{} 0.16 0.16 \n", - "NAdamW (JAX) \\textemdash{} 0.16 0.27 \n", - "Lion (PyTorch) 0.44 0.27 0.13 \n", - "NAdamW (Tuned for ResNet) (JAX) \\textemdash{} 0.21 0.27 \n", - "Single Worker DiLoCo (JAX) \\textemdash{} 0.16 0.19 \n", - "Single Worker DiLoCo v2 (JAX) \\textemdash{} 0.27 0.27 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "LaTeX saved → artifacts/tech_report_v1/section_4_leaderboards/out/results/time_to_target_table_relaxed.tex\n" - ] - } - ], + "outputs": [], "source": [ "# ── Time-to-Target Table (relaxed targets) ─────────────────────────────────\n", "# Relaxed-target analog of Section 5b's time-to-target table: same _fmt()\n", - "# (fraction of the workload's time budget) and _WL_MACRO, against\n", + "# (fraction of the workload's time budget), against\n", "# time_to_targets_relaxed.csv instead of the official time_to_targets.csv.\n", - "ttt_relaxed = pd.read_csv(\n", - " os.path.join(BYPRODUCTS_DIR, 'time_to_targets_relaxed.csv'), index_col=0\n", - ")\n", "\n", - "ttt_relaxed_display = ttt_relaxed.apply(lambda col: col.map(lambda v: _fmt(col.name, v)))\n", + "ttt_relaxed_display = ttt_relaxed.apply(\n", + " lambda col: col.map(lambda v: _fmt(col.name, v))\n", + ")\n", "ttt_relaxed_display.index.name = 'Submission'\n", "# Order rows by relaxed leaderboard score (best first), matching this\n", "# section's own leaderboard above.\n", "ttt_relaxed_display = ttt_relaxed_display.loc[\n", - " scores_relaxed.sort_values('score', ascending=False).index\n", + " scores_relaxed.sort_values('score', ascending=False).index\n", "]\n", "\n", - "print(f'--- Time to Target, targets relaxed {TARGET_RELAXATION_FRACTION:.0%} '\n", - " f'(fraction of max runtime budget) ---')\n", + "print(\n", + " f'--- Time to Target, targets relaxed {TARGET_RELAXATION_FRACTION:.0%} '\n", + " f'(fraction of max runtime budget) ---'\n", + ")\n", "display(ttt_relaxed_display)\n", "\n", - "_relaxed_workloads = list(ttt_relaxed.columns)\n", - "_relaxed_col_spec = 'l' + 'r' * len(_relaxed_workloads)\n", - "_relaxed_wl_headers = ' & '.join(_WL_MACRO.get(w, w) for w in _relaxed_workloads)\n", "\n", "# A target is newly reached when its standard time-to-target is non-finite but\n", "# its relaxed time-to-target is finite. Persist this mask so the bolding in the\n", "# LaTeX table is mechanically checkable without parsing LaTeX.\n", "def _target_reached(v):\n", - " return pd.notna(v) and np.isfinite(v)\n", + " return pd.notna(v) and np.isfinite(v)\n", "\n", "\n", - "_newly_reached_relaxed = (\n", - " ~ttt.map(_target_reached) & ttt_relaxed.map(_target_reached)\n", + "_newly_reached_relaxed = ~ttt.map(_target_reached) & ttt_relaxed.map(\n", + " _target_reached\n", ")\n", "_newly_reached_path = os.path.join(\n", - " BYPRODUCTS_DIR, 'newly_reached_targets_relaxed.csv'\n", + " BYPRODUCTS_DIR, 'newly_reached_targets_relaxed.csv'\n", ")\n", "_newly_reached_relaxed.to_csv(_newly_reached_path)\n", "print(\n", - " f'Newly reached targets: {_newly_reached_relaxed.to_numpy().sum()} '\n", - " f'(saved to {_newly_reached_path})'\n", + " f'Newly reached targets: {_newly_reached_relaxed.to_numpy().sum()} '\n", + " f'(saved to {_newly_reached_path})'\n", ")\n", "\n", - "_relaxed_ttt_rows = []\n", - "for name, row in ttt_relaxed_display.iterrows():\n", - " cells = []\n", - " for workload, value in row.items():\n", - " cell = str(value).replace('%', r'\\%')\n", - " if _newly_reached_relaxed.loc[name, workload]:\n", - " cell = r'\\textbf{' + cell + '}'\n", - " cells.append(cell)\n", - " _relaxed_ttt_rows.append(' ' + latex_name(name) + ' & ' + ' & '.join(cells) + r' \\\\')\n", - "\n", "_relaxed_budget_caption = (\n", - " rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a '\n", - " r\"fraction of each workload's self-tuning-ruleset time budget \"\n", - " rf'(${SELF_TUNING_RUNTIME_FACTOR:g}\\times$ the external-tuning maximum allowed runtime).'\n", - " if SELF_TUNING_RULESET else\n", - " rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a '\n", - " r\"fraction of each workload's maximum allowed runtime.\"\n", + " rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a '\n", + " r\"fraction of each workload's self-tuning-ruleset time budget \"\n", + " rf'(${SELF_TUNING_RUNTIME_FACTOR:g}\\times$ the external-tuning maximum allowed runtime).'\n", + " if SELF_TUNING_RULESET\n", + " else rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a '\n", + " r\"fraction of each workload's maximum allowed runtime.\"\n", ")\n", "\n", - "ttt_relaxed_latex = '\\n'.join([\n", - " r'\\begin{table}[htbp]',\n", - " r' \\centering',\n", - " r' \\caption{' + _relaxed_budget_caption\n", - " + r' \\textbf{Bold} values mark targets reached only after relaxation;'\n", - " + r' \\textemdash{} = target not reached.}',\n", - " r' \\label{tab:time_to_target_relaxed}',\n", - " r' \\resizebox{\\textwidth}{!}{%',\n", - " r' \\begin{tabular}{' + _relaxed_col_spec + '}',\n", - " r' \\toprule',\n", - " r' Submission & ' + _relaxed_wl_headers + r' \\\\',\n", - " r' \\midrule',\n", - " *_relaxed_ttt_rows,\n", - " r' \\bottomrule',\n", - " r' \\end{tabular}%',\n", - " r' }',\n", - " r'\\end{table}',\n", - "])\n", + "ttt_relaxed_latex = workload_table(\n", + " ttt_relaxed_display,\n", + " caption=_relaxed_budget_caption\n", + " + r' \\textbf{Bold} values mark targets reached only after relaxation;'\n", + " + r' \\textemdash{} = target not reached.',\n", + " label='tab:time_to_target_relaxed',\n", + " bold=_newly_reached_relaxed,\n", + ")\n", "\n", - "ttt_relaxed_latex_path = os.path.join(RESULTS_DIR, 'time_to_target_table_relaxed.tex')\n", + "ttt_relaxed_latex_path = os.path.join(\n", + " RESULTS_DIR, 'time_to_target_table_relaxed.tex'\n", + ")\n", "with open(ttt_relaxed_latex_path, 'w') as f:\n", - " f.write(ttt_relaxed_latex)\n", + " f.write(ttt_relaxed_latex)\n", "print(f'\\nLaTeX saved → {ttt_relaxed_latex_path}')" ] }, + { + "cell_type": "markdown", + "id": "bd9b00cc", + "metadata": {}, + "source": [ + "## 8. Paper leaderboard figures\n", + "\n", + "Render the ranked legends from the profiles computed above. The helpers\n", + "validate the score integrals and return figures for notebook display.\n", + "Figures are saved locally; this notebook does not update the paper checkout." + ] + }, { "cell_type": "code", "execution_count": null, - "id": "b94cad74", + "id": "7547fb08", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "\n", + "paper_figure_paths = []\n", + "for metric, score_frame, profile_frame, suffix in [\n", + " ('score', scores, performance_profile_df, ''),\n", + " ('global_step', scores_steps, performance_profile_steps_df, '_steps'),\n", + " ('score_relaxed', scores_relaxed, performance_profile_relaxed_df, '_relaxed'),\n", + "]:\n", + " fig = plot_leaderboard_profile(score_frame['score'], profile_frame, metric)\n", + " paper_figure_paths.extend(\n", + " save_figure(fig, Path(RESULTS_DIR) / f'leaderboard_profile{suffix}')\n", + " )\n", + " display(fig)\n", + " plt.close(fig)" + ] + }, + { + "cell_type": "markdown", + "id": "9aad500b", + "metadata": {}, + "source": [ + "## 9. Target-relaxation sweep\n", + "\n", + "Reuse the loaded runs, full submission pool, workload configuration, and\n", + "scoring settings. Check the standard and relaxed endpoints against this\n", + "notebook's results. Filtering the selected figure affects only its display;\n", + "scores and ranks always use the full pool." + ] }, { "cell_type": "code", "execution_count": null, - "id": "744a9f34", + "id": "123cf505", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from artifacts.tech_report_v1.section_4_leaderboards.sweep_target_relaxation import (\n", + " sweep,\n", + " SWEEP_PERCENTAGES,\n", + " plot_sweep,\n", + " plot_selected_scores,\n", + ")\n", + "\n", + "SELECTED_SUBMISSIONS = SELECTED_SWEEP_SUBMISSIONS\n", + "sweep_dir = Path(BYPRODUCTS_DIR) / 'relaxation_sweep'\n", + "sweep_frame = sweep(\n", + " results,\n", + " config=WORKLOAD_CONFIG,\n", + " output_dir=sweep_dir,\n", + " percentages=SWEEP_PERCENTAGES,\n", + " **SCORING_OPTIONS,\n", + " references={\n", + " 0: (scores['score'], ttt),\n", + " round(100 * TARGET_RELAXATION_FRACTION, 8): (\n", + " scores_relaxed['score'],\n", + " ttt_relaxed,\n", + " ),\n", + " },\n", + ")\n", + "fig = plot_sweep(\n", + " sweep_frame, scores['score'].sort_values(ascending=False).index\n", + ")\n", + "paper_figure_paths.extend(\n", + " save_figure(fig, Path(RESULTS_DIR) / 'target_relaxation_sweep')\n", + ")\n", + "display(fig)\n", + "plt.close(fig)\n", + "\n", + "fig, selected_curves = plot_selected_scores(sweep_frame, SELECTED_SUBMISSIONS)\n", + "selected_curves.to_csv(sweep_dir / 'selected_curves.csv', index=False)\n", + "paper_figure_paths.extend(\n", + " save_figure(fig, Path(RESULTS_DIR) / 'target_relaxation_selected')\n", + ")\n", + "display(fig)\n", + "plt.close(fig)" + ] } ], "metadata": { @@ -10657,18 +896,6 @@ "display_name": "algoperf", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.15" } }, "nbformat": 4, diff --git a/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.py b/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.py index 9e8289ea..16e38107 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.py +++ b/artifacts/tech_report_v1/section_4_leaderboards/score_submissions.py @@ -20,16 +20,16 @@ # Second scoring iteration for the tech report. This notebook runs **locally against # the repo's self-contained `scoring/` package**, so scores always match # `python -m scoring.score_submissions` and divide by the config's full base -# workload count (9, including the never-yet-solved ImageNet ResNet). +# workload count (9 for the current config). # -# Outputs (CSVs, plots, LaTeX tables) are written to `artifacts/leaderboard_v2/`. +# Outputs are written to `artifacts/tech_report_v1/section_4_leaderboards/out/`. # # Run from anywhere inside the repo: # # ```bash -# uv run --with jupyter jupyter lab # interactive -# uv run --with jupyter,nbclient jupyter nbconvert --to notebook --execute \ -# artifacts/tech_report_v2/leaderboard/score_submissions.ipynb # headless +# uv sync --extra dev --extra analysis # use this environment in Jupyter or VS Code +# uv run jupytext --sync --execute \ +# artifacts/tech_report_v1/section_4_leaderboards/score_submissions.ipynb # ``` # # **Input format** — your submission data must follow this directory structure: @@ -51,16 +51,18 @@ # # %% +# Notebook cells intentionally import dependencies near their use. +# ruff: noqa: E402 import os -import pickle import sys from pathlib import Path # Run everything relative to the repo root so `scoring` imports and the # repo-relative paths in Section 2 work from any launch directory. REPO_ROOT = next( - p for p in [Path.cwd(), *Path.cwd().parents] - if (p / 'scoring' / 'score_submissions.py').exists() + p + for p in [Path.cwd(), *Path.cwd().parents] + if (p / 'scoring' / 'score_submissions.py').exists() ) os.chdir(REPO_ROOT) sys.path.insert(0, str(REPO_ROOT)) @@ -69,13 +71,11 @@ import pandas as pd import matplotlib.pyplot as plt from IPython.display import display -from tabulate import tabulate -from scoring import performance_profile, scoring_utils from scoring.config import ( - DEFAULT_TARGETS_PATH, - SELF_TUNING_RUNTIME_FACTOR, - WorkloadConfig, + DEFAULT_TARGETS_PATH, + SELF_TUNING_RUNTIME_FACTOR, + WorkloadConfig, ) @@ -88,11 +88,17 @@ # ── Required ────────────────────────────────────────────────────────────────── # Path to the directory that contains one sub-folder per submission # (relative to the repo root). -SUBMISSION_DIRECTORY = 'logs/self_tuning' +from artifacts.tech_report_v1.report_utils import ( + EXCLUDED_SUBMISSIONS, + section_output_dir, + submission_directory, +) + +SUBMISSION_DIRECTORY = str(submission_directory()) # Where to write output CSVs, plots, and LaTeX tables. Lives next to this # notebook rather than in the old top-level artifacts/leaderboard_v2/ tree. -OUTPUT_DIR = 'artifacts/tech_report_v1/section_4_leaderboards/out' +OUTPUT_DIR = str(section_output_dir('section_4_leaderboards')) # RESULTS_DIR: the notebook's explicit deliverables — LaTeX tables and plots # that go straight into the tech report. RESULTS_DIR = os.path.join(OUTPUT_DIR, 'results') @@ -108,434 +114,143 @@ # Comma-separated names to include (empty = include all). INCLUDE_SUBMISSIONS = '' # Comma-separated names to exclude. -EXCLUDE_SUBMISSIONS = 'muon_torch_jax_hps,muon_torch_jax_hps_achandr,muon_torch_jax_hps_lr_fix,muon_torch_replicated_jax_hps,muon_torch_replicated_torch_hps' +EXCLUDE_SUBMISSIONS = ','.join(EXCLUDED_SUBMISSIONS) # ── Scoring flags ───────────────────────────────────────────────────────────── # Set True to enforce the competition's strict trial/study count rules. STRICT = False # Set True when scoring the self-tuning ruleset. SELF_TUNING_RULESET = True -# Set True to compute and plot performance profiles after building summaries. -COMPUTE_PERFORMANCE_PROFILES = True # Benchmark version config: base/held-out workloads, targets, step hints. # The score divides by the number of base workloads in this config. WORKLOAD_CONFIG = WorkloadConfig.from_json(DEFAULT_TARGETS_PATH) # ── Performance profile parameters ──────────────────────────────────────────── -MIN_TAU = 1.0 -MAX_TAU = 4.0 # set None to auto-detect from data -NUM_POINTS = 100 +from artifacts.tech_report_v1.report_data import ( + DEFAULT_MIN_TAU, + DEFAULT_MAX_TAU, + DEFAULT_PROFILE_POINTS, +) + +MIN_TAU = DEFAULT_MIN_TAU +MAX_TAU = DEFAULT_MAX_TAU # set None to auto-detect from data +NUM_POINTS = DEFAULT_PROFILE_POINTS SCALE = 'linear' # 'linear' or 'log' # ── Caching (optional) ──────────────────────────────────────────────────────── # Save the parsed results dict so you can reload it later without re-parsing. -SAVE_RESULTS_TO = None # e.g. 'results.pkl' +SAVE_RESULTS_TO = None # e.g. 'results.pkl' # Load a previously saved results dict instead of re-parsing. LOAD_RESULTS_FROM = None # e.g. 'results.pkl' os.makedirs(RESULTS_DIR, exist_ok=True) -os.makedirs(SUMMARIES_DIR, exist_ok=True) # os.makedirs also creates BYPRODUCTS_DIR +os.makedirs( + SUMMARIES_DIR, exist_ok=True +) # os.makedirs also creates BYPRODUCTS_DIR -# %% [markdown] -# ## 2b. Submission Display-Name Map -# Edit the right-hand side to control how names appear in tables and plots.\nAny submission not listed here will be shown with its raw folder name. - # %% -# Maps raw folder names → display names used in tables, plots, and LaTeX output. -# Add or edit entries freely; unlisted names fall back to their raw folder name. -SUBMISSION_NAME_MAP = { - 'ademamix': 'AdEMAMix (PyTorch)', - 'cautious_nadamw': 'Cautious NAdamW (JAX)', - 'lion': 'Lion (PyTorch)', - 'muon': 'Muon (JAX)', - 'muon_torch': 'Muon (PyTorch)', - 'muon_torch_jax_hps': 'Muon (PyTorch, JAX HPs)', #exclude - 'muon_torch_jax_hps_achandr': 'Muon (PyTorch, JAX HPs, achandr)', # exclude - 'muon_torch_jax_hps_lr_fix': 'Muon (PyTorch, JAX HPs, LR Fix)', # exclude - 'muon_torch_replicated_jax_hps': 'Muon (Replicated, JAX HPs)', # exclude - 'muon_torch_replicated_torch_hps': 'Muon (Replicated, Torch HPs)', - 'nadamw': 'NAdamW (JAX)', - 'nadamw_baselinev05': 'NAdamW (Baseline AlgoPerf v0.5) (JAX)', - 'nadamw_resnet': 'NAdamW (Tuned for ResNet) (JAX)', - 'schedule_free_adamw': 'Schedule-Free AdamW (PyTorch)', - 'schedule_free_adamw_jax': 'Schedule-Free AdamW (JAX)', - 'schedule_free_adamw_jax_v2': 'Schedule-Free AdamW v2 (JAX)', - 'schedule_free_adamw_v2': 'Schedule-Free AdamW v2 (PyTorch)', - 'single_worker_diloco': 'Single Worker DiLoCo (JAX)', - 'single_worker_dilocov2': 'Single Worker DiLoCo v2 (JAX)', -} - -def pretty(name): - """Return the display name for a submission, falling back to the raw name.""" - return SUBMISSION_NAME_MAP.get(name, name) - -_PRETTY_TO_RAW = {v: k for k, v in SUBMISSION_NAME_MAP.items()} - -# Maps raw folder names → LaTeX \newcommand macros defined in the tech report -# (e.g. \newcommand{\sfadamw}{\textsc{Schedule-Free AdamW}\xspace}). Used only -# when rendering LaTeX tables (see `latex_name()` below); submissions without -# a defined macro fall back to their pretty display name. -SUBMISSION_LATEX_MACRO = { - 'ademamix': r'\ademamix', - 'cautious_nadamw': r'\cautiousnadamw', - 'lion': r'\lion', - 'muon': r'\muonjax', - 'muon_torch': r'\muonpt', - 'nadamw': r'\nadamw', - 'nadamw_baselinev05': r'\nadamwbase', - 'nadamw_resnet': r'\nadamwresnet', - 'schedule_free_adamw': r'\sfadamw', - 'schedule_free_adamw_jax': r'\sfadamwjax', - 'schedule_free_adamw_jax_v2': r'\sfadamwjaxii', - 'schedule_free_adamw_v2': r'\sfadamwii', - 'single_worker_diloco': r'\dilocosw', - 'single_worker_dilocov2': r'\dilocoswii', -} - -def latex_name(name): - """Return the LaTeX macro for a submission, given its pretty display - name (as used in the DataFrame indices built in Section 4). Falls back - to the pretty name itself if no macro is defined.""" - raw = _PRETTY_TO_RAW.get(name, name) - return SUBMISSION_LATEX_MACRO.get(raw, name) +from artifacts.tech_report_v1.report_utils import ( + latex_name, + save_figure, + SELECTED_SWEEP_SUBMISSIONS, +) +from artifacts.tech_report_v1.report_tables import ( + scores_to_latex, + workload_table, +) +from artifacts.tech_report_v1.report_data import ( + load_runs, + write_summaries, + score_runs, +) +from artifacts.tech_report_v1.section_4_leaderboards.plot_leaderboard_profile import ( + plot_performance_profiles, + plot_score_comparison, + plot_leaderboard_profile, +) # %% [markdown] -# ## 3. Helpers: Submission Summary & Leaderboard Score -# -# Imported directly from `scoring/score_submissions.py` so the notebook can never -# drift from the official pipeline. -# +# ## 4. Load & Summarize Submissions # %% -from scoring.score_submissions import ( - compute_leaderboard_score, - get_submission_summary as _get_submission_summary, +results = load_runs( + SUBMISSION_DIRECTORY, + include=INCLUDE_SUBMISSIONS, + exclude=EXCLUDE_SUBMISSIONS, + cache=Path(OUTPUT_DIR) / LOAD_RESULTS_FROM if LOAD_RESULTS_FROM else None, + save_cache=Path(OUTPUT_DIR) / SAVE_RESULTS_TO if SAVE_RESULTS_TO else None, +) +write_summaries(results, WORKLOAD_CONFIG, SUMMARIES_DIR) +SCORING_OPTIONS = dict( + min_tau=MIN_TAU, + max_tau=MAX_TAU, + num_points=NUM_POINTS, + scale=SCALE, + strict=STRICT, + self_tuning_ruleset=SELF_TUNING_RULESET, ) - - -def get_submission_summary(df): - """Canonical per-workload summary, bound to this notebook's config.""" - return _get_submission_summary(df, WORKLOAD_CONFIG) - - # %% [markdown] -# ## 3b. Plot Theme -# -# Sets a publication-quality matplotlib style and defines `plot_performance_profiles_styled`.\nWith 19 submissions the plot cycles through 10 colorblind-safe colors × 4 line styles so it stays readable in greyscale and print. +# ## 5. Performance Profiles, Leaderboard Scores & LaTeX Table # %% -import itertools -import math -import matplotlib as mpl - -# ── Colorblind-safe 10-color palette (Paul Tol "bright") ────────────────────── -_COLORS = [ - '#4477AA', # blue - '#EE6677', # red - '#228833', # green - '#CCBB44', # yellow - '#66CCEE', # cyan - '#AA3377', # purple - '#BBBBBB', # grey - '#EE7733', # orange - '#009988', # teal - '#CC3311', # vermillion -] -_LINE_STYLES = ['-', '--', '-.', ':'] - -# 10 solid lines, then 9 dashed, etc. — enough for 19 submissions. -_STYLE_CYCLE = list(itertools.islice( - ((c, ls) for ls in _LINE_STYLES for c in _COLORS), - 40, -)) - -# ── rcParams: tuned for a two-column tech-report (e.g. NeurIPS / ICML) ──────── -mpl.rcParams.update({ - 'figure.figsize': (9, 4.5), - 'figure.dpi': 150, - 'savefig.dpi': 300, - 'savefig.bbox': 'tight', - 'savefig.pad_inches': 0.05, - 'font.family': 'serif', - 'font.serif': ['Times New Roman', 'DejaVu Serif'], - 'font.size': 11, - 'axes.titlesize': 11, - 'axes.labelsize': 11, - 'xtick.labelsize': 10, - 'ytick.labelsize': 10, - 'legend.fontsize': 8.5, - 'legend.title_fontsize': 9, - 'legend.framealpha': 0.92, - 'legend.edgecolor': '#cccccc', - 'legend.borderpad': 0.5, - 'legend.labelspacing': 0.35, - 'axes.grid': True, - 'grid.alpha': 0.3, - 'grid.linestyle': '--', - 'grid.linewidth': 0.6, - 'axes.spines.top': False, - 'axes.spines.right': False, - 'axes.linewidth': 0.8, - 'lines.linewidth': 1.6, -}) - - -def plot_performance_profiles_styled( - perf_df, - df_col, - scale='linear', - save_dir=None, - figsize=(9, 5.5), - title=None, -): - """ - Publication-quality performance profile plot for a tech report. - - Each submission's (color, line-style) pair comes from the shared - SUBMISSION_STYLE registry (built in Section 4, once `results` is known), - so a submission always gets the same color in every figure in this - notebook — performance profiles and the Section 6 scatter plots alike. - Colors remain legible in greyscale and for colorblind readers. - The legend is placed below the plot. - Saves both a vector PDF and a 300-dpi PNG. - """ - fig, ax = plt.subplots(figsize=figsize) - - for submission in perf_df.index: - style = SUBMISSION_STYLE.get(submission, {'color': '#333333', 'linestyle': '-'}) - ax.plot( - perf_df.columns, - perf_df.loc[submission], - label=submission, - color=style['color'], - linestyle=style['linestyle'], - linewidth=1.6, - alpha=0.92, - ) - - ax.set_xlabel('Performance ratio τ (relative to best submission)') - ax.set_ylabel('Fraction of workloads solved ρ(τ)') - ax.set_xlim(perf_df.columns.min(), perf_df.columns.max()) - ax.set_ylim(-0.02, 1.05) - ax.yaxis.set_major_formatter(mpl.ticker.PercentFormatter(xmax=1, decimals=0)) - - if title: - ax.set_title(title, pad=8) - - # ── Legend below the axes ────────────────────────────────────────────────── - n = len(perf_df.index) - ncol = max(3, math.ceil(n / 4)) # ~4 rows for any submission count - ax.legend( - loc='upper center', - bbox_to_anchor=(0.5, -0.22), - ncol=ncol, - borderaxespad=0, - frameon=True, - handlelength=2.0, - handleheight=0.9, - columnspacing=1.0, - labelspacing=0.35, - ) - - # Reserve vertical space proportional to the number of legend rows so the - # legend never overlaps the x-axis label. The legend is anchored 0.22 - # axes-heights below the axes (above); the fixed +40pt buffer covers the - # x-axis ticks, tick labels, and axis label that sit in that same gap. - n_rows = math.ceil(n / ncol) - pts_per_row = mpl.rcParams['legend.fontsize'] * 1.55 - fig_height_pts = figsize[1] * 72 - legend_frac = (n_rows * pts_per_row + 40) / fig_height_pts - fig.subplots_adjust( - left=0.07, - right=0.98, - top=0.91 if title else 0.97, - bottom=min(0.14 + legend_frac, 0.58), - ) - - if save_dir: - base = os.path.join(save_dir, f'performance_profile_by_{df_col}') - fig.savefig(f'{base}.pdf', format='pdf') - fig.savefig(f'{base}.png', format='png', dpi=300) - print(f'Saved → {base}.pdf / .png') - - return fig, ax +if not STRICT: + print( + 'WARNING: STRICT=False relaxes criteria on held-out workloads, ' + 'trial counts, and study counts. Scores may not match official ' + 'competition scoring. Set STRICT=True to enforce all rules.' + ) + +performance_profile_df, scores, ttt = score_runs( + results, + WORKLOAD_CONFIG, + BYPRODUCTS_DIR, + time_col='score', + artifact_suffix='', + **SCORING_OPTIONS, +) +# Save profile CSV for reuse without re-running the full pipeline. +profile_csv = os.path.join(BYPRODUCTS_DIR, 'performance_profile_score.csv') +performance_profile_df.to_csv(profile_csv) -# %% [markdown] -# ## 4. Load & Summarize Submissions +# ── Styled plot ──────────────────────────────────────────────────────────── +fig, ax = plot_performance_profiles( + performance_profile_df, + title='AlgoPerf: Self-Tuning Ruleset Performance Profiles', +) +save_figure( + fig, + Path(RESULTS_DIR) / 'performance_profile_by_score', +) +plt.show() -# %% -results = {} - -_exclude = {s.strip() for s in EXCLUDE_SUBMISSIONS.split(',')} - {''} -_include_raw = {s.strip() for s in INCLUDE_SUBMISSIONS.split(',')} - {''} - -print(f'Excluding ({len(_exclude)}): {sorted(_exclude) or "(none)"}') -print(f'Including ({len(_include_raw)}): {sorted(_include_raw) or "(all)"}') - -def _is_included(raw_name): - if raw_name in _exclude: - return False - if _include_raw and raw_name not in _include_raw: - return False - return True - -if LOAD_RESULTS_FROM: - load_path = os.path.join(OUTPUT_DIR, LOAD_RESULTS_FROM) - print(f'\nLoading cached results from {load_path}') - with open(load_path, 'rb') as f: - cached = pickle.load(f) - _pretty_to_raw = {v: k for k, v in SUBMISSION_NAME_MAP.items()} - for name, df in cached.items(): - raw = _pretty_to_raw.get(name, name) - if _is_included(raw): - results[name] = df - print(f' ✓ {name}') - else: - print(f' ✗ {name} ← excluded') -else: - all_submission_dirs = sorted(os.listdir(SUBMISSION_DIRECTORY)) - print(f'\nFound {len(all_submission_dirs)} folders:') - for s in all_submission_dirs: - tag = '✓' if _is_included(s) else '✗ ← excluded' - print(f' {tag} {s}') - print() - - for submission in all_submission_dirs: - if not _is_included(submission): - continue - print(f'\n=== {pretty(submission)} ({submission}) ===') - experiment_path = os.path.join(SUBMISSION_DIRECTORY, submission) - df = scoring_utils.get_experiment_df(experiment_path) - results[pretty(submission)] = df - - summary_df = get_submission_summary(df) - summary_df.to_csv(os.path.join(SUMMARIES_DIR, f'{submission}_summary.csv')) - # display(summary_df) - - if SAVE_RESULTS_TO: - save_path = os.path.join(OUTPUT_DIR, SAVE_RESULTS_TO) - with open(save_path, 'wb') as f: - pickle.dump(results, f) - print(f'Results cached to {save_path}') - -print(f'\nLoaded {len(results)} submission(s): {list(results.keys())}') - -# ── Shared color/linestyle per submission ────────────────────────────────── -# Assigned once, from a fixed alphabetical order, so every figure in this -# notebook (performance profiles in Sections 5-7, scatter plots in Section 6) -# uses the same color for the same submission. -SUBMISSION_STYLE = { - name: {'color': color, 'linestyle': linestyle} - for name, (color, linestyle) in zip(sorted(results.keys()), _STYLE_CYCLE) -} +# ── Scores table ────────────────────────────────────────────────────────── +scores_path = os.path.join(BYPRODUCTS_DIR, 'scores.csv') +scores.to_csv(scores_path) -# %% [markdown] -# ## 5. Performance Profiles, Leaderboard Scores & LaTeX Table +print('\n--- Leaderboard Scores ---') +display(scores.sort_values('score', ascending=False)) +print(f'Saved to {scores_path}') -# %% -if not STRICT: - print( - 'WARNING: STRICT=False relaxes criteria on held-out workloads, ' - 'trial counts, and study counts. Scores may not match official ' - 'competition scoring. Set STRICT=True to enforce all rules.' - ) - -if COMPUTE_PERFORMANCE_PROFILES: - performance_profile_df = performance_profile.compute_performance_profiles( - results, - WORKLOAD_CONFIG, - time_col='score', - min_tau=MIN_TAU, - max_tau=MAX_TAU, - reference_submission_tag=None, - num_points=NUM_POINTS, - scale=SCALE, - verbosity=0, - self_tuning_ruleset=SELF_TUNING_RULESET, - strict=STRICT, - output_dir=BYPRODUCTS_DIR, - ) - - # Save profile CSV for reuse without re-running the full pipeline. - profile_csv = os.path.join(BYPRODUCTS_DIR, 'performance_profile_score.csv') - performance_profile_df.to_csv(profile_csv) - - # ── Styled plot ──────────────────────────────────────────────────────────── - fig, ax = plot_performance_profiles_styled( - performance_profile_df, - 'score', - scale=SCALE, - save_dir=RESULTS_DIR, - title='AlgoPerf: Self-Tuning Ruleset Performance Profiles', - ) - plt.show() - - # ── Scores table ────────────────────────────────────────────────────────── - scores = compute_leaderboard_score(performance_profile_df) - scores_path = os.path.join(BYPRODUCTS_DIR, 'scores.csv') - scores.to_csv(scores_path) - - print('\n--- Leaderboard Scores ---') - display(scores.sort_values('score', ascending=False)) - print(f'Saved to {scores_path}') - - # ── LaTeX table ──────────────────────────────────────────────────────────── - def scores_to_latex(scores_df, caption='AlgoPerf Self-Tuning Leaderboard', label='tab:scores'): - """ - Render a leaderboard scores DataFrame as a LaTeX table. - Submission names come from the DataFrame index (pretty-named), rendered - via their `latex_name()` \\newcommand macro. - Scores are formatted to 4 decimal places; best score is bolded. - """ - df = scores_df.sort_values('score', ascending=False).copy() - df['rank'] = range(1, len(df) + 1) - - best_score = df['score'].iloc[0] - - rows = [] - for rank, (name, row) in enumerate(df.iterrows(), start=1): - score_str = f'{row["score"]:.4f}' - if row['score'] == best_score: - score_str = r'\textbf{' + score_str + '}' - rows.append(f' {rank} & {latex_name(name)} & {score_str} \\\\') - - body = '\n'.join(rows) - - latex = ( - r'\begin{table}[h]' + '\n' - r' \centering' + '\n' - r' \caption{' + caption + '}\n' - r' \label{' + label + '}\n' - r' \begin{tabular}{rlr}' + '\n' - r' \toprule' + '\n' - r' Rank & Submission & Score \\' + '\n' - r' \midrule' + '\n' - + body + '\n' - r' \bottomrule' + '\n' - r' \end{tabular}' + '\n' - r'\end{table}' - ) - return latex - - - latex_table = scores_to_latex(scores) - print(latex_table) - - latex_path = os.path.join(RESULTS_DIR, 'scores_table.tex') - with open(latex_path, 'w') as f: - f.write(latex_table) - print(f'\nSaved to {latex_path}') + +# ── LaTeX table ──────────────────────────────────────────────────────────── +latex_table = scores_to_latex(scores) +print(latex_table) + +latex_path = os.path.join(RESULTS_DIR, 'scores_table.tex') +with open(latex_path, 'w') as f: + f.write(latex_table) +print(f'\nSaved to {latex_path}') # %% [markdown] # ## 5b. Time-to-Target Table # Shows the median time each submission took to reach the validation target on each workload, as a fraction of that workload's maximum allowed runtime.\n`inf` means the target was not reached within the run. # %% -ttt = pd.read_csv(os.path.join(BYPRODUCTS_DIR, 'time_to_targets.csv'), index_col=0) + # ── Per-workload max time budget ─────────────────────────────────────────────── # `max_allowed_runtime_sec` comes straight from WORKLOAD_CONFIG (i.e. @@ -545,72 +260,41 @@ def scores_to_latex(scores_df, caption='AlgoPerf Self-Tuning Leaderboard', label # Format: finite values as a fraction (2 decimals) of the workload's time # budget, inf as em-dash. def _fmt(workload, v): - if pd.isna(v) or v == float('inf'): - return r'\textemdash{}' - budget = WORKLOAD_CONFIG.max_runtime_sec( - workload, self_tuning_ruleset=SELF_TUNING_RULESET - ) - return f'{v / budget:.2f}' + if pd.isna(v) or v == float('inf'): + return r'\textemdash{}' + budget = WORKLOAD_CONFIG.max_runtime_sec( + workload, self_tuning_ruleset=SELF_TUNING_RULESET + ) + return f'{v / budget:.2f}' + ttt_display = ttt.apply(lambda col: col.map(lambda v: _fmt(col.name, v))) ttt_display.index.name = 'Submission' # Order rows by wall-clock leaderboard score (best first), matching Section 5. -ttt_display = ttt_display.loc[scores.sort_values('score', ascending=False).index] +ttt_display = ttt_display.loc[ + scores.sort_values('score', ascending=False).index +] print('--- Time to Target (fraction of max runtime budget) ---') display(ttt_display) -# ── Workload column → LaTeX macro ───────────────────────────────────────────── -_WL_MACRO = { - 'criteo1tb': r'\criteo', - 'fastmri': r'\fastmri', - 'finewebedu_lm': r'\finewebedu', - 'imagenet_resnet': r'\resnet', - 'imagenet_vit': r'\vit', - 'librispeech_conformer': r'\conformer', - 'librispeech_deepspeech': r'\deepspeech', - 'ogbg': r'\ogbg', - 'wmt': r'\wmt', -} - -workloads = list(ttt.columns) -col_spec = 'l' + 'r' * len(workloads) -wl_headers = ' & '.join(_WL_MACRO.get(w, w) for w in workloads) - -rows = [] -for name, row in ttt_display.iterrows(): - # % is a LaTeX comment character; escape it so a value like "34%" - # doesn't swallow the rest of the row. - cells = [str(v).replace('%', r'\%') for v in row] - rows.append(' ' + latex_name(name) + ' & ' + ' & '.join(cells) + r' \\') _budget_caption = ( - r"Time to target as a fraction of each workload's self-tuning-ruleset " - rf'time budget (${SELF_TUNING_RUNTIME_FACTOR:g}\times$ the external-tuning maximum allowed runtime).' - if SELF_TUNING_RULESET else - r"Time to target as a fraction of each workload's maximum allowed runtime." + r"Time to target as a fraction of each workload's self-tuning-ruleset " + rf'time budget (${SELF_TUNING_RUNTIME_FACTOR:g}\times$ the external-tuning maximum allowed runtime).' + if SELF_TUNING_RULESET + else r"Time to target as a fraction of each workload's maximum allowed runtime." ) -latex = '\n'.join([ - r'\begin{table}[htbp]', - r' \centering', - r' \caption{' + _budget_caption + r' \textemdash{} = target not reached.}', - r' \label{tab:time_to_target}', - r' \resizebox{\textwidth}{!}{%', - r' \begin{tabular}{' + col_spec + '}', - r' \toprule', - r' Submission & ' + wl_headers + r' \\', - r' \midrule', - *rows, - r' \bottomrule', - r' \end{tabular}%', - r' }', - r'\end{table}', -]) +latex = workload_table( + ttt_display, + caption=_budget_caption + r' \textemdash{} = target not reached.', + label='tab:time_to_target', +) ttt_latex_path = os.path.join(RESULTS_DIR, 'time_to_target_table.tex') with open(ttt_latex_path, 'w') as f: - f.write(latex) + f.write(latex) print(f'\nLaTeX saved → {ttt_latex_path}') @@ -634,50 +318,43 @@ def _fmt(workload, v): # %% # ── Step-based performance profiles and leaderboard scores ──────────────────── -performance_profile_steps_df = performance_profile.compute_performance_profiles( - results, - WORKLOAD_CONFIG, - time_col='global_step', - min_tau=MIN_TAU, - max_tau=MAX_TAU, - reference_submission_tag=None, - num_points=NUM_POINTS, - scale=SCALE, - verbosity=0, - self_tuning_ruleset=SELF_TUNING_RULESET, - strict=STRICT, - output_dir=BYPRODUCTS_DIR, # writes time_to_targets_steps.csv - artifact_suffix='_steps', +performance_profile_steps_df, scores_steps, stt = score_runs( + results, + WORKLOAD_CONFIG, + BYPRODUCTS_DIR, + time_col='global_step', + artifact_suffix='_steps', + **SCORING_OPTIONS, ) performance_profile_steps_df.to_csv( - os.path.join(BYPRODUCTS_DIR, 'performance_profile_global_step.csv') + os.path.join(BYPRODUCTS_DIR, 'performance_profile_global_step.csv') ) -fig, ax = plot_performance_profiles_styled( - performance_profile_steps_df, - 'global_step', - scale=SCALE, - save_dir=RESULTS_DIR, - title='AlgoPerf: Self-Tuning Performance Profiles (steps to target)', +fig, ax = plot_performance_profiles( + performance_profile_steps_df, + title='AlgoPerf: Self-Tuning Performance Profiles (steps to target)', +) +save_figure( + fig, + Path(RESULTS_DIR) / 'performance_profile_by_global_step', ) plt.show() -scores_steps = compute_leaderboard_score(performance_profile_steps_df) scores_steps.to_csv(os.path.join(BYPRODUCTS_DIR, 'scores_steps.csv')) print('--- Step-based Leaderboard Scores ---') display(scores_steps.sort_values('score', ascending=False)) # ── LaTeX table ──────────────────────────────────────────────────────────── scores_steps_latex = scores_to_latex( - scores_steps, - caption='AlgoPerf Self-Tuning Leaderboard (steps to target)', - label='tab:scores_steps', + scores_steps, + caption='AlgoPerf Self-Tuning Leaderboard (steps to target)', + label='tab:scores_steps', ) print(scores_steps_latex) scores_steps_latex_path = os.path.join(RESULTS_DIR, 'scores_steps_table.tex') with open(scores_steps_latex_path, 'w') as f: - f.write(scores_steps_latex) + f.write(scores_steps_latex) print(f'\nSaved to {scores_steps_latex_path}') # %% @@ -685,44 +362,51 @@ def _fmt(workload, v): # Both use the same performance-profile scoring; only the notion of training # time differs (seconds vs. optimizer steps to target). rank_shift captures # how much a submission's rank changes between the two. -cmp = pd.DataFrame({ +cmp = pd.DataFrame( + { 'wallclock': scores['score'], 'steps': scores_steps['score'], -}) -cmp['rank_wallclock'] = cmp.wallclock.rank(ascending=False, method='min').astype(int) -cmp['rank_steps'] = cmp.steps.rank(ascending=False, method='min').astype(int) -cmp['rank_shift'] = cmp.rank_wallclock - cmp.rank_steps + } +) +cmp['rank_wallclock'] = cmp.wallclock.rank( + ascending=False, method='min' +).astype(int) +cmp['rank_steps'] = cmp.steps.rank(ascending=False, method='min').astype(int) +cmp['rank_shift'] = cmp.rank_wallclock - cmp.rank_steps cmp = cmp.sort_values('wallclock', ascending=False) cmp_csv_path = os.path.join(BYPRODUCTS_DIR, 'scores_wallclock_vs_steps.csv') cmp.to_csv(cmp_csv_path) -print(f'--- Wall-clock vs. Step-based Leaderboard Comparison ---') +print('--- Wall-clock vs. Step-based Leaderboard Comparison ---') display(cmp.round(4)) print(f'Saved to {cmp_csv_path}') + def _fmt_shift(d): - if d > 0: - return rf'$\uparrow${d}' - if d < 0: - return rf'$\downarrow${-d}' - return '--' + if d > 0: + return rf'$\uparrow${d}' + if d < 0: + return rf'$\downarrow${-d}' + return '--' -_best_wall = cmp.wallclock.max() + +_best_wall = cmp.wallclock.max() _best_steps = cmp.steps.max() _cmp_rows = [] for name, row in cmp.iterrows(): - wall = f'{row.wallclock:.4f}' - steps = f'{row.steps:.4f}' - if row.wallclock == _best_wall: - wall = r'\textbf{' + wall + '}' - if row.steps == _best_steps: - steps = r'\textbf{' + steps + '}' - _cmp_rows.append( - f' {latex_name(name)} & {wall} & {int(row.rank_wallclock)} & {steps} & ' - f'{int(row.rank_steps)} & {_fmt_shift(int(row.rank_shift))} ' + r'\\' - ) - -cmp_latex = '\n'.join([ + wall = f'{row.wallclock:.4f}' + steps = f'{row.steps:.4f}' + if row.wallclock == _best_wall: + wall = r'\textbf{' + wall + '}' + if row.steps == _best_steps: + steps = r'\textbf{' + steps + '}' + _cmp_rows.append( + f' {latex_name(name)} & {wall} & {int(row.rank_wallclock)} & {steps} & ' + f'{int(row.rank_steps)} & {_fmt_shift(int(row.rank_shift))} ' + r'\\' + ) + +cmp_latex = '\n'.join( + [ r'\begin{table}[htbp]', r' \centering', r' \caption{Wall-clock vs.\ step-based benchmark scores. Both use the same' @@ -740,158 +424,57 @@ def _fmt_shift(d): r' \bottomrule', r' \end{tabular}', r'\end{table}', -]) + ] +) -leaderboard_steps_latex_path = os.path.join(RESULTS_DIR, 'scores_comparison_time_vs_steps.tex') +leaderboard_steps_latex_path = os.path.join( + RESULTS_DIR, 'scores_comparison_time_vs_steps.tex' +) with open(leaderboard_steps_latex_path, 'w') as f: - f.write(cmp_latex) + f.write(cmp_latex) print(f'\nSaved to {leaderboard_steps_latex_path}') # %% # ── Steps-to-target table (analog of the time-to-target table) ──────────────── -stt = pd.read_csv(os.path.join(BYPRODUCTS_DIR, 'time_to_targets_steps.csv'), index_col=0) + def _fmt_steps(v): - if pd.isna(v) or v == float('inf'): - return r'\textemdash{}' - return f'{v:,.0f}' + if pd.isna(v) or v == float('inf'): + return r'\textemdash{}' + return f'{v:,.0f}' + stt_display = stt.map(_fmt_steps) stt_display.index.name = 'Submission' # Order rows by step-based leaderboard score (best first), matching this # section's own leaderboard above. -stt_display = stt_display.loc[scores_steps.sort_values('score', ascending=False).index] +stt_display = stt_display.loc[ + scores_steps.sort_values('score', ascending=False).index +] display(stt_display) -_stt_workloads = list(stt.columns) -_stt_col_spec = 'l' + 'r' * len(_stt_workloads) -_stt_headers = ' & '.join(_WL_MACRO.get(w, w) for w in _stt_workloads) - -_stt_rows = [] -for name, row in stt_display.iterrows(): - _stt_rows.append(' ' + latex_name(name) + ' & ' + ' & '.join(str(v) for v in row) + r' \\') - -stt_latex = '\n'.join([ - r'\begin{table}[htbp]', - r' \centering', - r' \caption{Median number of optimizer steps to reach the validation target.' - r' \textemdash{} = target not reached. Submissions choose their own batch' - r' sizes, so step counts compare optimizer updates, not examples seen.}', - r' \label{tab:steps_to_target}', - r' \resizebox{\textwidth}{!}{%', - r' \begin{tabular}{' + _stt_col_spec + '}', - r' \toprule', - r' Submission & ' + _stt_headers + r' \\', - r' \midrule', - *_stt_rows, - r' \bottomrule', - r' \end{tabular}%', - r' }', - r'\end{table}', -]) +stt_latex = workload_table( + stt_display, + caption=r'Median number of optimizer steps to reach the validation target.' + r' \textemdash{} = target not reached. Submissions choose their own batch' + r' sizes, so step counts compare optimizer updates, not examples seen.', + label='tab:steps_to_target', +) with open(os.path.join(RESULTS_DIR, 'steps_to_target_table.tex'), 'w') as f: - f.write(stt_latex) + f.write(stt_latex) print('LaTeX saved -> steps_to_target_table.tex') # %% -# ── Scatter: wall-clock score vs. step-based score ──────────────────────────── -# Reuses `cmp` (built above for the wall-clock-vs-steps comparison table). -# Color comes from the shared SUBMISSION_STYLE registry (matches the -# performance-profile plots); marker shape is one shape per algorithm family -# (_FAMILIES), so points from the same algorithm are visually grouped even -# before reading the legend. Dark marker edges keep light fills legible on -# white. -_FAMILIES = [ - ('Schedule-Free AdamW', 'o', [ - 'Schedule-Free AdamW v2 (PyTorch)', - 'Schedule-Free AdamW v2 (JAX)', - 'Schedule-Free AdamW (PyTorch)', - 'Schedule-Free AdamW (JAX)', - ]), - ('NAdamW', 's', [ - 'NAdamW (Baseline AlgoPerf v0.5) (JAX)', - 'NAdamW (JAX)', - 'NAdamW (Tuned for ResNet) (JAX)', - 'Cautious NAdamW (JAX)', - ]), - ('Muon', 'D', ['Muon (PyTorch)', 'Muon (JAX)']), - ('Single Worker DiLoCo', '^', [ - 'Single Worker DiLoCo (JAX)', - 'Single Worker DiLoCo v2 (JAX)', - ]), - ('AdEMAMix', 'P', ['AdEMAMix (PyTorch)']), - ('Lion', 'X', ['Lion (PyTorch)']), -] -_FAMILY_MARKER = { - name: marker - for _, marker, members in _FAMILIES - for name in members -} - -fig, ax = plt.subplots(figsize=(9.5, 5.6)) - -lims = (0.10, 0.60) -ax.plot(lims, lims, linestyle='--', color='#999999', linewidth=1.0, zorder=1) -ax.text(0.135, 0.575, 'wall-clock advantage\n(lower cost per step)', - ha='left', va='top', fontsize=8.5, style='italic', color='#777777') -ax.text(0.575, 0.135, 'step advantage\n(fewer steps to target)', - ha='right', va='bottom', fontsize=8.5, style='italic', color='#777777') - -_scatter_handles = {} -for name, row in cmp.iterrows(): - _scatter_handles[name] = ax.scatter( - row.steps, row.wallclock, - color=SUBMISSION_STYLE[name]['color'], - marker=_FAMILY_MARKER.get(name, 'o'), - s=58, linewidths=0.6, edgecolors='#333333', zorder=3, label=name, - ) - -_annotate = { - 'Schedule-Free AdamW v2 (PyTorch)': (-8, 2, 'right'), - 'AdEMAMix (PyTorch)': (8, 3, 'left'), - 'Muon (JAX)': (8, -3, 'left'), - 'Muon (PyTorch)': (8, -3, 'left'), - 'NAdamW (JAX)': (8, 1, 'left'), - 'Single Worker DiLoCo (JAX)': (-2, 9, 'left'), -} -for name, (dx, dy, ha) in _annotate.items(): - row = cmp.loc[name] - ax.annotate(name, (row.steps, row.wallclock), xytext=(dx, dy), - textcoords='offset points', fontsize=8, ha=ha, - color='#333333') - -ax.set_xlim(lims) -ax.set_ylim(lims) -ax.set_aspect('equal') -ax.set_xlabel('Step-based benchmark score') -ax.set_ylabel('Wall-clock benchmark score') -ax.set_title('Wall-clock vs. step-based benchmark scores', pad=8) - -_family_legend_order = [ - name - for _, _, members in _FAMILIES - for name in members - if name in _scatter_handles -] -_family_legend_order.extend( - name for name in cmp.index if name not in _family_legend_order +fig = plot_score_comparison(cmp) +save_figure( + fig, + Path(RESULTS_DIR) / 'wallclock_vs_steps', ) -ax.legend( - [_scatter_handles[name] for name in _family_legend_order], - _family_legend_order, - loc='center left', bbox_to_anchor=(1.03, 0.5), ncol=1, - borderaxespad=0, frameon=True, handlelength=1.0, labelspacing=0.5, -) -fig.subplots_adjust(left=0.09, right=0.62, top=0.93, bottom=0.11) - -for ext in ('pdf', 'png'): - fig.savefig(os.path.join(RESULTS_DIR, f'wallclock_vs_steps.{ext}'), - format=ext, dpi=300) -print('Saved -> wallclock_vs_steps.pdf / .png') -plt.show() +display(fig) +plt.close(fig) # %% [markdown] @@ -919,45 +502,40 @@ def _fmt_steps(v): _RELAXATION_LABEL_LATEX = _RELAXATION_LABEL.replace('%', r'\%') RELAXED_WORKLOAD_CONFIG = WORKLOAD_CONFIG.with_target_relaxations( - {'all': TARGET_RELAXATION_FRACTION} + {'all': TARGET_RELAXATION_FRACTION} ) -performance_profile_relaxed_df = performance_profile.compute_performance_profiles( - results, - RELAXED_WORKLOAD_CONFIG, - time_col='score', - min_tau=MIN_TAU, - max_tau=MAX_TAU, - reference_submission_tag=None, - num_points=NUM_POINTS, - scale=SCALE, - verbosity=0, - self_tuning_ruleset=SELF_TUNING_RULESET, - strict=STRICT, - output_dir=BYPRODUCTS_DIR, # writes time_to_targets_relaxed.csv - artifact_suffix='_relaxed', +performance_profile_relaxed_df, scores_relaxed, ttt_relaxed = score_runs( + results, + RELAXED_WORKLOAD_CONFIG, + BYPRODUCTS_DIR, + time_col='score', + artifact_suffix='_relaxed', + **SCORING_OPTIONS, ) performance_profile_relaxed_df.to_csv( - os.path.join(BYPRODUCTS_DIR, 'performance_profile_score_relaxed.csv') + os.path.join(BYPRODUCTS_DIR, 'performance_profile_score_relaxed.csv') ) # ── Styled plot ──────────────────────────────────────────────────────────── -fig, ax = plot_performance_profiles_styled( - performance_profile_relaxed_df, - 'score_relaxed', - scale=SCALE, - save_dir=RESULTS_DIR, - title=f'AlgoPerf: Self-Tuning Ruleset Performance Profiles ' - f'(targets relaxed {TARGET_RELAXATION_FRACTION:.0%})', +fig, ax = plot_performance_profiles( + performance_profile_relaxed_df, + title=f'AlgoPerf: Self-Tuning Ruleset Performance Profiles ' + f'(targets relaxed {TARGET_RELAXATION_FRACTION:.0%})', +) +save_figure( + fig, + Path(RESULTS_DIR) / 'performance_profile_by_score_relaxed', ) plt.show() # ── Relaxed scores table ─────────────────────────────────────────────────── -scores_relaxed = compute_leaderboard_score(performance_profile_relaxed_df) scores_relaxed_path = os.path.join(BYPRODUCTS_DIR, 'scores_relaxed.csv') scores_relaxed.to_csv(scores_relaxed_path) -print(f'\n--- Leaderboard Scores (targets relaxed {TARGET_RELAXATION_FRACTION:.0%}) ---') +print( + f'\n--- Leaderboard Scores (targets relaxed {TARGET_RELAXATION_FRACTION:.0%}) ---' +) display(scores_relaxed.sort_values('score', ascending=False)) print(f'Saved to {scores_relaxed_path}') @@ -965,23 +543,23 @@ def _fmt_steps(v): # Keep the score and rank movement in one auditable DataFrame, then use it for # both the CSV byproduct and the report table. Positive rank_shift means that a # submission moves up when targets are relaxed. -relaxed_cmp = pd.DataFrame({ +relaxed_cmp = pd.DataFrame( + { 'standard_score': scores['score'], 'relaxed_score': scores_relaxed['score'], -}) -relaxed_cmp['standard_rank'] = ( - relaxed_cmp.standard_score.rank(ascending=False, method='min').astype(int) -) -relaxed_cmp['relaxed_rank'] = ( - relaxed_cmp.relaxed_score.rank(ascending=False, method='min').astype(int) -) -relaxed_cmp['rank_shift'] = ( - relaxed_cmp.standard_rank - relaxed_cmp.relaxed_rank + } ) +relaxed_cmp['standard_rank'] = relaxed_cmp.standard_score.rank( + ascending=False, method='min' +).astype(int) +relaxed_cmp['relaxed_rank'] = relaxed_cmp.relaxed_score.rank( + ascending=False, method='min' +).astype(int) +relaxed_cmp['rank_shift'] = relaxed_cmp.standard_rank - relaxed_cmp.relaxed_rank relaxed_cmp = relaxed_cmp.sort_values('relaxed_rank') relaxed_cmp_path = os.path.join( - BYPRODUCTS_DIR, 'scores_standard_vs_relaxed.csv' + BYPRODUCTS_DIR, 'scores_standard_vs_relaxed.csv' ) relaxed_cmp.to_csv(relaxed_cmp_path) print(f'Saved to {relaxed_cmp_path}') @@ -990,23 +568,24 @@ def _fmt_steps(v): _best_relaxed = relaxed_cmp.relaxed_score.max() _relaxed_cmp_rows = [] for name, row in relaxed_cmp.iterrows(): - standard_score = f'{row.standard_score:.4f}' - relaxed_score = f'{row.relaxed_score:.4f}' - if row.standard_score == _best_standard: - standard_score = r'\textbf{' + standard_score + '}' - if row.relaxed_score == _best_relaxed: - relaxed_score = r'\textbf{' + relaxed_score + '}' - _relaxed_cmp_rows.append( - f' {latex_name(name)} & {standard_score} & ' - f'{int(row.standard_rank)} & {relaxed_score} & ' - f'{int(row.relaxed_rank)} & {_fmt_shift(int(row.rank_shift))} ' - + r'\\' - ) - -scores_relaxed_latex = '\n'.join([ + standard_score = f'{row.standard_score:.4f}' + relaxed_score = f'{row.relaxed_score:.4f}' + if row.standard_score == _best_standard: + standard_score = r'\textbf{' + standard_score + '}' + if row.relaxed_score == _best_relaxed: + relaxed_score = r'\textbf{' + relaxed_score + '}' + _relaxed_cmp_rows.append( + f' {latex_name(name)} & {standard_score} & ' + f'{int(row.standard_rank)} & {relaxed_score} & ' + f'{int(row.relaxed_rank)} & {_fmt_shift(int(row.rank_shift))} ' + r'\\' + ) + +scores_relaxed_latex = '\n'.join( + [ r'\begin{table}[htbp]', r' \centering', - r' \caption{Standard vs.\ ' + _RELAXATION_LABEL_LATEX + r' \caption{Standard vs.\ ' + + _RELAXATION_LABEL_LATEX + r' relaxed-target AlgoPerf self-tuning leaderboard. $\Delta$ is the rank' + r' change after relaxing targets.}', r' \label{tab:scores_relaxed}', @@ -1020,101 +599,151 @@ def _fmt_steps(v): r' \bottomrule', r' \end{tabular}', r'\end{table}', -]) + ] +) print(scores_relaxed_latex) -scores_relaxed_latex_path = os.path.join(RESULTS_DIR, 'scores_relaxed_table.tex') +scores_relaxed_latex_path = os.path.join( + RESULTS_DIR, 'scores_relaxed_table.tex' +) with open(scores_relaxed_latex_path, 'w') as f: - f.write(scores_relaxed_latex) + f.write(scores_relaxed_latex) print(f'\nSaved to {scores_relaxed_latex_path}') # %% # ── Time-to-Target Table (relaxed targets) ───────────────────────────────── # Relaxed-target analog of Section 5b's time-to-target table: same _fmt() -# (fraction of the workload's time budget) and _WL_MACRO, against +# (fraction of the workload's time budget), against # time_to_targets_relaxed.csv instead of the official time_to_targets.csv. -ttt_relaxed = pd.read_csv( - os.path.join(BYPRODUCTS_DIR, 'time_to_targets_relaxed.csv'), index_col=0 -) -ttt_relaxed_display = ttt_relaxed.apply(lambda col: col.map(lambda v: _fmt(col.name, v))) +ttt_relaxed_display = ttt_relaxed.apply( + lambda col: col.map(lambda v: _fmt(col.name, v)) +) ttt_relaxed_display.index.name = 'Submission' # Order rows by relaxed leaderboard score (best first), matching this # section's own leaderboard above. ttt_relaxed_display = ttt_relaxed_display.loc[ - scores_relaxed.sort_values('score', ascending=False).index + scores_relaxed.sort_values('score', ascending=False).index ] -print(f'--- Time to Target, targets relaxed {TARGET_RELAXATION_FRACTION:.0%} ' - f'(fraction of max runtime budget) ---') +print( + f'--- Time to Target, targets relaxed {TARGET_RELAXATION_FRACTION:.0%} ' + f'(fraction of max runtime budget) ---' +) display(ttt_relaxed_display) -_relaxed_workloads = list(ttt_relaxed.columns) -_relaxed_col_spec = 'l' + 'r' * len(_relaxed_workloads) -_relaxed_wl_headers = ' & '.join(_WL_MACRO.get(w, w) for w in _relaxed_workloads) # A target is newly reached when its standard time-to-target is non-finite but # its relaxed time-to-target is finite. Persist this mask so the bolding in the # LaTeX table is mechanically checkable without parsing LaTeX. def _target_reached(v): - return pd.notna(v) and np.isfinite(v) + return pd.notna(v) and np.isfinite(v) -_newly_reached_relaxed = ( - ~ttt.map(_target_reached) & ttt_relaxed.map(_target_reached) +_newly_reached_relaxed = ~ttt.map(_target_reached) & ttt_relaxed.map( + _target_reached ) _newly_reached_path = os.path.join( - BYPRODUCTS_DIR, 'newly_reached_targets_relaxed.csv' + BYPRODUCTS_DIR, 'newly_reached_targets_relaxed.csv' ) _newly_reached_relaxed.to_csv(_newly_reached_path) print( - f'Newly reached targets: {_newly_reached_relaxed.to_numpy().sum()} ' - f'(saved to {_newly_reached_path})' + f'Newly reached targets: {_newly_reached_relaxed.to_numpy().sum()} ' + f'(saved to {_newly_reached_path})' ) -_relaxed_ttt_rows = [] -for name, row in ttt_relaxed_display.iterrows(): - cells = [] - for workload, value in row.items(): - cell = str(value).replace('%', r'\%') - if _newly_reached_relaxed.loc[name, workload]: - cell = r'\textbf{' + cell + '}' - cells.append(cell) - _relaxed_ttt_rows.append(' ' + latex_name(name) + ' & ' + ' & '.join(cells) + r' \\') - _relaxed_budget_caption = ( - rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a ' - r"fraction of each workload's self-tuning-ruleset time budget " - rf'(${SELF_TUNING_RUNTIME_FACTOR:g}\times$ the external-tuning maximum allowed runtime).' - if SELF_TUNING_RULESET else - rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a ' - r"fraction of each workload's maximum allowed runtime." + rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a ' + r"fraction of each workload's self-tuning-ruleset time budget " + rf'(${SELF_TUNING_RUNTIME_FACTOR:g}\times$ the external-tuning maximum allowed runtime).' + if SELF_TUNING_RULESET + else rf'Time to target with targets relaxed {_RELAXATION_LABEL_LATEX}, as a ' + r"fraction of each workload's maximum allowed runtime." ) -ttt_relaxed_latex = '\n'.join([ - r'\begin{table}[htbp]', - r' \centering', - r' \caption{' + _relaxed_budget_caption - + r' \textbf{Bold} values mark targets reached only after relaxation;' - + r' \textemdash{} = target not reached.}', - r' \label{tab:time_to_target_relaxed}', - r' \resizebox{\textwidth}{!}{%', - r' \begin{tabular}{' + _relaxed_col_spec + '}', - r' \toprule', - r' Submission & ' + _relaxed_wl_headers + r' \\', - r' \midrule', - *_relaxed_ttt_rows, - r' \bottomrule', - r' \end{tabular}%', - r' }', - r'\end{table}', -]) +ttt_relaxed_latex = workload_table( + ttt_relaxed_display, + caption=_relaxed_budget_caption + + r' \textbf{Bold} values mark targets reached only after relaxation;' + + r' \textemdash{} = target not reached.', + label='tab:time_to_target_relaxed', + bold=_newly_reached_relaxed, +) -ttt_relaxed_latex_path = os.path.join(RESULTS_DIR, 'time_to_target_table_relaxed.tex') +ttt_relaxed_latex_path = os.path.join( + RESULTS_DIR, 'time_to_target_table_relaxed.tex' +) with open(ttt_relaxed_latex_path, 'w') as f: - f.write(ttt_relaxed_latex) + f.write(ttt_relaxed_latex) print(f'\nLaTeX saved → {ttt_relaxed_latex_path}') +# %% [markdown] +# ## 8. Paper leaderboard figures +# +# Render the ranked legends from the profiles computed above. The helpers +# validate the score integrals and return figures for notebook display. +# Figures are saved locally; this notebook does not update the paper checkout. + # %% +paper_figure_paths = [] +for metric, score_frame, profile_frame, suffix in [ + ('score', scores, performance_profile_df, ''), + ('global_step', scores_steps, performance_profile_steps_df, '_steps'), + ('score_relaxed', scores_relaxed, performance_profile_relaxed_df, '_relaxed'), +]: + fig = plot_leaderboard_profile(score_frame['score'], profile_frame, metric) + paper_figure_paths.extend( + save_figure(fig, Path(RESULTS_DIR) / f'leaderboard_profile{suffix}') + ) + display(fig) + plt.close(fig) + +# %% [markdown] +# ## 9. Target-relaxation sweep +# +# Reuse the loaded runs, full submission pool, workload configuration, and +# scoring settings. Check the standard and relaxed endpoints against this +# notebook's results. Filtering the selected figure affects only its display; +# scores and ranks always use the full pool. + # %% +from artifacts.tech_report_v1.section_4_leaderboards.sweep_target_relaxation import ( + sweep, + SWEEP_PERCENTAGES, + plot_sweep, + plot_selected_scores, +) + +SELECTED_SUBMISSIONS = SELECTED_SWEEP_SUBMISSIONS +sweep_dir = Path(BYPRODUCTS_DIR) / 'relaxation_sweep' +sweep_frame = sweep( + results, + config=WORKLOAD_CONFIG, + output_dir=sweep_dir, + percentages=SWEEP_PERCENTAGES, + **SCORING_OPTIONS, + references={ + 0: (scores['score'], ttt), + round(100 * TARGET_RELAXATION_FRACTION, 8): ( + scores_relaxed['score'], + ttt_relaxed, + ), + }, +) +fig = plot_sweep( + sweep_frame, scores['score'].sort_values(ascending=False).index +) +paper_figure_paths.extend( + save_figure(fig, Path(RESULTS_DIR) / 'target_relaxation_sweep') +) +display(fig) +plt.close(fig) + +fig, selected_curves = plot_selected_scores(sweep_frame, SELECTED_SUBMISSIONS) +selected_curves.to_csv(sweep_dir / 'selected_curves.csv', index=False) +paper_figure_paths.extend( + save_figure(fig, Path(RESULTS_DIR) / 'target_relaxation_selected') +) +display(fig) +plt.close(fig) diff --git a/artifacts/tech_report_v1/section_4_leaderboards/score_submissions_bkup.ipynb b/artifacts/tech_report_v1/section_4_leaderboards/score_submissions_bkup.ipynb index a12c24e0..e0252326 100644 --- a/artifacts/tech_report_v1/section_4_leaderboards/score_submissions_bkup.ipynb +++ b/artifacts/tech_report_v1/section_4_leaderboards/score_submissions_bkup.ipynb @@ -9247,9 +9247,6 @@ } ], "metadata": { - "jupytext": { - "formats": "ipynb,py:percent" - }, "kernelspec": { "display_name": "algoperf", "language": "python", diff --git a/artifacts/tech_report_v1/section_4_leaderboards/sweep_target_relaxation.py b/artifacts/tech_report_v1/section_4_leaderboards/sweep_target_relaxation.py new file mode 100644 index 00000000..ed587003 --- /dev/null +++ b/artifacts/tech_report_v1/section_4_leaderboards/sweep_target_relaxation.py @@ -0,0 +1,364 @@ +"""Rescore saved runs at 0--20% target relaxation, at 1% increments. + +The pool and scoring protocol remain fixed across relaxation levels. +Coverage counts finite median times before the profile's 4x cutoff. +""" + +import argparse +from pathlib import Path +import sys + +if __name__ == '__main__' and not __package__: + sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd + +from artifacts.tech_report_v1.report_utils import ( + REPO_ROOT, + REPORT_ROOT, + SERIF_STYLE, + DISPLAY_TO_RAW, + SELECTED_SWEEP_SUBMISSIONS, + set_plot_style, + save_figure, + submission_styles, +) + +from artifacts.tech_report_v1.report_data import ( + DEFAULT_MIN_TAU, + DEFAULT_MAX_TAU, + DEFAULT_PROFILE_POINTS, + load_runs as load_submission_runs, + score_runs, +) + +HERE = REPORT_ROOT / 'section_4_leaderboards' +SWEEP_PERCENTAGES = range(0, 21) +SWEEP_STYLE = { + **SERIF_STYLE, + 'axes.labelsize': 12, + 'axes.titlesize': 12, + 'xtick.labelsize': 11, + 'ytick.labelsize': 11, +} + + +def load_runs(byproducts=None, submission_directory=None): + """Load the cached leaderboard pool; notebooks can pass existing runs.""" + byproducts = ( + Path(byproducts) if byproducts is not None else HERE / 'out/byproducts' + ) + submission_directory = ( + Path(submission_directory) + if submission_directory is not None + else REPO_ROOT / 'logs/self_tuning' + ) + standard = pd.read_csv(byproducts / 'scores.csv', index_col=0) + if not standard.index.is_unique: + raise ValueError('Submission names must be unique.') + runs = load_submission_runs( + submission_directory, + include=[DISPLAY_TO_RAW.get(name, name) for name in standard.index], + ) + return runs, standard['score'].sort_values(ascending=False).index + + +def sweep( + runs, + *, + config=None, + output_dir=None, + percentages=SWEEP_PERCENTAGES, + min_tau=DEFAULT_MIN_TAU, + max_tau=DEFAULT_MAX_TAU, + num_points=DEFAULT_PROFILE_POINTS, + scale='linear', + strict=False, + self_tuning_ruleset=True, + references=None, +): + """Rescore a fixed pool and optionally check supplied reference endpoints. + + references maps a relaxation percentage to (scores Series, target-times + DataFrame), allowing the notebook to validate against its current results. + """ + from scoring.config import DEFAULT_TARGETS_PATH, WorkloadConfig + + if config is None: + config = WorkloadConfig.from_json(DEFAULT_TARGETS_PATH) + output = ( + Path(output_dir) + if output_dir is not None + else HERE / 'out/byproducts/relaxation_sweep' + ) + references = {} if references is None else references + percentages = list(percentages) + if not percentages or percentages != sorted(set(percentages)): + raise ValueError( + 'Relaxation percentages must be nonempty, unique, and increasing.' + ) + if any(p != int(p) or not 0 <= p < 100 for p in percentages): + raise ValueError( + 'Relaxation percentages must be integers between 0 and 99.' + ) + output.mkdir(parents=True, exist_ok=True) + records, thresholds = [], [] + for percent in percentages: + fraction = percent / 100 + relaxed = config.with_target_relaxations({'all': fraction}) + suffix = f'_{percent:02d}pct' + profiles, scores_frame, times = score_runs( + runs, + relaxed, + output, + artifact_suffix=suffix, + min_tau=min_tau, + max_tau=max_tau, + num_points=num_points, + scale=scale, + strict=strict, + self_tuning_ruleset=self_tuning_ruleset, + ) + scores = scores_frame['score'] + times = times.loc[:, list(config.base_workloads)] + coverage = np.isfinite(times).sum(axis=1) + ranks = scores.rank(ascending=False, method='min').astype(int) + profiles.to_csv(output / f'performance_profiles{suffix}.csv') + for name in scores.index: + records.append( + dict( + relaxation_percent=percent, + submission=name, + score=scores[name], + rank=ranks[name], + workloads_reached=coverage[name], + workload_count=config.num_base_workloads, + ) + ) + for workload in config.base_workloads: + metric, target = relaxed.metric_and_target(workload) + thresholds.append( + dict( + relaxation_percent=percent, + workload=workload, + metric=metric, + target=target, + ) + ) + if percent in references: + expected_scores, expected_times = references[percent] + if set(scores.index) != set(expected_scores.index): + raise ValueError(f'Reference pool differs at {percent}%.') + np.testing.assert_allclose( + scores.loc[expected_scores.index], expected_scores, rtol=0, atol=1e-12 + ) + np.testing.assert_allclose( + times.loc[expected_times.index, expected_times.columns], + expected_times, + rtol=0, + atol=1e-9, + ) + best = scores.idxmax() + print( + f'{percent:2d}%: winner={best}; score={scores[best]:.4f}; ' + f'coverage={coverage.min()}--{coverage.max()}/{config.num_base_workloads}', + flush=True, + ) + + frame = pd.DataFrame(records) + counts = frame.pivot( + index='relaxation_percent', columns='submission', values='workloads_reached' + ) + assert np.all(np.diff(counts.to_numpy(), axis=0) >= 0) + frame.to_csv(output / 'scores_and_coverage.csv', index=False) + pd.DataFrame(thresholds).to_csv(output / 'target_thresholds.csv', index=False) + return frame + + +def plot_sweep(frame, order): + workload_count = int(frame.workload_count.iloc[0]) + styles = submission_styles(order) + set_plot_style(SWEEP_STYLE) + fig, axes = plt.subplots(1, 2, figsize=(14, 7.5)) + fig.subplots_adjust( + left=0.065, right=0.985, top=0.91, bottom=0.34, wspace=0.20 + ) + for i, name in enumerate(order): + rows = frame[frame.submission == name].sort_values('relaxation_percent') + for ax, column in zip(axes, ['score', 'workloads_reached']): + ax.plot( + rows.relaxation_percent, + rows[column], + label=name, + **styles[name], + linewidth=1.8, + markersize=4.8, + markevery=(i % 3, 3), + alpha=0.95, + ) + axes[0].set(title='(a) Relative leaderboard score', ylabel='AlgoPerf score') + axes[0].set_ylim(0, max(0.7, frame.score.max() + 0.04)) + axes[1].set( + title='(b) Workloads reaching the target', + ylabel=f'Workloads reached (out of {workload_count})', + ylim=(0, workload_count + 0.3), + ) + axes[1].set_yticks(range(workload_count + 1)) + for ax in axes: + ax.set( + xlabel='Target relaxation (%)', + xlim=( + frame.relaxation_percent.min() - 0.25, + frame.relaxation_percent.max() + 0.25, + ), + ) + ax.set_xticks( + range( + int(frame.relaxation_percent.min()), + int(frame.relaxation_percent.max()) + 1, + 2, + ) + ) + ax.grid(axis='both', color='#DDDDDD', linewidth=0.6) + ax.set_axisbelow(True) + handles, labels = axes[0].get_legend_handles_labels() + fig.legend( + handles, + labels, + loc='lower center', + bbox_to_anchor=(0.5, 0.07), + ncol=3, + frameon=False, + fontsize=9, + handlelength=2.8, + columnspacing=2.0, + labelspacing=0.7, + ) + fig.suptitle( + 'Sensitivity to target relaxation: the same saved training runs', + fontsize=14, + y=0.98, + ) + fig.text( + 0.5, + 0.025, + 'Lines connect sampled relaxation levels. ' + f'Fixed {frame.submission.nunique()}-submission pool and {workload_count} workloads; ' + 'fastest-run references recomputed at each level.', + ha='center', + fontsize=9, + color='#555555', + ) + return fig + + +def plot_selected_scores(frame, selected=None): + # Contrasting examples, not an exhaustive list of sweep winners: + # original winner; high-relaxation leader; strict-target runner-up; + # baseline with a conspicuous 3% -> 4% jump; and DiLoCo v2 as a lower + # reference. Filter only the display, keeping the full scoring pool. + selected = SELECTED_SWEEP_SUBMISSIONS if selected is None else selected + styles = submission_styles(frame.submission.unique()) + subset = frame[frame.submission.isin(selected)].copy() + expected = pd.MultiIndex.from_product( + [frame.relaxation_percent.unique(), selected] + ) + actual = pd.MultiIndex.from_frame( + subset[['relaxation_percent', 'submission']] + ) + if not actual.is_unique or set(actual) != set(expected): + raise ValueError( + 'Every selected submission must have one row per relaxation level.' + ) + set_plot_style({**SWEEP_STYLE, 'axes.titlesize': 13}) + fig, axes = plt.subplots(1, 2, figsize=(12, 5.3)) + fig.subplots_adjust( + left=0.065, right=0.985, bottom=0.31, top=0.97, wspace=0.25 + ) + for i, name in enumerate(selected): + rows = subset[subset.submission == name].sort_values('relaxation_percent') + for ax, metric in zip(axes, ('score', 'rank')): + ax.plot( + rows.relaxation_percent, + rows[metric], + **styles[name], + linewidth=2.2, + markersize=5.2, + markevery=(i % 2, 2), + label=name, + zorder=len(selected) + 1 - i, + ) + for ax in axes: + ax.set( + xlabel='Target relaxation (%)', + xlim=( + frame.relaxation_percent.min() - 0.25, + frame.relaxation_percent.max() + 0.25, + ), + ) + ax.set_xticks( + range( + int(frame.relaxation_percent.min()), + int(frame.relaxation_percent.max()) + 1, + 2, + ) + ) + ax.grid(color='#DDDDDD', linewidth=0.6) + ax.set_axisbelow(True) + score_limit = max(0.75, subset.score.max() + 0.05) + axes[0].set(ylabel='AlgoPerf score', ylim=(0, score_limit)) + axes[0].set_yticks(np.arange(0, score_limit, 0.1)) + # Cached ranks use every submission, not just the displayed subset. + # Lower numeric ranks appear higher, so upward motion is improvement. + pool_size = frame.submission.nunique() + axes[1].set(ylabel='Leaderboard rank', ylim=(pool_size + 0.4, 0.6)) + axes[1].set_yticks(range(1, pool_size + 1)) + handles, labels = axes[0].get_legend_handles_labels() + fig.legend( + handles, + labels, + loc='lower center', + bbox_to_anchor=(0.5, 0.015), + ncol=2, + frameon=False, + fontsize=10, + handlelength=3, + columnspacing=2, + labelspacing=0.65, + ) + return fig, subset + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--byproducts', type=Path, default=HERE / 'out/byproducts' + ) + parser.add_argument( + '--submission-directory', type=Path, default=REPO_ROOT / 'logs/self_tuning' + ) + parser.add_argument('--output-dir', type=Path, default=HERE / 'out') + args = parser.parse_args() + runs, order = load_runs(args.byproducts, args.submission_directory) + references = { + percent: ( + pd.read_csv(args.byproducts / f'scores{tag}.csv', index_col=0)['score'], + pd.read_csv(args.byproducts / f'time_to_targets{tag}.csv', index_col=0), + ) + for percent, tag in [(0, ''), (10, '_relaxed')] + } + sweep_dir = args.output_dir / 'byproducts/relaxation_sweep' + frame = sweep(runs, output_dir=sweep_dir, references=references) + fig = plot_sweep(frame, order) + save_figure(fig, args.output_dir / 'results/target_relaxation_sweep') + plt.close(fig) + fig, selected = plot_selected_scores(frame) + save_figure(fig, args.output_dir / 'results/target_relaxation_selected') + plt.close(fig) + selected.to_csv(sweep_dir / 'selected_curves.csv', index=False) + + +if __name__ == '__main__': + main() diff --git a/artifacts/tech_report_v1/section_6_algorithms/muon_workloads.ipynb b/artifacts/tech_report_v1/section_6_algorithms/muon_workloads.ipynb new file mode 100644 index 00000000..2666a70f --- /dev/null +++ b/artifacts/tech_report_v1/section_6_algorithms/muon_workloads.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "41886ab5", + "metadata": {}, + "source": [ + "# Muon: empirical performance across workloads\n", + "\n", + "Run the paired Section 4 scoring notebook first to generate the standard\n", + "leaderboard medians and study summaries. This notebook validates those\n", + "medians, loads the matched vanilla PyTorch run from logs, and displays the\n", + "three Muon variants against the leaderboard pool. It writes the figure and\n", + "its audit data without modifying the paper checkout.\n", + "\n", + "Setup: `uv sync --extra dev --extra analysis`. Select that environment's\n", + "Python kernel, then Restart and Run All. See `../README.md` for pairing,\n", + "headless execution, and the separate paper-export step." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bef6b6a", + "metadata": {}, + "outputs": [], + "source": [ + "# Notebook cells intentionally import dependencies near their use.\n", + "# ruff: noqa: E402\n", + "import sys\n", + "from pathlib import Path\n", + "\n", + "REPO_ROOT = next(\n", + " p\n", + " for p in [Path.cwd(), *Path.cwd().parents]\n", + " if (p / 'scoring/score_submissions.py').is_file()\n", + ")\n", + "sys.path.insert(0, str(REPO_ROOT))\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import display\n", + "\n", + "from artifacts.tech_report_v1.report_utils import (\n", + " save_figure,\n", + " section_output_dir,\n", + " submission_directory,\n", + ")\n", + "from artifacts.tech_report_v1.section_6_algorithms.plot_muon_workloads import (\n", + " load_verified_data,\n", + " plot,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e9972eec", + "metadata": {}, + "source": [ + "## Inputs and outputs\n", + "\n", + "The source directory contains all submissions from the standard-target\n", + "leaderboard, not just Muon; the fastest non-Muon reference is recomputed\n", + "within that pool for each workload. Time budgets use the self-tuning factor.\n", + "The vanilla PyTorch comparison is loaded from the configured log directory\n", + "(`ALGOPERF_REPORT_INPUT`) and does not enter the non-Muon reference pool." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2ad42ba", + "metadata": {}, + "outputs": [], + "source": [ + "SOURCE_DIR = section_output_dir('section_4_leaderboards') / 'byproducts'\n", + "OUTPUT_DIR = section_output_dir('section_6_algorithms')\n", + "SUBMISSION_DIRECTORY = str(submission_directory())" + ] + }, + { + "cell_type": "markdown", + "id": "268346a3", + "metadata": {}, + "source": [ + "## Figure and audit data\n", + "\n", + "Each workload's markers share a centerline. A dash means the median target\n", + "was not reached. Speedup is the fastest non-Muon median time divided by the\n", + "Muon median time, so values above one favor Muon. Filled and hollow blue\n", + "circles denote the sharded and vanilla PyTorch implementations.\n", + "The orange diamonds retain native JAX, which\n", + "uses different fixed hyperparameters. Vanilla is an out-of-competition\n", + "comparison; study counts, including its two recorded ImageNet ViT studies,\n", + "are retained in the audit CSV." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5dd55468", + "metadata": {}, + "outputs": [], + "source": [ + "times, budget_fractions, best_other, audit = load_verified_data(\n", + " SOURCE_DIR,\n", + " submission_dir=SUBMISSION_DIRECTORY,\n", + ")\n", + "byproducts = OUTPUT_DIR / 'byproducts'\n", + "byproducts.mkdir(parents=True, exist_ok=True)\n", + "audit.to_csv(byproducts / 'muon_workloads_data.csv', index=False)\n", + "\n", + "fig = plot(times, budget_fractions, best_other)\n", + "paper_figure_paths = save_figure(fig, OUTPUT_DIR / 'results/muon_workloads')\n", + "display(fig)\n", + "plt.close(fig)\n", + "\n", + "display(\n", + " audit[audit['submission'].str.startswith('Muon')][\n", + " [\n", + " 'label',\n", + " 'submission',\n", + " 'median_seconds',\n", + " 'study_count',\n", + " 'budget_fraction',\n", + " 'speedup_vs_best_non_muon',\n", + " 'best_non_muon_submission',\n", + " ]\n", + " ]\n", + ")" + ] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "algoperf", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/artifacts/tech_report_v1/section_6_algorithms/muon_workloads.py b/artifacts/tech_report_v1/section_6_algorithms/muon_workloads.py new file mode 100644 index 00000000..a3ff0efa --- /dev/null +++ b/artifacts/tech_report_v1/section_6_algorithms/muon_workloads.py @@ -0,0 +1,107 @@ +# --- +# jupyter: +# jupytext: +# formats: ipynb,py:percent +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.19.5 +# kernelspec: +# display_name: algoperf +# language: python +# name: python3 +# --- + +# %% [markdown] +# # Muon: empirical performance across workloads +# +# Run the paired Section 4 scoring notebook first to generate the standard +# leaderboard medians and study summaries. This notebook validates those +# medians, loads the matched vanilla PyTorch run from logs, and displays the +# three Muon variants against the leaderboard pool. It writes the figure and +# its audit data without modifying the paper checkout. +# +# Setup: `uv sync --extra dev --extra analysis`. Select that environment's +# Python kernel, then Restart and Run All. See `../README.md` for pairing, +# headless execution, and the separate paper-export step. + +# %% +# Notebook cells intentionally import dependencies near their use. +# ruff: noqa: E402 +import sys +from pathlib import Path + +REPO_ROOT = next( + p + for p in [Path.cwd(), *Path.cwd().parents] + if (p / 'scoring/score_submissions.py').is_file() +) +sys.path.insert(0, str(REPO_ROOT)) + +import matplotlib.pyplot as plt +from IPython.display import display + +from artifacts.tech_report_v1.report_utils import ( + save_figure, + section_output_dir, + submission_directory, +) +from artifacts.tech_report_v1.section_6_algorithms.plot_muon_workloads import ( + load_verified_data, + plot, +) + +# %% [markdown] +# ## Inputs and outputs +# +# The source directory contains all submissions from the standard-target +# leaderboard, not just Muon; the fastest non-Muon reference is recomputed +# within that pool for each workload. Time budgets use the self-tuning factor. +# The vanilla PyTorch comparison is loaded from the configured log directory +# (`ALGOPERF_REPORT_INPUT`) and does not enter the non-Muon reference pool. + +# %% +SOURCE_DIR = section_output_dir('section_4_leaderboards') / 'byproducts' +OUTPUT_DIR = section_output_dir('section_6_algorithms') +SUBMISSION_DIRECTORY = str(submission_directory()) + +# %% [markdown] +# ## Figure and audit data +# +# Each workload's markers share a centerline. A dash means the median target +# was not reached. Speedup is the fastest non-Muon median time divided by the +# Muon median time, so values above one favor Muon. Filled and hollow blue +# circles denote the sharded and vanilla PyTorch implementations. +# The orange diamonds retain native JAX, which +# uses different fixed hyperparameters. Vanilla is an out-of-competition +# comparison; study counts, including its two recorded ImageNet ViT studies, +# are retained in the audit CSV. + +# %% +times, budget_fractions, best_other, audit = load_verified_data( + SOURCE_DIR, + submission_dir=SUBMISSION_DIRECTORY, +) +byproducts = OUTPUT_DIR / 'byproducts' +byproducts.mkdir(parents=True, exist_ok=True) +audit.to_csv(byproducts / 'muon_workloads_data.csv', index=False) + +fig = plot(times, budget_fractions, best_other) +paper_figure_paths = save_figure(fig, OUTPUT_DIR / 'results/muon_workloads') +display(fig) +plt.close(fig) + +display( + audit[audit['submission'].str.startswith('Muon')][ + [ + 'label', + 'submission', + 'median_seconds', + 'study_count', + 'budget_fraction', + 'speedup_vs_best_non_muon', + 'best_non_muon_submission', + ] + ] +) diff --git a/artifacts/tech_report_v1/section_6_algorithms/out/byproducts/muon_workloads_data.csv b/artifacts/tech_report_v1/section_6_algorithms/out/byproducts/muon_workloads_data.csv new file mode 100644 index 00000000..215f7851 --- /dev/null +++ b/artifacts/tech_report_v1/section_6_algorithms/out/byproducts/muon_workloads_data.csv @@ -0,0 +1,136 @@ +workload,label,model_family,submission,median_seconds,self_tuning_budget_seconds,budget_fraction,target_reached,study_count,in_source_leaderboard,best_non_muon_submission,best_non_muon_seconds,speedup_vs_best_non_muon +criteo1tb,Criteo 1TB,DLRM,AdEMAMix (PyTorch),7839.193164110184,13372.5,0.5862174734799165,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,0.9542527112095269 +criteo1tb,Criteo 1TB,DLRM,Cautious NAdamW (JAX),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,Lion (PyTorch),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,Muon (JAX),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,Muon (PyTorch),7141.604691028595,13372.5,0.5340515753246285,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,1.0474636519639002 +criteo1tb,Criteo 1TB,DLRM,NAdamW (JAX),7492.6946766376495,13372.5,0.5603062012815592,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,0.9983819778312711 +criteo1tb,Criteo 1TB,DLRM,NAdamW (Baseline AlgoPerf v0.5) (JAX),8206.103132247925,13372.5,0.6136551229947972,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,0.9115863169146102 +criteo1tb,Criteo 1TB,DLRM,NAdamW (Tuned for ResNet) (JAX),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,Schedule-Free AdamW (PyTorch),10337.671689033508,13372.5,0.7730545289985798,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,0.7236224515122619 +criteo1tb,Criteo 1TB,DLRM,Schedule-Free AdamW (JAX),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,Schedule-Free AdamW v2 (JAX),8204.54053902626,13372.5,0.613538271753693,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,0.9117599328036411 +criteo1tb,Criteo 1TB,DLRM,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,13372.5,0.5593996134266093,True,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,1.0 +criteo1tb,Criteo 1TB,DLRM,Single Worker DiLoCo (JAX),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,Single Worker DiLoCo v2 (JAX),inf,13372.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),7480.571330547333, +criteo1tb,Criteo 1TB,DLRM,"Muon (Replicated, Torch HPs)",11453.162363290789,13372.5,0.8564712928241383,True,3,False,Schedule-Free AdamW v2 (PyTorch),7480.571330547333,0.6531446157197384 +ogbg,OGBG,Graph neural network,AdEMAMix (PyTorch),6329.966245889664,16954.5,0.37335021651417993,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.5750660273690859 +ogbg,OGBG,Graph neural network,Cautious NAdamW (JAX),4992.686820983887,16954.5,0.2944756153813965,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.7290961105561248 +ogbg,OGBG,Graph neural network,Lion (PyTorch),7223.987207174301,16954.5,0.4260808167256068,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.5038974236816287 +ogbg,OGBG,Graph neural network,Muon (JAX),inf,16954.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175, +ogbg,OGBG,Graph neural network,Muon (PyTorch),1833.473667144776,16954.5,0.10814082793032977,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,1.985383595976532 +ogbg,OGBG,Graph neural network,NAdamW (JAX),inf,16954.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175, +ogbg,OGBG,Graph neural network,NAdamW (Baseline AlgoPerf v0.5) (JAX),4089.775626659393,16954.5,0.2412206568556662,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.8900606964048827 +ogbg,OGBG,Graph neural network,NAdamW (Tuned for ResNet) (JAX),6349.506216049194,16954.5,0.3745027111415373,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.5732963192008901 +ogbg,OGBG,Graph neural network,Schedule-Free AdamW (PyTorch),3640.148542404175,16954.5,0.21470102582819753,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,1.0 +ogbg,OGBG,Graph neural network,Schedule-Free AdamW (JAX),5446.973826885223,16954.5,0.3212700950712332,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.668288238220844 +ogbg,OGBG,Graph neural network,Schedule-Free AdamW v2 (JAX),5444.019295454025,16954.5,0.3210958326965717,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.6686509258782101 +ogbg,OGBG,Graph neural network,Schedule-Free AdamW v2 (PyTorch),6325.430662155151,16954.5,0.37308270147483863,True,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175,0.5754783724344757 +ogbg,OGBG,Graph neural network,Single Worker DiLoCo (JAX),inf,16954.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175, +ogbg,OGBG,Graph neural network,Single Worker DiLoCo v2 (JAX),inf,16954.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),3640.148542404175, +ogbg,OGBG,Graph neural network,"Muon (Replicated, Torch HPs)",2295.2346851825714,16954.5,0.13537613525509873,True,3,False,Schedule-Free AdamW (PyTorch),3640.148542404175,1.5859591901011307 +finewebedu_lm,FineWebEdu,Decoder Transformer,AdEMAMix (PyTorch),18025.89689064026,47950.5,0.3759271934732747,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.7142658785842684 +finewebedu_lm,FineWebEdu,Decoder Transformer,Cautious NAdamW (JAX),25738.981688261032,47950.5,0.5367823419622534,True,1,True,Schedule-Free AdamW (JAX),12875.283079862596,0.5002250374860293 +finewebedu_lm,FineWebEdu,Decoder Transformer,Lion (PyTorch),23172.039316177368,47950.5,0.4832491697933779,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.5556387551471926 +finewebedu_lm,FineWebEdu,Decoder Transformer,Muon (JAX),20594.037749767303,47950.5,0.4294853598975465,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.625194691604762 +finewebedu_lm,FineWebEdu,Decoder Transformer,Muon (PyTorch),15471.922557115557,47950.5,0.32266446767219437,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.832170858684995 +finewebedu_lm,FineWebEdu,Decoder Transformer,NAdamW (JAX),25733.847669363025,47950.5,0.5366752728201588,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.5003248346414608 +finewebedu_lm,FineWebEdu,Decoder Transformer,NAdamW (Baseline AlgoPerf v0.5) (JAX),20589.912857055664,47950.5,0.42939933592049434,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.625319940363446 +finewebedu_lm,FineWebEdu,Decoder Transformer,NAdamW (Tuned for ResNet) (JAX),23163.02198767662,47950.5,0.48306111485128667,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.5558550644519791 +finewebedu_lm,FineWebEdu,Decoder Transformer,Schedule-Free AdamW (PyTorch),inf,47950.5,inf,False,3,True,Schedule-Free AdamW (JAX),12875.283079862596, +finewebedu_lm,FineWebEdu,Decoder Transformer,Schedule-Free AdamW (JAX),12875.283079862596,47950.5,0.2685119671299068,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,1.0 +finewebedu_lm,FineWebEdu,Decoder Transformer,Schedule-Free AdamW v2 (JAX),15451.99134683609,47950.5,0.3222488054730626,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.8332442589995953 +finewebedu_lm,FineWebEdu,Decoder Transformer,Schedule-Free AdamW v2 (PyTorch),inf,47950.5,inf,False,3,True,Schedule-Free AdamW (JAX),12875.283079862596, +finewebedu_lm,FineWebEdu,Decoder Transformer,Single Worker DiLoCo (JAX),28314.81918931008,47950.5,0.5905010206214759,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.4547188874412274 +finewebedu_lm,FineWebEdu,Decoder Transformer,Single Worker DiLoCo v2 (JAX),28313.97388148308,47950.5,0.5904833918620886,True,3,True,Schedule-Free AdamW (JAX),12875.283079862596,0.4547324629794492 +finewebedu_lm,FineWebEdu,Decoder Transformer,"Muon (Replicated, Torch HPs)",15479.304972171783,47950.5,0.3228184267561711,True,3,False,Schedule-Free AdamW (JAX),12875.283079862596,0.8317739784188879 +wmt,WMT,Transformer,AdEMAMix (PyTorch),17399.639942407608,24171.0,0.7198560234333543,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.5934293519308707 +wmt,WMT,Transformer,Cautious NAdamW (JAX),14232.458706855774,24171.0,0.5888237436124187,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.7254865281906399 +wmt,WMT,Transformer,Lion (PyTorch),15475.552730083466,24171.0,0.6402528952084509,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.667210873494775 +wmt,WMT,Transformer,Muon (JAX),inf,24171.0,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344, +wmt,WMT,Transformer,Muon (PyTorch),14214.779582500458,24171.0,0.5880923247900566,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.7263888261457752 +wmt,WMT,Transformer,NAdamW (JAX),inf,24171.0,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344, +wmt,WMT,Transformer,NAdamW (Baseline AlgoPerf v0.5) (JAX),14865.7885992527,24171.0,0.6150257994808945,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.694578493829281 +wmt,WMT,Transformer,NAdamW (Tuned for ResNet) (JAX),inf,24171.0,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344, +wmt,WMT,Transformer,Schedule-Free AdamW (PyTorch),19957.71787595749,24171.0,0.8256885472656278,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.5173666207243179 +wmt,WMT,Transformer,Schedule-Free AdamW (JAX),16161.202248096466,24171.0,0.6686195129740791,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.6389040181753567 +wmt,WMT,Transformer,Schedule-Free AdamW v2 (JAX),inf,24171.0,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344, +wmt,WMT,Transformer,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,24171.0,0.4271836934695892,True,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,1.0 +wmt,WMT,Transformer,Single Worker DiLoCo (JAX),inf,24171.0,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344, +wmt,WMT,Transformer,Single Worker DiLoCo v2 (JAX),inf,24171.0,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),10325.45705485344, +wmt,WMT,Transformer,"Muon (Replicated, Torch HPs)",16778.880315303802,24171.0,0.6941740232222002,True,3,False,Schedule-Free AdamW v2 (PyTorch),10325.45705485344,0.6153841532224127 +imagenet_vit,ImageNet ViT,Vision Transformer,AdEMAMix (PyTorch),inf,96438.0,inf,False,2,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Cautious NAdamW (JAX),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Lion (PyTorch),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Muon (JAX),77162.91657114029,96438.0,0.8001297887880326,True,3,True,NAdamW (JAX),72015.5787293911,0.9332925961008277 +imagenet_vit,ImageNet ViT,Vision Transformer,Muon (PyTorch),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,NAdamW (JAX),72015.5787293911,96438.0,0.7467552077955899,True,3,True,NAdamW (JAX),72015.5787293911,1.0 +imagenet_vit,ImageNet ViT,Vision Transformer,NAdamW (Baseline AlgoPerf v0.5) (JAX),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,NAdamW (Tuned for ResNet) (JAX),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Schedule-Free AdamW (PyTorch),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Schedule-Free AdamW (JAX),87468.86081624031,96438.0,0.9069957985051568,True,3,True,NAdamW (JAX),72015.5787293911,0.8233281885388405 +imagenet_vit,ImageNet ViT,Vision Transformer,Schedule-Free AdamW v2 (JAX),84891.75501847267,96438.0,0.8802728698072614,True,3,True,NAdamW (JAX),72015.5787293911,0.8483224161606779 +imagenet_vit,ImageNet ViT,Vision Transformer,Schedule-Free AdamW v2 (PyTorch),inf,96438.0,inf,False,2,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Single Worker DiLoCo (JAX),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,Single Worker DiLoCo v2 (JAX),inf,96438.0,inf,False,3,True,NAdamW (JAX),72015.5787293911, +imagenet_vit,ImageNet ViT,Vision Transformer,"Muon (Replicated, Torch HPs)",inf,96438.0,inf,False,2,False,NAdamW (JAX),72015.5787293911, +fastmri,fastMRI,U-Net,AdEMAMix (PyTorch),1517.7321906089785,4117.5,0.3686052679074629,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.7437661815873651 +fastmri,fastMRI,U-Net,Cautious NAdamW (JAX),1608.188658952713,4117.5,0.3905740519618004,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.7019312502903673 +fastmri,fastMRI,U-Net,Lion (PyTorch),1394.1750195026398,4117.5,0.3385974546454499,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.8096816111969718 +fastmri,fastMRI,U-Net,Muon (JAX),1869.765276670456,4117.5,0.45410207083678344,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.6037323990162127 +fastmri,fastMRI,U-Net,Muon (PyTorch),inf,4117.5,inf,False,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467, +fastmri,fastMRI,U-Net,NAdamW (JAX),1800.7732002735138,4117.5,0.4373462538612055,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.6268628808502987 +fastmri,fastMRI,U-Net,NAdamW (Baseline AlgoPerf v0.5) (JAX),1620.5153810977936,4117.5,0.3935677914020142,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.6965918924612445 +fastmri,fastMRI,U-Net,NAdamW (Tuned for ResNet) (JAX),1920.545307636261,4117.5,0.46643480452611075,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.5877694588058433 +fastmri,fastMRI,U-Net,Schedule-Free AdamW (PyTorch),1188.9131379127502,4117.5,0.2887463601488161,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.949470436556239 +fastmri,fastMRI,U-Net,Schedule-Free AdamW (JAX),2397.40203499794,4117.5,0.5822470030353224,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.4708588128325489 +fastmri,fastMRI,U-Net,Schedule-Free AdamW v2 (JAX),1850.625381946564,4117.5,0.44945364467433246,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.6099764366649445 +fastmri,fastMRI,U-Net,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,4117.5,0.27415613262452143,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,1.0 +fastmri,fastMRI,U-Net,Single Worker DiLoCo (JAX),2379.342566609382,4117.5,0.5778609754971177,True,2,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.47443268233967956 +fastmri,fastMRI,U-Net,Single Worker DiLoCo v2 (JAX),2578.1419467926025,4117.5,0.6261425493121074,True,3,True,Schedule-Free AdamW v2 (PyTorch),1128.837876081467,0.437849388970155 +fastmri,fastMRI,U-Net,"Muon (Replicated, Torch HPs)",inf,4117.5,inf,False,3,False,Schedule-Free AdamW v2 (PyTorch),1128.837876081467, +imagenet_resnet,ImageNet ResNet,ResNet-50,AdEMAMix (PyTorch),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Cautious NAdamW (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Lion (PyTorch),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Muon (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Muon (PyTorch),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,NAdamW (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,NAdamW (Baseline AlgoPerf v0.5) (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,NAdamW (Tuned for ResNet) (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Schedule-Free AdamW (PyTorch),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Schedule-Free AdamW (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Schedule-Free AdamW v2 (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Schedule-Free AdamW v2 (PyTorch),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Single Worker DiLoCo (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,Single Worker DiLoCo v2 (JAX),inf,74877.0,inf,False,3,True,,inf, +imagenet_resnet,ImageNet ResNet,ResNet-50,"Muon (Replicated, Torch HPs)",inf,74877.0,inf,False,3,False,,inf, +librispeech_conformer,LibriSpeech Conformer,Conformer,AdEMAMix (PyTorch),48894.85426735878,65520.0,0.7462584595140229,True,3,True,AdEMAMix (PyTorch),48894.85426735878,1.0 +librispeech_conformer,LibriSpeech Conformer,Conformer,Cautious NAdamW (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Lion (PyTorch),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Muon (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Muon (PyTorch),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,NAdamW (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,NAdamW (Baseline AlgoPerf v0.5) (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,NAdamW (Tuned for ResNet) (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Schedule-Free AdamW (PyTorch),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Schedule-Free AdamW (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Schedule-Free AdamW v2 (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Schedule-Free AdamW v2 (PyTorch),55846.44081497192,65520.0,0.8523571552956641,True,3,True,AdEMAMix (PyTorch),48894.85426735878,0.8755231945640933 +librispeech_conformer,LibriSpeech Conformer,Conformer,Single Worker DiLoCo (JAX),inf,65520.0,inf,False,3,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,Single Worker DiLoCo v2 (JAX),inf,65520.0,inf,False,2,True,AdEMAMix (PyTorch),48894.85426735878, +librispeech_conformer,LibriSpeech Conformer,Conformer,"Muon (Replicated, Torch HPs)",inf,65520.0,inf,False,3,False,AdEMAMix (PyTorch),48894.85426735878, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,AdEMAMix (PyTorch),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Cautious NAdamW (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Lion (PyTorch),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Muon (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Muon (PyTorch),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,NAdamW (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,NAdamW (Baseline AlgoPerf v0.5) (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,NAdamW (Tuned for ResNet) (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Schedule-Free AdamW (PyTorch),40463.388149023056,55423.5,0.7300763782334759,True,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056,1.0 +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Schedule-Free AdamW (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Schedule-Free AdamW v2 (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Schedule-Free AdamW v2 (PyTorch),41911.17554831505,55423.5,0.7561986440465696,True,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056,0.9654558150576572 +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Single Worker DiLoCo (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,Single Worker DiLoCo v2 (JAX),inf,55423.5,inf,False,3,True,Schedule-Free AdamW (PyTorch),40463.388149023056, +librispeech_deepspeech,LibriSpeech DeepSpeech,DeepSpeech,"Muon (Replicated, Torch HPs)",inf,55423.5,inf,False,3,False,Schedule-Free AdamW (PyTorch),40463.388149023056, diff --git a/artifacts/tech_report_v1/section_6_algorithms/out/results/muon_workloads.pdf b/artifacts/tech_report_v1/section_6_algorithms/out/results/muon_workloads.pdf new file mode 100644 index 00000000..53bd03b5 Binary files /dev/null and b/artifacts/tech_report_v1/section_6_algorithms/out/results/muon_workloads.pdf differ diff --git a/artifacts/tech_report_v1/section_6_algorithms/out/results/muon_workloads.png b/artifacts/tech_report_v1/section_6_algorithms/out/results/muon_workloads.png new file mode 100644 index 00000000..e8e06c9c Binary files /dev/null and b/artifacts/tech_report_v1/section_6_algorithms/out/results/muon_workloads.png differ diff --git a/artifacts/tech_report_v1/section_6_algorithms/out/run_metadata.json b/artifacts/tech_report_v1/section_6_algorithms/out/run_metadata.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/artifacts/tech_report_v1/section_6_algorithms/out/run_metadata.json @@ -0,0 +1 @@ +{} diff --git a/artifacts/tech_report_v1/section_6_algorithms/plot_muon_workloads.py b/artifacts/tech_report_v1/section_6_algorithms/plot_muon_workloads.py new file mode 100644 index 00000000..f839a035 --- /dev/null +++ b/artifacts/tech_report_v1/section_6_algorithms/plot_muon_workloads.py @@ -0,0 +1,385 @@ +"""Plot Muon's workload profile with a matched vanilla PyTorch comparison.""" + +import argparse +from pathlib import Path +import sys + +if __name__ == '__main__' and not __package__: + sys.path.insert(0, str(Path(__file__).resolve().parents[3])) + +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D +from matplotlib.patches import Rectangle +import numpy as np +import pandas as pd + +from artifacts.tech_report_v1.report_utils import ( + DISPLAY_TO_RAW, + REPORT_ROOT, + set_plot_style, + save_figure, + submission_directory, + pretty, +) + +HERE = REPORT_ROOT / 'section_6_algorithms' +SOURCE = REPORT_ROOT / 'section_4_leaderboards/out/byproducts' +OUTPUT = HERE / 'out' +SHARDED = 'Muon (PyTorch)' +VANILLA_RAW = 'muon_torch_replicated_torch_hps' +VANILLA = pretty(VANILLA_RAW) +JAX = 'Muon (JAX)' +MUONS = [SHARDED, VANILLA, JAX] +LEGEND_LABELS = ['Muon (PyTorch, sharded)', 'Muon (PyTorch, vanilla)', JAX] +COLORS = ['#176B96', '#176B96', '#B65A27'] +MARKERS = ['o', 'o', 'D'] +WORKLOADS = [ + ('criteo1tb', 'Criteo 1TB', 'DLRM'), + ('ogbg', 'OGBG', 'Graph neural network'), + ('finewebedu_lm', 'FineWebEdu', 'Decoder Transformer'), + ('wmt', 'WMT', 'Transformer'), + ('imagenet_vit', 'ImageNet ViT', 'Vision Transformer'), + ('fastmri', 'fastMRI', 'U-Net'), + ('imagenet_resnet', 'ImageNet ResNet', 'ResNet-50'), + ('librispeech_conformer', 'LibriSpeech Conformer', 'Conformer'), + ('librispeech_deepspeech', 'LibriSpeech DeepSpeech', 'DeepSpeech'), +] + + +def load_verified_data(source=SOURCE, config=None, submission_dir=None): + """Validate leaderboard medians and load the matched vanilla run from logs. + + The vanilla comparison is excluded from the non-Muon reference pool. The + input directory follows ALGOPERF_REPORT_INPUT unless explicitly supplied. + """ + from scoring import performance_profile, scoring_utils + from scoring.config import ( + DEFAULT_TARGETS_PATH, + SELF_TUNING_RUNTIME_FACTOR, + WorkloadConfig, + ) + + source = Path(source) + times = pd.read_csv(source / 'time_to_targets.csv', index_col=0) + config = ( + config + if config is not None + else WorkloadConfig.from_json(DEFAULT_TARGETS_PATH) + ) + if not times.index.is_unique or not {SHARDED, JAX}.issubset(times.index): + raise ValueError( + 'Expected unique submission names including both Muon submissions.' + ) + assert set(times.columns) == set(config.base_workloads) + assert set(times.columns) == {w[0] for w in WORKLOADS} + budgets = pd.Series( + { + w: config.workloads[w].max_allowed_runtime_sec + * SELF_TUNING_RUNTIME_FACTOR + for w in times.columns + } + ) + leaderboard_names = set(times.index) + study_counts = {} + for name in times.index: + raw_name = DISPLAY_TO_RAW.get(name, name) + summary = pd.read_csv(source / 'summaries' / f'{raw_name}_summary.csv') + summary['base'] = summary['workload'].str.replace( + r'_(jax|pytorch)$', '', regex=True + ) + grouped = summary.groupby('base')['time to target on val (s)'] + assert grouped.size().between(1, 3).all() + if name in (SHARDED, JAX): + assert grouped.size().eq(3).all() + study_counts[name] = grouped.size() + medians = grouped.apply(lambda values: np.median(values.to_numpy())) + np.testing.assert_allclose( + times.loc[name], medians.reindex(times.columns, fill_value=np.inf) + ) + + if VANILLA not in times.index: + directory = ( + submission_directory() if submission_dir is None else Path(submission_dir) + ) + vanilla_path = directory / VANILLA_RAW + if not vanilla_path.is_dir(): + raise ValueError(f'Matched vanilla Muon logs are missing: {vanilla_path}') + runs = scoring_utils.get_experiment_df(str(vanilla_path)) + # The self-tuning comparison has one trial per study. Keep failed studies + # in the median and record incomplete study counts in the audit CSV. + if runs.empty or runs.duplicated(['workload', 'study']).any(): + raise ValueError('Expected one vanilla Muon trial per workload/study.') + counts = runs.groupby('workload')['study'].nunique() + counts.index = counts.index.str.replace(r'_(jax|pytorch)$', '', regex=True) + if ( + set(counts.index) != set(times.columns) or not counts.between(1, 3).all() + ): + raise ValueError('Expected 1–3 vanilla Muon studies on each workload.') + study_counts[VANILLA] = counts + times.loc[VANILLA] = ( + performance_profile.get_workloads_time_to_target( + runs, + VANILLA_RAW, + config, + time_col='score', + verbosity=0, + self_tuning_ruleset=True, + strict=False, + ) + .iloc[0] + .reindex(times.columns) + ) + + normalized = times / budgets + if ( + not ((normalized > 0) & ((normalized <= 1) | np.isposinf(normalized))) + .all() + .all() + ): + raise ValueError( + 'Expected positive budget fractions <= 1, or infinity for missed targets.' + ) + others = times.loc[~times.index.str.startswith('Muon')] + best = others.min() + rows = [] + for workload, label, model in WORKLOADS: + for name in times.index: + seconds = times.loc[name, workload] + solved = np.isfinite(seconds) + has_reference = np.isfinite(best[workload]) + rows.append( + { + 'workload': workload, + 'label': label, + 'model_family': model, + 'submission': name, + 'median_seconds': seconds, + 'self_tuning_budget_seconds': budgets[workload], + 'budget_fraction': normalized.loc[name, workload], + 'target_reached': solved, + 'study_count': int(study_counts[name].get(workload, 0)), + 'in_source_leaderboard': name in leaderboard_names, + 'best_non_muon_submission': ( + others[workload].idxmin() if has_reference else '' + ), + 'best_non_muon_seconds': best[workload], + 'speedup_vs_best_non_muon': ( + best[workload] / seconds if solved and has_reference else np.nan + ), + } + ) + return times, normalized, best, pd.DataFrame(rows) + + +def plot(times, normalized, best): + set_plot_style( + { + 'font.family': 'DejaVu Sans', + 'font.size': 10, + 'savefig.bbox': 'tight', + 'savefig.pad_inches': 0.14, + 'pdf.fonttype': 42, + 'axes.spines.top': False, + 'axes.spines.right': False, + 'axes.spines.left': False, + } + ) + fig = plt.figure(figsize=(12.4, 5.4), facecolor='white') + handles = [ + Line2D( + [], + [], + marker=m, + color=c, + linestyle='none', + markersize=7, + label=label, + markerfacecolor='white' if name == VANILLA else c, + markeredgewidth=1.5 if name == VANILLA else 1, + ) + for name, label, c, m in zip( + MUONS, LEGEND_LABELS, COLORS, MARKERS, strict=True + ) + ] + [ + Line2D( + [], + [], + marker='o', + color='#ADB5BE', + linestyle='none', + markersize=5, + label='Other submissions', + ) + ] + fig.legend( + handles=handles, + loc='upper left', + bbox_to_anchor=(0.018, 1.0), + ncol=4, + frameon=False, + handletextpad=0.5, + columnspacing=1.5, + fontsize=9.5, + ) + # Text columns and plot use identical y coordinates for accurate alignment. + labels = fig.add_axes([0.025, 0.12, 0.190, 0.73]) + ax = fig.add_axes([0.222, 0.12, 0.522, 0.73]) + ratios = fig.add_axes([0.768, 0.12, 0.215, 0.73]) + for panel in (labels, ax, ratios): + panel.set_ylim(len(times.columns) - 0.35, -0.65) + panel.set_yticks([]) + for panel in (labels, ratios): + panel.set_xlim(0, 1) + panel.axis('off') + labels.text( + 0, + 1.045, + 'Workload', + transform=labels.transAxes, + weight='bold', + fontsize=10, + ) + ax.text( + 0, + 1.045, + 'Time to target / workload budget', + transform=ax.transAxes, + weight='bold', + fontsize=10, + ) + ratios.text( + 0.5, + 1.105, + 'Speedup vs. best other', + transform=ratios.transAxes, + weight='bold', + ha='center', + fontsize=10, + ) + xs = [1 / 6, 0.5, 5 / 6] + for x, text, color in zip( + xs, ['Sharded', 'Vanilla', 'JAX'], COLORS, strict=True + ): + ratios.text( + x, + 1.045, + text, + color=color, + transform=ratios.transAxes, + ha='center', + fontsize=10, + ) + ax.set_xlim(-0.015, 1.025) + ax.set_xticks(np.arange(0, 1.01, 0.2)) + ax.set_xticklabels(['0', '0.2', '0.4', '0.6', '0.8', '1.0']) + ax.tick_params(axis='x', length=0, pad=7, colors='#56616A') + ax.spines['bottom'].set_color('#B7C0C7') + ax.grid(axis='x', color='#E0E5EA', linewidth=0.7, zorder=0) + ax.axvline(1, color='#9BA5AF', linestyle=(0, (3, 3)), linewidth=1) + ax.set_xlabel('← Faster', loc='left', labelpad=8, color='#56616A') + other_names = times.index[~times.index.str.startswith('Muon')] + for y, (workload, label, _) in enumerate(WORKLOADS): + for panel in (labels, ax, ratios): + if y % 2 == 0: + panel.axhspan(y - 0.49, y + 0.49, color='#F4F6F8', zorder=-1) + labels.text(0, y, label, va='center', color='#263846', fontsize=10) + # All submissions share the row center; larger Muon markers are + # drawn last so they remain visible among the other submissions. + other = normalized.loc[other_names, workload] + finite = other[np.isfinite(other)] + ax.scatter( + finite, + np.full(len(finite), y), + s=25, + color='#ADB5BE', + edgecolor='white', + linewidth=0.5, + zorder=3, + ) + if not np.isfinite(normalized[workload]).any(): + ax.text( + 0.5, + y, + 'No submission reached target', + ha='center', + va='center', + color='#737D87', + fontsize=9, + style='italic', + ) + for j, name in enumerate(MUONS): + value = normalized.loc[name, workload] + xcell = xs[j] + if np.isfinite(value): + is_vanilla = name == VANILLA + # A larger hollow circle preserves visibility when paired medians + # almost coincide, as on FineWebEdu. + ax.scatter( + [value], + [y], + s=112 if is_vanilla else 58, + marker=MARKERS[j], + facecolors='none' if is_vanilla else COLORS[j], + edgecolors=COLORS[j] if is_vanilla else 'white', + linewidth=1.5 if is_vanilla else 0.8, + zorder=6 if is_vanilla else 5, + ) + if np.isfinite(value) and np.isfinite(best[workload]): + speedup = best[workload] / times.loc[name, workload] + wins = speedup > 1 + ratios.add_patch( + Rectangle( + (xcell - 0.145, y - 0.33), + 0.29, + 0.66, + facecolor='#DCEDE5' if wins else '#ECEFF2', + edgecolor='none', + ) + ) + ratios.text( + xcell, + y, + f'{speedup:.2f}×', + ha='center', + va='center', + color='#166446' if wins else '#455460', + weight='bold' if wins else 'normal', + fontsize=10.5, + ) + else: + ratios.text( + xcell, y, '—', ha='center', va='center', color='#7C858E', fontsize=9 + ) + return fig + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--source', type=Path, default=SOURCE) + parser.add_argument('--output-dir', type=Path, default=OUTPUT) + parser.add_argument( + '--submission-directory', + type=Path, + default=None, + help='Log pool containing the matched vanilla submission.', + ) + args = parser.parse_args() + times, normalized, best, audit = load_verified_data( + args.source, + submission_dir=args.submission_directory, + ) + byproducts = args.output_dir / 'byproducts' + byproducts.mkdir(parents=True, exist_ok=True) + audit.to_csv(byproducts / 'muon_workloads_data.csv', index=False) + fig = plot(times, normalized, best) + paths = save_figure(fig, args.output_dir / 'results/muon_workloads') + plt.close(fig) + print( + f'Verified {len(audit)} time-to-target entries using leaderboard summaries ' + 'and matched vanilla logs.' + ) + print(*paths, sep='\n') + + +if __name__ == '__main__': + main() diff --git a/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.ipynb b/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.ipynb index dedbe94a..87ecf6b5 100644 --- a/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.ipynb +++ b/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "d50405b3", "metadata": {}, "source": [ "# AlgoPerf: JAX vs. PyTorch Framework Comparison\n" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "4e418757", "metadata": {}, "source": [ "## 1. Imports & Repo Root\n", @@ -19,20 +21,25 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, + "execution_count": null, + "id": "4d1de055", + "metadata": { + "lines_to_next_cell": 2 + }, "outputs": [], "source": [ + "# Notebook cells intentionally import dependencies near their use.\n", + "# ruff: noqa: E402\n", "import os\n", - "import pickle\n", "import sys\n", "from pathlib import Path\n", "\n", "# Run everything relative to the repo root so `scoring` imports and the\n", "# repo-relative paths in Section 3 work from any launch directory.\n", "REPO_ROOT = next(\n", - " p for p in [Path.cwd(), *Path.cwd().parents]\n", - " if (p / 'scoring' / 'score_submissions.py').exists()\n", + " p\n", + " for p in [Path.cwd(), *Path.cwd().parents]\n", + " if (p / 'scoring' / 'score_submissions.py').exists()\n", ")\n", "os.chdir(REPO_ROOT)\n", "sys.path.insert(0, str(REPO_ROOT))\n", @@ -41,14 +48,13 @@ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from IPython.display import display\n", - "from tabulate import tabulate\n", "\n", - "from scoring import performance_profile, scoring_utils\n", - "from scoring.config import DEFAULT_TARGETS_PATH, WorkloadConfig\n" + "from scoring.config import DEFAULT_TARGETS_PATH, WorkloadConfig" ] }, { "cell_type": "markdown", + "id": "428104cf", "metadata": {}, "source": [ "## 2. Configuration\n", @@ -58,15443 +64,196 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, + "execution_count": null, + "id": "2bb05f8f", + "metadata": { + "lines_to_next_cell": 2 + }, "outputs": [], "source": [ "# ── Required ──────────────────────────────────────────────────────────────────\n", "# Path to the directory that contains one sub-folder per submission\n", "# (relative to the repo root).\n", - "SUBMISSION_DIRECTORY = 'logs/self_tuning'\n", + "from artifacts.tech_report_v1.report_utils import (\n", + " EXCLUDED_SUBMISSIONS,\n", + " section_output_dir,\n", + " submission_directory,\n", + ")\n", + "\n", + "SUBMISSION_DIRECTORY = str(submission_directory())\n", "\n", "# Where to write output CSVs, plots, and LaTeX tables. This is the committed\n", "# artifact directory for the second scoring iteration.\n", - "OUTPUT_DIR = 'artifacts/tech_report_v1/jax_vs_pytorch_comparison'\n", + "OUTPUT_DIR = str(section_output_dir('section_7_frameworks'))\n", "\n", "# ── Submission filters (leave empty strings to include/exclude nothing) ───────\n", "# Comma-separated names to include (empty = include all).\n", - "INCLUDE_SUBMISSIONS = ''\n", + "INCLUDE_SUBMISSIONS = 'schedule_free_adamw,schedule_free_adamw_jax,schedule_free_adamw_v2,schedule_free_adamw_jax_v2'\n", "# Comma-separated names to exclude.\n", - "EXCLUDE_SUBMISSIONS = 'muon_torch_jax_hps,muon_torch_jax_hps_achandr,muon_torch_jax_hps_lr_fix,muon_torch_replicated_jax_hps,muon_torch_replicated_torch_hps'\n", + "EXCLUDE_SUBMISSIONS = ','.join(EXCLUDED_SUBMISSIONS)\n", "\n", - "# ── Scoring flags ─────────────────────────────────────────────────────────────\n", - "# Set True to enforce the competition's strict trial/study count rules.\n", - "STRICT = False\n", - "# Set True when scoring the self-tuning ruleset.\n", - "SELF_TUNING_RULESET = True\n", - "# Set True to compute and plot performance profiles after building summaries.\n", - "COMPUTE_PERFORMANCE_PROFILES = True\n", - "# Benchmark version config: base/held-out workloads, targets, step hints.\n", - "# The score divides by the number of base workloads in this config.\n", "WORKLOAD_CONFIG = WorkloadConfig.from_json(DEFAULT_TARGETS_PATH)\n", "\n", - "# ── Performance profile parameters ────────────────────────────────────────────\n", - "MIN_TAU = 1.0\n", - "MAX_TAU = 4.0 # set None to auto-detect from data\n", - "NUM_POINTS = 100\n", - "SCALE = 'linear' # 'linear' or 'log'\n", - "\n", "# ── Caching (optional) ────────────────────────────────────────────────────────\n", "# Save the parsed results dict so you can reload it later without re-parsing.\n", - "SAVE_RESULTS_TO = None # e.g. 'results.pkl'\n", + "SAVE_RESULTS_TO = None # e.g. 'results.pkl'\n", "# Load a previously saved results dict instead of re-parsing.\n", "LOAD_RESULTS_FROM = None # e.g. 'results.pkl'\n", "\n", - "os.makedirs(OUTPUT_DIR, exist_ok=True)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Submission Display-Name Map\n", - "Edit the right-hand side to control how names appear in tables and plots.\\nAny submission not listed here will be shown with its raw folder name." + "os.makedirs(OUTPUT_DIR, exist_ok=True)" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Maps raw folder names → display names used in tables, plots, and LaTeX output.\n", - "# Add or edit entries freely; unlisted names fall back to their raw folder name.\n", - "SUBMISSION_NAME_MAP = {\n", - " 'ademamix': 'AdEMAMix',\n", - " 'cautious_nadamw': 'Cautious NAdamW',\n", - " 'lion': 'Lion',\n", - " 'muon': 'Muon (JAX)',\n", - " 'muon_torch': 'Muon (PyTorch)',\n", - " 'muon_torch_jax_hps': 'Muon (PyTorch, JAX HPs)',\n", - " 'muon_torch_jax_hps_achandr': 'Muon (PyTorch, JAX HPs, achandr)',\n", - " 'muon_torch_jax_hps_lr_fix': 'Muon (PyTorch, JAX HPs, LR Fix)',\n", - " 'muon_torch_replicated_jax_hps': 'Muon (Replicated, JAX HPs)',\n", - " 'muon_torch_replicated_torch_hps': 'Muon (Replicated, Torch HPs)',\n", - " 'nadamw': 'NAdamW',\n", - " 'nadamw_baselinev05': 'NAdamW (Baseline v0.5)',\n", - " 'nadamw_resnet': 'NAdamW (ResNet)',\n", - " 'schedule_free_adamw': 'Schedule-Free AdamW',\n", - " 'schedule_free_adamw_jax': 'Schedule-Free AdamW (JAX)',\n", - " 'schedule_free_adamw_jax_v2': 'Schedule-Free AdamW (JAX v2)',\n", - " 'schedule_free_adamw_v2': 'Schedule-Free AdamW v2',\n", - " 'single_worker_diloco': 'DiLoCo (Single Worker)',\n", - " 'single_worker_dilocov2': 'DiLoCo v2 (Single Worker)',\n", - "}\n", - "\n", - "def pretty(name):\n", - " \"\"\"Return the display name for a submission, falling back to the raw name.\"\"\"\n", - " return SUBMISSION_NAME_MAP.get(name, name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Helpers: Submission Summary & Leaderboard Score\n", - "\n", - "Imported directly from `scoring/score_submissions.py` so the notebook can never\n", - "drift from the official pipeline.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, + "execution_count": null, + "id": "2fef75d7", "metadata": {}, "outputs": [], "source": [ - "from scoring.score_submissions import (\n", - " compute_leaderboard_score,\n", - " get_submission_summary as _get_submission_summary,\n", + "from artifacts.tech_report_v1.report_data import load_runs, write_summaries\n", + "from artifacts.tech_report_v1.report_utils import (\n", + " pretty,\n", + " save_figure,\n", + ")\n", + "from artifacts.tech_report_v1.section_7_frameworks.plot_framework_comparison import (\n", + " step_times,\n", + " plot_framework_comparison,\n", ")\n", "\n", - "\n", - "def get_submission_summary(df):\n", - " \"\"\"Canonical per-workload summary, bound to this notebook's config.\"\"\"\n", - " return _get_submission_summary(df, WORKLOAD_CONFIG)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Plot Theme\n", - "\n", - "Sets a publication-quality matplotlib style and defines `plot_performance_profiles_styled`.\\nWith 19 submissions the plot cycles through 10 colorblind-safe colors × 4 line styles so it stays readable in greyscale and print." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import itertools\n", - "import math\n", - "import matplotlib as mpl\n", - "\n", - "# ── Colorblind-safe 10-color palette (Paul Tol \"bright\") ──────────────────────\n", - "_COLORS = [\n", - " '#4477AA', # blue\n", - " '#EE6677', # red\n", - " '#228833', # green\n", - " '#CCBB44', # yellow\n", - " '#66CCEE', # cyan\n", - " '#AA3377', # purple\n", - " '#BBBBBB', # grey\n", - " '#EE7733', # orange\n", - " '#009988', # teal\n", - " '#CC3311', # vermillion\n", - "]\n", - "_LINE_STYLES = ['-', '--', '-.', ':']\n", - "\n", - "# 10 solid lines, then 9 dashed, etc. — enough for 19 submissions.\n", - "_STYLE_CYCLE = list(itertools.islice(\n", - " ((c, ls) for ls in _LINE_STYLES for c in _COLORS),\n", - " 40,\n", - "))\n", - "\n", - "# ── rcParams: tuned for a two-column tech-report (e.g. NeurIPS / ICML) ────────\n", - "mpl.rcParams.update({\n", - " 'figure.figsize': (9, 4.5),\n", - " 'figure.dpi': 150,\n", - " 'savefig.dpi': 300,\n", - " 'savefig.bbox': 'tight',\n", - " 'savefig.pad_inches': 0.05,\n", - " 'font.family': 'serif',\n", - " 'font.serif': ['Times New Roman', 'DejaVu Serif'],\n", - " 'font.size': 11,\n", - " 'axes.titlesize': 11,\n", - " 'axes.labelsize': 11,\n", - " 'xtick.labelsize': 10,\n", - " 'ytick.labelsize': 10,\n", - " 'legend.fontsize': 8.5,\n", - " 'legend.title_fontsize': 9,\n", - " 'legend.framealpha': 0.92,\n", - " 'legend.edgecolor': '#cccccc',\n", - " 'legend.borderpad': 0.5,\n", - " 'legend.labelspacing': 0.35,\n", - " 'axes.grid': True,\n", - " 'grid.alpha': 0.3,\n", - " 'grid.linestyle': '--',\n", - " 'grid.linewidth': 0.6,\n", - " 'axes.spines.top': False,\n", - " 'axes.spines.right': False,\n", - " 'axes.linewidth': 0.8,\n", - " 'lines.linewidth': 1.6,\n", - "})\n", - "\n", - "\n", - "def plot_performance_profiles_styled(\n", - " perf_df,\n", - " df_col,\n", - " scale='linear',\n", - " save_dir=None,\n", - " figsize=(9, 4.5),\n", - " title=None,\n", - "):\n", - " \"\"\"\n", - " Publication-quality performance profile plot for a tech report.\n", - "\n", - " Each submission gets a unique (color, line-style) pair so the figure\n", - " remains legible in greyscale and for colorblind readers.\n", - " The legend is placed below the plot.\n", - " Saves both a vector PDF and a 300-dpi PNG.\n", - " \"\"\"\n", - " style_iter = iter(_STYLE_CYCLE)\n", - "\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - "\n", - " for submission in perf_df.index:\n", - " color, linestyle = next(style_iter)\n", - " ax.plot(\n", - " perf_df.columns,\n", - " perf_df.loc[submission],\n", - " label=submission,\n", - " color=color,\n", - " linestyle=linestyle,\n", - " linewidth=1.6,\n", - " alpha=0.92,\n", - " )\n", - "\n", - " ax.set_xlabel('Performance ratio τ (relative to best submission)')\n", - " ax.set_ylabel('Fraction of workloads solved ρ(τ)')\n", - " ax.set_xlim(perf_df.columns.min(), perf_df.columns.max())\n", - " ax.set_ylim(-0.02, 1.05)\n", - " ax.yaxis.set_major_formatter(mpl.ticker.PercentFormatter(xmax=1, decimals=0))\n", - "\n", - " if title:\n", - " ax.set_title(title, pad=8)\n", - "\n", - " # ── Legend below the axes ──────────────────────────────────────────────────\n", - " n = len(perf_df.index)\n", - " ncol = max(3, math.ceil(n / 4)) # ~4 rows for any submission count\n", - " ax.legend(\n", - " loc='upper center',\n", - " bbox_to_anchor=(0.5, -0.16),\n", - " ncol=ncol,\n", - " borderaxespad=0,\n", - " frameon=True,\n", - " handlelength=2.0,\n", - " handleheight=0.9,\n", - " columnspacing=1.0,\n", - " labelspacing=0.35,\n", - " )\n", - "\n", - " # Reserve vertical space proportional to the number of legend rows so the\n", - " # legend never overlaps the x-axis label.\n", - " n_rows = math.ceil(n / ncol)\n", - " pts_per_row = mpl.rcParams['legend.fontsize'] * 1.55\n", - " fig_height_pts = figsize[1] * 72\n", - " legend_frac = (n_rows * pts_per_row + 28) / fig_height_pts\n", - " fig.subplots_adjust(\n", - " left=0.07,\n", - " right=0.98,\n", - " top=0.91 if title else 0.97,\n", - " bottom=min(0.10 + legend_frac, 0.55),\n", - " )\n", - "\n", - " if save_dir:\n", - " base = os.path.join(save_dir, f'performance_profile_by_{df_col}')\n", - " fig.savefig(f'{base}.pdf', format='pdf')\n", - " fig.savefig(f'{base}.png', format='png', dpi=300)\n", - " print(f'Saved → {base}.pdf / .png')\n", - "\n", - " return fig, ax" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 6. Load & Summarize Submissions" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Excluding (5): ['muon_torch_jax_hps', 'muon_torch_jax_hps_achandr', 'muon_torch_jax_hps_lr_fix', 'muon_torch_replicated_jax_hps', 'muon_torch_replicated_torch_hps']\n", - "Including (0): (all)\n", - "\n", - "Found 19 folders:\n", - " ✓ ademamix\n", - " ✓ cautious_nadamw\n", - " ✓ lion\n", - " ✓ muon\n", - " ✓ muon_torch\n", - " ✗ ← excluded muon_torch_jax_hps\n", - " ✗ ← excluded muon_torch_jax_hps_achandr\n", - " ✗ ← excluded muon_torch_jax_hps_lr_fix\n", - " ✗ ← excluded muon_torch_replicated_jax_hps\n", - " ✗ ← excluded muon_torch_replicated_torch_hps\n", - " ✓ nadamw\n", - " ✓ nadamw_baselinev05\n", - " ✓ nadamw_resnet\n", - " ✓ schedule_free_adamw\n", - " ✓ schedule_free_adamw_jax\n", - " ✓ schedule_free_adamw_jax_v2\n", - " ✓ schedule_free_adamw_v2\n", - " ✓ single_worker_diloco\n", - " ✓ single_worker_dilocov2\n", - "\n", - "\n", - "=== AdEMAMix (ademamix) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload trial \\\n", - "0 imagenet_resnet_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "1 fastmri_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "2 imagenet_vit_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "3 librispeech_conformer_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "4 ogbg_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "5 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "6 wmt_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "7 criteo1tb_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "8 finewebedu_lm_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "9 imagenet_resnet_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "10 fastmri_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "11 imagenet_vit_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "12 librispeech_conformer_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "13 ogbg_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "14 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "15 wmt_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "16 criteo1tb_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "17 finewebedu_lm_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "18 imagenet_resnet_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "19 fastmri_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "20 librispeech_conformer_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "21 ogbg_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "22 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "23 wmt_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "24 criteo1tb_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "25 finewebedu_lm_pytorch (trial_1, logs/self_tuning/ademamix) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [212.712702035904, 355.51188921928406, 477.651... \n", - "1 study_2 [537.8633160591125, 545.0480992794037, 552.481... \n", - "2 study_2 [211.12093210220337, 365.9394989013672, 510.08... \n", - "3 study_2 [66.39019894599915, 111.02748608589172, 156.10... \n", - "4 study_2 [75.97684216499329, 106.20078134536745, 136.34... \n", - "5 study_2 [78.01297760009766, 126.90059351921082, 177.35... \n", - "6 study_2 [439.05135011672974, 644.2240459918976, 874.02... \n", - "7 study_2 [902.4336903095244, 1685.4316337108612, 2471.5... \n", - "8 study_2 [218.47494173049927, 400.5624976158142, 582.46... \n", - "9 study_1 [202.49451613426208, 340.2287197113037, 465.98... \n", - "10 study_1 [477.7719442844391, 486.96115922927856, 495.53... \n", - "11 study_1 [211.129508972168, 338.6316747665405, 480.6344... \n", - "12 study_1 [66.44532704353333, 110.58894848823547, 155.92... \n", - "13 study_1 [75.74219942092896, 105.7307584285736, 136.079... \n", - "14 study_1 [74.23156142234802, 122.02011895179749, 169.75... \n", - "15 study_1 [441.09179854393005, 634.3780562877655, 825.61... \n", - "16 study_1 [2540.4423489570618, 3847.182233333588, 5044.2... \n", - "17 study_1 [220.08728098869324, 402.1214201450348, 584.38... \n", - "18 study_0 [205.1945788860321, 322.2347002029419, 439.740... \n", - "19 study_0 [558.2362158298492, 564.1862885951996, 570.134... \n", - "20 study_0 [49.40755701065064, 97.66984963417052, 144.912... \n", - "21 study_0 [80.7018871307373, 110.85863971710204, 141.248... \n", - "22 study_0 [73.9581229686737, 119.08293294906616, 167.936... \n", - "23 study_0 [432.1460151672363, 626.3125128746033, 835.052... \n", - "24 study_0 [904.62606215477, 1678.4431009292605, 2456.474... \n", - "25 study_0 [220.4012830257416, 402.1314270496368, 584.046... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3759973049163818, 0.4364473819732666, ... \n", - "1 [0.0, 0.0418946743011474, 0.0896229743957519, ... \n", - "2 [0.0, 0.0444486141204834, 0.0953114032745361, ... \n", - "3 [0.0, 0.0530710220336914, 0.1154971122741699, ... \n", - "4 [0.0, 0.0435738563537597, 0.0926084518432617, ... \n", - "5 [0.0, 0.0552237033843994, 0.1156258583068847, ... \n", - "6 [0.0, 0.0475642681121826, 0.1040198802947998, ... \n", - "7 [0.0, 0.0377829074859619, 0.084223985671997, 0... \n", - "8 [0.0, 0.0446391105651855, 0.0909500122070312, ... \n", - "9 [0.0, 0.0446701049804687, 0.107499361038208, 0... \n", - "10 [0.0, 0.0413570404052734, 0.0871007442474365, ... \n", - "11 [0.0, 0.1163341999053955, 0.4161286354064941, ... \n", - "12 [0.0, 0.049234390258789, 0.1046385765075683, 0... \n", - "13 [0.0, 0.0446212291717529, 0.0964448451995849, ... \n", - "14 [0.0, 0.05338716506958, 0.1096694469451904, 0.... \n", - "15 [0.0, 0.0460469722747802, 0.1044700145721435, ... \n", - "16 [0.0, 0.0880823135375976, 0.1391046047210693, ... \n", - "17 [0.0, 0.0388789176940918, 0.0849249362945556, ... \n", - "18 [0.0, 0.0465962886810302, 0.1253275871276855, ... \n", - "19 [0.0, 0.1442329883575439, 0.3460185527801513, ... \n", - "20 [0.0, 0.0631611347198486, 0.3700737953186035, ... \n", - "21 [0.0, 0.0459675788879394, 0.099015474319458, 0... \n", - "22 [0.0, 0.1308517456054687, 0.2895371913909912, ... \n", - "23 [0.0, 0.0415325164794921, 0.0913481712341308, ... \n", - "24 [0.0, 0.0439250469207763, 0.0922863483428955, ... \n", - "25 [0.0, 0.0384209156036376, 0.0859086513519287, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [180.99007844924927, 2183.0760629177094, 4176.... \n", - "1 [216.8043031692505, 326.4079144001007, 436.609... \n", - "2 [107.94935297966003, 2693.0065586566925, 5260.... \n", - "3 [20.7898178100586, 1767.2243180274963, 3513.03... \n", - "4 [14.040167093276978, 465.18797612190247, 916.2... \n", - "5 [41.37631154060364, 1486.9480469226835, 2932.7... \n", - "6 [60.56462502479553, 702.6060817241669, 1344.74... \n", - "7 [4.420486688613892, 360.12546730041504, 716.52... \n", - "8 [45.00050735473633, 2613.519317626953, 5182.03... \n", - "9 [122.88367915153503, 2125.182219982147, 4119.2... \n", - "10 [205.920597076416, 315.2158372402191, 424.9942... \n", - "11 [101.01275086402892, 2664.655146598816, 5236.0... \n", - "12 [10.997874021530151, 1758.298228263855, 3504.5... \n", - "13 [16.68334436416626, 467.765088558197, 918.8868... \n", - "14 [37.72291231155396, 1483.5545628070831, 2929.2... \n", - "15 [73.81090426445007, 715.8868398666382, 1357.96... \n", - "16 [13.06631851196289, 371.457216501236, 728.1195... \n", - "17 [44.79646825790405, 2613.4691846370697, 5182.3... \n", - "18 [133.15646123886108, 2138.753703594208, 4134.8... \n", - "19 [239.4470498561859, 348.767276763916, 458.7664... \n", - "20 [14.887816667556764, 1759.8591146469116, 3505.... \n", - "21 [27.189526081085205, 478.3232114315033, 929.55... \n", - "22 [60.05421495437622, 1505.8693597316742, 2951.5... \n", - "23 [51.25460982322693, 693.4892127513885, 1335.81... \n", - "24 [5.074931144714356, 360.9079949855805, 717.175... \n", - "25 [45.30120277404785, 2613.741951227188, 5182.28... \n", - "\n", - " global_step \\\n", - "0 [1, 1831, 4403, 7275, 10308, 13274, 16099, 191... \n", - "1 [1, 285, 390, 492, 592, 687, 789, 897, 3004, 5... \n", - "2 [1, 2411, 5817, 9217, 12359, 15712, 18946, 221... \n", - "3 [1, 1497, 3379, 5751, 8056, 10375, 12845, 1519... \n", - "4 [1, 1936, 3875, 5802, 7730, 9657, 11600, 13547... \n", - "5 [1, 1056, 2516, 4063, 5897, 7650, 9368, 11220,... \n", - "6 [1, 4157, 8331, 12505, 16682, 20857, 25034, 29... \n", - "7 [1, 364, 720, 1083, 1443, 1799, 2161, 2518, 28... \n", - "8 [1, 6353, 12710, 19068, 25427, 31786, 38144, 4... \n", - "9 [1, 1891, 4599, 7546, 10774, 13712, 16935, 198... \n", - "10 [1, 295, 408, 525, 642, 755, 872, 1400, 3680, ... \n", - "11 [1, 3902, 7198, 10468, 13629, 16988, 20296, 23... \n", - "12 [1, 1593, 3736, 6040, 8451, 10951, 13278, 1574... \n", - "13 [1, 1938, 3868, 5788, 7709, 9635, 11557, 13486... \n", - "14 [1, 1080, 2515, 4054, 5951, 7854, 9693, 11440,... \n", - "15 [1, 4145, 8308, 12475, 16633, 20794, 24959, 29... \n", - "16 [1, 164, 323, 485, 643, 802, 971, 1127, 1295, ... \n", - "17 [1, 6359, 12723, 19093, 25462, 31834, 38205, 4... \n", - "18 [1, 2031, 4880, 8187, 11133, 14368, 17297, 204... \n", - "19 [1, 288, 388, 489, 590, 685, 781, 882, 1067, 3... \n", - "20 [1, 2740, 5058, 7526, 9964, 12268, 14740, 1717... \n", - "21 [1, 1947, 3894, 5836, 7832, 9885, 11944, 13993... \n", - "22 [1, 1095, 2726, 4466, 6199, 8103, 10024, 11921... \n", - "23 [1, 4164, 8350, 12536, 16720, 20907, 25095, 29... \n", - "24 [1, 360, 726, 1086, 1451, 1824, 2194, 2558, 29... \n", - "25 [1, 6320, 12651, 18984, 25318, 31648, 37979, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "\n", - " score \\\n", - "0 [180.99007844924927, 2183.0760629177094, 4176.... \n", - "1 [216.8043031692505, 326.4079144001007, 436.609... \n", - "2 [107.94935297966003, 2693.0065586566925, 5260.... \n", - "3 [20.7898178100586, 1767.2243180274963, 3513.03... \n", - "4 [14.040167093276978, 465.18797612190247, 916.2... \n", - "5 [41.37631154060364, 1486.9480469226835, 2932.7... \n", - "6 [60.56462502479553, 702.6060817241669, 1344.74... \n", - "7 [4.420486688613892, 360.12546730041504, 716.52... \n", - "8 [45.00050735473633, 2613.519317626953, 5182.03... \n", - "9 [122.88367915153503, 2125.182219982147, 4119.2... \n", - "10 [205.920597076416, 315.2158372402191, 424.9942... \n", - "11 [101.01275086402892, 2664.655146598816, 5236.0... \n", - "12 [10.997874021530151, 1758.298228263855, 3504.5... \n", - "13 [16.68334436416626, 467.765088558197, 918.8868... \n", - "14 [37.72291231155396, 1483.5545628070831, 2929.2... \n", - "15 [73.81090426445007, 715.8868398666382, 1357.96... \n", - "16 [13.06631851196289, 371.457216501236, 728.1195... \n", - "17 [44.79646825790405, 2613.4691846370697, 5182.3... \n", - "18 [133.15646123886108, 2138.753703594208, 4134.8... \n", - "19 [239.4470498561859, 348.767276763916, 458.7664... \n", - "20 [14.887816667556764, 1759.8591146469116, 3505.... \n", - "21 [27.189526081085205, 478.3232114315033, 929.55... \n", - "22 [60.05421495437622, 1505.8693597316742, 2951.5... \n", - "23 [51.25460982322693, 693.4892127513885, 1335.81... \n", - "24 [5.074931144714356, 360.9079949855805, 717.175... \n", - "25 [45.30120277404785, 2613.741951227188, 5182.28... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0008, 0.0934, 0.2763, 0.3571, 0.3992, 0.419... ... \n", - "1 NaN ... \n", - "2 [0.0026, 0.0731, 0.2118, 0.2776, 0.3254, 0.352... ... \n", - "3 NaN ... \n", - "4 [0.4619208937711783, 0.9835083753144902, 0.984... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.5858927430131893, 0.628... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0007, 0.1089, 0.3003, 0.3899, 0.3996, 0.427... ... \n", - "10 NaN ... \n", - "11 [0.0029, 0.1314, 0.2494, 0.2939, 0.3364, 0.368... ... \n", - "12 NaN ... \n", - "13 [0.4230047614675731, 0.9835353286069612, 0.984... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.582418220905235, 0.6315... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0012, 0.1117, 0.3156, 0.3955, 0.3672, 0.421... ... \n", - "19 NaN ... \n", - "20 NaN ... \n", - "21 [0.4293198336644938, 0.9834970043942288, 0.984... ... \n", - "22 NaN ... \n", - "23 [0.0007088489919237, 0.5865783510545581, 0.630... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [1.5362719065321295, 0.5788924829817023, 0.292... \n", - "4 NaN \n", - "5 [2.94109013662917, 0.597344662772172, 0.293844... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.0943368898759234, 0.5228986626756144, 0.247... \n", - "13 NaN \n", - "14 [2.7858446386327427, 0.5173465939265196, 0.284... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.7491333944865544, 0.2916815526480954, 0.224... \n", - "21 NaN \n", - "22 [2.824593250615556, 0.5557475981267803, 0.2923... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0267209558034942, 0.0978376054268129, 0.152... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0271462820714895, 0.0954856700090699, 0.152... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0257220047936941, 0.0980318224534722, 0.169... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0210783466112722, 0.1041319429622846, 0.189... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0215029409861362, 0.0976289666036284, 0.188... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0213845900783115, 0.1060675831054963, 0.197... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0236058359447, 0.1004020666313432, 0.157579... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0259481132931877, 0.0999415377545876, 0.155... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0242800297084239, 0.1019191154000473, 0.164... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 21.63589020280488, 24.54120106999433, 25... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 20.96236302286336, 24.579385884157613, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [8.423332008968271e-11, 21.796714716189296, 24... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 26.611518146345656, 28.97831885360621, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 26.02344332292685, 29.106520973630467, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 26.62657102641582, 28.9606259556848, 33.... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 23.275810259866887, 25.48070247168356, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 22.11825433109493, 25.730751828327108, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 23.15849105916398, 25.66725228083704, 26... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61312.16303969419, 34.4228276985674, 30.45612... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60663.447855259445, 34.54052703538431, 30.533... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63774.65379783826, 34.657624014547494, 30.286... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61256.367968396415, 34.1707455559584, 30.1575... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60741.87982645398, 34.293349615470774, 30.231... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63813.26303703969, 34.44406182767969, 30.0087... \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
7criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236857839.1931647.839193e+031.00108310666
16criteo1tb_pytorchtrial_1validation/loss0.123735False0.12421113214.635874inf1.00108310666
24criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236507835.5408277.479551e+031.00108310666
1fastmri_pytorchtrial_1validation/ssim0.723653True0.7248101311.1073641.311107e+030.94203918094
10fastmri_pytorchtrial_1validation/ssim0.723653True0.7249511517.7321911.517732e+030.94203918094
19fastmri_pytorchtrial_1validation/ssim0.723653True0.7248941555.3687831.555369e+030.94203918094
8finewebedu_lm_pytorchtrial_1validation/ppl22.299500True22.14082918025.6362031.802564e+040.40403272000
17finewebedu_lm_pytorchtrial_1validation/ppl22.299500True22.23496018027.6191791.802762e+040.40403272000
25finewebedu_lm_pytorchtrial_1validation/ppl22.299500True22.24743818025.8968911.802590e+040.40403272000
0imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.60218059997.685173inf0.674003195999
9imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.61658073926.784148inf0.674003195999
18imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.61518073948.011013inf0.674003195999
2imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.61544095268.045406inf0.802424167999
11imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.61512092620.537466inf0.802424167999
3librispeech_conformer_pytorchtrial_1validation/wer0.085884True0.08483654136.8768985.413688e+040.73051776000
12librispeech_conformer_pytorchtrial_1validation/wer0.085884True0.08389948894.8542674.889485e+040.73051776000
20librispeech_conformer_pytorchtrial_1validation/wer0.085884True0.08426648888.9719204.888897e+040.73051776000
5librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.12007034737.411699inf0.78845938400
14librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11852528953.8591182.895386e+040.78845938400
22librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.12157633312.740230inf0.78845938400
4ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2872657232.4202166.329966e+030.23044052000
13ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2920398137.1006876.332587e+030.23044052000
21ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2833055891.7984275.891798e+030.23044052000
6wmt_pytorchtrial_1validation/bleu30.849100True30.87605717399.6399421.739964e+040.153800120000
15wmt_pytorchtrial_1validation/bleu30.849100False30.80807419338.098572inf0.153800120000
23wmt_pytorchtrial_1validation/bleu30.849100True30.86705916752.3562831.675236e+040.153800120000
\n", - "
" - ], - "text/plain": [ - " workload trial \\\n", - "7 criteo1tb_pytorch trial_1 \n", - "16 criteo1tb_pytorch trial_1 \n", - "24 criteo1tb_pytorch trial_1 \n", - "1 fastmri_pytorch trial_1 \n", - "10 fastmri_pytorch trial_1 \n", - "19 fastmri_pytorch trial_1 \n", - "8 finewebedu_lm_pytorch trial_1 \n", - "17 finewebedu_lm_pytorch trial_1 \n", - "25 finewebedu_lm_pytorch trial_1 \n", - "0 imagenet_resnet_pytorch trial_1 \n", - "9 imagenet_resnet_pytorch trial_1 \n", - "18 imagenet_resnet_pytorch trial_1 \n", - "2 imagenet_vit_pytorch trial_1 \n", - "11 imagenet_vit_pytorch trial_1 \n", - "3 librispeech_conformer_pytorch trial_1 \n", - "12 librispeech_conformer_pytorch trial_1 \n", - "20 librispeech_conformer_pytorch trial_1 \n", - "5 librispeech_deepspeech_pytorch trial_1 \n", - "14 librispeech_deepspeech_pytorch trial_1 \n", - "22 librispeech_deepspeech_pytorch trial_1 \n", - "4 ogbg_pytorch trial_1 \n", - "13 ogbg_pytorch trial_1 \n", - "21 ogbg_pytorch trial_1 \n", - "6 wmt_pytorch trial_1 \n", - "15 wmt_pytorch trial_1 \n", - "23 wmt_pytorch trial_1 \n", - "\n", - " val target metric name val target metric value \\\n", - "7 validation/loss 0.123735 \n", - "16 validation/loss 0.123735 \n", - "24 validation/loss 0.123735 \n", - "1 validation/ssim 0.723653 \n", - "10 validation/ssim 0.723653 \n", - "19 validation/ssim 0.723653 \n", - "8 validation/ppl 22.299500 \n", - "17 validation/ppl 22.299500 \n", - "25 validation/ppl 22.299500 \n", - "0 validation/accuracy 0.774310 \n", - "9 validation/accuracy 0.774310 \n", - "18 validation/accuracy 0.774310 \n", - "2 validation/accuracy 0.773090 \n", - "11 validation/accuracy 0.773090 \n", - "3 validation/wer 0.085884 \n", - "12 validation/wer 0.085884 \n", - "20 validation/wer 0.085884 \n", - "5 validation/wer 0.119936 \n", - "14 validation/wer 0.119936 \n", - "22 validation/wer 0.119936 \n", - "4 validation/mean_average_precision 0.280980 \n", - "13 validation/mean_average_precision 0.280980 \n", - "21 validation/mean_average_precision 0.280980 \n", - "6 validation/bleu 30.849100 \n", - "15 validation/bleu 30.849100 \n", - "23 validation/bleu 30.849100 \n", - "\n", - " val target reached best metric value on val \\\n", - "7 True 0.123685 \n", - "16 False 0.124211 \n", - "24 True 0.123650 \n", - "1 True 0.724810 \n", - "10 True 0.724951 \n", - "19 True 0.724894 \n", - "8 True 22.140829 \n", - "17 True 22.234960 \n", - "25 True 22.247438 \n", - "0 False 0.602180 \n", - "9 False 0.616580 \n", - "18 False 0.615180 \n", - "2 False 0.615440 \n", - "11 False 0.615120 \n", - "3 True 0.084836 \n", - "12 True 0.083899 \n", - "20 True 0.084266 \n", - "5 False 0.120070 \n", - "14 True 0.118525 \n", - "22 False 0.121576 \n", - "4 True 0.287265 \n", - "13 True 0.292039 \n", - "21 True 0.283305 \n", - "6 True 30.876057 \n", - "15 False 30.808074 \n", - "23 True 30.867059 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "7 7839.193164 7.839193e+03 1.001083 \n", - "16 13214.635874 inf 1.001083 \n", - "24 7835.540827 7.479551e+03 1.001083 \n", - "1 1311.107364 1.311107e+03 0.942039 \n", - "10 1517.732191 1.517732e+03 0.942039 \n", - "19 1555.368783 1.555369e+03 0.942039 \n", - "8 18025.636203 1.802564e+04 0.404032 \n", - "17 18027.619179 1.802762e+04 0.404032 \n", - "25 18025.896891 1.802590e+04 0.404032 \n", - "0 59997.685173 inf 0.674003 \n", - "9 73926.784148 inf 0.674003 \n", - "18 73948.011013 inf 0.674003 \n", - "2 95268.045406 inf 0.802424 \n", - "11 92620.537466 inf 0.802424 \n", - "3 54136.876898 5.413688e+04 0.730517 \n", - "12 48894.854267 4.889485e+04 0.730517 \n", - "20 48888.971920 4.888897e+04 0.730517 \n", - "5 34737.411699 inf 0.788459 \n", - "14 28953.859118 2.895386e+04 0.788459 \n", - "22 33312.740230 inf 0.788459 \n", - "4 7232.420216 6.329966e+03 0.230440 \n", - "13 8137.100687 6.332587e+03 0.230440 \n", - "21 5891.798427 5.891798e+03 0.230440 \n", - "6 17399.639942 1.739964e+04 0.153800 \n", - "15 19338.098572 inf 0.153800 \n", - "23 16752.356283 1.675236e+04 0.153800 \n", - "\n", - " step_hint \n", - "7 10666 \n", - "16 10666 \n", - "24 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "8 72000 \n", - "17 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "2 167999 \n", - "11 167999 \n", - "3 76000 \n", - "12 76000 \n", - "20 76000 \n", - "5 38400 \n", - "14 38400 \n", - "22 38400 \n", - "4 52000 \n", - "13 52000 \n", - "21 52000 \n", - "6 120000 \n", - "15 120000 \n", - "23 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Cautious NAdamW (cautious_nadamw) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "1 fastmri_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "2 wmt_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "3 ogbg_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "7 criteo1tb_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "8 imagenet_resnet_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "9 fastmri_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "10 wmt_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "11 ogbg_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "12 librispeech_conformer_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "13 librispeech_deepspeech_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "14 imagenet_vit_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "15 criteo1tb_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "16 imagenet_resnet_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "17 fastmri_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "18 wmt_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "19 ogbg_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "20 librispeech_conformer_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "21 librispeech_deepspeech_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "22 imagenet_vit_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "23 finewebedu_lm_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "24 criteo1tb_jax (trial_1, logs/self_tuning/cautious_nadamw) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [53.47813010215759, 76.23289203643799, 100.670... \n", - "1 study_2 [459.32197999954224, 463.0431926250458, 466.59... \n", - "2 study_2 [917.7761840820312, 1421.673722743988, 1965.90... \n", - "3 study_2 [258.8789486885071, 375.4195799827576, 493.516... \n", - "4 study_2 [196.168021440506, 286.378764629364, 389.67272... \n", - "5 study_2 [270.9215397834778, 375.1704075336456, 484.343... \n", - "6 study_2 [72.33083653450012, 103.16862964630128, 165.79... \n", - "7 study_2 [1054.2919402122498, 1948.0834064483645, 2846.... \n", - "8 study_1 [55.10020852088928, 78.96190857887268, 103.808... \n", - "9 study_1 [464.2727341651917, 468.0189688205719, 471.521... \n", - "10 study_1 [921.7007367610933, 1437.4780912399292, 1950.5... \n", - "11 study_1 [256.31949853897095, 372.6062090396881, 488.46... \n", - "12 study_1 [275.27134823799133, 362.620612859726, 451.971... \n", - "13 study_1 [279.7016122341156, 390.7022712230682, 504.003... \n", - "14 study_1 [65.60101318359375, 89.84521460533142, 115.176... \n", - "15 study_1 [937.6430859565736, 1841.45858502388, 2740.799... \n", - "16 study_0 [53.63730978965759, 76.16114783287048, 99.6792... \n", - "17 study_0 [819.9483363628387, 823.6636004447937, 827.160... \n", - "18 study_0 [928.2115778923036, 1470.1444790363312, 1993.5... \n", - "19 study_0 [261.1435639858246, 378.28789138793945, 495.29... \n", - "20 study_0 [244.66708064079285, 369.91285848617554, 506.3... \n", - "21 study_0 [269.88561844825745, 372.2939569950104, 474.10... \n", - "22 study_0 [73.81218934059143, 97.8288414478302, 122.8484... \n", - "23 study_0 [333.78825855255127, 666.2949831485748, 998.65... \n", - "24 study_0 [1084.5783200263977, 1988.1498131752007, 2869.... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0542645454406738, 0.1289248466491699, ... \n", - "1 [0.0, 0.0521607398986816, 0.0849690437316894, ... \n", - "2 [0.0, 0.3827900886535644, 0.4186396598815918, ... \n", - "3 [0.0, 0.0671501159667968, 0.1063554286956787, ... \n", - "4 [0.0, 0.2826833724975586, 0.5167193412780762, ... \n", - "5 [0.0, 0.325585126876831, 0.3746006488800049, 0... \n", - "6 [0.0, 0.054866075515747, 0.161710500717163, 0.... \n", - "7 [0.0, 0.568652868270874, 0.6048638820648193, 0... \n", - "8 [0.0, 0.0523595809936523, 0.0858099460601806, ... \n", - "9 [0.0, 0.0547347068786621, 0.0911693572998046, ... \n", - "10 [0.0, 0.3277342319488525, 0.3654773235321045, ... \n", - "11 [0.0, 0.321786880493164, 0.3612854480743408, 0... \n", - "12 [0.0, 0.0805287361145019, 0.1299047470092773, ... \n", - "13 [0.0, 0.3699574470520019, 0.420339822769165, 0... \n", - "14 [0.0, 0.2905011177062988, 0.4212462902069092, ... \n", - "15 [0.0, 0.0547266006469726, 0.0887467861175537, ... \n", - "16 [0.0, 0.0531654357910156, 0.1693005561828613, ... \n", - "17 [0.0, 0.0502986907958984, 0.0812957286834716, ... \n", - "18 [0.0, 0.0638456344604492, 0.1035013198852539, ... \n", - "19 [0.0, 0.3924715518951416, 0.430260419845581, 0... \n", - "20 [0.0, 0.3927524089813232, 0.444305419921875, 0... \n", - "21 [0.0, 0.0797834396362304, 0.128232717514038, 0... \n", - "22 [0.0, 0.396827220916748, 0.5474104881286621, 0... \n", - "23 [0.0, 0.3884761333465576, 0.4329996109008789, ... \n", - "24 [0.0, 0.1520502567291259, 0.1839184761047363, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [64.11126923561096, 2060.0436477661133, 4056.1... \n", - "1 [173.50703597068787, 283.9921712875366, 394.84... \n", - "2 [64.3289155960083, 708.0036761760712, 1351.936... \n", - "3 [20.6119384765625, 472.67937707901, 924.644150... \n", - "4 [180.09365367889404, 1933.5918200016024, 3686.... \n", - "5 [173.08022499084473, 1620.338052034378, 3082.1... \n", - "6 [59.24174761772156, 2630.226944208145, 5201.14... \n", - "7 [12.798023223876951, 368.3202650547028, 725.22... \n", - "8 [64.66640973091125, 2060.7168028354645, 4056.8... \n", - "9 [169.22429084777832, 279.30333065986633, 390.2... \n", - "10 [65.24013447761536, 708.9454159736633, 1352.93... \n", - "11 [22.744362354278564, 474.54318714141846, 926.5... \n", - "12 [199.64375734329224, 1955.2376239299767, 3711.... \n", - "13 [174.93796801567078, 1628.2746636867523, 3077.... \n", - "14 [58.78333520889282, 2629.6014087200165, 5200.6... \n", - "15 [9.461503505706789, 366.13179183006287, 722.53... \n", - "16 [65.33910250663757, 2061.23659825325, 4057.295... \n", - "17 [253.8499023914337, 364.27534556388855, 474.43... \n", - "18 [62.50007462501526, 706.4707531929016, 1350.42... \n", - "19 [23.31479907035828, 474.9575369358063, 926.934... \n", - "20 [200.7225790023804, 1961.2996790409088, 3710.2... \n", - "21 [172.16022396087646, 1619.7970101833344, 3073.... \n", - "22 [59.80580878257752, 2630.618901491165, 5201.44... \n", - "23 [28.26072239875793, 2598.9086496829987, 5170.0... \n", - "24 [9.774004220962524, 366.27075147628784, 722.47... \n", - "\n", - " global_step \\\n", - "0 [1, 7399, 15335, 23272, 31211, 39150, 47089, 5... \n", - "1 [1, 298, 418, 540, 665, 783, 899, 1428, 2443, ... \n", - "2 [1, 4668, 9816, 14964, 20116, 25264, 30410, 35... \n", - "3 [1, 2113, 4305, 6605, 8918, 11237, 13554, 1587... \n", - "4 [1, 782, 1525, 2041, 2781, 3431, 4008, 4758, 5... \n", - "5 [1, 365, 719, 1109, 1595, 1959, 2545, 2965, 35... \n", - "6 [1, 5368, 11097, 16796, 22519, 28238, 33907, 3... \n", - "7 [1, 355, 718, 1080, 1443, 1822, 2212, 2592, 29... \n", - "8 [1, 7406, 15368, 23329, 31290, 39251, 47213, 5... \n", - "9 [1, 295, 418, 539, 663, 781, 897, 1419, 2433, ... \n", - "10 [1, 4646, 9776, 14906, 20036, 25168, 30298, 35... \n", - "11 [1, 2091, 4307, 6532, 8755, 10979, 13203, 1544... \n", - "12 [1, 475, 931, 1623, 2110, 2828, 3523, 4076, 48... \n", - "13 [1, 363, 727, 1141, 1658, 2018, 2642, 3037, 36... \n", - "14 [1, 5335, 10864, 16377, 21908, 27417, 32918, 3... \n", - "15 [1, 360, 731, 1116, 1502, 1867, 2236, 2624, 29... \n", - "16 [1, 7416, 15367, 23318, 31270, 39222, 47175, 5... \n", - "17 [1, 262, 317, 381, 443, 504, 566, 629, 687, 74... \n", - "18 [1, 4624, 9721, 14817, 19915, 25012, 30110, 35... \n", - "19 [1, 2113, 4377, 6661, 8916, 11197, 13468, 1572... \n", - "20 [1, 431, 872, 1448, 1907, 2581, 3053, 3790, 44... \n", - "21 [1, 373, 729, 1131, 1623, 2008, 2639, 3050, 37... \n", - "22 [1, 5246, 10791, 16315, 21837, 27346, 32853, 3... \n", - "23 [1, 5776, 11600, 17424, 23250, 29074, 34899, 4... \n", - "24 [1, 357, 713, 1068, 1449, 1825, 2200, 2577, 29... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [64.11126923561096, 2060.0436477661133, 4056.1... \n", - "1 [173.50703597068787, 283.9921712875366, 394.84... \n", - "2 [64.3289155960083, 708.0036761760712, 1351.936... \n", - "3 [20.6119384765625, 472.67937707901, 924.644150... \n", - "4 [180.09365367889404, 1933.5918200016024, 3686.... \n", - "5 [173.08022499084473, 1620.338052034378, 3082.1... \n", - "6 [59.24174761772156, 2630.226944208145, 5201.14... \n", - "7 [12.798023223876951, 368.3202650547028, 725.22... \n", - "8 [64.66640973091125, 2060.7168028354645, 4056.8... \n", - "9 [169.22429084777832, 279.30333065986633, 390.2... \n", - "10 [65.24013447761536, 708.9454159736633, 1352.93... \n", - "11 [22.744362354278564, 474.54318714141846, 926.5... \n", - "12 [199.64375734329224, 1955.2376239299767, 3711.... \n", - "13 [174.93796801567078, 1628.2746636867523, 3077.... \n", - "14 [58.78333520889282, 2629.6014087200165, 5200.6... \n", - "15 [9.461503505706789, 366.13179183006287, 722.53... \n", - "16 [65.33910250663757, 2061.23659825325, 4057.295... \n", - "17 [253.8499023914337, 364.27534556388855, 474.43... \n", - "18 [62.50007462501526, 706.4707531929016, 1350.42... \n", - "19 [23.31479907035828, 474.9575369358063, 926.934... \n", - "20 [200.7225790023804, 1961.2996790409088, 3710.2... \n", - "21 [172.16022396087646, 1619.7970101833344, 3073.... \n", - "22 [59.80580878257752, 2630.618901491165, 5201.44... \n", - "23 [28.26072239875793, 2598.9086496829987, 5170.0... \n", - "24 [9.774004220962524, 366.27075147628784, 722.47... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.00080000004, 0.42280003, 0.4661, 0.46980003... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5958631038665771, 0.642... ... \n", - "3 [0.5062430500984192, 0.9842243194580078, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.19530001, 0.3018, 0.34960002, 0.3897... ... \n", - "7 NaN ... \n", - "8 [0.00080000004, 0.41990003, 0.47700003, 0.4818... ... \n", - "9 NaN ... \n", - "10 [0.0007088489946909, 0.5942827463150024, 0.639... ... \n", - "11 [0.4493720233440399, 0.9840579628944396, 0.984... ... \n", - "12 NaN ... \n", - "13 NaN ... \n", - "14 [0.001, 0.1844, 0.29920003, 0.34820002, 0.3812... ... \n", - "15 NaN ... \n", - "16 [0.0011, 0.41320002, 0.4708, 0.49490002, 0.500... ... \n", - "17 NaN ... \n", - "18 [0.0007088489946909, 0.5977224111557007, 0.639... ... \n", - "19 [0.5034125447273254, 0.9839257001876832, 0.984... ... \n", - "20 NaN ... \n", - "21 NaN ... \n", - "22 [0.001, 0.1852, 0.2951, 0.35090002, 0.3686, 0.... ... \n", - "23 NaN ... \n", - "24 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0264434683762991, 0.1357419302974934, 0.186... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 [0.0257377199884663, 0.1349330808526143, 0.188... \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 [0.0283985430520721, 0.1322651706689524, 0.183... \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.5873556, 1.5037689, 0.8129022, 0.45209384, ... \n", - "5 [7.7118635, 1.6239316, 1.4979395, 1.0872473, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [7.823216, 1.5280322, 1.3773315, 0.82368153, 0... \n", - "13 [7.7545323, 1.8865759, 1.6371126, 1.3844644, 0... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [6.3144984, 1.5481284, 1.4650308, 0.9628712, 0... \n", - "21 [7.733238, 1.482744, 1.5655724, 1.4328241, 0.9... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9920378607844332, 0.899579550301627, 0.6415... \n", - "5 [3.91497572766234, 0.853208214002803, 0.848841... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.3951820933113968, 0.899579550301627, 0.8988... \n", - "13 [4.205309446915686, 0.8526394897731197, 0.8509... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.0380842118091524, 0.899579550301627, 0.8892... \n", - "21 [3.907480754778299, 0.8785570653829748, 0.8853... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.8723526, 1.4935609, 0.78827643, 0.42774177,... \n", - "5 [8.006404, 1.7055987, 1.5415457, 1.1210098, 0.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [8.062361, 1.5074098, 1.3654836, 0.8023209, 0.... \n", - "13 [7.990641, 2.0576968, 1.6998858, 1.4502625, 0.... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [6.6704044, 1.5218416, 1.4486065, 0.929039, 0.... \n", - "21 [7.9758477, 1.5585693, 1.6108615, 1.4473181, 0... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9896820273618891, 0.944635537887994, 0.6640... \n", - "5 [4.025659579784686, 0.8846316244773537, 0.8831... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.2126949586656397, 0.944635537887994, 0.9413... \n", - "13 [4.391682110655311, 0.883081707894791, 0.88696... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.1801532598962996, 0.944635537887994, 0.9265... \n", - "21 [4.051334777085979, 0.9158925665794732, 0.9218... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.556006, 1.5107346, 0.8824218, 0.5322696, 0.... \n", - "5 [7.7156754, 1.6395489, 1.53135, 1.1472689, 0.4... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [7.8196363, 1.5333942, 1.4015784, 0.89922535, ... \n", - "13 [7.7360797, 1.9125645, 1.6547824, 1.423782, 0.... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [6.2796364, 1.5544544, 1.4825281, 1.034126, 0.... \n", - "21 [7.707148, 1.5094348, 1.5772007, 1.456541, 1.0... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9914449862405252, 0.8967218654950997, 0.675... \n", - "5 [3.6665475788152366, 0.8561386568821513, 0.851... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.3946989813160815, 0.8967218654950997, 0.896... \n", - "13 [3.920320571621687, 0.8484912856660068, 0.8555... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.0184618355622073, 0.8967218654950997, 0.887... \n", - "21 [3.770134698015739, 0.8792062955631729, 0.8839... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "24 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [61888.85288374133, 42.65454246116733, 34.3687... \n", - "24 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [61864.009689522, 42.85635683143144, 34.469481... \n", - "24 NaN \n", - "\n", - "[25 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - "WARNING: The number of evals may be too low to calculate reliable step time for finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
7criteo1tb_jaxtrial_1validation/loss0.123735False0.1257002863.657990inf0.92663510666
15criteo1tb_jaxtrial_1validation/loss0.123735False0.1258371792.004785inf0.92663510666
24criteo1tb_jaxtrial_1validation/loss0.123735False0.1246949989.461620inf0.92663510666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7244391608.1886591.608189e+030.65597518094
9fastmri_jaxtrial_1validation/ssim0.723653True0.7238931383.1596401.383160e+030.65597518094
17fastmri_jaxtrial_1validation/ssim0.723653True0.7236822571.8153282.571815e+030.65597518094
23finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.63268625738.9816882.573898e+040.44144672000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.74660069885.510298inf0.251495195999
8imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.74748067896.184145inf0.251495195999
16imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.74964061917.019345inf0.251495195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.75060087452.666405inf0.495969167999
14imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.75158082308.665602inf0.495969167999
22imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.75034087448.367353inf0.495969167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14216264988.594796inf2.58983976000
12librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14262565012.818664inf2.58983976000
20librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14449964979.350942inf2.58983976000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.29431810338.725379inf2.79881238400
13librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.28728810334.769650inf2.79881238400
21librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.28534714680.395282inf2.79881238400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2845645444.7640414.992687e+030.19793652000
11ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2874225446.8105094.542640e+030.19793652000
19ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2809904995.6470064.995647e+030.19793652000
2wmt_jaxtrial_1validation/bleu30.849100True30.87610912943.7273851.294373e+040.125546120000
10wmt_jaxtrial_1validation/bleu30.849100True31.02074414876.4158941.423246e+040.125546120000
18wmt_jaxtrial_1validation/bleu30.849100True30.91251515517.6564441.551766e+040.125546120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "7 criteo1tb_jax trial_1 validation/loss \n", - "15 criteo1tb_jax trial_1 validation/loss \n", - "24 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "9 fastmri_jax trial_1 validation/ssim \n", - "17 fastmri_jax trial_1 validation/ssim \n", - "23 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "8 imagenet_resnet_jax trial_1 validation/accuracy \n", - "16 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "14 imagenet_vit_jax trial_1 validation/accuracy \n", - "22 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "12 librispeech_conformer_jax trial_1 validation/wer \n", - "20 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "13 librispeech_deepspeech_jax trial_1 validation/wer \n", - "21 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "11 ogbg_jax trial_1 validation/mean_average_precision \n", - "19 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "10 wmt_jax trial_1 validation/bleu \n", - "18 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "7 0.123735 False 0.125700 \n", - "15 0.123735 False 0.125837 \n", - "24 0.123735 False 0.124694 \n", - "1 0.723653 True 0.724439 \n", - "9 0.723653 True 0.723893 \n", - "17 0.723653 True 0.723682 \n", - "23 22.299500 True 21.632686 \n", - "0 0.774310 False 0.746600 \n", - "8 0.774310 False 0.747480 \n", - "16 0.774310 False 0.749640 \n", - "6 0.773090 False 0.750600 \n", - "14 0.773090 False 0.751580 \n", - "22 0.773090 False 0.750340 \n", - "4 0.085884 False 0.142162 \n", - "12 0.085884 False 0.142625 \n", - "20 0.085884 False 0.144499 \n", - "5 0.119936 False 0.294318 \n", - "13 0.119936 False 0.287288 \n", - "21 0.119936 False 0.285347 \n", - "3 0.280980 True 0.284564 \n", - "11 0.280980 True 0.287422 \n", - "19 0.280980 True 0.280990 \n", - "2 30.849100 True 30.876109 \n", - "10 30.849100 True 31.020744 \n", - "18 30.849100 True 30.912515 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "7 2863.657990 inf 0.926635 \n", - "15 1792.004785 inf 0.926635 \n", - "24 9989.461620 inf 0.926635 \n", - "1 1608.188659 1.608189e+03 0.655975 \n", - "9 1383.159640 1.383160e+03 0.655975 \n", - "17 2571.815328 2.571815e+03 0.655975 \n", - "23 25738.981688 2.573898e+04 0.441446 \n", - "0 69885.510298 inf 0.251495 \n", - "8 67896.184145 inf 0.251495 \n", - "16 61917.019345 inf 0.251495 \n", - "6 87452.666405 inf 0.495969 \n", - "14 82308.665602 inf 0.495969 \n", - "22 87448.367353 inf 0.495969 \n", - "4 64988.594796 inf 2.589839 \n", - "12 65012.818664 inf 2.589839 \n", - "20 64979.350942 inf 2.589839 \n", - "5 10338.725379 inf 2.798812 \n", - "13 10334.769650 inf 2.798812 \n", - "21 14680.395282 inf 2.798812 \n", - "3 5444.764041 4.992687e+03 0.197936 \n", - "11 5446.810509 4.542640e+03 0.197936 \n", - "19 4995.647006 4.995647e+03 0.197936 \n", - "2 12943.727385 1.294373e+04 0.125546 \n", - "10 14876.415894 1.423246e+04 0.125546 \n", - "18 15517.656444 1.551766e+04 0.125546 \n", - "\n", - " step_hint \n", - "7 10666 \n", - "15 10666 \n", - "24 10666 \n", - "1 18094 \n", - "9 18094 \n", - "17 18094 \n", - "23 72000 \n", - "0 195999 \n", - "8 195999 \n", - "16 195999 \n", - "6 167999 \n", - "14 167999 \n", - "22 167999 \n", - "4 76000 \n", - "12 76000 \n", - "20 76000 \n", - "5 38400 \n", - "13 38400 \n", - "21 38400 \n", - "3 52000 \n", - "11 52000 \n", - "19 52000 \n", - "2 120000 \n", - "10 120000 \n", - "18 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Lion (lion) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload trial study \\\n", - "0 imagenet_resnet_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "1 fastmri_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "2 imagenet_vit_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "3 librispeech_conformer_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "4 ogbg_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "5 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "6 wmt_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "7 criteo1tb_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "8 finewebedu_lm_pytorch (trial_1, logs/self_tuning/lion) study_2 \n", - "9 imagenet_resnet_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "10 fastmri_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "11 imagenet_vit_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "12 librispeech_conformer_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "13 ogbg_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "14 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "15 wmt_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "16 criteo1tb_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "17 finewebedu_lm_pytorch (trial_1, logs/self_tuning/lion) study_1 \n", - "18 imagenet_resnet_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "19 fastmri_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "20 imagenet_vit_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "21 librispeech_conformer_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "22 ogbg_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "23 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "24 wmt_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "25 criteo1tb_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "26 finewebedu_lm_pytorch (trial_1, logs/self_tuning/lion) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [234.53163146972656, 380.7788202762604, 508.68... \n", - "1 [83.36600160598755, 89.63491725921631, 95.5553... \n", - "2 [332.94828271865845, 484.63496017456055, 624.0... \n", - "3 [64.10982418060303, 108.90000200271606, 157.10... \n", - "4 [73.67127776145935, 104.92305970191956, 135.80... \n", - "5 [74.4120876789093, 117.13727378845216, 162.900... \n", - "6 [441.5375723838806, 625.2203524112701, 812.355... \n", - "7 [823.4794235229492, 1562.444446325302, 2303.58... \n", - "8 [219.920399427414, 401.2369964122772, 582.9772... \n", - "9 [225.154953956604, 379.1453785896301, 503.9069... \n", - "10 [492.0313301086426, 498.0816142559052, 504.099... \n", - "11 [363.2983100414276, 501.6828002929688, 631.093... \n", - "12 [66.92553544044495, 108.10422539711, 149.90850... \n", - "13 [73.7761640548706, 104.6031801700592, 134.4429... \n", - "14 [73.67282342910767, 115.58969712257384, 160.15... \n", - "15 [439.4463217258453, 630.8177511692047, 840.434... \n", - "16 [963.3623187541962, 1789.098122358322, 2587.29... \n", - "17 [221.8921980857849, 403.9305377006531, 585.917... \n", - "18 [203.1976864337921, 323.1763339042664, 407.200... \n", - "19 [429.3040490150452, 436.8172800540924, 445.522... \n", - "20 [301.2108738422394, 428.35318303108215, 565.49... \n", - "21 [66.29648637771606, 111.82119488716124, 154.82... \n", - "22 [75.11961722373962, 105.18607544898988, 135.22... \n", - "23 [73.5387008190155, 116.35830450057983, 161.848... \n", - "24 [433.6892330646515, 613.9949643611908, 793.818... \n", - "25 [847.0070641040802, 1608.3387088775637, 2380.4... \n", - "26 [222.616357088089, 404.90422010421753, 586.904... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.4658915996551513, 0.5569427013397217, ... \n", - "1 [0.0, 0.0434930324554443, 0.0881187915802002, ... \n", - "2 [0.0, 0.1000711917877197, 0.3936853408813476, ... \n", - "3 [0.0, 0.052311897277832, 0.1128931045532226, 0... \n", - "4 [0.0, 0.0481119155883789, 0.1117920875549316, ... \n", - "5 [0.0, 0.0887582302093505, 0.2501752376556396, ... \n", - "6 [0.0, 0.1269721984863281, 0.2580170631408691, ... \n", - "7 [0.0, 0.0384566783905029, 0.0830991268157959, ... \n", - "8 [0.0, 0.0415179729461669, 0.0871722698211669, ... \n", - "9 [0.0, 0.4243814945220947, 0.6173498630523682, ... \n", - "10 [0.0, 0.1511950492858886, 0.2761940956115722, ... \n", - "11 [0.0, 0.050922155380249, 0.4900016784667969, 0... \n", - "12 [0.0, 0.0491831302642822, 0.102020263671875, 0... \n", - "13 [0.0, 0.046351671218872, 0.0888957977294921, 0... \n", - "14 [0.0, 0.0529611110687255, 0.1090054512023925, ... \n", - "15 [0.0, 0.0585489273071289, 0.1828587055206298, ... \n", - "16 [0.0, 0.0572617053985595, 0.1021704673767089, ... \n", - "17 [0.0, 0.0622892379760742, 0.1099219322204589, ... \n", - "18 [0.0, 0.0420873165130615, 0.1088960170745849, ... \n", - "19 [0.0, 0.0779659748077392, 0.1575808525085449, ... \n", - "20 [0.0, 0.143531322479248, 0.4039738178253174, 0... \n", - "21 [0.0, 0.0548329353332519, 0.1112222671508789, ... \n", - "22 [0.0, 0.045417308807373, 0.0884642601013183, 0... \n", - "23 [0.0, 0.1531975269317627, 0.4838619232177734, ... \n", - "24 [0.0, 0.0453894138336181, 0.0939962863922119, ... \n", - "25 [0.0, 0.0403828620910644, 0.0841078758239746, ... \n", - "26 [0.0, 0.0426011085510253, 0.0912563800811767, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [200.5226492881775, 2203.342606067657, 4196.85... \n", - "1 [76.44122099876404, 185.24888062477112, 293.95... \n", - "2 [92.12094736099245, 2661.129516839981, 5228.97... \n", - "3 [16.372754335403442, 1763.2128784656525, 3509.... \n", - "4 [6.72886323928833, 457.7499363422394, 908.7993... \n", - "5 [59.20120620727539, 1504.9272112846377, 2950.5... \n", - "6 [66.08641052246094, 707.8739924430847, 1349.83... \n", - "7 [7.380849838256836, 362.9174847602844, 719.091... \n", - "8 [46.79867672920227, 2615.043501138687, 5183.51... \n", - "9 [199.72368240356445, 2192.699465751648, 4190.9... \n", - "10 [216.7514455318451, 326.6783425807953, 436.906... \n", - "11 [93.0429277420044, 2664.684671163559, 5236.870... \n", - "12 [10.802436113357544, 1758.3018491268158, 3505.... \n", - "13 [16.26790189743042, 467.39672803878784, 918.57... \n", - "14 [31.767141819000244, 1478.0001254081726, 2923.... \n", - "15 [62.02650833129883, 704.0027546882629, 1346.07... \n", - "16 [5.52962589263916, 361.4228310585022, 717.2312... \n", - "17 [59.32191562652588, 2627.6868963241577, 5196.1... \n", - "18 [130.69237089157104, 2125.469454050064, 4118.8... \n", - "19 [190.65102910995483, 300.31669664382935, 410.3... \n", - "20 [95.366854429245, 2659.257150888443, 5233.1433... \n", - "21 [20.19631266593933, 1765.789226770401, 3511.60... \n", - "22 [10.930009841918944, 462.1402308940888, 913.30... \n", - "23 [53.68404889106751, 1499.3523709774015, 2944.9... \n", - "24 [51.701682329177856, 693.7180705070496, 1335.7... \n", - "25 [3.3078713417053223, 359.1419172286988, 714.88... \n", - "26 [59.00462555885315, 2626.600440979004, 5194.16... \n", - "\n", - " global_step \\\n", - "0 [1, 1771, 4217, 7115, 9907, 12851, 15736, 1852... \n", - "1 [1, 748, 2648, 4950, 7251, 9556] \n", - "2 [1, 3422, 6662, 9645, 12871, 15927, 19106, 221... \n", - "3 [1, 1424, 3066, 5499, 7918, 10225, 12737, 1514... \n", - "4 [1, 1995, 3994, 5988, 7978, 10064, 12176, 1429... \n", - "5 [1, 1102, 2718, 4457, 6186, 8096, 10015, 11902... \n", - "6 [1, 4528, 9072, 13619, 18162, 22708, 27257, 31... \n", - "7 [1, 378, 755, 1126, 1496, 1861, 2219, 2574, 29... \n", - "8 [1, 6601, 13208, 19818, 26429, 33048, 39664, 4... \n", - "9 [1, 1756, 4233, 7215, 10393, 13450, 16572, 196... \n", - "10 [1, 303, 425, 534, 663, 772, 881, 1476, 3768, ... \n", - "11 [1, 3103, 6315, 9589, 12991, 16152, 19513, 228... \n", - "12 [1, 1661, 3907, 6245, 8808, 11164, 13579, 1609... \n", - "13 [1, 2033, 4054, 6084, 8149, 10276, 12407, 1454... \n", - "14 [1, 1095, 2654, 4304, 6118, 8053, 9980, 11878,... \n", - "15 [1, 4528, 9068, 13608, 18152, 22698, 27242, 31... \n", - "16 [1, 352, 704, 1053, 1396, 1751, 2113, 2470, 28... \n", - "17 [1, 6595, 13196, 19799, 26407, 33018, 39630, 4... \n", - "18 [1, 2032, 4980, 8289, 11260, 14506, 17455, 206... \n", - "19 [1, 302, 426, 546, 669, 791, 913, 2249, 4560, ... \n", - "20 [1, 3773, 7098, 10292, 13453, 16868, 20036, 23... \n", - "21 [1, 1433, 3136, 5653, 8044, 10436, 12982, 1532... \n", - "22 [1, 2004, 4010, 6009, 7998, 9985, 11975, 13957... \n", - "23 [1, 1098, 2697, 4423, 6170, 8098, 10027, 11927... \n", - "24 [1, 4527, 9067, 13607, 18144, 22684, 27224, 31... \n", - "25 [1, 380, 759, 1139, 1514, 1880, 2251, 2628, 29... \n", - "26 [1, 6637, 13278, 19923, 26573, 33229, 39889, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "\n", - " score \\\n", - "0 [200.5226492881775, 2203.342606067657, 4196.85... \n", - "1 [76.44122099876404, 185.24888062477112, 293.95... \n", - "2 [92.12094736099245, 2661.129516839981, 5228.97... \n", - "3 [16.372754335403442, 1763.2128784656525, 3509.... \n", - "4 [6.72886323928833, 457.7499363422394, 908.7993... \n", - "5 [59.20120620727539, 1504.9272112846377, 2950.5... \n", - "6 [66.08641052246094, 707.8739924430847, 1349.83... \n", - "7 [7.380849838256836, 362.9174847602844, 719.091... \n", - "8 [46.79867672920227, 2615.043501138687, 5183.51... \n", - "9 [199.72368240356445, 2192.699465751648, 4190.9... \n", - "10 [216.7514455318451, 326.6783425807953, 436.906... \n", - "11 [93.0429277420044, 2664.684671163559, 5236.870... \n", - "12 [10.802436113357544, 1758.3018491268158, 3505.... \n", - "13 [16.26790189743042, 467.39672803878784, 918.57... \n", - "14 [31.767141819000244, 1478.0001254081726, 2923.... \n", - "15 [62.02650833129883, 704.0027546882629, 1346.07... \n", - "16 [5.52962589263916, 361.4228310585022, 717.2312... \n", - "17 [59.32191562652588, 2627.6868963241577, 5196.1... \n", - "18 [130.69237089157104, 2125.469454050064, 4118.8... \n", - "19 [190.65102910995483, 300.31669664382935, 410.3... \n", - "20 [95.366854429245, 2659.257150888443, 5233.1433... \n", - "21 [20.19631266593933, 1765.789226770401, 3511.60... \n", - "22 [10.930009841918944, 462.1402308940888, 913.30... \n", - "23 [53.68404889106751, 1499.3523709774015, 2944.9... \n", - "24 [51.701682329177856, 693.7180705070496, 1335.7... \n", - "25 [3.3078713417053223, 359.1419172286988, 714.88... \n", - "26 [59.00462555885315, 2626.600440979004, 5194.16... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0009, 0.1035, 0.3092, 0.4064, 0.456, 0.4655... ... \n", - "1 NaN ... \n", - "2 [0.0018, 0.1482, 0.2801, 0.3369, 0.381, 0.4116... ... \n", - "3 NaN ... \n", - "4 [0.4621320980864005, 0.98320936222614, 0.98390... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.5797803730172564, 0.632... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0008, 0.0991, 0.317, 0.4192, 0.4417, 0.4658... ... \n", - "10 NaN ... \n", - "11 [0.002, 0.1338, 0.2684, 0.3375, 0.3776, 0.413,... ... \n", - "12 NaN ... \n", - "13 [0.580627826410689, 0.9832005181770478, 0.9838... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.581279414328046, 0.6312... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0003, 0.1344, 0.3514, 0.4294, 0.4627, 0.481... ... \n", - "19 NaN ... \n", - "20 [0.0018, 0.1704, 0.2879, 0.3531, 0.3852, 0.419... ... \n", - "21 NaN ... \n", - "22 [0.5190258658955779, 0.9832013604674374, 0.983... ... \n", - "23 NaN ... \n", - "24 [0.0007088489919237, 0.5807681134158387, 0.632... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.9249456862839762, 0.8967218654950997, 0.829... \n", - "4 NaN \n", - "5 [2.134186259836817, 0.8967218654950997, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.778380727079612, 0.8967218654950997, 0.8967... \n", - "13 NaN \n", - "14 [3.253464008110848, 0.8967218654950997, 0.8967... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.8870274706705927, 0.8967218654950997, 0.896... \n", - "22 NaN \n", - "23 [2.656689035871192, 0.8967218654950997, 0.8967... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0255343965141723, 0.0618207889101731, 0.121... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0286922205802314, 0.058430242481284, 0.1201... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0270702532464948, 0.0612040507030551, 0.109... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0207589732106201, 0.0601141124146566, 0.127... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0219069202068858, 0.0551165766520747, 0.125... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0206814816708047, 0.0561874754540856, 0.114... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.023578048279932, 0.0603180081204317, 0.1186... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.025848404996964, 0.0544441076379482, 0.1180... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0238766757620266, 0.0580625311316535, 0.109... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 21.10357501921561, 24.696701731203987, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 21.365274825335312, 24.744345874912263, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 21.256201275217464, 24.88223403349778, 2... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 26.41972093850038, 29.268454673187303, 3... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 27.017045197983634, 29.162907533953785, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 26.56864785576268, 29.388621798669284, 3... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 22.32747743258133, 25.64925217977625, 26... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 22.531659881056985, 25.94561024477533, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 22.364809678214144, 25.726263350829896, ... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [60924.48600238165, 33.677105258707606, 29.287... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [62002.905351507805, 33.47343387982745, 29.119... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [60612.974615636704, 33.58860454945548, 29.202... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [60972.15444020428, 33.49267058676701, 29.0976... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [62031.47947377031, 33.28121152216357, 28.9143... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [60507.18536272712, 33.38332889940211, 29.0059... \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
7criteo1tb_pytorchtrial_1validation/loss0.123735False0.1241919978.416062inf0.91592610666
16criteo1tb_pytorchtrial_1validation/loss0.123735False0.12426212466.455169inf0.91592610666
25criteo1tb_pytorchtrial_1validation/loss0.123735False0.12424112106.893656inf0.91592610666
1fastmri_pytorchtrial_1validation/ssim0.723653True0.723803619.9493726.199494e+020.27376418094
10fastmri_pytorchtrial_1validation/ssim0.723653True0.7243801421.2225761.421223e+030.27376418094
19fastmri_pytorchtrial_1validation/ssim0.723653True0.7239881394.1750201.394175e+030.27376418094
8finewebedu_lm_pytorchtrial_1validation/ppl22.299500True21.26189723164.5693102.316457e+040.38839872000
17finewebedu_lm_pytorchtrial_1validation/ppl22.299500True21.11000823177.0914222.317709e+040.38839872000
26finewebedu_lm_pytorchtrial_1validation/ppl22.299500True21.13069923172.0393162.317204e+040.38839872000
0imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.61338073980.619545inf0.674310195999
9imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.61892067952.966836inf0.674310195999
18imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.62902067951.735127inf0.674310195999
2imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.62420087448.878291inf0.812078167999
11imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.63292095191.349695inf0.812078167999
20imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.64180095165.022013inf0.812078167999
3librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.11531957621.209741inf0.72318776000
12librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.15078554127.306890inf0.72318776000
21librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.12644257621.145283inf0.72318776000
5librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.12470431862.618510inf0.76947038400
14librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.12680031838.147054inf0.76947038400
23librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.12380631852.816742inf0.76947038400
4ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2857327223.9872077.223987e+030.21286952000
13ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2812016782.7903776.782790e+030.21286952000
22ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2830158582.1237268.582124e+030.21286952000
6wmt_pytorchtrial_1validation/bleu30.849100True30.94802315475.5527301.547555e+040.141389120000
15wmt_pytorchtrial_1validation/bleu30.849100True30.87531817401.4931141.547496e+040.141389120000
24wmt_pytorchtrial_1validation/bleu30.849100False30.76188917388.507633inf0.141389120000
\n", - "
" - ], - "text/plain": [ - " workload trial \\\n", - "7 criteo1tb_pytorch trial_1 \n", - "16 criteo1tb_pytorch trial_1 \n", - "25 criteo1tb_pytorch trial_1 \n", - "1 fastmri_pytorch trial_1 \n", - "10 fastmri_pytorch trial_1 \n", - "19 fastmri_pytorch trial_1 \n", - "8 finewebedu_lm_pytorch trial_1 \n", - "17 finewebedu_lm_pytorch trial_1 \n", - "26 finewebedu_lm_pytorch trial_1 \n", - "0 imagenet_resnet_pytorch trial_1 \n", - "9 imagenet_resnet_pytorch trial_1 \n", - "18 imagenet_resnet_pytorch trial_1 \n", - "2 imagenet_vit_pytorch trial_1 \n", - "11 imagenet_vit_pytorch trial_1 \n", - "20 imagenet_vit_pytorch trial_1 \n", - "3 librispeech_conformer_pytorch trial_1 \n", - "12 librispeech_conformer_pytorch trial_1 \n", - "21 librispeech_conformer_pytorch trial_1 \n", - "5 librispeech_deepspeech_pytorch trial_1 \n", - "14 librispeech_deepspeech_pytorch trial_1 \n", - "23 librispeech_deepspeech_pytorch trial_1 \n", - "4 ogbg_pytorch trial_1 \n", - "13 ogbg_pytorch trial_1 \n", - "22 ogbg_pytorch trial_1 \n", - "6 wmt_pytorch trial_1 \n", - "15 wmt_pytorch trial_1 \n", - "24 wmt_pytorch trial_1 \n", - "\n", - " val target metric name val target metric value \\\n", - "7 validation/loss 0.123735 \n", - "16 validation/loss 0.123735 \n", - "25 validation/loss 0.123735 \n", - "1 validation/ssim 0.723653 \n", - "10 validation/ssim 0.723653 \n", - "19 validation/ssim 0.723653 \n", - "8 validation/ppl 22.299500 \n", - "17 validation/ppl 22.299500 \n", - "26 validation/ppl 22.299500 \n", - "0 validation/accuracy 0.774310 \n", - "9 validation/accuracy 0.774310 \n", - "18 validation/accuracy 0.774310 \n", - "2 validation/accuracy 0.773090 \n", - "11 validation/accuracy 0.773090 \n", - "20 validation/accuracy 0.773090 \n", - "3 validation/wer 0.085884 \n", - "12 validation/wer 0.085884 \n", - "21 validation/wer 0.085884 \n", - "5 validation/wer 0.119936 \n", - "14 validation/wer 0.119936 \n", - "23 validation/wer 0.119936 \n", - "4 validation/mean_average_precision 0.280980 \n", - "13 validation/mean_average_precision 0.280980 \n", - "22 validation/mean_average_precision 0.280980 \n", - "6 validation/bleu 30.849100 \n", - "15 validation/bleu 30.849100 \n", - "24 validation/bleu 30.849100 \n", - "\n", - " val target reached best metric value on val \\\n", - "7 False 0.124191 \n", - "16 False 0.124262 \n", - "25 False 0.124241 \n", - "1 True 0.723803 \n", - "10 True 0.724380 \n", - "19 True 0.723988 \n", - "8 True 21.261897 \n", - "17 True 21.110008 \n", - "26 True 21.130699 \n", - "0 False 0.613380 \n", - "9 False 0.618920 \n", - "18 False 0.629020 \n", - "2 False 0.624200 \n", - "11 False 0.632920 \n", - "20 False 0.641800 \n", - "3 False 0.115319 \n", - "12 False 0.150785 \n", - "21 False 0.126442 \n", - "5 False 0.124704 \n", - "14 False 0.126800 \n", - "23 False 0.123806 \n", - "4 True 0.285732 \n", - "13 True 0.281201 \n", - "22 True 0.283015 \n", - "6 True 30.948023 \n", - "15 True 30.875318 \n", - "24 False 30.761889 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "7 9978.416062 inf 0.915926 \n", - "16 12466.455169 inf 0.915926 \n", - "25 12106.893656 inf 0.915926 \n", - "1 619.949372 6.199494e+02 0.273764 \n", - "10 1421.222576 1.421223e+03 0.273764 \n", - "19 1394.175020 1.394175e+03 0.273764 \n", - "8 23164.569310 2.316457e+04 0.388398 \n", - "17 23177.091422 2.317709e+04 0.388398 \n", - "26 23172.039316 2.317204e+04 0.388398 \n", - "0 73980.619545 inf 0.674310 \n", - "9 67952.966836 inf 0.674310 \n", - "18 67951.735127 inf 0.674310 \n", - "2 87448.878291 inf 0.812078 \n", - "11 95191.349695 inf 0.812078 \n", - "20 95165.022013 inf 0.812078 \n", - "3 57621.209741 inf 0.723187 \n", - "12 54127.306890 inf 0.723187 \n", - "21 57621.145283 inf 0.723187 \n", - "5 31862.618510 inf 0.769470 \n", - "14 31838.147054 inf 0.769470 \n", - "23 31852.816742 inf 0.769470 \n", - "4 7223.987207 7.223987e+03 0.212869 \n", - "13 6782.790377 6.782790e+03 0.212869 \n", - "22 8582.123726 8.582124e+03 0.212869 \n", - "6 15475.552730 1.547555e+04 0.141389 \n", - "15 17401.493114 1.547496e+04 0.141389 \n", - "24 17388.507633 inf 0.141389 \n", - "\n", - " step_hint \n", - "7 10666 \n", - "16 10666 \n", - "25 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "8 72000 \n", - "17 72000 \n", - "26 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "2 167999 \n", - "11 167999 \n", - "20 167999 \n", - "3 76000 \n", - "12 76000 \n", - "21 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "4 52000 \n", - "13 52000 \n", - "22 52000 \n", - "6 120000 \n", - "15 120000 \n", - "24 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Muon (JAX) (muon) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial study \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "1 fastmri_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "2 wmt_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "3 ogbg_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "7 finewebedu_lm_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "8 criteo1tb_jax (trial_1, logs/self_tuning/muon) study_2 \n", - "9 imagenet_resnet_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "10 fastmri_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "11 wmt_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "12 ogbg_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "13 librispeech_conformer_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "14 librispeech_deepspeech_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "15 imagenet_vit_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "16 finewebedu_lm_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "17 criteo1tb_jax (trial_1, logs/self_tuning/muon) study_1 \n", - "18 imagenet_resnet_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "19 fastmri_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "20 wmt_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "21 ogbg_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "22 librispeech_conformer_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "23 librispeech_deepspeech_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "24 imagenet_vit_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "25 finewebedu_lm_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "26 criteo1tb_jax (trial_1, logs/self_tuning/muon) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [85.32101631164551, 143.27223420143127, 229.89... \n", - "1 [86.68694353103638, 90.220228433609, 93.846166... \n", - "2 [923.032478094101, 1481.197552204132, 2002.696... \n", - "3 [245.44457745552063, 357.27092480659485, 467.1... \n", - "4 [245.79879331588745, 329.6961340904236, 415.27... \n", - "5 [223.28561425209045, 340.4317753314972, 444.78... \n", - "6 [65.68547487258911, 89.06284356117249, 116.542... \n", - "7 [331.3541305065155, 660.0183925628662, 988.669... \n", - "8 [2206.252879858017, 3465.675411939621, 4709.18... \n", - "9 [52.432279109954834, 74.98340821266174, 98.320... \n", - "10 [891.3946471214294, 895.1375825405121, 898.678... \n", - "11 [918.139331817627, 1458.6382310390472, 1974.91... \n", - "12 [254.41160321235657, 368.7425117492676, 481.74... \n", - "13 [181.11556196212769, 299.30452275276184, 418.5... \n", - "14 [254.10073971748352, 355.44183683395386, 460.6... \n", - "15 [92.00945734977722, 124.71862697601318, 265.26... \n", - "16 [331.0854260921478, 659.5021979808807, 988.008... \n", - "17 [2142.3030138015747, 3376.085985183716, 4588.4... \n", - "18 [75.56227684020996, 130.63170218467712, 212.17... \n", - "19 [560.0810639858246, 563.818696975708, 567.3463... \n", - "20 [925.4305934906006, 1481.7121119499209, 1990.5... \n", - "21 [244.8257749080658, 356.0581192970276, 466.890... \n", - "22 [249.29896354675293, 333.0759255886078, 418.51... \n", - "23 [295.5003790855408, 397.93260049819946, 504.38... \n", - "24 [65.56098675727844, 89.21928763389587, 116.350... \n", - "25 [330.9129729270935, 659.4397175312042, 987.990... \n", - "26 [2110.755208969116, 3293.6648528575897, 4486.3... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3175292015075683, 0.382401704788208, 0... \n", - "1 [0.0, 0.0615730285644531, 0.0982937812805175, ... \n", - "2 [0.0, 0.0597054958343505, 0.100353717803955, 0... \n", - "3 [0.0, 0.3164477348327636, 0.3542206287384033, ... \n", - "4 [0.0, 0.0676980018615722, 0.1172399520874023, ... \n", - "5 [0.0, 0.3320095539093017, 0.3839359283447265, ... \n", - "6 [0.0, 0.4866328239440918, 0.619377613067627, 0... \n", - "7 [0.0, 0.0544896125793457, 0.0931630134582519, ... \n", - "8 [0.0, 0.047903299331665, 0.077981948852539, 0.... \n", - "9 [0.0, 0.0587384700775146, 0.1846351623535156, ... \n", - "10 [0.0, 0.0566794872283935, 0.0956184864044189, ... \n", - "11 [0.0, 0.2858195304870605, 0.3236966133117676, ... \n", - "12 [0.0, 0.4669585227966308, 0.5051803588867188, ... \n", - "13 [0.0, 0.3999862670898437, 0.4840962886810303, ... \n", - "14 [0.0, 0.3983092308044433, 0.4469871520996094, ... \n", - "15 [0.0, 0.1332242488861084, 1.4424009323120115, ... \n", - "16 [0.0, 0.4143426418304443, 0.4434373378753662, ... \n", - "17 [0.0, 0.3559868335723877, 0.3886592388153076, ... \n", - "18 [0.0, 0.31561279296875, 0.3772523403167724, 0.... \n", - "19 [0.0, 0.4022426605224609, 0.4407854080200195, ... \n", - "20 [0.0, 0.0633051395416259, 0.1031296253204345, ... \n", - "21 [0.0, 0.6725928783416748, 0.7113568782806396, ... \n", - "22 [0.0, 0.0695700645446777, 0.1125705242156982, ... \n", - "23 [0.0, 0.3460767269134521, 0.3970296382904053, ... \n", - "24 [0.0, 0.0525968074798584, 0.1384174823760986, ... \n", - "25 [0.0, 0.1377577781677246, 0.1678836345672607, ... \n", - "26 [0.0, 0.0534687042236328, 0.0880377292633056, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [71.61597466468811, 2067.387476682663, 4063.31... \n", - "1 [45.81852698326111, 155.83249139785767, 265.80... \n", - "2 [60.07726240158081, 704.0305507183075, 1348.05... \n", - "3 [20.30338883399964, 472.0722301006317, 924.120... \n", - "4 [183.9875810146332, 1934.1916689872744, 3689.2... \n", - "5 [140.33310055732727, 1589.9150474071505, 3037.... \n", - "6 [59.65637707710266, 2630.281178712845, 5201.14... \n", - "7 [25.29145765304565, 2596.20752286911, 5167.316... \n", - "8 [10.774063110351562, 367.3413143157959, 723.35... \n", - "9 [56.51526951789856, 2052.428330898285, 4048.36... \n", - "10 [268.306293964386, 378.45234298706055, 491.213... \n", - "11 [63.30758118629456, 707.1445617675781, 1351.18... \n", - "12 [22.809492826461792, 474.36376953125, 926.4589... \n", - "13 [179.39098525047302, 1927.8816254138949, 3677.... \n", - "14 [159.47859120368958, 1618.0629284381866, 3068.... \n", - "15 [64.70180058479309, 2635.90239405632, 5205.798... \n", - "16 [26.088027715682983, 2596.683099508285, 5167.9... \n", - "17 [14.367578268051147, 370.78795981407166, 727.4... \n", - "18 [72.40133500099182, 2068.07758808136, 4064.150... \n", - "19 [216.10517835617063, 326.65109968185425, 437.1... \n", - "20 [60.84638285636902, 704.8664121627808, 1348.91... \n", - "21 [19.63138055801392, 471.1056969165802, 923.132... \n", - "22 [183.7283523082733, 1934.5522394180296, 3688.7... \n", - "23 [162.70529961586, 1609.4858276844025, 3057.117... \n", - "24 [56.139816761016846, 2627.2795379161835, 5198.... \n", - "25 [24.110734939575195, 2595.24762749672, 5166.19... \n", - "26 [9.863986015319824, 366.7837691307068, 723.694... \n", - "\n", - " global_step \\\n", - "0 [1, 5689, 13244, 20809, 28376, 35949, 43494, 5... \n", - "1 [1, 720, 1673, 2640, 3607, 4574, 5541, 6508, 7... \n", - "2 [1, 3375, 7078, 10779, 14480, 18183, 21884, 25... \n", - "3 [1, 2168, 4454, 6872, 9277, 11677, 14062, 1645... \n", - "4 [1, 460, 904, 1615, 2163, 2906, 3703, 4401, 50... \n", - "5 [1, 683, 1216, 1751, 2239, 2803, 3330, 3877, 4... \n", - "6 [1, 5174, 10534, 15757, 21084, 26424, 31759, 3... \n", - "7 [1, 5055, 10151, 15245, 20340, 25436, 30531, 3... \n", - "8 [1, 182, 375, 564, 755, 951, 1182, 1437, 1645,... \n", - "9 [1, 7282, 14879, 22503, 30129, 37765, 45384, 5... \n", - "10 [1, 257, 314, 375, 434, 493, 554, 618, 680, 73... \n", - "11 [1, 3380, 7082, 10785, 14487, 18187, 21889, 25... \n", - "12 [1, 2133, 4474, 6860, 9240, 11619, 13989, 1634... \n", - "13 [1, 821, 1635, 2321, 2945, 3700, 4313, 4972, 5... \n", - "14 [1, 395, 771, 1275, 1778, 2313, 2865, 3483, 40... \n", - "15 [1, 5037, 10415, 15859, 21338, 26819, 32302, 3... \n", - "16 [1, 5056, 10152, 15247, 20342, 25437, 30532, 3... \n", - "17 [1, 189, 377, 568, 782, 970, 1176, 1387, 1605,... \n", - "18 [1, 5712, 13276, 20862, 28404, 35994, 43579, 5... \n", - "19 [1, 283, 386, 491, 596, 698, 798, 901, 1317, 2... \n", - "20 [1, 3381, 7101, 10824, 14544, 18264, 21981, 25... \n", - "21 [1, 2163, 4432, 6708, 8990, 11368, 13746, 1610... \n", - "22 [1, 466, 918, 1642, 2152, 2902, 3690, 4379, 50... \n", - "23 [1, 379, 744, 1195, 1669, 2045, 2652, 3050, 37... \n", - "24 [1, 5298, 10717, 16200, 21680, 27162, 32631, 3... \n", - "25 [1, 5058, 10151, 15248, 20345, 25445, 30541, 3... \n", - "26 [1, 189, 379, 579, 770, 980, 1177, 1366, 1576,... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [71.61597466468811, 2067.387476682663, 4063.31... \n", - "1 [45.81852698326111, 155.83249139785767, 265.80... \n", - "2 [60.07726240158081, 704.0305507183075, 1348.05... \n", - "3 [20.30338883399964, 472.0722301006317, 924.120... \n", - "4 [183.9875810146332, 1934.1916689872744, 3689.2... \n", - "5 [140.33310055732727, 1589.9150474071505, 3037.... \n", - "6 [59.65637707710266, 2630.281178712845, 5201.14... \n", - "7 [25.29145765304565, 2596.20752286911, 5167.316... \n", - "8 [10.774063110351562, 367.3413143157959, 723.35... \n", - "9 [56.51526951789856, 2052.428330898285, 4048.36... \n", - "10 [268.306293964386, 378.45234298706055, 491.213... \n", - "11 [63.30758118629456, 707.1445617675781, 1351.18... \n", - "12 [22.809492826461792, 474.36376953125, 926.4589... \n", - "13 [179.39098525047302, 1927.8816254138949, 3677.... \n", - "14 [159.47859120368958, 1618.0629284381866, 3068.... \n", - "15 [64.70180058479309, 2635.90239405632, 5205.798... \n", - "16 [26.088027715682983, 2596.683099508285, 5167.9... \n", - "17 [14.367578268051147, 370.78795981407166, 727.4... \n", - "18 [72.40133500099182, 2068.07758808136, 4064.150... \n", - "19 [216.10517835617063, 326.65109968185425, 437.1... \n", - "20 [60.84638285636902, 704.8664121627808, 1348.91... \n", - "21 [19.63138055801392, 471.1056969165802, 923.132... \n", - "22 [183.7283523082733, 1934.5522394180296, 3688.7... \n", - "23 [162.70529961586, 1609.4858276844025, 3057.117... \n", - "24 [56.139816761016846, 2627.2795379161835, 5198.... \n", - "25 [24.110734939575195, 2595.24762749672, 5166.19... \n", - "26 [9.863986015319824, 366.7837691307068, 723.694... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.001, 0.37730002, 0.46910003, 0.49930003, 0.... ... \n", - "1 NaN ... \n", - "2 [0.0409737974405288, 0.5593515634536743, 0.610... ... \n", - "3 [0.5054788589477539, 0.98524010181427, 0.98590... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.0015, 0.13530001, 0.26920003, 0.33380002, 0... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0016000001, 0.40320003, 0.47550002, 0.5, 0.... ... \n", - "10 NaN ... \n", - "11 [0.0422404296696186, 0.5574458241462708, 0.607... ... \n", - "12 [0.4808496832847595, 0.9848126173019408, 0.985... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.0021000002, 0.141, 0.26990002, 0.34420002, ... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.001, 0.377, 0.46250004, 0.4963, 0.5016, 0.5... ... \n", - "19 NaN ... \n", - "20 [0.0408227294683456, 0.5492998957633972, 0.607... ... \n", - "21 [0.6391069889068604, 0.9854639768600464, 0.985... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.0026000002, 0.1499, 0.2818, 0.34190002, 0.3... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0281631441374247, 0.2295321659960524, 0.274... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0254543424898782, 0.2331596554741088, 0.263... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0267938387137096, 0.2273265158939825, 0.265... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [9.629445, 1.5371209, 1.4846411, 1.421638, 0.7... \n", - "5 [7.7565045, 1.4724265, 1.4545373, 1.8689185, 1... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [5.938052, 1.4960839, 1.3232819, 0.5820363, 0.... \n", - "14 [7.2329397, 1.3054624, 1.3600887, 1.592771, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.5922017, 1.5404313, 1.4420122, 1.4015602, 0... \n", - "23 [7.8699923, 1.3188987, 1.2785219, 1.5216553, 1... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.899579550301627, 0.899579550301627, 0.89957... \n", - "5 [2.7828082789998576, 0.8355168281437247, 0.899... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.899579550301627, 0.899579550301627, 0.89947... \n", - "14 [3.2920805151016594, 0.8515629760526476, 0.855... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.899579550301627, 0.899579550301627, 0.89957... \n", - "23 [3.0617675136595373, 0.8905815205248512, 0.865... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.8974, 1.5146834, 1.4919598, 1.4403831, 0.78... \n", - "5 [7.988932, 1.5681933, 1.4815395, 1.8689207, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [5.587667, 1.4934237, 1.3410972, 0.56392473, 0... \n", - "14 [7.4968176, 1.3240694, 1.385018, 1.6073829, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [6.7791915, 1.5152707, 1.4577794, 1.4111829, 0... \n", - "23 [8.089003, 1.3387511, 1.3040979, 1.5570803, 1.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9440268204818524, 0.944635537887994, 0.9427... \n", - "5 [2.913786102492556, 0.8642664414739141, 0.9427... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9440268204818524, 0.944635537887994, 0.9426... \n", - "14 [3.2481779563958937, 0.8837202117361126, 0.892... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.9440268204818524, 0.944635537887994, 0.9427... \n", - "23 [3.0996397559502737, 0.9298572634961176, 0.905... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [9.453029, 1.5422884, 1.4866726, 1.4291912, 0.... \n", - "5 [7.7465277, 1.5140741, 1.4765124, 1.8765124, 1... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [5.954085, 1.4968823, 1.3415061, 0.656398, 0.4... \n", - "14 [7.1990952, 1.3392943, 1.3849467, 1.6173807, 1... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.459035, 1.5480436, 1.4407837, 1.4332728, 0.... \n", - "23 [7.8388295, 1.3478667, 1.3200916, 1.534856, 1.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.8967218654950997, 0.8967218654950997, 0.896... \n", - "5 [2.5796842562641817, 0.8351373533529667, 0.896... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.8967218654950997, 0.8967218654950997, 0.896... \n", - "14 [3.090551827354801, 0.8630908125331918, 0.8632... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.8967218654950997, 0.8967218654950997, 0.896... \n", - "23 [2.7855066866219285, 0.8896634963549461, 0.870... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [36728.58366630981, 34.4005429484851, 29.29537... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [37708.6707351216, 34.49948298023403, 29.27663... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [37366.9017364333, 34.3826022462526, 29.278583... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [36857.74502310895, 34.54730519044167, 29.3426... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [37845.10425777425, 34.643578072458546, 29.325... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [37539.06193711134, 34.55318670869796, 29.3231... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735False0.12451913217.078806inf1.80744610666
17criteo1tb_jaxtrial_1validation/loss0.123735False0.12464812154.283058inf1.80744610666
26criteo1tb_jaxtrial_1validation/loss0.123735False0.12457513221.646473inf1.80744610666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7239321145.9232451.145923e+030.15301018094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7238762594.4902192.594490e+030.15301018094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7247151869.7652771.869765e+030.15301018094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.80837320594.0377502.059404e+040.50461372000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.85239520594.1953192.059420e+040.50461372000
25finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.82093420593.7101902.059371e+040.50461372000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.73022073908.465136inf0.340640195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.73056053931.644364inf0.340640195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.71808065941.642195inf0.340640195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77518077162.9165717.716292e+040.514594167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.75194095183.259433inf0.514594167999
24imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77476074592.8227917.459282e+040.514594167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.16734464973.907707inf2.48611176000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.16655264973.395299inf2.48611176000
22librispeech_conformer_jaxtrial_1validation/wer0.085884False0.16442864948.560971inf2.48611176000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.17472155211.921196inf2.70975038400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.17757955245.243171inf2.70975038400
23librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.17638253775.959509inf2.70975038400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2796431828.228041inf0.19192452000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2754041378.588823inf0.19192452000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2761791827.266468inf0.19192452000
2wmt_jaxtrial_1validation/bleu30.849100False28.99743912296.452765inf0.173934120000
11wmt_jaxtrial_1validation/bleu30.849100False28.65403611011.619379inf0.173934120000
20wmt_jaxtrial_1validation/bleu30.849100False28.77757912941.239449inf0.173934120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "26 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "25 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "24 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "22 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "23 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 False 0.124519 \n", - "17 0.123735 False 0.124648 \n", - "26 0.123735 False 0.124575 \n", - "1 0.723653 True 0.723932 \n", - "10 0.723653 True 0.723876 \n", - "19 0.723653 True 0.724715 \n", - "7 22.299500 True 21.808373 \n", - "16 22.299500 True 21.852395 \n", - "25 22.299500 True 21.820934 \n", - "0 0.774310 False 0.730220 \n", - "9 0.774310 False 0.730560 \n", - "18 0.774310 False 0.718080 \n", - "6 0.773090 True 0.775180 \n", - "15 0.773090 False 0.751940 \n", - "24 0.773090 True 0.774760 \n", - "4 0.085884 False 0.167344 \n", - "13 0.085884 False 0.166552 \n", - "22 0.085884 False 0.164428 \n", - "5 0.119936 False 0.174721 \n", - "14 0.119936 False 0.177579 \n", - "23 0.119936 False 0.176382 \n", - "3 0.280980 False 0.279643 \n", - "12 0.280980 False 0.275404 \n", - "21 0.280980 False 0.276179 \n", - "2 30.849100 False 28.997439 \n", - "11 30.849100 False 28.654036 \n", - "20 30.849100 False 28.777579 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 13217.078806 inf 1.807446 \n", - "17 12154.283058 inf 1.807446 \n", - "26 13221.646473 inf 1.807446 \n", - "1 1145.923245 1.145923e+03 0.153010 \n", - "10 2594.490219 2.594490e+03 0.153010 \n", - "19 1869.765277 1.869765e+03 0.153010 \n", - "7 20594.037750 2.059404e+04 0.504613 \n", - "16 20594.195319 2.059420e+04 0.504613 \n", - "25 20593.710190 2.059371e+04 0.504613 \n", - "0 73908.465136 inf 0.340640 \n", - "9 53931.644364 inf 0.340640 \n", - "18 65941.642195 inf 0.340640 \n", - "6 77162.916571 7.716292e+04 0.514594 \n", - "15 95183.259433 inf 0.514594 \n", - "24 74592.822791 7.459282e+04 0.514594 \n", - "4 64973.907707 inf 2.486111 \n", - "13 64973.395299 inf 2.486111 \n", - "22 64948.560971 inf 2.486111 \n", - "5 55211.921196 inf 2.709750 \n", - "14 55245.243171 inf 2.709750 \n", - "23 53775.959509 inf 2.709750 \n", - "3 1828.228041 inf 0.191924 \n", - "12 1378.588823 inf 0.191924 \n", - "21 1827.266468 inf 0.191924 \n", - "2 12296.452765 inf 0.173934 \n", - "11 11011.619379 inf 0.173934 \n", - "20 12941.239449 inf 0.173934 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "26 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "24 167999 \n", - "4 76000 \n", - "13 76000 \n", - "22 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Muon (PyTorch) (muon_torch) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload trial \\\n", - "0 imagenet_resnet_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "1 fastmri_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "2 imagenet_vit_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "3 librispeech_conformer_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "4 ogbg_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "5 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "6 wmt_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "7 criteo1tb_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "8 finewebedu_lm_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "9 imagenet_resnet_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "10 fastmri_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "11 imagenet_vit_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "12 librispeech_conformer_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "13 ogbg_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "14 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "15 wmt_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "16 criteo1tb_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "17 finewebedu_lm_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "18 imagenet_resnet_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "19 fastmri_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "20 imagenet_vit_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "21 librispeech_conformer_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "22 ogbg_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "23 librispeech_deepspeech_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "24 wmt_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "25 criteo1tb_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "26 finewebedu_lm_pytorch (trial_1, logs/self_tuning/muon_torch) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [237.07018637657168, 393.0856432914734, 515.90... \n", - "1 study_2 [760.1554932594299, 766.108484506607, 772.0475... \n", - "2 study_2 [217.46413779258728, 384.8673374652863, 528.25... \n", - "3 study_2 [66.92191243171692, 112.73558521270752, 160.69... \n", - "4 study_2 [69.21829652786255, 100.36791968345642, 131.37... \n", - "5 study_2 [73.66758489608765, 117.91217398643494, 165.16... \n", - "6 study_2 [430.9598994255066, 619.1788249015808, 805.219... \n", - "7 study_2 [822.588604927063, 1587.762639760971, 2362.179... \n", - "8 study_2 [213.78433752059937, 398.2059817314148, 582.46... \n", - "9 study_1 [188.77722454071045, 312.7835910320282, 442.64... \n", - "10 study_1 [492.18932819366455, 498.1758117675781, 504.15... \n", - "11 study_1 [203.7101473808289, 359.85463786125183, 504.73... \n", - "12 study_1 [64.22895288467407, 110.3433027267456, 158.155... \n", - "13 study_1 [69.31761336326599, 100.1215434074402, 130.890... \n", - "14 study_1 [76.49329495429993, 126.28736090660097, 177.37... \n", - "15 study_1 [427.4002466201782, 614.0150721073151, 810.098... \n", - "16 study_1 [1831.8162851333616, 2940.8095242977142, 4023.... \n", - "17 study_1 [212.2922096252441, 396.8452036380768, 581.214... \n", - "18 study_0 [204.34600377082825, 367.6935625076294, 491.98... \n", - "19 study_0 [437.484735250473, 443.5461227893829, 449.6027... \n", - "20 study_0 [203.9482517242432, 363.925279378891, 512.6730... \n", - "21 study_0 [65.95453000068665, 109.96148371696472, 156.33... \n", - "22 study_0 [68.43934321403503, 99.07515549659728, 129.392... \n", - "23 study_0 [74.78789806365967, 119.78562927246094, 168.01... \n", - "24 study_0 [430.6991605758667, 619.934160232544, 831.0293... \n", - "25 study_0 [838.7503161430359, 1612.8941810131073, 2393.5... \n", - "26 study_0 [211.98661756515503, 394.72000217437744, 577.1... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.47701096534729, 1.2003045082092283, 2.... \n", - "1 [0.0, 0.0622785091400146, 0.1070430278778076, ... \n", - "2 [0.0, 0.1212573051452636, 1.3225586414337158, ... \n", - "3 [0.0, 0.0814568996429443, 0.1356451511383056, ... \n", - "4 [0.0, 0.0756001472473144, 0.1275269985198974, ... \n", - "5 [0.0, 0.4967567920684814, 0.5608904361724854, ... \n", - "6 [0.0, 0.3762044906616211, 0.431117296218872, 0... \n", - "7 [0.0, 0.4165420532226562, 0.4629170894622803, ... \n", - "8 [0.0, 0.0736458301544189, 0.1279859542846679, ... \n", - "9 [0.0, 0.5078859329223633, 2.1586294174194336, ... \n", - "10 [0.0, 0.0880179405212402, 0.1384925842285156, ... \n", - "11 [0.0, 0.105222463607788, 0.5305688381195068, 0... \n", - "12 [0.0, 0.0834097862243652, 0.1391124725341797, ... \n", - "13 [0.0, 0.3581366539001465, 0.4076368808746338, ... \n", - "14 [0.0, 0.4057462215423584, 0.4757955074310303, ... \n", - "15 [0.0, 0.0710034370422363, 0.1229746341705322, ... \n", - "16 [0.0, 0.5121884346008301, 0.6163341999053955, ... \n", - "17 [0.0, 0.0620093345642089, 0.1064913272857666, ... \n", - "18 [0.0, 0.0739712715148925, 0.3498718738555908, ... \n", - "19 [0.0, 0.0731599330902099, 0.1258463859558105, ... \n", - "20 [0.0, 0.0716698169708252, 0.3837392330169678, ... \n", - "21 [0.0, 0.0796918869018554, 0.136481761932373, 0... \n", - "22 [0.0, 0.0763318538665771, 0.1288254261016845, ... \n", - "23 [0.0, 0.0935940742492675, 0.1590816974639892, ... \n", - "24 [0.0, 0.4225220680236816, 0.4740092754364013, ... \n", - "25 [0.0, 0.0677759647369384, 0.1182715892791748, ... \n", - "26 [0.0, 0.1853532791137695, 0.2280802726745605, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [223.5566091537476, 2220.451018333435, 4221.40... \n", - "1 [274.21609234809875, 384.146431684494, 494.799... \n", - "2 [143.68791246414185, 2716.6941499710083, 5282.... \n", - "3 [39.832351207733154, 1786.6674716472626, 3532.... \n", - "4 [29.088769912719727, 480.2086806297302, 931.23... \n", - "5 [71.72973155975342, 1517.2784914970398, 2962.6... \n", - "6 [91.20178198814392, 732.8442416191101, 1374.77... \n", - "7 [36.88804602622986, 392.43705701828, 748.09189... \n", - "8 [66.29437732696533, 2633.4035201072693, 5200.9... \n", - "9 [150.7055730819702, 2142.5213186740875, 4135.7... \n", - "10 [202.63741159439087, 312.07030296325684, 421.4... \n", - "11 [140.07307839393616, 2710.320531129837, 5278.5... \n", - "12 [39.605302572250366, 1786.3815639019012, 3532.... \n", - "13 [44.14009642601013, 495.01899003982544, 946.13... \n", - "14 [68.77526068687439, 1513.8398852348328, 2959.3... \n", - "15 [78.06941366195679, 719.7729306221008, 1361.56... \n", - "16 [41.36652088165283, 397.3475036621094, 753.356... \n", - "17 [63.91058588027954, 2631.978570699692, 5200.04... \n", - "18 [146.17477941513062, 2140.449363470077, 4134.6... \n", - "19 [197.37460255622864, 306.51010155677795, 416.4... \n", - "20 [143.55551767349243, 2712.7365052700043, 5281.... \n", - "21 [37.98716616630554, 1785.667103290558, 3531.99... \n", - "22 [26.34694647789001, 477.3165102005005, 928.345... \n", - "23 [37.15535092353821, 1482.7921550273895, 2928.1... \n", - "24 [89.94409418106079, 731.4727942943573, 1373.53... \n", - "25 [24.22519898414612, 379.8066084384918, 735.507... \n", - "26 [69.51201510429382, 2637.08406162262, 5205.049... \n", - "\n", - " global_step \\\n", - "0 [1, 1991, 4696, 7767, 10830, 13694, 16708, 196... \n", - "1 [1, 268, 333, 401, 469, 535, 606, 674, 737, 80... \n", - "2 [1, 2211, 5276, 8326, 11439, 14481, 17483, 205... \n", - "3 [1, 1593, 3797, 6060, 8421, 10866, 13172, 1542... \n", - "4 [1, 1920, 3847, 5763, 7682, 9597] \n", - "5 [1, 1087, 2694, 4397, 6144, 8054, 9954, 11804,... \n", - "6 [1, 4416, 8827, 13237, 17647, 22065, 26489, 30... \n", - "7 [1, 384, 764, 1140, 1518, 1925, 2337, 2751, 31... \n", - "8 [1, 6515, 13034, 19552, 26073, 32598, 39128] \n", - "9 [1, 3344, 6050, 8673, 11149, 13741, 16218, 187... \n", - "10 [1, 284, 386, 492, 600, 704, 808, 917, 2154, 4... \n", - "11 [1, 2291, 5445, 8486, 11699, 14722, 17901, 209... \n", - "12 [1, 1637, 3787, 6045, 8365, 10808, 13130, 1539... \n", - "13 [1, 1928, 3854, 5764, 7711] \n", - "14 [1, 1114, 2618, 4196, 6031, 7936, 9794, 11550,... \n", - "15 [1, 4410, 8825, 13247, 17666, 22091, 26516, 30... \n", - "16 [1, 197, 392, 594, 791, 985, 1196, 1403, 1603,... \n", - "17 [1, 6532, 13065, 19599, 26142, 32683, 39220] \n", - "18 [1, 1765, 4253, 7220, 10350, 13413, 16464, 195... \n", - "19 [1, 307, 430, 555, 679, 806, 932, 2597, 4856, ... \n", - "20 [1, 2293, 5421, 8448, 11619, 14621, 17716, 207... \n", - "21 [1, 1618, 3787, 6053, 8383, 10830, 13148, 1540... \n", - "22 [1, 1945, 3878, 5802, 7724, 9643] \n", - "23 [1, 1059, 2500, 4037, 5920, 7795, 9584, 11323,... \n", - "24 [1, 4404, 8813, 13222, 17631, 22041, 26451, 30... \n", - "25 [1, 380, 753, 1125, 1499, 1876, 2257, 2688, 31... \n", - "26 [1, 6581, 13174, 19762, 26349, 32942, 39534] \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0] \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0] \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0] \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0] \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "26 [0, 0, 0, 0, 0, 0, 0] \n", - "\n", - " score \\\n", - "0 [223.5566091537476, 2220.451018333435, 4221.40... \n", - "1 [274.21609234809875, 384.146431684494, 494.799... \n", - "2 [143.68791246414185, 2716.6941499710083, 5282.... \n", - "3 [39.832351207733154, 1786.6674716472626, 3532.... \n", - "4 [29.088769912719727, 480.2086806297302, 931.23... \n", - "5 [71.72973155975342, 1517.2784914970398, 2962.6... \n", - "6 [91.20178198814392, 732.8442416191101, 1374.77... \n", - "7 [36.88804602622986, 392.43705701828, 748.09189... \n", - "8 [66.29437732696533, 2633.4035201072693, 5200.9... \n", - "9 [150.7055730819702, 2142.5213186740875, 4135.7... \n", - "10 [202.63741159439087, 312.07030296325684, 421.4... \n", - "11 [140.07307839393616, 2710.320531129837, 5278.5... \n", - "12 [39.605302572250366, 1786.3815639019012, 3532.... \n", - "13 [44.14009642601013, 495.01899003982544, 946.13... \n", - "14 [68.77526068687439, 1513.8398852348328, 2959.3... \n", - "15 [78.06941366195679, 719.7729306221008, 1361.56... \n", - "16 [41.36652088165283, 397.3475036621094, 753.356... \n", - "17 [63.91058588027954, 2631.978570699692, 5200.04... \n", - "18 [146.17477941513062, 2140.449363470077, 4134.6... \n", - "19 [197.37460255622864, 306.51010155677795, 416.4... \n", - "20 [143.55551767349243, 2712.7365052700043, 5281.... \n", - "21 [37.98716616630554, 1785.667103290558, 3531.99... \n", - "22 [26.34694647789001, 477.3165102005005, 928.345... \n", - "23 [37.15535092353821, 1482.7921550273895, 2928.1... \n", - "24 [89.94409418106079, 731.4727942943573, 1373.53... \n", - "25 [24.22519898414612, 379.8066084384918, 735.507... \n", - "26 [69.51201510429382, 2637.08406162262, 5205.049... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0011, 0.18, 0.3715, 0.4419, 0.4909, 0.5267,... ... \n", - "1 NaN ... \n", - "2 [0.0023, 0.0859, 0.2135, 0.3011, 0.3525, 0.400... ... \n", - "3 NaN ... \n", - "4 [0.5055384804575995, 0.9844799572790316, 0.985... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.596978676427866, 0.6477... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0008, 0.3113, 0.4121, 0.4546, 0.4916, 0.512... ... \n", - "10 NaN ... \n", - "11 [0.0017, 0.0847, 0.2289, 0.3118, 0.367, 0.4066... ... \n", - "12 NaN ... \n", - "13 [0.5274087609992596, 0.9844559520029244, 0.985... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.5992911510080763, 0.648... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0012, 0.1592, 0.3589, 0.4236, 0.4711, 0.509... ... \n", - "19 NaN ... \n", - "20 [0.0034, 0.0925, 0.2233, 0.3053, 0.3654, 0.395... ... \n", - "21 NaN ... \n", - "22 [0.5226801427513752, 0.9845886127393052, 0.985... ... \n", - "23 NaN ... \n", - "24 [0.0007088489919237, 0.5973389111614665, 0.647... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.9836527784483174, 0.6400231738521701, 0.315... \n", - "4 NaN \n", - "5 [3.3358760198908897, 0.8947907111475885, 0.277... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.2619610872398976, 0.5497996427364457, 0.276... \n", - "13 NaN \n", - "14 [3.331395741804664, 0.8833679331820595, 0.2785... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.722821416501714, 0.5803698160575484, 0.2726... \n", - "22 NaN \n", - "23 [4.148631294356202, 0.8942886110172356, 0.2919... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0259082690112763, 0.1743363814254526, 0.232... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0301337045027577, 0.1768545035055398, 0.235... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0273175938486598, 0.1771009978188172, 0.232... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0216528224792521, 0.1974636694336906, 0.315... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0228227590453474, 0.1953585983757323, 0.324... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0208646144684521, 0.1960204063187819, 0.314... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0249959488764867, 0.1754256218299787, 0.235... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0268141614113101, 0.1709245205141273, 0.242... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0261832805000614, 0.1711007153690219, 0.236... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 22.23946138116313, 26.048988704203428, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 22.45905354819864, 26.12613522918912, 27... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [5.51818938790284e-10, 22.46300486082346, 26.0... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 27.438174065577453, 30.45630457491916, 3... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 27.755337052687462, 30.658562699131032, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 27.71114771727458, 30.625779000917845, 3... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 23.77091350997772, 27.07742723607471, 27... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 23.93844406580485, 26.988093999738496, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0, 23.864595572562884, 26.892880832819166, ... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61714.26519868653, 34.09501389684652, 28.3165... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60546.41977921857, 34.152758313136694, 28.535... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [61798.03779735442, 33.95846268590055, 28.2785... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [61672.85026165453, 33.85262947305149, 28.0120... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [60559.72336142421, 33.91907723842377, 28.2472... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [61827.23145246574, 33.7399426521659, 28.01327... \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
7criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236456087.0198356.087020e+031.18504610666
16criteo1tb_pytorchtrial_1validation/loss0.123735True0.12372712517.3569081.251736e+041.18504610666
25criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236817497.3931367.141605e+031.18504610666
1fastmri_pytorchtrial_1validation/ssim0.723653False0.7231762142.100114inf0.38668918094
10fastmri_pytorchtrial_1validation/ssim0.723653False0.7233621624.206673inf0.38668918094
19fastmri_pytorchtrial_1validation/ssim0.723653False0.7231141617.665591inf0.38668918094
8finewebedu_lm_pytorchtrial_1validation/ppl22.299500True21.74476115471.4471281.547145e+040.39309172000
17finewebedu_lm_pytorchtrial_1validation/ppl22.299500True21.75125215471.9225571.547192e+040.39309172000
26finewebedu_lm_pytorchtrial_1validation/ppl22.299500True21.58465115476.6857431.547669e+040.39309172000
0imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.64264073922.643341inf0.684987195999
9imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.64258065897.926815inf0.684987195999
18imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.63724069833.618870inf0.684987195999
2imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.60662092532.045695inf0.849634167999
11imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.59968095203.297756inf0.849634167999
20imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.59224077203.511951inf0.849634167999
3librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.09210652374.138849inf0.75071876000
12librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.09386452373.025367inf0.75071876000
21librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.09083250630.201975inf0.75071876000
5librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.16705530413.915967inf0.78990638400
14librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.13148330405.689728inf0.78990638400
23librispeech_deepspeech_pytorchtrial_1validation/wer0.119936False0.13426428934.327749inf0.78990638400
4ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2822741833.4736671.833474e+030.23504752000
13ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2846931848.3308381.848331e+030.23504752000
22ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2937922281.4622351.830407e+030.23504752000
6wmt_pytorchtrial_1validation/bleu30.849100False30.69132717533.780463inf0.145367120000
15wmt_pytorchtrial_1validation/bleu30.849100True30.89746814200.6478301.420065e+040.145367120000
24wmt_pytorchtrial_1validation/bleu30.849100True30.89810514214.7795831.421478e+040.145367120000
\n", - "
" - ], - "text/plain": [ - " workload trial \\\n", - "7 criteo1tb_pytorch trial_1 \n", - "16 criteo1tb_pytorch trial_1 \n", - "25 criteo1tb_pytorch trial_1 \n", - "1 fastmri_pytorch trial_1 \n", - "10 fastmri_pytorch trial_1 \n", - "19 fastmri_pytorch trial_1 \n", - "8 finewebedu_lm_pytorch trial_1 \n", - "17 finewebedu_lm_pytorch trial_1 \n", - "26 finewebedu_lm_pytorch trial_1 \n", - "0 imagenet_resnet_pytorch trial_1 \n", - "9 imagenet_resnet_pytorch trial_1 \n", - "18 imagenet_resnet_pytorch trial_1 \n", - "2 imagenet_vit_pytorch trial_1 \n", - "11 imagenet_vit_pytorch trial_1 \n", - "20 imagenet_vit_pytorch trial_1 \n", - "3 librispeech_conformer_pytorch trial_1 \n", - "12 librispeech_conformer_pytorch trial_1 \n", - "21 librispeech_conformer_pytorch trial_1 \n", - "5 librispeech_deepspeech_pytorch trial_1 \n", - "14 librispeech_deepspeech_pytorch trial_1 \n", - "23 librispeech_deepspeech_pytorch trial_1 \n", - "4 ogbg_pytorch trial_1 \n", - "13 ogbg_pytorch trial_1 \n", - "22 ogbg_pytorch trial_1 \n", - "6 wmt_pytorch trial_1 \n", - "15 wmt_pytorch trial_1 \n", - "24 wmt_pytorch trial_1 \n", - "\n", - " val target metric name val target metric value \\\n", - "7 validation/loss 0.123735 \n", - "16 validation/loss 0.123735 \n", - "25 validation/loss 0.123735 \n", - "1 validation/ssim 0.723653 \n", - "10 validation/ssim 0.723653 \n", - "19 validation/ssim 0.723653 \n", - "8 validation/ppl 22.299500 \n", - "17 validation/ppl 22.299500 \n", - "26 validation/ppl 22.299500 \n", - "0 validation/accuracy 0.774310 \n", - "9 validation/accuracy 0.774310 \n", - "18 validation/accuracy 0.774310 \n", - "2 validation/accuracy 0.773090 \n", - "11 validation/accuracy 0.773090 \n", - "20 validation/accuracy 0.773090 \n", - "3 validation/wer 0.085884 \n", - "12 validation/wer 0.085884 \n", - "21 validation/wer 0.085884 \n", - "5 validation/wer 0.119936 \n", - "14 validation/wer 0.119936 \n", - "23 validation/wer 0.119936 \n", - "4 validation/mean_average_precision 0.280980 \n", - "13 validation/mean_average_precision 0.280980 \n", - "22 validation/mean_average_precision 0.280980 \n", - "6 validation/bleu 30.849100 \n", - "15 validation/bleu 30.849100 \n", - "24 validation/bleu 30.849100 \n", - "\n", - " val target reached best metric value on val \\\n", - "7 True 0.123645 \n", - "16 True 0.123727 \n", - "25 True 0.123681 \n", - "1 False 0.723176 \n", - "10 False 0.723362 \n", - "19 False 0.723114 \n", - "8 True 21.744761 \n", - "17 True 21.751252 \n", - "26 True 21.584651 \n", - "0 False 0.642640 \n", - "9 False 0.642580 \n", - "18 False 0.637240 \n", - "2 False 0.606620 \n", - "11 False 0.599680 \n", - "20 False 0.592240 \n", - "3 False 0.092106 \n", - "12 False 0.093864 \n", - "21 False 0.090832 \n", - "5 False 0.167055 \n", - "14 False 0.131483 \n", - "23 False 0.134264 \n", - "4 True 0.282274 \n", - "13 True 0.284693 \n", - "22 True 0.293792 \n", - "6 False 30.691327 \n", - "15 True 30.897468 \n", - "24 True 30.898105 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "7 6087.019835 6.087020e+03 1.185046 \n", - "16 12517.356908 1.251736e+04 1.185046 \n", - "25 7497.393136 7.141605e+03 1.185046 \n", - "1 2142.100114 inf 0.386689 \n", - "10 1624.206673 inf 0.386689 \n", - "19 1617.665591 inf 0.386689 \n", - "8 15471.447128 1.547145e+04 0.393091 \n", - "17 15471.922557 1.547192e+04 0.393091 \n", - "26 15476.685743 1.547669e+04 0.393091 \n", - "0 73922.643341 inf 0.684987 \n", - "9 65897.926815 inf 0.684987 \n", - "18 69833.618870 inf 0.684987 \n", - "2 92532.045695 inf 0.849634 \n", - "11 95203.297756 inf 0.849634 \n", - "20 77203.511951 inf 0.849634 \n", - "3 52374.138849 inf 0.750718 \n", - "12 52373.025367 inf 0.750718 \n", - "21 50630.201975 inf 0.750718 \n", - "5 30413.915967 inf 0.789906 \n", - "14 30405.689728 inf 0.789906 \n", - "23 28934.327749 inf 0.789906 \n", - "4 1833.473667 1.833474e+03 0.235047 \n", - "13 1848.330838 1.848331e+03 0.235047 \n", - "22 2281.462235 1.830407e+03 0.235047 \n", - "6 17533.780463 inf 0.145367 \n", - "15 14200.647830 1.420065e+04 0.145367 \n", - "24 14214.779583 1.421478e+04 0.145367 \n", - "\n", - " step_hint \n", - "7 10666 \n", - "16 10666 \n", - "25 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "8 72000 \n", - "17 72000 \n", - "26 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "2 167999 \n", - "11 167999 \n", - "20 167999 \n", - "3 76000 \n", - "12 76000 \n", - "21 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "4 52000 \n", - "13 52000 \n", - "22 52000 \n", - "6 120000 \n", - "15 120000 \n", - "24 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== NAdamW (nadamw) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial study \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "1 fastmri_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "2 wmt_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "3 ogbg_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "7 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "8 criteo1tb_jax (trial_1, logs/self_tuning/nadamw) study_2 \n", - "9 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "10 fastmri_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "11 wmt_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "12 ogbg_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "13 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "14 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "15 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "16 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "17 criteo1tb_jax (trial_1, logs/self_tuning/nadamw) study_1 \n", - "18 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "19 fastmri_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "20 wmt_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "21 ogbg_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "22 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "23 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "24 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "25 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "26 criteo1tb_jax (trial_1, logs/self_tuning/nadamw) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [51.90237808227539, 74.61932420730591, 100.193... \n", - "1 [83.20116424560547, 86.73755669593811, 90.4861... \n", - "2 [918.2941384315492, 1483.377329826355, 1897.80... \n", - "3 [248.5209014415741, 361.0606143474579, 473.883... \n", - "4 [219.1846687793732, 337.8954961299896, 453.558... \n", - "5 [261.92410469055176, 361.2731699943543, 460.49... \n", - "6 [64.1781919002533, 87.87314581871033, 115.1403... \n", - "7 [331.91812682151794, 662.5534150600433, 993.04... \n", - "8 [909.4134500026704, 1764.604056596756, 2619.72... \n", - "9 [50.81052589416504, 73.91916966438293, 97.1627... \n", - "10 [408.10442304611206, 411.8153114318848, 415.31... \n", - "11 [920.1400611400604, 1469.083578824997, 2000.24... \n", - "12 [249.5406184196472, 362.92584133148193, 477.28... \n", - "13 [226.3898389339447, 346.6491906642914, 460.955... \n", - "14 [260.0466949939728, 367.05646300315857, 477.52... \n", - "15 [63.57307243347168, 90.2947325706482, 118.4526... \n", - "16 [332.2260537147522, 662.931601524353, 993.0545... \n", - "17 [938.9255018234252, 1804.9299864768984, 2630.1... \n", - "18 [54.63754725456238, 77.89591932296753, 101.496... \n", - "19 [457.8655505180359, 461.6156964302063, 465.164... \n", - "20 [913.3675830364228, 1442.9277577400208, 1980.4... \n", - "21 [247.726003408432, 361.8750648498535, 475.4744... \n", - "22 [203.3264138698578, 294.3983256816864, 415.929... \n", - "23 [281.4623284339905, 380.5997538566589, 483.789... \n", - "24 [64.80931448936462, 88.1339979171753, 115.9059... \n", - "25 [331.7922477722168, 662.2826445102692, 992.787... \n", - "26 [950.9594469070436, 1796.3951213359833, 2628.8... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0643026828765869, 0.189241886138916, 0... \n", - "1 [0.0, 0.0716164112091064, 0.1251900196075439, ... \n", - "2 [0.0, 0.071897268295288, 0.1258275508880615, 0... \n", - "3 [0.0, 0.9330494403839112, 0.9896271228790284, ... \n", - "4 [0.0, 0.2512969970703125, 0.3478367328643799, ... \n", - "5 [0.0, 0.0934476852416992, 0.1613273620605468, ... \n", - "6 [0.0, 0.0660862922668457, 0.1697111129760742, ... \n", - "7 [0.0, 0.3485991954803467, 0.4040088653564453, ... \n", - "8 [0.0, 0.0675971508026123, 0.1269857883453369, ... \n", - "9 [0.0, 0.0805227756500244, 0.1315207481384277, ... \n", - "10 [0.0, 0.0922513008117675, 0.1471989154815673, ... \n", - "11 [0.0, 0.0776503086090087, 0.1299726963043213, ... \n", - "12 [0.0, 0.8798964023590088, 0.9376168251037598, ... \n", - "13 [0.0, 0.3227369785308838, 0.3912594318389892, ... \n", - "14 [0.0, 0.3094844818115234, 0.3819949626922607, ... \n", - "15 [0.0, 0.0685133934020996, 0.2416143417358398, ... \n", - "16 [0.0, 0.4288389682769775, 0.4814865589141845, ... \n", - "17 [0.0, 0.0785014629364013, 0.1327707767486572, ... \n", - "18 [0.0, 0.4143304824829101, 0.4707992076873779, ... \n", - "19 [0.0, 0.3232505321502685, 0.3784902095794678, ... \n", - "20 [0.0, 0.071552038192749, 0.1300771236419677, 0... \n", - "21 [0.0, 0.8936796188354492, 0.9475176334381104, ... \n", - "22 [0.0, 0.3477139472961426, 0.4777727127075195, ... \n", - "23 [0.0, 0.1012487411499023, 0.173581838607788, 0... \n", - "24 [0.0, 0.0654864311218261, 0.1694397926330566, ... \n", - "25 [0.0, 0.362922191619873, 0.4159901142120361, 0... \n", - "26 [0.0, 0.0608084201812744, 0.1265900135040283, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [54.01124930381775, 2050.06639623642, 4046.122... \n", - "1 [45.05637097358704, 155.0656714439392, 265.088... \n", - "2 [57.002378702163696, 701.0134603977203, 1344.9... \n", - "3 [18.658089876174927, 469.7143471240997, 921.76... \n", - "4 [193.8554151058197, 1946.682010889053, 3694.73... \n", - "5 [150.94626140594482, 1598.380912065506, 3046.2... \n", - "6 [50.08027577400208, 2621.24298453331, 5192.111... \n", - "7 [24.989517211914062, 2595.821537733078, 5166.9... \n", - "8 [8.362662315368652, 364.9388041496277, 722.021... \n", - "9 [50.25774669647217, 2046.2609922885893, 4042.1... \n", - "10 [148.6376919746399, 258.60642552375793, 369.94... \n", - "11 [56.65945386886597, 700.674159526825, 1344.642... \n", - "12 [21.087809085845947, 472.202406167984, 924.209... \n", - "13 [195.5174601078033, 1945.6045894622805, 3701.9... \n", - "14 [137.36308789253235, 1586.2535910606384, 3037.... \n", - "15 [50.80202078819275, 2621.868891000748, 5192.77... \n", - "16 [23.087243795394897, 2593.6414427757263, 5164.... \n", - "17 [8.478259801864624, 364.45390701293945, 720.53... \n", - "18 [63.32855319976807, 2059.0223972797394, 4054.9... \n", - "19 [169.98700952529907, 280.22419810295105, 390.6... \n", - "20 [55.58284568786621, 699.517596244812, 1343.459... \n", - "21 [20.859290599823, 472.1289200782776, 924.06205... \n", - "22 [177.73914647102356, 1927.8040823936465, 3678.... \n", - "23 [152.2013635635376, 1607.698400259018, 3061.36... \n", - "24 [51.87806582450867, 2623.07006764412, 5194.006... \n", - "25 [24.786927700042725, 2595.75295329094, 5166.66... \n", - "26 [7.995659112930298, 364.401686668396, 721.1048... \n", - "\n", - " global_step \\\n", - "0 [1, 7484, 15392, 23307, 31219, 39132, 47046, 5... \n", - "1 [1, 759, 1767, 2783, 3799, 4815, 5831, 6847, 7... \n", - "2 [1, 4727, 9888, 15052, 20216, 25380, 30542, 35... \n", - "3 [1, 2182, 4462, 6877, 9271, 11667, 14068, 1645... \n", - "4 [1, 511, 1059, 1744, 2462, 3095, 3951, 4845, 5... \n", - "5 [1, 385, 731, 1103, 1570, 1905, 2409, 2829, 32... \n", - "6 [1, 5822, 11781, 17736, 23689, 29637, 35583, 4... \n", - "7 [1, 5839, 11720, 17606, 23488, 29371, 35253, 4... \n", - "8 [1, 383, 774, 1158, 1547, 1933, 2340, 2745, 31... \n", - "9 [1, 7771, 15681, 23593, 31509, 39427, 47346, 5... \n", - "10 [1, 299, 426, 551, 679, 808, 938, 1788, 2805, ... \n", - "11 [1, 4641, 9662, 14686, 19710, 24734, 29757, 34... \n", - "12 [1, 2161, 4424, 6736, 9040, 11396, 13772, 1613... \n", - "13 [1, 499, 1019, 1682, 2405, 3018, 3878, 4754, 5... \n", - "14 [1, 626, 1075, 1673, 2122, 2729, 3142, 3745, 4... \n", - "15 [1, 5471, 11027, 16609, 22175, 27741, 33299, 3... \n", - "16 [1, 5855, 11751, 17648, 23546, 29444, 35342, 4... \n", - "17 [1, 384, 764, 1139, 1521, 1904, 2290, 2668, 30... \n", - "18 [1, 7699, 15657, 23617, 31577, 39538, 47499, 5... \n", - "19 [1, 289, 404, 518, 632, 743, 860, 1006, 2022, ... \n", - "20 [1, 4768, 9931, 15095, 20257, 25419, 30582, 35... \n", - "21 [1, 2195, 4492, 6758, 9024, 11376, 13746, 1609... \n", - "22 [1, 876, 1712, 2451, 3066, 3904, 4748, 5551, 6... \n", - "23 [1, 399, 792, 1319, 1805, 2382, 2924, 3609, 41... \n", - "24 [1, 5728, 11632, 17549, 23457, 29355, 35249, 4... \n", - "25 [1, 5841, 11719, 17599, 23484, 29368, 35250, 4... \n", - "26 [1, 385, 774, 1165, 1566, 1972, 2382, 2795, 32... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [54.01124930381775, 2050.06639623642, 4046.122... \n", - "1 [45.05637097358704, 155.0656714439392, 265.088... \n", - "2 [57.002378702163696, 701.0134603977203, 1344.9... \n", - "3 [18.658089876174927, 469.7143471240997, 921.76... \n", - "4 [193.8554151058197, 1946.682010889053, 3694.73... \n", - "5 [150.94626140594482, 1598.380912065506, 3046.2... \n", - "6 [50.08027577400208, 2621.24298453331, 5192.111... \n", - "7 [24.989517211914062, 2595.821537733078, 5166.9... \n", - "8 [8.362662315368652, 364.9388041496277, 722.021... \n", - "9 [50.25774669647217, 2046.2609922885893, 4042.1... \n", - "10 [148.6376919746399, 258.60642552375793, 369.94... \n", - "11 [56.65945386886597, 700.674159526825, 1344.642... \n", - "12 [21.087809085845947, 472.202406167984, 924.209... \n", - "13 [195.5174601078033, 1945.6045894622805, 3701.9... \n", - "14 [137.36308789253235, 1586.2535910606384, 3037.... \n", - "15 [50.80202078819275, 2621.868891000748, 5192.77... \n", - "16 [23.087243795394897, 2593.6414427757263, 5164.... \n", - "17 [8.478259801864624, 364.45390701293945, 720.53... \n", - "18 [63.32855319976807, 2059.0223972797394, 4054.9... \n", - "19 [169.98700952529907, 280.22419810295105, 390.6... \n", - "20 [55.58284568786621, 699.517596244812, 1343.459... \n", - "21 [20.859290599823, 472.1289200782776, 924.06205... \n", - "22 [177.73914647102356, 1927.8040823936465, 3678.... \n", - "23 [152.2013635635376, 1607.698400259018, 3061.36... \n", - "24 [51.87806582450867, 2623.07006764412, 5194.006... \n", - "25 [24.786927700042725, 2595.75295329094, 5166.66... \n", - "26 [7.995659112930298, 364.401686668396, 721.1048... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.00080000004, 0.32520002, 0.43190002, 0.4439... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5578758120536804, 0.153... ... \n", - "3 [0.5102195143699646, 0.9840373396873474, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.1606, 0.3122, 0.37340003, 0.4185, 0.... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.00070000003, 0.3255, 0.43240002, 0.4401, 0.... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5554935932159424, 0.616... ... \n", - "12 [0.4708649516105652, 0.9835235476493835, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.1605, 0.31100002, 0.36380002, 0.4216... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.001, 0.3305, 0.4397, 0.45880002, 0.4771, 0.... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.5538667440414429, 0.618... ... \n", - "21 [0.4984333217144012, 0.9833184480667114, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.16510001, 0.3086, 0.3727, 0.4162, 0.... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0258855407948226, 0.1453424219634816, 0.191... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0263018970347086, 0.0911030511403518, 0.155... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0265466781666688, 0.0600200756094912, 0.191... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.492715, 1.512555, 1.5208834, 1.4962583, 1.1... \n", - "5 [7.734332, 1.5984704, 1.4983822, 1.4902854, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.7254257, 1.5097554, 1.5235134, 1.5611156, 1... \n", - "14 [7.9693704, 1.4721419, 1.5703008, 1.4840963, 1... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.605018, 1.5239444, 1.4940355, 1.235258, 0.9... \n", - "23 [7.731372, 1.8455368, 1.4765694, 1.582876, 1.3... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0186257185221297, 0.899579550301627, 0.8995... \n", - "5 [3.733268336278512, 0.899579550301627, 0.89957... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.2072796701399469, 0.899579550301627, 0.8995... \n", - "14 [4.181544898746775, 0.899579550301627, 0.86381... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.3121280441979972, 0.899579550301627, 0.8882... \n", - "23 [2.497085288322873, 0.8995592387219954, 0.8796... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.7295585, 1.4977634, 1.4994171, 1.4757148, 1... \n", - "5 [8.001505, 1.5861665, 1.5134705, 1.5157527, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.9380255, 1.4967417, 1.5009909, 1.5485442, 1... \n", - "14 [8.233555, 1.4928513, 1.5939622, 1.5210807, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.818481, 1.5057889, 1.4813172, 1.2193857, 0.... \n", - "23 [7.9176316, 1.9335651, 1.5028745, 1.6277757, 1... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9577077650292568, 0.944635537887994, 0.9427... \n", - "5 [3.8553661787060367, 0.944635537887994, 0.9427... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9770995148158176, 0.944635537887994, 0.9427... \n", - "14 [4.364689836120192, 0.944635537887994, 0.89613... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.823928117776899, 0.944635537887994, 0.92561... \n", - "23 [2.652874664223393, 0.94460979176536, 0.915723... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.455666, 1.5172017, 1.5281371, 1.5189266, 1.... \n", - "5 [7.6729517, 1.5870099, 1.5094107, 1.502723, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.68937, 1.5142854, 1.5281829, 1.5763985, 1.3... \n", - "14 [7.949968, 1.4857459, 1.5876447, 1.4987065, 1.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.582479, 1.5293611, 1.5134667, 1.2799089, 1.... \n", - "23 [7.6922774, 1.8962749, 1.5027236, 1.6092181, 1... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.015680973301791, 0.8967218654950997, 0.8967... \n", - "5 [3.415536136725728, 0.8967218654950997, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.2079273885965336, 0.8967218654950997, 0.896... \n", - "14 [3.8022691063583256, 0.8967218654950997, 0.869... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.2364022594505866, 0.8967218654950997, 0.886... \n", - "23 [2.3874861198281274, 0.8966542750929368, 0.879... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62594.01908065168, 55.88392690877435, 35.2134... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62044.45258363767, 64.09513362355591, 76.5764... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61618.94619976116, 101.82743547934614, 40.402... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62582.439456052765, 56.1059142324853, 35.2683... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62167.29302458106, 64.34360168840612, 76.9715... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61641.80979454679, 102.33380914052852, 40.516... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735True0.1236926425.6295506.425630e+030.91309910666
17criteo1tb_jaxtrial_1validation/loss0.123735True0.1236418208.5190797.851880e+030.91309910666
26criteo1tb_jaxtrial_1validation/loss0.123735True0.1236927492.6946777.492695e+030.91309910666
1fastmri_jaxtrial_1validation/ssim0.723653True0.724494924.8731539.248732e+020.10824618094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7240361800.7732001.800773e+030.10824618094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7236942041.2998712.041300e+030.10824618094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.52338923164.1815622.316418e+040.43702272000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.98082825733.8476692.573385e+040.43702272000
25finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.64192025735.7297592.573573e+040.43702272000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75258061911.160034inf0.252192195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75536047948.213367inf0.252192195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75414061916.836822inf0.252192195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77342066879.3725086.687937e+040.462956167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77594074585.6678797.458567e+040.462956167999
24imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77710072015.5787297.201558e+040.462956167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14736664933.099719inf2.49269176000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14928864943.344027inf2.49269176000
22librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14612164944.956790inf2.49269176000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16037355220.705860inf2.50313238400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15433855216.424381inf2.50313238400
23librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15290955258.113032inf2.50313238400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2776484085.908834inf0.19048352000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2740584088.241700inf0.19048352000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2746765444.092821inf0.19048352000
2wmt_jaxtrial_1validation/bleu30.849100False29.84687912936.535747inf0.124761120000
11wmt_jaxtrial_1validation/bleu30.849100False30.02463212292.188711inf0.124761120000
20wmt_jaxtrial_1validation/bleu30.849100False29.30118614222.570495inf0.124761120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "26 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "25 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "24 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "22 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "23 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 True 0.123692 \n", - "17 0.123735 True 0.123641 \n", - "26 0.123735 True 0.123692 \n", - "1 0.723653 True 0.724494 \n", - "10 0.723653 True 0.724036 \n", - "19 0.723653 True 0.723694 \n", - "7 22.299500 True 21.523389 \n", - "16 22.299500 True 21.980828 \n", - "25 22.299500 True 21.641920 \n", - "0 0.774310 False 0.752580 \n", - "9 0.774310 False 0.755360 \n", - "18 0.774310 False 0.754140 \n", - "6 0.773090 True 0.773420 \n", - "15 0.773090 True 0.775940 \n", - "24 0.773090 True 0.777100 \n", - "4 0.085884 False 0.147366 \n", - "13 0.085884 False 0.149288 \n", - "22 0.085884 False 0.146121 \n", - "5 0.119936 False 0.160373 \n", - "14 0.119936 False 0.154338 \n", - "23 0.119936 False 0.152909 \n", - "3 0.280980 False 0.277648 \n", - "12 0.280980 False 0.274058 \n", - "21 0.280980 False 0.274676 \n", - "2 30.849100 False 29.846879 \n", - "11 30.849100 False 30.024632 \n", - "20 30.849100 False 29.301186 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 6425.629550 6.425630e+03 0.913099 \n", - "17 8208.519079 7.851880e+03 0.913099 \n", - "26 7492.694677 7.492695e+03 0.913099 \n", - "1 924.873153 9.248732e+02 0.108246 \n", - "10 1800.773200 1.800773e+03 0.108246 \n", - "19 2041.299871 2.041300e+03 0.108246 \n", - "7 23164.181562 2.316418e+04 0.437022 \n", - "16 25733.847669 2.573385e+04 0.437022 \n", - "25 25735.729759 2.573573e+04 0.437022 \n", - "0 61911.160034 inf 0.252192 \n", - "9 47948.213367 inf 0.252192 \n", - "18 61916.836822 inf 0.252192 \n", - "6 66879.372508 6.687937e+04 0.462956 \n", - "15 74585.667879 7.458567e+04 0.462956 \n", - "24 72015.578729 7.201558e+04 0.462956 \n", - "4 64933.099719 inf 2.492691 \n", - "13 64943.344027 inf 2.492691 \n", - "22 64944.956790 inf 2.492691 \n", - "5 55220.705860 inf 2.503132 \n", - "14 55216.424381 inf 2.503132 \n", - "23 55258.113032 inf 2.503132 \n", - "3 4085.908834 inf 0.190483 \n", - "12 4088.241700 inf 0.190483 \n", - "21 5444.092821 inf 0.190483 \n", - "2 12936.535747 inf 0.124761 \n", - "11 12292.188711 inf 0.124761 \n", - "20 14222.570495 inf 0.124761 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "26 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "24 167999 \n", - "4 76000 \n", - "13 76000 \n", - "22 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== NAdamW (Baseline v0.5) (nadamw_baselinev05) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_conformer_jax \n", - "23 librispeech_deepspeech_jax \n", - "24 imagenet_vit_jax \n", - "25 finewebedu_lm_jax \n", - "26 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "1 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "2 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "3 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "4 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "5 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "6 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "7 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "8 (trial_1, logs/self_tuning/nadamw_baselinev05) study_2 \n", - "9 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "10 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "11 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "12 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "13 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "14 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "15 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "16 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "17 (trial_1, logs/self_tuning/nadamw_baselinev05) study_1 \n", - "18 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "19 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "20 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "21 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "22 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "23 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "24 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "25 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "26 (trial_1, logs/self_tuning/nadamw_baselinev05) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [51.48059797286987, 73.4251639842987, 96.22257... \n", - "1 [527.0430819988251, 535.2879242897034, 557.935... \n", - "2 [927.469242811203, 1462.9391164779663, 2005.10... \n", - "3 [219.04566764831543, 320.37520575523376, 420.2... \n", - "4 [226.3667311668396, 331.0051839351654, 459.643... \n", - "5 [270.2883107662201, 401.80145740509033, 534.31... \n", - "6 [65.4846076965332, 88.84808611869812, 116.2070... \n", - "7 [331.81660509109497, 662.8467864990234, 993.39... \n", - "8 [1046.161494255066, 1931.1954009532928, 2820.1... \n", - "9 [52.30318260192871, 74.87603306770325, 98.0546... \n", - "10 [526.7056274414062, 530.5104801654816, 534.031... \n", - "11 [915.241138458252, 1509.479169845581, 2009.474... \n", - "12 [255.142140865326, 370.1265525817871, 481.8985... \n", - "13 [240.8509469032288, 359.4669075012207, 482.155... \n", - "14 [270.2786633968353, 407.4143099784851, 540.229... \n", - "15 [65.79198789596558, 89.84797239303589, 117.064... \n", - "16 [331.56597232818604, 662.2329275608063, 992.52... \n", - "17 [1005.4547564983368, 1858.024605512619, 2701.0... \n", - "18 [53.99652576446533, 76.33750796318054, 99.7673... \n", - "19 [516.190141916275, 519.9189643859863, 523.4413... \n", - "20 [912.2646050453186, 1507.2980360984802, 2077.3... \n", - "21 [244.2597694396973, 353.99645233154297, 464.94... \n", - "22 [233.7892622947693, 354.4134202003479, 482.702... \n", - "23 [272.44037342071533, 421.2152700424194, 535.76... \n", - "24 [66.5149998664856, 90.60617542266846, 115.4130... \n", - "25 [331.94024991989136, 661.9062061309814, 991.95... \n", - "26 [1014.4777808189392, 1898.8417718410487, 2780.... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0588934421539306, 0.1068084239959716, ... \n", - "1 [0.0, 0.0753395557403564, 0.1214032173156738, ... \n", - "2 [0.0, 0.4413132667541504, 0.4809820652008056, ... \n", - "3 [0.0, 0.0553259849548339, 0.0874829292297363, ... \n", - "4 [0.0, 0.3954536914825439, 0.8953216075897217, ... \n", - "5 [0.0, 0.0848715305328369, 0.1357815265655517, ... \n", - "6 [0.0, 0.0538709163665771, 0.169656753540039, 0... \n", - "7 [0.0, 0.0853385925292968, 0.1204423904418945, ... \n", - "8 [0.0, 0.5279953479766846, 0.5611443519592285, ... \n", - "9 [0.0, 0.423630952835083, 0.5124669075012207, 0... \n", - "10 [0.0, 0.0588860511779785, 0.0931234359741211, ... \n", - "11 [0.0, 0.4755475521087646, 0.5128471851348877, ... \n", - "12 [0.0, 0.3936202526092529, 0.4314403533935547, ... \n", - "13 [0.0, 0.1062839031219482, 0.1825306415557861, ... \n", - "14 [0.0, 0.0766007900238037, 0.1258268356323242, ... \n", - "15 [0.0, 0.0545308589935302, 0.1488237380981445, ... \n", - "16 [0.0, 0.3716053962707519, 0.4050438404083252, ... \n", - "17 [0.0, 0.0472693443298339, 0.079982042312622, 0... \n", - "18 [0.0, 0.0527141094207763, 0.1315462589263916, ... \n", - "19 [0.0, 0.4149324893951416, 0.4587612152099609, ... \n", - "20 [0.0, 0.0525336265563964, 0.0916855335235595, ... \n", - "21 [0.0, 0.1107754707336425, 0.1471850872039795, ... \n", - "22 [0.0, 0.3880486488342285, 0.4384136199951172, ... \n", - "23 [0.0, 0.3426601886749267, 0.3931038379669189, ... \n", - "24 [0.0, 0.0515773296356201, 0.1762659549713134, ... \n", - "25 [0.0, 0.0543961524963378, 0.0900564193725586, ... \n", - "26 [0.0, 0.3007435798645019, 0.3315153121948242, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [57.07999563217163, 2053.151053905487, 4049.10... \n", - "1 [181.3655138015747, 292.1376211643219, 402.424... \n", - "2 [60.29005146026611, 703.9345781803131, 1347.95... \n", - "3 [18.382744312286377, 470.431764125824, 922.454... \n", - "4 [182.0630955696106, 1936.099143743515, 3686.69... \n", - "5 [143.99548768997192, 1591.621477842331, 3040.8... \n", - "6 [52.34902095794678, 2623.535446166992, 5194.48... \n", - "7 [20.67739987373352, 2591.5677597522736, 5162.6... \n", - "8 [12.02135729789734, 368.27277421951294, 724.80... \n", - "9 [58.50454592704773, 2054.155114889145, 4050.07... \n", - "10 [178.14231944084167, 288.94940090179443, 399.6... \n", - "11 [60.05821514129639, 703.5853009223938, 1347.61... \n", - "12 [21.65388512611389, 473.26898407936096, 925.33... \n", - "13 [196.92340350151065, 1957.001183271408, 3712.4... \n", - "14 [144.58999013900757, 1595.8152797222135, 3051.... \n", - "15 [52.16976881027222, 2623.3687257766724, 5194.2... \n", - "16 [23.976256608963013, 2594.753819465637, 5166.0... \n", - "17 [8.3849778175354, 364.54811835289, 721.0765557... \n", - "18 [54.72272038459778, 2050.6129372119904, 4046.5... \n", - "19 [186.7236540317536, 297.0783066749573, 408.148... \n", - "20 [53.981388092041016, 697.932382106781, 1341.92... \n", - "21 [19.190465450286865, 471.20962142944336, 923.3... \n", - "22 [199.12085151672363, 1950.232220411301, 3710.3... \n", - "23 [157.0471408367157, 1616.143168449402, 3071.72... \n", - "24 [50.729454040527344, 2621.853657960892, 5192.8... \n", - "25 [20.844071865081787, 2592.067393064499, 5163.1... \n", - "26 [11.317752122879028, 367.5072982311249, 724.64... \n", - "\n", - " global_step \\\n", - "0 [1, 7656, 15628, 23600, 31573, 39545, 47518, 5... \n", - "1 [1, 271, 374, 475, 574, 674, 775, 879, 1110, 2... \n", - "2 [1, 4672, 9784, 14897, 20011, 25125, 30238, 35... \n", - "3 [1, 2333, 4799, 7254, 9696, 12164, 14616, 1708... \n", - "4 [1, 832, 1644, 2367, 3001, 3798, 4485, 5066, 5... \n", - "5 [1, 421, 824, 1319, 1739, 2189, 2734, 3180, 37... \n", - "6 [1, 5695, 11540, 17384, 23255, 29130, 34987, 4... \n", - "7 [1, 5843, 11725, 17610, 23495, 29379, 35264, 4... \n", - "8 [1, 355, 718, 1087, 1452, 1838, 2231, 2620, 30... \n", - "9 [1, 7630, 15587, 23545, 31504, 39462, 47421, 5... \n", - "10 [1, 284, 389, 493, 599, 707, 818, 924, 1555, 2... \n", - "11 [1, 4758, 9913, 15066, 20222, 25376, 30531, 35... \n", - "12 [1, 2140, 4397, 6763, 9130, 11501, 13847, 1619... \n", - "13 [1, 487, 975, 1621, 2149, 2840, 3581, 4145, 48... \n", - "14 [1, 388, 783, 1234, 1679, 2065, 2663, 3064, 37... \n", - "15 [1, 5726, 11653, 17582, 23487, 29391, 35285, 4... \n", - "16 [1, 5844, 11728, 17613, 23499, 29383, 35269, 4... \n", - "17 [1, 366, 764, 1163, 1574, 1987, 2391, 2802, 32... \n", - "18 [1, 7420, 15390, 23361, 31333, 39305, 47278, 5... \n", - "19 [1, 284, 396, 497, 604, 708, 817, 922, 1563, 2... \n", - "20 [1, 4767, 9942, 15117, 20292, 25467, 30640, 35... \n", - "21 [1, 2182, 4461, 6805, 9136, 11492, 13882, 1625... \n", - "22 [1, 459, 931, 1573, 2061, 2795, 3504, 4101, 48... \n", - "23 [1, 391, 775, 1233, 1683, 2061, 2659, 3055, 37... \n", - "24 [1, 5559, 11304, 17051, 22802, 28550, 34288, 4... \n", - "25 [1, 5871, 11784, 17691, 23603, 29515, 35425, 4... \n", - "26 [1, 363, 752, 1135, 1514, 1903, 2304, 2707, 31... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [57.07999563217163, 2053.151053905487, 4049.10... \n", - "1 [181.3655138015747, 292.1376211643219, 402.424... \n", - "2 [60.29005146026611, 703.9345781803131, 1347.95... \n", - "3 [18.382744312286377, 470.431764125824, 922.454... \n", - "4 [182.0630955696106, 1936.099143743515, 3686.69... \n", - "5 [143.99548768997192, 1591.621477842331, 3040.8... \n", - "6 [52.34902095794678, 2623.535446166992, 5194.48... \n", - "7 [20.67739987373352, 2591.5677597522736, 5162.6... \n", - "8 [12.02135729789734, 368.27277421951294, 724.80... \n", - "9 [58.50454592704773, 2054.155114889145, 4050.07... \n", - "10 [178.14231944084167, 288.94940090179443, 399.6... \n", - "11 [60.05821514129639, 703.5853009223938, 1347.61... \n", - "12 [21.65388512611389, 473.26898407936096, 925.33... \n", - "13 [196.92340350151065, 1957.001183271408, 3712.4... \n", - "14 [144.58999013900757, 1595.8152797222135, 3051.... \n", - "15 [52.16976881027222, 2623.3687257766724, 5194.2... \n", - "16 [23.976256608963013, 2594.753819465637, 5166.0... \n", - "17 [8.3849778175354, 364.54811835289, 721.0765557... \n", - "18 [54.72272038459778, 2050.6129372119904, 4046.5... \n", - "19 [186.7236540317536, 297.0783066749573, 408.148... \n", - "20 [53.981388092041016, 697.932382106781, 1341.92... \n", - "21 [19.190465450286865, 471.20962142944336, 923.3... \n", - "22 [199.12085151672363, 1950.232220411301, 3710.3... \n", - "23 [157.0471408367157, 1616.143168449402, 3071.72... \n", - "24 [50.729454040527344, 2621.853657960892, 5192.8... \n", - "25 [20.844071865081787, 2592.067393064499, 5163.1... \n", - "26 [11.317752122879028, 367.5072982311249, 724.64... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0012, 0.38340002, 0.46040002, 0.47410002, 0... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5964441299438477, 0.642... ... \n", - "3 [0.5210707187652588, 0.984122395515442, 0.9849... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.19890001, 0.30890003, 0.36620003, 0.... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0014000001, 0.41640002, 0.476, 0.4778, 0.47... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5985823273658752, 0.643... ... \n", - "12 [0.469358742237091, 0.9838326573371888, 0.9848... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.2081, 0.312, 0.35990003, 0.39000002,... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0014000001, 0.4074, 0.44810003, 0.48060003,... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.5977340340614319, 0.643... ... \n", - "21 [0.5575313568115234, 0.983700394630432, 0.9848... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.1939, 0.30580002, 0.35880002, 0.3893... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0270683581755436, 0.138084589199829, 0.2014... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0238374525540801, 0.1235515116206334, 0.188... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0258794911954426, 0.1233214487062388, 0.184... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.7893734, 1.5569134, 0.7816637, 0.33895457, ... \n", - "5 [7.9498143, 1.8458463, 1.6090199, 1.0635448, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.420385, 1.5377542, 1.6539252, 0.83131987, 0... \n", - "14 [7.579191, 2.1455815, 1.5669287, 1.0533187, 0.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.5091677, 1.5375171, 1.5154927, 0.9313895, 0... \n", - "23 [7.557977, 2.6499298, 1.5801556, 1.1599587, 0.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1443950196006742, 0.899579550301627, 0.6092... \n", - "5 [4.3135701663518375, 0.8883472467653809, 0.875... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.486746694290415, 0.899579550301627, 0.89957... \n", - "14 [4.266386366867751, 0.898096804988524, 0.87224... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.2378079743261634, 0.899579550301627, 0.8442... \n", - "23 [3.96404850405216, 1.4803891698657403, 0.89214... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.067161, 1.5562251, 0.7666309, 0.31811875, 0... \n", - "5 [8.217965, 1.8823749, 1.6590989, 1.0879582, 0.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.592122, 1.5153767, 1.6286683, 0.8071933, 0.... \n", - "14 [7.781205, 2.185777, 1.6250331, 1.0760787, 0.7... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.4922957, 1.5135964, 1.5111984, 0.90626943, ... \n", - "23 [7.7852664, 2.7112598, 1.655505, 1.1919456, 0.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.5621941569664537, 0.944635537887994, 0.6359... \n", - "5 [4.457614059929617, 0.9309334514222158, 0.9120... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.5760573058742686, 0.944635537887994, 0.9427... \n", - "14 [4.3928117776898565, 0.9148421247760088, 0.905... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1579920038314977, 0.944635537887994, 0.8746... \n", - "23 [4.115569622889033, 1.475525735824185, 0.93507... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.7558722, 1.5612252, 0.8580343, 0.42480075, ... \n", - "5 [7.9095807, 1.7953491, 1.6158592, 1.1193374, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.3912134, 1.5439751, 1.6546396, 0.90609497, ... \n", - "14 [7.5240173, 2.063898, 1.574347, 1.1183578, 0.7... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.508502, 1.5437258, 1.5247517, 1.0140566, 0.... \n", - "23 [7.5553584, 2.5397453, 1.5961149, 1.2081991, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0818230097040509, 0.8967218654950997, 0.629... \n", - "5 [4.088417901800802, 0.8890841500506929, 0.8780... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.415140250084488, 0.8967218654950997, 0.8967... \n", - "14 [4.004180949162362, 0.887230241877082, 0.87083... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.2195046589098637, 0.8967218654950997, 0.847... \n", - "23 [3.802336696760489, 1.3315598899242025, 0.8789... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [61125.081892343725, 38.930879310723, 30.96462... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61886.55107597829, 34.8090996111288, 29.41887... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60572.81342579189, 35.33258924358858, 29.8471... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [61100.19566912408, 39.0625230274158, 30.98799... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61866.01565802664, 34.88622580915558, 29.4451... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60560.85689156154, 35.413644617271856, 29.875... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735True0.1236367854.4230027.854423e+030.90092710666
17criteo1tb_jaxtrial_1validation/loss0.123735True0.1236648206.1031328.206103e+030.90092710666
26criteo1tb_jaxtrial_1validation/loss0.123735True0.1236508568.0973708.568097e+030.90092710666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7238201615.2845151.615285e+030.39074518094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7247792271.6258932.271626e+030.39074518094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7241841620.5153811.620515e+030.39074518094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.79692220589.3217952.058932e+040.43690772000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.22825120593.0076692.059301e+040.43690772000
25finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.45712920589.9128572.058991e+040.43690772000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.74972059916.658867inf0.250789195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75032059922.172082inf0.250789195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.74910061908.166715inf0.250789195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.74782077159.161478inf0.465806167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.74800074587.848335inf0.465806167999
24imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.74992079731.531266inf0.465806167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14141864979.310149inf2.53706976000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14561964975.102952inf2.53706976000
22librispeech_conformer_jaxtrial_1validation/wer0.085884False0.14617961490.051088inf2.53706976000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15944653800.030124inf2.73722238400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16265155243.577100inf2.73722238400
23librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15405855276.914809inf2.73722238400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2813743634.6186243.634619e+030.19107752000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2853134089.7756274.089776e+030.19107752000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2887434991.9659164.991966e+030.19107752000
2wmt_jaxtrial_1validation/bleu30.849100False30.65888414227.413651inf0.125908120000
11wmt_jaxtrial_1validation/bleu30.849100True30.86329912939.1806241.293918e+040.125908120000
20wmt_jaxtrial_1validation/bleu30.849100True30.94761614865.7885991.486579e+040.125908120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "26 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "25 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "24 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "22 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "23 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 True 0.123636 \n", - "17 0.123735 True 0.123664 \n", - "26 0.123735 True 0.123650 \n", - "1 0.723653 True 0.723820 \n", - "10 0.723653 True 0.724779 \n", - "19 0.723653 True 0.724184 \n", - "7 22.299500 True 21.796922 \n", - "16 22.299500 True 21.228251 \n", - "25 22.299500 True 21.457129 \n", - "0 0.774310 False 0.749720 \n", - "9 0.774310 False 0.750320 \n", - "18 0.774310 False 0.749100 \n", - "6 0.773090 False 0.747820 \n", - "15 0.773090 False 0.748000 \n", - "24 0.773090 False 0.749920 \n", - "4 0.085884 False 0.141418 \n", - "13 0.085884 False 0.145619 \n", - "22 0.085884 False 0.146179 \n", - "5 0.119936 False 0.159446 \n", - "14 0.119936 False 0.162651 \n", - "23 0.119936 False 0.154058 \n", - "3 0.280980 True 0.281374 \n", - "12 0.280980 True 0.285313 \n", - "21 0.280980 True 0.288743 \n", - "2 30.849100 False 30.658884 \n", - "11 30.849100 True 30.863299 \n", - "20 30.849100 True 30.947616 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 7854.423002 7.854423e+03 0.900927 \n", - "17 8206.103132 8.206103e+03 0.900927 \n", - "26 8568.097370 8.568097e+03 0.900927 \n", - "1 1615.284515 1.615285e+03 0.390745 \n", - "10 2271.625893 2.271626e+03 0.390745 \n", - "19 1620.515381 1.620515e+03 0.390745 \n", - "7 20589.321795 2.058932e+04 0.436907 \n", - "16 20593.007669 2.059301e+04 0.436907 \n", - "25 20589.912857 2.058991e+04 0.436907 \n", - "0 59916.658867 inf 0.250789 \n", - "9 59922.172082 inf 0.250789 \n", - "18 61908.166715 inf 0.250789 \n", - "6 77159.161478 inf 0.465806 \n", - "15 74587.848335 inf 0.465806 \n", - "24 79731.531266 inf 0.465806 \n", - "4 64979.310149 inf 2.537069 \n", - "13 64975.102952 inf 2.537069 \n", - "22 61490.051088 inf 2.537069 \n", - "5 53800.030124 inf 2.737222 \n", - "14 55243.577100 inf 2.737222 \n", - "23 55276.914809 inf 2.737222 \n", - "3 3634.618624 3.634619e+03 0.191077 \n", - "12 4089.775627 4.089776e+03 0.191077 \n", - "21 4991.965916 4.991966e+03 0.191077 \n", - "2 14227.413651 inf 0.125908 \n", - "11 12939.180624 1.293918e+04 0.125908 \n", - "20 14865.788599 1.486579e+04 0.125908 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "26 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "24 167999 \n", - "4 76000 \n", - "13 76000 \n", - "22 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== NAdamW (ResNet) (nadamw_resnet) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload trial \\\n", - "0 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "1 fastmri_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "2 wmt_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "3 ogbg_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "4 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "5 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "6 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "7 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "8 criteo1tb_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "9 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "10 fastmri_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "11 wmt_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "12 ogbg_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "13 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "14 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "15 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "16 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "17 criteo1tb_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "18 imagenet_resnet_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "19 fastmri_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "20 wmt_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "21 ogbg_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "22 librispeech_conformer_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "23 librispeech_deepspeech_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "24 imagenet_vit_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "25 finewebedu_lm_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "26 criteo1tb_jax (trial_1, logs/self_tuning/nadamw_resnet) \n", - "\n", - " study accumulated_eval_time \\\n", - "0 study_2 [53.29654121398926, 115.63498711586, 139.29829... \n", - "1 study_2 [453.4438452720642, 457.160356760025, 460.6911... \n", - "2 study_2 [924.1258401870728, 1457.3507525920868, 2000.3... \n", - "3 study_2 [250.6691026687622, 366.0902395248413, 479.400... \n", - "4 study_2 [252.27302074432373, 336.8422429561615, 422.03... \n", - "5 study_2 [283.492680311203, 424.80824542045593, 525.113... \n", - "6 study_2 [150.5804958343506, 189.68872237205505, 223.59... \n", - "7 study_2 [331.625947713852, 661.9047589302063, 992.0981... \n", - "8 study_2 [1952.1147503852844, 3078.5715944767, 4169.168... \n", - "9 study_1 [78.33134531974792, 114.29001092910768, 163.43... \n", - "10 study_1 [85.53649091720581, 89.18137168884277, 92.8939... \n", - "11 study_1 [915.6409890651704, 1444.0456948280334, 1955.7... \n", - "12 study_1 [250.17895197868347, 364.3520033359528, 475.83... \n", - "13 study_1 [225.57179021835327, 309.71030354499817, 395.5... \n", - "14 study_1 [257.91099095344543, 383.0134937763214, 506.66... \n", - "15 study_1 [100.28288722038268, 143.33695363998413, 294.6... \n", - "16 study_1 [332.7293808460236, 663.5938847064972, 994.281... \n", - "17 study_1 [1826.845852851868, 2953.5929737091064, 4085.8... \n", - "18 study_0 [63.78324842453003, 87.2724232673645, 111.2803... \n", - "19 study_0 [879.2363409996033, 882.9452555179596, 886.479... \n", - "20 study_0 [921.9990084171296, 1482.3677189350128, 2025.1... \n", - "21 study_0 [243.044406414032, 353.09494495391846, 464.023... \n", - "22 study_0 [231.45204496383667, 315.4791302680969, 401.01... \n", - "23 study_0 [266.5336260795593, 366.03945994377136, 468.15... \n", - "24 study_0 [65.17453026771545, 90.2965326309204, 114.9187... \n", - "25 study_0 [331.38761615753174, 661.472690820694, 991.331... \n", - "26 study_0 [988.8383266925812, 1856.9860820770264, 2722.7... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3289008140563965, 0.389009952545166, 0... \n", - "1 [0.0, 0.0736641883850097, 0.1256110668182373, ... \n", - "2 [0.0, 0.4305415153503418, 0.4793281555175781, ... \n", - "3 [0.0, 0.2901830673217773, 0.3422510623931885, ... \n", - "4 [0.0, 0.0801565647125244, 0.143794298171997, 0... \n", - "5 [0.0, 0.1627664566040039, 0.2294199466705322, ... \n", - "6 [0.0, 0.3548729419708252, 0.4607384204864502, ... \n", - "7 [0.0, 0.3151876926422119, 0.3716461658477783, ... \n", - "8 [0.0, 0.062443733215332, 0.1093182563781738, 0... \n", - "9 [0.0, 0.3486645221710205, 0.4194879531860351, ... \n", - "10 [0.0, 0.0682744979858398, 0.1189737319946289, ... \n", - "11 [0.0, 0.0643017292022705, 0.1167762279510498, ... \n", - "12 [0.0, 0.2870972156524658, 0.3424808979034424, ... \n", - "13 [0.0, 0.137164831161499, 0.1980307102203369, 0... \n", - "14 [0.0, 0.0884673595428466, 0.1594488620758056, ... \n", - "15 [0.0, 0.3183367252349853, 1.2613790035247805, ... \n", - "16 [0.0, 0.3594353199005127, 0.4052844047546386, ... \n", - "17 [0.0, 0.0635986328125, 0.1126964092254638, 0.1... \n", - "18 [0.0, 0.062251329421997, 0.1078212261199951, 0... \n", - "19 [0.0, 0.4676225185394287, 0.5206451416015625, ... \n", - "20 [0.0, 0.0689847469329834, 0.120880126953125, 0... \n", - "21 [0.0, 0.6357436180114746, 0.6879937648773193, ... \n", - "22 [0.0, 0.0791037082672119, 0.13938570022583, 0.... \n", - "23 [0.0, 0.344494104385376, 0.4062361717224121, 0... \n", - "24 [0.0, 0.2889273166656494, 0.4219453334808349, ... \n", - "25 [0.0, 0.0625267028808593, 0.109027624130249, 0... \n", - "26 [0.0, 0.4707968235015869, 0.5205724239349365, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [57.370943546295166, 2052.9768857955933, 4048.... \n", - "1 [159.05283117294312, 269.370676279068, 379.638... \n", - "2 [60.93853545188904, 704.4676430225372, 1348.46... \n", - "3 [21.488929271698, 473.3029658794403, 925.32346... \n", - "4 [184.19038033485413, 1931.8993709087367, 3683.... \n", - "5 [147.42911887168884, 1603.638286113739, 3058.8... \n", - "6 [60.48145341873169, 2631.391207695008, 5202.38... \n", - "7 [23.766636848449707, 2594.640924453736, 5165.8... \n", - "8 [9.134706497192385, 366.75317430496216, 723.89... \n", - "9 [64.76098799705505, 2060.5522677898407, 4056.5... \n", - "10 [45.82640838623047, 155.79204893112183, 265.83... \n", - "11 [55.83711576461792, 699.7939651012421, 1343.73... \n", - "12 [20.25373125076294, 472.061416387558, 924.0924... \n", - "13 [185.1137638092041, 1933.8555619716644, 3685.3... \n", - "14 [141.80748629570007, 1598.4305255413055, 3053.... \n", - "15 [64.88337397575378, 2635.93419456482, 5206.104... \n", - "16 [23.105996131896973, 2593.917392253876, 5165.2... \n", - "17 [9.00504755973816, 365.6705503463745, 723.2133... \n", - "18 [56.7663676738739, 2052.791997671128, 4048.826... \n", - "19 [256.4748523235321, 366.6771492958069, 478.321... \n", - "20 [56.687952518463135, 700.6354627609253, 1344.5... \n", - "21 [18.997504949569706, 470.4265224933624, 922.47... \n", - "22 [186.2298052310944, 1941.9859285354607, 3690.9... \n", - "23 [150.63363099098206, 1602.490621328354, 3049.7... \n", - "24 [55.54096364974976, 2626.3958835601807, 5197.2... \n", - "25 [21.72627210617065, 2592.6500630378723, 5163.8... \n", - "26 [10.201725006103516, 366.3240540027618, 722.28... \n", - "\n", - " global_step \\\n", - "0 [1, 7744, 15718, 23693, 31668, 39645, 47622, 5... \n", - "1 [1, 283, 396, 505, 621, 734, 852, 1026, 2043, ... \n", - "2 [1, 4699, 9848, 14998, 20148, 25296, 30444, 35... \n", - "3 [1, 2158, 4415, 6743, 9076, 11421, 13800, 1616... \n", - "4 [1, 467, 919, 1635, 2270, 2939, 3707, 4465, 50... \n", - "5 [1, 379, 751, 1163, 1619, 1996, 2611, 3018, 36... \n", - "6 [1, 4340, 9701, 15127, 18956, 22894, 26746, 30... \n", - "7 [1, 5858, 11757, 17658, 23553, 29447, 35341, 4... \n", - "8 [1, 212, 425, 644, 874, 1102, 1347, 1600, 1848... \n", - "9 [1, 7190, 15166, 23141, 31110, 39088, 47061, 5... \n", - "10 [1, 741, 1742, 2759, 3776, 4793, 5810, 6827, 7... \n", - "11 [1, 4693, 9818, 14945, 20073, 25204, 30335, 35... \n", - "12 [1, 2151, 4417, 6761, 9102, 11465, 13835, 1618... \n", - "13 [1, 451, 921, 1657, 2175, 2881, 3619, 4201, 49... \n", - "14 [1, 444, 892, 1499, 1939, 2599, 3074, 3795, 44... \n", - "15 [1, 4600, 9148, 13399, 17713, 21974, 26357, 30... \n", - "16 [1, 5837, 11716, 17597, 23478, 29358, 35237, 4... \n", - "17 [1, 221, 437, 647, 887, 1105, 1325, 1568, 1794... \n", - "18 [1, 6705, 14656, 22620, 30586, 38553, 46518, 5... \n", - "19 [1, 260, 318, 379, 437, 495, 556, 621, 679, 73... \n", - "20 [1, 4733, 9900, 15068, 20235, 25403, 30570, 35... \n", - "21 [1, 2228, 4538, 6831, 9118, 11459, 13847, 1624... \n", - "22 [1, 463, 907, 1626, 2237, 2906, 3648, 4367, 50... \n", - "23 [1, 431, 874, 1519, 1983, 2674, 3216, 3867, 45... \n", - "24 [1, 5301, 10777, 16223, 21667, 27100, 32524, 3... \n", - "25 [1, 5860, 11760, 17654, 23554, 29452, 35346, 4... \n", - "26 [1, 374, 753, 1131, 1509, 1919, 2333, 2727, 31... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [57.370943546295166, 2052.9768857955933, 4048.... \n", - "1 [159.05283117294312, 269.370676279068, 379.638... \n", - "2 [60.93853545188904, 704.4676430225372, 1348.46... \n", - "3 [21.488929271698, 473.3029658794403, 925.32346... \n", - "4 [184.19038033485413, 1931.8993709087367, 3683.... \n", - "5 [147.42911887168884, 1603.638286113739, 3058.8... \n", - "6 [60.48145341873169, 2631.391207695008, 5202.38... \n", - "7 [23.766636848449707, 2594.640924453736, 5165.8... \n", - "8 [9.134706497192385, 366.75317430496216, 723.89... \n", - "9 [64.76098799705505, 2060.5522677898407, 4056.5... \n", - "10 [45.82640838623047, 155.79204893112183, 265.83... \n", - "11 [55.83711576461792, 699.7939651012421, 1343.73... \n", - "12 [20.25373125076294, 472.061416387558, 924.0924... \n", - "13 [185.1137638092041, 1933.8555619716644, 3685.3... \n", - "14 [141.80748629570007, 1598.4305255413055, 3053.... \n", - "15 [64.88337397575378, 2635.93419456482, 5206.104... \n", - "16 [23.105996131896973, 2593.917392253876, 5165.2... \n", - "17 [9.00504755973816, 365.6705503463745, 723.2133... \n", - "18 [56.7663676738739, 2052.791997671128, 4048.826... \n", - "19 [256.4748523235321, 366.6771492958069, 478.321... \n", - "20 [56.687952518463135, 700.6354627609253, 1344.5... \n", - "21 [18.997504949569706, 470.4265224933624, 922.47... \n", - "22 [186.2298052310944, 1941.9859285354607, 3690.9... \n", - "23 [150.63363099098206, 1602.490621328354, 3049.7... \n", - "24 [55.54096364974976, 2626.3958835601807, 5197.2... \n", - "25 [21.72627210617065, 2592.6500630378723, 5163.8... \n", - "26 [10.201725006103516, 366.3240540027618, 722.28... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0012, 0.4, 0.46160004, 0.48510003, 0.502100... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5476381778717041, 0.626... ... \n", - "3 [0.4759940803050995, 0.9831857681274414, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.1342, 0.24990001, 0.3097, 0.33580002... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.00070000003, 0.39560002, 0.46590003, 0.4882... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5409098863601685, 0.626... ... \n", - "12 [0.4528129994869232, 0.9833908677101136, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.14760001, 0.246, 0.2924, 0.319, 0.32... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0013000001, 0.3858, 0.46620002, 0.48350003,... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.5407007336616516, 0.624... ... \n", - "21 [0.4898046851158142, 0.9832206964492798, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.17330001, 0.26650003, 0.3156, 0.3334... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0265867163025131, 0.0487554422640663, 0.135... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.029255348783255, 0.0567272848068406, 0.1371... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0262365252534235, 0.0566516016028957, 0.134... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.620827, 1.5609409, 1.5602993, 1.9300616, 1.... \n", - "5 [7.592613, 1.9210409, 1.5443093, 1.362662, 1.7... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6855764, 1.5365065, 1.5469178, 1.4893932, 2... \n", - "14 [7.828205, 1.6817404, 1.5051454, 1.4777752, 2.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.184543, 1.5620902, 1.5563731, 1.5345361, 2.... \n", - "23 [7.8586326, 1.5260952, 1.458561, 1.4167997, 2.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0619706294558529, 0.899579550301627, 0.8995... \n", - "5 [2.367375540795808, 0.899579550301627, 0.89957... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0810228911502449, 0.899579550301627, 0.8995... \n", - "14 [3.586090630268316, 0.899579550301627, 0.89957... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.3455609042715253, 0.899579550301627, 0.8995... \n", - "23 [4.143338817459834, 0.899579550301627, 0.89957... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.788194, 1.5281633, 1.5253595, 1.9511633, 1.... \n", - "5 [7.8061852, 1.896192, 1.5516807, 1.3766756, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.8771033, 1.516304, 1.5184199, 1.4971937, 2.... \n", - "14 [8.068174, 1.6876341, 1.5170608, 1.5028363, 2.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.4495716, 1.5278099, 1.5240636, 1.5471938, 2... \n", - "23 [8.079127, 1.5362146, 1.4699464, 1.43682, 3.02... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1250390437915163, 0.944635537887994, 0.9427... \n", - "5 [2.431131957603648, 0.944635537887994, 0.94272... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.4230733190346292, 0.944635537887994, 0.9427... \n", - "14 [3.738364950128064, 0.944635537887994, 0.94272... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.509438185869271, 0.944635537887994, 0.94272... \n", - "23 [4.309429856527081, 0.944635537887994, 0.94272... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.6224656, 1.5672481, 1.5671345, 1.9169345, 1... \n", - "5 [7.58517, 1.9028931, 1.5559242, 1.3816026, 1.8... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.649563, 1.541554, 1.5533521, 1.490264, 2.70... \n", - "14 [7.7952633, 1.6940677, 1.5166017, 1.478127, 2.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.1497803, 1.5678438, 1.5627043, 1.5334496, 2... \n", - "23 [7.836566, 1.5370063, 1.4677546, 1.4443249, 2.... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.050509341959156, 0.8967218654950997, 0.8967... \n", - "5 [2.54484623183508, 0.8967218654950997, 0.89672... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0258388451697005, 0.8967218654950997, 0.896... \n", - "14 [3.466702071163038, 0.8967218654950997, 0.8967... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.3082412011780042, 0.8967218654950997, 0.896... \n", - "23 [3.921450296914981, 0.8967218654950997, 0.8967... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62611.45224591156, 39.057084479004665, 31.934... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61513.55432331878, 39.17379737821917, 32.1160... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61367.42042051339, 39.40923829116489, 32.2515... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62589.78092824439, 39.183511934110605, 31.994... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [61473.08954956363, 39.30504426005093, 32.1724... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [61423.45396440031, 39.52823807872984, 32.3004... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735False0.12426912867.509279inf1.55064510666
17criteo1tb_jaxtrial_1validation/loss0.123735False0.12409412860.401985inf1.55064510666
26criteo1tb_jaxtrial_1validation/loss0.123735False0.1239539635.864085inf1.55064510666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7239261920.5453081.920545e+030.10993018094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7236961035.7431061.035743e+030.10993018094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7242662579.9773912.579977e+030.10993018094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True20.93162523164.0360282.316404e+040.43626272000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.17004623163.0219882.316302e+040.43626272000
25finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.15132423162.0704002.316207e+040.43626272000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75212065897.275532inf0.347209195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.73622073915.948544inf0.347209195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75280071884.304451inf0.347209195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.74580095155.824862inf0.535577167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.56424095249.697347inf0.535577167999
24imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.74872084874.526325inf0.535577167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.42213164933.151106inf2.25968176000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.46163364948.665875inf2.25968176000
22librispeech_conformer_jaxtrial_1validation/wer0.085884False0.46799664947.582179inf2.25968176000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15688755250.443595inf2.30110438400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.17074355216.434224inf2.30110438400
23librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15961055259.417441inf2.30110438400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2846646349.5062166.349506e+030.19209152000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2875486800.4838046.800484e+030.19209152000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2823425894.7300715.894730e+030.19209152000
2wmt_jaxtrial_1validation/bleu30.849100False30.75154515515.510916inf0.125118120000
11wmt_jaxtrial_1validation/bleu30.849100False30.45621314867.072550inf0.125118120000
20wmt_jaxtrial_1validation/bleu30.849100False30.62805514868.256608inf0.125118120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "26 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "25 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "24 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "22 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "23 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 False 0.124269 \n", - "17 0.123735 False 0.124094 \n", - "26 0.123735 False 0.123953 \n", - "1 0.723653 True 0.723926 \n", - "10 0.723653 True 0.723696 \n", - "19 0.723653 True 0.724266 \n", - "7 22.299500 True 20.931625 \n", - "16 22.299500 True 21.170046 \n", - "25 22.299500 True 21.151324 \n", - "0 0.774310 False 0.752120 \n", - "9 0.774310 False 0.736220 \n", - "18 0.774310 False 0.752800 \n", - "6 0.773090 False 0.745800 \n", - "15 0.773090 False 0.564240 \n", - "24 0.773090 False 0.748720 \n", - "4 0.085884 False 0.422131 \n", - "13 0.085884 False 0.461633 \n", - "22 0.085884 False 0.467996 \n", - "5 0.119936 False 0.156887 \n", - "14 0.119936 False 0.170743 \n", - "23 0.119936 False 0.159610 \n", - "3 0.280980 True 0.284664 \n", - "12 0.280980 True 0.287548 \n", - "21 0.280980 True 0.282342 \n", - "2 30.849100 False 30.751545 \n", - "11 30.849100 False 30.456213 \n", - "20 30.849100 False 30.628055 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 12867.509279 inf 1.550645 \n", - "17 12860.401985 inf 1.550645 \n", - "26 9635.864085 inf 1.550645 \n", - "1 1920.545308 1.920545e+03 0.109930 \n", - "10 1035.743106 1.035743e+03 0.109930 \n", - "19 2579.977391 2.579977e+03 0.109930 \n", - "7 23164.036028 2.316404e+04 0.436262 \n", - "16 23163.021988 2.316302e+04 0.436262 \n", - "25 23162.070400 2.316207e+04 0.436262 \n", - "0 65897.275532 inf 0.347209 \n", - "9 73915.948544 inf 0.347209 \n", - "18 71884.304451 inf 0.347209 \n", - "6 95155.824862 inf 0.535577 \n", - "15 95249.697347 inf 0.535577 \n", - "24 84874.526325 inf 0.535577 \n", - "4 64933.151106 inf 2.259681 \n", - "13 64948.665875 inf 2.259681 \n", - "22 64947.582179 inf 2.259681 \n", - "5 55250.443595 inf 2.301104 \n", - "14 55216.434224 inf 2.301104 \n", - "23 55259.417441 inf 2.301104 \n", - "3 6349.506216 6.349506e+03 0.192091 \n", - "12 6800.483804 6.800484e+03 0.192091 \n", - "21 5894.730071 5.894730e+03 0.192091 \n", - "2 15515.510916 inf 0.125118 \n", - "11 14867.072550 inf 0.125118 \n", - "20 14868.256608 inf 0.125118 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "26 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "24 167999 \n", - "4 76000 \n", - "13 76000 \n", - "22 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Schedule-Free AdamW (schedule_free_adamw) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload \\\n", - "0 imagenet_resnet_pytorch \n", - "1 fastmri_pytorch \n", - "2 imagenet_vit_pytorch \n", - "3 librispeech_conformer_pytorch \n", - "4 ogbg_pytorch \n", - "5 librispeech_deepspeech_pytorch \n", - "6 wmt_pytorch \n", - "7 criteo1tb_pytorch \n", - "8 finewebedu_lm_pytorch \n", - "9 imagenet_resnet_pytorch \n", - "10 fastmri_pytorch \n", - "11 imagenet_vit_pytorch \n", - "12 librispeech_conformer_pytorch \n", - "13 ogbg_pytorch \n", - "14 librispeech_deepspeech_pytorch \n", - "15 wmt_pytorch \n", - "16 criteo1tb_pytorch \n", - "17 finewebedu_lm_pytorch \n", - "18 imagenet_resnet_pytorch \n", - "19 fastmri_pytorch \n", - "20 imagenet_vit_pytorch \n", - "21 librispeech_conformer_pytorch \n", - "22 ogbg_pytorch \n", - "23 librispeech_deepspeech_pytorch \n", - "24 wmt_pytorch \n", - "25 criteo1tb_pytorch \n", - "26 finewebedu_lm_pytorch \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw) study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw) study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "26 (trial_1, logs/self_tuning/schedule_free_adamw) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [188.40417313575745, 304.5577299594879, 433.33... \n", - "1 [385.8169026374817, 391.8268404006958, 397.841... \n", - "2 [210.3460204601288, 357.32116079330444, 495.26... \n", - "3 [65.41454076766968, 109.48870968818665, 154.85... \n", - "4 [82.16063690185547, 113.87860584259032, 144.65... \n", - "5 [72.17463803291321, 118.88966178894044, 164.70... \n", - "6 [436.5034852027893, 635.3879280090332, 817.769... \n", - "7 [900.722579240799, 1692.1641857624054, 2480.99... \n", - "8 [219.5692663192749, 400.5903584957123, 581.498... \n", - "9 [189.40433645248413, 314.1819438934326, 453.77... \n", - "10 [385.3162007331848, 391.297327041626, 397.2388... \n", - "11 [216.1942207813263, 359.7478902339936, 499.582... \n", - "12 [69.58658456802368, 116.71394205093384, 162.13... \n", - "13 [74.18388938903809, 104.65180921554564, 135.36... \n", - "14 [64.17442655563354, 113.19223427772522, 160.88... \n", - "15 [437.2961142063141, 637.4638092517853, 819.420... \n", - "16 [935.4482862949372, 1724.7284927368164, 2505.6... \n", - "17 [221.9116239547729, 403.2949366569519, 584.469... \n", - "18 [188.15465569496155, 313.9955747127533, 451.09... \n", - "19 [597.1743896007538, 604.236298084259, 611.2129... \n", - "20 [213.28488421440125, 359.41196727752686, 506.7... \n", - "21 [64.73557591438293, 115.330060005188, 163.9394... \n", - "22 [76.52495288848877, 107.02263736724854, 137.39... \n", - "23 [71.40001225471497, 117.40976858139038, 164.10... \n", - "24 [440.55203223228455, 638.3998064994812, 821.37... \n", - "25 [2427.6146557331085, 3654.2787730693817, 4854.... \n", - "26 [221.59697914123527, 402.8922758102417, 584.03... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.4307634830474853, 2.630591869354248, 6... \n", - "1 [0.0, 0.488943338394165, 0.5394423007965088, 0... \n", - "2 [0.0, 0.0724058151245117, 0.5697054862976074, ... \n", - "3 [0.0, 0.0774331092834472, 0.1349451541900634, ... \n", - "4 [0.0, 0.3755390644073486, 0.427170991897583, 0... \n", - "5 [0.0, 0.0958874225616455, 0.1644661426544189, ... \n", - "6 [0.0, 0.0725338459014892, 0.1285097599029541, ... \n", - "7 [0.0, 0.5293781757354736, 0.6177034378051758, ... \n", - "8 [0.0, 0.0743107795715332, 0.1386497020721435, ... \n", - "9 [0.0, 0.531510591506958, 2.59226131439209, 5.8... \n", - "10 [0.0, 0.3206825256347656, 0.3711030483245849, ... \n", - "11 [0.0, 0.0708386898040771, 0.6410713195800781, ... \n", - "12 [0.0, 0.1155736446380615, 0.1971933841705322, ... \n", - "13 [0.0, 0.0812935829162597, 0.1400051116943359, ... \n", - "14 [0.0, 0.5405266284942627, 1.4859302043914795, ... \n", - "15 [0.0, 0.070636510848999, 0.1236491203308105, 0... \n", - "16 [0.0, 0.4588284492492676, 0.5904839038848877, ... \n", - "17 [0.0, 0.2821135520935058, 0.333235502243042, 0... \n", - "18 [0.0, 0.3999185562133789, 2.641523838043213, 6... \n", - "19 [0.0, 0.0782670974731445, 0.133885383605957, 0... \n", - "20 [0.0, 0.0722122192382812, 0.619274377822876, 1... \n", - "21 [0.0, 0.1090619564056396, 0.1784663200378418, ... \n", - "22 [0.0, 0.3187165260314941, 0.3755946159362793, ... \n", - "23 [0.0, 0.0917487144470214, 0.1559562683105468, ... \n", - "24 [0.0, 0.0733084678649902, 0.126462697982788, 0... \n", - "25 [0.0, 0.0797321796417236, 0.1310348510742187, ... \n", - "26 [0.0, 0.2729113101959228, 0.325847864151001, 0... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [122.52722930908205, 2114.7013082504272, 4108.... \n", - "1 [206.929099559784, 315.5003550052643, 425.3296... \n", - "2 [100.2393765449524, 2671.8500096797943, 5240.1... \n", - "3 [10.09779143333435, 1755.7859191894531, 3501.9... \n", - "4 [31.78741478919983, 482.60107922554016, 933.68... \n", - "5 [31.14275050163269, 1476.5096814632416, 2921.3... \n", - "6 [51.72783255577088, 693.4519994258881, 1335.38... \n", - "7 [9.57097339630127, 365.60620188713074, 721.591... \n", - "8 [43.15337920188904, 2611.250637292862, 5179.66... \n", - "9 [120.12487483024596, 2113.546407222748, 4114.0... \n", - "10 [209.6208968162537, 319.09749150276184, 429.24... \n", - "11 [100.73967742919922, 2672.270813703537, 5240.4... \n", - "12 [15.163714408874512, 1760.9359152317047, 3506.... \n", - "13 [6.500248670578003, 457.5994780063629, 908.800... \n", - "14 [50.04203796386719, 1493.9251699447632, 2937.5... \n", - "15 [53.44974541664124, 695.3744008541107, 1337.41... \n", - "16 [8.970545768737793, 364.76555728912354, 720.94... \n", - "17 [54.66056180000305, 2622.199852705002, 5190.02... \n", - "18 [124.35874366760254, 2119.432560920716, 4114.3... \n", - "19 [210.71099472045896, 320.18286204338074, 429.6... \n", - "20 [102.12174987792967, 2672.4705748558044, 5243.... \n", - "21 [20.10005784034729, 1767.299765110016, 3513.43... \n", - "22 [15.827686548233032, 466.7542796134949, 917.87... \n", - "23 [29.82626271247864, 1475.2559759616852, 2919.9... \n", - "24 [53.99105525016785, 695.8093495368958, 1337.89... \n", - "25 [7.88826584815979, 364.17549657821655, 721.565... \n", - "26 [49.91865062713623, 2617.6593272686005, 5185.5... \n", - "\n", - " global_step \\\n", - "0 [1, 3385, 6106, 8777, 11399, 14021, 16668, 193... \n", - "1 [1, 644, 944, 1238, 1522, 1810, 3639, 6890, 10... \n", - "2 [1, 2431, 5837, 9271, 12419, 15769, 19106, 222... \n", - "3 [1, 1879, 4454, 7103, 10051, 12751, 15502, 183... \n", - "4 [1, 1956, 3900, 5846, 7836, 9836, 11839, 13847... \n", - "5 [1, 2138, 4879, 7895, 11207, 14420, 17917, 211... \n", - "6 [1, 4331, 8663, 12995, 17330, 21663, 25999, 30... \n", - "7 [1, 362, 718, 1075, 1437, 1787, 2134, 2494, 28... \n", - "8 [1, 6575, 13158, 19738, 26313, 32897, 39482, 4... \n", - "9 [1, 3404, 6145, 8837, 11510, 14167, 16838, 195... \n", - "10 [1, 643, 952, 1241, 1526, 1810, 3667, 6940, 10... \n", - "11 [1, 2429, 5816, 9226, 12382, 15719, 18970, 221... \n", - "12 [1, 1643, 3556, 6384, 9129, 11754, 14691, 1740... \n", - "13 [1, 1964, 3922, 5868, 7816, 9751, 11702, 13656... \n", - "14 [1, 3489, 6640, 9969, 13287, 16486, 19886, 230... \n", - "15 [1, 4341, 8685, 13032, 17376, 21715, 26058, 30... \n", - "16 [1, 353, 709, 1066, 1429, 1784, 2140, 2510, 28... \n", - "17 [1, 6559, 13122, 19692, 26254, 32817, 39381, 4... \n", - "18 [1, 3363, 6105, 8758, 11418, 14101, 16766, 194... \n", - "19 [1, 565, 748, 931, 1115, 1309, 1496, 1692, 188... \n", - "20 [1, 2432, 5856, 9297, 12450, 15725, 18989, 221... \n", - "21 [1, 1617, 3501, 6240, 9024, 11656, 14488, 1727... \n", - "22 [1, 1958, 3910, 5873, 7832, 9796, 11755, 13718... \n", - "23 [1, 2151, 4908, 7834, 11077, 14308, 17731, 209... \n", - "24 [1, 4305, 8612, 12917, 17221, 21528, 25834, 30... \n", - "25 [1, 163, 332, 497, 660, 857, 1027, 1232, 1424,... \n", - "26 [1, 6565, 13133, 19701, 26264, 32828, 39395, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [122.52722930908205, 2114.7013082504272, 4108.... \n", - "1 [206.929099559784, 315.5003550052643, 425.3296... \n", - "2 [100.2393765449524, 2671.8500096797943, 5240.1... \n", - "3 [10.09779143333435, 1755.7859191894531, 3501.9... \n", - "4 [31.78741478919983, 482.60107922554016, 933.68... \n", - "5 [31.14275050163269, 1476.5096814632416, 2921.3... \n", - "6 [51.72783255577088, 693.4519994258881, 1335.38... \n", - "7 [9.57097339630127, 365.60620188713074, 721.591... \n", - "8 [43.15337920188904, 2611.250637292862, 5179.66... \n", - "9 [120.12487483024596, 2113.546407222748, 4114.0... \n", - "10 [209.6208968162537, 319.09749150276184, 429.24... \n", - "11 [100.73967742919922, 2672.270813703537, 5240.4... \n", - "12 [15.163714408874512, 1760.9359152317047, 3506.... \n", - "13 [6.500248670578003, 457.5994780063629, 908.800... \n", - "14 [50.04203796386719, 1493.9251699447632, 2937.5... \n", - "15 [53.44974541664124, 695.3744008541107, 1337.41... \n", - "16 [8.970545768737793, 364.76555728912354, 720.94... \n", - "17 [54.66056180000305, 2622.199852705002, 5190.02... \n", - "18 [124.35874366760254, 2119.432560920716, 4114.3... \n", - "19 [210.71099472045896, 320.18286204338074, 429.6... \n", - "20 [102.12174987792967, 2672.4705748558044, 5243.... \n", - "21 [20.10005784034729, 1767.299765110016, 3513.43... \n", - "22 [15.827686548233032, 466.7542796134949, 917.87... \n", - "23 [29.82626271247864, 1475.2559759616852, 2919.9... \n", - "24 [53.99105525016785, 695.8093495368958, 1337.89... \n", - "25 [7.88826584815979, 364.17549657821655, 721.565... \n", - "26 [49.91865062713623, 2617.6593272686005, 5185.5... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.001, 0.3376, 0.4038, 0.3322, 0.0525, 0.0035... ... \n", - "1 NaN ... \n", - "2 [0.0025, 0.1238, 0.2825, 0.366, 0.4191, 0.4567... ... \n", - "3 NaN ... \n", - "4 [0.5020598211480587, 0.9838099152740096, 0.984... ... \n", - "5 NaN ... \n", - "6 [0.0007088489919237, 0.6038696182673872, 0.648... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0011, 0.334, 0.3954, 0.2438, 0.0287, 0.0041... ... \n", - "10 NaN ... \n", - "11 [0.0025, 0.1243, 0.2806, 0.3687, 0.4217, 0.459... ... \n", - "12 NaN ... \n", - "13 [0.5475603480006974, 0.9837947540469948, 0.984... ... \n", - "14 NaN ... \n", - "15 [0.0007088489919237, 0.604369298704317, 0.6513... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0014, 0.3354, 0.3854, 0.312, 0.0402, 0.0049... ... \n", - "19 NaN ... \n", - "20 [0.0018, 0.1209, 0.2785, 0.3595, 0.4122, 0.452... ... \n", - "21 NaN ... \n", - "22 [0.4630994685989931, 0.9838153901615428, 0.984... ... \n", - "23 NaN ... \n", - "24 [0.0007088489919237, 0.6026610888385335, 0.649... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.8979964273644571, 0.5033167575918506, 0.264... \n", - "4 NaN \n", - "5 [3.563868102158065, 0.3702602230483271, 0.2321... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [1.668478733162748, 0.8967218654950997, 0.8967... \n", - "13 NaN \n", - "14 [3.009945444889683, 0.2753343310964128, 0.2136... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.93370347124994, 0.5525322261381741, 0.26492... \n", - "22 NaN \n", - "23 [2.888929657702892, 0.3416212040747357, 0.2327... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0286454494728756, 0.1252931290455174, 0.183... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0276119301900269, 0.1181063828931509, 0.172... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0275782540726277, 0.1232724964532807, 0.181... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0224851376974589, 0.1278227398880211, 0.213... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0209393234166708, 0.1254156439907528, 0.198... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0217786536529118, 0.1306459357750615, 0.210... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0269816932386676, 0.1237312812521327, 0.178... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0255686252060375, 0.12088667309898, 0.17106... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.0259055133411359, 0.1241643103561598, 0.175... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 22.86065128907516, 26.08106501120403, 27... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 23.06412255430461, 26.3366748722229, 27.... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0003661181415447, 22.91479166122137, 26.088... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 27.66182240239, 30.857110669212165, 31.6... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 27.858731377195745, 30.763583581435693, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0001128467829092, 28.279439253689297, 30.36... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 24.30197015696545, 27.19784961556557, 28... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 24.17111238909736, 27.279842062455515, 2... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [0.0003788727564227, 23.901786163755663, 26.97... \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [51012.97839501722, 35.23560628922688, 30.1449... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [52591.32159809857, 40.83976108228861, 33.0165... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [52557.94902797553, 37.493859383696126, 31.326... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [50984.556038845, 35.05851025704972, 29.887070... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [52603.11095883379, 40.658782679203, 32.758094... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 [52526.30881435957, 37.29713317785342, 31.0583... \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
7criteo1tb_pytorchtrial_1validation/loss0.123735True0.12369610693.9900201.033767e+041.01761510666
16criteo1tb_pytorchtrial_1validation/loss0.123735True0.1237327484.8130447.484813e+031.01761510666
25criteo1tb_pytorchtrial_1validation/loss0.123735False0.12382813201.571622inf1.01761510666
1fastmri_pytorchtrial_1validation/ssim0.723653True0.7243011188.9131381.188913e+030.37200418094
10fastmri_pytorchtrial_1validation/ssim0.723653True0.7241641084.0098061.084010e+030.37200418094
19fastmri_pytorchtrial_1validation/ssim0.723653True0.7237031414.2303751.414230e+030.37200418094
8finewebedu_lm_pytorchtrial_1validation/ppl22.299500False26.85374518022.233602inf0.39088672000
17finewebedu_lm_pytorchtrial_1validation/ppl22.299500False27.82547838578.815465inf0.39088672000
26finewebedu_lm_pytorchtrial_1validation/ppl22.299500False26.96230728299.942930inf0.39088672000
0imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.47426020031.869838inf0.758086195999
9imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.4676004114.095728inf0.758086195999
18imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.45520020045.605985inf0.758086195999
2imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.66804084876.442858inf0.798625167999
11imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.66444087409.160116inf0.798625167999
20imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.65970089980.170517inf0.798625167999
3librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.08773264552.024778inf0.63607576000
12librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.12680964541.008598inf0.63607576000
21librispeech_conformer_pytorchtrial_1validation/wer0.085884True0.08479755843.2570825.584326e+040.63607576000
5librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11984736135.4518903.613545e+040.43699938400
14librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11978040477.7521724.047775e+040.43699938400
23librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11901740463.3881494.046339e+040.43699938400
4ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2853533640.1485423.640149e+030.23042952000
13ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2836664969.3228034.969323e+030.23042952000
22ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2823013624.5537713.624554e+030.23042952000
6wmt_pytorchtrial_1validation/bleu30.849100True30.88398721238.6230062.123862e+040.148019120000
15wmt_pytorchtrial_1validation/bleu30.849100True30.91468116745.4517961.546168e+040.148019120000
24wmt_pytorchtrial_1validation/bleu30.849100True30.95448919957.7178761.995772e+040.148019120000
\n", - "
" - ], - "text/plain": [ - " workload trial \\\n", - "7 criteo1tb_pytorch trial_1 \n", - "16 criteo1tb_pytorch trial_1 \n", - "25 criteo1tb_pytorch trial_1 \n", - "1 fastmri_pytorch trial_1 \n", - "10 fastmri_pytorch trial_1 \n", - "19 fastmri_pytorch trial_1 \n", - "8 finewebedu_lm_pytorch trial_1 \n", - "17 finewebedu_lm_pytorch trial_1 \n", - "26 finewebedu_lm_pytorch trial_1 \n", - "0 imagenet_resnet_pytorch trial_1 \n", - "9 imagenet_resnet_pytorch trial_1 \n", - "18 imagenet_resnet_pytorch trial_1 \n", - "2 imagenet_vit_pytorch trial_1 \n", - "11 imagenet_vit_pytorch trial_1 \n", - "20 imagenet_vit_pytorch trial_1 \n", - "3 librispeech_conformer_pytorch trial_1 \n", - "12 librispeech_conformer_pytorch trial_1 \n", - "21 librispeech_conformer_pytorch trial_1 \n", - "5 librispeech_deepspeech_pytorch trial_1 \n", - "14 librispeech_deepspeech_pytorch trial_1 \n", - "23 librispeech_deepspeech_pytorch trial_1 \n", - "4 ogbg_pytorch trial_1 \n", - "13 ogbg_pytorch trial_1 \n", - "22 ogbg_pytorch trial_1 \n", - "6 wmt_pytorch trial_1 \n", - "15 wmt_pytorch trial_1 \n", - "24 wmt_pytorch trial_1 \n", - "\n", - " val target metric name val target metric value \\\n", - "7 validation/loss 0.123735 \n", - "16 validation/loss 0.123735 \n", - "25 validation/loss 0.123735 \n", - "1 validation/ssim 0.723653 \n", - "10 validation/ssim 0.723653 \n", - "19 validation/ssim 0.723653 \n", - "8 validation/ppl 22.299500 \n", - "17 validation/ppl 22.299500 \n", - "26 validation/ppl 22.299500 \n", - "0 validation/accuracy 0.774310 \n", - "9 validation/accuracy 0.774310 \n", - "18 validation/accuracy 0.774310 \n", - "2 validation/accuracy 0.773090 \n", - "11 validation/accuracy 0.773090 \n", - "20 validation/accuracy 0.773090 \n", - "3 validation/wer 0.085884 \n", - "12 validation/wer 0.085884 \n", - "21 validation/wer 0.085884 \n", - "5 validation/wer 0.119936 \n", - "14 validation/wer 0.119936 \n", - "23 validation/wer 0.119936 \n", - "4 validation/mean_average_precision 0.280980 \n", - "13 validation/mean_average_precision 0.280980 \n", - "22 validation/mean_average_precision 0.280980 \n", - "6 validation/bleu 30.849100 \n", - "15 validation/bleu 30.849100 \n", - "24 validation/bleu 30.849100 \n", - "\n", - " val target reached best metric value on val \\\n", - "7 True 0.123696 \n", - "16 True 0.123732 \n", - "25 False 0.123828 \n", - "1 True 0.724301 \n", - "10 True 0.724164 \n", - "19 True 0.723703 \n", - "8 False 26.853745 \n", - "17 False 27.825478 \n", - "26 False 26.962307 \n", - "0 False 0.474260 \n", - "9 False 0.467600 \n", - "18 False 0.455200 \n", - "2 False 0.668040 \n", - "11 False 0.664440 \n", - "20 False 0.659700 \n", - "3 False 0.087732 \n", - "12 False 0.126809 \n", - "21 True 0.084797 \n", - "5 True 0.119847 \n", - "14 True 0.119780 \n", - "23 True 0.119017 \n", - "4 True 0.285353 \n", - "13 True 0.283666 \n", - "22 True 0.282301 \n", - "6 True 30.883987 \n", - "15 True 30.914681 \n", - "24 True 30.954489 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "7 10693.990020 1.033767e+04 1.017615 \n", - "16 7484.813044 7.484813e+03 1.017615 \n", - "25 13201.571622 inf 1.017615 \n", - "1 1188.913138 1.188913e+03 0.372004 \n", - "10 1084.009806 1.084010e+03 0.372004 \n", - "19 1414.230375 1.414230e+03 0.372004 \n", - "8 18022.233602 inf 0.390886 \n", - "17 38578.815465 inf 0.390886 \n", - "26 28299.942930 inf 0.390886 \n", - "0 20031.869838 inf 0.758086 \n", - "9 4114.095728 inf 0.758086 \n", - "18 20045.605985 inf 0.758086 \n", - "2 84876.442858 inf 0.798625 \n", - "11 87409.160116 inf 0.798625 \n", - "20 89980.170517 inf 0.798625 \n", - "3 64552.024778 inf 0.636075 \n", - "12 64541.008598 inf 0.636075 \n", - "21 55843.257082 5.584326e+04 0.636075 \n", - "5 36135.451890 3.613545e+04 0.436999 \n", - "14 40477.752172 4.047775e+04 0.436999 \n", - "23 40463.388149 4.046339e+04 0.436999 \n", - "4 3640.148542 3.640149e+03 0.230429 \n", - "13 4969.322803 4.969323e+03 0.230429 \n", - "22 3624.553771 3.624554e+03 0.230429 \n", - "6 21238.623006 2.123862e+04 0.148019 \n", - "15 16745.451796 1.546168e+04 0.148019 \n", - "24 19957.717876 1.995772e+04 0.148019 \n", - "\n", - " step_hint \n", - "7 10666 \n", - "16 10666 \n", - "25 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "8 72000 \n", - "17 72000 \n", - "26 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "2 167999 \n", - "11 167999 \n", - "20 167999 \n", - "3 76000 \n", - "12 76000 \n", - "21 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "4 52000 \n", - "13 52000 \n", - "22 52000 \n", - "6 120000 \n", - "15 120000 \n", - "24 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Schedule-Free AdamW (JAX) (schedule_free_adamw_jax) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_conformer_jax \n", - "23 librispeech_deepspeech_jax \n", - "24 imagenet_vit_jax \n", - "25 finewebedu_lm_jax \n", - "26 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "26 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [64.80277180671692, 89.22458910942078, 119.436... \n", - "1 [562.5822427272797, 566.3612205982208, 569.855... \n", - "2 [915.2593765258788, 1444.0837428569794, 1969.2... \n", - "3 [260.9838900566101, 378.12336826324463, 492.87... \n", - "4 [265.1032419204712, 348.87857151031494, 433.98... \n", - "5 [263.85190200805664, 379.78293538093567, 495.4... \n", - "6 [66.87388229370117, 90.63721203804016, 115.975... \n", - "7 [331.3653769493103, 660.2042541503906, 988.886... \n", - "8 [1039.6335072517395, 1943.679639339447, 2856.6... \n", - "9 [52.0152485370636, 75.18314480781555, 98.93893... \n", - "10 [832.002769947052, 835.7692911624908, 839.3070... \n", - "11 [921.6159455776216, 1455.3569869995115, 1961.9... \n", - "12 [260.5434820652008, 377.3438639640808, 491.391... \n", - "13 [218.01492071151733, 337.27996706962585, 458.7... \n", - "14 [309.2518792152405, 468.4228076934815, 610.767... \n", - "15 [99.04877591133118, 139.8188512325287, 162.457... \n", - "16 [331.578319311142, 660.5214908123016, 989.3946... \n", - "17 [1110.7750465869904, 2260.6320898532867, 3332.... \n", - "18 [54.83784818649292, 78.51011872291565, 102.161... \n", - "19 [909.214072227478, 912.9807786941528, 916.4760... \n", - "20 [921.2270264625548, 1425.4174120426178, 1951.8... \n", - "21 [251.4593493938446, 362.342609167099, 475.8495... \n", - "22 [227.9441404342652, 354.4669382572174, 478.201... \n", - "23 [304.57498955726624, 420.5781497955322, 537.85... \n", - "24 [66.66235852241516, 91.09455060958862, 116.961... \n", - "25 [331.6346070766449, 660.3451807498932, 988.784... \n", - "26 [2125.166263818741, 3338.8044052124023, 4501.5... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0399310588836669, 0.1748163700103759, ... \n", - "1 [0.0, 0.0449609756469726, 0.2544362545013428, ... \n", - "2 [0.0, 0.0431361198425293, 0.1667077541351318, ... \n", - "3 [0.0, 0.0471258163452148, 0.0980126857757568, ... \n", - "4 [0.0, 0.0582027435302734, 0.1153597831726074, ... \n", - "5 [0.0, 0.0630712509155273, 0.1200852394104003, ... \n", - "6 [0.0, 0.0408036708831787, 0.1093075275421142, ... \n", - "7 [0.0, 0.0397620201110839, 0.0868630409240722, ... \n", - "8 [0.0, 0.0415139198303222, 0.0870864391326904, ... \n", - "9 [0.0, 0.040722370147705, 0.1945395469665527, 0... \n", - "10 [0.0, 0.0416243076324462, 0.0897467136383056, ... \n", - "11 [0.0, 0.043943166732788, 0.0927212238311767, 0... \n", - "12 [0.0, 0.0440804958343505, 0.0944094657897949, ... \n", - "13 [0.0, 0.0640156269073486, 0.1387176513671875, ... \n", - "14 [0.0, 0.0628175735473632, 0.1223938465118408, ... \n", - "15 [0.0, 0.1362159252166748, 0.2361433506011963, ... \n", - "16 [0.0, 0.0382122993469238, 0.0834162235260009, ... \n", - "17 [0.0, 0.0392022132873535, 0.0838687419891357, ... \n", - "18 [0.0, 0.0346267223358154, 0.0786693096160888, ... \n", - "19 [0.0, 0.0403687953948974, 0.0838174819946289, ... \n", - "20 [0.0, 0.0448617935180664, 0.0953803062438964, ... \n", - "21 [0.0, 0.0445392131805419, 0.0951671600341796, ... \n", - "22 [0.0, 0.0699548721313476, 0.1357693672180175, ... \n", - "23 [0.0, 0.0661942958831787, 0.1261601448059082, ... \n", - "24 [0.0, 0.0425713062286376, 0.2632975578308105, ... \n", - "25 [0.0, 0.0388171672821044, 0.0852296352386474, ... \n", - "26 [0.0, 0.0395026206970214, 0.0845065116882324, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [50.136358976364136, 2046.26813864708, 4042.30... \n", - "1 [187.10374927520752, 297.3187327384949, 408.16... \n", - "2 [61.88168597221375, 705.8881783485413, 1349.77... \n", - "3 [22.543950080871586, 474.4983825683594, 926.56... \n", - "4 [180.89342784881592, 1933.7958116531368, 3680.... \n", - "5 [98.00283241271973, 1545.4830293655396, 2993.2... \n", - "6 [54.57469153404236, 2626.0510778427124, 5197.0... \n", - "7 [20.073198318481445, 2591.0787456035614, 5162.... \n", - "8 [11.854544401168823, 368.587194442749, 724.853... \n", - "9 [50.05170655250549, 2045.952622413636, 4041.75... \n", - "10 [272.0154337882996, 382.8766484260559, 493.851... \n", - "11 [58.44010210037232, 702.387955904007, 1346.422... \n", - "12 [22.18412470817566, 474.3226864337921, 926.356... \n", - "13 [187.69154739379883, 1940.580727338791, 3690.5... \n", - "14 [101.32069444656372, 1549.7593817710876, 2999.... \n", - "15 [67.60156393051147, 2639.2176098823547, 5210.1... \n", - "16 [21.00716352462769, 2592.113157272339, 5163.20... \n", - "17 [11.743894577026367, 369.3973135948181, 725.42... \n", - "18 [47.26798915863037, 2043.3844883441925, 4039.4... \n", - "19 [293.4855115413666, 405.7374980449677, 516.738... \n", - "20 [59.11289930343628, 703.1445062160492, 1347.12... \n", - "21 [22.072036266326904, 474.0736424922943, 926.02... \n", - "22 [196.95326209068293, 1947.0643391609192, 3695.... \n", - "23 [102.37653636932372, 1549.4199659824371, 2997.... \n", - "24 [56.1491334438324, 2627.396884918213, 5198.311... \n", - "25 [20.501079082489014, 2591.3998839855194, 5162.... \n", - "26 [10.077565431594849, 367.7837171554565, 724.04... \n", - "\n", - " global_step \\\n", - "0 [1, 6793, 14780, 22768, 30754, 38739, 46718, 5... \n", - "1 [1, 288, 382, 481, 575, 673, 767, 863, 959, 19... \n", - "2 [1, 4463, 9353, 14256, 19158, 24061, 28954, 33... \n", - "3 [1, 2146, 4349, 6572, 8789, 11005, 13220, 1545... \n", - "4 [1, 457, 918, 1608, 2028, 2761, 3395, 4009, 47... \n", - "5 [1, 835, 1644, 2753, 3707, 4885, 5875, 7138, 8... \n", - "6 [1, 5455, 11203, 16951, 22705, 28473, 34229, 3... \n", - "7 [1, 11428, 22885, 34339, 45790, 57249] \n", - "8 [1, 349, 707, 1063, 1426, 1789, 2173, 2549, 29... \n", - "9 [1, 7775, 15765, 23760, 31756, 39751, 47749, 5... \n", - "10 [1, 268, 330, 393, 460, 524, 587, 649, 708, 76... \n", - "11 [1, 4449, 9323, 14197, 19082, 23965, 28859, 33... \n", - "12 [1, 2148, 4333, 6614, 8897, 11184, 13493, 1581... \n", - "13 [1, 443, 872, 1504, 2024, 2784, 3535, 4173, 49... \n", - "14 [1, 787, 1593, 2666, 3599, 4702, 5732, 6988, 8... \n", - "15 [1, 4401, 9959, 14095, 18294, 22443, 26585, 30... \n", - "16 [1, 11405, 22836, 34273, 45709, 57145] \n", - "17 [1, 222, 448, 650, 869, 1092, 1294, 1517, 1748... \n", - "18 [1, 7524, 15513, 23503, 31494, 39482, 47474, 5... \n", - "19 [1, 267, 325, 384, 448, 508, 567, 629, 687, 74... \n", - "20 [1, 4442, 9334, 14230, 19129, 24027, 28910, 33... \n", - "21 [1, 2207, 4426, 6657, 8898, 11237, 13569, 1589... \n", - "22 [1, 439, 889, 1527, 2035, 2793, 3524, 4102, 48... \n", - "23 [1, 789, 1606, 2753, 3755, 5113, 6070, 7511, 8... \n", - "24 [1, 5392, 10919, 16443, 21964, 27486, 32996, 3... \n", - "25 [1, 11427, 22879, 34332, 45787, 57242] \n", - "26 [1, 187, 381, 582, 780, 963, 1154, 1332, 1528,... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [50.136358976364136, 2046.26813864708, 4042.30... \n", - "1 [187.10374927520752, 297.3187327384949, 408.16... \n", - "2 [61.88168597221375, 705.8881783485413, 1349.77... \n", - "3 [22.543950080871586, 474.4983825683594, 926.56... \n", - "4 [180.89342784881592, 1933.7958116531368, 3680.... \n", - "5 [98.00283241271973, 1545.4830293655396, 2993.2... \n", - "6 [54.57469153404236, 2626.0510778427124, 5197.0... \n", - "7 [20.073198318481445, 2591.0787456035614, 5162.... \n", - "8 [11.854544401168823, 368.587194442749, 724.853... \n", - "9 [50.05170655250549, 2045.952622413636, 4041.75... \n", - "10 [272.0154337882996, 382.8766484260559, 493.851... \n", - "11 [58.44010210037232, 702.387955904007, 1346.422... \n", - "12 [22.18412470817566, 474.3226864337921, 926.356... \n", - "13 [187.69154739379883, 1940.580727338791, 3690.5... \n", - "14 [101.32069444656372, 1549.7593817710876, 2999.... \n", - "15 [67.60156393051147, 2639.2176098823547, 5210.1... \n", - "16 [21.00716352462769, 2592.113157272339, 5163.20... \n", - "17 [11.743894577026367, 369.3973135948181, 725.42... \n", - "18 [47.26798915863037, 2043.3844883441925, 4039.4... \n", - "19 [293.4855115413666, 405.7374980449677, 516.738... \n", - "20 [59.11289930343628, 703.1445062160492, 1347.12... \n", - "21 [22.072036266326904, 474.0736424922943, 926.02... \n", - "22 [196.95326209068293, 1947.0643391609192, 3695.... \n", - "23 [102.37653636932372, 1549.4199659824371, 2997.... \n", - "24 [56.1491334438324, 2627.396884918213, 5198.311... \n", - "25 [20.501079082489014, 2591.3998839855194, 5162.... \n", - "26 [10.077565431594849, 367.7837171554565, 724.04... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0006, 0.25370002, 0.0014000001, 0.001, 0.03... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5998954176902771, 0.649... ... \n", - "3 [0.4752404391765594, 0.9839476346969604, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.20610002, 0.3452, 0.41560003, 0.4586... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0016000001, 0.172, 0.0013000001, 0.001, 0.0... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5998256802558899, 0.650... ... \n", - "12 [0.4883911311626434, 0.983948051929474, 0.9847... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.17400001, 0.3258, 0.38480002, 0.4248... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.00080000004, 0.17940001, 0.0016000001, 0.00... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.6002324223518372, 0.650... ... \n", - "21 [0.5051379799842834, 0.9839733242988586, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.20080002, 0.33490002, 0.4022, 0.4494... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0269368781957848, 0.1223161671621748, 0.170... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0275654394828914, 0.122451880402328, 0.1712... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0255881800798176, 0.1290474442283525, 0.172... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.774599, 1.5475664, 1.4796066, 0.632051, 0.4... \n", - "5 [7.3038, 1.3286598, 0.6331472, 0.2732478, 0.18... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6317697, 1.4954873, 1.520395, 1.5451847, 1.... \n", - "14 [7.3628473, 1.379529, 0.7006643, 0.27088106, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.74551, 1.5424807, 1.4962969, 0.67853576, 0.... \n", - "23 [7.403621, 1.2196025, 0.6824632, 0.26378787, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.948510145634026, 0.899579550301627, 0.89957... \n", - "5 [4.227814677147442, 0.91588974874576, 0.566307... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.95695976276075, 0.899579550301627, 0.899579... \n", - "14 [4.313184246338838, 0.9578940954238012, 0.6090... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.8997014197794162, 0.899579550301627, 0.8995... \n", - "23 [4.305181483964008, 0.8887128551987488, 0.6190... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.9402175, 1.5198174, 1.4613268, 0.6281934, 0... \n", - "5 [7.6031795, 1.4342304, 0.6494276, 0.26546466, ... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.9059625, 1.4892366, 1.5057417, 1.5166953, 1... \n", - "14 [7.666715, 1.4848164, 0.730589, 0.26049194, 0.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.9014397, 1.5166935, 1.4767932, 0.66586787, ... \n", - "23 [7.6999955, 1.3150111, 0.7145784, 0.2549867, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.032276200987027, 0.944635537887994, 0.94272... \n", - "5 [4.334141973637632, 0.9406706350023688, 0.5886... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9496595381379755, 0.944635537887994, 0.9427... \n", - "14 [4.407674447660496, 0.9968847191612944, 0.6385... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.9440268204818524, 0.944635537887994, 0.9427... \n", - "23 [4.455349520021656, 0.9415254062738152, 0.6458... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.752598, 1.5533421, 1.4846033, 0.68937147, 0... \n", - "5 [7.296087, 1.3874875, 0.7322531, 0.36960682, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.5802503, 1.4973441, 1.5229473, 1.5508139, 1... \n", - "14 [7.3890595, 1.4361861, 0.804853, 0.36850327, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.7533803, 1.5483526, 1.5070449, 0.73295695, ... \n", - "23 [7.41381, 1.284577, 0.7789574, 0.35871878, 0.2... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9315598899242022, 0.8967218654950997, 0.896... \n", - "5 [4.058340172838314, 0.9096992227103752, 0.6138... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.951904600975233, 0.8967218654950997, 0.8967... \n", - "14 [3.9227152030126007, 0.9474243228890068, 0.655... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [0.896866702071163, 0.8967218654950997, 0.8967... \n", - "23 [4.032684787331627, 0.8925891951914257, 0.6576... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60637.141937818495, 29.48409050378142, 25.674... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [65275.64552526401, 30.606369571683185, 26.217... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63467.41467824364, 29.66270909212912, 25.3519... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60650.44385614428, 29.551975621652595, 25.676... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [65334.87375255469, 30.6844387737482, 26.21801... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [63435.22235195929, 29.72729136497202, 25.3439... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735True0.1236787853.6429377.140809e+031.76334510666
17criteo1tb_jaxtrial_1validation/loss0.123735False0.12382613222.375915inf1.76334510666
26criteo1tb_jaxtrial_1validation/loss0.123735False0.12378913213.711726inf1.76334510666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7237301731.1340841.731134e+031.14967418094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7237192594.6673042.594667e+031.14967418094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7238082397.4020352.397402e+031.14967418094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.63105612875.0245021.287502e+040.22480872000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.74279212876.2794331.287628e+040.22480872000
25finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.68387912875.2830801.287528e+040.22480872000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.3266802046.268139inf0.250221195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.37228012025.559068inf0.250221195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.33810043958.733883inf0.250221195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77448082325.3238928.232532e+040.522412167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.75714087510.925770inf0.522412167999
24imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77344087468.8608168.746886e+040.522412167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.15499465011.384938inf2.56890776000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.55679065011.670110inf2.56890776000
22librispeech_conformer_jaxtrial_1validation/wer0.085884False0.11871864999.678295inf2.56890776000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.13502655134.126437inf1.26186038400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.13573155131.024175inf1.26186038400
23librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.13533555139.798880inf1.26186038400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2882125446.9738275.446974e+030.20013052000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2861865446.9956535.446996e+030.20013052000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2842355446.2664365.446266e+030.20013052000
2wmt_jaxtrial_1validation/bleu30.849100True30.85016916161.2022481.616120e+040.131380120000
11wmt_jaxtrial_1validation/bleu30.849100True30.85712421309.9016252.130990e+040.131380120000
20wmt_jaxtrial_1validation/bleu30.849100True30.92105412938.9215661.293892e+040.131380120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "26 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "25 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "24 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "22 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "23 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 True 0.123678 \n", - "17 0.123735 False 0.123826 \n", - "26 0.123735 False 0.123789 \n", - "1 0.723653 True 0.723730 \n", - "10 0.723653 True 0.723719 \n", - "19 0.723653 True 0.723808 \n", - "7 22.299500 True 21.631056 \n", - "16 22.299500 True 21.742792 \n", - "25 22.299500 True 21.683879 \n", - "0 0.774310 False 0.326680 \n", - "9 0.774310 False 0.372280 \n", - "18 0.774310 False 0.338100 \n", - "6 0.773090 True 0.774480 \n", - "15 0.773090 False 0.757140 \n", - "24 0.773090 True 0.773440 \n", - "4 0.085884 False 0.154994 \n", - "13 0.085884 False 0.556790 \n", - "22 0.085884 False 0.118718 \n", - "5 0.119936 False 0.135026 \n", - "14 0.119936 False 0.135731 \n", - "23 0.119936 False 0.135335 \n", - "3 0.280980 True 0.288212 \n", - "12 0.280980 True 0.286186 \n", - "21 0.280980 True 0.284235 \n", - "2 30.849100 True 30.850169 \n", - "11 30.849100 True 30.857124 \n", - "20 30.849100 True 30.921054 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 7853.642937 7.140809e+03 1.763345 \n", - "17 13222.375915 inf 1.763345 \n", - "26 13213.711726 inf 1.763345 \n", - "1 1731.134084 1.731134e+03 1.149674 \n", - "10 2594.667304 2.594667e+03 1.149674 \n", - "19 2397.402035 2.397402e+03 1.149674 \n", - "7 12875.024502 1.287502e+04 0.224808 \n", - "16 12876.279433 1.287628e+04 0.224808 \n", - "25 12875.283080 1.287528e+04 0.224808 \n", - "0 2046.268139 inf 0.250221 \n", - "9 12025.559068 inf 0.250221 \n", - "18 43958.733883 inf 0.250221 \n", - "6 82325.323892 8.232532e+04 0.522412 \n", - "15 87510.925770 inf 0.522412 \n", - "24 87468.860816 8.746886e+04 0.522412 \n", - "4 65011.384938 inf 2.568907 \n", - "13 65011.670110 inf 2.568907 \n", - "22 64999.678295 inf 2.568907 \n", - "5 55134.126437 inf 1.261860 \n", - "14 55131.024175 inf 1.261860 \n", - "23 55139.798880 inf 1.261860 \n", - "3 5446.973827 5.446974e+03 0.200130 \n", - "12 5446.995653 5.446996e+03 0.200130 \n", - "21 5446.266436 5.446266e+03 0.200130 \n", - "2 16161.202248 1.616120e+04 0.131380 \n", - "11 21309.901625 2.130990e+04 0.131380 \n", - "20 12938.921566 1.293892e+04 0.131380 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "26 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "24 167999 \n", - "4 76000 \n", - "13 76000 \n", - "22 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Schedule-Free AdamW (JAX v2) (schedule_free_adamw_jax_v2) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_conformer_jax \n", - "23 librispeech_deepspeech_jax \n", - "24 imagenet_vit_jax \n", - "25 finewebedu_lm_jax \n", - "26 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "26 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [58.0493426322937, 80.8735921382904, 104.81943... \n", - "1 [559.0533547401428, 562.8078515529633, 566.306... \n", - "2 [915.6216826438904, 1430.5752911567688, 1956.2... \n", - "3 [244.306161403656, 355.0137469768524, 463.5082... \n", - "4 [246.77522158622745, 381.94140005111694, 514.0... \n", - "5 [266.1567747592926, 380.7729184627533, 497.768... \n", - "6 [65.16466951370239, 90.6530590057373, 116.1852... \n", - "7 [332.7077293395996, 662.0156135559082, 991.533... \n", - "8 [909.38507771492, 1780.0008041858673, 2646.882... \n", - "9 [88.55480742454529, 143.2671549320221, 181.964... \n", - "10 [558.4159188270569, 562.2682967185974, 565.801... \n", - "11 [919.6205627918245, 1456.450924396515, 2041.88... \n", - "12 [247.80656695365903, 359.1231412887573, 472.22... \n", - "13 [229.04721355438232, 325.10712933540344, 411.1... \n", - "14 [292.07610416412354, 445.9605395793915, 567.38... \n", - "15 [74.86340236663818, 98.76595664024352, 123.677... \n", - "16 [333.7029254436493, 664.2292051315308, 994.872... \n", - "17 [976.9460093975068, 1825.04330778122, 2671.016... \n", - "18 [83.23402738571167, 118.17159128189088, 183.03... \n", - "19 [489.11433959007263, 492.89446902275085, 496.3... \n", - "20 [916.7374877929688, 1434.679277420044, 1949.38... \n", - "21 [244.35787796974185, 355.29258275032043, 464.4... \n", - "22 [229.3446192741394, 321.6874759197235, 407.459... \n", - "23 [285.8121194839477, 430.90722274780273, 547.67... \n", - "24 [76.57610821723938, 101.54883575439452, 129.81... \n", - "25 [331.95021772384644, 661.1177418231964, 990.29... \n", - "26 [962.4220168590546, 1826.649857759476, 2666.44... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.0282888412475585, 0.0968890190124511, ... \n", - "1 [0.0, 0.0282468795776367, 0.0568208694458007, ... \n", - "2 [0.0, 0.0300424098968505, 0.0642564296722412, ... \n", - "3 [0.0, 0.0336849689483642, 0.0699138641357421, ... \n", - "4 [0.0, 0.0517921447753906, 0.0927190780639648, ... \n", - "5 [0.0, 0.0520830154418945, 0.1004714965820312, ... \n", - "6 [0.0, 0.0270428657531738, 0.0953762531280517, ... \n", - "7 [0.0, 0.0501048564910888, 0.0824878215789794, ... \n", - "8 [0.0, 0.0279419422149658, 0.0590729713439941, ... \n", - "9 [0.0, 0.0286586284637451, 0.06117844581604, 0.... \n", - "10 [0.0, 0.0262553691864013, 0.0537238121032714, ... \n", - "11 [0.0, 0.0308592319488525, 0.0663516521453857, ... \n", - "12 [0.0, 0.0363237857818603, 0.1557934284210205, ... \n", - "13 [0.0, 0.0453114509582519, 0.0877230167388916, ... \n", - "14 [0.0, 0.0540707111358642, 0.1005995273590087, ... \n", - "15 [0.0, 0.1161983013153076, 0.2656311988830566, ... \n", - "16 [0.0, 0.0644490718841552, 0.0969510078430175, ... \n", - "17 [0.0, 0.0275282859802246, 0.0576918125152587, ... \n", - "18 [0.0, 0.0278799533843994, 0.0581820011138916, ... \n", - "19 [0.0, 0.029649019241333, 0.0734004974365234, 0... \n", - "20 [0.0, 0.0310356616973876, 0.0633888244628906, ... \n", - "21 [0.0, 0.0353169441223144, 0.072155475616455, 0... \n", - "22 [0.0, 0.0436325073242187, 0.086782693862915, 0... \n", - "23 [0.0, 0.0493862628936767, 0.0974702835083007, ... \n", - "24 [0.0, 0.0275194644927978, 0.0730621814727783, ... \n", - "25 [0.0, 0.0305087566375732, 0.0659692287445068, ... \n", - "26 [0.0, 0.029773473739624, 0.0620107650756835, 0... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [55.403265714645386, 2051.405519247055, 4047.7... \n", - "1 [196.9033393859864, 307.3230459690094, 417.390... \n", - "2 [56.32971405982971, 700.3005366325378, 1344.34... \n", - "3 [21.242717504501343, 473.3129940032959, 925.38... \n", - "4 [219.76593780517567, 1967.1575129032133, 3714.... \n", - "5 [127.73932814598083, 1574.7836694717407, 3022.... \n", - "6 [54.33276605606079, 2625.439747095108, 5196.64... \n", - "7 [25.705768823623657, 2596.7469022274017, 5167.... \n", - "8 [9.263241529464722, 365.3596320152282, 721.927... \n", - "9 [60.91907024383545, 2058.181893348694, 4054.16... \n", - "10 [200.95578265190125, 311.1789586544037, 421.27... \n", - "11 [58.005565881729126, 702.021279335022, 1346.03... \n", - "12 [22.54257607460022, 474.6149091720581, 926.657... \n", - "13 [210.54182243347168, 1958.5652182102203, 3711.... \n", - "14 [120.3093535900116, 1570.8978261947632, 3018.8... \n", - "15 [55.49204921722412, 2626.603167295456, 5197.67... \n", - "16 [25.405643224716187, 2596.313731908798, 5167.2... \n", - "17 [8.835359811782837, 365.288192987442, 721.8082... \n", - "18 [62.0377836227417, 2058.049063682556, 4054.171... \n", - "19 [176.35712265968323, 286.5588183403015, 396.94... \n", - "20 [57.330106258392334, 701.2851095199585, 1345.2... \n", - "21 [19.258131980896, 471.29798221588135, 923.4478... \n", - "22 [210.4243857860565, 1957.622484207153, 3716.01... \n", - "23 [126.54717898368835, 1573.5303466320038, 3022.... \n", - "24 [58.52012538909912, 2629.6919548511505, 5200.5... \n", - "25 [20.79915022850037, 2591.924871206284, 5162.82... \n", - "26 [8.664476871490479, 365.3622269630432, 722.084... \n", - "\n", - " global_step \\\n", - "0 [1, 5091, 10483, 15877, 21268, 26661, 32053, 3... \n", - "1 [1, 297, 396, 503, 607, 715, 827, 937, 1725, 2... \n", - "2 [1, 4467, 9353, 14240, 19134, 24029, 28916, 33... \n", - "3 [1, 2206, 4456, 6802, 9130, 11466, 13801, 1611... \n", - "4 [1, 494, 963, 1617, 2115, 2824, 3527, 4105, 48... \n", - "5 [1, 633, 1229, 1802, 2365, 2920, 3468, 4009, 4... \n", - "6 [1, 5384, 11038, 16692, 22336, 27982, 33626, 3... \n", - "7 [1, 11410, 22846, 34294, 45744, 57200, 68640] \n", - "8 [1, 384, 768, 1131, 1509, 1908, 2312, 2715, 31... \n", - "9 [1, 3667, 8555, 13898, 19241, 23383, 28732, 33... \n", - "10 [1, 299, 399, 506, 610, 718, 830, 943, 1755, 2... \n", - "11 [1, 4428, 9278, 14138, 19013, 23884, 28746, 33... \n", - "12 [1, 2196, 4423, 6658, 8899, 11254, 13620, 1596... \n", - "13 [1, 429, 821, 1327, 1779, 2290, 2830, 3416, 39... \n", - "14 [1, 634, 1219, 1791, 2347, 2902, 3451, 3994, 4... \n", - "15 [1, 5308, 10882, 16456, 22050, 27606, 33179, 3... \n", - "16 [1, 11293, 22619, 33948, 45278, 56608, 67936] \n", - "17 [1, 377, 754, 1131, 1506, 1853, 2242, 2649, 30... \n", - "18 [1, 4518, 9801, 14506, 19882, 25270, 30022, 34... \n", - "19 [1, 299, 406, 512, 626, 731, 845, 953, 1847, 2... \n", - "20 [1, 4457, 9347, 14247, 19144, 24043, 28930, 33... \n", - "21 [1, 2204, 4420, 6651, 8920, 11191, 13492, 1583... \n", - "22 [1, 434, 827, 1339, 1781, 2289, 2831, 3421, 39... \n", - "23 [1, 626, 1207, 1783, 2346, 2908, 3459, 4006, 4... \n", - "24 [1, 5278, 11064, 16849, 22622, 28394, 34169, 3... \n", - "25 [1, 11381, 22790, 34204, 45622, 57046, 68461, ... \n", - "26 [1, 374, 736, 1113, 1489, 1873, 2268, 2666, 30... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0] \n", - "26 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [55.403265714645386, 2051.405519247055, 4047.7... \n", - "1 [196.9033393859864, 307.3230459690094, 417.390... \n", - "2 [56.32971405982971, 700.3005366325378, 1344.34... \n", - "3 [21.242717504501343, 473.3129940032959, 925.38... \n", - "4 [219.76593780517567, 1967.1575129032133, 3714.... \n", - "5 [127.73932814598083, 1574.7836694717407, 3022.... \n", - "6 [54.33276605606079, 2625.439747095108, 5196.64... \n", - "7 [25.705768823623657, 2596.7469022274017, 5167.... \n", - "8 [9.263241529464722, 365.3596320152282, 721.927... \n", - "9 [60.91907024383545, 2058.181893348694, 4054.16... \n", - "10 [200.95578265190125, 311.1789586544037, 421.27... \n", - "11 [58.005565881729126, 702.021279335022, 1346.03... \n", - "12 [22.54257607460022, 474.6149091720581, 926.657... \n", - "13 [210.54182243347168, 1958.5652182102203, 3711.... \n", - "14 [120.3093535900116, 1570.8978261947632, 3018.8... \n", - "15 [55.49204921722412, 2626.603167295456, 5197.67... \n", - "16 [25.405643224716187, 2596.313731908798, 5167.2... \n", - "17 [8.835359811782837, 365.288192987442, 721.8082... \n", - "18 [62.0377836227417, 2058.049063682556, 4054.171... \n", - "19 [176.35712265968323, 286.5588183403015, 396.94... \n", - "20 [57.330106258392334, 701.2851095199585, 1345.2... \n", - "21 [19.258131980896, 471.29798221588135, 923.4478... \n", - "22 [210.4243857860565, 1957.622484207153, 3716.01... \n", - "23 [126.54717898368835, 1573.5303466320038, 3022.... \n", - "24 [58.52012538909912, 2629.6919548511505, 5200.5... \n", - "25 [20.79915022850037, 2591.924871206284, 5162.82... \n", - "26 [8.664476871490479, 365.3622269630432, 722.084... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.00080000004, 0.025600001, 0.0092, 0.0046, 0... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.6015571355819702, 0.651... ... \n", - "3 [0.54930579662323, 0.9839819669723512, 0.98475... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.2028, 0.33490002, 0.40050003, 0.4466... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0012, 0.029900001, 0.013300001, 0.0048, 0.0... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5996630191802979, 0.652... ... \n", - "12 [0.5500994324684143, 0.9840356111526488, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.19970001, 0.3323, 0.39560002, 0.4453... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0013000001, 0.029500002, 0.007900001, 0.004... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.601266622543335, 0.6496... ... \n", - "21 [0.5132913589477539, 0.9839556217193604, 0.984... ... \n", - "22 NaN ... \n", - "23 NaN ... \n", - "24 [0.001, 0.2088, 0.33800003, 0.4072, 0.45270002... ... \n", - "25 NaN ... \n", - "26 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0253999915231944, 0.1209215189084952, 0.170... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0283739277753704, 0.1295064363925236, 0.179... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0262547068500254, 0.1173298612342307, 0.163... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.721686, 1.5433471, 1.4547613, 0.6074762, 0.... \n", - "5 [7.599229, 1.5933617, 0.6930949, 0.4062324, 0.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.7219095, 1.469696, 1.4844515, 1.5153385, 1.... \n", - "14 [7.5903873, 1.551974, 0.77204025, 0.4166957, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.6164026, 1.4853637, 1.8755568, 1.7902044, 1... \n", - "23 [7.9597225, 1.4082513, 0.7803582, 0.43200895, ... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1889992484715537, 0.899579550301627, 0.8995... \n", - "5 [3.9952877135254807, 0.9890114354193326, 0.617... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.961001767107428, 0.899579550301627, 0.89957... \n", - "14 [4.370259785103488, 1.064976743241322, 0.69433... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1780919302094124, 0.899579550301627, 0.9003... \n", - "23 [4.648284687100116, 0.9053074157577234, 0.6687... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.004865, 1.5167239, 1.447025, 0.5991005, 0.4... \n", - "5 [7.763394, 1.731378, 0.70260745, 0.40471458, 0... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.9469433, 1.4678591, 1.4934036, 1.4973278, 1... \n", - "14 [7.886663, 1.6670026, 0.7908021, 0.42054507, 0... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.9698772, 1.4752581, 1.5140996, 1.7457054, 1... \n", - "23 [8.196242, 1.5066614, 0.82029676, 0.43138903, ... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9958509464215064, 0.944635537887994, 0.9427... \n", - "5 [4.1193855027799176, 1.0421927457724869, 0.640... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.044306894612998, 0.944635537887994, 0.94272... \n", - "14 [4.535722466318223, 1.1096784824205477, 0.7283... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1730733190346292, 0.944635537887994, 0.9427... \n", - "23 [4.826046894196531, 0.92307573479434, 0.699246... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.6813645, 1.5494846, 1.4620444, 0.66371936, ... \n", - "5 [7.5782866, 1.6362473, 0.78430516, 0.50880057,... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6784267, 1.4717903, 1.488873, 1.5197185, 1.... \n", - "14 [7.57745, 1.5971037, 0.859292, 0.5192453, 0.36... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.590369, 1.4892555, 2.0417223, 1.7875694, 1.... \n", - "23 [7.9328957, 1.4552202, 0.8768337, 0.5423497, 0... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.1928354173707334, 0.8967218654950997, 0.896... \n", - "5 [3.7919374305991407, 0.969806401776662, 0.6599... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.9375175010862744, 0.8967218654950997, 0.896... \n", - "14 [4.132148892000193, 1.0488292376768211, 0.7274... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [1.1852170134698017, 0.8967218654950997, 0.898... \n", - "23 [4.3034615941679135, 0.8934195915608555, 0.703... \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] \n", - "26 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [59605.40389065451, 33.93450762623022, 27.6305... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [60002.92729324393, 33.16179841895657, 27.0589... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60222.03362979968, 32.81367021462304, 27.2247... \n", - "26 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [59615.23873864268, 34.04377705462479, 27.6453... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [60005.33071790546, 33.2487797876805, 27.06711... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [60219.73638534624, 32.90676735747443, 27.2323... \n", - "26 NaN \n", - "\n", - "[27 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735True0.1236827494.7309877.494731e+030.89669110666
17criteo1tb_jaxtrial_1validation/loss0.123735True0.1236968204.5405398.204541e+030.89669110666
26criteo1tb_jaxtrial_1validation/loss0.123735True0.1237038561.9922378.205840e+030.89669110666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7237461850.6253821.850625e+030.36984018094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7239381854.5847801.854585e+030.36984018094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7237981610.7917051.610792e+030.36984018094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True22.06370715451.9913471.545199e+040.22534672000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True22.08408015451.3329981.545133e+040.22534672000
25finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.41176518017.7463171.801775e+040.22534672000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.0346402051.405519inf0.447769195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.0401402058.181893inf0.447769195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.0360602058.049064inf0.447769195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77356084891.7550188.489176e+040.491351167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77320090041.7841649.004178e+040.491351167999
24imagenet_vit_jaxtrial_1validation/accuracy0.773090True0.77350079757.2853817.975729e+040.491351167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.12388465000.425951inf2.68788676000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.52096864987.361876inf2.68788676000
22librispeech_conformer_jaxtrial_1validation/wer0.085884False0.88584965011.338722inf2.68788676000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15747655212.787965inf2.85625738400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15430955199.303205inf2.85625738400
23librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15728355205.010649inf2.85625738400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2864135445.9748085.445975e+030.19452452000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2833404543.0610114.543061e+030.19452452000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980True0.2839605444.0192955.444019e+030.19452452000
2wmt_jaxtrial_1validation/bleu30.849100False30.80719718087.946022inf0.131784120000
11wmt_jaxtrial_1validation/bleu30.849100False30.82293718733.534310inf0.131784120000
20wmt_jaxtrial_1validation/bleu30.849100True30.89861812937.4888431.293749e+040.131784120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "26 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "25 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "24 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "22 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "23 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 True 0.123682 \n", - "17 0.123735 True 0.123696 \n", - "26 0.123735 True 0.123703 \n", - "1 0.723653 True 0.723746 \n", - "10 0.723653 True 0.723938 \n", - "19 0.723653 True 0.723798 \n", - "7 22.299500 True 22.063707 \n", - "16 22.299500 True 22.084080 \n", - "25 22.299500 True 21.411765 \n", - "0 0.774310 False 0.034640 \n", - "9 0.774310 False 0.040140 \n", - "18 0.774310 False 0.036060 \n", - "6 0.773090 True 0.773560 \n", - "15 0.773090 True 0.773200 \n", - "24 0.773090 True 0.773500 \n", - "4 0.085884 False 0.123884 \n", - "13 0.085884 False 0.520968 \n", - "22 0.085884 False 0.885849 \n", - "5 0.119936 False 0.157476 \n", - "14 0.119936 False 0.154309 \n", - "23 0.119936 False 0.157283 \n", - "3 0.280980 True 0.286413 \n", - "12 0.280980 True 0.283340 \n", - "21 0.280980 True 0.283960 \n", - "2 30.849100 False 30.807197 \n", - "11 30.849100 False 30.822937 \n", - "20 30.849100 True 30.898618 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 7494.730987 7.494731e+03 0.896691 \n", - "17 8204.540539 8.204541e+03 0.896691 \n", - "26 8561.992237 8.205840e+03 0.896691 \n", - "1 1850.625382 1.850625e+03 0.369840 \n", - "10 1854.584780 1.854585e+03 0.369840 \n", - "19 1610.791705 1.610792e+03 0.369840 \n", - "7 15451.991347 1.545199e+04 0.225346 \n", - "16 15451.332998 1.545133e+04 0.225346 \n", - "25 18017.746317 1.801775e+04 0.225346 \n", - "0 2051.405519 inf 0.447769 \n", - "9 2058.181893 inf 0.447769 \n", - "18 2058.049064 inf 0.447769 \n", - "6 84891.755018 8.489176e+04 0.491351 \n", - "15 90041.784164 9.004178e+04 0.491351 \n", - "24 79757.285381 7.975729e+04 0.491351 \n", - "4 65000.425951 inf 2.687886 \n", - "13 64987.361876 inf 2.687886 \n", - "22 65011.338722 inf 2.687886 \n", - "5 55212.787965 inf 2.856257 \n", - "14 55199.303205 inf 2.856257 \n", - "23 55205.010649 inf 2.856257 \n", - "3 5445.974808 5.445975e+03 0.194524 \n", - "12 4543.061011 4.543061e+03 0.194524 \n", - "21 5444.019295 5.444019e+03 0.194524 \n", - "2 18087.946022 inf 0.131784 \n", - "11 18733.534310 inf 0.131784 \n", - "20 12937.488843 1.293749e+04 0.131784 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "26 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "24 167999 \n", - "4 76000 \n", - "13 76000 \n", - "22 76000 \n", - "5 38400 \n", - "14 38400 \n", - "23 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== Schedule-Free AdamW v2 (schedule_free_adamw_v2) ===\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - "['imagenet_resnet_pytorch', 'fastmri_pytorch', 'imagenet_vit_pytorch', 'librispeech_conformer_pytorch', 'ogbg_pytorch', 'librispeech_deepspeech_pytorch', 'wmt_pytorch', 'criteo1tb_pytorch', 'finewebedu_lm_pytorch']\n", - " workload \\\n", - "0 imagenet_resnet_pytorch \n", - "1 fastmri_pytorch \n", - "2 imagenet_vit_pytorch \n", - "3 librispeech_conformer_pytorch \n", - "4 ogbg_pytorch \n", - "5 librispeech_deepspeech_pytorch \n", - "6 wmt_pytorch \n", - "7 criteo1tb_pytorch \n", - "8 finewebedu_lm_pytorch \n", - "9 imagenet_resnet_pytorch \n", - "10 fastmri_pytorch \n", - "11 imagenet_vit_pytorch \n", - "12 librispeech_conformer_pytorch \n", - "13 ogbg_pytorch \n", - "14 librispeech_deepspeech_pytorch \n", - "15 wmt_pytorch \n", - "16 criteo1tb_pytorch \n", - "17 finewebedu_lm_pytorch \n", - "18 imagenet_resnet_pytorch \n", - "19 fastmri_pytorch \n", - "20 librispeech_conformer_pytorch \n", - "21 ogbg_pytorch \n", - "22 librispeech_deepspeech_pytorch \n", - "23 wmt_pytorch \n", - "24 criteo1tb_pytorch \n", - "25 finewebedu_lm_pytorch \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "1 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "2 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "3 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "4 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "5 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "6 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "7 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "8 (trial_1, logs/self_tuning/schedule_free_adamw... study_2 \n", - "9 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "10 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "11 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "12 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "13 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "14 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "15 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "16 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "17 (trial_1, logs/self_tuning/schedule_free_adamw... study_1 \n", - "18 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "19 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "20 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "21 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "22 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "23 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "24 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "25 (trial_1, logs/self_tuning/schedule_free_adamw... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [249.11051225662231, 409.8751678466797, 556.52... \n", - "1 [296.68140029907227, 302.8516414165497, 308.98... \n", - "2 [210.3744921684265, 368.30675625801086, 519.52... \n", - "3 [66.95272040367126, 117.95686078071594, 166.87... \n", - "4 [77.86068320274353, 107.99291062355042, 138.74... \n", - "5 [56.27024698257446, 96.27249240875244, 144.551... \n", - "6 [431.9141161441803, 635.4876143932343, 829.028... \n", - "7 [914.4495341777802, 1702.3832795619965, 2468.4... \n", - "8 [221.4766297340393, 402.8152713775635, 584.092... \n", - "9 [279.9216039180756, 416.338365316391, 548.7897... \n", - "10 [391.99245381355286, 402.0045380592346, 411.42... \n", - "11 [304.1490981578827, 486.1130685806274, 660.091... \n", - "12 [65.65768480300903, 112.98680996894836, 160.27... \n", - "13 [72.12119626998901, 100.6438446044922, 129.059... \n", - "14 [64.48158812522888, 98.41296625137328, 147.146... \n", - "15 [435.32351565361023, 641.7875559329987, 828.96... \n", - "16 [823.8291246891022, 1591.9094185829165, 2356.5... \n", - "17 [221.5483334064484, 403.7193796634674, 585.796... \n", - "18 [217.3025598526001, 336.2104983329773, 460.497... \n", - "19 [308.4529986381531, 314.60500955581665, 320.74... \n", - "20 [64.37843656539917, 113.8451201915741, 163.379... \n", - "21 [76.71926641464233, 107.38231706619264, 137.97... \n", - "22 [76.65600275993347, 126.87334179878236, 177.69... \n", - "23 [431.166291475296, 630.1243770122528, 821.5166... \n", - "24 [779.652889251709, 1524.1723053455353, 2267.50... \n", - "25 [221.125262260437, 403.004412651062, 584.58507... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3801503181457519, 1.1023294925689695, ... \n", - "1 [0.0, 0.3137989044189453, 0.3557281494140625, ... \n", - "2 [0.0, 0.3512694835662842, 1.6509487628936768, ... \n", - "3 [0.0, 0.300149917602539, 0.3589334487915039, 0... \n", - "4 [0.0, 0.0929186344146728, 0.1309175491333007, ... \n", - "5 [0.0, 0.2907252311706543, 0.5344891548156738, ... \n", - "6 [0.0, 0.3168292045593261, 0.4186694622039795, ... \n", - "7 [0.0, 0.3814537525177002, 0.4164624214172363, ... \n", - "8 [0.0, 0.352717638015747, 0.4059216976165771, 0... \n", - "9 [0.0, 0.2659287452697754, 1.4724721908569336, ... \n", - "10 [0.0, 0.271064281463623, 0.3074986934661865, 0... \n", - "11 [0.0, 0.3571417331695556, 1.068497657775879, 2... \n", - "12 [0.0, 0.0769686698913574, 0.1230995655059814, ... \n", - "13 [0.0, 0.0557470321655273, 0.0874710083007812, ... \n", - "14 [0.0, 0.3230507373809814, 0.6127181053161621, ... \n", - "15 [0.0, 0.3003222942352295, 0.3495957851409912, ... \n", - "16 [0.0, 0.3675975799560547, 0.4284005165100097, ... \n", - "17 [0.0, 0.0677485466003418, 0.113591194152832, 0... \n", - "18 [0.0, 0.0625197887420654, 0.0969834327697753, ... \n", - "19 [0.0, 0.3745512962341308, 0.4103329181671142, ... \n", - "20 [0.0, 0.2909564971923828, 0.3771781921386719, ... \n", - "21 [0.0, 0.0652134418487548, 0.104417085647583, 0... \n", - "22 [0.0, 0.0822052955627441, 0.1311945915222168, ... \n", - "23 [0.0, 0.0612545013427734, 0.0998022556304931, ... \n", - "24 [0.0, 0.0582411289215087, 0.0954034328460693, ... \n", - "25 [0.0, 0.0637731552124023, 0.1116249561309814, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [145.55826592445374, 2138.894546985626, 4133.0... \n", - "1 [145.96252608299255, 255.07068753242493, 364.4... \n", - "2 [94.90353989601137, 2661.42169547081, 5229.087... \n", - "3 [18.94313645362854, 1764.1741247177124, 3509.5... \n", - "4 [14.544916152954102, 465.7149586677551, 916.85... \n", - "5 [34.503788232803345, 1478.536323785782, 2922.8... \n", - "6 [54.089704275131226, 695.9262759685516, 1337.9... \n", - "7 [6.098940372467041, 362.3438584804535, 718.723... \n", - "8 [53.8807008266449, 2622.0064418315887, 5190.76... \n", - "9 [162.8230459690094, 2155.6817536354065, 4148.5... \n", - "10 [187.53205919265747, 296.4313855171204, 406.46... \n", - "11 [88.86981630325317, 2662.2931270599365, 5236.0... \n", - "12 [17.005546808242798, 1762.7828562259674, 3508.... \n", - "13 [6.708303213119507, 457.85532116889954, 909.04... \n", - "14 [39.70852279663086, 1484.1050803661346, 2928.9... \n", - "15 [58.43246555328369, 700.232017993927, 1342.203... \n", - "16 [6.935627937316895, 362.9498031139374, 719.467... \n", - "17 [41.42606282234192, 2609.49827337265, 5177.869... \n", - "18 [162.14458894729614, 2158.090327978134, 4151.4... \n", - "19 [146.65601301193237, 255.6350064277649, 365.17... \n", - "20 [17.390963792800903, 1762.5864510536194, 3508.... \n", - "21 [9.465001106262209, 460.63598465919495, 911.72... \n", - "22 [29.35258436203003, 1474.7683084011078, 2919.8... \n", - "23 [52.19884514808655, 694.1772229671478, 1336.11... \n", - "24 [4.689499139785767, 360.6912479400635, 716.459... \n", - "25 [40.73595309257507, 2609.0001788139343, 5177.8... \n", - "\n", - " global_step \\\n", - "0 [1, 2037, 4400, 6815, 9178, 11260, 13531, 1594... \n", - "1 [1, 674, 995, 1323, 1659, 2455, 5431, 8408, 11... \n", - "2 [1, 3645, 6877, 9859, 13026, 16012, 19150, 221... \n", - "3 [1, 1586, 3453, 5964, 8703, 11358, 13941, 1649... \n", - "4 [1, 1969, 3942, 5904, 7919, 9986, 12060, 14125... \n", - "5 [1, 3123, 5817, 8490, 11152, 13953, 16598, 192... \n", - "6 [1, 4409, 9012, 13612, 18201, 22797, 27402, 32... \n", - "7 [1, 358, 725, 1099, 1478, 1849, 2220, 2599, 29... \n", - "8 [1, 6479, 12959, 19442, 25928, 32414, 38901, 4... \n", - "9 [1, 3079, 5586, 7929, 10148, 12444, 14821, 172... \n", - "10 [1, 606, 851, 1091, 1321, 1560, 1818, 3452, 64... \n", - "11 [1, 2131, 4913, 7891, 10783, 13633, 16563, 194... \n", - "12 [1, 1674, 3742, 6391, 9036, 11604, 14170, 1693... \n", - "13 [1, 2113, 4225, 6337, 8501, 10668, 12826, 1498... \n", - "14 [1, 3209, 6107, 9208, 12216, 15307, 18321, 213... \n", - "15 [1, 4388, 8974, 13560, 18149, 22733, 27313, 31... \n", - "16 [1, 382, 756, 1130, 1504, 1878, 2262, 2642, 30... \n", - "17 [1, 6477, 12961, 19452, 25946, 32441, 38936, 4... \n", - "18 [1, 1831, 4644, 7695, 10809, 13692, 16888, 197... \n", - "19 [1, 654, 967, 1276, 1588, 1914, 4771, 7753, 10... \n", - "20 [1, 1723, 3779, 6466, 9120, 11701, 14443, 1717... \n", - "21 [1, 1956, 3901, 5853, 7796, 9773, 11833, 13899... \n", - "22 [1, 2028, 4524, 7188, 10031, 12802, 15598, 183... \n", - "23 [1, 4389, 8986, 13579, 18170, 22741, 27311, 31... \n", - "24 [1, 394, 783, 1177, 1573, 1970, 2362, 2752, 31... \n", - "25 [1, 6486, 12978, 19475, 25973, 32473, 38972, 4... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [145.55826592445374, 2138.894546985626, 4133.0... \n", - "1 [145.96252608299255, 255.07068753242493, 364.4... \n", - "2 [94.90353989601137, 2661.42169547081, 5229.087... \n", - "3 [18.94313645362854, 1764.1741247177124, 3509.5... \n", - "4 [14.544916152954102, 465.7149586677551, 916.85... \n", - "5 [34.503788232803345, 1478.536323785782, 2922.8... \n", - "6 [54.089704275131226, 695.9262759685516, 1337.9... \n", - "7 [6.098940372467041, 362.3438584804535, 718.723... \n", - "8 [53.8807008266449, 2622.0064418315887, 5190.76... \n", - "9 [162.8230459690094, 2155.6817536354065, 4148.5... \n", - "10 [187.53205919265747, 296.4313855171204, 406.46... \n", - "11 [88.86981630325317, 2662.2931270599365, 5236.0... \n", - "12 [17.005546808242798, 1762.7828562259674, 3508.... \n", - "13 [6.708303213119507, 457.85532116889954, 909.04... \n", - "14 [39.70852279663086, 1484.1050803661346, 2928.9... \n", - "15 [58.43246555328369, 700.232017993927, 1342.203... \n", - "16 [6.935627937316895, 362.9498031139374, 719.467... \n", - "17 [41.42606282234192, 2609.49827337265, 5177.869... \n", - "18 [162.14458894729614, 2158.090327978134, 4151.4... \n", - "19 [146.65601301193237, 255.6350064277649, 365.17... \n", - "20 [17.390963792800903, 1762.5864510536194, 3508.... \n", - "21 [9.465001106262209, 460.63598465919495, 911.72... \n", - "22 [29.35258436203003, 1474.7683084011078, 2919.8... \n", - "23 [52.19884514808655, 694.1772229671478, 1336.11... \n", - "24 [4.689499139785767, 360.6912479400635, 716.459... \n", - "25 [40.73595309257507, 2609.0001788139343, 5177.8... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0006, 0.1991, 0.3832, 0.45, 0.4925, 0.5145,... ... \n", - "1 NaN ... \n", - "2 [0.0019, 0.1725, 0.2875, 0.3543, 0.4039, 0.437... ... \n", - "3 NaN ... \n", - "4 [0.5090411450432474, 0.983667989343342, 0.9843... ... \n", - "5 NaN ... \n", - "6 [0.0007183408643262, 0.6176456957478855, 0.664... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0012, 0.2961, 0.4226, 0.4762, 0.5035, 0.520... ... \n", - "10 NaN ... \n", - "11 [0.002, 0.0937, 0.2224, 0.3144, 0.3703, 0.405,... ... \n", - "12 NaN ... \n", - "13 [0.4962120095448347, 0.9837913848854358, 0.984... ... \n", - "14 NaN ... \n", - "15 [0.0007183408643262, 0.6183292781832928, 0.663... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.0009, 0.1755, 0.3885, 0.466, 0.511, 0.5337,... ... \n", - "19 NaN ... \n", - "20 NaN ... \n", - "21 [0.5332266712936485, 0.983707155846464, 0.9843... ... \n", - "22 NaN ... \n", - "23 [0.0007183408643262, 0.6207044374927586, 0.664... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [1.053145367643509, 0.7029981171245112, 0.5013... \n", - "4 NaN \n", - "5 [1.2424274610148216, 0.6870757495292811, 0.300... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.9206488678607636, 0.6727079611837976, 0.456... \n", - "13 NaN \n", - "14 [3.8984019697774346, 0.5887124028387969, 0.294... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [1.875797808139816, 0.6706995606623859, 0.4368... \n", - "21 NaN \n", - "22 [3.9378361415536136, 0.8254139912132478, 0.455... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0285243041517041, 0.1137622490271116, 0.167... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0287862891572014, 0.1250517388826788, 0.172... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0281322343950815, 0.1205822140332979, 0.173... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0256960702858887, 0.118437313605253, 0.1823... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0239173888396002, 0.1272893895702323, 0.201... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0214269779044028, 0.1207575478512613, 0.188... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.0276898548246173, 0.115050673413703, 0.1658... \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [0.0271704411799167, 0.1257482433444859, 0.171... \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0258981082843745, 0.1192643607230662, 0.168... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 23.67505993855702, 27.329239650889456, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 23.86868636064076, 27.25486369109001, 28... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 23.739233918672067, 27.21511668994115, 2... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 28.10511323899001, 31.886264878653023, 3... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 28.219594972970707, 31.61761329079054, 3... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 28.79396870386552, 31.82215738103054, 33... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/bleu \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 [0.0, 25.109248114112816, 27.91356231651028, 2... \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 [0.0, 24.944971668070828, 27.792643983819328, ... \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 [0.0, 24.99278448504232, 27.897490286134783, 2... \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [54003.45385027949, 36.45710903200461, 30.8870... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [55555.89769149712, 41.7789448887792, 33.53522... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [52602.99897662387, 41.00457724362877, 33.1240... \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 [53914.279919016335, 36.2771393256473, 30.6320... \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 [55541.71316424559, 41.61970338730468, 33.2918... \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 [52583.93273466763, 40.84033839084643, 32.8907... \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_pytorch\n", - " WORKLOAD: fastmri_pytorch\n", - " WORKLOAD: finewebedu_lm_pytorch\n", - " WORKLOAD: imagenet_resnet_pytorch\n", - " WORKLOAD: imagenet_vit_pytorch\n", - " WORKLOAD: librispeech_conformer_pytorch\n", - " WORKLOAD: librispeech_deepspeech_pytorch\n", - " WORKLOAD: ogbg_pytorch\n", - " WORKLOAD: wmt_pytorch\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
7criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236847836.1190347.480571e+030.90949010666
16criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236898195.6632357.483041e+030.90949010666
24criteo1tb_pytorchtrial_1validation/loss0.123735True0.1236986768.5130466.768513e+030.90949010666
1fastmri_pytorchtrial_1validation/ssim0.723653True0.7243821018.5896021.018590e+030.25319718094
10fastmri_pytorchtrial_1validation/ssim0.723653True0.7242271279.6873631.279687e+030.25319718094
19fastmri_pytorchtrial_1validation/ssim0.723653True0.7240951128.8378761.128838e+030.25319718094
8finewebedu_lm_pytorchtrial_1validation/ppl22.299500False22.90743046293.006929inf0.39557072000
17finewebedu_lm_pytorchtrial_1validation/ppl22.299500False23.14862346274.095018inf0.39557072000
25finewebedu_lm_pytorchtrial_1validation/ppl22.299500False23.12958843710.660111inf0.39557072000
0imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.67248055976.228313inf0.817306195999
9imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.67436073961.891255inf0.817306195999
18imagenet_resnet_pytorchtrial_1validation/accuracy0.774310False0.68412069928.902331inf0.817306195999
2imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.65356095099.525435inf0.883881167999
11imagenet_vit_pytorchtrial_1validation/accuracy0.773090False0.64404092544.239928inf0.883881167999
3librispeech_conformer_pytorchtrial_1validation/wer0.085884False0.08943264575.976842inf0.66248276000
12librispeech_conformer_pytorchtrial_1validation/wer0.085884True0.08549255846.4408155.584644e+040.66248276000
20librispeech_conformer_pytorchtrial_1validation/wer0.085884True0.08550254098.9068205.409891e+040.66248276000
5librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11931636138.4303673.613843e+040.52422038400
14librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11963543377.4312474.337743e+040.52422038400
22librispeech_deepspeech_pytorchtrial_1validation/wer0.119936True0.11975141911.1755484.191118e+040.52422038400
4ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2844006330.9162966.330916e+030.21809152000
13ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2829465872.0419525.872042e+030.21809152000
21ogbg_pytorchtrial_1validation/mean_average_precision0.280980True0.2842696325.4306626.325431e+030.21809152000
6wmt_pytorchtrial_1validation/bleu30.849100True30.96826210325.4570551.032546e+040.140112120000
15wmt_pytorchtrial_1validation/bleu30.849100True30.90527111614.2507591.161425e+040.140112120000
23wmt_pytorchtrial_1validation/bleu30.849100True30.9647718397.6197317.755601e+030.140112120000
\n", - "
" - ], - "text/plain": [ - " workload trial \\\n", - "7 criteo1tb_pytorch trial_1 \n", - "16 criteo1tb_pytorch trial_1 \n", - "24 criteo1tb_pytorch trial_1 \n", - "1 fastmri_pytorch trial_1 \n", - "10 fastmri_pytorch trial_1 \n", - "19 fastmri_pytorch trial_1 \n", - "8 finewebedu_lm_pytorch trial_1 \n", - "17 finewebedu_lm_pytorch trial_1 \n", - "25 finewebedu_lm_pytorch trial_1 \n", - "0 imagenet_resnet_pytorch trial_1 \n", - "9 imagenet_resnet_pytorch trial_1 \n", - "18 imagenet_resnet_pytorch trial_1 \n", - "2 imagenet_vit_pytorch trial_1 \n", - "11 imagenet_vit_pytorch trial_1 \n", - "3 librispeech_conformer_pytorch trial_1 \n", - "12 librispeech_conformer_pytorch trial_1 \n", - "20 librispeech_conformer_pytorch trial_1 \n", - "5 librispeech_deepspeech_pytorch trial_1 \n", - "14 librispeech_deepspeech_pytorch trial_1 \n", - "22 librispeech_deepspeech_pytorch trial_1 \n", - "4 ogbg_pytorch trial_1 \n", - "13 ogbg_pytorch trial_1 \n", - "21 ogbg_pytorch trial_1 \n", - "6 wmt_pytorch trial_1 \n", - "15 wmt_pytorch trial_1 \n", - "23 wmt_pytorch trial_1 \n", - "\n", - " val target metric name val target metric value \\\n", - "7 validation/loss 0.123735 \n", - "16 validation/loss 0.123735 \n", - "24 validation/loss 0.123735 \n", - "1 validation/ssim 0.723653 \n", - "10 validation/ssim 0.723653 \n", - "19 validation/ssim 0.723653 \n", - "8 validation/ppl 22.299500 \n", - "17 validation/ppl 22.299500 \n", - "25 validation/ppl 22.299500 \n", - "0 validation/accuracy 0.774310 \n", - "9 validation/accuracy 0.774310 \n", - "18 validation/accuracy 0.774310 \n", - "2 validation/accuracy 0.773090 \n", - "11 validation/accuracy 0.773090 \n", - "3 validation/wer 0.085884 \n", - "12 validation/wer 0.085884 \n", - "20 validation/wer 0.085884 \n", - "5 validation/wer 0.119936 \n", - "14 validation/wer 0.119936 \n", - "22 validation/wer 0.119936 \n", - "4 validation/mean_average_precision 0.280980 \n", - "13 validation/mean_average_precision 0.280980 \n", - "21 validation/mean_average_precision 0.280980 \n", - "6 validation/bleu 30.849100 \n", - "15 validation/bleu 30.849100 \n", - "23 validation/bleu 30.849100 \n", - "\n", - " val target reached best metric value on val \\\n", - "7 True 0.123684 \n", - "16 True 0.123689 \n", - "24 True 0.123698 \n", - "1 True 0.724382 \n", - "10 True 0.724227 \n", - "19 True 0.724095 \n", - "8 False 22.907430 \n", - "17 False 23.148623 \n", - "25 False 23.129588 \n", - "0 False 0.672480 \n", - "9 False 0.674360 \n", - "18 False 0.684120 \n", - "2 False 0.653560 \n", - "11 False 0.644040 \n", - "3 False 0.089432 \n", - "12 True 0.085492 \n", - "20 True 0.085502 \n", - "5 True 0.119316 \n", - "14 True 0.119635 \n", - "22 True 0.119751 \n", - "4 True 0.284400 \n", - "13 True 0.282946 \n", - "21 True 0.284269 \n", - "6 True 30.968262 \n", - "15 True 30.905271 \n", - "23 True 30.964771 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "7 7836.119034 7.480571e+03 0.909490 \n", - "16 8195.663235 7.483041e+03 0.909490 \n", - "24 6768.513046 6.768513e+03 0.909490 \n", - "1 1018.589602 1.018590e+03 0.253197 \n", - "10 1279.687363 1.279687e+03 0.253197 \n", - "19 1128.837876 1.128838e+03 0.253197 \n", - "8 46293.006929 inf 0.395570 \n", - "17 46274.095018 inf 0.395570 \n", - "25 43710.660111 inf 0.395570 \n", - "0 55976.228313 inf 0.817306 \n", - "9 73961.891255 inf 0.817306 \n", - "18 69928.902331 inf 0.817306 \n", - "2 95099.525435 inf 0.883881 \n", - "11 92544.239928 inf 0.883881 \n", - "3 64575.976842 inf 0.662482 \n", - "12 55846.440815 5.584644e+04 0.662482 \n", - "20 54098.906820 5.409891e+04 0.662482 \n", - "5 36138.430367 3.613843e+04 0.524220 \n", - "14 43377.431247 4.337743e+04 0.524220 \n", - "22 41911.175548 4.191118e+04 0.524220 \n", - "4 6330.916296 6.330916e+03 0.218091 \n", - "13 5872.041952 5.872042e+03 0.218091 \n", - "21 6325.430662 6.325431e+03 0.218091 \n", - "6 10325.457055 1.032546e+04 0.140112 \n", - "15 11614.250759 1.161425e+04 0.140112 \n", - "23 8397.619731 7.755601e+03 0.140112 \n", - "\n", - " step_hint \n", - "7 10666 \n", - "16 10666 \n", - "24 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "8 72000 \n", - "17 72000 \n", - "25 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "2 167999 \n", - "11 167999 \n", - "3 76000 \n", - "12 76000 \n", - "20 76000 \n", - "5 38400 \n", - "14 38400 \n", - "22 38400 \n", - "4 52000 \n", - "13 52000 \n", - "21 52000 \n", - "6 120000 \n", - "15 120000 \n", - "23 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== DiLoCo (Single Worker) (single_worker_diloco) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 wmt_jax \n", - "20 ogbg_jax \n", - "21 librispeech_conformer_jax \n", - "22 librispeech_deepspeech_jax \n", - "23 imagenet_vit_jax \n", - "24 finewebedu_lm_jax \n", - "25 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "1 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "2 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "3 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "4 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "5 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "6 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "7 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "8 (trial_1, logs/self_tuning/single_worker_diloco) study_2 \n", - "9 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "10 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "11 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "12 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "13 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "14 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "15 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "16 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "17 (trial_1, logs/self_tuning/single_worker_diloco) study_1 \n", - "18 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "19 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "20 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "21 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "22 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "23 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "24 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "25 (trial_1, logs/self_tuning/single_worker_diloco) study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [54.93394470214844, 77.65910649299622, 101.350... \n", - "1 [488.04167652130127, 494.37904047966, 504.3951... \n", - "2 [923.5906100273132, 1486.2823479175568, 2045.4... \n", - "3 [245.27266764640808, 357.203111410141, 464.550... \n", - "4 [269.6399447917938, 352.97594594955444, 438.19... \n", - "5 [265.1276106834412, 395.9384162425995, 505.397... \n", - "6 [72.47451758384705, 97.15354514122008, 120.968... \n", - "7 [337.83612847328186, 671.4962995052338, 1004.8... \n", - "8 [2433.226147174835, 3746.494707107544, 5046.53... \n", - "9 [77.40477871894836, 106.90606665611269, 147.81... \n", - "10 [997.3023977279664, 1000.8910071849824, 1004.4... \n", - "11 [923.016721725464, 1472.3084964752195, 1997.63... \n", - "12 [256.8354649543762, 372.5580561161041, 486.347... \n", - "13 [224.8493490219116, 343.9610321521759, 462.755... \n", - "14 [240.16997742652893, 373.14461040496826, 473.3... \n", - "15 [119.4431505203247, 301.4704976081848, 496.367... \n", - "16 [336.5430357456207, 668.9646303653717, 1001.20... \n", - "17 [2554.917941570282, 3910.4106504917145, 5197.6... \n", - "18 [53.0907781124115, 76.29391121864319, 100.5034... \n", - "19 [923.0034399032592, 1453.6598098278046, 1973.5... \n", - "20 [250.2954442501068, 363.5142397880554, 475.330... \n", - "21 [206.0729546546936, 296.4235508441925, 387.905... \n", - "22 [246.5164430141449, 353.7335891723633, 458.653... \n", - "23 [62.19135785102844, 86.0208649635315, 110.7701... \n", - "24 [335.931485414505, 668.4215061664581, 1000.601... \n", - "25 [947.042496919632, 1810.6609337329865, 2656.97... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.364088773727417, 0.4894285202026367, 0... \n", - "1 [0.0, 0.4791250228881836, 0.5800347328186035, ... \n", - "2 [0.0, 0.0687258243560791, 0.1189558506011962, ... \n", - "3 [0.0, 0.5725998878479004, 0.6235589981079102, ... \n", - "4 [0.0, 0.1083638668060302, 0.1676850318908691, ... \n", - "5 [0.0, 0.0920515060424804, 0.2624502182006836, ... \n", - "6 [0.0, 0.0717225074768066, 0.1830096244812011, ... \n", - "7 [0.0, 0.4595606327056885, 0.5113751888275146, ... \n", - "8 [0.0, 0.0568771362304687, 0.1014730930328369, ... \n", - "9 [0.0, 0.4633722305297851, 0.5256507396697998, ... \n", - "10 [0.0, 0.0701143741607666, 0.1177473068237304, ... \n", - "11 [0.0, 0.351701021194458, 0.4035556316375732, 0... \n", - "12 [0.0, 0.3668982982635498, 0.4231963157653808, ... \n", - "13 [0.0, 0.4087870121002197, 0.4757328033447265, ... \n", - "14 [0.0, 0.0898795127868652, 0.1571307182312011, ... \n", - "15 [0.0, 0.3030455112457275, 0.4322013854980469, ... \n", - "16 [0.0, 0.1699869632720947, 0.2150421142578125, ... \n", - "17 [0.0, 0.4298927783966064, 0.4766197204589844, ... \n", - "18 [0.0, 0.1289854049682617, 0.1785833835601806, ... \n", - "19 [0.0, 0.4406452178955078, 0.4953742027282715, ... \n", - "20 [0.0, 0.288888931274414, 0.3394525051116943, 0... \n", - "21 [0.0, 0.0895514488220214, 0.1525795459747314, ... \n", - "22 [0.0, 0.0936219692230224, 0.1596615314483642, ... \n", - "23 [0.0, 0.0656430721282959, 0.1698439121246338, ... \n", - "24 [0.0, 0.0699305534362793, 0.117136001586914, 0... \n", - "25 [0.0, 0.3879146575927734, 0.4399378299713135, ... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [56.26010727882385, 2052.1432723999023, 4048.2... \n", - "1 [169.82940220832825, 280.85251116752625, 390.9... \n", - "2 [56.91378450393677, 701.2662165164948, 1345.56... \n", - "3 [20.07199788093567, 471.6521027088165, 923.638... \n", - "4 [184.6883807182312, 1939.4339129924767, 3695.5... \n", - "5 [132.95004320144653, 1580.1831188201904, 3031.... \n", - "6 [49.60117316246033, 2621.1932892799377, 5192.5... \n", - "7 [23.897384881973267, 2594.808893918991, 5166.7... \n", - "8 [10.494952917099, 368.0562832355499, 725.30107... \n", - "9 [58.44966769218445, 2054.207333803177, 4050.45... \n", - "10 [276.87992691993713, 387.42562079429626, 497.9... \n", - "11 [56.55395293235779, 700.5711402893066, 1344.91... \n", - "12 [22.014230966568, 473.7200002670288, 925.83500... \n", - "13 [192.77552723884585, 1951.3585050106049, 3698.... \n", - "14 [141.3566656112671, 1591.755771636963, 3050.36... \n", - "15 [66.12649583816528, 2637.2447090148926, 5208.6... \n", - "16 [21.83658623695373, 2593.6851353645325, 5165.7... \n", - "17 [15.059802770614624, 378.0891873836517, 736.25... \n", - "18 [45.628106117248535, 2041.7665169239044, 4038.... \n", - "19 [59.6278817653656, 703.6324298381805, 1348.012... \n", - "20 [21.56647562980652, 473.44666147232056, 925.54... \n", - "21 [182.16398119926453, 1929.362173318863, 3676.3... \n", - "22 [133.79193377494812, 1585.8211448192596, 3033.... \n", - "23 [47.870569944381714, 2619.370136976242, 5190.6... \n", - "24 [20.48937511444092, 2592.545851945877, 5164.60... \n", - "25 [10.436060428619385, 367.1423001289368, 724.46... \n", - "\n", - " global_step \\\n", - "0 [1, 7668, 15507, 23353, 31201, 39052, 46902, 5... \n", - "1 [1, 273, 380, 482, 591, 692, 796, 898, 1341, 2... \n", - "2 [1, 4137, 8672, 13207, 17749, 22300, 26850, 31... \n", - "3 [1, 2121, 4394, 6686, 8977, 11312, 13638, 1596... \n", - "4 [1, 399, 807, 1323, 1787, 2346, 2895, 3565, 40... \n", - "5 [1, 462, 895, 1443, 1852, 2390, 2880, 3469, 39... \n", - "6 [1, 5432, 11017, 16586, 22145, 27690, 33212, 3... \n", - "7 [1, 5500, 11060, 16621, 22184, 27748, 33313, 3... \n", - "8 [1, 171, 341, 510, 707, 875, 1072, 1246, 1445,... \n", - "9 [1, 5520, 13363, 21207, 29050, 36899, 44742, 5... \n", - "10 [1, 255, 306, 357, 406, 458, 510, 565, 617, 67... \n", - "11 [1, 4168, 8743, 13307, 17881, 22450, 27028, 31... \n", - "12 [1, 2133, 4335, 6566, 8812, 11053, 13331, 1558... \n", - "13 [1, 483, 983, 1595, 2039, 2698, 3190, 3841, 44... \n", - "14 [1, 459, 887, 1436, 1900, 2505, 2973, 3669, 40... \n", - "15 [1, 3979, 8375, 13698, 18990, 24322, 29663, 35... \n", - "16 [1, 5531, 11115, 16703, 22296, 27886, 33474, 3... \n", - "17 [1, 150, 308, 467, 654, 829, 998, 1143, 1295, ... \n", - "18 [1, 7387, 15220, 23060, 30903, 38747, 46587, 5... \n", - "19 [1, 4157, 8735, 13307, 17889, 22463, 27047, 31... \n", - "20 [1, 2147, 4395, 6760, 9104, 11435, 13751, 1607... \n", - "21 [1, 750, 1450, 1987, 2734, 3372, 3967, 4705, 5... \n", - "22 [1, 640, 1126, 1672, 2099, 2702, 3091, 3762, 4... \n", - "23 [1, 5521, 11204, 16882, 22540, 28189, 33836, 3... \n", - "24 [1, 5518, 11086, 16650, 22221, 27793, 33361, 3... \n", - "25 [1, 388, 778, 1169, 1559, 1933, 2344, 2760, 31... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [56.26010727882385, 2052.1432723999023, 4048.2... \n", - "1 [169.82940220832825, 280.85251116752625, 390.9... \n", - "2 [56.91378450393677, 701.2662165164948, 1345.56... \n", - "3 [20.07199788093567, 471.6521027088165, 923.638... \n", - "4 [184.6883807182312, 1939.4339129924767, 3695.5... \n", - "5 [132.95004320144653, 1580.1831188201904, 3031.... \n", - "6 [49.60117316246033, 2621.1932892799377, 5192.5... \n", - "7 [23.897384881973267, 2594.808893918991, 5166.7... \n", - "8 [10.494952917099, 368.0562832355499, 725.30107... \n", - "9 [58.44966769218445, 2054.207333803177, 4050.45... \n", - "10 [276.87992691993713, 387.42562079429626, 497.9... \n", - "11 [56.55395293235779, 700.5711402893066, 1344.91... \n", - "12 [22.014230966568, 473.7200002670288, 925.83500... \n", - "13 [192.77552723884585, 1951.3585050106049, 3698.... \n", - "14 [141.3566656112671, 1591.755771636963, 3050.36... \n", - "15 [66.12649583816528, 2637.2447090148926, 5208.6... \n", - "16 [21.83658623695373, 2593.6851353645325, 5165.7... \n", - "17 [15.059802770614624, 378.0891873836517, 736.25... \n", - "18 [45.628106117248535, 2041.7665169239044, 4038.... \n", - "19 [59.6278817653656, 703.6324298381805, 1348.012... \n", - "20 [21.56647562980652, 473.44666147232056, 925.54... \n", - "21 [182.16398119926453, 1929.362173318863, 3676.3... \n", - "22 [133.79193377494812, 1585.8211448192596, 3033.... \n", - "23 [47.870569944381714, 2619.370136976242, 5190.6... \n", - "24 [20.48937511444092, 2592.545851945877, 5164.60... \n", - "25 [10.436060428619385, 367.1423001289368, 724.46... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0005, 0.40390003, 0.45690003, 0.46370003, 0... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.5827087759971619, 0.634... ... \n", - "3 [0.5712358355522156, 0.9831680655479432, 0.984... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.1106, 0.22340001, 0.2754, 0.3291, 0.... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.001, 0.36740002, 0.4514, 0.4821, 0.4663, 0.... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.5804659724235535, 0.632... ... \n", - "12 [0.5311293601989746, 0.9834051728248596, 0.984... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.0948, 0.20170002, 0.2675, 0.30600002... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.001, 0.34870002, 0.43370003, 0.4656, 0.4691... ... \n", - "19 [0.0007088489946909, 0.5843240022659302, 0.632... ... \n", - "20 [0.4223818778991699, 0.9834001064300536, 0.984... ... \n", - "21 NaN ... \n", - "22 NaN ... \n", - "23 [0.001, 0.104600005, 0.22110002, 0.2764, 0.319... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0281086044240346, 0.0760312814730795, 0.150... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0256289938034138, 0.0837449784418454, 0.163... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 [0.0244166748859538, 0.0846153862361216, 0.154... \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.49836, 1.5693011, 1.4578109, 1.4745129, 1.5... \n", - "5 [7.866069, 1.439223, 2.3455865, 3.3769433, 3.6... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.704191, 1.5388334, 1.533351, 2.001911, 1.73... \n", - "14 [7.8493266, 1.5207433, 2.9322114, 3.611226, 3.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [7.599224, 1.5329341, 1.5396421, 2.1677024, 1.... \n", - "22 [7.8128476, 1.5743126, 2.966502, 3.6380544, 3.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.957000385920013, 0.899579550301627, 0.89957... \n", - "5 [3.4800235614323727, 0.8920642658379542, 0.899... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0758637499238315, 0.899579550301627, 0.8995... \n", - "14 [2.844535169500132, 0.8427680620721874, 0.8995... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.7277029634594685, 0.899579550301627, 0.8995... \n", - "22 [4.153271179899661, 0.899579550301627, 0.89957... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.5945024, 1.5498501, 1.4638834, 1.5136615, 1... \n", - "5 [8.115769, 1.4617958, 2.3639185, 3.4144714, 3.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.8811975, 1.5138025, 1.5073831, 2.0152452, 1... \n", - "14 [8.117988, 1.5539541, 2.9378726, 3.6487691, 3.... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [7.7964563, 1.5108746, 1.511539, 2.135476, 1.5... \n", - "22 [8.063176, 1.5744107, 2.9992657, 3.6825545, 3.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.949138954251088, 0.944635537887994, 0.94272... \n", - "5 [3.6068290194281913, 0.9356243949661182, 0.942... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.2129968973200342, 0.944635537887994, 0.9427... \n", - "14 [2.8499000478937178, 0.8739315359106918, 0.942... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.914062011952606, 0.944635537887994, 0.94272... \n", - "22 [4.336760510588676, 0.944635537887994, 0.94272... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.4885645, 1.5872782, 1.4632089, 1.4703661, 1... \n", - "5 [7.8678637, 1.434491, 2.3578951, 3.386508, 3.6... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.6687646, 1.5452462, 1.538966, 1.9933962, 1.... \n", - "14 [7.822478, 1.5180161, 2.9425602, 3.6166, 3.605... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [7.5792956, 1.5383534, 1.544482, 2.1513786, 1.... \n", - "22 [7.809781, 1.5809687, 2.9607267, 3.6274774, 3.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9571766523439386, 0.8967218654950997, 0.896... \n", - "5 [3.394138946555304, 0.8912856660068555, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.0471877564814367, 0.8967218654950997, 0.896... \n", - "14 [2.873837686477092, 0.8470622314488485, 0.8967... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [1.6671172693477527, 0.8967218654950997, 0.896... \n", - "22 [3.935035967749722, 0.8967218654950997, 0.8967... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "25 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62718.06722126679, 39.17421766972369, 34.4877... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62175.65310309591, 38.40545697641737, 37.9822... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [60631.64851860736, 39.25752428722655, 34.4034... \n", - "25 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [62732.12475977242, 39.33720949623695, 34.5638... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [62186.62370567977, 38.56233562607169, 38.1047... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [60615.80712863738, 39.4020886639981, 34.46599... \n", - "25 NaN \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735False0.12400512536.648544inf2.02925410666
17criteo1tb_jaxtrial_1validation/loss0.123735False0.12417713238.606914inf2.02925410666
25criteo1tb_jaxtrial_1validation/loss0.123735True0.1236798951.6992518.951699e+032.02925410666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7243451824.3617331.824362e+031.01013918094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7240332934.3234002.934323e+031.01013918094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.29992728315.8042412.831580e+040.46192972000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.32335128314.8191892.831482e+040.46192972000
24finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.30258928313.5053452.831351e+040.46192972000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.75864059924.762427inf0.254795195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.76084073905.253106inf0.254795195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.76208057916.220698inf0.254795195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.73200087449.532381inf0.498083167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.69314092609.954645inf0.498083167999
23imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.73982082302.748962inf0.498083167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.89619115938.478786inf2.73908676000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.17825563227.458880inf2.73908676000
21librispeech_conformer_jaxtrial_1validation/wer0.085884False0.18830764987.826900inf2.73908676000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.15569953798.129664inf2.64880938400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16081755242.171370inf2.64880938400
22librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16025755258.443447inf2.64880938400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2752504991.950768inf0.19546052000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2770215446.170158inf0.19546052000
20ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2721274542.065599inf0.19546052000
2wmt_jaxtrial_1validation/bleu30.849100False30.06096215523.899387inf0.140842120000
11wmt_jaxtrial_1validation/bleu30.849100False29.21444117454.147111inf0.140842120000
19wmt_jaxtrial_1validation/bleu30.849100False30.16493216168.221429inf0.140842120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "25 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "24 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "23 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "21 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "22 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "20 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "19 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 False 0.124005 \n", - "17 0.123735 False 0.124177 \n", - "25 0.123735 True 0.123679 \n", - "1 0.723653 True 0.724345 \n", - "10 0.723653 True 0.724033 \n", - "7 22.299500 True 21.299927 \n", - "16 22.299500 True 21.323351 \n", - "24 22.299500 True 21.302589 \n", - "0 0.774310 False 0.758640 \n", - "9 0.774310 False 0.760840 \n", - "18 0.774310 False 0.762080 \n", - "6 0.773090 False 0.732000 \n", - "15 0.773090 False 0.693140 \n", - "23 0.773090 False 0.739820 \n", - "4 0.085884 False 0.896191 \n", - "13 0.085884 False 0.178255 \n", - "21 0.085884 False 0.188307 \n", - "5 0.119936 False 0.155699 \n", - "14 0.119936 False 0.160817 \n", - "22 0.119936 False 0.160257 \n", - "3 0.280980 False 0.275250 \n", - "12 0.280980 False 0.277021 \n", - "20 0.280980 False 0.272127 \n", - "2 30.849100 False 30.060962 \n", - "11 30.849100 False 29.214441 \n", - "19 30.849100 False 30.164932 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 12536.648544 inf 2.029254 \n", - "17 13238.606914 inf 2.029254 \n", - "25 8951.699251 8.951699e+03 2.029254 \n", - "1 1824.361733 1.824362e+03 1.010139 \n", - "10 2934.323400 2.934323e+03 1.010139 \n", - "7 28315.804241 2.831580e+04 0.461929 \n", - "16 28314.819189 2.831482e+04 0.461929 \n", - "24 28313.505345 2.831351e+04 0.461929 \n", - "0 59924.762427 inf 0.254795 \n", - "9 73905.253106 inf 0.254795 \n", - "18 57916.220698 inf 0.254795 \n", - "6 87449.532381 inf 0.498083 \n", - "15 92609.954645 inf 0.498083 \n", - "23 82302.748962 inf 0.498083 \n", - "4 15938.478786 inf 2.739086 \n", - "13 63227.458880 inf 2.739086 \n", - "21 64987.826900 inf 2.739086 \n", - "5 53798.129664 inf 2.648809 \n", - "14 55242.171370 inf 2.648809 \n", - "22 55258.443447 inf 2.648809 \n", - "3 4991.950768 inf 0.195460 \n", - "12 5446.170158 inf 0.195460 \n", - "20 4542.065599 inf 0.195460 \n", - "2 15523.899387 inf 0.140842 \n", - "11 17454.147111 inf 0.140842 \n", - "19 16168.221429 inf 0.140842 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "25 10666 \n", - "1 18094 \n", - "10 18094 \n", - "7 72000 \n", - "16 72000 \n", - "24 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "23 167999 \n", - "4 76000 \n", - "13 76000 \n", - "21 76000 \n", - "5 38400 \n", - "14 38400 \n", - "22 38400 \n", - "3 52000 \n", - "12 52000 \n", - "20 52000 \n", - "2 120000 \n", - "11 120000 \n", - "19 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "=== DiLoCo v2 (Single Worker) (single_worker_dilocov2) ===\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - "['imagenet_resnet_jax', 'fastmri_jax', 'wmt_jax', 'ogbg_jax', 'librispeech_conformer_jax', 'librispeech_deepspeech_jax', 'imagenet_vit_jax', 'finewebedu_lm_jax', 'criteo1tb_jax']\n", - " workload \\\n", - "0 imagenet_resnet_jax \n", - "1 fastmri_jax \n", - "2 wmt_jax \n", - "3 ogbg_jax \n", - "4 librispeech_conformer_jax \n", - "5 librispeech_deepspeech_jax \n", - "6 imagenet_vit_jax \n", - "7 finewebedu_lm_jax \n", - "8 criteo1tb_jax \n", - "9 imagenet_resnet_jax \n", - "10 fastmri_jax \n", - "11 wmt_jax \n", - "12 ogbg_jax \n", - "13 librispeech_conformer_jax \n", - "14 librispeech_deepspeech_jax \n", - "15 imagenet_vit_jax \n", - "16 finewebedu_lm_jax \n", - "17 criteo1tb_jax \n", - "18 imagenet_resnet_jax \n", - "19 fastmri_jax \n", - "20 wmt_jax \n", - "21 ogbg_jax \n", - "22 librispeech_deepspeech_jax \n", - "23 imagenet_vit_jax \n", - "24 finewebedu_lm_jax \n", - "25 criteo1tb_jax \n", - "\n", - " trial study \\\n", - "0 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "1 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "2 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "3 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "4 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "5 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "6 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "7 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "8 (trial_1, logs/self_tuning/single_worker_diloc... study_2 \n", - "9 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "10 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "11 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "12 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "13 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "14 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "15 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "16 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "17 (trial_1, logs/self_tuning/single_worker_diloc... study_1 \n", - "18 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "19 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "20 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "21 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "22 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "23 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "24 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "25 (trial_1, logs/self_tuning/single_worker_diloc... study_0 \n", - "\n", - " accumulated_eval_time \\\n", - "0 [80.47464275360107, 122.6698670387268, 152.225... \n", - "1 [799.7285838127136, 803.3222856521606, 806.849... \n", - "2 [926.7753138542176, 1790.791965007782, 2337.51... \n", - "3 [252.4080445766449, 366.20419454574585, 480.06... \n", - "4 [185.5909707546234, 276.1213903427124, 404.317... \n", - "5 [300.44232654571533, 409.3896160125733, 509.11... \n", - "6 [69.39710760116577, 93.04616236686708, 147.867... \n", - "7 [347.7568938732147, 692.1363089084625, 1036.28... \n", - "8 [2135.4776134490967, 3383.0855734348297, 4592.... \n", - "9 [65.62747931480408, 88.31560039520264, 112.218... \n", - "10 [829.4049801826477, 833.0718367099762, 836.686... \n", - "11 [934.611057281494, 1693.333464860916, 2243.752... \n", - "12 [243.44965720176697, 353.9625146389008, 461.95... \n", - "13 [261.93196749687195, 393.7517874240875, 520.39... \n", - "14 [246.9361436367035, 350.5411994457245, 453.810... \n", - "15 [88.79012846946716, 112.59346508979796, 137.06... \n", - "16 [335.45933532714844, 667.3529777526855, 999.99... \n", - "17 [2215.190994501114, 3422.7398810386658, 4629.3... \n", - "18 [92.15677738189696, 126.89766263961792, 174.48... \n", - "19 [790.4747951030731, 794.366536617279, 797.9666... \n", - "20 [923.3191974163057, 1677.8003385066986, 2210.5... \n", - "21 [231.4763276576996, 336.0118579864502, 437.262... \n", - "22 [292.74510741233826, 392.8842489719391, 495.87... \n", - "23 [71.21652340888977, 95.21234583854675, 119.905... \n", - "24 [347.69923877716064, 692.395316362381, 1036.66... \n", - "25 [1292.4564418792725, 2514.51624751091, 3676.47... \n", - "\n", - " accumulated_logging_time \\\n", - "0 [0.0, 0.3285839557647705, 0.3921957015991211, ... \n", - "1 [0.0, 0.3797206878662109, 0.4209856986999511, ... \n", - "2 [0.0, 0.3940949440002441, 0.4312126636505127, ... \n", - "3 [0.0, 0.431227445602417, 0.4683587551116943, 0... \n", - "4 [0.0, 0.3614022731781006, 0.413492202758789, 0... \n", - "5 [0.0, 0.3889837265014648, 0.4353790283203125, ... \n", - "6 [0.0, 0.0611801147460937, 0.1742575168609619, ... \n", - "7 [0.0, 0.1662302017211914, 0.197615385055542, 0... \n", - "8 [0.0, 0.0529079437255859, 0.0886600017547607, ... \n", - "9 [0.0, 0.0537352561950683, 0.1716251373291015, ... \n", - "10 [0.0, 0.0526926517486572, 0.0831003189086914, ... \n", - "11 [0.0, 0.0599377155303955, 0.0976490974426269, ... \n", - "12 [0.0, 0.0687026977539062, 0.1071565151214599, ... \n", - "13 [0.0, 0.1269705295562744, 0.1667487621307373, ... \n", - "14 [0.0, 0.07916259765625, 0.1269495487213134, 0.... \n", - "15 [0.0, 0.5260531902313232, 0.6469161510467529, ... \n", - "16 [0.0, 0.1834690570831298, 0.2182302474975586, ... \n", - "17 [0.0, 0.2906394004821777, 0.3242685794830322, ... \n", - "18 [0.0, 0.1361677646636963, 0.8077182769775391, ... \n", - "19 [0.0, 0.3696622848510742, 0.4037783145904541, ... \n", - "20 [0.0, 0.3165249824523926, 0.3549463748931885, ... \n", - "21 [0.0, 0.1860105991363525, 0.2200644016265869, ... \n", - "22 [0.0, 0.0838289260864257, 0.1310744285583496, ... \n", - "23 [0.0, 0.0535049438476562, 0.1721456050872802, ... \n", - "24 [0.0, 0.2111172676086425, 0.2429029941558838, ... \n", - "25 [0.0, 0.0504634380340576, 0.083202838897705, 0... \n", - "\n", - " accumulated_submission_time \\\n", - "0 [61.25292730331421, 2057.2855401039124, 4053.5... \n", - "1 [247.96657514572144, 358.09745836257935, 469.2... \n", - "2 [60.17778515815735, 704.1820552349091, 1348.50... \n", - "3 [21.011845111846924, 472.7813169956207, 924.93... \n", - "4 [179.8093180656433, 1931.1715903282168, 3681.2... \n", - "5 [149.95571851730347, 1607.0826470851898, 3055.... \n", - "6 [46.73759913444519, 2618.0756616592407, 5189.3... \n", - "7 [21.47393274307251, 2593.709819793701, 5165.73... \n", - "8 [9.619165897369385, 367.18895173072815, 724.11... \n", - "9 [48.448254346847534, 2044.7006561756127, 4040.... \n", - "10 [252.1949598789215, 364.0293734073639, 476.044... \n", - "11 [57.16991138458252, 701.5083611011505, 1345.91... \n", - "12 [18.40320611000061, 470.4710736274719, 922.553... \n", - "13 [180.6115384101868, 1936.8847064971924, 3697.6... \n", - "14 [133.51365399360657, 1581.924886226654, 3031.2... \n", - "15 [52.0203263759613, 2623.021533727646, 5194.577... \n", - "16 [19.84875869750977, 2591.7337641716003, 5164.0... \n", - "17 [12.925746440887451, 369.7731881141663, 726.35... \n", - "18 [53.25284075737, 2049.324117898941, 4044.77459... \n", - "19 [243.82849168777463, 353.62104654312134, 464.3... \n", - "20 [58.92920994758606, 702.9748380184174, 1347.35... \n", - "21 [18.05807399749756, 470.02969241142273, 922.06... \n", - "22 [147.27141690254211, 1606.2805190086365, 3053.... \n", - "23 [55.70216536521912, 2627.222187280655, 5198.67... \n", - "24 [21.38729691505432, 2593.30307674408, 5165.587... \n", - "25 [9.436538696289062, 367.4553608894348, 742.407... \n", - "\n", - " global_step \\\n", - "0 [1, 5793, 13578, 21356, 29138, 36905, 44679, 5... \n", - "1 [1, 261, 317, 379, 439, 497, 560, 617, 677, 73... \n", - "2 [1, 4328, 9090, 13860, 18627, 23399, 28167, 32... \n", - "3 [1, 2091, 4272, 6483, 8704, 10915, 13116, 1532... \n", - "4 [1, 816, 1623, 2334, 2984, 3751, 4422, 5060, 5... \n", - "5 [1, 391, 755, 1191, 1680, 2100, 2707, 3143, 37... \n", - "6 [1, 5512, 11219, 16891, 22570, 28225, 33856, 3... \n", - "7 [1, 5356, 10768, 16186, 21600, 27019, 32437, 3... \n", - "8 [1, 195, 389, 589, 791, 981, 1197, 1337, 1529,... \n", - "9 [1, 6574, 14471, 22370, 30271, 38175, 46080, 5... \n", - "10 [1, 265, 323, 386, 446, 504, 563, 624, 682, 73... \n", - "11 [1, 4146, 8700, 13266, 17826, 22387, 26951, 31... \n", - "12 [1, 2130, 4356, 6625, 8885, 11223, 13544, 1584... \n", - "13 [1, 503, 987, 1628, 2165, 2851, 3564, 4084, 48... \n", - "14 [1, 652, 1173, 1747, 2279, 2825, 3386, 3919, 4... \n", - "15 [1, 5351, 10912, 16465, 22027, 27549, 33061, 3... \n", - "16 [1, 5620, 11285, 16950, 22619, 28288, 33964, 3... \n", - "17 [1, 189, 405, 592, 779, 962, 1125, 1344, 1520,... \n", - "18 [1, 5475, 13301, 21175, 29074, 36961, 44803, 5... \n", - "19 [1, 261, 323, 390, 457, 519, 583, 651, 712, 77... \n", - "20 [1, 4324, 9070, 13815, 18567, 23317, 28065, 32... \n", - "21 [1, 2229, 4584, 7021, 9465, 11894, 14312, 1672... \n", - "22 [1, 379, 755, 1211, 1716, 2133, 2737, 3209, 38... \n", - "23 [1, 5328, 11024, 16710, 22383, 28058, 33729, 3... \n", - "24 [1, 5350, 10750, 16150, 21552, 26956, 32361, 3... \n", - "25 [1, 189, 375, 566, 750, 926, 1125, 1385, 1575,... \n", - "\n", - " preemption_count \\\n", - "0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "5 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "6 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "7 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "9 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "12 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "13 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "14 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "15 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "16 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "17 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "19 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "20 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "21 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "22 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "23 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "24 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", - "25 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n", - "\n", - " score \\\n", - "0 [61.25292730331421, 2057.2855401039124, 4053.5... \n", - "1 [247.96657514572144, 358.09745836257935, 469.2... \n", - "2 [60.17778515815735, 704.1820552349091, 1348.50... \n", - "3 [21.011845111846924, 472.7813169956207, 924.93... \n", - "4 [179.8093180656433, 1931.1715903282168, 3681.2... \n", - "5 [149.95571851730347, 1607.0826470851898, 3055.... \n", - "6 [46.73759913444519, 2618.0756616592407, 5189.3... \n", - "7 [21.47393274307251, 2593.709819793701, 5165.73... \n", - "8 [9.619165897369385, 367.18895173072815, 724.11... \n", - "9 [48.448254346847534, 2044.7006561756127, 4040.... \n", - "10 [252.1949598789215, 364.0293734073639, 476.044... \n", - "11 [57.16991138458252, 701.5083611011505, 1345.91... \n", - "12 [18.40320611000061, 470.4710736274719, 922.553... \n", - "13 [180.6115384101868, 1936.8847064971924, 3697.6... \n", - "14 [133.51365399360657, 1581.924886226654, 3031.2... \n", - "15 [52.0203263759613, 2623.021533727646, 5194.577... \n", - "16 [19.84875869750977, 2591.7337641716003, 5164.0... \n", - "17 [12.925746440887451, 369.7731881141663, 726.35... \n", - "18 [53.25284075737, 2049.324117898941, 4044.77459... \n", - "19 [243.82849168777463, 353.62104654312134, 464.3... \n", - "20 [58.92920994758606, 702.9748380184174, 1347.35... \n", - "21 [18.05807399749756, 470.02969241142273, 922.06... \n", - "22 [147.27141690254211, 1606.2805190086365, 3053.... \n", - "23 [55.70216536521912, 2627.222187280655, 5198.67... \n", - "24 [21.38729691505432, 2593.30307674408, 5165.587... \n", - "25 [9.436538696289062, 367.4553608894348, 742.407... \n", - "\n", - " test/accuracy ... \\\n", - "0 [0.0014000001, 0.36560002, 0.45650002, 0.4169,... ... \n", - "1 NaN ... \n", - "2 [0.0007088489946909, 0.2840625345706939, 0.578... ... \n", - "3 [0.4694536924362182, 0.9831327199935912, 0.983... ... \n", - "4 NaN ... \n", - "5 NaN ... \n", - "6 [0.001, 0.045300003, 0.1454, 0.22700001, 0.263... ... \n", - "7 NaN ... \n", - "8 NaN ... \n", - "9 [0.0016000001, 0.344, 0.3014, 0.4679, 0.382500... ... \n", - "10 NaN ... \n", - "11 [0.0007088489946909, 0.2598686814308166, 0.568... ... \n", - "12 [0.4896935224533081, 0.9831398725509644, 0.983... ... \n", - "13 NaN ... \n", - "14 NaN ... \n", - "15 [0.001, 0.053900003, 0.1444, 0.2194, 0.266, 0.... ... \n", - "16 NaN ... \n", - "17 NaN ... \n", - "18 [0.00070000003, 0.33710003, 0.42810002, 0.4347... ... \n", - "19 NaN ... \n", - "20 [0.0007088489946909, 0.3020394146442413, 0.591... ... \n", - "21 [0.4907908141613006, 0.983127236366272, 0.9830... ... \n", - "22 NaN ... \n", - "23 [0.001, 0.072100006, 0.18210001, 0.2469, 0.293... ... \n", - "24 NaN ... \n", - "25 NaN ... \n", - "\n", - " validation/mean_average_precision \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 [0.0251479251828367, 0.0338156570553674, 0.044... \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 [0.0277080923342443, 0.0341890814433129, 0.044... \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 [0.0287873659014232, 0.0344600833593851, 0.043... \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.8188148, 1.5198857, 1.4607787, 2.23269, 2.2... \n", - "5 [7.7995296, 1.4993261, 1.4718937, 1.4417106, 1... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.5704126, 1.6006178, 1.5195636, 1.44746, 2.6... \n", - "14 [7.9034896, 1.4649384, 1.4316331, 1.4175234, 1... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.7791758, 1.5051069, 1.4606261, 1.4253486, 1... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.0177320090183413, 0.899579550301627, 0.8995... \n", - "5 [4.225478845489814, 0.899579550301627, 0.89957... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.7537830317063758, 0.899579550301627, 0.8995... \n", - "14 [4.2069749964454735, 0.899579550301627, 0.8995... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [3.209331139682733, 0.899579550301627, 0.89957... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [8.013115, 1.5044522, 1.476835, 2.2691593, 2.2... \n", - "5 [8.034092, 1.5055914, 1.4746667, 1.4530343, 1.... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.7630796, 1.5612469, 1.4995697, 1.4617863, 2... \n", - "14 [8.1575575, 1.4792901, 1.4447198, 1.43035, 1.2... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [8.043934, 1.5205169, 1.4679037, 1.4379932, 1.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " train/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [0.9561616308852008, 0.944635537887994, 0.9427... \n", - "5 [4.4350883951439934, 0.944635537887994, 0.9427... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.4653343189721593, 0.944635537887994, 0.9427... \n", - "14 [4.366798200862087, 0.944635537887994, 0.94272... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [3.2846396518334964, 0.944635537887994, 0.9427... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/ctc_loss \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [7.8037643, 1.5250415, 1.46053, 2.2193222, 2.2... \n", - "5 [7.78249, 1.4993496, 1.4746159, 1.4503418, 1.3... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [7.5522285, 1.6074548, 1.5243387, 1.4466227, 2... \n", - "14 [7.8522906, 1.468107, 1.4339567, 1.418764, 1.3... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [7.789264, 1.5134877, 1.4641047, 1.4278629, 1.... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " validation/wer \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 [1.031690242842659, 0.8967218654950997, 0.8967... \n", - "5 [3.972181721624101, 0.8967218654950997, 0.8967... \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 [1.7525322261381742, 0.8967218654950997, 0.896... \n", - "14 [3.9483223096606, 0.8967218654950997, 0.896721... \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 [3.0233862791483608, 0.8967218654950997, 0.896... \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "\n", - " test/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ... \n", - "25 NaN \n", - "\n", - " train/ppl \\\n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60717.98161110941, 64.16837368116923, 39.2298... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [63439.6992540603, 58.72698558678992, 38.87932... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [61231.50162351116, 67.49141266621827, 39.7736... \n", - "25 NaN \n", - "\n", - " validation/ppl \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 [60716.24448057119, 64.56990602453749, 39.3894... \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 [63461.54380719361, 59.05956577665261, 38.9908... \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 [61163.97597290908, 67.93948885788608, 39.9232... \n", - "25 NaN \n", - "\n", - "[26 rows x 36 columns]\n", - " WORKLOAD: criteo1tb_jax\n", - " WORKLOAD: fastmri_jax\n", - " WORKLOAD: finewebedu_lm_jax\n", - " WORKLOAD: imagenet_resnet_jax\n", - " WORKLOAD: imagenet_vit_jax\n", - " WORKLOAD: librispeech_conformer_jax\n", - " WORKLOAD: librispeech_deepspeech_jax\n", - " WORKLOAD: ogbg_jax\n", - " WORKLOAD: wmt_jax\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
workloadtrialval target metric nameval target metric valueval target reachedbest metric value on valtime to best eval on val (s)time to target on val (s)step_time (s)step_hint
8criteo1tb_jaxtrial_1validation/loss0.123735False0.12427113033.471937inf1.95725610666
17criteo1tb_jaxtrial_1validation/loss0.123735False0.12432712450.281544inf1.95725610666
25criteo1tb_jaxtrial_1validation/loss0.123735False0.12436612143.230377inf1.95725610666
1fastmri_jaxtrial_1validation/ssim0.723653True0.7246793013.4445743.013445e+031.21314618094
10fastmri_jaxtrial_1validation/ssim0.723653True0.7237142578.1419472.578142e+031.21314618094
19fastmri_jaxtrial_1validation/ssim0.723653True0.7237212561.6468302.561647e+031.21314618094
7finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.83711928313.9738812.831397e+040.47487572000
16finewebedu_lm_jaxtrial_1validation/ppl22.299500True21.66829828312.4411872.831244e+040.47487572000
24finewebedu_lm_jaxtrial_1validation/ppl22.299500True22.06385528316.0340542.831603e+040.47487572000
0imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.73524071938.876954inf0.494305195999
9imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.76024063908.868738inf0.494305195999
18imagenet_resnet_jaxtrial_1validation/accuracy0.774310False0.67984073927.915774inf0.494305195999
6imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.68320082303.602971inf0.511691167999
15imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.68396084880.637240inf0.511691167999
23imagenet_vit_jaxtrial_1validation/accuracy0.773090False0.69978082310.410928inf0.511691167999
4librispeech_conformer_jaxtrial_1validation/wer0.085884False0.28446964958.122212inf2.58985276000
13librispeech_conformer_jaxtrial_1validation/wer0.085884False0.22808965014.055621inf2.58985276000
5librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16544255277.984729inf2.60304738400
14librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16333755251.850288inf2.60304738400
22librispeech_deepspeech_jaxtrial_1validation/wer0.119936False0.16829055264.863801inf2.60304738400
3ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2719105445.762616inf0.19557852000
12ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2654765895.114527inf0.19557852000
21ogbg_jaxtrial_1validation/mean_average_precision0.280980False0.2574247250.969810inf0.19557852000
2wmt_jaxtrial_1validation/bleu30.849100False29.73364615524.697182inf0.135402120000
11wmt_jaxtrial_1validation/bleu30.849100False29.61076017455.574302inf0.135402120000
20wmt_jaxtrial_1validation/bleu30.849100False29.57116914879.059205inf0.135402120000
\n", - "
" - ], - "text/plain": [ - " workload trial val target metric name \\\n", - "8 criteo1tb_jax trial_1 validation/loss \n", - "17 criteo1tb_jax trial_1 validation/loss \n", - "25 criteo1tb_jax trial_1 validation/loss \n", - "1 fastmri_jax trial_1 validation/ssim \n", - "10 fastmri_jax trial_1 validation/ssim \n", - "19 fastmri_jax trial_1 validation/ssim \n", - "7 finewebedu_lm_jax trial_1 validation/ppl \n", - "16 finewebedu_lm_jax trial_1 validation/ppl \n", - "24 finewebedu_lm_jax trial_1 validation/ppl \n", - "0 imagenet_resnet_jax trial_1 validation/accuracy \n", - "9 imagenet_resnet_jax trial_1 validation/accuracy \n", - "18 imagenet_resnet_jax trial_1 validation/accuracy \n", - "6 imagenet_vit_jax trial_1 validation/accuracy \n", - "15 imagenet_vit_jax trial_1 validation/accuracy \n", - "23 imagenet_vit_jax trial_1 validation/accuracy \n", - "4 librispeech_conformer_jax trial_1 validation/wer \n", - "13 librispeech_conformer_jax trial_1 validation/wer \n", - "5 librispeech_deepspeech_jax trial_1 validation/wer \n", - "14 librispeech_deepspeech_jax trial_1 validation/wer \n", - "22 librispeech_deepspeech_jax trial_1 validation/wer \n", - "3 ogbg_jax trial_1 validation/mean_average_precision \n", - "12 ogbg_jax trial_1 validation/mean_average_precision \n", - "21 ogbg_jax trial_1 validation/mean_average_precision \n", - "2 wmt_jax trial_1 validation/bleu \n", - "11 wmt_jax trial_1 validation/bleu \n", - "20 wmt_jax trial_1 validation/bleu \n", - "\n", - " val target metric value val target reached best metric value on val \\\n", - "8 0.123735 False 0.124271 \n", - "17 0.123735 False 0.124327 \n", - "25 0.123735 False 0.124366 \n", - "1 0.723653 True 0.724679 \n", - "10 0.723653 True 0.723714 \n", - "19 0.723653 True 0.723721 \n", - "7 22.299500 True 21.837119 \n", - "16 22.299500 True 21.668298 \n", - "24 22.299500 True 22.063855 \n", - "0 0.774310 False 0.735240 \n", - "9 0.774310 False 0.760240 \n", - "18 0.774310 False 0.679840 \n", - "6 0.773090 False 0.683200 \n", - "15 0.773090 False 0.683960 \n", - "23 0.773090 False 0.699780 \n", - "4 0.085884 False 0.284469 \n", - "13 0.085884 False 0.228089 \n", - "5 0.119936 False 0.165442 \n", - "14 0.119936 False 0.163337 \n", - "22 0.119936 False 0.168290 \n", - "3 0.280980 False 0.271910 \n", - "12 0.280980 False 0.265476 \n", - "21 0.280980 False 0.257424 \n", - "2 30.849100 False 29.733646 \n", - "11 30.849100 False 29.610760 \n", - "20 30.849100 False 29.571169 \n", - "\n", - " time to best eval on val (s) time to target on val (s) step_time (s) \\\n", - "8 13033.471937 inf 1.957256 \n", - "17 12450.281544 inf 1.957256 \n", - "25 12143.230377 inf 1.957256 \n", - "1 3013.444574 3.013445e+03 1.213146 \n", - "10 2578.141947 2.578142e+03 1.213146 \n", - "19 2561.646830 2.561647e+03 1.213146 \n", - "7 28313.973881 2.831397e+04 0.474875 \n", - "16 28312.441187 2.831244e+04 0.474875 \n", - "24 28316.034054 2.831603e+04 0.474875 \n", - "0 71938.876954 inf 0.494305 \n", - "9 63908.868738 inf 0.494305 \n", - "18 73927.915774 inf 0.494305 \n", - "6 82303.602971 inf 0.511691 \n", - "15 84880.637240 inf 0.511691 \n", - "23 82310.410928 inf 0.511691 \n", - "4 64958.122212 inf 2.589852 \n", - "13 65014.055621 inf 2.589852 \n", - "5 55277.984729 inf 2.603047 \n", - "14 55251.850288 inf 2.603047 \n", - "22 55264.863801 inf 2.603047 \n", - "3 5445.762616 inf 0.195578 \n", - "12 5895.114527 inf 0.195578 \n", - "21 7250.969810 inf 0.195578 \n", - "2 15524.697182 inf 0.135402 \n", - "11 17455.574302 inf 0.135402 \n", - "20 14879.059205 inf 0.135402 \n", - "\n", - " step_hint \n", - "8 10666 \n", - "17 10666 \n", - "25 10666 \n", - "1 18094 \n", - "10 18094 \n", - "19 18094 \n", - "7 72000 \n", - "16 72000 \n", - "24 72000 \n", - "0 195999 \n", - "9 195999 \n", - "18 195999 \n", - "6 167999 \n", - "15 167999 \n", - "23 167999 \n", - "4 76000 \n", - "13 76000 \n", - "5 38400 \n", - "14 38400 \n", - "22 38400 \n", - "3 52000 \n", - "12 52000 \n", - "21 52000 \n", - "2 120000 \n", - "11 120000 \n", - "20 120000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Loaded 14 submission(s): ['AdEMAMix', 'Cautious NAdamW', 'Lion', 'Muon (JAX)', 'Muon (PyTorch)', 'NAdamW', 'NAdamW (Baseline v0.5)', 'NAdamW (ResNet)', 'Schedule-Free AdamW', 'Schedule-Free AdamW (JAX)', 'Schedule-Free AdamW (JAX v2)', 'Schedule-Free AdamW v2', 'DiLoCo (Single Worker)', 'DiLoCo v2 (Single Worker)']\n" - ] - } - ], - "source": [ - "results = {}\n", - "\n", - "_exclude = {s.strip() for s in EXCLUDE_SUBMISSIONS.split(',')} - {''}\n", - "_include_raw = {s.strip() for s in INCLUDE_SUBMISSIONS.split(',')} - {''}\n", - "\n", - "print(f'Excluding ({len(_exclude)}): {sorted(_exclude) or \"(none)\"}')\n", - "print(f'Including ({len(_include_raw)}): {sorted(_include_raw) or \"(all)\"}')\n", - "\n", - "def _is_included(raw_name):\n", - " if raw_name in _exclude:\n", - " return False\n", - " if _include_raw and raw_name not in _include_raw:\n", - " return False\n", - " return True\n", - "\n", - "if LOAD_RESULTS_FROM:\n", - " load_path = os.path.join(OUTPUT_DIR, LOAD_RESULTS_FROM)\n", - " print(f'\\nLoading cached results from {load_path}')\n", - " with open(load_path, 'rb') as f:\n", - " cached = pickle.load(f)\n", - " _pretty_to_raw = {v: k for k, v in SUBMISSION_NAME_MAP.items()}\n", - " for name, df in cached.items():\n", - " raw = _pretty_to_raw.get(name, name)\n", - " if _is_included(raw):\n", - " results[name] = df\n", - " print(f' ✓ {name}')\n", - " else:\n", - " print(f' ✗ {name} ← excluded')\n", - "else:\n", - " all_submission_dirs = sorted(os.listdir(SUBMISSION_DIRECTORY))\n", - " print(f'\\nFound {len(all_submission_dirs)} folders:')\n", - " for s in all_submission_dirs:\n", - " tag = '✓' if _is_included(s) else '✗ ← excluded'\n", - " print(f' {tag} {s}')\n", - " print()\n", - "\n", - " for submission in all_submission_dirs:\n", - " if not _is_included(submission):\n", - " continue\n", - " print(f'\\n=== {pretty(submission)} ({submission}) ===')\n", - " experiment_path = os.path.join(SUBMISSION_DIRECTORY, submission)\n", - " df = scoring_utils.get_experiment_df(experiment_path)\n", - " results[pretty(submission)] = df\n", - "\n", - " summary_df = get_submission_summary(df)\n", - " summary_df.to_csv(os.path.join(OUTPUT_DIR, f'{submission}_summary.csv'))\n", - " display(summary_df)\n", - "\n", - " if SAVE_RESULTS_TO:\n", - " save_path = os.path.join(OUTPUT_DIR, SAVE_RESULTS_TO)\n", - " with open(save_path, 'wb') as f:\n", - " pickle.dump(results, f)\n", - " print(f'Results cached to {save_path}')\n", - "\n", - "print(f'\\nLoaded {len(results)} submission(s): {list(results.keys())}')" + "results = load_runs(\n", + " SUBMISSION_DIRECTORY,\n", + " include=INCLUDE_SUBMISSIONS,\n", + " exclude=EXCLUDE_SUBMISSIONS,\n", + " cache=Path(OUTPUT_DIR) / LOAD_RESULTS_FROM if LOAD_RESULTS_FROM else None,\n", + " save_cache=Path(OUTPUT_DIR) / SAVE_RESULTS_TO if SAVE_RESULTS_TO else None,\n", + ")\n", + "for summary in write_summaries(results, WORKLOAD_CONFIG, OUTPUT_DIR).values():\n", + " display(summary)" ] }, { "cell_type": "markdown", + "id": "06effef7", "metadata": {}, "source": [ "## 7. Framework Comparison: JAX vs. PyTorch\n", "\n", - "Three algorithms have implementations in both frameworks (Schedule-Free AdamW\n", - "v1/v2 and Muon). Each pair runs the same algorithm with the same batch sizes on\n", - "nearly every workload, so differences between the two versions measure the\n", - "frameworks rather than the optimizers. Emits `framework_comparison.{pdf,png}`:\n", - "a heatmap of the per-example step time ratio (JAX / PyTorch); the colorbar\n", + "Compare Schedule-Free AdamW v1 and v2 across JAX and PyTorch, retaining pairs\n", + "with shared core optimizer hyperparameters. Muon is excluded because its\n", + "submissions differ in hyperparameters and orthogonalization sharding. The\n", + "comparison is restricted to the six workloads with matching global training\n", + "batch sizes: Criteo, ResNet, ViT, DeepSpeech, OGBG, and WMT. Exclude fastMRI,\n", + "FineWeb-Edu, and Conformer rather than assume step time scales with batch size.\n", + "Remaining recipe and implementation differences mean this is an observational\n", + "comparison of submitted implementations, not a framework-only effect. Emits\n", + "`framework_comparison.{csv,pdf,png}`:\n", + "a heatmap of the raw median step-time ratio (JAX / PyTorch); the colorbar\n", "ticks repeat the same ratio values shown in the cells.\n" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, + "id": "e236ba66", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "per-example step-time ratio (JAX/PT):\n", - " Criteo fastMRI FineWeb ResNet ViT Conformer \\\n", - "Schedule-Free AdamW 1.77 2.39 1.15 0.33 0.60 3.45 \n", - "Schedule-Free AdamW v2 1.02 0.51 1.14 0.52 0.58 3.63 \n", - "Muon 2.12 1.38 1.28 0.78 0.61 3.29 \n", - "\n", - " DeepSpeech OGBG WMT \n", - "Schedule-Free AdamW 2.89 0.86 0.89 \n", - "Schedule-Free AdamW v2 5.43 0.89 0.94 \n", - "Muon 3.43 0.82 1.20 \n", - "Saved -> framework_comparison.pdf / .png\n" - ] - }, - { - "data": { - "image/png": "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rl27iChjK4m///6b3NzcFEeYqZ1E53bijRYKiUixQPrhr0v06ZQz2SgRJzVcIcHhcBw4d+4cqdVqateunWJCarFYFOeUZrOZXn/9dbsJFRHRli1byMfHh6pUqaKYT/7++++k0WioSpUqtH37diXtmDFj6O2337Yzu8+t2CYAmzZtooCAAGKMUf369e22HtgmRbt37ybGGPn5+VGpUqVo0aJFRER069YtxQTc19fXwbnUqVOnSKvVUqNGjejQoUNZWLvMJS4ujtq0aUPBwcF2/cFGmzZt6JdffiEia58bMmQI+fr62n0Qr1u3jooUKUL16tVzUFS8/fbbxBijpk2b0p9//knff/89+fr60g8//EBmsznXKnASEhLo0qVLRORonm3rf1999RVVrFjRIW+lSpWoefPmdP36dRowYAAFBARQ//79KTY2loisykGbl3oiqwInKCiI/P39qXjx4nZOHnMTN27coIIFC5Kfnx8xxqhbt25KxIK0H9ctWrRQPPDLskwmk4kmT55MoijSvHnzHCbwtvwmk4kaNGhAjDF6/fXX6d1337X7QHgVSN3fwsPD7aIEWSwWio+Pp3r16lGVKlWIiGj+/PlUsmRJatSokeJMLyEhge7fv6/ku3DhAnl7e1OhQoVIFMVXcltQRgqcCxcukMFgUJ4rm0JVlmWHZ/vSpUuk0+nogw8+oNDQUOX8yJEjSa1WU8+ePRUntLmZyMhIIrJu5fTx8aH69euTxWKxcxb7zTffULly5ejBgwd2CgWz2UyDBw8mrVZL9evXz9Bh6tChQ6lx48a0f/9+Ispd21xMJhMNHDiQfH19qVu3blSxYkVijJFer6f69evTvn37HPJMnjxZidy1bNkyYozRe++9l275traQZZk++ugjYoxRpUqVqFatWuk6qM2N/Hs1ivpOtiogjCYLdRp+guZsup3NUnFscIUEh5PHuXXrFo0YMcJuVTo0NJS+/vpr8vDwoAMHDtAvv/xCHh4etHz5ciIievjwIRUoUID69OlDRNZQnu+88w4VLVqUZsyYYVd+YmIi/fXXX1S4cGHS6/X04YcfUunSpalu3br033//ZVk9s4JNmzbR1KlTqX379sQYoz///JOIHCc+TZs2JcaYsiKbeuK6fv16qlChgrL6MX36dOrTpw/t3r07134YpiYhIYG6detGoijSG2+8oayE2Sbl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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# ── JAX vs PyTorch: paired-algorithm framework comparison ────────────────────\n", - "import re\n", - "from matplotlib.colors import LinearSegmentedColormap, TwoSlopeNorm\n", "\n", - "WORKLOADS = ['criteo1tb', 'fastmri', 'finewebedu_lm', 'imagenet_resnet',\n", - " 'imagenet_vit', 'librispeech_conformer', 'librispeech_deepspeech',\n", - " 'ogbg', 'wmt']\n", - "WL_SHORT = ['Criteo', 'fastMRI', 'FineWeb', 'ResNet', 'ViT', 'Conformer',\n", - " 'DeepSpeech', 'OGBG', 'WMT']\n", + "WORKLOADS = [\n", + " 'criteo1tb',\n", + " 'imagenet_resnet',\n", + " 'imagenet_vit',\n", + " 'librispeech_deepspeech',\n", + " 'ogbg',\n", + " 'wmt',\n", + "]\n", + "WL_SHORT = ['Criteo', 'ResNet', 'ViT', 'DeepSpeech', 'OGBG', 'WMT']\n", "\n", "# (row label, pytorch submission, jax submission)\n", + "# Restrict to shared core optimizer HPs. Muon also changes HPs and sharding.\n", + "# Exclude fastMRI, FineWeb-Edu, and Conformer: their batch sizes differ.\n", + "# Schedule-Free still has v1 averaging differences\n", + "# and an apparent JAX label-smoothing fallback; do not infer framework-only causality.\n", "PAIRS = [\n", - " ('Schedule-Free AdamW', 'Schedule-Free AdamW', 'Schedule-Free AdamW (JAX)'),\n", - " ('Schedule-Free AdamW v2', 'Schedule-Free AdamW v2', 'Schedule-Free AdamW (JAX v2)'),\n", - " ('Muon', 'Muon (PyTorch)', 'Muon (JAX)'),\n", + " (\n", + " 'Schedule-Free AdamW v1',\n", + " pretty('schedule_free_adamw'),\n", + " pretty('schedule_free_adamw_jax'),\n", + " ),\n", + " (\n", + " 'Schedule-Free AdamW v2',\n", + " pretty('schedule_free_adamw_v2'),\n", + " pretty('schedule_free_adamw_jax_v2'),\n", + " ),\n", "]\n", "\n", "# Training batch sizes from each submission's get_batch_size().\n", - "BATCH_PT_SFA = {'criteo1tb': 262144, 'fastmri': 16, 'finewebedu_lm': 64,\n", - " 'imagenet_resnet': 1024, 'imagenet_vit': 1024,\n", - " 'librispeech_conformer': 224, 'librispeech_deepspeech': 128,\n", - " 'ogbg': 512, 'wmt': 128}\n", - "BATCH_JAX_SFA = {**BATCH_PT_SFA, 'fastmri': 32, 'finewebedu_lm': 32,\n", - " 'librispeech_conformer': 256}\n", - "BATCH_MUON = {'criteo1tb': 262144, 'fastmri': 32, 'finewebedu_lm': 64,\n", - " 'imagenet_resnet': 1024, 'imagenet_vit': 1024,\n", - " 'librispeech_conformer': 256, 'librispeech_deepspeech': 256,\n", - " 'ogbg': 512, 'wmt': 128}\n", + "BATCH_PT_SFA = {\n", + " 'criteo1tb': 262144,\n", + " 'fastmri': 16,\n", + " 'finewebedu_lm': 64,\n", + " 'imagenet_resnet': 1024,\n", + " 'imagenet_vit': 1024,\n", + " 'librispeech_conformer': 224,\n", + " 'librispeech_deepspeech': 128,\n", + " 'ogbg': 512,\n", + " 'wmt': 128,\n", + "}\n", + "BATCH_JAX_SFA = {\n", + " **BATCH_PT_SFA,\n", + " 'fastmri': 32,\n", + " 'finewebedu_lm': 32,\n", + " 'librispeech_conformer': 256,\n", + "}\n", "BATCHES = {\n", - " 'Schedule-Free AdamW': (BATCH_PT_SFA, BATCH_JAX_SFA),\n", - " 'Schedule-Free AdamW v2': (BATCH_PT_SFA, BATCH_JAX_SFA),\n", - " 'Muon': (BATCH_MUON, BATCH_MUON),\n", + " 'Schedule-Free AdamW v1': (BATCH_PT_SFA, BATCH_JAX_SFA),\n", + " 'Schedule-Free AdamW v2': (BATCH_PT_SFA, BATCH_JAX_SFA),\n", "}\n", "\n", "\n", - "def step_times(sub):\n", - " \"\"\"Median seconds per step, per base workload.\"\"\"\n", - " df = results[sub]\n", - " out = {}\n", - " for workload, group in df.groupby('workload'):\n", - " base = re.sub(r'_(jax|pytorch)$', '', workload)\n", - " ratios = []\n", - " for _, trial in group.iterrows():\n", - " t = np.diff(np.asarray(trial['accumulated_submission_time']), prepend=0)\n", - " s = np.diff(np.asarray(trial['global_step']), prepend=0)\n", - " with np.errstate(divide='ignore', invalid='ignore'):\n", - " ratios.append(np.nanmedian(t / s))\n", - " out[base] = float(np.median(ratios))\n", - " return out\n", - "\n", "step_ratio = np.full((len(PAIRS), len(WORKLOADS)), np.nan)\n", "\n", "for i, (label, pt, jx) in enumerate(PAIRS):\n", - " st_pt, st_jx = step_times(pt), step_times(jx)\n", - " b_pt, b_jx = BATCHES[label]\n", - " for j, w in enumerate(WORKLOADS):\n", - " per_ex_pt = st_pt[w] / b_pt[w]\n", - " per_ex_jx = st_jx[w] / b_jx[w]\n", - " step_ratio[i, j] = per_ex_jx / per_ex_pt\n", - "\n", - "print('per-example step-time ratio (JAX/PT):')\n", - "print(pd.DataFrame(step_ratio, index=[p[0] for p in PAIRS], columns=WL_SHORT).round(2))\n", + " st_pt, st_jx = step_times(results[pt]), step_times(results[jx])\n", + " b_pt, b_jx = BATCHES[label]\n", + " for j, w in enumerate(WORKLOADS):\n", + " assert b_pt[w] == b_jx[w], f'Batch-size mismatch: {label}, {w}'\n", + " step_ratio[i, j] = st_jx[w] / st_pt[w]\n", + "\n", + "print('Raw median step-time ratio (JAX/PT), matching global batch sizes:')\n", + "print({short: BATCH_PT_SFA[w] for short, w in zip(WL_SHORT, WORKLOADS)})\n", + "ratio_df = pd.DataFrame(\n", + " step_ratio, index=[p[0] for p in PAIRS], columns=WL_SHORT\n", + ")\n", + "print(ratio_df.round(2))\n", + "ratio_df.to_csv(\n", + " os.path.join(OUTPUT_DIR, 'framework_comparison.csv'), index_label='Submission'\n", + ")\n", "\n", "# ── Figure: single heatmap, print-true at \\textwidth = 6.5in ──────────────────\n", "# Cells show the raw JAX ÷ PyTorch ratio; the colorbar ticks repeat those\n", "# ratio values (0.25 … 4) so the legend numbers match the box numbers.\n", - "JAX_C, PT_C, MID_C = '#3D6FC4', '#CC3311', '#f7f7f7'\n", - "cmap = LinearSegmentedColormap.from_list('fw', [JAX_C, MID_C, PT_C])\n", - "norm = TwoSlopeNorm(vmin=-2.5, vcenter=0.0, vmax=2.5)\n", - "\n", - "fig, ax = plt.subplots(figsize=(6.5, 1.9))\n", - "\n", - "log = np.log2(step_ratio)\n", - "masked = np.ma.masked_invalid(log)\n", - "ax.imshow(masked, cmap=cmap, norm=norm, aspect='auto')\n", - "for i in range(step_ratio.shape[0]):\n", - " for j in range(step_ratio.shape[1]):\n", - " v = step_ratio[i, j]\n", - " ax.text(j, i, f'{v:.2f}' if v < 10 else f'{v:.0f}',\n", - " ha='center', va='center', fontsize=8,\n", - " color='white' if abs(np.log2(v)) > 1.6 else '#333333')\n", - "ax.set_yticks(range(step_ratio.shape[0]))\n", - "ax.set_yticklabels([p[0] for p in PAIRS], fontsize=8.5)\n", - "ax.set_xticks(range(len(WL_SHORT)))\n", - "ax.set_xticklabels(WL_SHORT, fontsize=8.5, rotation=28, ha='right',\n", - " rotation_mode='anchor')\n", - "ax.set_title('Per-example step time, JAX ÷ PyTorch', fontsize=9, loc='left', pad=4)\n", - "ax.tick_params(length=0)\n", - "for spine in ax.spines.values():\n", - " spine.set_visible(False)\n", - "for j in range(step_ratio.shape[1] + 1):\n", - " ax.axvline(j - .5, color='white', lw=1.6)\n", - "for i in range(step_ratio.shape[0] + 1):\n", - " ax.axhline(i - .5, color='white', lw=1.6)\n", - "\n", - "cbar = fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap), ax=ax,\n", - " fraction=0.05, pad=0.03, ticks=[-2, -1, 0, 1, 2])\n", - "cbar.ax.set_yticklabels(['0.25', '0.5', '1', '2', '4'], fontsize=8)\n", - "cbar.set_label('JAX ÷ PyTorch ratio', fontsize=8)\n", - "cbar.ax.text(0.5, 1.04, 'PyTorch\\nfaster', transform=cbar.ax.transAxes,\n", - " ha='center', va='bottom', fontsize=7, color=PT_C)\n", - "cbar.ax.text(0.5, -0.04, 'JAX\\nfaster', transform=cbar.ax.transAxes,\n", - " ha='center', va='top', fontsize=7, color=JAX_C)\n", - "cbar.outline.set_visible(False)\n", - "\n", - "OUT = OUTPUT_DIR\n", - "for ext in ('pdf', 'png'):\n", - " fig.savefig(os.path.join(OUT, f'framework_comparison.{ext}'), format=ext, dpi=300)\n", - "print('Saved -> framework_comparison.pdf / .png')\n", - "plt.show()\n" + "fig = plot_framework_comparison(ratio_df)\n", + "save_figure(\n", + " fig,\n", + " Path(OUTPUT_DIR) / 'framework_comparison',\n", + ")\n", + "display(fig)\n", + "plt.close(fig)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { + "jupytext": { + "formats": "ipynb,py:percent" + }, "kernelspec": { "display_name": "algoperf", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.15" } }, "nbformat": 4, - "nbformat_minor": 4 + "nbformat_minor": 5 } diff --git a/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.py b/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.py new file mode 100644 index 00000000..700fd304 --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/framework_comparison.py @@ -0,0 +1,210 @@ +# --- +# jupyter: +# jupytext: +# formats: ipynb,py:percent +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.19.5 +# kernelspec: +# display_name: algoperf +# language: python +# name: python3 +# --- + +# %% [markdown] +# # AlgoPerf: JAX vs. PyTorch Framework Comparison +# + +# %% [markdown] +# ## 1. Imports & Repo Root +# +# Locates the repo root (so the notebook works whether launched from the root or +# from this folder), then imports the scoring package. +# + +# %% +# Notebook cells intentionally import dependencies near their use. +# ruff: noqa: E402 +import os +import sys +from pathlib import Path + +# Run everything relative to the repo root so `scoring` imports and the +# repo-relative paths in Section 3 work from any launch directory. +REPO_ROOT = next( + p + for p in [Path.cwd(), *Path.cwd().parents] + if (p / 'scoring' / 'score_submissions.py').exists() +) +os.chdir(REPO_ROOT) +sys.path.insert(0, str(REPO_ROOT)) + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from IPython.display import display + +from scoring.config import DEFAULT_TARGETS_PATH, WorkloadConfig + + +# %% [markdown] +# ## 2. Configuration +# +# Set the paths and flags below before running the rest of the notebook. + +# %% +# ── Required ────────────────────────────────────────────────────────────────── +# Path to the directory that contains one sub-folder per submission +# (relative to the repo root). +from artifacts.tech_report_v1.report_utils import ( + EXCLUDED_SUBMISSIONS, + section_output_dir, + submission_directory, +) + +SUBMISSION_DIRECTORY = str(submission_directory()) + +# Where to write output CSVs, plots, and LaTeX tables. This is the committed +# artifact directory for the second scoring iteration. +OUTPUT_DIR = str(section_output_dir('section_7_frameworks')) + +# ── Submission filters (leave empty strings to include/exclude nothing) ─────── +# Comma-separated names to include (empty = include all). +INCLUDE_SUBMISSIONS = 'schedule_free_adamw,schedule_free_adamw_jax,schedule_free_adamw_v2,schedule_free_adamw_jax_v2' +# Comma-separated names to exclude. +EXCLUDE_SUBMISSIONS = ','.join(EXCLUDED_SUBMISSIONS) + +WORKLOAD_CONFIG = WorkloadConfig.from_json(DEFAULT_TARGETS_PATH) + +# ── Caching (optional) ──────────────────────────────────────────────────────── +# Save the parsed results dict so you can reload it later without re-parsing. +SAVE_RESULTS_TO = None # e.g. 'results.pkl' +# Load a previously saved results dict instead of re-parsing. +LOAD_RESULTS_FROM = None # e.g. 'results.pkl' + +os.makedirs(OUTPUT_DIR, exist_ok=True) + + +# %% +from artifacts.tech_report_v1.report_data import load_runs, write_summaries +from artifacts.tech_report_v1.report_utils import ( + pretty, + save_figure, +) +from artifacts.tech_report_v1.section_7_frameworks.plot_framework_comparison import ( + step_times, + plot_framework_comparison, +) + +results = load_runs( + SUBMISSION_DIRECTORY, + include=INCLUDE_SUBMISSIONS, + exclude=EXCLUDE_SUBMISSIONS, + cache=Path(OUTPUT_DIR) / LOAD_RESULTS_FROM if LOAD_RESULTS_FROM else None, + save_cache=Path(OUTPUT_DIR) / SAVE_RESULTS_TO if SAVE_RESULTS_TO else None, +) +for summary in write_summaries(results, WORKLOAD_CONFIG, OUTPUT_DIR).values(): + display(summary) + +# %% [markdown] +# ## 7. Framework Comparison: JAX vs. PyTorch +# +# Compare Schedule-Free AdamW v1 and v2 across JAX and PyTorch, retaining pairs +# with shared core optimizer hyperparameters. Muon is excluded because its +# submissions differ in hyperparameters and orthogonalization sharding. The +# comparison is restricted to the six workloads with matching global training +# batch sizes: Criteo, ResNet, ViT, DeepSpeech, OGBG, and WMT. Exclude fastMRI, +# FineWeb-Edu, and Conformer rather than assume step time scales with batch size. +# Remaining recipe and implementation differences mean this is an observational +# comparison of submitted implementations, not a framework-only effect. Emits +# `framework_comparison.{csv,pdf,png}`: +# a heatmap of the raw median step-time ratio (JAX / PyTorch); the colorbar +# ticks repeat the same ratio values shown in the cells. +# + +# %% +# ── JAX vs PyTorch: paired-algorithm framework comparison ──────────────────── + +WORKLOADS = [ + 'criteo1tb', + 'imagenet_resnet', + 'imagenet_vit', + 'librispeech_deepspeech', + 'ogbg', + 'wmt', +] +WL_SHORT = ['Criteo', 'ResNet', 'ViT', 'DeepSpeech', 'OGBG', 'WMT'] + +# (row label, pytorch submission, jax submission) +# Restrict to shared core optimizer HPs. Muon also changes HPs and sharding. +# Exclude fastMRI, FineWeb-Edu, and Conformer: their batch sizes differ. +# Schedule-Free still has v1 averaging differences +# and an apparent JAX label-smoothing fallback; do not infer framework-only causality. +PAIRS = [ + ( + 'Schedule-Free AdamW v1', + pretty('schedule_free_adamw'), + pretty('schedule_free_adamw_jax'), + ), + ( + 'Schedule-Free AdamW v2', + pretty('schedule_free_adamw_v2'), + pretty('schedule_free_adamw_jax_v2'), + ), +] + +# Training batch sizes from each submission's get_batch_size(). +BATCH_PT_SFA = { + 'criteo1tb': 262144, + 'fastmri': 16, + 'finewebedu_lm': 64, + 'imagenet_resnet': 1024, + 'imagenet_vit': 1024, + 'librispeech_conformer': 224, + 'librispeech_deepspeech': 128, + 'ogbg': 512, + 'wmt': 128, +} +BATCH_JAX_SFA = { + **BATCH_PT_SFA, + 'fastmri': 32, + 'finewebedu_lm': 32, + 'librispeech_conformer': 256, +} +BATCHES = { + 'Schedule-Free AdamW v1': (BATCH_PT_SFA, BATCH_JAX_SFA), + 'Schedule-Free AdamW v2': (BATCH_PT_SFA, BATCH_JAX_SFA), +} + + +step_ratio = np.full((len(PAIRS), len(WORKLOADS)), np.nan) + +for i, (label, pt, jx) in enumerate(PAIRS): + st_pt, st_jx = step_times(results[pt]), step_times(results[jx]) + b_pt, b_jx = BATCHES[label] + for j, w in enumerate(WORKLOADS): + assert b_pt[w] == b_jx[w], f'Batch-size mismatch: {label}, {w}' + step_ratio[i, j] = st_jx[w] / st_pt[w] + +print('Raw median step-time ratio (JAX/PT), matching global batch sizes:') +print({short: BATCH_PT_SFA[w] for short, w in zip(WL_SHORT, WORKLOADS)}) +ratio_df = pd.DataFrame( + step_ratio, index=[p[0] for p in PAIRS], columns=WL_SHORT +) +print(ratio_df.round(2)) +ratio_df.to_csv( + os.path.join(OUTPUT_DIR, 'framework_comparison.csv'), index_label='Submission' +) + +# ── Figure: single heatmap, print-true at \textwidth = 6.5in ────────────────── +# Cells show the raw JAX ÷ PyTorch ratio; the colorbar ticks repeat those +# ratio values (0.25 … 4) so the legend numbers match the box numbers. +fig = plot_framework_comparison(ratio_df) +save_figure( + fig, + Path(OUTPUT_DIR) / 'framework_comparison', +) +display(fig) +plt.close(fig) diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.csv b/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.csv new file mode 100644 index 00000000..4d5b4647 --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.csv @@ -0,0 +1,3 @@ +Submission,Criteo,ResNet,ViT,DeepSpeech,OGBG,WMT +Schedule-Free AdamW v1,1.7684746532569608,0.329967933780409,0.5972162468386699,2.8911875030445553,0.8583333860462475,0.8886045518833032 +Schedule-Free AdamW v2,1.015598624825152,0.331503867053326,0.5805768509951862,5.433791691360587,0.8868879908595588,0.9388027185922081 diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.pdf b/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.pdf new file mode 100644 index 00000000..0b1508be Binary files /dev/null and b/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.pdf differ diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.png b/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.png new file mode 100644 index 00000000..a797ae8d Binary files /dev/null and b/artifacts/tech_report_v1/section_7_frameworks/out/framework_comparison.png differ diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/run_metadata.json b/artifacts/tech_report_v1/section_7_frameworks/out/run_metadata.json new file mode 100644 index 00000000..a495d2df --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/out/run_metadata.json @@ -0,0 +1,282 @@ +{ + "SUBMISSION_DIRECTORY": "/data/projects/algoperf_scoring/submissions_algorithms/logs/self_tuning", + "INCLUDE_SUBMISSIONS": "schedule_free_adamw,schedule_free_adamw_jax,schedule_free_adamw_v2,schedule_free_adamw_jax_v2", + "EXCLUDE_SUBMISSIONS": "muon_torch_jax_hps,muon_torch_jax_hps_achandr,muon_torch_jax_hps_lr_fix,muon_torch_replicated_jax_hps,muon_torch_replicated_torch_hps", + "LOAD_RESULTS_FROM": null, + "SAVE_RESULTS_TO": null, + "workload_config": { + "benchmark_version": "0.6", + "base_workloads": [ + "criteo1tb", + "fastmri", + "imagenet_resnet", + "imagenet_vit", + "librispeech_conformer", + "librispeech_deepspeech", + "finewebedu_lm", + "ogbg", + "wmt" + ], + "held_out_workloads": [], + "workloads": { + "cifar": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.85, + "step_hint": 4883, + "max_allowed_runtime_sec": 3600 + }, + "criteo1tb": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.123735, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_test": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.123735, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_layernorm": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.123757, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_embed_init": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.129657, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "criteo1tb_resnet": { + "target_metric_name": "loss", + "target_metric_goal": "minimize", + "validation_target_value": 0.12415, + "step_hint": 10666, + "max_allowed_runtime_sec": 8915 + }, + "fastmri": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.723653, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "fastmri_model_size": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.723559, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "fastmri_tanh": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.71784, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "fastmri_layernorm": { + "target_metric_name": "ssim", + "target_metric_goal": "maximize", + "validation_target_value": 0.723284, + "step_hint": 18094, + "max_allowed_runtime_sec": 2745 + }, + "imagenet_resnet": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.77431, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_resnet_silu": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.75445, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_resnet_gelu": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.76765, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_resnet_large_bn_init": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.76526, + "step_hint": 195999, + "max_allowed_runtime_sec": 49918 + }, + "imagenet_vit": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.77309, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "imagenet_vit_glu": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.75738, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "imagenet_vit_post_ln": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.75312, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "imagenet_vit_map": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.77113, + "step_hint": 167999, + "max_allowed_runtime_sec": 64292 + }, + "librispeech_conformer": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.085884, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_conformer_attention_temperature": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.109977, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_conformer_layernorm": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.09731, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_conformer_gelu": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.094114, + "step_hint": 76000, + "max_allowed_runtime_sec": 43680 + }, + "librispeech_deepspeech": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.119936, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "librispeech_deepspeech_tanh": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.150883, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "librispeech_deepspeech_no_resnet": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.131564, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "librispeech_deepspeech_norm_and_spec_aug": { + "target_metric_name": "wer", + "target_metric_goal": "minimize", + "validation_target_value": 0.14342, + "step_hint": 38400, + "max_allowed_runtime_sec": 36949 + }, + "finewebedu_lm": { + "target_metric_name": "ppl", + "target_metric_goal": "minimize", + "validation_target_value": 22.2995, + "step_hint": 72000, + "max_allowed_runtime_sec": 31967 + }, + "mnist": { + "target_metric_name": "accuracy", + "target_metric_goal": "maximize", + "validation_target_value": 0.97, + "step_hint": 7813, + "max_allowed_runtime_sec": 60 + }, + "ogbg": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.28098, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "ogbg_gelu": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.27771, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "ogbg_silu": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.282178, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "ogbg_model_size": { + "target_metric_name": "mean_average_precision", + "target_metric_goal": "maximize", + "validation_target_value": 0.269446, + "step_hint": 52000, + "max_allowed_runtime_sec": 11303 + }, + "wmt": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 30.8491, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + }, + "wmt_post_ln": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 30.0779, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + }, + "wmt_attention_temp": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 29.3379, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + }, + "wmt_glu_tanh": { + "target_metric_name": "bleu", + "target_metric_goal": "maximize", + "validation_target_value": 29.5779, + "step_hint": 120000, + "max_allowed_runtime_sec": 16114 + } + } + }, + "submission_pool": [ + "Schedule-Free AdamW (JAX)", + "Schedule-Free AdamW (PyTorch)", + "Schedule-Free AdamW v2 (JAX)", + "Schedule-Free AdamW v2 (PyTorch)" + ] +} diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_jax_summary.csv b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_jax_summary.csv new file mode 100644 index 00000000..cc86b995 --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_jax_summary.csv @@ -0,0 +1,28 @@ +,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint +2,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236780861794127,7853.642936706543,7140.8094828128815,1.7633445439952435,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1238261394401308,13222.375915288923,inf,1.7633445439952435,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,False,0.1237888046626876,13213.711726427078,inf,1.7633445439952435,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237302214494232,1731.1340837478638,1731.1340837478638,1.1496743187308311,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237188181450478,2594.667304039001,2594.667304039001,1.1496743187308311,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7238083272149338,2397.40203499794,2397.40203499794,1.1496743187308311,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.63105596611465,12875.024502277374,12875.024502277374,0.22480757398142498,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.74279164065674,12876.279433250427,12876.279433250427,0.22480757398142498,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.683878980951235,12875.283079862596,12875.283079862596,0.22480757398142498,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.32668,2046.26813864708,inf,0.25022096920710724,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.37228,12025.559068441393,inf,0.25022096920710724,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.3381,43958.733882665634,inf,0.25022096920710724,195999 +6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77448,82325.32389187813,82325.32389187813,0.522412035514241,167999 +15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,False,0.75714,87510.92576980591,inf,0.522412035514241,167999 +24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77344,87468.86081624031,87468.86081624031,0.522412035514241,167999 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1549944479312509,65011.38493800163,inf,2.5689073843042243,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.5567904214744364,65011.67010974884,inf,2.5689073843042243,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.1187177135132525,64999.67829537392,inf,2.5689073843042243,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1350263119779848,55134.126436948776,inf,1.2618603325971023,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1357311833148264,55131.02417516709,inf,1.2618603325971023,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1353352966735866,55139.79888033867,inf,1.2618603325971023,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2882117430802368,5446.973826885223,5446.973826885223,0.2001300537781464,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2861864452395915,5446.995653152466,5446.995653152466,0.2001300537781464,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2842350234539836,5446.266435623169,5446.266435623169,0.2001300537781464,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,True,30.85016934441424,16161.202248096466,16161.202248096466,0.1313800575391753,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,True,30.857123789991796,21309.901624917984,21309.901624917984,0.1313800575391753,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,True,30.921054351078247,12938.92156648636,12938.92156648636,0.1313800575391753,120000 diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_jax_v2_summary.csv b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_jax_v2_summary.csv new file mode 100644 index 00000000..fd47b5a4 --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_jax_v2_summary.csv @@ -0,0 +1,28 @@ +,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint +2,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236824611515756,7494.73098731041,7494.73098731041,0.8966913763762121,10666 +11,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1236955728693145,8204.54053902626,8204.54053902626,0.8966913763762121,10666 +20,criteo1tb_jax,trial_1,validation/loss,0.123735,True,0.1237031599809202,8561.992237091064,8205.83998131752,0.8966913763762121,10666 +5,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237456777354742,1850.625381946564,1850.625381946564,0.3698403887300683,18094 +14,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7239381600177617,1854.5847795009613,1854.5847795009613,0.3698403887300683,18094 +23,fastmri_jax,trial_1,validation/ssim,0.723653,True,0.7237980917188379,1610.791705369949,1610.791705369949,0.3698403887300683,18094 +1,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.063707391204822,15451.99134683609,15451.99134683609,0.22534573858673873,72000 +10,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,22.084079790540933,15451.332998037338,15451.332998037338,0.22534573858673873,72000 +19,finewebedu_lm_jax,trial_1,validation/ppl,22.2995,True,21.41176473745201,18017.74631667137,18017.74631667137,0.22534573858673873,72000 +7,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75412,55937.934849500656,inf,0.2718141573124485,195999 +16,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75696,73898.40845513344,inf,0.2718141573124485,195999 +25,imagenet_resnet_jax,trial_1,validation/accuracy,0.77431,False,0.75606,73900.43143868446,inf,0.2718141573124485,195999 +6,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77356,84891.75501847267,84891.75501847267,0.49135053230701276,167999 +15,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.7732,90041.78416395187,90041.78416395187,0.49135053230701276,167999 +24,imagenet_vit_jax,trial_1,validation/accuracy,0.77309,True,0.77349997,79757.28538060188,79757.28538060188,0.49135053230701276,167999 +0,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.123883551392845,65000.42595148087,inf,2.6878856915000933,76000 +9,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.5209675083281031,64987.36187624931,inf,2.6878856915000933,76000 +18,librispeech_conformer_jax,trial_1,validation/wer,0.085884,False,0.8858494665186115,65011.33872246742,inf,2.6878856915000933,76000 +3,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1574759812678028,55212.78796505928,inf,2.8562571235897436,38400 +12,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1543088881378844,55199.30320453644,inf,2.8562571235897436,38400 +21,librispeech_deepspeech_jax,trial_1,validation/wer,0.119936,False,0.1572828658330517,55205.010649204254,inf,2.8562571235897436,38400 +4,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.286413382088369,5445.974807500839,5445.974807500839,0.19452367417783623,52000 +13,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2833401175109442,4543.061010599136,4543.061010599136,0.19452367417783623,52000 +22,ogbg_jax,trial_1,validation/mean_average_precision,0.28098,True,0.2839604337758715,5444.019295454025,5444.019295454025,0.19452367417783623,52000 +8,wmt_jax,trial_1,validation/bleu,30.8491,False,30.80719747887025,18087.94602179528,inf,0.13178440840034025,120000 +17,wmt_jax,trial_1,validation/bleu,30.8491,False,30.82293691746224,18733.534309864044,inf,0.13178440840034025,120000 +26,wmt_jax,trial_1,validation/bleu,30.8491,True,30.89861759064164,12937.488843202593,12937.488843202593,0.13178440840034025,120000 diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_summary.csv b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_summary.csv new file mode 100644 index 00000000..aa258ddf --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_summary.csv @@ -0,0 +1,28 @@ +,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint +7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.123695969072577,10693.990020275116,10337.671689033508,1.0176147447313595,10666 +16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1237318931772052,7484.81304359436,7484.81304359436,1.0176147447313595,10666 +25,criteo1tb_pytorch,trial_1,validation/loss,0.123735,False,0.1238283343342011,13201.571621894836,inf,1.0176147447313595,10666 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243006614466094,1188.9131379127502,1188.9131379127502,0.37200399077668483,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7241639591833146,1084.00980591774,1084.00980591774,0.37200399077668483,18094 +23,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7237026749129502,1414.2303750514984,1414.2303750514984,0.37200399077668483,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,26.85374456024656,18022.233601808548,inf,0.39088582110865655,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,27.82547828346764,38578.81546521187,inf,0.39088582110865655,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,26.96230657281026,28299.942929506306,inf,0.39088582110865655,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.47426,20031.86983823776,inf,0.7580861347745502,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.4676,4114.095727682114,inf,0.7580861347745502,195999 +24,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.4552,20045.60598516464,inf,0.7580861347745502,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.66804,84876.44285774231,inf,0.798625143555511,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.66444,87409.16011619568,inf,0.798625143555511,167999 +22,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.6597,89980.17051744461,inf,0.798625143555511,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0877323420074349,64552.02477765083,inf,0.636074872542087,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.1268092502293245,64541.00859761238,inf,0.636074872542087,76000 +20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0847969873992178,55843.257081747055,55843.257081747055,0.636074872542087,76000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1198474388065466,36135.45188999176,36135.45188999176,0.4369991325858944,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1197798484043837,40477.75217223168,40477.75217223168,0.4369991325858944,38400 +26,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1190170424371167,40463.388149023056,40463.388149023056,0.4369991325858944,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.28535290526426,3640.148542404175,3640.148542404175,0.23042852374871498,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.283665861188384,4969.322802782059,4969.322802782059,0.23042852374871498,52000 +21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2823012178053458,3624.553771257401,3624.553771257401,0.23042852374871498,52000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.88398743654469,21238.623005867004,21238.623005867004,0.1480193403642912,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.914680764174825,16745.45179581642,15461.67885351181,0.1480193403642912,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.954489013105448,19957.71787595749,19957.71787595749,0.1480193403642912,120000 diff --git a/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_v2_summary.csv b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_v2_summary.csv new file mode 100644 index 00000000..ce4b86fb --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/out/schedule_free_adamw_v2_summary.csv @@ -0,0 +1,27 @@ +,workload,trial,val target metric name,val target metric value,val target reached,best metric value on val,time to best eval on val (s),time to target on val (s),step_time (s),step_hint +7,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236836366985733,7836.119033813477,7480.571330547333,0.909490487405232,10666 +16,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236888022091851,8195.66323542595,7483.040989398956,0.909490487405232,10666 +24,criteo1tb_pytorch,trial_1,validation/loss,0.123735,True,0.1236981323330379,6768.513046264648,6768.513046264648,0.909490487405232,10666 +5,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7243824080261677,1018.5896019935608,1018.5896019935608,0.2531965345361251,18094 +14,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7242272269142164,1279.6873631477356,1279.6873631477356,0.2531965345361251,18094 +22,fastmri_pytorch,trial_1,validation/ssim,0.723653,True,0.7240946463272018,1128.837876081467,1128.837876081467,0.2531965345361251,18094 +1,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,22.907429657990484,46293.00692868233,inf,0.39557035112902283,72000 +10,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,23.1486231732884,46274.09501791,inf,0.39557035112902283,72000 +19,finewebedu_lm_pytorch,trial_1,validation/ppl,22.2995,False,23.129587841090785,43710.66011118889,inf,0.39557035112902283,72000 +6,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.67248,55976.22831273079,inf,0.8173056068837263,195999 +15,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.67436,73961.89125466347,inf,0.8173056068837263,195999 +23,imagenet_resnet_pytorch,trial_1,validation/accuracy,0.77431,False,0.68412,69928.90233135223,inf,0.8173056068837263,195999 +4,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.65356,95099.52543473244,inf,0.8838809331652617,167999 +13,imagenet_vit_pytorch,trial_1,validation/accuracy,0.77309,False,0.64404,92544.23992848396,inf,0.8838809331652617,167999 +2,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,False,0.0894317578332448,64575.97684216499,inf,0.6624823705895609,76000 +11,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0854922029643219,55846.44081497192,55846.44081497192,0.6624823705895609,76000 +20,librispeech_conformer_pytorch,trial_1,validation/wer,0.085884,True,0.0855018587360594,54098.90682005882,54098.90682005882,0.6624823705895609,76000 +8,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.119316371360981,36138.43036651611,36138.43036651611,0.5242204456710123,38400 +17,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.1196350118283203,43377.43124747276,43377.43124747276,0.5242204456710123,38400 +25,librispeech_deepspeech_pytorch,trial_1,validation/wer,0.119936,True,0.119750881089171,41911.17554831505,41911.17554831505,0.5242204456710123,38400 +3,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2844002947409835,6330.916296482086,6330.916296482086,0.21809077900113122,52000 +12,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2829456743930914,5872.041952133179,5872.041952133179,0.21809077900113122,52000 +21,ogbg_pytorch,trial_1,validation/mean_average_precision,0.28098,True,0.2842687873347874,6325.430662155151,6325.430662155151,0.21809077900113122,52000 +0,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.968261630078437,10325.45705485344,10325.45705485344,0.14011229786067375,120000 +9,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.90527060487547,11614.250758886335,11614.250758886335,0.14011229786067375,120000 +18,wmt_pytorch,trial_1,validation/bleu,30.8491,True,30.96477125743624,8397.619731426239,7755.601474523544,0.14011229786067375,120000 diff --git a/artifacts/tech_report_v1/section_7_frameworks/plot_framework_comparison.py b/artifacts/tech_report_v1/section_7_frameworks/plot_framework_comparison.py new file mode 100644 index 00000000..3851e9ce --- /dev/null +++ b/artifacts/tech_report_v1/section_7_frameworks/plot_framework_comparison.py @@ -0,0 +1,116 @@ +"""Framework step-time summaries and heatmap rendering.""" + +import re + +import matplotlib as mpl +import matplotlib.pyplot as plt +from matplotlib.colors import LinearSegmentedColormap, TwoSlopeNorm +import numpy as np + +from artifacts.tech_report_v1.report_utils import NOTEBOOK_STYLE, set_plot_style + + +LOG_RATIO_LIMIT = 2.5 +WHITE_TEXT_THRESHOLD = 1.6 +COLORBAR_TICKS = np.arange(-2, 3) + + +def step_times(df): + """Median seconds per step, per base workload.""" + out = {} + for workload, group in df.groupby('workload'): + base = re.sub(r'_(jax|pytorch)$', '', workload) + ratios = [] + for _, trial in group.iterrows(): + t = np.diff(np.asarray(trial['accumulated_submission_time']), prepend=0) + s = np.diff(np.asarray(trial['global_step']), prepend=0) + with np.errstate(divide='ignore', invalid='ignore'): + ratios.append(np.nanmedian(t / s)) + out[base] = float(np.median(ratios)) + return out + + +def plot_framework_comparison(ratios): + """Render a labeled JAX/PyTorch ratio matrix.""" + values = ratios.to_numpy() + set_plot_style(NOTEBOOK_STYLE) + JAX_C, PT_C, MID_C = '#3D6FC4', '#CC3311', '#f7f7f7' + cmap = LinearSegmentedColormap.from_list('fw', [JAX_C, MID_C, PT_C]) + norm = TwoSlopeNorm(vmin=-LOG_RATIO_LIMIT, vcenter=0.0, vmax=LOG_RATIO_LIMIT) + + fig, ax = plt.subplots(figsize=(6.5, 1.65)) + ax.grid(False) + + log = np.log2(values) + masked = np.ma.masked_invalid(log) + ax.imshow(masked, cmap=cmap, norm=norm, aspect='auto') + for i in range(values.shape[0]): + for j in range(values.shape[1]): + v = values[i, j] + ax.text( + j, + i, + f'{v:.2f}' if v < 10 else f'{v:.0f}', + ha='center', + va='center', + fontsize=8, + color='white' if abs(log[i, j]) > WHITE_TEXT_THRESHOLD else '#333333', + ) + ax.set_yticks(range(values.shape[0])) + ax.set_yticklabels(ratios.index, fontsize=8.5) + ax.set_xticks(range(len(ratios.columns))) + ax.set_xticklabels( + ratios.columns, + fontsize=8.5, + rotation=28, + ha='right', + rotation_mode='anchor', + ) + ax.set_title( + 'Step time, JAX ÷ PyTorch (matched batch sizes)', + fontsize=9, + loc='left', + pad=4, + ) + ax.tick_params(length=0) + for spine in ax.spines.values(): + spine.set_visible(False) + for j in range(values.shape[1] + 1): + ax.axvline(j - 0.5, color='white', lw=1.6) + for i in range(values.shape[0] + 1): + ax.axhline(i - 0.5, color='white', lw=1.6) + + cbar = fig.colorbar( + mpl.cm.ScalarMappable(norm=norm, cmap=cmap), + ax=ax, + fraction=0.05, + pad=0.03, + ticks=COLORBAR_TICKS, + ) + cbar.ax.set_yticklabels( + [f'{2.0**tick:g}' for tick in COLORBAR_TICKS], fontsize=8 + ) + cbar.set_label('JAX ÷ PyTorch ratio', fontsize=8) + cbar.ax.text( + 0.5, + 1.04, + 'PyTorch\nfaster', + transform=cbar.ax.transAxes, + ha='center', + va='bottom', + fontsize=7, + color=PT_C, + ) + cbar.ax.text( + 0.5, + -0.04, + 'JAX\nfaster', + transform=cbar.ax.transAxes, + ha='center', + va='top', + fontsize=7, + color=JAX_C, + ) + cbar.outline.set_visible(False) + + return fig diff --git a/pyproject.toml b/pyproject.toml index cfbef576..b8eec0be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,11 @@ dependencies = [ [project.optional-dependencies] dev = ["pytest==8.3.3", "ruff==0.12.0"] +analysis = [ + "jupytext==1.19.5", + "nbclient==0.11.0", + "ipykernel==7.3.0", +] [build-system] requires = ["setuptools>=45"] diff --git a/scoring/performance_profile.py b/scoring/performance_profile.py index f27a5244..76811964 100644 --- a/scoring/performance_profile.py +++ b/scoring/performance_profile.py @@ -39,32 +39,24 @@ NUM_TRIALS = 5 NUM_STUDIES = 3 -# MPL params -mpl.rcParams['figure.figsize'] = (16, 10) # Width, height in inches -mpl.rcParams['font.family'] = 'serif' -mpl.rcParams['font.serif'] = ['Times New Roman'] + mpl.rcParams[ - 'font.serif' -] # Add Times New Roman as first choice -mpl.rcParams['font.size'] = 22 -mpl.rcParams['savefig.dpi'] = 300 # Set resolution for saved figures - -# Plot Elements -mpl.rcParams['lines.linewidth'] = 3 # Adjust line thickness if needed -mpl.rcParams['lines.markersize'] = 6 # Adjust marker size if needed -mpl.rcParams['axes.prop_cycle'] = mpl.cycler( - color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd'] -) # Example color cycle (consider ColorBrewer or viridis) -mpl.rcParams['axes.labelsize'] = 22 # Axis label font size -mpl.rcParams['xtick.labelsize'] = 20 # Tick label font size -mpl.rcParams['ytick.labelsize'] = 20 - -# Legends and Gridlines -mpl.rcParams['legend.fontsize'] = 20 # Legend font size -mpl.rcParams['legend.loc'] = ( - 'best' # Let matplotlib decide the best legend location -) -mpl.rcParams['axes.grid'] = True # Enable grid -mpl.rcParams['grid.alpha'] = 0.4 # Gridline transparency +PLOT_STYLE = { + 'font.family': 'serif', + 'font.serif': ['Times New Roman', *mpl.rcParamsDefault['font.serif']], + 'font.size': 22, + 'savefig.dpi': 300, + 'lines.linewidth': 3, + 'lines.markersize': 6, + 'axes.prop_cycle': mpl.cycler( + color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd'] + ), + 'axes.labelsize': 22, + 'xtick.labelsize': 20, + 'ytick.labelsize': 20, + 'legend.fontsize': 20, + 'legend.loc': 'best', + 'axes.grid': True, + 'grid.alpha': 0.4, +} def print_dataframe(df): @@ -435,6 +427,8 @@ def plot_performance_profiles( Returns: None. If a valid save_dir is provided, save both the plot and perf_df. """ + mpl.rcdefaults() + mpl.rcParams.update(PLOT_STYLE) fig = perf_df.T.plot(figsize=figsize, alpha=0.7) df_col_display = f'log10({df_col})' if scale == 'log' else df_col fig.set_xlabel(f'Ratio of `{df_col_display}` to best submission') diff --git a/uv.lock b/uv.lock index 20450bbd..8dca826a 100644 --- a/uv.lock +++ b/uv.lock @@ -29,6 +29,11 @@ dependencies = [ ] [package.optional-dependencies] +analysis = [ + { name = "ipykernel" }, + { name = "jupytext" }, + { name = "nbclient" }, +] dev = [ { name = "pytest" }, { name = "ruff" }, @@ -37,7 +42,10 @@ dev = [ [package.metadata] requires-dist = [ { name = "absl-py", specifier = "==2.1.0" }, + { name = "ipykernel", marker = "extra == 'analysis'", specifier = "==7.3.0" }, + { name = "jupytext", marker = "extra == 'analysis'", specifier = "==1.19.5" }, { name = "matplotlib", specifier = "==3.9.2" }, + { name = "nbclient", marker = "extra == 'analysis'", specifier = "==0.11.0" }, { name = "numpy", specifier = "==2.1.3" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pytest", marker = "extra == 'dev'", specifier = "==8.3.3" }, @@ -45,7 +53,132 @@ requires-dist = [ { name = "scipy", specifier = "==1.14.1" }, { name = "tabulate", specifier = "==0.9.0" }, ] -provides-extras = ["dev"] +provides-extras = ["dev", "analysis"] + +[[package]] +name = "appnope" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/f7/a82489c2b6ebe32d3e2831895ae19c77861f0eadf3bb16034484d965dbb2/appnope-1.0.0.tar.gz", hash = "sha256:685db59cb6043c3c2e528adc0b3bce3a5f8d09bcf7492c6ea650d1b7421f3c49", size = 5454, upload-time = "2026-08-20T21:36:13.748Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/c7/6b687cb0f83d2a51017d47953f2ee430ffad6fec2a8ebc964e0718a33eb1/appnope-1.0.0-py3-none-any.whl", hash = "sha256:6fe0c04218aab65c54c4ff81638cdbf848d89f5653b74d68638a137f200dd16e", size = 4158, upload-time = "2026-08-20T21:36:12.444Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/1e/faf0f247f6f881b98fc4d6d07e14085cb89d13665084e6d6ac1dc2c03d0b/asttokens-3.0.2.tar.gz", hash = "sha256:3ecdbd8f2cc195f53ccada3a613538bb5f9ef6f6869129f13e03c30a677b8fe2", size = 63136, upload-time = "2026-07-12T03:31:49.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl", hash = "sha256:9da13157f5b28becde0bd374fc677dcd3c290614264eff096f167c469cd9f933", size = 28702, upload-time = "2026-07-12T03:31:47.542Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "cffi" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/ef/008a1939e372c06329a3fce4279c02f328488f3526744906eeec3da7ad5f/cffi-2.1.1.tar.gz", hash = "sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be", size = 530807, upload-time = "2026-08-03T21:21:18.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/d2/16d99a0c4948febc0ebd133a13b2f688ff7f8cb04da971e1128872ce0c03/cffi-2.1.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:c8d2c9fd1f2d16f780d15127abb050d13d1a76c03a4bd87d7e4980e45e511e12", size = 183838, upload-time = "2026-08-03T21:19:29.637Z" }, + { url = "https://files.pythonhosted.org/packages/cd/95/31b535a9f0220ae9f357de4a08d57ce89cb417653c2fd9f075f50822a388/cffi-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:398aff33cee2767e3e781d2554c54bd0dff386bb437581e0d8011fde1a942ec1", size = 184168, upload-time = "2026-08-03T21:19:30.764Z" }, + { url = "https://files.pythonhosted.org/packages/ad/5a/4707a0dc1f203f5dde5a907b0d4e3c25d71120241048bd5bc6f1bb9d4e71/cffi-2.1.1-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:154852545011f779917b11c78db2358d095da62a9a172b78ad0a583ee5adc0d0", size = 211805, upload-time = "2026-08-03T21:19:31.867Z" }, + { url = "https://files.pythonhosted.org/packages/ad/66/c19feabb28485b6e0bbaaafa90837a1ef5d302e90f2178bd33f17a49879b/cffi-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3311ed60d36f83378794e1009ac6258bafbf81f7888b4caa7b35a521e3f95813", size = 218716, upload-time = "2026-08-03T21:19:32.896Z" }, + { url = "https://files.pythonhosted.org/packages/a7/92/500760486c8baab49a7a8a58ba7fc3355ec3974b454b8a09e528efde9e1d/cffi-2.1.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6e192623c49c94421616a5778fba35cf0d5a8d000650c1967ef4448ee5cdd990", size = 205569, upload-time = "2026-08-03T21:19:34.142Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a7/a67c733254d6e7373f7822f8082d8d6beade791e0cf12a7611f376fa61c7/cffi-2.1.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a6e721d4b0e45d5b65e87534470e67b18dcd092c83f68fba09f152b9cbc061af", size = 204907, upload-time = "2026-08-03T21:19:35.174Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a4/4399daaf8f7dfee9d7c3327fdb0426ee041cc63edc358b93911ceb2bfc7a/cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:34e261f78cb6ceaaa36f42f2613f4380d94d9c759a9c73c769ee6e0247364632", size = 217807, upload-time = "2026-08-03T21:19:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/28/f7/dabe6da2466ecbd82dc62e7342dc6b1065dad990c06f00f0ede9ebf2a0ed/cffi-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7225e4514edb64eb6740324353e0da0711954fd8d7da4576755b1c6e09b697cd", size = 221252, upload-time = "2026-08-03T21:19:37.416Z" }, + { url = "https://files.pythonhosted.org/packages/ce/87/616202d8e51342c07d2534c510111c4cc37201775ce8f60802c9335d1edd/cffi-2.1.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df913725b79db7bcf03448f36b7bf8815363417d5b58deecf9305e3e30f0f21a", size = 214214, upload-time = "2026-08-03T21:19:38.507Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c6/ab025d75d2c26c19b087c0124e75ee31cb65032f4fe345d356d8c507ab97/cffi-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f5cfbc5fe74540d335175b656c725d74d90e3730c626d92575eea35029d9afaa", size = 219408, upload-time = "2026-08-03T21:19:39.809Z" }, + { url = "https://files.pythonhosted.org/packages/db/e2/7e8109f65445bdc673a7b54f02c677de462db75674220fd1335efc8eb598/cffi-2.1.1-cp311-cp311-win32.whl", hash = "sha256:f8ec5e643a9a937f64e1999eb9f75d072263751912dc5cd06d3c85f8f44be7c3", size = 174470, upload-time = "2026-08-03T21:19:41.246Z" }, + { url = "https://files.pythonhosted.org/packages/73/c0/77ba02423c2f7d7091143c45cd49e0e6575c4c1967394bb542bd923a9b74/cffi-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:42f6930c31dc7f50732c9ae793c2786c7b6b044195967bbdde40bb9be81c4cc0", size = 185096, upload-time = "2026-08-03T21:19:42.615Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/9f1f85f9672ceda4984dc6c4f8824e8558992a2972c3d3c81fb8eb28d4ba/cffi-2.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:c7659f22557c5a0bc4855cd635f55edec690cc008a40768527762cb9fb263455", size = 179941, upload-time = "2026-08-03T21:19:43.747Z" }, + { url = "https://files.pythonhosted.org/packages/10/69/43965eccfdead3b9220015fd1320e117be8c6ed01a62ffab76eeb752f5d5/cffi-2.1.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c8c69575568085ba0b1b10c0249d779a214aea6f6522e949a0fc9fb0fcb449d0", size = 184821, upload-time = "2026-08-03T21:19:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/54/7d/16e5a096677b5e313ca80cd5e5170efa3ea44624a82bb111925522da64b1/cffi-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f81b3b8f3d4e343550fa4baa0e479bba9f2d29ce9c2e9b51d1ce1718d7442fcf", size = 184719, upload-time = "2026-08-03T21:19:46.129Z" }, + { url = "https://files.pythonhosted.org/packages/56/e6/8941622732edec876dd17d0453dce07317ae96db34f2ec1436c9d3785986/cffi-2.1.1-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:811bd1e21d32de12efca32393a0ab3f5133b54fce9bd44b8bd77ab07da14bf6a", size = 214799, upload-time = "2026-08-03T21:19:47.218Z" }, + { url = "https://files.pythonhosted.org/packages/44/de/f98430906df1545ffde0d543dd124a7a439bc2cd32b36b9c53f805df7333/cffi-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:68e62fe11f30d5ca8289242866f0a5291402d8529ca2178ab8afc5c9694ae890", size = 222389, upload-time = "2026-08-03T21:19:48.331Z" }, + { url = "https://files.pythonhosted.org/packages/6a/5b/717f1526b9957b34456313c31645c5b82b8fb5c3fe9e4752999be7128bfc/cffi-2.1.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:4a7c934f7360e8cd64fe9efadcbd10c7c6364f531e432b9a4bf5ccbc9e0e8b50", size = 210249, upload-time = "2026-08-03T21:19:49.543Z" }, + { url = "https://files.pythonhosted.org/packages/64/b3/f8aa4f3e34986c7e4ec45072d1b1b9dd295b6b18007b45518d79726dd725/cffi-2.1.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:3143d81e29e1e20a9ce10901ec369012947876596f75a222235965f2b7ae832e", size = 208775, upload-time = "2026-08-03T21:19:50.918Z" }, + { url = "https://files.pythonhosted.org/packages/b1/db/dceb9dd5b231e1da801793f8acc9f3c52a7e1afe40bb1aae37e02b0faad5/cffi-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf", size = 221822, upload-time = "2026-08-03T21:19:52.054Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d2/6cd24ae3be000a634109c247d1475d62e5616d0dc78c82770942ec384248/cffi-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:208f941bb9d18e768138677f0a6d2ce01f590df56043dda1df1535ac57c88517", size = 225232, upload-time = "2026-08-03T21:19:53.109Z" }, + { url = "https://files.pythonhosted.org/packages/cb/52/3fa190537004dd7f0ab860a6dc7c0175b8667f68d1e618a46f5498d30250/cffi-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:210019b6c7cf07f081b4c54635c8cf744377001350e29cc0f81c4377b4797735", size = 223597, upload-time = "2026-08-03T21:19:54.515Z" }, + { url = "https://files.pythonhosted.org/packages/80/fb/0bb75b7039588c074b37ae99f40d9bfddf990ecb2fbc346ebccd2e56b9be/cffi-2.1.1-cp312-cp312-win32.whl", hash = "sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e", size = 175292, upload-time = "2026-08-03T21:19:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/d9/79/615cc094e2fb508cade7de88d3b4f6c4ec2bab695c97bce9153dc65aadf5/cffi-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f53e442b08449d42821fa4a4fba000095af9f62742a500f978a9f557ec44339a", size = 185919, upload-time = "2026-08-03T21:19:56.89Z" }, + { url = "https://files.pythonhosted.org/packages/70/c6/d0ea84713fe46b243a436a18fcd47d639732747e21635c8a27191b06dc30/cffi-2.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:7bde5e4cc5c10140859842b9d383af292b22639a4dffb725314baf45968cef80", size = 180093, upload-time = "2026-08-03T21:19:58.155Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f4/035513d4117049066b4779dc3b7c0c0fdad175fa13731c9f4003f1cd1478/cffi-2.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:b5bdfd1c873d4e093aabc0ca84c4ca6dbc4f752afb5c86f146d9742580c9da2e", size = 194248, upload-time = "2026-08-03T21:19:59.399Z" }, + { url = "https://files.pythonhosted.org/packages/76/af/2aeb4dbb5fc41a04161ae9ff1518de7cec08e164f44a8ce6a4cf7fd2cd1d/cffi-2.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:31348097ff5bbe827ccc41795d4dd099d9f0625e7def00ee653c137a490c2a6c", size = 196908, upload-time = "2026-08-03T21:20:00.746Z" }, + { url = "https://files.pythonhosted.org/packages/a7/46/2e5fdde8555706dd98139a910ca11be02809f3f605ce956f655d0214e100/cffi-2.1.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:9d2055050ea716bd38b7f7f1579c275386646b4894c155a3e2f3cd62ed41b7c6", size = 184805, upload-time = "2026-08-03T21:20:02.02Z" }, + { url = "https://files.pythonhosted.org/packages/55/41/4c7042f317b9217502988f0873af87e16ad606dc20f84e546e3e6ce9764c/cffi-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19ee6127ee34de7d83ce3d371ebc5ed91addbdcc39f9ab15ce4eb35a4e534971", size = 184764, upload-time = "2026-08-03T21:20:03.141Z" }, + { url = "https://files.pythonhosted.org/packages/43/1f/1c3d90d91811c8f86ced9ed637956c54bfe5b79ca98fe976d7f8c8979f6b/cffi-2.1.1-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:6a8dddef476fab96d066d578fc88526767b836ab5ab21754e1d5bf3879c31c7c", size = 214722, upload-time = "2026-08-03T21:20:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/3b5ce4c3b2192d250f04908f2bfd91ef34552ec8f7716a5d4abdb8d67bb2/cffi-2.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f16c709686a78c727bbbf059f92b0bf41c6fc60deec706d2dc19f529175a6125", size = 222369, upload-time = "2026-08-03T21:20:05.544Z" }, + { url = "https://files.pythonhosted.org/packages/02/10/4b3c75dde3d9663c9e02ba05c2668b954f671d4bbe346413ca8c696b295a/cffi-2.1.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:fcd22650c908d7b7da162bbfaab594a1227a15d1643a98c68b122ac642fa2264", size = 210175, upload-time = "2026-08-03T21:20:06.75Z" }, + { url = "https://files.pythonhosted.org/packages/df/62/14f74b9543e605d17701dc797b815958b8bb70b7624ce1b832ddad48ed6c/cffi-2.1.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:aa9511c62d14da7aacc9b4bf51f3f697a621e83b2d6919008243c3aad168eea3", size = 208670, upload-time = "2026-08-03T21:20:08.04Z" }, + { url = "https://files.pythonhosted.org/packages/95/95/86342356ff5953b3fb06f7ef7c5bee212d45e770abc7218d451b9148313c/cffi-2.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a931079504ecc49efed7744c476a5c343a92fabf66dec2db95edb1b2fdc770e2", size = 221824, upload-time = "2026-08-03T21:20:09.274Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ff/7b3429ff53aafe931ed8a5fc69f481bbef7ba6de87ddcbb63d08f483f613/cffi-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a2d7755bef5a12ed488f4ef1f1b69ee9191d7396083b755a5d2295f6edb4768b", size = 225148, upload-time = "2026-08-03T21:20:10.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/34/a95870b9221e09cf4f2ce3178b1a210abdfe63a1bd357da940418d7b8d15/cffi-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e0bcb7e0f677f543555d2adff3bf19c05f66cdb4796e5ff602442ab2fe3c4ef7", size = 223564, upload-time = "2026-08-03T21:20:12.165Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/839b50531021a647fb5e929f72cf97bc1ff702b5472166164b5b6e76b851/cffi-2.1.1-cp313-cp313-win32.whl", hash = "sha256:334644fbac4eff73d985a17a91226df55d0f394160c4cfb880e084c8f7161cac", size = 175263, upload-time = "2026-08-03T21:20:13.559Z" }, + { url = "https://files.pythonhosted.org/packages/60/a6/8b149b2c3f2e11aaa1618ef64500b45f50f22c57a977a4dff1aff1f91042/cffi-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:1aa5645c30469b09530c4ebca77ebf8f17618293c58f8549cb1a543a50236e7d", size = 185688, upload-time = "2026-08-03T21:20:14.69Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/11f687cb39d6a3504060d5242f04f48c735afb4d3d533958a20594890cb2/cffi-2.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:63bbfd5ded17c4840ac07cd8f1c21ba9d9708141f840b324f422f41b207e3973", size = 180078, upload-time = "2026-08-03T21:20:15.917Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7b/d6bbf82b8b96e7391438898c42f5bd96dd02030fd5b64937d248220003e2/cffi-2.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7dbb61fe3a7699468030f71bbe5f8a0e326a151daa91beb11a6fc1f980c55e1c", size = 194064, upload-time = "2026-08-03T21:20:17.148Z" }, + { url = "https://files.pythonhosted.org/packages/94/e6/bcc91b283be94735e268487a054004f0aa19947b6348fa367db53230abc8/cffi-2.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:f24fb43132a4c6b4cb4eb029492919b2db645be6808d738f244fd146c03c32cb", size = 196720, upload-time = "2026-08-03T21:20:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/d9/99/c4b0c17cacdc9c3b8f280026286a9826d6a208c0f047591a3c3ce99b91fd/cffi-2.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d28630f5854ab07ab1fd4aba756de52326c82e6be15d414b12793f1975048b54", size = 184964, upload-time = "2026-08-03T21:20:19.708Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a9/9db617d05d7367c1ad0ab00b3aa6e6f9281edd689b4ee9ea0e5a84e89c97/cffi-2.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:661c298b4821edebead0c91edd2b00374d67ad7c5a1f7a91d4442633b79d6a72", size = 184962, upload-time = "2026-08-03T21:20:20.833Z" }, + { url = "https://files.pythonhosted.org/packages/67/b8/b42132ca113dc567d37684437b46ca1dafc885902b02a110a02d5b511857/cffi-2.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58acb8ab8e295e6c5ea12f888cbb13cf21511ef2a3303a23f4325c29d17fe5c1", size = 222328, upload-time = "2026-08-03T21:20:22.118Z" }, + { url = "https://files.pythonhosted.org/packages/80/10/c5c0cbf0a657aecf59ef511409734230bf556f05a0d6c9eed7aa5c0a0166/cffi-2.1.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:456a61fa52d579ebf9df2e9552ead5129855dbaff6c1e5a9b1bc408809bdc062", size = 209985, upload-time = "2026-08-03T21:20:23.401Z" }, + { url = "https://files.pythonhosted.org/packages/d5/6c/bfa0b87b03b9238148beca990292843c9396ba069b54496596594173de7b/cffi-2.1.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a4f00aa42f75d6e4595e8866e748cc1705adc0cddfeb2ca86d0d03993d63ba03", size = 208530, upload-time = "2026-08-03T21:20:24.628Z" }, + { url = "https://files.pythonhosted.org/packages/e9/02/4e7d553a7ac4b4238b38b3c1b80d486e9d4436f8d2acbf87a0997fe3f402/cffi-2.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b0431303acaea1089ad4b3e9ce4e6518193def1118d4073ca848635ee4ea2e96", size = 221525, upload-time = "2026-08-03T21:20:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/82/1d/a4aaf9babd75acb4d5f223bff71533bee748dd770a382619a798960ee9ba/cffi-2.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:64faea20f4e2613363a1a9b9c7dd73058f3ecd00133a511e72ad7c511658f527", size = 225053, upload-time = "2026-08-03T21:20:26.985Z" }, + { url = "https://files.pythonhosted.org/packages/81/10/5dc0e7bdd18e22107054288283380fc97a06ae3f1656a106908d666a3c88/cffi-2.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5c58fe613dc5e5336357eff555824a314d8e43282600435c8d1cb6a7a2fedd13", size = 223213, upload-time = "2026-08-03T21:20:28.277Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e9/d0061c364cde06ee43168a0d076ac1da512cbc380d44767b844ba34fe2b6/cffi-2.1.1-cp314-cp314-win32.whl", hash = "sha256:1a18a57b58cfb21fc28d72e876acf10eaed67a1ed96226f92af4df681d571c4c", size = 177682, upload-time = "2026-08-03T21:20:44.288Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/1c3e01e3ba14c39f6d10bfbac52753b7e22259e38088e5cfe1d704918690/cffi-2.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:3222ba5d678f80a030e6afbcc33dc1ae5cb45facabb61cee2c7016b8432fde48", size = 187949, upload-time = "2026-08-03T21:20:45.623Z" }, + { url = "https://files.pythonhosted.org/packages/87/5b/da4e39efe18eeb89cf580ea9cfc66b6a7c3eadb808fc0cc1d3a295cb5a5d/cffi-2.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:ab36d55f9ed2d067327667c2fea18dda018eb628dd6347aa01dda6cf1f5d3836", size = 182947, upload-time = "2026-08-03T21:20:46.955Z" }, + { url = "https://files.pythonhosted.org/packages/23/59/40338bf421c5accea1d45158170c87006ef1cd371b05c077e76476949728/cffi-2.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7750c6449dff7864bb9bb27ddfb0267756189201a3afc911d82b3caacd70dfc3", size = 188504, upload-time = "2026-08-03T21:20:29.495Z" }, + { url = "https://files.pythonhosted.org/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0beceaabe56af686895136a2de78db54ecd8e4046b236b8fd6d6cb61389e9bf2", size = 188259, upload-time = "2026-08-03T21:20:31.291Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9c/92934c3bea9f785b23eba304538c0b4d37a2a96d2431eb3a1bc87a11aa19/cffi-2.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:49cbc70e6542d4ccccb936558d1064a8012541e78f821f955cff24e357776c94", size = 223864, upload-time = "2026-08-03T21:20:32.571Z" }, + { url = "https://files.pythonhosted.org/packages/4d/45/ba4c93527bc38616a8bd36488acb69a2212d60486794f0c1f318949bbb76/cffi-2.1.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e2d65b31f36619cda3999b78b2aa9632e76b78448e7a56fc4240824200e7c4fc", size = 211538, upload-time = "2026-08-03T21:20:33.808Z" }, + { url = "https://files.pythonhosted.org/packages/80/e9/b6ef565e452acb932fb0cb5443f44a78efbd1233e566f02b5a83855e9115/cffi-2.1.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:28907ab9bfb6aa13184cfc17c6b8e1023c5ab6fd7076d8c20a35e59fe04f8f29", size = 210688, upload-time = "2026-08-03T21:20:34.974Z" }, + { url = "https://files.pythonhosted.org/packages/9a/95/eff5f0cee78d2eabc7eebffec40d3fc1876b5f3c95582e018bb4b99601f2/cffi-2.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51b31d1c98274844cfd7838ce00bfc27c7423a4dc00fc0772fc3331c2cc90676", size = 223803, upload-time = "2026-08-03T21:20:36.564Z" }, + { url = "https://files.pythonhosted.org/packages/fa/01/579d39fb8bef00a335a23d83757b44feb24cd6345a2c451b64cb67b9c362/cffi-2.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e7cecbaadb83884793e05828cee59b210b24583b9c7425d0ba6a754fe22eb4e", size = 226763, upload-time = "2026-08-03T21:20:37.816Z" }, + { url = "https://files.pythonhosted.org/packages/8d/b0/0b44f47c60b01b57b6e2bbd92343f13a85a1d93bc46ccf6e47e244acd99c/cffi-2.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:25792eac27877609e7bb06d42ff88278a6624fff2ba9bbb523c09616b117e80f", size = 225688, upload-time = "2026-08-03T21:20:38.959Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d2/3b7176cb570a1d3e27faf67b72f591af508036e0d8b2be2ef9af9e8c84bb/cffi-2.1.1-cp314-cp314t-win32.whl", hash = "sha256:8ef53b2de9bcb9197d31854256575d59dbac0cba72ac627bb291ef5eceb74be4", size = 182868, upload-time = "2026-08-03T21:20:40.388Z" }, + { url = "https://files.pythonhosted.org/packages/56/78/31f00c1bcd97c9bbf55f1bfdf5bc809a5de8887473e90bb9960dca825e80/cffi-2.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:616f097f2fe415bc92a247f02e11f634e1f9e9a83d327e3c915c15089c87869e", size = 194104, upload-time = "2026-08-03T21:20:41.725Z" }, + { url = "https://files.pythonhosted.org/packages/7b/1b/58496f2ed0a35de575250c02a43ab3cc2c04d494a88fed31c1cabc0fd176/cffi-2.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ad2c86c495b899d862ea0f4b42891b8713a3bd45dd4105c7fd51c2a72f39f3a5", size = 186402, upload-time = "2026-08-03T21:20:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8f/9ebe220eab48a093d1a5a5e339ab0dc7316eef3bb04d63c42f0251b61f50/cffi-2.1.1-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:dddad92b554513a31f272570678ba307fb9f618f05e3d4a5eacafff9eae03e1d", size = 194043, upload-time = "2026-08-03T21:20:48.179Z" }, + { url = "https://files.pythonhosted.org/packages/ff/69/844bad3ece306c4782c2ecb93597035b6690d48704b803914c199da1e8b3/cffi-2.1.1-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:da0e573f9f97159390c89d9f1a9e41908b66d408cc5b58d08cf3847d844c531b", size = 196737, upload-time = "2026-08-03T21:20:49.457Z" }, + { url = "https://files.pythonhosted.org/packages/1b/8a/af668013284634733f02d683458a0728739c7d6ddb5e14cb0c20832266fe/cffi-2.1.1-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:fb92203a88b3d3053034db775110081c49d28be6551923805e039924093761e4", size = 184933, upload-time = "2026-08-03T21:20:50.639Z" }, + { url = "https://files.pythonhosted.org/packages/0c/75/2f5207ff6d1a613133b23a5203cc0c2a628313b5eb3974d7956ae3c57950/cffi-2.1.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2ae64be792b8966f2c69538199728b290e34726562896df1e5dc8ffd8d8188e8", size = 185002, upload-time = "2026-08-03T21:20:52.173Z" }, + { url = "https://files.pythonhosted.org/packages/e2/31/9e1313b0a6e30e91b3b3d3fff51ae99c857c07738e3afcce1f7334e1b7ab/cffi-2.1.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:507a24c282e0f42f8ed737cf048572cbf580468da5555764a8331735e9c736b6", size = 222271, upload-time = "2026-08-03T21:20:53.462Z" }, + { url = "https://files.pythonhosted.org/packages/50/e3/f6234a833e6e08c7007003074723c406559eecf9b48dfc97471e5a8eb7a0/cffi-2.1.1-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:246fa40ce8645a614ff682e0b70f37134e460eaf93a775e0cbe3cca585a67a80", size = 209919, upload-time = "2026-08-03T21:20:54.783Z" }, + { url = "https://files.pythonhosted.org/packages/0d/fc/5f74e293fced6edb51af3a46c4ccf6c23c9943774ecb375ddbd522c76add/cffi-2.1.1-cp315-cp315-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:471cee653ae88de62096552e6d24ccb4a5adb8c8c9f10b5054d0122c15bf2779", size = 208529, upload-time = "2026-08-03T21:20:56.066Z" }, + { url = "https://files.pythonhosted.org/packages/44/16/29e6d01b388bef055ecd6ca8244b3f4d336bd09e92d5d892187b9601084e/cffi-2.1.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeae0e330c9f6acd681f647d46cefd30c29f93e3392882e792e82080c9691399", size = 221630, upload-time = "2026-08-03T21:20:57.336Z" }, + { url = "https://files.pythonhosted.org/packages/a4/18/fa7f1f6857d5eb88a4ca99ffcbfb7c387a287ccc154c64a73e86314745d7/cffi-2.1.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:42a494cee34437f05546455144f2b5d9ac09b1face62bcfce597d2e521066688", size = 225134, upload-time = "2026-08-03T21:20:58.675Z" }, + { url = "https://files.pythonhosted.org/packages/e0/9f/e8e3dfa04a1b4c241f8c91faacad872b4d4efd051d49764ad4e2fd4b9fea/cffi-2.1.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:cc572dace3f60ef98d7b12ff411d20f5362feb31a0439eab0085bbfd349982d7", size = 223197, upload-time = "2026-08-03T21:20:59.968Z" }, + { url = "https://files.pythonhosted.org/packages/f8/7e/8debeb04f1ab9fe2a6963964cd6f1aaf7192627b83926586a6a4e089c9fa/cffi-2.1.1-cp315-cp315-win32.whl", hash = "sha256:4f42141fc14250de6dde5ee7ea4432be017252d91f19c5ad043c084cea629cac", size = 177683, upload-time = "2026-08-03T21:21:14.901Z" }, + { url = "https://files.pythonhosted.org/packages/e0/31/5158704cc474ab65c1647932e88be78dc0873f47130e253be38bcaf13d01/cffi-2.1.1-cp315-cp315-win_amd64.whl", hash = "sha256:e6e8cff14d6fb0be70a09c0bdc58096f501952d04624ebf867e0e56da2df8960", size = 187897, upload-time = "2026-08-03T21:21:16.108Z" }, + { url = "https://files.pythonhosted.org/packages/cc/4b/b3a2da8570c704ffc0f9762cdc3ec0f02c8573798e0b5cf7f11c82bbb70f/cffi-2.1.1-cp315-cp315-win_arm64.whl", hash = "sha256:27350daa11d4f10c540e6e89dada4c54feb7256ad03e9a4dc075ebad7ba360d1", size = 182935, upload-time = "2026-08-03T21:21:17.271Z" }, + { url = "https://files.pythonhosted.org/packages/d0/ef/5443574510a1207e6f6bc38ba6e1f1de36cb48fef07b2728bb896a21f430/cffi-2.1.1-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:c26608d2222fb1e94487e4a387d85f13eb55d5ed725cb25a0c589ac4ee60e7bc", size = 188464, upload-time = "2026-08-03T21:21:01.163Z" }, + { url = "https://files.pythonhosted.org/packages/7e/ae/a56fa8c4686ad50e148fcbc8d3ae0d03915ff5c30d795058988c24118cef/cffi-2.1.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:4be96343e422f2dfcd12ab5c9f5aebe03f82f737c6bffeca6830b3875cb44aab", size = 188262, upload-time = "2026-08-03T21:21:02.382Z" }, + { url = "https://files.pythonhosted.org/packages/53/b2/6187f46f2912276a3ae284076109cc5c8680482f11f766ccf26db4a86427/cffi-2.1.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:937c0052c05a31ca1daf18de3158eed4dbfcb9cc107adbea227728d647be701e", size = 223779, upload-time = "2026-08-03T21:21:03.553Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f6/c3ad28bd19f77047a03084424fbd4cbe997303267c14423737324be0385d/cffi-2.1.1-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:df423d40ee8654634421812bc3b196da3f9bd7d32929da813f8394c4348a5358", size = 211520, upload-time = "2026-08-03T21:21:04.863Z" }, + { url = "https://files.pythonhosted.org/packages/a0/cd/ccac9013a5bd9fd764de118674ab9c805b5ca10c19270d90ee273f8b2240/cffi-2.1.1-cp315-cp315t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a730a083190634c65cca36ba5f489531576ebd79bcd5c8e172130f6453127231", size = 210673, upload-time = "2026-08-03T21:21:06.223Z" }, + { url = "https://files.pythonhosted.org/packages/52/86/2976131c639aead931c5bee5aba67e4b09fbeb8018b6f282f70803f923a7/cffi-2.1.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:363e05fa78e15116c3c32c210ee36884fd6b9afa6d440e47112c3bd511d64cb6", size = 223835, upload-time = "2026-08-03T21:21:07.539Z" }, + { url = "https://files.pythonhosted.org/packages/ac/0c/33a7aeab2f9c76918c52e084beb39c570db3588133412929e8ec06fab90b/cffi-2.1.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:770de9db11e84213beec501cfcaa013b019820ca881e03344dea5844f7876d94", size = 226705, upload-time = "2026-08-03T21:21:08.774Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/2cde30fdde421130bfc18f70395731a6e6b2053c6a1978a5258ff04e72fa/cffi-2.1.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:7da0c5eff80f0197f3b3d1232ec5a682a9325f4ae9016a78f5f5ca35f9ced1f5", size = 225539, upload-time = "2026-08-03T21:21:09.911Z" }, + { url = "https://files.pythonhosted.org/packages/6d/cd/a361394c94b2129d604bb846f624a8e88255a3ee33129c434a00d715e64f/cffi-2.1.1-cp315-cp315t-win32.whl", hash = "sha256:06c72bb76605a4b0cd0aad6930b69d4baf7dd5d806cfc409b824191099700e66", size = 182707, upload-time = "2026-08-03T21:21:11.226Z" }, + { url = "https://files.pythonhosted.org/packages/9b/b5/ba2b299993c26577d529b6ae29841f9e15b9fcf004d65f423f4fcf94ade9/cffi-2.1.1-cp315-cp315t-win_amd64.whl", hash = "sha256:d9c275eaacd24aa73f94ffd6de08fc3f932424d8b6c376f4bed7cde376fe7bc3", size = 193772, upload-time = "2026-08-03T21:21:12.39Z" }, + { url = "https://files.pythonhosted.org/packages/aa/29/35e016098c814cd93de9cd320c66b5bfba14dc6ecedd3cb518fa7c408c69/cffi-2.1.1-cp315-cp315t-win_arm64.whl", hash = "sha256:d18e5ac0f2f03f4f518d3e23db0f0cad7faa1da8620e9c09461d443bbf6e6692", size = 186360, upload-time = "2026-08-03T21:21:13.636Z" }, +] [[package]] name = "colorama" @@ -56,6 +189,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + [[package]] name = "contourpy" version = "1.3.3" @@ -147,6 +289,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] +[[package]] +name = "debugpy" +version = "1.8.21" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/aa/12037145b7a56eaa5b29b41872f7a21b538e807e13f32c4d3c46e59be084/debugpy-1.8.21.tar.gz", hash = "sha256:a3c53278e84c94e11bd87c53970ec391d1a67396c8b22609fcac576520e611a6", size = 1697577, upload-time = "2026-06-01T19:30:35.156Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/fb/cbf306d6e07a313a91e7171a98669054502840931432c227cfd505ee367f/debugpy-1.8.21-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:da456226c7b4c69e35dbe35dcee6623d912000a77816db7856a41af1c72a0264", size = 2203120, upload-time = "2026-06-01T19:30:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/aa/57/aa739bd4ad2cbf96aeb1b20b56918ddd5ae4c28b68709bfcd327f02123ee/debugpy-1.8.21-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:f68b891688e61bdc08b8d364d919ff0051e0b94657b39dcd027bc3173edb7cdc", size = 3059958, upload-time = "2026-06-01T19:30:45.622Z" }, + { url = "https://files.pythonhosted.org/packages/a8/31/453d2c9a23d133fe2c8ec7ca1d816ded52a913487fe3ffef7c01b4b706af/debugpy-1.8.21-cp311-cp311-win32.whl", hash = "sha256:f843a8b08c2edeaf9b1582eed4f25441af21a297c22ff16bf76a662557aa9c9e", size = 5236515, upload-time = "2026-06-01T19:30:47.461Z" }, + { url = "https://files.pythonhosted.org/packages/60/94/6660de2f2d7bf388f229335ba4637646eebabdbf38564cb439a95a9193c9/debugpy-1.8.21-cp311-cp311-win_amd64.whl", hash = "sha256:84c564d8cc701d41843b29a92814c1f1bef6798724ca9d675c284ad9f6a547d7", size = 5256138, upload-time = "2026-06-01T19:30:49.113Z" }, + { url = "https://files.pythonhosted.org/packages/a2/df/bf625547431a9cadc9f4cbfeda38866e2b17f6aed147b625377e87834449/debugpy-1.8.21-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:9f96713896f39c3dff0ee841f47320c3f2983d33c341e009361bb0ebc79adc4e", size = 2483609, upload-time = "2026-06-01T19:30:50.794Z" }, + { url = "https://files.pythonhosted.org/packages/bf/09/59324b903599031ff9faaec1758292409f6561a0ec2492fe4b703327705a/debugpy-1.8.21-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:c193d474f0a211191f2b4449d2d06157c689013035bd952f3b617e0ef422b176", size = 3968900, upload-time = "2026-06-01T19:30:52.341Z" }, + { url = "https://files.pythonhosted.org/packages/14/cd/27f65b805d7fe005c44e1a36b9183ecdfbcdbf9d3e721a5115d461ecc7ee/debugpy-1.8.21-cp312-cp312-win32.whl", hash = "sha256:4743373c1cac7f9e74a1b9915bf1dbe0e900eca657ffb170ae07ac8363205ae9", size = 5336340, upload-time = "2026-06-01T19:30:54.047Z" }, + { url = "https://files.pythonhosted.org/packages/77/1d/c84e30c0c674184948b66f076ab271c01d940618a2824c23cd035a27bc20/debugpy-1.8.21-cp312-cp312-win_amd64.whl", hash = "sha256:bd7ba9dd3daa7c2f942c6ca8d4695a16bf9ac16b63615261c7982bc74f7ed20c", size = 5374751, upload-time = "2026-06-01T19:30:55.891Z" }, + { url = "https://files.pythonhosted.org/packages/77/6b/d817e1f8cc77aa055d37fba092e0febfdff40fe652d8d53d4cd7a86ad98d/debugpy-1.8.21-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:13678151fc401e2d68c9880b91e28714f797d40422994572b24560ef80910a88", size = 2477398, upload-time = "2026-06-01T19:30:57.644Z" }, + { url = "https://files.pythonhosted.org/packages/48/57/412421516afc3055fa577516f00beec3d663f9b0ab330639547ae6c57720/debugpy-1.8.21-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:ecbd158386c31ffe71d46f72d44d56e66331ab9b16cad649156d514368f23ab2", size = 3962096, upload-time = "2026-06-01T19:30:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/c1/62/2c616337cf6ba7b07ebbc97f02c6c945a8e2f76b365e33ee809c32ee36d1/debugpy-1.8.21-cp313-cp313-win32.whl", hash = "sha256:2c2ae706dec41d99a9ca1f7ebc987a83e65578363be6f6b3ac9067504917fae1", size = 5336288, upload-time = "2026-06-01T19:31:00.79Z" }, + { url = "https://files.pythonhosted.org/packages/f8/99/9175103392f84c4b1bf7622888cdc68da07f0ff7d9e581266428f6776033/debugpy-1.8.21-cp313-cp313-win_amd64.whl", hash = "sha256:aa648733047443eb1d07682c4ef287d36a54507b643ffdf38b09a3ef002c72a0", size = 5376567, upload-time = "2026-06-01T19:31:02.56Z" }, + { url = "https://files.pythonhosted.org/packages/ce/3d/f4bbb323a548bfab2af3d6b4ffd9bf22636e55956a1285d317a1de643aad/debugpy-1.8.21-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:9bb2a685287a2ac9b181cde89edcec64845cb51de7faaa75badb9a698bc24782", size = 2477209, upload-time = "2026-06-01T19:31:04.157Z" }, + { url = "https://files.pythonhosted.org/packages/8c/2d/6e7ec524984a1702777868de49a4c53202bddac2a432a76a093469587750/debugpy-1.8.21-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:3d6922439bf33fd38a3e2c447869ebc7b97da5cd3d329ff1ef9bc06c4903437e", size = 3927115, upload-time = "2026-06-01T19:31:05.863Z" }, + { url = "https://files.pythonhosted.org/packages/97/47/d1aa6d64005a98a9144647d99306b419396f9ad7bf1d73c119e17a81fb4d/debugpy-1.8.21-cp314-cp314-win32.whl", hash = "sha256:15d4963bd5ffa48f0da0947fd06757fa7621945048a14ad7705431566d3c0e7c", size = 5336724, upload-time = "2026-06-01T19:31:07.711Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/b905b90d163af11878c1af8abafa4a25206335e112e284e413454543a6da/debugpy-1.8.21-cp314-cp314-win_amd64.whl", hash = "sha256:fe0744a12353406de0ae8ccff0d0a4a666f00801a3db8fd04e7a5f761cd520e8", size = 5373803, upload-time = "2026-06-01T19:31:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl", hash = "sha256:b1e37d333663c8851516a47364ef473da127f9caebe4417e6df6f5825a7e9a92", size = 5352888, upload-time = "2026-06-01T19:31:25.186Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.22.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/a4/9473c7c3b87009d9c1d74034e4a0f6a35ff0d42dd0f9866d0c3ec4e9217b/fastjsonschema-2.22.2.tar.gz", hash = "sha256:72064e12356a7d6ef02165be2946b9abadbdf238536e07eb587e3dbaa33099cf", size = 385171, upload-time = "2026-08-15T19:47:08.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/82/2755c7c982086f00d4dab85bc120ec35045a9fc2191893a6ce79afe94443/fastjsonschema-2.22.2-py3-none-any.whl", hash = "sha256:0fb3915616adac85ccfdd737d26be1089845d2019819505b42d39888458f74d4", size = 27413, upload-time = "2026-08-15T19:47:04.406Z" }, +] + [[package]] name = "fonttools" version = "4.63.0" @@ -205,6 +390,149 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] +[[package]] +name = "ipykernel" +version = "7.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio2" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/c4/e4a38f579de4225a561305666f7541cdabb30075def2aa1ac17bd73c1fb5/ipykernel-7.3.0.tar.gz", hash = "sha256:9acaaaf97d16355166e4085afe9d225bfbdf2b7ef520f9df3be8f2b248275e09", size = 184899, upload-time = "2026-06-10T08:41:25.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/02/77b271f5dc58bfbc0b577c877b2365d1ffea2afe66a80c13f2312820348c/ipykernel-7.3.0-py3-none-any.whl", hash = "sha256:897eb64da762549ef610698fca5e9675195ec6ac8ec7f19d81ce1ca20c876057", size = 120583, upload-time = "2026-06-10T08:41:23.648Z" }, +] + +[[package]] +name = "ipython" +version = "9.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "psutil", marker = "sys_platform != 'cygwin' and sys_platform != 'emscripten'" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/32/99451b1283ec5d92ad77073f12e1c667dc10775384d8f15c2914207149dd/ipython-9.17.1.tar.gz", hash = "sha256:8919be8c27f20a6f4423145028063f6637b42a03ce57665bb12015ee1f073529", size = 4539289, upload-time = "2026-09-01T08:29:32.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/1e/65b59cf518c106aa755e7f7da3099027738687a862ec785060702a481320/ipython-9.17.1-py3-none-any.whl", hash = "sha256:6d1645743cfd1a07eb695d85aa2b5fa66721f8cbae9431d4049f7084bbf06509", size = 639038, upload-time = "2026-09-01T08:29:30.673Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "jedi" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/b7/a3635f6a2d7cf5b5dd98064fc1d5fbbafcb25477bcea204a3a92145d158b/jedi-0.20.0.tar.gz", hash = "sha256:c3f4ccbd276696f4b19c54618d4fb18f9fc24b0aef02acf704b23f487daa1011", size = 3119416, upload-time = "2026-05-01T23:38:47.814Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl", hash = "sha256:7bdd9c2634f56713299976f4cbd59cb3fa92165cc5e05ea811fb253480728b67", size = 4884812, upload-time = "2026-05-01T23:38:43.919Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/2a/906772148a06e48885039e0250c340b770a55bbf37b08d6ee0449df369c3/jupyter_client-8.10.0.tar.gz", hash = "sha256:9f7116294dca55f1785be880057d44544db9b1567718d92cb33c58886afb9497", size = 360653, upload-time = "2026-08-28T12:17:10.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/88/7c548de1f6c2ade7c931a3282da73f9274fa6a1531091be682f89c85efb9/jupyter_client-8.10.0-py3-none-any.whl", hash = "sha256:5f73f24f22fa25192cfff6b23c051932a2473a797b05734aff495b392103e14e", size = 110184, upload-time = "2026-08-28T12:17:09.028Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + +[[package]] +name = "jupytext" +version = "1.19.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "mdit-py-plugins" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/ca/473f8ebb101553fb2ea6ab1d34324d6677844c968947ac050c759d539f2c/jupytext-1.19.5.tar.gz", hash = "sha256:605026446d605aa54fd7f7fc69df6ae51c7a46053d4cebf05afdc64d66de3df0", size = 4600916, upload-time = "2026-07-21T22:00:29.198Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/c6/76ee9dacedcd8c67d8fa53dd975613733bdd28242a4c41518ff1c8aeaa64/jupytext-1.19.5-py3-none-any.whl", hash = "sha256:af22351202171116b986fe1f4f9233a13ca4a85d5eec57a87900ed48521dbae4", size = 229246, upload-time = "2026-07-21T22:00:27.218Z" }, +] + [[package]] name = "kiwisolver" version = "1.5.0" @@ -311,6 +639,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0a/dd/8050c947d435c8d4bc94e3252f4d8bb8a76cfb424f043a8680be637a57f1/kiwisolver-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1", size = 73558, upload-time = "2026-03-09T13:15:52.112Z" }, ] +[[package]] +name = "markdown-it-py" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, +] + [[package]] name = "matplotlib" version = "3.9.2" @@ -353,6 +693,78 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/01/8a/760f7fce66b39f447ad160800619d0bd5d0936d2b4633587116534a4afe0/matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e", size = 9093770, upload-time = "2024-08-13T01:45:15.562Z" }, ] +[[package]] +name = "matplotlib-inline" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/c0/9f7c9a46090390368a4d7bcb76bb87a4a36c421e4c0792cdb53486ffac7a/matplotlib_inline-0.2.2.tar.gz", hash = "sha256:72f3fe8fce36b70d4a5b612f899090cd0401deddc4ea90e1572b9f4bfb058c79", size = 8150, upload-time = "2026-05-08T17:33:33.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl", hash = "sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6", size = 9534, upload-time = "2026-05-08T17:33:32.055Z" }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/fc/f8d0863f8862f25602c0404d75568e89fb6b4109804645e5cdfb1be5cf56/mdit_py_plugins-0.6.1.tar.gz", hash = "sha256:a2bca0f039f39dbd35fb74ae1b5f998608c437463371f0ff7f49a19a17a114d0", size = 56114, upload-time = "2026-05-13T09:03:38.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/69/6da5581c6a7fede7dc261bf4e67d6adca4196f176b43288b55b3db395b6e/mdit_py_plugins-0.6.1-py3-none-any.whl", hash = "sha256:214c82fb2ac524472ab6a5bcab1de80f73b50443e187f401bfd77efbc7c6481d", size = 66663, upload-time = "2026-05-13T09:03:37.76Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "nbclient" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/a5/b3bae4b590c0cbcada2c63a34f7580024e834a8ba213e949a2f906705787/nbclient-0.11.0.tar.gz", hash = "sha256:04a134a5b087f2c5887f228aca155db50169b8cd9334dee6942c8e927e56081a", size = 62535, upload-time = "2026-06-05T07:52:41.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/c9/94d73e5a01c5b926c3fa2496e97d7a8dc28ed5a77c0b2ed712f1a62e6694/nbclient-0.11.0-py3-none-any.whl", hash = "sha256:ef7fa0d59d6e1d41103933d8a445a18d5de860ca6b613b87b8574accdb3c2895", size = 25288, upload-time = "2026-06-05T07:52:40.115Z" }, +] + +[[package]] +name = "nbformat" +version = "5.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/31/72/b3446efab8756e7df4b8ec587f8e611cb5a7249e4323db480802f1d3be04/nbformat-5.11.1.tar.gz", hash = "sha256:32d4521c68c6e7d5b29c76defaeed9f42ea733142b9b19f88277ce10390b9c4d", size = 147775, upload-time = "2026-08-17T08:10:51.942Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/69/ee613f74085ca7103f79cd08d579c4f3177d1d26e5d3d9528d2d6536a707/nbformat-5.11.1-py3-none-any.whl", hash = "sha256:cc6698fa75f4fab8755ead786317815f13a6fee3b53311c0abb1a8b51d52f7ec", size = 79849, upload-time = "2026-08-17T08:10:50.18Z" }, +] + +[[package]] +name = "nest-asyncio2" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/73/731debf26e27e0a0323d7bda270dc2f634b398e38f040a09da1f4351d0aa/nest_asyncio2-1.7.2.tar.gz", hash = "sha256:1921d70b92cc4612c374928d081552efb59b83d91b2b789d935c665fa01729a8", size = 14743, upload-time = "2026-02-13T00:34:04.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/3c/3179b85b0e1c3659f0369940200cd6d0fa900e6cefcc7ea0bc6dd0e29ffb/nest_asyncio2-1.7.2-py3-none-any.whl", hash = "sha256:f5dfa702f3f81f6a03857e9a19e2ba578c0946a4ad417b4c50a24d7ba641fe01", size = 7843, upload-time = "2026-02-13T00:34:02.691Z" }, +] + [[package]] name = "numpy" version = "2.1.3" @@ -451,6 +863,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436, upload-time = "2024-09-20T13:09:48.112Z" }, ] +[[package]] +name = "parso" +version = "0.8.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/4b/90c937815137d43ce71ba043cd3566221e9df6b9c805f24b5d138c9d40a7/parso-0.8.7.tar.gz", hash = "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1", size = 401824, upload-time = "2026-05-01T23:13:02.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl", hash = "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", size = 107025, upload-time = "2026-05-01T23:12:58.867Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + [[package]] name = "pillow" version = "12.3.0" @@ -536,6 +969,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/36/54/0169bc772ec491108b62f644f8ecf1fe5d8ae5ebafde2ee2142210166903/pillow-12.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:04f01d28a6aaff387bf842a13be313df23ba0597a44f1a976c9feb3c6ff4711a", size = 7231786, upload-time = "2026-07-01T11:56:35.046Z" }, ] +[[package]] +name = "platformdirs" +version = "4.11.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/18/f3bb8ef0d3b930692343da8aa4d3cbcd6749477c053959395ac81965a6e9/platformdirs-4.11.8.tar.gz", hash = "sha256:f23abafea7dd4276d1f29104b83598d7dcc567cafd07c9c951e66665645437fc", size = 37182, upload-time = "2026-09-08T22:20:42.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/e1/5b7b8bbb55084d1425bcb9bc823ff519e1b2be05f6ebb0089e2eacc38413/platformdirs-4.11.8-py3-none-any.whl", hash = "sha256:52f2f181bbfde907966932cc8312d967d02976422d66d537ea16092b8e291081", size = 24027, upload-time = "2026-09-08T22:20:41.537Z" }, +] + [[package]] name = "pluggy" version = "1.6.0" @@ -545,6 +987,82 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "prompt-toolkit" +version = "3.0.53" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/ea/39b988c938f75cb75d7045b5c69f8bfed47ee2152c8837fb403de29d6fb8/prompt_toolkit-3.0.53.tar.gz", hash = "sha256:9ec8a0ad96d5c56148b3f914aa79c1564c3fde5d2e6b876e7bc327e353cf8fa6", size = 435492, upload-time = "2026-07-26T20:56:14.758Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/6f/84908cad2d6aa5144abcf7b42709fe4fdb459bc640ec7ac5786e7693dabc/prompt_toolkit-3.0.53-py3-none-any.whl", hash = "sha256:01c0891d7f9237d5e339f7d3e42cdae80b7534abb1c7c0e3352efba6231492f2", size = 392288, upload-time = "2026-07-26T20:56:12.512Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pygments" +version = "2.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/2e/ced460408999b33da6b31b0021b0f37d329e202d4169aeb164493778f25b/pygments-2.21.0.tar.gz", hash = "sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c", size = 5005329, upload-time = "2026-08-17T08:02:48.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl", hash = "sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9", size = 1250147, upload-time = "2026-08-17T08:02:44.912Z" }, +] + [[package]] name = "pyparsing" version = "3.3.2" @@ -590,6 +1108,262 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/7b/39c34ca613b0b198cb866466651b26b045e2009864c5183c979a3b83f383/pytz-2026.3.post1-py2.py3-none-any.whl", hash = "sha256:dd95840dd199baea12d9cc096a1d452caa6596a1c1e4b5f3dbd1541855d5e815", size = 508283, upload-time = "2026-07-25T15:12:05.782Z" }, ] +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/8d/5b3d5631c2f4b4b8862f64cd0c9eb777b5710eeb5125b4be8dd0a200a4c0/pyzmq-27.2.0.tar.gz", hash = "sha256:54d4259d1bfae24ecdb5ca79f7acc2eac6c286a02d6a0ae617797cb45f0726d3", size = 292316, upload-time = "2026-08-20T19:08:21.19Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/2e/8897afa4538707d86645f51cc50e66b2b84900edb1be9dc9af2c2fc04e5d/pyzmq-27.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:9216132843d139a123f243c07fe70f7487dce5041093dd77040f9adb5dc91872", size = 1457109, upload-time = "2026-08-20T19:06:26.022Z" }, + { url = "https://files.pythonhosted.org/packages/d1/bc/dbce7bc1654fa25b1e68b9bad9e547906f581ce919c186a88ed951cb794c/pyzmq-27.2.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:d41ebb260b69329b7d4a2936d44c872c86dd785355b51366c8b14e07ed7e9373", size = 985701, upload-time = "2026-08-20T19:06:27.481Z" }, + { url = "https://files.pythonhosted.org/packages/95/cf/6981738b57c83fef33f356141ad83bf51e92f2f70c9d5767affd1a699f07/pyzmq-27.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:468139ddb2e494d06e586bd3a6835077e8b3764560c8db552fe685c5867fc24e", size = 714285, upload-time = "2026-08-20T19:06:28.962Z" }, + { url = "https://files.pythonhosted.org/packages/50/b5/13657961a845e29c28a4e7ac4202999ec90b3bba1890a5469ce2ae90359d/pyzmq-27.2.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39755dc4a923021bd0677990ffdbc21cff0e1ee1cf07fe3817acea153ef4cb67", size = 888465, upload-time = "2026-08-20T19:06:30.4Z" }, + { url = "https://files.pythonhosted.org/packages/58/5a/ca7ee7a767413d4ba858e93748b95e30b35b8c139849fba94de4433ea2e5/pyzmq-27.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:714f8cbd66c7e405338d668f79d2fe83fe923defe348e843be998603cf92eeff", size = 1705731, upload-time = "2026-08-20T19:06:31.819Z" }, + { url = "https://files.pythonhosted.org/packages/0b/8b/083f6184e4eba566c9a3cc9974b1b0fe327b7093788135ba8133edaa67a6/pyzmq-27.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1132805970045adb9f5f05dd57040978286a8e21a5475f2c2ddf1bc983b9a2c7", size = 2074243, upload-time = "2026-08-20T19:06:33.36Z" }, + { url = "https://files.pythonhosted.org/packages/57/f5/249362b664ae725d534c8843214fa9fd7fccd74532a19e24603954a88a7d/pyzmq-27.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b26f2d0493b79ce3c3112c8a12649418915582ba4707b8ed9f44febf2be71f42", size = 1926859, upload-time = "2026-08-20T19:06:34.796Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cc/23c613c15f06d879f13364d14c17e5e4e8304049411e96c1410e6e56c3ea/pyzmq-27.2.0-cp311-cp311-win32.whl", hash = "sha256:44f261eca7dfb9904ea2b56428f59ab693bbe2715c0413a701f17b067ebf877c", size = 570747, upload-time = "2026-08-20T19:06:36.337Z" }, + { url = "https://files.pythonhosted.org/packages/dc/bc/bbbcf89003c93f18e33665c26e3c48d75e3915c3dd22887f3a7aea2c5e26/pyzmq-27.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:8b86e04f55af0f4d8cd8ecf14c0b8b81ebc8fd66fa20126b753514628ecadc7e", size = 644845, upload-time = "2026-08-20T19:06:37.711Z" }, + { url = "https://files.pythonhosted.org/packages/14/c5/4635d0ba2b8493edf6d5541fff0b07fa1d986fdfc29c596a53a21e20f9af/pyzmq-27.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:917d601e9540098f580d2723d0ce6402cdb6f02bc8dc2de74e0dca6e13bffd1b", size = 567495, upload-time = "2026-08-20T19:06:39.246Z" }, + { url = "https://files.pythonhosted.org/packages/57/8a/153532fa53db30e116118164f3af269a1f3966b3e2ba32c89b12fe864bd8/pyzmq-27.2.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:591c8de5851c5ea372194469fe97587b97c3b641e9a70f31bb3474acbfde0241", size = 1431074, upload-time = "2026-08-20T19:06:40.601Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ef/c08b91248bb90a9efa81fa00ba81b69c157c74d0c5efbb2c319d91babb62/pyzmq-27.2.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:00e73942ef12cecbc7951c4a9104bb8ffaed742abb13af2da6833d90dd368cef", size = 973915, upload-time = "2026-08-20T19:06:42.037Z" }, + { url = "https://files.pythonhosted.org/packages/b4/78/a3a3a86c2b00fadb92ece1ca4f8f028d62b2ce9ac3526097239ab2d6fba9/pyzmq-27.2.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f8079d0521fe94bbb401fe9407578b28f3701627c8be2c9f7e0c5b77dcb0109", size = 697722, upload-time = "2026-08-20T19:06:43.325Z" }, + { url = "https://files.pythonhosted.org/packages/62/2c/d5828306f795e8d34676d266823b74e2101e0ad3760d12083de3e02abbb2/pyzmq-27.2.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dea74fd65f1fc5f7fe167916a473ebe6ed6174e5e5d9de11ea6583661be6cf43", size = 872258, upload-time = "2026-08-20T19:06:44.627Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/51253b78fd8739293e283407eeecb14215c02c71b6519af21f6eed8e69cd/pyzmq-27.2.0-cp312-abi3-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcc99ca132b667a4ed750afd42db4ea73288f18425a9b2e3c0af095665c491f5", size = 739591, upload-time = "2026-08-20T19:06:46.214Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3e/142c85b67a4c9678629b0cf6d5125b29663d75be69bfaa57a3cac344d780/pyzmq-27.2.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b8d5f66e4a8246cf77f7b8f7902af64f00553368fa0373c89d99b78f0ad79394", size = 1689031, upload-time = "2026-08-20T19:06:47.612Z" }, + { url = "https://files.pythonhosted.org/packages/0e/ee/0776fb0f98ed1eb74d77240087fef0ab045b6ad15cb09555c6c5134c98ad/pyzmq-27.2.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:d1526b42a2e725b84ed226f37becedc250c6347594e5ed304e4e9aff68c9aec3", size = 2059547, upload-time = "2026-08-20T19:06:49.064Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0e/ec77f691a4aebe29ab6329f996fb0e0270c876a3016086e3ca6ef733bcae/pyzmq-27.2.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f707bcf2c1d007d14d70531d4dd7b41060881c73efa845580bf6faaf9ea24d42", size = 1910457, upload-time = "2026-08-20T19:06:50.783Z" }, + { url = "https://files.pythonhosted.org/packages/30/97/1f5530ff4fc271b4597048371d5af972c2baab51be132ba15874e0327a6a/pyzmq-27.2.0-cp312-abi3-win32.whl", hash = "sha256:fdaaa4ea3242f6ad298eb5177eb042aea5c73c30e76d20caee7b15af20d24ec2", size = 563450, upload-time = "2026-08-20T19:06:52.307Z" }, + { url = "https://files.pythonhosted.org/packages/02/8b/b83f7780dad22e0878e4c7bd9158ebd24ed12bc3d5e3a471cd0576f77ded/pyzmq-27.2.0-cp312-abi3-win_amd64.whl", hash = "sha256:2c218c6ab8bc447ba62054b581fd30209689d199c6ecb253f79615ca74a38e12", size = 628633, upload-time = "2026-08-20T19:06:53.809Z" }, + { url = "https://files.pythonhosted.org/packages/52/aa/3918b5ac7f9987bd9c421b065074fd7409ded88f856f2c704a24341877ec/pyzmq-27.2.0-cp312-abi3-win_arm64.whl", hash = "sha256:348d6fd3e4b81ae4580622ea8c2ea60224e84b2ac1b3be4482e6edc7de06e7a3", size = 556006, upload-time = "2026-08-20T19:06:55.242Z" }, + { url = "https://files.pythonhosted.org/packages/83/5e/d0541596b48c5a19f85dcbea83d6673d8e91681cdf853eb194c31fc9766e/pyzmq-27.2.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:c551b9e2f86dc625fcb1a032c0d68042678caf96a8dd7c28796766b673bd5b52", size = 1127193, upload-time = "2026-08-20T19:06:56.545Z" }, + { url = "https://files.pythonhosted.org/packages/50/9f/8c7411bb283982d46e6d56dca6a095678c87eb0398daead12776d9881ac2/pyzmq-27.2.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:288cc790da0e3064a14a38ddc56ba169dada8c8af4cb86518db2bcbd380eedbb", size = 1166833, upload-time = "2026-08-20T19:06:58.011Z" }, + { url = "https://files.pythonhosted.org/packages/f9/84/a849161ff88b2de9b991cc8ab332218824741122fdc4fdf222a5b822ac8c/pyzmq-27.2.0-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:3d45189c0c3c99f817b7fefff0d32eeef684cf33e1e3c0fc4281515357c54702", size = 1134452, upload-time = "2026-08-20T19:06:59.898Z" }, + { url = "https://files.pythonhosted.org/packages/3c/34/ff4aaff0cfba2a4d7ad1a16ffedc52c6deb89fcf673d455085446b23f215/pyzmq-27.2.0-cp314-cp314-android_24_x86_64.whl", hash = "sha256:d61910b52be5b2cd8b248dbcbe3a1b0275556a7d99fb613fc43323b546e273b8", size = 1167520, upload-time = "2026-08-20T19:07:01.283Z" }, + { url = "https://files.pythonhosted.org/packages/b6/07/42111e9dc1041d78b4443d6eb1b82b027f1a58178dc8a38385effbc72ad5/pyzmq-27.2.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:3ab6eb88590e510ab16715c32dbba12000da9bee989fdadd9ee19a234c492eb7", size = 1466289, upload-time = "2026-08-20T19:07:02.738Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b4/def7a478458da78665840564161772e7e938600c32a89f28e8b221b54d2d/pyzmq-27.2.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1ecbdd131b9669f62d3a45afee5527c7ae9f141e4301267f21714c90bd21725f", size = 975868, upload-time = "2026-08-20T19:07:04.155Z" }, + { url = "https://files.pythonhosted.org/packages/38/d5/e3e85f7fea37153097aaff49db9e33093909cc2a7b22c1ac4ebe546600fc/pyzmq-27.2.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3146385b94a760236c5eceff468a66a296a716ca98a2e0f9217b1518118466b1", size = 706054, upload-time = "2026-08-20T19:07:05.623Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ef/3b7d9449b223183222bf517245e1e53d5f1ab8c10be8b45f6a301b2f994a/pyzmq-27.2.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9846e881620dd62566ca76a53e384c3f37490faf4b9240aebc7498810dfca853", size = 878984, upload-time = "2026-08-20T19:07:07.153Z" }, + { url = "https://files.pythonhosted.org/packages/be/a5/8b49dbd494f6dcfda69dc4cade322a4b02706ef4e3d30cc366d4e369899f/pyzmq-27.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d9527e3dbaef1edaeeb2446fa7379446814a43ade8adc7c4a5ebe69437815ddd", size = 1697489, upload-time = "2026-08-20T19:07:08.945Z" }, + { url = "https://files.pythonhosted.org/packages/da/5a/4bb8280901130c26ea25f0cbb4a6d39d94250860c6b3dbd912f1cf48fca7/pyzmq-27.2.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:56b48fa9d478a3af7254f397697a62f5ad3e1bb677e200b2701f0c290d97e5af", size = 2064236, upload-time = "2026-08-20T19:07:10.384Z" }, + { url = "https://files.pythonhosted.org/packages/de/38/f433af66922554adb2b5f79e897018c8e19a90b9eaeb49c4814f8355ebe4/pyzmq-27.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bf0b6e4ce1bb089751c504c5493d6b0557eabd02dd21b76e9086cf964234b103", size = 1917424, upload-time = "2026-08-20T19:07:11.909Z" }, + { url = "https://files.pythonhosted.org/packages/36/81/ea1c1ae3f801d96ba2c269e056761ebcfe023476e651d3af2a7817962051/pyzmq-27.2.0-cp314-cp314t-win32.whl", hash = "sha256:fba8afcf265c6e9fbe1594cb045d4765c6c9a7d607653a8196067ef23566b843", size = 591103, upload-time = "2026-08-20T19:07:13.451Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/149a627707e780fa9f2c1ede3590c14fa6b18b5576d15744342622299a50/pyzmq-27.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d1bc1d380a91d954ed5fc9f12915dba014eed0978d2de05ee7ca688bdaac144a", size = 670215, upload-time = "2026-08-20T19:07:15.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/f9c3c1536c41ef3dbf765ea04218990e2056e558f98184ecd883767fc501/pyzmq-27.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:c7cfb75caa83f5153c687e9d2107f64b5ef0ef0d6edd260d3ff920baaaa69101", size = 582252, upload-time = "2026-08-20T19:07:16.582Z" }, + { url = "https://files.pythonhosted.org/packages/fa/00/78fe097a304a408275747ce43f20428789130b059c5649956277c20f30cf/pyzmq-27.2.0-cp315-cp315-android_24_arm64_v8a.whl", hash = "sha256:c5129a8fe43ecc49b99eb75616603d483a3c2fcaef504988fafe8ea392aea98b", size = 1134295, upload-time = "2026-08-20T19:07:17.94Z" }, + { url = "https://files.pythonhosted.org/packages/f2/83/1c36270658d2ee56e23a3f9ef5fbcb94cbd2f9fe966a6641f2f38e697162/pyzmq-27.2.0-cp315-cp315-android_24_x86_64.whl", hash = "sha256:baa2ce3485145653194d6c8c5beedd1e9f0bf46a0919c9fa2fe2204fc35b74d9", size = 1167492, upload-time = "2026-08-20T19:07:19.476Z" }, + { url = "https://files.pythonhosted.org/packages/58/b2/f0ae223438d7faa991f6feefdc823815f11cc604f898738376b59fd96515/pyzmq-27.2.0-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:e1ed46048d1920cabc96d952a0d5cfe4127ad8db572c335aae4e3c57b9278d7f", size = 1465992, upload-time = "2026-08-20T19:07:20.941Z" }, + { url = "https://files.pythonhosted.org/packages/59/46/fb56f3f37a6a0937b0e1d2885e808b5eedc171320bac85573cfae78fa9bc/pyzmq-27.2.0-cp315-cp315t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:e0fa0bc6b1a184aee59b32efcd1b7f0e6d5b8f9387799e4c16a4cb66a86747d6", size = 976118, upload-time = "2026-08-20T19:07:22.577Z" }, + { url = "https://files.pythonhosted.org/packages/21/82/a2c9bfd7c4d34eea1278493cd041bc000d41acb4463c89ceaad29dc813b6/pyzmq-27.2.0-cp315-cp315t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4bd6743e8bf854c3bfce892dd6578a514aabf128e37a4b2eafcf01856f7e44", size = 705968, upload-time = "2026-08-20T19:07:24.019Z" }, + { url = "https://files.pythonhosted.org/packages/d6/12/b906b269116b6591dc15c0acc5d04c043957c8a531d336999731f4b1d899/pyzmq-27.2.0-cp315-cp315t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95369ed6626afcfe2ac89832fb1b917c077fbeb905fbbe5d918349ce0222b89b", size = 879011, upload-time = "2026-08-20T19:07:25.428Z" }, + { url = "https://files.pythonhosted.org/packages/12/13/f96359534bfb77651c15f1fbfc4bfdd7ec3489d23f434706d39598dd0dcd/pyzmq-27.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:40124779c3a56ad5d91902df1ff89159cb414b6c1a0ee697abcc66cf5e6db62d", size = 1697496, upload-time = "2026-08-20T19:07:26.821Z" }, + { url = "https://files.pythonhosted.org/packages/21/b4/2c007ae5f2fe5eca86cbfbc874ed86b5135f2f7812615dfd78606d3c93f6/pyzmq-27.2.0-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:ec8a318dfc27c7d946651b3d9e8025d5734f30c168a822195601827207bac09b", size = 2064347, upload-time = "2026-08-20T19:07:28.315Z" }, + { url = "https://files.pythonhosted.org/packages/9b/88/767af3a6630c15215f3a66700ec79598a375edd1fdc9d75a3ad522178c01/pyzmq-27.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:88c0fac061bac269076edeb3a209acefc96cd6167c239daf1c2b404ac48d7012", size = 1917360, upload-time = "2026-08-20T19:07:29.693Z" }, + { url = "https://files.pythonhosted.org/packages/35/c1/80dd2d20d6e57bc68e1dce1e84bf3e76c9577c1bf728199985c8b4ea0fd1/pyzmq-27.2.0-cp315-cp315t-win32.whl", hash = "sha256:ac126d48cf18aa955daabef43bf0009ff76ad4deee437d09ecf15388214b5beb", size = 591073, upload-time = "2026-08-20T19:07:31.341Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b5/33b781666f3f52ae834bc9c8e38f4f0483a826c5a91cccc993292007bf10/pyzmq-27.2.0-cp315-cp315t-win_amd64.whl", hash = "sha256:edce90a1e588ec63adbf612cc0ad582de4169cd216c7ae53c15f42a2ee902f35", size = 670701, upload-time = "2026-08-20T19:07:32.895Z" }, + { url = "https://files.pythonhosted.org/packages/6e/97/bc4f0edefb992df4fdebcf9f0cc40f631cd4ed277e1ed59ef2cd99a5c8c5/pyzmq-27.2.0-cp315-cp315t-win_arm64.whl", hash = "sha256:a843094b4d3d633bc3623e47a2ff50742d6af02bc1f7606aa2e67e971e21878d", size = 581985, upload-time = "2026-08-20T19:07:34.19Z" }, + { url = "https://files.pythonhosted.org/packages/93/22/7187a1f0bf2b8bf8dc6b91762438fb9b472f684f2dc4cb74a24bf8957943/pyzmq-27.2.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a7c1144dc61777938e932a2c9011b980b89fd8ff3733033b34c44c299187a6e1", size = 875015, upload-time = "2026-08-20T19:08:01.692Z" }, + { url = "https://files.pythonhosted.org/packages/92/71/09b71620ad52bad4eb68b1516978ecaf52ef623c3fa16e0732a03cf3274c/pyzmq-27.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:c218b816220d05acf6ab1bafca58926d95cbcc5fec5024724666030466308f0c", size = 774395, upload-time = "2026-08-20T19:08:03.108Z" }, + { url = "https://files.pythonhosted.org/packages/9c/cf/5c8eb9994a14ff5ee5b0cada339421748746c95aee0280c8b656741e8749/pyzmq-27.2.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ae6ebbc0bfe5a21ce21e32ba567bf73df2d93888109c65acbd42506cf9395759", size = 877994, upload-time = "2026-08-20T19:08:04.724Z" }, + { url = "https://files.pythonhosted.org/packages/97/64/e22094c5555e550b6450ecfcceb6a1205d893d9a18ae27764c8c45acfb16/pyzmq-27.2.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:679b5b1dde326a921ea2c9ec1f9ea3115bfe1b4735779bbc6eb0473a0ed93f71", size = 614492, upload-time = "2026-08-20T19:08:06.487Z" }, + { url = "https://files.pythonhosted.org/packages/d2/28/5b1042899caed18278c56d54a502f5254d463afe8aea1acbecc98e053391/pyzmq-27.2.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f5c6d8744d10b5e1eadd90a7c58f8546acf6bf680ee463f7e6ada09ad6c9f802", size = 780574, upload-time = "2026-08-20T19:08:07.987Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/f134603a671c114c6b56eb912bba890f09e2d43b8a28d243be5a5507cf2f/pyzmq-27.2.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3ee8dd7031d5e23f632e0e7eee67183ca7d2536e0de35dc1e5d69f3471a791e8", size = 553961, upload-time = "2026-08-20T19:08:09.651Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "rpds-py" +version = "2026.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/2a/9618a122aeb2a169a28b03889a2995fe297588964333d4a7d67bdf46e147/rpds_py-2026.6.3.tar.gz", hash = "sha256:1cebd1337c242e4ec2293e541f712b2da849b29f48f0c293684b71c0632625d4", size = 64051, upload-time = "2026-06-30T07:17:53.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/1f/a2dca5ffdbf1d475ffc4e80e4d5d720ff3a00f691795910116960ee12511/rpds_py-2026.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7b689145a1485c335569bd056464f3243a29af7ed3871c7be31ad624ba239bc7", size = 342174, upload-time = "2026-06-30T07:14:54.821Z" }, + { url = "https://files.pythonhosted.org/packages/4d/dc/323d08583c0832911768663d1944f0107fcd4088704858d84b5e06d105a0/rpds_py-2026.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:db08f45aecde626498fb3df07bcf6d2ec040af42e859a4f5040d79c200342911", size = 345513, upload-time = "2026-06-30T07:14:56.515Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2a/e31989834d18d2f26ec1d2774c5b1eb3331df4ea8ada525175294c94b48a/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acc992ab27b15f852c76755eb2ab7dce86585ddadba6fa5946e58556088845b4", size = 373783, upload-time = "2026-06-30T07:14:57.736Z" }, + { url = "https://files.pythonhosted.org/packages/87/fe/e80107ee3639585c9941c17d6a42cd65325022f656c023191fce78c324c8/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f88d653e7b3b779d71ae7454e20dcc9b6bae903f33c269db9f2be41bda3f261", size = 378316, upload-time = "2026-06-30T07:14:59.077Z" }, + { url = "https://files.pythonhosted.org/packages/22/6f/81e3adf81acfb6fa694de2a6e4e7d8863121e3e0799e0a7725e6cf5679c4/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e52655eaf81e32593abedaa4bfe33170c8cfedf3365ed9be6e11e07f148f0278", size = 499423, upload-time = "2026-06-30T07:15:00.488Z" }, + { url = "https://files.pythonhosted.org/packages/2d/9a/41263969df0ce3d9af2a96d5005a288200af1989aed3354bfceb5fc0b21f/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dfcc8b909769d19db55c7cc9541eb64b9b774b1057ffffb4f1048070475bb9f9", size = 386077, upload-time = "2026-06-30T07:15:01.911Z" }, + { url = "https://files.pythonhosted.org/packages/5e/19/7e98f468bd50346faff5b10e5297374b443bfdddacc8e9fbc65984539597/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c1255b302953c86a486b81d330d5ee1d5bd937691ce271b6be0ef0e299eaab7", size = 371315, upload-time = "2026-06-30T07:15:03.317Z" }, + { url = "https://files.pythonhosted.org/packages/99/3c/2b973b4d371906a134b03decfea7f5d9835a2c6d263454392e15b64b5b18/rpds_py-2026.6.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:8d2294a31386bfa251d8c8a39472beee17db67d4f1a6eabea665d35c9a4461c3", size = 383502, upload-time = "2026-06-30T07:15:04.627Z" }, + { url = "https://files.pythonhosted.org/packages/98/2a/12e2799500af0a307bca76b63361c51f9fe479223561489c29eea1f2ee41/rpds_py-2026.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8f23ead891a3b762f35ab3b04623da7056545b48aa60d59957e6789914545da", size = 402673, upload-time = "2026-06-30T07:15:05.856Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e3/21e5872d165fe08be4f229e3d5ee9d90019c0bf0e5538de60dbd54009450/rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:421aba32367055614287a4292b6a17f1939c9452299f7a0209c117e990b646d4", size = 549964, upload-time = "2026-06-30T07:15:07.159Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d0/5ee0fe36844297de8123bee27bc12078c1a7416ad9f1b8a8ca18d6b0c0ac/rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1e5822dfc2f0d4ab7e745eaa6d85945069329beeccef965af3f3bb26058fcab6", size = 615446, upload-time = "2026-06-30T07:15:08.531Z" }, + { url = "https://files.pythonhosted.org/packages/b1/80/1ea5873cb683f2fbe5f21b23ea1f6d179ead19f3c5b249b7eb5dca568ef2/rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:83e35b57523816c8613fd0776b40cd8bb9f596b37ddd2692eb4a6bb5ab2f8c93", size = 576975, upload-time = "2026-06-30T07:15:09.97Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e1/90ef639217a5ddb15b7f4f61b1c33911fd044ad03c311bafdd2bcab85582/rpds_py-2026.6.3-cp311-cp311-win32.whl", hash = "sha256:de3eceba0b683bcbb1ab93da016d0270df1f9ae7be716b40214c5dafac6ea45a", size = 204453, upload-time = "2026-06-30T07:15:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b7/b7a1695d7af36f521fb11e80d6d3adbd744f73b921859bd3c2a2c0dc706f/rpds_py-2026.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:2c54a076ca4d370980ab57bc0e31df57bbe8d41340436a90ef8b1219a3cbb127", size = 223219, upload-time = "2026-06-30T07:15:12.476Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a2/145afacf796e4506062825941176ad9445c2dcf2b3b6a1f13d3030a15e19/rpds_py-2026.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:168c733a7112e071bb7a66460e667edfcff06c017a3c523f7a8a8e08d0140804", size = 219137, upload-time = "2026-06-30T07:15:13.631Z" }, + { url = "https://files.pythonhosted.org/packages/5c/be/2e8974163072e7bab7df1a5acd54c4498e75e35d6d18b864d3a9d5dadc92/rpds_py-2026.6.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a0811d33247c3d6128a3001d763f2aa056bb3425204335400ac54f89eec3a0d0", size = 343691, upload-time = "2026-06-30T07:15:14.96Z" }, + { url = "https://files.pythonhosted.org/packages/a4/73/319dfa745dd668efe89309141ded489126461fcecd2b8f3a3cda185129b6/rpds_py-2026.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:538949e262e46caa31ac01bdb3c1e8f642622922cacbabbae6a8445d9dc33eaf", size = 338542, upload-time = "2026-06-30T07:15:16.267Z" }, + { url = "https://files.pythonhosted.org/packages/21/63/4239893be1c4d09b709b1a8f6be4188f0870084ff547f46606b8a75f1b03/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55927d532399c2c646100ff7feb48eaa940ad70f42cd68e1328f3ded9f81ca24", size = 368180, upload-time = "2026-06-30T07:15:17.62Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ca/9c5de382225234ceb37b1844ebdb140db12b2a278bb9efe2fcd19f6c82ce/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f56f1695bc5c0871cbc33dc0130fcf503aab0c57dcc5a6700a4f49eba4f2652e", size = 375067, upload-time = "2026-06-30T07:15:18.952Z" }, + { url = "https://files.pythonhosted.org/packages/87/dc/863f69d1bf04ade34b7fe0d59b9fdf6f0135fe2d7cbca74f1d665589559d/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:270b293dae9058fc9fcedab50f13cebf46fb8ed1d1d54e0521a9da5d6b211975", size = 490509, upload-time = "2026-06-30T07:15:20.434Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ef/eac16a12048b45ec7c7fa94f2be3438a5f26bf9cc8580b18a1cfd609b7f6/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:127565fead0a10943b282957bd5447804ff3160ad79f2ad2635e6d249e380680", size = 382754, upload-time = "2026-06-30T07:15:21.831Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/d2f3f532616be4d06c316ef119683e832bd3d41e112bf3a88f4151c95b17/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecabd69db66de867690f9797f2f8fa27ba501bbc24540cbdbdc649cd15888ba6", size = 366189, upload-time = "2026-06-30T07:15:23.371Z" }, + { url = "https://files.pythonhosted.org/packages/e3/29/41a7b0e98a4b44cd676ab7598419623373eb43b20be68c084935c1a8cf88/rpds_py-2026.6.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:58eadac9cd119677b60e1cf8ac4052f35949d71b8a9e5556efccbe82533cf22a", size = 377750, upload-time = "2026-06-30T07:15:24.659Z" }, + { url = "https://files.pythonhosted.org/packages/2e/05/ecda0bec46f9a1565090bcdc941d023f6a25aff85fda28f89f8d19878152/rpds_py-2026.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7491ee23305ac3eb59e492b6945881f5cd77a6f731061a3f25b77fd40f9e99a4", size = 395576, upload-time = "2026-06-30T07:15:25.987Z" }, + { url = "https://files.pythonhosted.org/packages/68/a8/6ed52f03ee6cb854ce78785cc9a9a672eb880e83fd7224d471f667d151f1/rpds_py-2026.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2c99f7e8ccb3dd6e3e4bfeac657a7b208c9bac8075f4b078c02d7404c34107fa", size = 543807, upload-time = "2026-06-30T07:15:27.356Z" }, + { url = "https://files.pythonhosted.org/packages/8f/d6/156c0d3eea27ba09b92562ba2364ba124c0a061b199e17eac637cd25a5e2/rpds_py-2026.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:62698275682bf121181861295c9181e789030a2d516071f5b8f3c23c170cd0fc", size = 611187, upload-time = "2026-06-30T07:15:28.931Z" }, + { url = "https://files.pythonhosted.org/packages/f1/31/774212ed989c62f7f310220089f9b0a3fb8f40f5443d1727abd5d9f52bc9/rpds_py-2026.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a214c993455f99a89aaeadc9b21241900037adc9d97203e374d75513c5911822", size = 573030, upload-time = "2026-06-30T07:15:30.553Z" }, + { url = "https://files.pythonhosted.org/packages/c9/50/22f73127a41f1ce4f87fe39aadfb9a126345801c274aa93ae88456249327/rpds_py-2026.6.3-cp312-cp312-win32.whl", hash = "sha256:501f9f04a588d6a09179368c57071301445191767c64e4b52a6aa9871f1ef5ed", size = 202185, upload-time = "2026-06-30T07:15:32.027Z" }, + { url = "https://files.pythonhosted.org/packages/04/3a/f0ee4d4dde9d3b69dedf1b5f74e7a40017046d55052d173e418c6a94f960/rpds_py-2026.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:2c958bf94822e9290a40aaf2a822d4bc5c88099093e3948ad6c571eca9272e5f", size = 220394, upload-time = "2026-06-30T07:15:33.359Z" }, + { url = "https://files.pythonhosted.org/packages/f3/83/3382fe37f809b59f02aac04dbc4e765b480b46ee0227ed516e3bdc4d3dfc/rpds_py-2026.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:22bffe6042b9bcb0822bcd1955ec00e245daf17b4344e4ed8e9551b976b63e96", size = 215753, upload-time = "2026-06-30T07:15:34.778Z" }, + { url = "https://files.pythonhosted.org/packages/a4/9e/b818ee580026ec578138e961027a68820c40afeb1ec8f6819b54fb99e196/rpds_py-2026.6.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3cfe765c1da0072636ca06628261e0ea05688e160d5c8a03e0217c3854037223", size = 343012, upload-time = "2026-06-30T07:15:36.005Z" }, + { url = "https://files.pythonhosted.org/packages/f3/6b/686d9dc4359a8f163cfbbf89ee0b4e586431de22fe8248edb63a8cf50d49/rpds_py-2026.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f4d78253f6996be4901669ad25319f842f740eccf4d58e3c7f3dd39e6dde1d8f", size = 338203, upload-time = "2026-06-30T07:15:37.462Z" }, + { url = "https://files.pythonhosted.org/packages/9e/9b/069aa329940f8207615e091f5eedbbd40e1e15eac68a0790fd05ccdf796c/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54f45a148e28767bf343d33a684693c70e451c6f4c0e9904709a723fafbdfc1f", size = 367984, upload-time = "2026-06-30T07:15:39.008Z" }, + { url = "https://files.pythonhosted.org/packages/14/db/34c203e4becff3703e4d3bc121842c00b8689197f398161203a880052f4e/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:842e7b070435622248c7a2c44ae53fa1440e073cc3023bc919fed570884097a7", size = 374815, upload-time = "2026-06-30T07:15:40.253Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7d/8071067d2cc453d916ad836e828c943f575e8a44612537759002a1e07381/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8020133a74bd81b4572dd8e4be028a6b1ebcd70e6726edc3918008c08bee6ee6", size = 490545, upload-time = "2026-06-30T07:15:41.729Z" }, + { url = "https://files.pythonhosted.org/packages/a3/42/da06c5aa8f0484ff07f270787434204d9f4535e2f8c3b51ed402267e63c3/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdc7e35386f3847df728fbcb5e887e2d79c19e2fa1eba9e51b6621d23e3243af", size = 382828, upload-time = "2026-06-30T07:15:43.327Z" }, + { url = "https://files.pythonhosted.org/packages/57/d7/fe978efc2ae50abe48eb7464668ea99f53c010c60aeebb7b35ad27f23661/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acac386b453c2516111b50985d60ce46e7fadb5ea71ae7b25f4c946935bf27cf", size = 365678, upload-time = "2026-06-30T07:15:44.992Z" }, + { url = "https://files.pythonhosted.org/packages/69/9d/1d8922e1990b2a6eb532b6ff53d3e73d2b3bbffc84116c75826bee73dfc6/rpds_py-2026.6.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:425560c6fa0415f27261727bb20bd097568485e5eb0c121f1949417d1c516885", size = 377811, upload-time = "2026-06-30T07:15:46.523Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3d/198dceafb4fb034a6a47347e1b0735d34e0bd4a50be4e898d408ee66cb14/rpds_py-2026.6.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a550fb4950a06dde3beb4721f5ad4b25bf4513784665b0a8522c792e2bd822a4", size = 395382, upload-time = "2026-06-30T07:15:47.955Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f1/13968e49655d40b6b19d8b9140296bbc6f1d86b3f0f6c346cf9f1adddf4b/rpds_py-2026.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f4bca01b63096f606e095734dd56e74e175f94cfbf24ff3d63281cec61f7bb7", size = 543832, upload-time = "2026-06-30T07:15:49.33Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ab/289bcb1b90bd3e40a2900c561fa0e2087345ecbb094f0b870f2345142b7c/rpds_py-2026.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ccffae9a092a00deb7efd545fe5e2c33c33b88e7c054337e9a74c179347d0b7d", size = 611011, upload-time = "2026-06-30T07:15:50.847Z" }, + { url = "https://files.pythonhosted.org/packages/1e/16/5043105e679436ccfbc8e5e0dd2d663ed18a8b8113515fd06a5e5d77c83e/rpds_py-2026.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1cf01971c4f2c5553b772a542e4aaf191789cd331bc2cd4ff0e6e65ba49e1e97", size = 572431, upload-time = "2026-06-30T07:15:52.394Z" }, + { url = "https://files.pythonhosted.org/packages/85/ed/adab103321c0a6565d5ae1c2998349bc3ee175b82ccc5ae8fc04cc413075/rpds_py-2026.6.3-cp313-cp313-win32.whl", hash = "sha256:8c3d1e9c15b9d51ca0391e13da1a25a0a4df3c58a37c9dc368e0736cf7f69df0", size = 201710, upload-time = "2026-06-30T07:15:53.894Z" }, + { url = "https://files.pythonhosted.org/packages/7b/ed/a03b09668e74e5dabbf2e211f6468e1820c0552f7b0500082da31841bf7b/rpds_py-2026.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:9250a9a0a6fd4648b3f868da8d91a4c52b5811a62df58e753d50ae4454a36f80", size = 219454, upload-time = "2026-06-30T07:15:55.25Z" }, + { url = "https://files.pythonhosted.org/packages/27/17/b8642c12930b71bc2b25831f6708ccf0f75abcd11883932ec9ce54ba3a78/rpds_py-2026.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:900a67df3fd1660b035a4761c4ce73c382ea6b35f90f9863c36c6fd8bf8b09bb", size = 215063, upload-time = "2026-06-30T07:15:56.573Z" }, + { url = "https://files.pythonhosted.org/packages/b6/36/7fbe9dcdaf857fb3f63c2a2284b62492d95f5e8334e947e5fb6e7f68c9be/rpds_py-2026.6.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:931908d9fc855d8f74783377822be318edb6dcb19e47169dc038f9a1bf60b06e", size = 344510, upload-time = "2026-06-30T07:15:57.921Z" }, + { url = "https://files.pythonhosted.org/packages/ba/54/f785cc3d3f60839ca57a5af4927a9f347b07b2799c373fc20f7949f87c7e/rpds_py-2026.6.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d7469697dce35be237db177d42e2a2ee26e6dcc5fc052078a6fefabd288c6edd", size = 339495, upload-time = "2026-06-30T07:15:59.238Z" }, + { url = "https://files.pythonhosted.org/packages/63/ef/d4cdaf309e6b095b43597103cf8c0b951d6cca2acce68c474f75ec12e0c7/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcfbcf66006befb9fd2aeaa9e01feaf881b4dc330a02ba07d2322b1c11be7b5d", size = 369454, upload-time = "2026-06-30T07:16:01.021Z" }, + { url = "https://files.pythonhosted.org/packages/96/4a/9559a68b7ee15db09d7981212e8c2e219d2a1d6d4faa0391d813c3496a36/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:847927daf4cffbd4e90e42bc890069897101edd015f956cb8721b3473372edda", size = 374583, upload-time = "2026-06-30T07:16:02.287Z" }, + { url = "https://files.pythonhosted.org/packages/ef/75/8964aa7d2c6e8ac43eba8eb6e6b0fdda1f46d39f2fc3e6aa9f2cb17f485d/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aca6c1ef08a82bfe327cc156da694660f599923e2e6665b6d81c9c2d0ac9ffc8", size = 492919, upload-time = "2026-06-30T07:16:03.723Z" }, + { url = "https://files.pythonhosted.org/packages/8f/97/6908094ac804115e65aedfd90f1b5fee4eebebd3f6c4cfc5419939267565/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae50181a047c871561212bb97f7932a2d45fb53e947bd9b57ebad85b529cbc53", size = 383725, upload-time = "2026-06-30T07:16:05.305Z" }, + { url = "https://files.pythonhosted.org/packages/d1/9c/0d1fdc2e7aba23e290d603bc494e97bd205bae262ce33c6b32a69768ed5e/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc319e5a1de4b6913aac94bf6a2f9e847371e0a140a43dd4991db1a09bc2d504", size = 367255, upload-time = "2026-06-30T07:16:07.086Z" }, + { url = "https://files.pythonhosted.org/packages/c4/fe/f0209ca4a9ed074bc8acb44dfd0e81c3122e94c9689f5645b7973a866719/rpds_py-2026.6.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:e4316bf32babbed84e691e352faf967ce2f0f024174a8643c37c94a1080374fc", size = 379060, upload-time = "2026-06-30T07:16:08.525Z" }, + { url = "https://files.pythonhosted.org/packages/c6/8d/f1cc54c616b9d8897de8738aac148d20afca93f68187475fe194d09a71b9/rpds_py-2026.6.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8c6e5a2f750cc71c3e3b11d71661f21d6f9bc6cebc6564b1466417a1ec03ec77", size = 395960, upload-time = "2026-06-30T07:16:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/fb/04/aafff00f73aeca2945f734f1d483c64ab8f472d0864ab02377fd8e89c3b2/rpds_py-2026.6.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4470ce197d4090875cf6affbf1f853338387428df97c4fb7b7106317b8214698", size = 545356, upload-time = "2026-06-30T07:16:11.816Z" }, + { url = "https://files.pythonhosted.org/packages/fd/cc/e229663b9e4ddac5a4acbe9085dd80a71af2a5d356b8b39d6bff233f24b0/rpds_py-2026.6.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ea964164cc9afa72d4d9b23cc28dafae93693c0a53e0b42acbff15b22c3f9ddd", size = 612319, upload-time = "2026-06-30T07:16:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7a/8a0e6d3e6cd066af108b71b43122c3fe158dd9eb86acac626593a2582eb1/rpds_py-2026.6.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:639c8929aa0afe81be836b04de888460d6bed38b9c54cfc18da8f6bfabf5af5d", size = 573508, upload-time = "2026-06-30T07:16:15.23Z" }, + { url = "https://files.pythonhosted.org/packages/87/03/2a69ab618a789cf6cf85c86bb844c62d090e700ab1a2aa676b3741b6c516/rpds_py-2026.6.3-cp314-cp314-win32.whl", hash = "sha256:882076c00c0a608b131187055ddc5ae29f2e7eaf870d6168980420d58528a5c8", size = 202504, upload-time = "2026-06-30T07:16:16.893Z" }, + { url = "https://files.pythonhosted.org/packages/85/62/a3892ba945f4e24c78f352e5de3c7620d8479f73f211406a97263d13c7d2/rpds_py-2026.6.3-cp314-cp314-win_amd64.whl", hash = "sha256:0be972be84cfcaf46c8c6edf690ca0f154ac17babf1f6a955a51579b34ad2dc5", size = 220380, upload-time = "2026-06-30T07:16:18.108Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e7/c2bd44dc831931815ad11ebb5f430b5a0a4d3caa9de837107876c30c3432/rpds_py-2026.6.3-cp314-cp314-win_arm64.whl", hash = "sha256:2a9c6f195058cb45335e8cc3802745c603d716eb96bc9625950c1aac71c0c703", size = 215976, upload-time = "2026-06-30T07:16:19.654Z" }, + { url = "https://files.pythonhosted.org/packages/79/9c/fff7b74bce9a091ec9a012a03f9ff5f69364eaf9451060dfc4486da2ffdd/rpds_py-2026.6.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:f90938e92afda60266da758ee7d363447f7f0138c9559f9e1811629580582d90", size = 346840, upload-time = "2026-06-30T07:16:21.268Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/77bcb1168b33704908295533d27f10eb811e9e3e193e8993dc99572211d3/rpds_py-2026.6.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ec829541c45bca16e61c7ae50c20501f213605beb75d1aba91a6ee37fbbb56a4", size = 340282, upload-time = "2026-06-30T07:16:22.875Z" }, + { url = "https://files.pythonhosted.org/packages/87/3c/7a9081c7c9e645b39efe19e4ffbeccd80add246327cd9b888aecffd72317/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd70d95892096cdb26f15a00c45907b17817577aa8d1c76b2dcc2788391f9e9", size = 370403, upload-time = "2026-06-30T07:16:24.415Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/af47021eb7dad6ff3396cb001c08f0f3c4d06c20253f75be6421a59fe6b7/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29dfa0533a5d4c94d4dfa1b694fcb56c9c63aad8330ffdd816fd225d0a7a162f", size = 376055, upload-time = "2026-06-30T07:16:26.111Z" }, + { url = "https://files.pythonhosted.org/packages/81/fc/a3bcf517084396a6dd258c592567a3c011ba4557f2fde23dceaf26e74f2e/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:af05d726809bff6b141be124d4c7ce998f9c9c7f30edb1f46c07aa103d540b41", size = 494419, upload-time = "2026-06-30T07:16:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/c9/eb/13d529d1788135425c7bf207f8463458ca5d92e43f3f701365b83e9dffc1/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9826217f048f620d9a712672818bf231442c1b35d96b227a07eabd11b4bb6945", size = 384848, upload-time = "2026-06-30T07:16:29.183Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f4/b7ac49f30013aba8f7b9566b1dd07e81de95e708c1374b7bacc5b9bc5c9c/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:536bceea4fa4acf7e1c61da2b5786304367c816c8895be71b8f537c480b0ea1f", size = 371369, upload-time = "2026-06-30T07:16:30.912Z" }, + { url = "https://files.pythonhosted.org/packages/31/86/6260bafa622f788b07ddec0e52d810305c8b9b0b8c27f58a2ab04bf62b4f/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:bc0011654b91cc4fb2ae701bec0a0ba1e552c0714247fa7af6c59e0ccfa3a4e1", size = 379673, upload-time = "2026-06-30T07:16:32.486Z" }, + { url = "https://files.pythonhosted.org/packages/19/c3/03f1ee79a047b48daeca157c89a18509cde22b6b951d642b9b0af1be660a/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:539d75de9e0d536c84ff18dfeb805398e58227001ce09231a26a08b9aed1ee0e", size = 397500, upload-time = "2026-06-30T07:16:34.471Z" }, + { url = "https://files.pythonhosted.org/packages/f0/95/8ed0cd8c377dca12aea498f119fe639fc474d1461545c39d2b5872eb1c0f/rpds_py-2026.6.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:166cf54d9f44fc6ceb53c7860258dde44a81406646de79f8ed3234fca3b6e538", size = 545978, upload-time = "2026-06-30T07:16:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f2/0eb57f0eaa83f8fc152a7e03de968ab77e1f00732bebc892b190c6eebde7/rpds_py-2026.6.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:d34c20167764fbcf927194d532dd7e0c56772f0a5f943fa5ef9e9afbba8fb9db", size = 613350, upload-time = "2026-06-30T07:16:38.213Z" }, + { url = "https://files.pythonhosted.org/packages/5b/de/e0674bdbc3ef7634989b3f854c3f34bc1f587d36e5bfdc5c378d57034619/rpds_py-2026.6.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ea7bb13b7c9a29791f87a0387ba7d3ad3a6d783d827e4d3f27b40a0ff44495e2", size = 576486, upload-time = "2026-06-30T07:16:39.797Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f6/21101359743cd136ada781e8210a85769578422ba460672eea0e29739200/rpds_py-2026.6.3-cp314-cp314t-win32.whl", hash = "sha256:6de4744d05bd1aa1be4ed7ea1189e3979196808008113bbbf899a460966b925e", size = 201068, upload-time = "2026-06-30T07:16:41.316Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b2/9574d4d44f7760c2aa32d92a0a4f41698e33f5b204a0bf5c9758f52c79d5/rpds_py-2026.6.3-cp314-cp314t-win_amd64.whl", hash = "sha256:c7b9a2f8f4d8e90af72571d3d495deebdd7e3c75451f5b41719aee166e940fc2", size = 220600, upload-time = "2026-06-30T07:16:43.091Z" }, + { url = "https://files.pythonhosted.org/packages/08/ae/f23a2697e6ee6340a578b0f136be6483657bef0c6f9497b752bb5c0964bb/rpds_py-2026.6.3-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:e059c5dde6452b44424bd1834557556c226b57781dee1227af23518459722b13", size = 344726, upload-time = "2026-06-30T07:16:44.5Z" }, + { url = "https://files.pythonhosted.org/packages/c3/63/e7b3a1a5358dd32c930a1062d8e15b67fd6e8922e81df9e91706d66ee5c8/rpds_py-2026.6.3-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2f7c26fbc5acd2522b95d4177fe4710ffd8e9b20529e703ffbf8db4d93903f05", size = 339587, upload-time = "2026-06-30T07:16:46.255Z" }, + { url = "https://files.pythonhosted.org/packages/ec/64/10a85681916ca55fffb91b0a211f84e34297c109243484dd6394660a8a7c/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3086b538543802f84c843911242db20447de00d8752dd0efc936dbcf02218ba", size = 369585, upload-time = "2026-06-30T07:16:48.101Z" }, + { url = "https://files.pythonhosted.org/packages/76/c2/baf95c7c38823e12ba34407c5f5767a89e5cf2233895e56f608167ae9493/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f2e5c5ee828d42cb11760761c0af6507927bec42d0ad5458f97c9203b054617", size = 375479, upload-time = "2026-06-30T07:16:49.93Z" }, + { url = "https://files.pythonhosted.org/packages/6a/94/0aad06c72d65101e11d33528d438cda99a39ce0da99466e156158f2541d3/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0c1e5d10cdc7135537988c74a0188da68e2f3c30813ba3744ab1e42e0480f9", size = 492418, upload-time = "2026-06-30T07:16:51.641Z" }, + { url = "https://files.pythonhosted.org/packages/b5/17/de3f5a479a1f056535d7489819639d8cd591ea6281d700390b43b1abd745/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c2642a7603ec0b16ed77da4555db3b4b472341904873788327c0b0d7b95f1bb", size = 384123, upload-time = "2026-06-30T07:16:53.622Z" }, + { url = "https://files.pythonhosted.org/packages/46/7d/bf09bd1b145bb2671c03e1e6d1ab8651858d90d8c7dfeadd85a37a934fd8/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e4320744c1ffdd95a603def63344bfab2d33edeab301c5007e7de9f9f5b3885", size = 367351, upload-time = "2026-06-30T07:16:55.241Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ea/1bb734f314b8be319149ddee80b18bd41372bdcfbdf88d28131c0cd37719/rpds_py-2026.6.3-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:a9f4645593036b81bbdb36b9c8e0ea0d1c3fee968c4d59db0344c14087ef143a", size = 378827, upload-time = "2026-06-30T07:16:56.841Z" }, + { url = "https://files.pythonhosted.org/packages/4b/93/d9611e5b25e26df9a3649813ed66193ace9347a7c7fc4ab7cf70e94851c0/rpds_py-2026.6.3-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e55d236be29255554da47abe5c577637db7c24a02b8b46f0ca9524c855801868", size = 395966, upload-time = "2026-06-30T07:16:58.557Z" }, + { url = "https://files.pythonhosted.org/packages/c3/cb/99d77e16e5534ae1d90629bbe419ba6ee170833a6a85e3aa1cc41726fbbc/rpds_py-2026.6.3-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:24e9c5386e16669b674a69c156c8eeefcb578f3b3397b713b08e6d60f3c7b187", size = 545680, upload-time = "2026-06-30T07:17:00.164Z" }, + { url = "https://files.pythonhosted.org/packages/59/15/11a29755f790cef7a2f755e8e14f4f0c33f39489e1893a632a2eee59672b/rpds_py-2026.6.3-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:c60924535c75f1566b6eb75b5c31a48a43fef04fa2d0d201acbad8a9969c6107", size = 611853, upload-time = "2026-06-30T07:17:01.962Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/0c27547e21644da938fb530f7e1a8148dd24d02db07e7a5f2567a17ce710/rpds_py-2026.6.3-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:38a2fea2787428f811719ceb9114cb78964a3138838320c29ac39526c79c16ba", size = 573715, upload-time = "2026-06-30T07:17:03.693Z" }, + { url = "https://files.pythonhosted.org/packages/29/71/4d8fcf700931815594bce892255bbd973b94efaf0fc1932b0590df18d886/rpds_py-2026.6.3-cp315-cp315-win32.whl", hash = "sha256:d483fe17f01ad64b7bf7cc38fcefff1ca9fb83f8c2b2542b68f97ffe0611b369", size = 202864, upload-time = "2026-06-30T07:17:05.746Z" }, + { url = "https://files.pythonhosted.org/packages/eb/62/b577562de0edbb55b2be85ce5fd09c33e386b9b13eee09833af4240fd5c4/rpds_py-2026.6.3-cp315-cp315-win_amd64.whl", hash = "sha256:67e3a721ffc5d8d2210d3671872298c4a84e4b8035cfe42ffd7cde35d772b146", size = 220430, upload-time = "2026-06-30T07:17:07.471Z" }, + { url = "https://files.pythonhosted.org/packages/c8/95/d6d0b2509825141eef60669a5739eec88dbc6a48053d6c92993a5704defe/rpds_py-2026.6.3-cp315-cp315-win_arm64.whl", hash = "sha256:6e84adbcf4bf841aed8116a8264b9f50b4cb3e7bd89b516122e616ac56ca269e", size = 215877, upload-time = "2026-06-30T07:17:09.008Z" }, + { url = "https://files.pythonhosted.org/packages/b7/bf/f3ea278f0afd615c1d0f19cb69043a41526e2bb600c2b536eb192218eb27/rpds_py-2026.6.3-cp315-cp315t-macosx_10_12_x86_64.whl", hash = "sha256:ae6dd8f10bd17aad820876d24caec9efdafd80a318d16c0a48edb5e136902c6b", size = 346933, upload-time = "2026-06-30T07:17:10.762Z" }, + { url = "https://files.pythonhosted.org/packages/9d/29/9907bdf1c5346763cf10b7f6852aad86652168c259def904cbe0082c5864/rpds_py-2026.6.3-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:bdbd97738551fca3917c1bd7188bec1920bb520104f28e7e1007f9ceb17b7690", size = 340274, upload-time = "2026-06-30T07:17:12.266Z" }, + { url = "https://files.pythonhosted.org/packages/6f/2c/8e03767b5778ef25cebf74a7a91a2c3806f8eced4c92cb7406bbe060756d/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b95977e7211527ab0ba576e286d023389fbeeb32a6b7b771665d333c60e5342", size = 370763, upload-time = "2026-06-30T07:17:14.107Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e1/df2a7e1ba2efd796af26194250b8d42c821b46592311595162af9ef0528d/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15fde0e6fb0d88a60d221204873743e5d9f0b7d29165e62cd86d0413ad74ba6", size = 376467, upload-time = "2026-06-30T07:17:15.76Z" }, + { url = "https://files.pythonhosted.org/packages/6b/de/8a0814d1946af29cb068fb259aa8622f856df1d0bab58429448726b537f5/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a136d453475ac0fcbda502ef1e6504bd28d6d904700915d278deeab0d00fe140", size = 496689, upload-time = "2026-06-30T07:17:17.308Z" }, + { url = "https://files.pythonhosted.org/packages/df/f3/f19e0c852ba13694f5a79f3b719331051573cb5693feacf8a88ffffc3a71/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f826877d462181e5eb1c26a0026b8d0cab05d99844ecb6d8bf3627a2ca0c0442", size = 385340, upload-time = "2026-06-30T07:17:18.928Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ae/7ec3a9d2d4351f99e37bcb06b6b6f954512646bfdbf9742e1de727865daf/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79486287de1730dbaff3dbd124d0ca4d2ef7f9d29bf2544f1f93c09b5bcbbd12", size = 372179, upload-time = "2026-06-30T07:17:20.539Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ac/9cee911dff2aaa9a5a8354f6610bf2e6a616de9197c5fff4f54f82585f1e/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_31_riscv64.whl", hash = "sha256:808345f53cb952433ca2816f1604ff3515608a81784954f38d4452acfe8e61d5", size = 379993, upload-time = "2026-06-30T07:17:22.212Z" }, + { url = "https://files.pythonhosted.org/packages/83/6b/7c2a07ba88d1e9a936612f7a5d067467ed03d971d5a06f7d309dff044a7e/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1967debc37f64f2c4dc90a7f563aec558b471966e12adcac4e1c4240496b6ebf", size = 398909, upload-time = "2026-06-30T07:17:23.66Z" }, + { url = "https://files.pythonhosted.org/packages/97/0b/776ffcb66783637b0031f6d58d6fb55913c8b5abf00aeecd46bf933fb477/rpds_py-2026.6.3-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:f0840b5b17057f7fd918b76183a4b5a0635f43e14eb2ce60dce1d4ee4707ea00", size = 546584, upload-time = "2026-06-30T07:17:25.264Z" }, + { url = "https://files.pythonhosted.org/packages/55/33/ba3bc04d7092bd553c9b2b195624992d2cc4f3de1f380b7b93cbee67bd79/rpds_py-2026.6.3-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:faa679d19a6696fd54259ad321251ad77a13e70e03dd834daa762a44fb6196ef", size = 614357, upload-time = "2026-06-30T07:17:26.888Z" }, + { url = "https://files.pythonhosted.org/packages/8b/71/14edf065f04630b1a8472f7653cad03f6c478bcf95ea0e6aed55451e33ea/rpds_py-2026.6.3-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:23a439f31ccbeff1574e24889128821d1f7917470e830cf6544dced1c662262a", size = 576533, upload-time = "2026-06-30T07:17:28.546Z" }, + { url = "https://files.pythonhosted.org/packages/ba/76/65002b08596c389105720a8c0d22298b8dc25a4baf89b2ce431343c8b1de/rpds_py-2026.6.3-cp315-cp315t-win32.whl", hash = "sha256:913ca42ccad3f8cc6e292b587ae8ae49c8c823e5dce51a736252fc7c7cdfa577", size = 201204, upload-time = "2026-06-30T07:17:30.193Z" }, + { url = "https://files.pythonhosted.org/packages/8c/97/d855d6b3c322d1f27e26f5241c42016b56cf01377ea8ed348285f54652f0/rpds_py-2026.6.3-cp315-cp315t-win_amd64.whl", hash = "sha256:ae3d4fe8c0b9213624fdce7279d70e3b148b682ca20719ebd193a23ebfa47324", size = 220719, upload-time = "2026-06-30T07:17:31.788Z" }, + { url = "https://files.pythonhosted.org/packages/b4/9c/f0d19ac587fd0e4ab6b72cda355e9c5a6166b01ef7e064e437aef8eb9fef/rpds_py-2026.6.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4cf2d36a2357e4d07bb5a4f98801265327b48256867816cfd2ceb001e9754a8f", size = 349791, upload-time = "2026-06-30T07:17:33.315Z" }, + { url = "https://files.pythonhosted.org/packages/38/c7/1d49d204c9fd2ee6c537601dc4c1ba921e03363ca576bfab94a00254ac9a/rpds_py-2026.6.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:30c6dc199b24a5e3e81d50da0f00858c5bbdb2617a750395687f4339c5818171", size = 352842, upload-time = "2026-06-30T07:17:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e5/c0b5dc93cd0d4c06ce1f438907649514e2ea077bcd911e3154a51e96c38e/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9891e594296ab9dada6551c8e7b387b2721f27a67eecd528412e8906247a7b90", size = 382094, upload-time = "2026-06-30T07:17:36.514Z" }, + { url = "https://files.pythonhosted.org/packages/0d/54/ec0e907b4ca8d541112db352409bd15f871c9b243e0c92c9b5a46ae96f01/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5c2dc92304aa48a4a60443b548bb12f12e119d4b72f314015e67b9e1be97fca", size = 388662, upload-time = "2026-06-30T07:17:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f4/921c22a4fd0f1c1ac13a3996ffbf0aa67951e2c8ad0d1d9574938a2932e8/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:127e08c0642d880cf32ca47ec2a4a77b901f7e2dd1ad9762adb13955d72ffcc9", size = 504896, upload-time = "2026-06-30T07:17:39.689Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1b/a114b972cefa1ab1cdb3c7bb177cd3844a12826c507c722d3a73516dbbaf/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bb68f03f395eb793220b45c097bd4d8c32944393da0fad8b999efac0868fc8c", size = 391545, upload-time = "2026-06-30T07:17:41.336Z" }, + { url = "https://files.pythonhosted.org/packages/4e/98/af9b3db77d47fcbe6c8c1f36e2c2147ec70292819e99c325f871584a1c11/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3450b693fde92133e9f51060568a4c31fcca76d5e53bbd611e689ca446517e9", size = 380059, upload-time = "2026-06-30T07:17:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ba/0efd8668b97c1d26a61566386c636a7a7a09829e474fdf807caa15a2c844/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:5e8d07bddee435a2ff6f1920e18feff28d0bc4533e42f4bf6927fbd073312c41", size = 393235, upload-time = "2026-06-30T07:17:44.637Z" }, + { url = "https://files.pythonhosted.org/packages/62/90/8c139ee9690f73b0829f32647de6f40d826f8f443af6fa72644f96351aac/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a83ae6c67b7676b9878378547ca8e93ed77a580037bcbcd1d32f739e1e6089c", size = 413008, upload-time = "2026-06-30T07:17:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/0043896fdd7828ce09a1d9a8b06433714d0960fc4ff3fc4aa72b666b764e/rpds_py-2026.6.3-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2bfd04c19ddbd6640de0b51894d764bd2758854d5b75bd102d2ef10cb9c293a9", size = 558118, upload-time = "2026-06-30T07:17:47.759Z" }, + { url = "https://files.pythonhosted.org/packages/f6/40/02355f0e134f783a8f9814c4680a1bd311d37671577a5964ea838573ff37/rpds_py-2026.6.3-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:ca6546b66be9dc4738b1b043d5ebd5488c66c578c5ff0fd0e8065313fe3afb76", size = 623138, upload-time = "2026-06-30T07:17:49.355Z" }, + { url = "https://files.pythonhosted.org/packages/10/85/48f0abdcef5cce4e034c7a5b0ceeceba0b01bf0d942824f4bb720afe2dec/rpds_py-2026.6.3-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8e65860d238379ed982fd9ba690579b5e95af2f4840f99c772816dbe573cb826", size = 586486, upload-time = "2026-06-30T07:17:51.141Z" }, +] + [[package]] name = "ruff" version = "0.12.0" @@ -659,6 +1433,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + [[package]] name = "tabulate" version = "0.9.0" @@ -668,6 +1456,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, ] +[[package]] +name = "tornado" +version = "6.5.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/10/d3/343e5bb989d6515b1646cf3d40135d73f3d5e45339bded401b56cdac24dd/tornado-6.5.8.tar.gz", hash = "sha256:9452e1b208a8bd771e2cb1f2ff564985b9b214bdebbe622793e1799e0a6bd23f", size = 520493, upload-time = "2026-08-07T02:12:42.971Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/d5/007086fd8df5489338e204f65adce33fd4f21a4999dbb2b9cff2f897b5f4/tornado-6.5.8-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:cc6aa787d7cfab7c3d35189dc7a56fbd2399a569624c730c6b55b3d6531d0403", size = 449487, upload-time = "2026-08-07T02:12:28.682Z" }, + { url = "https://files.pythonhosted.org/packages/70/c8/5a24a99495903f594f6a199dd7beead1cbc0a13e2cb9102727bcaaf2a997/tornado-6.5.8-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9715b5eb79735b2bcd454ce216a9275b7c0470e64ea1bf5742f78b2f72b26eeb", size = 447649, upload-time = "2026-08-07T02:12:30.306Z" }, + { url = "https://files.pythonhosted.org/packages/6e/de/f2e733f386b85962d1b1dc82cd63d169b5b4580062b35397eac9244a41fe/tornado-6.5.8-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:547d63f450d570c14fe0e8db2cfb14c9bbd1c2503b4a6612586267955aa47b58", size = 450707, upload-time = "2026-08-07T02:12:31.95Z" }, + { url = "https://files.pythonhosted.org/packages/0b/94/20efeee9a01c141e9ac47c397f81679dfda24b32768fc4fff24e76d36c2c/tornado-6.5.8-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e2360a0ffbe145eca8af0b19cb7203d79b1a98dd4cccdd6b368f6f49c2e3808", size = 451677, upload-time = "2026-08-07T02:12:33.512Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/a96ccb8ccf0de2b7bc2c5fa1608a4803735018242e90c4882365a9fd418f/tornado-6.5.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5d242290bdf7ab3151bc1065fdd75c0dcc21cbc7b49f22a4c56329c2d6566d22", size = 451510, upload-time = "2026-08-07T02:12:35.346Z" }, + { url = "https://files.pythonhosted.org/packages/29/b5/93185859245ad3f00e62175f29607346788b696369347f0146e0421286bb/tornado-6.5.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7b94ff0e128fe0542f3bd331fb44d06260fc4ac16881545159f34ef08aad4195", size = 450917, upload-time = "2026-08-07T02:12:36.963Z" }, + { url = "https://files.pythonhosted.org/packages/97/cf/fe33cf062834487d34d1559746a4a12521033c22645b6d74d4bca702e018/tornado-6.5.8-cp39-abi3-win32.whl", hash = "sha256:67832909c4779c64942380cb5f044a5c6163d00831472d80e25e115de9917836", size = 451952, upload-time = "2026-08-07T02:12:38.512Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e1/468ad54333e92ccb62627e62cb88e5fc14a2171daa67ed47b1b8542d5b86/tornado-6.5.8-cp39-abi3-win_amd64.whl", hash = "sha256:11881db6b7c168494be2c2d12e65931451bdf7ee718535418ae1d8855dd5a0ee", size = 452391, upload-time = "2026-08-07T02:12:39.971Z" }, + { url = "https://files.pythonhosted.org/packages/ad/3e/cd5e4f06e34cde33b8ef66cf36aa2b5ad46354cc1af7d2136bbe365fee1d/tornado-6.5.8-cp39-abi3-win_arm64.whl", hash = "sha256:68a7468c7e289f8514d7d664101753903217eff1bb6822c6b5994a0b5f5bcb26", size = 451411, upload-time = "2026-08-07T02:12:41.469Z" }, +] + +[[package]] +name = "traitlets" +version = "5.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/2e/a7fbfe268c8a3b32546930c0297c101d65a4a14c304ad5790a9f478f0e4e/traitlets-5.16.1.tar.gz", hash = "sha256:ed900c2b631aa3a112811139fa97b8d2c3bad5e989656bba4b7e52c7852c18c1", size = 166137, upload-time = "2026-08-03T08:32:36.848Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/66/0d785f0bc5e4315a96c989bb476d0fc07ea4f85132550c7b156ca2035d52/traitlets-5.16.1-py3-none-any.whl", hash = "sha256:f775618166caa0396c8e337099240f2bd3e5e917d203b2e6fbe21a58d3cb1f6b", size = 86211, upload-time = "2026-08-03T08:32:34.48Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + [[package]] name = "tzdata" version = "2026.3" @@ -676,3 +1499,12 @@ sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42 wheels = [ { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, ] + +[[package]] +name = "wcwidth" +version = "0.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/57/ed58088fafdf4c55a0ad6bde846502567645424d7ebf325230b9237f4085/wcwidth-0.8.3.tar.gz", hash = "sha256:d128512515fbf4612e0ff21fd6380399210318b7b54a9af59dff8454cf9730eb", size = 1458450, upload-time = "2026-08-28T18:10:06.875Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/0e/57f6bb3024a597b2e8ec4aee710ffe62ddc95af2e2bb1ee7a7abdc22c68c/wcwidth-0.8.3-py3-none-any.whl", hash = "sha256:d5b73dba6158a595ec9370350e7f2637bcac8d6c5e4fde34f30fcffb6103a5e4", size = 331669, upload-time = "2026-08-28T18:10:04.909Z" }, +]