HN user

elijahbenizzy

229 karma

https://github.com/dagworks-inc/hamilton https://github.com/dagworks-inc/burr https://www.dagworks.io

Posts31
Comments138
View on HN
blog.dagworks.io 1y ago

Parallel, Fault-Tolerant Agents with Burr and Ray

elijahbenizzy
1pts0
blog.dagworks.io 1y ago

Lean Data Automation: a principal components approach

elijahbenizzy
2pts0
blog.dagworks.io 1y ago

Parallel multi-agent workflows with Burr

elijahbenizzy
3pts0
blog.dagworks.io 1y ago

Deep Dive on Hamilton Decorators

elijahbenizzy
2pts0
burr.dagworks.io 1y ago

Show HN: Updates on Burr (OS) – a full-stack AI agent framework

elijahbenizzy
8pts1
blog.dagworks.io 2y ago

Async Dataflows in Hamilton

elijahbenizzy
1pts1
blog.dagworks.io 2y ago

Streaming Chatbot with Burr, FastAPI, and React

elijahbenizzy
1pts0
blog.dagworks.io 2y ago

Streaming Chatbot with Burr, FastAPI, and React

elijahbenizzy
2pts1
blog.getwren.ai 2y ago

Rewriting Wren AI LLM Service for 1500 Concurrent Users

elijahbenizzy
5pts0
burr.dagworks.io 2y ago

Burr: Build AI Applications as State Machines

elijahbenizzy
3pts0
blog.dagworks.io 2y ago

Tools can multiply or divide productivity

elijahbenizzy
1pts0
github.com 2y ago

Show HN: Hamilton's UI – observability, lineage, and catalog for data pipelines

elijahbenizzy
40pts10
blog.dagworks.io 2y ago

Playing Telephone with ChatGPT and DallE (Writeup)

elijahbenizzy
1pts0
github.com 2y ago

Show HN: Burr – A framework for building and debugging GenAI apps faster

elijahbenizzy
94pts22
blog.dagworks.io 2y ago

Portable Dataflows with Ibis and Hamilton

elijahbenizzy
2pts0
blog.dagworks.io 2y ago

How well structured should your data code be?

elijahbenizzy
1pts0
github.com 2y ago

How you implemented your Python decorator is wrong

elijahbenizzy
2pts0
blog.dagworks.io 2y ago

How well structured should you data code be?

elijahbenizzy
1pts0
share.streamlit.io 2y ago

Show HN: Playing Telephone with GPT-4 and Dall-E-3

elijahbenizzy
34pts24
blog.dagworks.io 2y ago

Separate data I/O from transformation – your future self will thank you

elijahbenizzy
2pts0
github.com 2y ago

Show HN: On Garbage Collection and Memory Optimization in Hamilton

elijahbenizzy
2pts1
theodoregray.com 2y ago

The Triangle Table

elijahbenizzy
2pts0
blog.dagworks.io 2y ago

Production prompt engineering patterns with Hamilton

elijahbenizzy
3pts0
github.com 2y ago

Show HN: Declarative Spark Transformations with Hamilton

elijahbenizzy
4pts0
blog.dagworks.io 2y ago

Containerized PDF Summarizer with FastAPI and Hamilton

elijahbenizzy
4pts0
blog.dagworks.io 2y ago

Using dynamic DAGs in Hamilton to count GitHub stars

elijahbenizzy
3pts1
blog.dagworks.io 2y ago

Improve the Feast dev experience with Hamilton

elijahbenizzy
2pts0
blog.dagworks.io 3y ago

Building a maintainable and modular LLM application stack with Hamilton

elijahbenizzy
5pts0
tekmusings.com 3y ago

A few caveats with online inference

elijahbenizzy
3pts0
medium.com 3y ago

Show HN: The perks of creating dataflows with Hamilton

elijahbenizzy
4pts0

Right it was a bit of a joke. Originally stefan and I presented frameworks when we were at stitch fix -- stefan called his "hamilton" and I called mine "burr". His was better for the use-case. But then we wanted to build something for state machines as opposed to DAGs, so we called it Burr. I wanted the git tagline to be "make your agents go burr..."

We’ve just learned that it’s possible to do AI on less compute (deepseek). if OpenAI doesn’t scale and that’s the problem then I’d argue that in the long run, if you believe in their ability to do research, then the news this week is a very bullish sign.

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.

This is one of those fun reads because it unifies quite a few things that I’ve read about or been interested in recently — Hilbert curves for geospatial indexing in dbs, Gray codes, and fractals! And it’s all fairly intuitive — the 1-bit shift makes sense for space traversal and makes the numbers curve pattern easier to reason about.

Heh, this was very much the design philosophy behind Hamilton (github.com/dagworks-inc/hamilton).

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...

The venn diagram of "problems that people have" and "problems that postgres solves" is closer to a circle than many would like to admit.

One of the hardest parts of training models is avoiding overfitting, so "more parameters are better" should be more like "more parameters are better given you're using those parameters in the right way, which can get hard and complicated".

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.

Interesting. I don't disagree, in general, but I actually have worked with a lot of applications that like to do this. Specifically in the world of ML/AI inference there's a lot of moving between external querying of data (features) and internal/external querying of models. With recommendation systems it is often worse -- gather large data, run a computation on it, filter it, get a bulk API request, score it with a model, etc...

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.

There are a whole bunch of assumptions here. But sure, if you view the world as a closed system, then you have a decision as a function of inputs:

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.

This is humorous (and well-written), but I think its more than that.

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'm really curious to see how this will work with async. There's a natural barrier (I/O versus CPU-bound code), which isn't always a perfect distinction.

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?).

Hey folks! Wrote a post on using Hamilton's async integration to build lightweight, scalable, and self-documenting LLM pipelines in python. Would love feedback/interest!