{"id":32139506,"url":"https://github.com/ytopt-team/ytopt","last_synced_at":"2025-10-21T05:53:10.212Z","repository":{"id":38297968,"uuid":"165902750","full_name":"ytopt-team/ytopt","owner":"ytopt-team","description":"ytopt: machine-learning-based autotuning and hyperparameter optimization framework using Bayesian Optimization","archived":false,"fork":false,"pushed_at":"2025-10-07T15:59:44.000Z","size":26888,"stargazers_count":50,"open_issues_count":0,"forks_count":18,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-21T05:53:08.973Z","etag":null,"topics":["asynchronous-and-dynamic-task-management","asynchronous-search","autotune","autotuning","bayesian-optimization","hyperparameter-optimization","hyperparameter-tuning","python","pytorch","tensorflow"],"latest_commit_sha":null,"homepage":"https://github.com/ytopt-team/ytopt","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ytopt-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-15T18:31:40.000Z","updated_at":"2025-10-11T13:58:23.000Z","dependencies_parsed_at":"2023-02-14T01:32:01.412Z","dependency_job_id":"95f641e2-c7ed-4cb0-8803-ff2907ec573f","html_url":"https://github.com/ytopt-team/ytopt","commit_stats":{"total_commits":292,"total_committers":15,"mean_commits":"19.466666666666665","dds":0.678082191780822,"last_synced_commit":"97238dc6179c60a2d19280f90d99224b876be48c"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/ytopt-team/ytopt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytopt-team%2Fytopt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytopt-team%2Fytopt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytopt-team%2Fytopt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytopt-team%2Fytopt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ytopt-team","download_url":"https://codeload.github.com/ytopt-team/ytopt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytopt-team%2Fytopt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280213279,"owners_count":26291739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous-and-dynamic-task-management","asynchronous-search","autotune","autotuning","bayesian-optimization","hyperparameter-optimization","hyperparameter-tuning","python","pytorch","tensorflow"],"created_at":"2025-10-21T05:53:07.290Z","updated_at":"2025-10-21T05:53:10.206Z","avatar_url":"https://github.com/ytopt-team.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/_static/logo/medium.png\"\u003e\n\u003c/p\u003e\n\n\u003c!-- [![Documentation Status](https://readthedocs.org/projects/ytopt/badge/?version=latest)](https://ytopt.readthedocs.io/en/latest/?badge=latest)--\u003e\n\n# What is ytopt?\n\n\n\n``ytopt`` is a machine learning-based autotuning and hyperparameter optimization software package that uses Bayesian Optimization to find the best input parameter/hyperparameter configurations for a given kernel, miniapp, or application with the best system configurations for a given HPC system.\n\n``ytopt`` accepts the following as input:\n\n  1. A code-evaluation wrapper with tunable parameters as a code mold for performance measurement \n  2. Tunable application parameters (hyperparameters) and tunable system parameters \n  3. The corresponding parameter search space for the tunable parameters\n\nBy sampling and evaluating a small number of input configurations, ``ytopt`` gradually builds a surrogate model of the input-output space. This process continues until the user-specified time or the maximum number of evaluations is reached.\n\n``ytopt`` handles both unconstrained and constrained optimization problems, searches asynchronously, and can look-ahead on iterations to more effectively adapt to new evaluations and adjust the search towards promising configurations, leading to a more efficient and faster convergence on the best solutions.\n\nInternally, ``ytopt`` uses a manager-worker computational paradigm, where one node fits the surrogate model and generates new input configurations, and other nodes perform the computationally expensive evaluations and return the results to the manager node. This is implemented in two ways: using [ray](https://github.com/ray-project/ray) for ``ytopt/benchmark`` in sequential processing and  using [libensemble](https://github.com/Libensemble/libensemble) for ``ytopt-libe`` in parallel processing.\n\nAdditional documentation is available on [Read the Docs](https://ytopt.readthedocs.io/en/latest/). Access ``ytopt-libe`` for the latest examples with new features and development.\n\n# Installation instructions\n``ytopt`` requires the following components: ``dh-scikit-optimize``, ``autotune``, and ``ConfigSpace``. When ytopt is being installed, ``ConfigSpace`` and ``LibEnsemble`` are required to be installed automatically.\n\n\n* We recommend creating isolated Python environments on your local machine using [conda](https://docs.conda.io/projects/conda/en/latest/index.html), for example:\n\n```\nconda create --name ytune python=3.10\nconda activate ytune\n```\n\n* Create a directory for ``ytune``:\n```\nmkdir ytune\ncd ytune\n```\n\n* Install [dh-scikit-optimize](https://github.com/ytopt-team/scikit-optimize.git):\n```\ngit clone https://github.com/ytopt-team/scikit-optimize.git\ncd scikit-optimize\npip install -e .\ncd ..\n```\n\n* Install [autotune](https://github.com/ytopt-team/autotune.git):\n```\ngit clone -b version1 https://github.com/ytopt-team/autotune.git\ncd autotune\npip install -e . \ncd ..\n```\n\n* Install [ytopt](https://github.com/ytopt-team/ytopt.git):\n```\ngit clone -b main https://github.com/ytopt-team/ytopt.git\ncd ytopt\npip install -e .\n```\n\nAfter installing scikit-optimize, autotune, and ytopt successfully, the autotuning framework ytopt is ready to use. Browse the ``ytopt/benchmark`` directory for an extensive collection of old examples, or encourage to access ``ytopt-libe`` for the latest examples with new features.\n\n```\n* [Optional] Install [CConfigSpace](https://github.com/argonne-lcf/CCS.git):\n    * Prerequisites: ``autotools`` and ``gsl``\n        * Ubuntu\n          ```\n          sudo apt-get install autoconf automake libtool libgsl-dev\n          ```\n\n        * MacOS\n          ```\n          brew install autoconf automake libtool gsl\n          ```\n    * Build and Install the library and python bindings:\n      the `configure` command can take an optional `--prefix=` parameter to specify a\n      different install path than the default one (`/usr/local`). Depending on the\n      chosen location you may need elevated previleges to run `make install`.\n      ```\n      git clone git@github.com:argonne-lcf/CCS.git\n      cd CCS\n      ./autogen.sh\n      mkdir build\n      cd build\n      ../configure\n      make\n      make install\n      cd ../bindings/python\n      pip install parglare==0.12.0\n      pip install -e .\n      ```\n    * Setup environment:\n      in order for the python binding to find the CConfigSpace library, the path to\n      the library install location (`/usr/local/lib` by default) must be appended\n      to the `LD_LIBRARY_PATH` environment variable on Linux, while on MacOS the\n      `DYLD_LIBRARY_PATH` environment variable serves the same purpose. Alternatively\n      the `LIBCCONFIGSPACE_SO_` environment variable can be made to point to the installed\n      `libcconfigspace.so` file on Linux or to the installed `libcconfigspace.dylib`\n      on MacOS. \n\n* [Optional] Install Online tuning:\n    * Online tuning with transfer learning interface is built on Synthetic Data Vault (SDV):\n    * Install [SDV](https://github.com/sdv-dev/SDV.git):\n      ```\n      cd ytopt\n      pip install -e .[online]\n      ```\n    * For macOS it may need to do: ``pip install -e \".[online]\"``  \n\n```\n\n# Directory structure\n```\ndocs/\n    Sphinx documentation files\ntest/\n    scipts for running benchmark problems in the problems directory\nytopt/\n    scripts that contain the search implementations\nytopt/hpo/\n    Hyperparameter optimization with 7 and 17 hyperparameters using ray\nytopt/benchmark/\n    a set of problems the user can use to compare our different search algorithms or as examples to build their own problems\nytopt-libe/\n    scripts and a set of examples for using ytopt-libe with new features \nytopt-libe/hpo/\n    Hyperparameter optimization with 7 and 17 hyperparameters using libensemble\nytopt-libe/hpo4llm/\n    Hyperparameter optimization for a loss function for LLM training\n```\n\n# Basic Usage\n\n``ytopt`` is typically run from the command-line in the following example manner:\n\n``python -m ytopt.search.ambs --evaluator ray --problem problem.Problem --max-evals=10 --learner RF``\n\nWhere:\n  * The *search* variant is one of ``ambs`` (*Asynchronous Model-Based Search*) or ``async_search`` (run as an MPI process).\n  * The *evaluator* is the method of concurrent evaluations, and can be ``ray`` or ``subprocess``.\n  * The *problem* is typically an ``autotune.TuningProblem`` instance. Specify the module path and instance name.\n  * ``--max-evals`` is the maximum number of evaluations.\n\nDepending on the *search* variant chosen, other command-line options may be provided. For example, the ``ytopt.search.ambs`` search\nmethod above was further customized by specifying the ``RF`` learning strategy.\n\nSee the [``autotune`` docs](https://github.com/ytopt-team/autotune) for basic information on getting started with creating a ``TuningProblem`` instance.\n\nSee the [``ConfigSpace`` docs](https://automl.github.io/ConfigSpace/main/) for guidance on defining input/output parameter spaces for problems.\n\nOtherwise, access the subdirectory ``ytopt-libe`` or [ytopt-libensemble](https://github.com/ytopt-team/ytopt-libensemble) for the latest examples with new features.\n\n# Tutorials\n\n* [Autotuning the block matrix multiplication](https://github.com/ytopt-team/ytopt/tree/tutorial/docs/tutorials/mmm-block/tutorial-mmm-block.md)\n* [Autotuning the OpenMP version of XSBench](https://github.com/ytopt-team/ytopt/tree/tutorial/docs/tutorials/omp-xsbench/tutorial-omp-xsbench.md)\n* [Autotuning the OpenMP version of XSBench with constraints](https://github.com/ytopt-team/ytopt/tree/tutorial/docs/tutorials/omp-xsbench/tutorial-omp-xsbench-const.md)\n* [Autotuning the hybrid MPI/OpenMP version of XSBench](https://github.com/ytopt-team/ytopt/tree/tutorial/docs/tutorials/mpi-omp-xsbench/tutorial-mpi-omp-xsbench.md)\n* [Autotuning the hybrid MPI/OpenMP version of XSBench with constraints](https://github.com/ytopt-team/ytopt/tree/tutorial/docs/tutorials/mpi-omp-xsbench/tutorial-mpi-omp-xsbench-const.md)\n* [Autotuning the OpenMP version of convolution-2d with constraints](https://github.com/ytopt-team/ytopt/tree/tutorial/docs/tutorials/convolution-2d/tutorial-convolution-2d-const.md)\n* [(Optinal) Autotuning the OpenMP version of XSBench online](https://github.com/ytopt-team/ytopt/blob/online/docs/tutorials/omp-xsbench-tl/tutorial-omp-xsbench-tl.md)\n\n\u003c!--# How do I learn more?\n\n* Documentation: https://ytopt.readthedocs.io \n\n* GitHub repository: https://github.com/ytopt-team/ytopt --\u003e\n\n\n# Who is responsible?\n\nThe core ``ytopt`` team is at Argonne National Laboratory:\n\n* Xingfu Wu \u003cxingfu.wu@anl.gov\u003e\n* Prasanna Balaprakash \u003cpbalapra@anl.gov\u003e\n* Brice Videau \u003cbvideau@anl.gov\u003e\n* Paul Hovland \u003chovland@anl.gov\u003e\n* Romain Egele \u003cregele@anl.gov\u003e\n* Jaehoon Koo \u003cjkoo@anl.gov\u003e\n\nThe convolution-2d tutorial (source and python scripts) is contributed by:\n* David Fridlander \u003cdavidfrid2@gmail.com\u003e\n\n\u003c!--Modules, patches (code, documentation, etc.) contributed by:\n\n* David Fridlander \u003cdavidfrid2@gmail.com\u003e\n\n# How can I participate?\n\nQuestions, comments, feature requests, bug reports, etc. can be directed to:\n\n* Our mailing list: *ytopt@groups.io* or https://groups.io/g/ytopt\n\n* Issues on GitHub\n\nPatches are much appreciated on the software itself as well as documentation.\nOptionally, please include in your first patch a credit for yourself in the\nlist above.\n\nThe ytopt team uses git-flow to organize the development: [Git-Flow cheatsheet](https://danielkummer.github.io/git-flow-cheatsheet/). For tests we are using: [Pytest](https://docs.pytest.org/en/latest/). --\u003e\n\n# Publications\n* X. Wu, P. Balaprakash, M. Kruse, J. Koo, B. Videau, P. Hovland, V. Taylor, B. Geltz, S. Jana, and M. Hall, \"ytopt: Autotuning Scientific Applications for Energy Efficiency at Large Scales\", Concurrency and Computation: Practice and Experience, Vol. 37 (1): e8322, Jan. 2025.  DOI: [10.1002/cpe.8322](https://onlinelibrary.wiley.com/doi/10.1002/cpe.8322).\n* X. Wu, J. R. Tramm, J. Larson, J.-L. Navarro, P. Balaprakash, B. Videau, M. Kruse, P. Hovland, V. Taylor, and M. Hall, \"Integrating ytopt and libEnsemble to Autotune OpenMC\", DOI: [10.48550/arXiv.2402.09222](https://doi.org/10.48550/arXiv.2402.09222),  International Journal of High Performance Computing Applications, Vol. 39, No. 1, 79-103, Jan. 2025. DOI: [10.1177/10943420241286476](https://journals.sagepub.com/doi/10.1177/10943420241286476).\n* X. Wu and T. Oli and J. H. Qian and V. Taylor and M. C. Hersam and V. K. Sangwan, \"An Autotuning-based Optimization Framework for Mixed-kernel SVM Classifications in Smart Pixel Datasets and Heterojunction Transistors\", DOI: [10.48550/arXiv.2406.18445](https://arxiv.org/pdf/2406.18445), 2024.\n* X. Wu, P. Paramasivam, and V. Taylor, \"Autotuning Apache TVM-based Scientific Applications Using Bayesian Optimization\", SC23 Workshop on Artificial Intelligence and Machine Learning for Scientific Applications (AI4S’23), Nov. 13, 2023, Denver, CO. https://arxiv.org/pdf/2309.07235.pdf.\n* T. Randall, J. Koo, B. Videau, M. Kruse, X. Wu, P. Hovland, M. Hall, R. Ge, and P. Balaprakash. \"Transfer-Learning-Based Autotuning Using Gaussian Copula\". In 2023 International Conference on Supercomputing (ICS ’23), June 21–23, 2023, Orlando, FL, USA. ACM, New York, NY, USA, 13 pages. https://doi.org/10.1145/3577193.3593712.\n* X. Wu, P. Balaprakash, M. Kruse, J. Koo, B. Videau, P. Hovland, V. Taylor, B. Geltz, S. Jana, and M. Hall, \"ytopt: Autotuning Scientific Applications for Energy Efficiency at Large Scales\", Cray User Group Conference 2023 (CUG’23), Helsinki, Finland, May 7-11, 2023. DOI: [10.48550/arXiv.2303.16245](https://doi.org/10.48550/arXiv.2303.16245)\n* X. Wu, M. Kruse, P. Balaprakash, H. Finkel, P. Hovland, V. Taylor, and M. Hall, \"Autotuning PolyBench benchmarks with LLVM Clang/Polly loop optimization pragmas using Bayesian optimization (extended version),\" Concurrency and Computation. Practice and Experience, Volume 34, Issue 20, 2022. ISSN 1532-0626 DOI: [10.1002/cpe.6683](https://doi.org/10.1002/cpe.6683) \n* J. Koo, P. Balaprakash, M. Kruse, X. Wu, P. Hovland, and M. Hall, \"Customized Monte Carlo Tree Search for LLVM/Polly's Composable Loop Optimization Transformations,\" in Proceedings of 12th IEEE International Workshop on Performance Modeling, Benchmarking and Simulation of High Performance Computer Systems (PMBS21), pages 82–93, 2021. DOI: [10.1109/PMBS54543.2021.00015](https://scwpub21:conf21%2f%2f@conferences.computer.org/scwpub/pdfs/PMBS2021-vSqRXl4nJSV5KT4jWO5cW/111800a082/111800a082.pdf)\n* X. Wu, M. Kruse, P. Balaprakash, H. Finkel, P. Hovland, V. Taylor, and M. Hall, \"Autotuning PolyBench Benchmarks with LLVM Clang/Polly Loop Optimization Pragmas Using Bayesian Optimization,\" in Proceedings of 11th IEEE International Workshop on Performance Modeling, Benchmarking and Simulation of High Performance Computer Systems (PMBS20), pages 61–70, 2020. DOI: [10.1109/PMBS51919.2020.00012](https://ieeexplore.ieee.org/document/9307884) \n* P. Balaprakash, J. Dongarra, T. Gamblin, M. Hall, J. K. Hollingsworth, B. Norris, and R. Vuduc, \"Autotuning in High-Performance Computing Applications,\" Proceedings of the IEEE, vol. 106, no. 11, 2018. DOI: [10.1109/JPROC.2018.2841200](https://ieeexplore.ieee.org/document/8423171) \n*  T. Nelson, A. Rivera, P. Balaprakash, M. Hall, P. Hovland, E. Jessup, and B. Norris, \"Generating efficient tensor contractions for GPUs,\" in Proceedings of 44th International Conference on Parallel Processing, pages 969–978, 2015. DOI: [10.1109/ICPP.2015.106](https://ieeexplore.ieee.org/document/7349652) \n\n# Acknowledgements\n* SciDAC RAPIDS3, U.S. Department of Energy ASCR (10/2025--present)\n* SciDAC RAPIDS and OASIS, U.S. Department of Energy ASCR (1/2024--9/2025)\n* PROTEAS-TUNE, U.S. Department of Energy ASCR Exascale Computing Project (2018--2023)\n* YTune: Autotuning Compiler Technology for Cross-Architecture Transformation and Code Generation, U.S. Department of Energy Exascale Computing Project (2016--2018) \n* Scalable Data-Efficient Learning for Scientific Domains, U.S. Department of Energy 2018 Early Career Award funded by the Advanced Scientific Computing Research program within the DOE Office of Science (2018--2023)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fytopt-team%2Fytopt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fytopt-team%2Fytopt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fytopt-team%2Fytopt/lists"}