Software Engineer

San Francisco /
Engineering /
Company Description 

Adept is an ML research and product lab building general intelligence by enabling humans and computers to work together creatively. We’ve raised a $65M Series A from Greylock and Addition and several angel investors, and were recently highlighted by Fortune

Check out our demo and blog to see what the future holds.

Team Culture 

We're looking for team members who are energized by our ambitious mission and excited to join a fast-paced startup environment, working closely together in our new office in San Francisco.

Position Summary

We’re looking for engineers to join our team across several different roles. If you want to build large, greenfield software projects geared toward accomplishing ambitious goals, and have a willingness to learn, we’d love to hear from you. Team fit will be determined through the interview process. 

Supercomputing team

The work we do at Adept requires supercomputer levels of compute resources. You will be responsible for maintaining our cluster -- ensuring that it is easy for researchers to launch jobs, collect results, analyze experiments and create datasets. Your responsibilities will also include ensuring that jobs run reliably and that hardware failures are proactively diagnosed. You will work closely with our compute partners to resolve any problems that occur in a timely manner to maintain overall cluster uptime. You may be called on to debug diverse problems with unclear root causes that could involve networking, version mismatches, container issues, and other performance problems.

We expect you'll work closely with our other engineers and researchers to understand how jobs are being launched, experiments are being tracked, results analyzed and datasets created to make improvements to these processes anywhere in the stack. Prior experience with neural networks is not required, but a desire to learn about them is. Willingness to learn is more important to any particular previous experience as the technologies we use will certainly change over time.

Good Skills to Have for Supercomputing Team

Experience managing a large cluster, containers + GPUs in cloud environments, and high performance filesystems (e.g., Lustre)
Willingness to manage and monitor infrastructure deployments
Exposure to various high-performance networking technologies including MPI, NCCL, RDMA, Infiniband and RoCE
Proficiency with bash and Python

Tool Use team

We're looking for Software Engineers to help us teach neural networks to use tools. What does that mean? An example tool might be a Calendar API - the neural network might automatically add and modify calendar appointments given natural language instructions from a user. Just doing that one thing right would be hard, but we want a general system that works with every available software tool. This is an ambitious goal, and it requires building substantial new software from scratch - this is where you come in!

Example projects on the team

Build a sandbox and an interface for a new tool we want to interact with
Optimize latency and/or throughput for a tool that is bottlenecking our evaluation pipeline
Build debugging software that lets us visualize model trajectories and pinpoint errors
Design and implement a GUI that allows human users to give feedback to the neural network

Product Engineer 
Work with a PM and a designer to understand user workflows and requirements and how to translate that into our product
Build infra and integrations to serve the model to lots of users that use multiple tools
Understand our serving needs and work with researchers to optimize user latency along with a good user experience
Establish user metrics and collect feedback signals that help us understand user interaction with the model 

General Software Engineering Skills You'll Need to Bring:

Relevant experience with designing and building software systems either as a full-stack engineer or front-end/back-end engineer
Preferred if you have previously worked with building and serving machine learning models
Expertise in building scalable web applications and optimizing them to reduce latency and increase throughput
High standard of execution speed; “no job is too small” attitude to get things done
Excellent communication and presentation skills
You're willing and able to quickly learn how to do new things that nobody on the team has done before

Nice to have

Machine learning experience
Slurm and/or Kubernetes experience
Our benefits 

Comprehensive health insurance coverage 
Unlimited vacation time 
Competitive salary 
Stock options 
Daily meals + comfortable SF office 
Dog friendly

Adept is an equal opportunity employer. We're excited about candidates who will raise the bar of our team, regardless of specific experiences -- we encourage applicants from a range of backgrounds to apply.