feat: sketch for a Julia template and MWE#552
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #552 +/- ##
==========================================
- Coverage 77.13% 69.63% -7.50%
==========================================
Files 32 35 +3
Lines 4356 4499 +143
Branches 717 745 +28
==========================================
- Hits 3360 3133 -227
- Misses 712 1082 +370
Partials 284 284 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Benchmark ResultsBenchmarks use a no-op Tesseract to measure pure framework overhead. 🚀 0 faster, ✅ No significant performance changes detected. Full results
|
|
Thanks @jpbrodrick89, this looks really comprehensive. I wonder what an appropriate path to getting this merged would look like. Maybe someone who knows Julia well can give this a spin and report back? Perhaps @llueg ? |
There was a problem hiding this comment.
IMO this should be a vectoradd-like example. This way we have a nice symmetry: vectoradd vanilla, vectoradd-jax, vectoradd-julia, ...
Alternatively univariate if we want to cover more edge cases.
There was a problem hiding this comment.
I import expand_path_pattern to separate diff and nondiff arguments, it recurses through a tree into optional arguments but the pattern always includes the the attribute name of the optional argument. If the optional argument is itself a container or a model then it will try to recurse further e.g. by calling None.sub (for TridiagBlock | None) and then error.
There was a problem hiding this comment.
Sounds like this should be an independent fix?
|
thanks @dionhaefner , @llueg would be great to collaborate, I have some changes locally I need to tidy up. Basically I think we aim to have three examples
we can reuse some boilerplate between 1 and 2 I think. I was going to deprioritise this for the next couple of weeks but if you're keen to dig into this as (re-)onboarding @llueg I'll tidy up this week. |
|
This sounds very cool! Happy to try this out - doesn't necessarily fit in my onboarding project but I can make time whenever you think it's ready for review/testing. I should add a disclaimer that I wouldn't consider myself a Julia expert 😄 |
@dionhaefner I know you're working on your own version of this and I definitely don't want to step on any toes, but I've been playing around with this a bit in the background and thought it better to have in the open to work out what direction we want to go in (both/and is potentially a possibility too). I'm not a Julia expert by any means and this probably needs some more cycles if we go with it, but this seems to work when packages support Enzyme (not all do). Happy to hear how you want play it.
I tried to give an example using a simple linear solver with verifiable gradients that could be useful in a Jax setting as no Jax packages expose modified Cholesky.