SymForce Internship Program! #242
hayk-skydio
announced in
Announcements
Replies: 2 comments 2 replies
-
Are opportunities open for people outside of US ? |
Beta Was this translation helpful? Give feedback.
1 reply
-
Hi! Are these positions still taking candidates? |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
The SymForce team is excited to announce internship opportunities to students, researchers, and engineers interested in the space. Given the broad applications of symbolic computation and code generation, we are open to a diverse set of backgrounds and experience levels.
If you are interested, reach out with your CV and interest area at
hayk at skydio dot com
.🟢 Internships are funded by Skydio
🟢 Contributions are open source
🟢 Remote work is encouraged
🟢 Timing and project scope is flexible
🟢 Interns are paired with an experienced mentor
Below is a curated set of impactful projects. Please feel free to suggest your own project ideas!
CUDA Language Backend
Add a backend to generate CUDA code from symbolic expressions, such as the inner loop of image or volumetric processing kernels, or to create custom layers for machine learning frameworks like PyTorch or TensorFlow. This capability is widely useful and opens up SymForce to be used in more domains. This project includes creating a compelling example of this capability.
PyTorch Integration
PyTorch dominates the ML research community, and there is increasing use of complex differentiable operations within deep network architectures. This project enables generating PyTorch functional graphs from SymForce symbolic expressions and their derivatives. This would provide a powerful combination for modern machine learning. This project includes creating a compelling example of this integration.
SymPy Mechanics Example
The SymPy Mechanics module and PyDy provide a powerful set of tools for robotics and physics, such as the ability to symbolically constructing rigid bodies, the interactions between them, and compute their equations of motion using Lagrange’s or Kane’s method. These approaches are readily integrated with SymForce to generate fast, ready-to-use, production functions for simulating or controlling these dynamics. If you are a student, researcher, or engineer interested in SymForce for robot arm manipulation, humanoid control, or similar tasks, please reach out.
Optimize Bundle Adjustment Performance
SymForce provides an example to load and solve Bundle-Adjustment-in-the-Large (BAL) datasets. However, this use case is not particularly optimized for performance and there are many promising enhancements, which should generalize across use cases. Additionally, a head-to-head benchmark is needed to compare performance on this problem to Ceres and GTSAM.
Constrained Optimization
SymForce does not currently support hard constraints in its tangent-space Levenberg-Marquardt implementation. Adding a constrained optimization solver, for example Augmented Lagrangians (although we’re open to other ideas!), would expand the capabilities of the solver. This project will involve implementing the optimizer in C++, integrating with the existing optimization system, and providing an example that demonstrates its usefulness. A related opportunity is integration with the ProxQP library.
Optimize Conditional Evaluation
This project aims to improve the ability to evaluate subsets of generated functions, depending on the outputs desired by the caller. Examples of features include:
Windows Support
SymForce is not currently supported or tested on Windows platforms, but there are no known blockers. This project aims to expand the build system to support building from source on Windows and generating Windows wheels in SymForce releases. This will likely involve modifications to our CMake build, additions to our CI to test Windows builds, and testing.
Coverage Reporting
Add test coverage reports for our Python and C++ code and automatically generate coverage reports in CI. Previous work has been done to track Python code using coverage.py, but is not currently running. Another potential component of this project would be running the tests under various tools like ASan, UBSan, and valgrind in CI.
Beta Was this translation helpful? Give feedback.
All reactions