513 karma · joined July 8, 2015
We ended up sinking two years into it, and never ended up with a particularly good compiler (although we did absolutely crush a couple toy benchmarks).
Arguably both sides of that tradeoff were wrong, though, as the eventually successful PyTorch 2.0 compiler (TorchInductor) was based on Triton (plus some custom higher-level scheduling logic).
I love my kids profoundly, and I think in the long run I will be happier than if I’d not had them and focused on work instead (work tends not to care about you after you leave. Maybe if you’re Steve Jobs or something). But in the moment, life is pretty stressful.
Now I have “flexible” work hours, and it’s all cramming in whatever I can late at night so that I can accommodate the schedule of kids’ daycare. If we didn’t have flex hours, one of my wife or I would have no choice but to quit to manage the kids, and we’d have less income but probably be happier. But since we have the choice it’s all too tempting to keep burning the candle at both ends and the middle.
Simple example: I was trying to hang some shades in my kid’s room. First set went in fine, second set, my drill hit something too hard for it (brick? Metal?). At this point I’m kind of stuck. I can search Google for this scenario but it’s hard to know conclusively which situation I’m in, and I don’t know how dangerous or destructive what I’m doing could be.
This is probably laughable to lots of you who know, intuitively from experience, what’s happening and what to do, but for someone who had no idea like me, it’s pretty intimidating.
(Coda: we bought stick-on shades and they were trivially easy to install and worked great)
If I had any literary skill, I’d write a tragedy in which the hero’s flaw is his lack of hubris. (Perhaps it would be autobiographical - my grad school advisor said my weakness is that I’m not arrogant enough.)
See I'd assert the opposite, or at least the following more nuanced version, for myself:
If I make a baked potato, I'll eat it and be quite happy -- even delighted! -- with it. But! If I have to choose between a baked potato or garlic bread (say, on a restaurant menu) I'd choose the garlic bread virtually every time, unless I'm exerting Herculean levels of willpower to choose healthier options. And if I'm served a baked potato and garlic bread, I'd probably eat the potato, and then somehow find room to eat the garlic bread anyways.
I don't disagree that healthy food can be very tasty, but I mitigate my own struggles with healthy eating by "merely" never keeping unhealthy options around, so I can focus more on the joy of the healthy food, and not have to constantly choose to avoid the high-calorie treats.
Thanks for the great write up as well as mold itself!
I found myself wondering if one could create a domain-specific language for specifying string processing tasks, and then automate some of the tricks with a compiler (possibly with human-specified optimization annotations). Halide did this sort of thing for image processing (and ML via TVM to some extent) and it was a pretty significant success.
Can you elaborate? What’s the advantage of controlling which parts are jitted?
I’ve always been rather disappointed by the lack of solutions in math books. I mean, on the one hand, it’s a great feeling to crack a difficult problem unaided, and there’s something to be said for building the intellectual discipline one needs to attack a problem with no easy answer.
But also, there are some problems that I never manage to solve because I “time out,” and it’s possible that as a result I’ve missed the opportunity to learn techniques that will be useful in the future.
While there is something to be said for being able to follow one’s interests unconstrained by the need for money, it also seems like a hollow, grasping existence to chase status and popularity amongst a clique of likeminded fellows.
I suppose one could say something similar for a career spent chasing money, but at least money sometimes vaguely (vaguely!) approximates creating value for other people.
I remember thinking that my biggest regret was that I had prioritized my job over my health. I’d stopped exercising and was overeating because my work was in a bad place and I was trying to scrape together every moment to make progress, and I’m sure that had a deleterious effect on my spine health.
I resolved that going forward I would prioritize my health (and my family) over my job.
I succeeded at maintaining those priorities for a while, and luckily my back healed relatively well. But I’ll admit that job stress ramped back up, and as I felt physically better it was all to easy to shift back into the same old patterns.
We decided to build the core technology and go after some very easy wins first, while laying the foundation for bigger, more complicated wins.
I thought this was a fairly sound plan at the time but we hit three problems that would make me rethink such an approach in the future.
(1) the “easy” use case ended up being significantly harder than expected. I’d guess it took 4x longer to ship than expected, which allowed doubt in the project to run rampant.
(2) the easy wins were smaller than expected (it didn’t help that the system we were augmenting already had some of the features we were building, just implemented in a more ad-hoc fashion).
(3) the more complex and profitable features required significantly new features in the core, the implementation of which had become very complex and the design compromised during the process of shipping the late, underwhelming MVP, and at that point there was no more appetite to continue investing in this technology.