About the job
The Annapurna Labs team at Amazon builds AWS Neuron, the software development kit used to accelerate deep learning and GenAI workloads on Amazon’s custom machine learning accelerators, Inferentia and Trainium. The Inference Enablement and Acceleration team is at the forefront of running a wide range of models and supporting novel architecture alongside maximizing their performance for AWS's custom ML accelerators. Working across the stack from PyTorch till the hardware-software boundary, our engineers build systematic infrastructure, innovate new methods and create high-performance kernels for ML functions, ensuring every compute unit is fine tuned for optimal performance for our customers' demanding workloads.
Responsibilities
Design, develop, and optimize machine learning models and frameworks for deployment on custom ML hardware accelerators.
Participate in all stages of the ML system development lifecycle including distributed computing based architecture design, implementation, performance profiling, hardware-specific optimizations, testing and production deployment.
Build infrastructure to systematically analyze and onboard multiple models with diverse architecture.
Design and implement high-performance kernels and features for ML operations, leveraging the Neuron architecture and programming models.
Analyze and optimize system-level performance across multiple generations of Neuron hardware.
Conduct detailed performance analysis using profiling tools to identify and resolve bottlenecks.
Implement optimizations such as fusion, sharding, tiling, and scheduling.
Conduct comprehensive testing, including unit and end-to-end model testing with continuous deployment and releases through pipelines.
Work directly with customers to enable and optimize their ML models on AWS accelerators.
Collaborate across teams to develop innovative optimization techniques.
Qualifications
Minimum
3+ years of non-internship professional software development experience
Bachelor's degree in computer science or equivalent
3+ years of non-internship design or architecture (design patterns, reliability and scaling) of new and existing systems experience
Fundamentals of Machine learning and LLMs, their architecture, training and inference lifecycles along with work experience on optimizations for improving the model execution.
Software development experience in C++, Python (experience in at least one language is required).
Strong understanding of system performance, memory management, and parallel computing principles.
Proficiency in debugging, profiling, and implementing best software engineering practices in large-scale systems.
Preferred
Familiarity with PyTorch, JIT compilation, and AOT tracing.
Familiarity with CUDA kernels or equivalent ML or low-level kernels.
Candidates with performant kernel development such as CUTLASS, FlashInfer etc., would be well suited.
Familiar with syntax and tile-level semantics similar to Triton.
Experience with online/offline inference serving with vLLM, SGLang, TensorRT or similar platforms in production environments.
Deep understanding of computer architecture, operation systems level software and working knowledge of parallel computing.