View job on Handshake

Please apply if you are an innovative and ambitious individual who wants to help build an organisation that makes a positive global impact on society and the environment.

As a Software Engineer at Invenia Labs you will work on building the software components of a distributed machine learning system. In this role you will collaborate closely with Machine Learning Researchers to identify use cases and design maintainable long-term solutions that scale, address current needs while also anticipating future requirements.

Role Description

  • Contribute to design discussions surrounding core system.
  • Identify the needs of the research team.
  • Aim to exceed user expectations, ensuring that usability, performance, and correctness are given equal consideration during design and development.
  • Improve the computational performance of the system.
  • Build the software components of the system, including libraries for:

Expressing, distributing, and executing complex machine learning pipelines.

Complex data querying and preprocessing.

Asynchronous communication with other systems.

Utility packages supporting the above.

Review proposed code and provide feedback.

Contribute to open source packages.

Desirable Qualifications

  • Experience in software engineering/development.
  • BSc/BEng degree in computer science or equivalent.
  • Ability to develop and/or deploy distributed applications.

Additional Experience (Optional)

  • Julia, MATLAB or Python development.
  • Parallel or distributed computation (e.g. Dask, Tensorflow, Apache Spark).
  • Basic familiarity with Machine learning, statistics, and/or optimisation.
  • Strong communication skills, especially with regards to requirements gathering and documentation.
  • Containers (especially Docker).
  • Cloud Computing (especially AWS beyond EC2)