We’re looking for Software Engineers to join us to be part of a highly talented team bringing the next step-change in compression technology to billions of users, creating enormous global impact and value. We’re looking for engineers who will help us deliver AI-based compression to end-users by porting our codec from GPU-based systems to (primarily) mobile platforms, thus going from research to production. You’ll enjoy working with low-level code and are comfortable with programming across multiple platforms. The ideal candidate will have a deep understanding of optimisation methodologies to reduce runtime and memory footprint for neural networks and has experience with taking algorithms from research to deployment on edge devices.
ML Performance Engineer

Responsibilities Include:
lensWork in a team to port ML research algorithms to edge devices with a focus on smartphones (Android, iOS).
lensProfile various algorithms to analyse performance and identify any bottlenecks. Profiling includes data loading, data movement, data caching, operation count, execution chipset, warm-up latency and others.
lensImplement solutions to the identified bottlenecks.
lensOptional: Write custom operations using the low-level API for Android (OpenGL ES) and iOS (Metal) systems.
lensOptional: Apply standard neural network runtime optimisation methods such as pruning, low-bit quantisation, architecture tuning, batching and others.

Responsibilities Include:
lensWork in a team to port ML research algorithms to edge devices with a focus on smartphones (Android, iOS).
lensProfile various algorithms to analyse performance and identify any bottlenecks. Profiling includes data loading, data movement, data caching, operation count, execution chipset, warm-up latency and others.
lensImplement solutions to the identified bottlenecks.
lensOptional: Write custom operations using the low-level API for Android (OpenGL ES) and iOS (Metal) systems.
lensOptional: Apply standard neural network runtime optimisation methods such as pruning, low-bit quantisation, architecture tuning, batching and others.

Requirements:
lensAt a minimum, a Bachelor's degree in computer science or related field (Mathematics, Physics, Engineering).
lensAt a minimum, 4-6 years of experience in performance optimisation.
lensSome formal training in machine learning; either through education, work experience and/or extensive private projects. Resulting in an understanding of ML frameworks such as PyTorch and/or Tensorflow.
lensExpertise in Python (Expert) and C++ (Semi-Expert)
lensSome experience with ML-programming in either Android and IOS: Android Studio, XCode, Google ML, Core ML.
lensSome experience with optimisation techniques. Examples include SIMD (SSE, AVX), vectorisation, loop dependencies, multithreading, multi-processor usage and tensor cores.
lensA strong machine learning background
lensSignificant experience with ML-programming in either Android and IOS: Android Studio,
XCode, Google ML, Core ML. Knowledge of the development stack for Android and iOS.
lensExperience with Android NNAPI and or other Android-based NPU SDKs (Exynos, Hexagon HiSilicon).