rent0pat 10 hours ago

I've looked at the "only 18,935 lines of code" python code and it made me want to poke my eyes out. Not sure what's the point of this extreme code-golfing.

  • mellosouls 15 minutes ago

    From the instructions for potential contributors:

    No code golf! While low line count is a guiding light of this project, anything that remotely looks like code golf will be closed. The true goal is reducing complexity and increasing readability, and deleting \ns does nothing to help with that.

    https://github.com/tinygrad/tinygrad?tab=readme-ov-file#cont...

  • xiphias2 7 hours ago

    I think it's an amazing experiment.

    You can look at the PyTorch code base and understand a small local function instantly, but if I would have a task to have a deep understanding of either PyTorch with all kernel code and low level code, whole CUDA code base + LLVM compilation code or Tinygrad I would pick Tinygrad in an instant.

    The code looks hard because what it is doing is hard, but all its layers can be debugged.

  • Barrin92 10 hours ago

    yes, it's really crazy, if people think you're exaggerating look at this:

    https://github.com/tinygrad/tinygrad/blob/master/tinygrad/co...

    One of the cases why I think obsession with lines of code is one of the most counterproductive metrics, it always produces code like this.

    • nighthawk454 9 hours ago

      That doesn’t look super awful to me? Hardly extreme code golfing.

      The far more interesting part is the order of magnitude. If they can pull off a 20k LOC with zero dependencies (implying a pretty concise project size) and it still works well on meaningful applications, that’s pretty neat. A 1000x reduction in code size and matching/exceeding in perf is worth looking at. Probably also implying a better architecture as code golf isn’t gonna get you 1000x less code. Again - their claims not mine, so we’ll see.

      But at that point they can triple the LOC to 60k with nothing but white space, new lines, and comments, for all I care. It won’t even add a zero.

      • abacadaba 9 hours ago

        it looks dense but perfectly readable. arguably more readable that way than if it had a bunch of extra new lines, definitions, and code blocks spreading the logic out into a larger visible area.

        • nighthawk454 7 hours ago

          I'm inclined to agree. While not always appropriate or popular, it makes some sense to me to have the visual weight/area of the code being ~proportional to it's significance. Communicates the ideas more clearly. Instead of spending the majority of space telling me what _isn't_ going to happen, and hiding what is.

          I often find myself wishing this was more ergonomic in languages.

    • Lerc 2 hours ago

      I think the discomfort I felt at looking at that was because of the stylistic difference. There isn't any part of it that looks terribly hard to understand when compared to other code. I presume anyone dealing with this codebase would know what ctx entails and most things seem to logically flow from what it provides.

      I think if I dealt with this on a daily basis I might end up finding if vastly more preferable, albeit at the risk of alienating fellow developers. In that respect it seems much like learning to use Emacs or vi

    • fourside 2 hours ago

      You’re getting some pushback but one look at pm_reduce_collapse and I’m glad I don’t have to work in this codebase.

      • Lerc 2 hours ago

        I see the advantage of the inline lambdas, but also it seems like it would hamper the ability to test the functions which can often have intricacies that catch you out. I believe one of the principles of Tinygrad is that tests shouldn't be part of the core codebase and shouldn't add to the total linecount.

        I think there is an opportunity there to have a tag in comments for tests.

        Have a hotkey to generate an id so you could have

          # lift x+y out of reduce on lt               :testID: color_adjective_noun  
          ((UPat.var("x")+UPat.var("y")).or_casted() < UPat.var("c"), lambda x,y,c: (x < (c.cast(y.dtype)-y)) if no_range(y) and no_range(c) else None),
        
        and it creates a test that exists away from the main codebase. A process that runs tests could scan the code for testID's, intelligently extract the relevant part of the code into the test harness and runs the tests. There would need to be some infrastructure needed to handle placing the code to be tested into the right context but you could have

          1. A codebase that contained no active code required simply to facilitate tests, 
        
          2. All test tags auto removable for distribution builds
    • zxexz 2 hours ago

      Huh. This is more readable than almost any large python codebase to me at first glance. It’s 2D, and well commented. I find it an excellent use of screen real estate. Perhaps it would be a different story if most of us weren’t stuck in 16:9?

    • vovavili 8 hours ago

      Running a formatter on that codebase would probably at least triple it.

      • aldanor 31 minutes ago

        Depends on formatter's config

    • eichin 8 hours ago

      to quote an old academic research programmer: "Two-letter variable names are fine, as long as both letters are meaningful" :-)

    • chubot 9 hours ago

      It’s not crazy at all, but personally I like simple code that flows down the page more, not across

      • octoberfranklin 8 hours ago

        It's two-dimensional code, not one-dimensional code.

        Declarations flow down the page, definitions flow across.

    • christophilus 8 hours ago

      Doesn’t seem too bad to me. It reminds me a bit of Clojure. Like Clojure, though, the lack of static types would be a headache.

    • octoberfranklin 8 hours ago

      Looks fine to me.

      I'm going to guess that you're used to codebases that use an autoformatter.

      There's definitely a case to be made for autoformatters in projects with a very large (>100) number of developers, but the price you pay for that is much poorer information density per screenful of code.

      For things like tinygrad or sqlite with a small dev team it's possible to use whitespace, style, and formatting to communicate important information, just like mathematicians do. The AMS journals don't autoformat mathematicians' equations!

      • ssivark 3 hours ago

        Even with autoformatters, it's a choice of what criteria you pick. It's possible to have consistency without enforcing low information density.

        • llmslave2 2 hours ago

          I wish. Stuff like Prettier is purposely unconfigurable and leads to the unreadability of JS code across the ecosystem.

      • alienthrowaway 6 hours ago

        > I'm going to guess that you're used to codebases that use an autoformatter.

        I'm used to Python code being "Pythonic" - which is one of those "I know it when I see it" terms.

  • webdevver 6 hours ago

    Down with large line counts!

    LLMs have done two things for us: made lines of code a commodity, but arguably even more important: made understanding an arbitrary amount of lines of code a commodity too.

    with this in hand, large codebases that were designed in the primordial era of requiring human cognition to grok are emabarassingly antiquated.

    "umm what does this mean?" -> right click -> explain with AI -> "got it".

    I literally reddit-soyjacked when i saw "tackle LLVM removal". I would argue that LLVM was/is the most well thought out and well-architected piece of software that exists today... but in the age of AI... who could possibly care now? when I say "well thought out" and "well-architected", that is in the context of human eyeballs. But who needs human eyeballs when we have much more powerful computer eyeballs? who grok code way better and way faster than we do.

    now, the massive line count of projects like LLVM, Linux, and Chrome become much harder to defend in the context of code re-use. Why drag in millions of code when you can get an LLM to write just the bits you care about? LLVM has a ton of optimisations that are all well and good, but how many of them actually move the needle on HPC platforms that do an awful lot of instruction re-ordering and re-scheduling anyway?

    Could we get away with 5% of the codebase to do "just the bits we care about"? in the past the answer might be, "well yes but its still a lot of (manual) coding", but now - why not? Let an LLM loose on the design doc and fill in the gaps!

still-learning a day ago

>People get hired by contributing to the repo. It’s a very self directed job, with one meeting a week and a goal of making tinygrad better

I find this organizational structure compelling, probably the closest to reaching 100% productivity in a week as you can get.

  • stathibus 2 hours ago

    It’s hard to argue against hiring contributors, but a bounty system that pays pennies vs. market value for skilled developers shouldn’t be the only interview path, it’s borderline exploitative.

  • ttul a day ago

    I wonder what happened to George’s old policy of requiring everyone to move to San Diego?

    • georgehotz a day ago

      That's comma.ai's policy since they make hardware and solve physical problems. The tiny corp has been hybrid (remote-first) since day 1 because it primarily writes open source software, and there's a long track record of success with remote for this kind of task.

      We have a few whole-team meetups in Hong Kong each year for 2-4 weeks, and there's a San Diego or Hong Kong office that anyone can work from as they choose. We also have a wide array of fancy multi GPU boxes that everyone on the team gets full access to (known external contributors can get some access also).

      I think many companies that were quick to embrace remote have walked it back, not everyone is capable of working productively remotely, nor are all types of work amenable to remote.

pa7ch 2 days ago

Very weird to market this as subscribing to "Elon process for software"

I remember when defcon ctf would play Geohot's PlayStation rap video every year on the wall.

  • spiderfarmer a day ago

    I hate it when ‘inspirational’ quotes are attributed to the person with the largest audience and not the people who came up with it, like in this case, the engineers at Lockheed’s Skunk Works.

    • ramesh31 a day ago

      It's an apocryphal quote.

      "A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away."

      - Antoine de Saint-Exupéry

      • vessenes 12 hours ago

        Or Colin Chapman at Lotus: "Simplify, then add lightness." Could just be wise advice :)

      • sod22 5 hours ago

        I like this. A lot.

geremiiah a day ago

The risk for Tinygrad is that PyTorch will create a new backend for Inductor, plug in their AMD codegen stuff and walala, PyTorch still king. I mean, they could have easily just taken that route themselves instead of bothering with a new ML framework and AD engine. 99% of the work is just the AMD codegen part of the compiler.

Either way, super cool project and I wish them the best.

  • georgehotz 7 hours ago

    tinygrad has a PyTorch frontend, we fully encourage the frontend to stay PyTorch and for them to integrate tinygrad at any level. Our mission is to commoditize the petaflop, all frontends are welcome. We also have a quite complete ONNX frontend.

  • kaashif 4 hours ago

    > walala

    Is this like voila or something else?

    • sva_ an hour ago

      It almost sounded like "wallah", Arabic slang for "I swear to god"

    • taneq 4 hours ago

      I thought it was “wololo” (the sound made by the priest in Age of Empires when it converts an enemy unit to a friendly one.)

  • ellis0n a day ago

    The main risk is that an LLM will rewrite itself and programmers will no longer be needed. I worked a bit with tinygrad and it looks quite amusing I managed to run it right away and make fixes in one of the tasks, but I decided not to commit because I was afraid of rejection. For example, the tasks are strange: $500 for two months, optimizing H.265, something that only a small group of people in the world can do.

    The SV is a unique place where you can meet Geo and get $5M, maintain a bunch of hardware, build a framework in 20,000 LOC and everything works well.

paprikanotfound 22 minutes ago

I really hope tinygrad succeeds with their mission of commoditizing the petaflop. We're nearing a future where you own nothing and rent everything, and they are one of few companies pushing back. This combined with the focus on making models efficient through better architecture/training, not just throwing more compute at it, seems like the right direction imo.

alphazard a day ago

> To fund the operation, we have a computer sales division that makes about $2M revenue a year.

What's the margin on that? Do 5 software engineers really subsist on the spread from moving $2M/yr in hardware?

  • vessenes 12 hours ago

    Looking at their boxes, I'd guess 20-ish%, once the labor costs of designing the boxes is out of the picture. I imagine George doesn't take a salary, or at least takes only a small one. They have a contract with AMD as well. I'd bet the company is modestly profitable.

  • piskov a day ago

    George raised $5.1M in 2023 for Tinygrad

pehtran 9 hours ago

How are ergonomics compared to pytorch, though? Adoption can be also driven by frictionless research (e.g. torch vs. tf comes to mind). Repo is missing proper docs aimed at early adopters imho

measurablefunc a day ago

Is it really "Complex"? Or did we just make it "Complicated"? - https://www.youtube.com/watch?v=ubaX1Smg6pY

  • alphazard a day ago

    Programming a GPU in 2025 is complex, that might be because it has been made complicated, but regardless, it is not complexity that this project can control.

    The fact that it competes with PyTorch in so few lines speaks to the incredibly low incidental complexity imposed by Tinygrad.

  • fragmede 11 hours ago

    If you think you can do better, the code's right there and you're welcome to try! There's a giant pile of money at the end of the rainbow for you if you can uncomplexify it.

    (Love that talk tho)

    • measurablefunc 4 hours ago

      I don't care for money but you seem to so you should focus on making as much as possible.

mika6996 2 days ago

What would tinygrad replace if they continue to proceed like this?

  • cyberax a day ago

    I think it has great potential for deployments on edge systems.

    • piskov a day ago

      It is already used in comma.ai’s openpilot hardware

      • vessenes 12 hours ago

        But that is an inside deal - same founder, I believe

agentifysh 9 hours ago

what have people built with tinygrad?

Tepix 9 hours ago

What happened to the tinybox red (v1)? It had way better specs than red v2.

deburo 2 days ago

So this is all python? I bet Chris Lattner probably approached them.

  • zephen a day ago

    Lattner is a smart guy, but I think Mojo might be the wrong direction.

    Time will tell.

    History has not so far been kind to projects which attempt to supplant cPython, whether they are other Python variants such as PyPy, or other languages such as julia.

    Python has a lot of detractors, but (despite some huge missteps with the 2-3 transition) the core team keeps churning out stuff that people want to use.

    Mojo is being positioned "as a member of the Python family" but, like Pyrex/Cython, it has special syntax, and even worse, the calling convention is both different than Python, and depends on the type of variable being passed. And the introspection is completely missing.

    • tucnak a day ago

      Honestly, I feel like Julia might as well beat Mojo or sommat to the punch, sooner or later. It has some facilities and supporting infrastructure for a lot of scientific and data-handling tasks surrounding ML, if not for compiling and dispatching kernels (where XLA reins supreme to anything in the CUDA ecosystem!) For example, Bayesian programming like Turing.jl is virtually unmatched in Python. It's been a while since I looked at Lux.jl for XLA integration, but I reckon it could be incredibly useful. As long as LLM's and RLVR training thereof should continue to improve, we may be able to translate loads of exiting Pytorch code eventually.

      • eli_gottlieb a day ago

        > For example, Bayesian programming like Turing.jl is virtually unmatched in Python.

        What about numpyro?

        Disclaimer: I contribute to numpyro occasionally.

        • tucnak 15 hours ago

          Honestly, I'm not familiar with it. I had only played with RxInfer, if only to try the so-called "message-passing" paradigm. My grasp on probability is really lacking, in fact I picked up prediction markets and Julia to get better at it.

          If you don't mind me asking, what's the deal with NumPyro why you chose to work it?

      • zephen a day ago

        I dunno. This sort of thing gives me pause:

        https://danluu.com/julialang/

        But the first thing that gave me pause about Julia? They sort of pivoted to say "we're general purpose" but the whole index-starting-at-one thing really belies that -- these days, that's pretty much the province of specialty languages.

        • drnick1 9 hours ago

          This 100% concerning Julia. Until recently at least, there was a ton of fundamental correctness issues. The issues may have been fixed, but it certainly does not inspire trust.

        • tucnak 15 hours ago

          You're not supposed to admit it, but I never cared for Dijkstra's arguments on the matter. The same goes for his GOTO tirade, although that has been distorted by time somewhat. Pascal is using 1-ord, Fortran, R, Mathematica. If anything, it seems there's a longer tradition of 1-ord in scientific computing. In this view, I must agree insofar I don't think Julia people are serious about their "general purpose" stance whatsoever. But hey, these are merely idiosyncrasies. People say multiple dispatch is the shit, but it's just one bit of the puzzle with Julia. How they managed to engineer a solid foundation, semantics like that, without unnecessarily sacrificing performance—I don't think they get enough credit for that from programming guys.

          • zephen 7 hours ago

            > I never cared for Dijkstra's arguments on the matter.

            It resonates with me, as does little-endian. There are evergreen arguments about both of these, but they stand out to me as two of the few places where I appear to be in sync with the majority.

            > Pascal is using 1-ord, Fortran, R, Mathematica. If anything, it seems there's a longer tradition of 1-ord in scientific computing.

            Actually, Pascal let you define the starting point, but, historically, COBOL (business) and FORTRAN started at one, and these days, it's Matlab (engineering), as well as R, Mathematica, and Julia. But, really, my point was that Julia is hyped to take over from Python, and it seems if that's the focus, then you should think long and hard about what features of Python to change, and, well, obviously that wasn't really the direction they came from.

            > semantics like that, without unnecessarily sacrificing performance—I don't think they get enough credit for that from programming guys.

            It's good work, but at the same time, a bit overblown IMO. For example, the creators claim homoiconicity, but that stretches the definition of that word to where Python would be homoiconic as well, and it's obviously not.

            As far as the multiple dispatch goes, that's actually not that difficult of a puzzle piece when you are compiling ahead of time with unboxed objects.

piskov a day ago

> tinygrad is following the Elon process for software. Make the requirements less dumb. The best part is no part.

That’s not Elon. See Russian TRIZ

https://en.wikipedia.org/wiki/TRIZ

  • gessha 10 hours ago

    Not sure where it was from but I remember reading a comment about how every modern rocket scientist needs to come to terms with the fact that every novel idea they might have has already been proposed and tried by a Russian scientist in the 20th century.

    • wiseowise 10 hours ago

      Soviet scientist, let me correct you a bit, comrade.

semiquaver a day ago

Is this the guy who talked a big game about all the things he was going to fix at Twitter, then utterly failed when confronted with a real world codebase and gave up having done nothing of use?

  • piskov a day ago

    He left after realizing nothing was going to change (not like he’s in the leadership).

    Also half-joked how the good food went away.

    George is many things but not a quitter (see comma ai for example).

    If someone could pull this, it’s him due to “never give up, never surrender” attitude.

    The shit with nvidia just needs to stop

random9749832 10 hours ago

If you want to "own" Nvidia, the much more realistic way of doing this then trying to compete with all the data centers that are already being built with Nvidia chips is obviously with open source models. In the case of open source models, inference is much more important to most people not training which a maxed out macbook already does a good job of.

peter_d_sherman a day ago

>"We also have a contract with AMD to get MI350X on MLPerf for Llama 405B training."

Anything to help AMD (and potentially other GPU/NPU/IPU etc. chip makers) catch up with NVidia/CUDA is potentially worth money, potentially worth a lot of money, potentially worth up to Billion$...

Why?

If we have

a) Market worth Billion$

and

b) A competitive race in that Market...

then

c) We have VALUE in anything (product, service, ?, ???) that helps any given participant capture more of that market than their competitors...

(AMD (and the other lesser known GPU/NPU/IPU etc. chip vendors) are currently lagging behind NVidia's CUDA AI market dominance -- so anything that helps the others advance in this area should, generally speaking, be beneficial for all technology users in general, and be potentially profitable (if the correct deals could be struck!) by those that have the skills to do such assisting...)

Anyway, wishing you well in your endeavors, Tinygrad!

paxys a day ago

Lots of words and weird analogies to say basically nothing.

What is the status of the project? What can it do? What has it achieved in 5 years?

But no, let's highlight how we follow the "Elon process".

As a side note, whenever someone incessantly focuses on lines of code as a metric (in either direction), I immediately start to take them less seriously.

  • bko 16 hours ago

    Did we read the same article?

    The third sentence is "The codebase is 18,935 lines not including tests." You can go to the repo and see what it does. Look at issues, PRs, etc. He wasn't saying it to brag about its size, but the opposite.

    The mission is to commoditize the petaflop. Basically allow LLMs to be trained efficiently on commodity non-NVIDIA GPUs. Would you prefer some bullshit mission like Meta of "connecting people" or whatever the hell it is?

    He said he has a hardware division that makes $2m a year. You can click on the link and buy a computer. He tells you the revenue.

    He said he has a deal with AMD which is also public and on X.

    The "Elon process" relies specifically to the goal of getting rid of all dependencies. Musk has spoken extensively about building things from the ground up and not relying on other vendors (in this example complex software dependencies). He says he wouldn't be able to build SpaceX competitively if he had just bought rockets or components.

    I wish more people focused on public code and shipping publicly. Can I see Toyotas stack? Why does the touch screen perform worse than a 2012 iPad. What the hell is going on

    I don't understand this hate someone like Hotz, a true engineer running an ambitious very open company, receives on a ... checks notes ... engineering forum? The whole setup is like a wet dream for engineers from a decade ago.

    Almost completely open source

    Interview is completing a paid bounty

    CEO is engineer

    Has a clear mission, goals, and timeline

    What is your issue?

    • grumbelbart 10 hours ago

      > The "Elon process" relies specifically to the goal of getting rid of all dependencies. Musk has spoken extensively about building things from the ground up and not relying on other vendors (in this example complex software dependencies). He says he wouldn't be able to build SpaceX competitively if he had just bought rockets or components.

      That I cannot believe. He might have shifted the make-or-buy decisions, but both Tesla and SpaceX do a lot of outsourcing.

      • NitpickLawyer 44 minutes ago

        > That I cannot believe.

        Note the "goal" there. SpaceX's only in flight explosion came after a strut (3rd party sourced) failed on S2, on the CRS-7 mission in 2015. They in sourced that, and haven't had many issues on ascent since then. They've also launched and landed some 500 rockets since then (165 this year) so ... at least they're walking the walk?

  • dewey a day ago

    Using lines of code as a metric for productivity is bad. Using it to show how simple something is, or how a refactor removed x lines of code that doesn’t need to be maintained any more isn’t such a bad thing I’d say.

    • alphazard a day ago

      Yeah this is exactly right, if you can trust the contributors to not code-golf or otherwise Goodhart the LoC metric, then it's a reasonable measure of complexity.

      It doesn't work as well when you start mixing languages, or generating code.

    • whilenot-dev a day ago

      TFA includes a time measurement though, and 5 years for 18'935 SLOC doesn't scream quite "how simple something is".

    • selkin a day ago

      Less LOC also doesn't imply simplicity: just look at the demoscene, which often has the former but not the latter.

      • dewey a day ago

        Demo scene or other competitions that aim at using little space / shortest way to achieve something are not really a good counter example.

  • jszymborski a day ago

    From [0]:

    "When we can reproduce a common set of papers on 1 NVIDIA GPU 2x faster than PyTorch. We also want the speed to be good on the M1. ETA, Q2 next year."

    [0] https://tinygrad.org/#tinybox

  • JoeDohn a day ago

    making things less dumb is not a elon's process, if it's the case then we are saying everything that elon is not involved in/with is dumb !

vileain 2 days ago

[flagged]

  • mycodendral a day ago

    the value is the directness, not implied origination

    not everyone cares about playing voldemort

    • vileain a day ago

      What is so aggrandizingly 'direct' about calling the system you are attempting to improve 'dumb'?

  • spiderfarmer a day ago

    There are lots of bubbles where Elon is still king. Those bubbles are often void of deodorant.

    • vileain a day ago

      Based on the response it appears HN is one such bubble.

      • spiderfarmer a day ago

        Elon spent billions to buy a platform and promote his tweets. He spent billions more to create a tweaked AI model that praised him like a mad king.

        He only has to spend a couple thousand a month to influence comment ranking on HN.

timzaman a day ago

Fell bad for geohotz. Such a lovely guy, i hope he strikes it right soon

  • still-learning a day ago

    Seems like he's doing fine, why do you feel bad for him?