Software Development Engineer I – AI/ML Network Infrastructure, Annapurna Labs
Buscamos un ingeniero talentoso en las primeras etapas de su carrera para unirse a nuestro equipo, responsable de la pila de red de los sistemas distribuidos de IA/ML de EC2. Trabajarás en software que permite que los modelos de IA más grandes del mundo se entrenen en clústeres masivos de GPU, desarrollando soporte para bibliotecas de comunicación y frameworks como NCCL, NVSHMEM y NIXL.
Esta es una oportunidad de primera línea para trabajar en la intersección de la computación de alto rendimiento, las redes y la infraestructura de machine learning: construyendo los sistemas que impulsan las mayores cargas de trabajo de IA en la nube.
Responsabilidades principales del puesto
- Escribir código C/C++ de alto rendimiento para bibliotecas de comunicación de red que se ejecutan en hardware personalizado de AWS
- Construir y mantener infraestructura que supervise el funcionamiento y el rendimiento de cargas de trabajo de IA/ML a gran escala
- Desarrollar automatización con Python y herramientas de AWS (CI/CD, Grafana, Athena) para probar, comparar el rendimiento y entregar software a los clientes
- Diseñar mecanismos para detectar regresiones funcionales y de rendimiento antes de que lleguen a producción
- Trabajar con muchos tipos de instancias, pilas de software y entornos Linux distintos. Tener 18 años o más
Experiencia con al menos un lenguaje moderno como Java, Python, C++ o C#, incluido el diseño orientado a objetos
Experiencia con al menos un lenguaje de programación de propósito general como Java, Python, C++, C#, Go, Rust o TypeScript
Experiencia en implementación de estructuras de datos, desarrollo de algoritmos básicos y/o principios de diseño orientado a objetos
Experiencia en el uso de herramientas de desarrollo asistidas por IA en entornos académicos o profesionales
Licenciatura o título superior en Ciencias de la Computación, Ingeniería Informática o campos relacionados
Dominio sólido de C/C++
Cursos o experiencia en proyectos sólidos en: 1/ Sistemas operativos (funcionamiento interno de Linux, conceptos de kernel, gestión de memoria) 2/ Arquitectura de computadoras paralela (multihilo, SIMD, programación de GPU, coherencia de caché) 3/ Sistemas distribuidos (consenso, paso de mensajes, tolerancia a fallos, escalabilidad)
Familiaridad con entornos de desarrollo Linux y cadenas de herramientas