Flux 2 Klein pure C inference

(github.com)

89 points | by antirez 2 hours ago

7 comments

  • antirez 1 hour ago
    Something that may be interesting for the reader of this thread: this project was possible only once I started to tell Opus that it needed to take a file with all the implementation notes, and also accumulating all the things we discovered during the development process. And also, the file had clear instructions to be taken updated, and to be processed ASAP after context compaction. This kinda enabled Opus to do such a big coding task in a reasonable amount of time without loosing track. Check the file IMPLEMENTATION_NOTES.md in the GitHub repo for more info.
    • vessenes 44 minutes ago
      Salvatore - this is cool. I am a fan of using Steve Yegge's beads for this - it generally cuts the markdown file cruft significantly.

      Did you run any benchmarking? I'm curious if python's stack is faster or slower than a pure C vibe coded inference tool.

    • lukebechtel 1 hour ago
      Very cool!

      Yep, a constantly updated spec is the key. Wrote about this here:

      https://lukebechtel.com/blog/vibe-speccing

      I've also found it's helpful to have it keep an "experiment log" at the bottom of the original spec, or in another document, which it must update whenever things take "a surprising turn"

    • soulofmischief 30 minutes ago
      It's funny watching people rediscover well-established paradigms. Suddenly everyone's recreating software design documents [0].

      People can say what they want about LLMs reducing intelligence/ability; The trend has clearly been that people are beginning to get more organized, document things better, enforce constraints, and think in higher-level patterns. And there's renewed interest in formal verification.

      LLMs will force the skilled, employable engineer to chase both maintainability and productivity from the start, in order to maintain a competitive edge with these tools. At least until robots replace us completely.

      [0] https://www.atlassian.com/work-management/knowledge-sharing/...

    • tucnak 19 minutes ago
      This development workcycle pattern lends nicely to Antigravity, which kind of does 80% this out the box, and can be nudged to do the rest with a little bit of prompting.
  • neomantra 1 hour ago
    Thanks for sharing this — I appreciate your motivation in the README.

    One suggestion, which I have been trying to do myself, is to include a PROMPTS.md file. Since your purpose is sharing and educating, it helps others see what approaches an experienced developer is using, even if you are just figuring it out.

    One can use a Claude hook to maintain this deterministically. I instruct in AGENTS.md that they can read but not write it. It’s also been helpful for jumping between LLMs, to give them some background on what you’ve been doing.

    • antirez 36 minutes ago
      In this case, instead of a prompt I wrote a specification, but later I had to steer the models for hours. So basically the prompt is the sum of all such interactions: incredibly hard to reconstruct to something meaningful.
      • neomantra 2 minutes ago
        Isn't the "steering" in the form of prompts? You note "Even if the code was generated using AI, my help in steering towards the right design, implementation choices, and correctness has been vital during the development." You are a master of this, let others see how you cook, not just taste the sauce!

        I only say this as it seems one of your motivations is education. I'm also noting it for others to consider. Much appreciation either way, thanks for sharing what you did.

      • enriquto 31 minutes ago
        This steering is the main "source code" of the program that you wrote, isn't it? Why throw it away. It's like deleting the .c once you have obtained the .exe
      • stellalo 21 minutes ago
        Doesn’t Claude Code allow to just dump entire conversations, with everything that happened in them?
        • joemazerino 5 minutes ago
          All sessions are located in the `~/.claude/projects/foldername` subdirectory.
  • throwaway2027 1 hour ago
    If I asked Claude to do the same can I also just put MIT license on it with my name? https://github.com/black-forest-labs/flux2 uses Apache License apparently. I know it doesn't matter that much and as long as it's permissive and openly available people don't care it's just pedantics but still.
    • antirez 52 minutes ago
      The reference code shows how to setup the inference pipeline. It does not implement 99% of what the C code does. That is, the inference kernels, the transformer and so forth.
    • netdur 34 minutes ago
      i would love if you took the time to instruct claude to re-implement inference in c/c++, and put an mit license on it, it would be huge, but only if it actually works
  • adefa 48 minutes ago
    I ran a similar experiment last month and ported Qwen 3 Omni to llama cpp. I was able to get GGUF conversion, quantization, and all input and output modalities working in less than a week. I submitted the work as a PR to the codebase and understandably, it was rejected.

    https://github.com/ggml-org/llama.cpp/pull/18404

    https://huggingface.co/TrevorJS/Qwen3-Omni-30B-A3B-GGUF

    • antirez 36 minutes ago
      The refusal because often AI writes suboptimal GGML kernels looks very odd, to me. It means that who usually writes manually GGML kernels, could very easily steer the model into writing excellent kernels, and even a document for the agents can be compiled with the instructions on how to do a great work. If they continue in this way, soon a llama.cpp fork will emerge that will be developed much faster and potentially even better: it is unavoidable.
      • nickandbro 4 minutes ago
        I wonder if some of the docs from https://app.wafer.ai/docs could be used to make the model be better at writing GGML kernels. Interesting use case.
      • rjh29 11 minutes ago
        The refusal is probably because OP said "100% written by AI" and didn't indicate an interest in actually reviewing or maintaining the code. In fact, a later PR comment suggests that the AI's approach was needlessly complicated.
  • d_watt 1 hour ago
    Regarding the meta experiment of using LLMs to transpile to a different language, how did you feel about the outcome / process, and would you do the same process again in the future?

    I've had some moments recently for my own projects as I worked through some bottle necks where I took a whole section of a project and said "rewrite in rust" to Claude and had massive speedups with a 0 shot rewrite, most recently some video recovery programs, but I then had an output product I wouldn't feel comfortable vouching for outside of my homelab setup.

    • antirez 1 hour ago
      I depends on the situation. In this case the agent worked only using the reference code provided by Flux's Black Forest Labs which is basically just the pipeline implemented as a showcase. The fundamental way for this process to work is that the agent can have a feedback to understand if it is really making progresses, and to debug failures against a reference implementation. But then all the code was implemented with many implementation hints about what I wanted to obtain, and without any reference of other minimal inference libraries or kernels. So I believe this just is the effect of putting together known facts about how Transformers inference works plus an higher level idea of how software should appear to the final user. Btw today somebody took my HNSW implementation for vector sets and translated it to Swift (https://github.com/jkrukowski/swift-hnsw). I'm ok with that, nor I care of this result was obtained with AI or not. However it is nice that the target license is the same, given the implementation is so similar to the C one.
      • kubb 4 minutes ago
        This repo has Swift wrappers, not a rewrite of hnsw.c, which apparently you weren't the only author of.
      • rcarmo 1 hour ago
        This is pretty great. I’ve gone and hacked your GTE C inference project to Go purely for kicks, but this one I will look at for possible compiler optimizations and building a Mac CLI for scripting…
    • rcarmo 1 hour ago
      I have a set of prompts that are essentially “audit the current code changes for logic errors” (plus linting and testing, including double checking test conditions) and I run them using GPT-5.x-Codex on Claude generated code.

      It’s surprising how much even Opus 4.5 still trips itself up with things like off-by-one or logic boundaries, so another model (preferably with a fresh session) can be a very effective peer reviewer.

      So my checks are typically lint->test->other model->me, and relatively few things get to me in simple code. Contrived logic or maths, though, it needs to be all me.

  • csto12 57 minutes ago
    As someone who doesn’t code in C and does more analytics work (SQL), is the code generated here “production grade?” One of the major criticisms I hear about llms is they tend to generate code that you wouldn’t want to maintain, is that the case here?
    • chrsw 21 minutes ago
      It's not bad. Skimming the code I'd say it's not enterprise quality but it's definitely better than an amateur throwaway project.
  • reactordev 1 hour ago
    This is both awesome and scary. Yes, now we can embed image gen in things like game engines and photoshop or build our own apps. On the other hand, we can include image gen in anything…
    • nusl 1 hour ago
      This was possible before, though
      • rvz 47 minutes ago
        Yes, it was always possible.

        It's almost as if this is the first time many have seen something built in C with zero dependencies which makes this easily possible.

        Since they are used to languages with package managers adding 30 package and including 50-100+ other dependencies just before the project is able to build.