Software Engineer, ML Compiler
Facebook AR/VR focuses on delivering Facebook's vision through Augmented Reality (AR) and Virtual Reality (VR). The compute performance and power efficiency requirements of Virtual and Augmented Reality require custom silicon. Facebook Silicon team is driving the state-of-the-art forward with breakthrough work in computer vision, machine learning, mixed reality, graphics, displays, sensors, and new ways to map the human body. Our chips will enable AR and VR devices where our real and virtual world will mix and match throughout the day. We believe the only way to achieve our goals is to look at the entire stack, from transistor, through architecture, to firmware, and algorithms. We are seeking a Software Engineer to support the development of the compiler tool-chain for state-of-the-art deep learning hardware components optimized for AR/VR systems. The successful candidate will be part of our efforts to architect, design and implement the hardware platforms for this activity and will be part of a team that includes algorithm, user experience, software, firmware and ASIC experts. The ideal candidate will understand the full stack from algorithms and architecture down to hardware accelerator blocks. This is a full-time position based in either our Menlo Park, CA or Redmond, WA offices.
- Analyze and design effective compiler optimizations.
- Implement and/or enhance code generation targeting machine learning accelerators.
- Work with algorithm research teams to map CNN graphs to hardware implementations, model data-flows, create cost-benefit analysis and estimate silicon power and performance.
- Code using a mixture of Python and C++.
- Interface with other compiler-focused teams to evaluate and incorporate their innovations and vice versa.
- Contribute to the development of machine-learning libraries, intermediate representations, export formats and analysis tools.
- Conduct design and code reviews.
- Analyze and improve efficiency, scalability, and stability of our toolchains.
- Employ the scientific method to evaluate performance and to debug, diagnose and drive resolution of cross-disciplinary system issues.
- 2+ years of experience and PhD in Computer Science, Electrical Engineering or equivalent field.
- Experience in deep learning algorithms and techniques, e.g., convolutional neural networks, recurrent networks, etc.
- Software design and programming experience in Python and/or C/C++ for development, debugging, testing and performance analysis.
- 1+ years experience working on and contributing to a compiler toolchain codebase, such as LLVM, GCC, MSVC.
- Experience crossing multi-disciplinary boundaries to drive system solutions.
- Experience developing in a mainstream machine-learning framework, e.g. PyTorch, TensorFlow or Caffe.
- Exposure to compiler or machine learning framework Intermediate Representations.
- Experience with machine-code generation/compiler back-ends.
Back to top