229 karma · joined February 11, 2021
IMO the equivalent of moores law for AI (both on software and hardware development) is baked into the price, which doesn’t make the valuation all too crazy.
- https://hamilton.dagworks.io
It's not always the easiest to follow (we often have disagreements about whether something is a tutorial or a how-to), but it's a really valuable framing and I think our docs have gotten better because of it.
Recursion/parallelism: - Docs: https://burr.dagworks.io/pull/370/concepts/parallelism/
- Example: https://github.com/DAGWorks-Inc/burr/tree/main/examples/para...
UI annotations: - Blog post: https://blog.dagworks.io/p/annotating-data-in-burr
OpenTelemetry: - Docs: https://burr.dagworks.io/reference/integrations/opentelemetr...
- Blog post: https://blog.dagworks.io/p/trace-all-parts-of-your-agenticai
Time-travel/forking: - Docs: https://burr.dagworks.io/concepts/state-persistence/#initial...
- Blog post: https://blog.dagworks.io/p/travel-back-in-time-with-burr
Monitoring: - Deployment: https://github.com/DAGWorks-Inc/burr/tree/main/burr/tracking...
- UI overview: https://blog.dagworks.io/p/burr-ui
And a few other writeups we're excited about: - Collaboration with instructor: https://python.useinstructor.com/blog/2024/07/11/youtube-tra...
- Full-stack example of a streaming app: https://towardsdatascience.com/how-to-build-a-streaming-agen...
- Human-in-the-loop app with Burr: https://towardsdatascience.com/building-an-email-assistant-a...
The basic idea was that if you have a data artifact (columns for dataframes initially), you should be able to ctrl-f and find it in your codebase. 1:1 mapping of data -> function.
People take a long time to figure out that the readability gains from having greppability is worth whatever verbosity that comes, largely because they think of code too much as a craft (make it as small/neat as possible) and not documentation for a live process...
- Burr -- build AI applications/agents as state machines https://github.com/dagworks-inc/burr
- Hamilton -- build dataflows as DAGs: https://github.com/dagworks-inc/hamilton
Looking for feedback -- we had some good initial traction on HN, and are looking for OS users/contributors/people who are building complimentary tooling!
"Without it no websites, no Roblox studio, and no nothin."
Also LLMs just straight up do overfit, which makes them function as a database, but a really bad one. So while more parameters might just be better, that feels like a cop-out to the real problem. TBD what scaling issues we hit in the future.
This is exactly where I'd like to see it.
I'd like to simultaneously:
1. Call out to external APIs and not run any overhead/complexity of creating/managing threads 2. Call out to a model on a CPU and not have it block the event loop (I want it to launch a new thread and have that be similar to me) 3. Call out to a model on a GPU, ditto
And use the observed resource CPU/GPU usage to scale up nicely with an external horizontal scaling system.
So it might be that the async API is a lot easier to use/ergonomic then threads. I'd be happy to handle thread-safety (say, annotating routines), but as you pointed out, there are underlying framework assumptions that make this complicated.
The solution we always used is to separate out the CPU-bound components from the IO-bound components, even onto different servers or sidecar processes (which, effectively, turn CPU-bound into IO-bound operations). But if they could co-exist happily, I'd be very excited. Especially if they could use a similar API as async does.
1. The world around you 2. The experiences within your (really, the past view of the world around you) 3. Innateness of you (sure, this could be 2 but I think it's also something else) 4. The experience you find + the way you change yourself to impact (1), (2), and (3)
If you think of intelligence as all of these, then you're making the assumption that all that's required for (2), (3), and (4) is "agentic systems", which I think skips a few steps (as the author of an agent framework myself...). All this is to say that "what makes intelligence" is largely unsolved, and nobody really knows, because we actually don't understand this ourselves.
I'm always making the joke (observation) that ML (AI) is just curve-fitting. Whether "just curve-fitting" is enough to produce something "intelligent" is, IMO, currently unanswered, largely due to differing viewpoints on the meaning of "intelligent".
In this case they're demonstrating some very clean, easy-to-understand curve-fitting, but it's really the same process -- come up with a target, optimize over a loss function, and hope that it generalizes, (this one, obviously, does not. But the elephant is cute.)
This raises the question Neumann was asking -- why have so many parameters? Ironically (or maybe just interestingly), we've done a lot with a ton of parameters recently, answering it with "well, with a lot of parameters you can do cool things".
I'd love to see a more fluid model between the two -- E.G. if I'm doing a "gather" on CPU-bound coroutines, I'm curious if there's something that can be smart enough to JIT between async and multithreaded implementations.
"Oh, the first few tasks were entirely CPU-bound? Cool, let's launch another thread. Oh, the first few threads were I/O-bound? Cool, let's use in-thread coroutines".
Probably not feasible for a myriad of reasons, but even a more fluid programming model could be really cool (similar interfaces with a quick swap between?).