meta_opt
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.8%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: edogariu
- Language: Jupyter Notebook
- Default Branch: main
- Size: 205 MB
Statistics
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Meta-Optimization
Hi! This is the codebase for our meta-optimization algorithm, built atop the nonstochastic control theory. We provide an implementation as an optax optimizer (found in the jax_meta_opt function in meta_opt/jax_stuff/jax_meta_opt.py) and plan to release a pytorch version soon.
Results
We use common deep learning workloads (specifically the AlgoPerf implementations, see https://arxiv.org/abs/2306.07179 and https://github.com/mlcommons/algorithmic-efficiency) to benchmark this optimizer's performance against the current deep learning optimizers (SGD, Momentum, Adam, DoG, DoWG, Mechanic, D-Adaptation, and more). Our meta-optimization method is able to demonstrate improvement across training episodes, eventually matching the performances of many tuned benchmarks without the need for manual hyperparameter tuning; see the graph below for an example of a VGG-16 architecture trained on the CIFAR-10 dataset.

Instructions
To install the meta_opt package and its dependencies, simply ensure that Python version 3.10 is installed (through something like brew install python@3.10 on mac or sudo apt install python3.10 on linux). Then, you should be able to run ./setup.sh (you may need to chmod +x setup.sh to make it executable), which will configure a virtual environment.
For each optimizer experiment we run, we have a separate .py file in the configs/ folder that contains the configurations of (1) the experimental setup and (2) the specific optimizer we use. To launch the experiment, you may run .venv/bin/python3 runner.py --config_path=ABSOLUTE_PATH_TO_CORRECT_CONFIG.py with ABSOLUTE_PATH_TO_CORRECT_CONFIG.py replaced with an absolute path to the correct file in the configs/ folder. This will start the experiment and write logs/results/checkpoints to a subdirectory of experiments/.
For certain workloads, you may need to pre-download the corresponding TensorFlow dataset to the datasets/ folder if it does not do so automatically.
my TODOS
- [ ] run hella experiments and make some cool graphs
- [ ] implement many more baselines, including some that have Pytorch implementations?
- [ ] figure out correct counterfactual pmap and do a proper memory/runtime profiling
- [ ] figure out sharding of MetaOpt state
- [ ] do the pytorch implementation
- [ ] fix checkpointing
- [ ] fix dataset automatic downloads
- [ ] add back ncf and gaps? they dont do too well, but maybe with adam disturbances they could?
- [X] ~~implement the
scale_by_adamfor disturbances~~ - [X] ~~add utilization logging and redo the way we write metrics~~
BibTeX Citation
If you use this algorithm in a scientific publication, we would appreciate using the following citations:
``` @article{metaopt2024, author = {Chen, Xinyi and Dogariu, Evan and Lu, Zhou and Hazan, Elad}, journal = {HiLD 2024: 2nd Workshop on High-dimensional Learning Dynamics}, month = {jun}, year = {2024}, title = {Nonconvex Meta-optimization for Deep Learning}, url = {https://openreview.net/pdf?id=AJwlILrBOr}, keywords = {meta-optimization,deep-learning,nonconvex} }
@misc{metaopt2024code, author = {Dogariu, Evan}, month = {jun}, year = {2024}, title = {edogariu/metaopt}, url = {https://github.com/edogariu/meta_opt}, keywords = {meta-optimization,deep-learning,nonconvex,jax} } ```
Owner
- Name: Evan Dogariu!
- Login: edogariu
- Kind: user
- Repositories: 3
- Profile: https://github.com/edogariu
Princeton University '24 BSE Computer Science Major, Lover of ML, Computer Vision, and NLP (and physics)
GitHub Events
Total
Last Year
Dependencies
- jupyter *
- matplotlib *
- scipy ==1.12.0
- tensorflow ==2.15
- wandb *
- wheel *