Skip to content

Optuna GSoC 2022

Hiroyuki Vincent Yamazaki edited this page Feb 25, 2022 · 14 revisions

Optuna

Optuna is an open source hyperparameter optimization framework to automate hyperparameter search. Optuna provides eager search spaces for automated search for optimal hyperparameters using Python conditionals, loops, and syntax, state-of-the-art algorithms to efficiently search large spaces and prune unpromising trials for faster results, and easy parallelization for hyperparameter searches over multiple threads or processes without modifying code.

Optuna is participating in GSoC 2022 as a member of NumFOCUS.

Getting Started

For coding on Optuna, a solid basis in Python coding will be required. Experience working with Git and github.com will also be useful. If you're interested in applying, we recommend you take a look at the Optuna github repository, and try your hand at some of the Contribution Welcome labelled issues. We will evaluate applications largely based on their contributions to Optuna and other open source projects.

To contact us, please email us at optuna@preferred.jp

Projects

Project title: The Next Generation of Hyperparameter Optimization Software

Project title: Maintainable Performance Benchmark Tooling for Optimization Algorithms

Feel free to come up with your own project that did not fall into any of the ones proposed above. We are keen to hear your ideas on how the Optuna ecosystem can be improved.

Project title: The Next Generation of Hyperparameter Optimization Software

Description

We are developing the next major version, V3 of the hyperparameter optimization software Optuna. The goal of Optuna V3 is to improve the stability of the software and deliver state-of-the-art algorithms and features to all users, while keeping the development policy open and involving the community. The development of Optuna V3 started last October, but there are still many important and challenging tasks left to be done, for example, improvement of data storage and core algorithms, review testing strategy, re-definition of exception/error specification. We would like you to work on the challenging tasks with the development of Optuna V3.

Expected outcomes

You will take part in reaching the above goal. The detailed development roadmap for Optuna V3 is available on the GitHub wiki. See here. Further details and progress statuses of each task are described in issues listed at this wiki. You will be dealing with one of the tasks that are not yet completed. Here are some important uncompleted tasks.

  • Make a consistent policy for instantiation of storage classes and publicization of private storage accompanying it #2942
  • Exception/error specification review #2978
  • Change default sampling algorithm #2964
  • Review core function testing strategy #2974

You are also free to take whatever tasks you like according to your own interests, or come up with your own.

Why this is cool

You will work with the Optuna committers and contributors to develop key items to create the next major version of Optuna. The actual work requires advanced coding skills and communication skills to facilitate discussions. Also, each development item requires its own domain knowledge. For example, RDB, error handling, unit testing, and hyper-parameter optimization algorithms. It is of course welcome to have such knowledge beforehand, but it is also a great opportunity to acquire such knowledge through development.

Requirements

Minimum

  • Software development experience using Python
  • High work morale and communication skills

Preferred

  • Software development experience in teams
  • Knowledge of RDB (MySQL, PostgreSQL, SQLite), error handling and unit-testing
  • Knowledge/experience with Bayesian optimization, hyperparameter optimization and black-box optimization

Mentors

@HideakiImamura, @nzw0301, @himkt

Size of project

175h

Difficulty

Medium/High

Project title: Maintainable Performance Benchmark Tooling for Optimization Algorithms

Description

Optuna includes a wide range of black-box optimization algorithms. Maintaining these algorithms is not trivial, because changes are oftentimes difficult to determine whether they are for the better. For instance, altering the default value of a constructor argument or some internal logic might degrade optimization performance without necessarily introducing an obvious bug. Even something as simple as refactoring may have similar consequences. These types of changes are difficult to address using unit tests. They cost both developers and reviewers a lot of time. Here, we would like to work on this problem.

In Optuna, we resort to using Kurobako. It is a command-line tool for benchmarking black-box optimization algorithms. It comes with a set of problems, allowing us to quickly compare different algorithms against those, helping one to determine whether a change should be adopted. Kurobako was initially developed by one of Optuna’s core maintainers, and is written in Rust.

Expected outcomes

You will make it easier to maintain Kurobako in the Optuna community. We suggest first rewriting Kurobako in Python, alternatively, redesigning it from the ground up. Further, the project may be extended to add new functionality or in some other way improve the user experience. You may also work on the integration with GitHub Actions and Optuna’s CI. Creative ideas are welcome.

Why this is cool

You get to work with multiple programming languages and contribute to enhancing the overall experience for many Optuna developers. Development operations are critical for the smooth running of large open source projects, and the skills you can learn in improving the operations of Optuna will be applicable to many other projects. Build relationships with coders in a top tier startup in Japan.

Requirements

Minimum

  • Software development experience using Python
  • High work morale and communication skills
  • Basic understanding of Rust

Preferred

  • Software development experience in teams
  • Knowledge/experience with Bayesian optimization, hyperparameter optimization and black-box optimization, and benchmarking of such techniques

Mentors

@HideakiImamura, @hvy, @sile

Size of project

175h

Difficulty

Medium/High