Jobs

Hiring is done on a rolling basis. Specific openings will be posted here, but general inquiries are also welcome. Read carefully the instructions before applying: we like to give proper consideration to each serious candidature, but in order to do so we need to quickly sift through the many mass-applications that we receive and that have no connection with individual projects or the general research program of the laboratory.

Please consider that in order to perform a preliminary screening, all the inquiries that do not follow these guidelines might be silently ignored.

Research Software Engineer

We are looking for applications for a full-time position for a Research Software Engineer in the Laboratory of Computational Science and Modeling (COSMO) at EPFL, Lausanne, Switzerland.

Integrating machine learning in atomistic simulation software

Over the past decade, usage of machine learning techniques has become a key component of many research projects, providing better accuracy than ad-hoc empirical models, and much lower computational cost than first-principles calculations. However, the software ecosystem for atomistic machine learning is extremely fragmented, with new tools appearing every year, and a lack of
standardization in the way data is represented and shared. At the same time, many simulation software packages (such as LAMMPS, GROMACS, Quantum ESPRESSO, CP2K, VASP, etc.) are already well-established and widely used, and integrating machine learning models into them is a major challenge, requiring significant software development effort.

To bridge this gap, we are developing the metatomic library, which provides a common interface between machine learning models and simulation software, allowing to easily integrate machine learning techniques into existing simulation workflows.

The first version of the library (https://doi.org/10.1063/5.0304911) focused on models defined in Python through the PyTorch framework, but we are now expanding the scope of the project to support models defined in other Python frameworks (TensorFlow, JAX, etc.) or even compiled languages (C, C++, Fortran, etc.). To push the development of the library forward, we are looking for a Research Software Engineer to join our team and contribute to the development of the library and its integration with simulation software.

Job description

You will bring software development expertise to the project, and contribute to the design and implementation of the library, as well as its integration with simulation software. You will be responsible for developing new features, improving the performance and scalability of the library, and ensuring its compatibility with a wide range of machine learning models and simulation software, acros multiple programming languages and platforms. You will also be responsible for writing documentation and tests, and for providing support to users of the library.

You will work closely with domain scientist and existing research software engineers to bring projects to completion and ensure alignment with the needs of the scientific community at large.

Your profile

You have a sound knowledge of computer science, code optimization and its principles, and an understanding of the application domains, i.e. atomic-scale simulations in chemistry and materials science. The current software stack is Python-centric, but also includes components in compiled languages (Rust, C++, CUDA). It will be expanded to support other languages and platforms, so you should be comfortable working in a multi-language environment, and have a willingness to learn new programming languages and tools as needed.

Having some of the following qualifications is preferred, as well as a willingness to learn new skills and gain more experience on the job: 

  • Familiarity with the Python programming language
  • Familiarity with at least one compiled programming language (C, C++, Fortran, Rust)
  • Familiarity with GPU programming (CUDA, OpenCL, SYCL)
  • Familiarity with at least one machine learning framework (PyTorch, TensorFlow, JAX, …)
  • Familiarity with software development best practices (version control, testing, documentation, code review, …)
  • Familiarity with multi-language software development and interoperability

You should have a bachelor’s degree in computer science, mathematics or natural sciences, preferably with a masters, Ph.D., or relevant industry experience.

Working at EPFL

As an EPFL employee, you will be working in an international environment. We value the diversity of our team and particularly encourage women candidates to apply. In line with our values, EPFL encourages an inclusive culture. We promote equality of opportunity, value diversity and nurture a working and learning environment in which the rights and dignity of all our staff and students are respected.

Application procedure

The position is initially open for 1 year, with possibility to renew the contract upon mutual agreement and according to funding availability. The salary scale is expected to follow the official ETH domain scale for post-doctoral positions.

Please send your complete application (CV, a brief statement describing your qualifications, and contact information of two references) to <[email protected]> and <[email protected]> with the subject “Application for Research Software Engineer position”.