Stanford University's School of Medicine is launching an interdisciplinary Neuro-AI project to build a foundation model of the brain, aiming to create a functional 'digital twin' that captures brain activity dynamics and intelligent behavior. The project seeks to provide insights into the brain's algorithms and align AI models with human-like neural representations. The role is to support the team by developing and scaling systems for rapid iteration, ensuring reproducibility, production-readiness, and implementing CI/CD processes.
Requirements
- Strong programming skills in Python and system-level languages (e.g. C/C++, Rust)
- In-depth experience with version control systems like Git and collaborative development platforms like GitHub
- Experience setting up and maintaining CI/CD principles through tools such as GitHub Actions and Jenkins
- Strong understanding and experience in test-driven software development with knowledge of different testing methodologies such as unit testing, integration testing, and end-to-end testing
- Experience with containerization technologies like Docker and orchestration platforms like Kubernetes and Slurm
- Knowledge of software design patterns and architectures
- Familiarity with machine learning frameworks such as TensorFlow or PyTorch
Responsibilities
- Develop and maintain reproducible, production-grade software/library for various aspects of the project, including data processing, machine learning, and data/compute infrastructure management
- Implement and manage CI/CD pipelines using tools like GitHub Actions, Code Coverage, and unit testing frameworks
- Collaborate with data scientists, machine learning engineers, and systems engineers to ensure seamless and timely integration of code and infrastructure
- Help establish and enforce coding standards, best practices, and documentation guidelines across the project
- Conduct code reviews and provide constructive feedback to maintain code quality and consistency
- Optimize code performance, scalability, and reliability
- Troubleshoot and debug software issues, and provide timely solutions
Other
- Assess user needs and requirements.
- Design and implement user and operations training programs.
- Document changes in software for end users.
- Follow team software development methodology.
- Serve as technical resource with respect to applications.