Run Kimi K3 using 29 GB of RAM at 0.50 tok/s

(github.com)

217 points | by marcobambini 16 hours ago

22 comments

  • nialv7 9 minutes ago
    are they allowed to use the "SQLite" name?
  • mappu 3 hours ago
    Standard llama.cpp can mmap the gguf, so it'll stay on disk if it doesn't fit on memory, and the kernel page cache will ensure the hot parts ("resident trunk") stay resident.

    What's the benefit of a custom implementation at all?

    • walrus01 2 hours ago
      Letting the kernel use SSD based swap space for something this big would be a good way to destroy its cumulative write endurance over a period of just a couple months. I would be very interested in seeing SMART self reported drive cumulative write and wear out stats if this was done for more than a short test.

      In my experience llama-server is better run with --no-mmap on things that will fit entirely into RAM. Though obviously you need a 2TB server for full Kimi k3 and 1M context.

      • yjftsjthsd-h 1 hour ago
        > Letting the kernel use SSD based swap space for something this big

        Why would it swap? If stuff gets evicted from page cache is just gets reread?

      • mappu 1 hour ago
        The really big thing is the model weights, which are a read workload not a write one, it won't affect an SSD's write endurance.

        The write workloads are just the context and any K/V cache - llama.cpp does not mmap those to disk, so they would remain in memory or VRAM as space affords.

      • johnvanommen 1 hour ago
        > Letting the kernel use SSD based swap space for something this big would be a good way to destroy its cumulative write endurance over a period of just a couple months.

        Optanes are a good option here, right?

        I bought mine for $100 for each 128GB DDR4 stick. I believe write performance is off-the-charts on these, besides the fact they're c-h-e-a-p.

  • bgirard 10 hours ago
    Approximate calculation is putting the cost at ~$5 per million tokens (assuming 42W sustained, 20¢/kWh), and that's excluding hardware and other costs.
    • AnotherGoodName 5 hours ago
      I got to the same conclusion another way. There's ~2.6million seconds a month and this is getting 0.5tok/s which is 1.3million tokens a month. Give some room for overhead and a reasonable rule of thumb;

      The cost to run the machine per month is the cost per million tokens.

  • pja 13 hours ago
    That README hits all my “this is authored by an LLM” instincts. I presume the codebase is also written by an LLM?
    • zozbot234 9 hours ago
      Yup, I hate to engage in anything that looks like a "shallow dismissal" but the project documentation seems to outright contradict itself wrt. whether it's running the model at genuinely native precision (though the claimed 3-bit quant is potentially interesting) and the headline claim of achieving 2 secs/token in a mere 29GB RAM footprint looks outright nonsensical given what we know about K3 itself (~115GB in dense parameters alone at native precision, plus ~25GB active sparse experts per token and some comparatively minor footprint for the KV cache). This is just not very helpful.
      • verisimi 1 hour ago
        > shallow dismissal

        Thanks zozbot234!

    • marcobambini 12 hours ago
      I wrote tons of software, even a programming language by hand https://github.com/marcobambini/gravity.

      I'm using my skills to orchestrate LLMs and agents, and I can write better code much faster. As developers, we can choose to adapt to new technologies or become extinct.

      • Wowfunhappy 9 hours ago
        Please consider writing your Readmes by hand even if the code is computer-generated. I want to read what human authors think about their projects. I virtually never want to read what a computer thought.
        • IshKebab 9 hours ago
          Also irrespective of the merits of LLMs, it's simply unpleasant to read LLM generated prose. It can't write well. The annoyance is compounded when you read the same poor writing everywhere.

          I don't know how people that shovel AI prose don't realise this. Are they not also reading other people's shitty AI text?

          I did see one sloperator who told his agent to copy his writing style. I have no idea if that works but it's got to be better than yet more "Here's the kicker" LinkedIn drivel.

          • jaggederest 7 hours ago
            Even worse than that, it's not the LLM, it's the operator. Mimicking your own style given a corpus is the lowest possible bar - you can also select among the great writers (technical or not) from history and have it give you eerily correct stylistic cues. Try Hemingway or Mark Twain next time you feel like generating a doc. Benjamin Franklin if you're feeling particularly Poor Richard.

            There's no reason any more to read bad documentation. You can feed any docs in and get them in the precise style you want, so don't impose bad prose on others in your repos. Pick a solid technical writing base, jargon free, and go from there. I sometimes generate architecture proposals from the llm in RFC format and it's word perfect.

          • zeryx 5 hours ago
            Rewrite the readme in my voice, use all of my comments and responses in current context as source. Don't use em dashes or other LLM things.

            Done, solved. Never had a problem with a readme or email since.

        • jv-k 6 hours ago
          This. Code written by LLMs using the new agentic SDLC is fine, can even be good code. But we shouldn't expect users to read sloppy slop, it's just plain lazy.
      • ensjdidk 9 hours ago
        [dead]
      • misterderpie 10 hours ago
        > I'm using my skills to orchestrate LLMs and agents, and I can write better code much faster.

        The fact that the top comment on this thread calls it out, in a negative way, hints at that you aren't.

    • bglazer 11 hours ago
      Yeah I'm begging these authors to at least *read* the LLM generated README's. They're so, so incomprehensible because the LLM has a super limited theory of mind for readers. They always assume that external readers have access to the full context and history of decisions in the project development. These decisions and instructions from the user are extremely important for the model and almost completely irrelevant for an outside reader looking at a "finished" product. So, we get sentences like this:

      "Where the levers were is not where they are. Overlapping the expert reads with the arithmetic was worth ~1.6x and shipped; the two that looked bigger — reading fewer bytes per token, and keeping more of them in RAM — were both measured and both refused, one because this family's router has no tail to demote and one because a cache the machine will not leave resident cannot be bought at any price."

      What the fuck does that mean? Obviously some internal development decision, using the absolutely inscrutable internal terminology that Claude loves. If people would just read what they publish, I'm sure this would stick out immediately.

      I'm not an LLM hater, I use them a ton and they work very well for writing complex code, it's undeniable. But they generate absolute dogshit first draft writing.

      • chambored 11 hours ago
        If that isn’t the perfect way to frame what I’ve seen and hated about LLM text, I don’t know what is. They certainly write for an audience with a historical context that almost no one has.
      • andai 11 hours ago
        >They're so, so incomprehensible because the LLM has a super limited theory of mind for readers. They always assume that external readers have access to the full context and history of decisions in the project development

        The transformer does not yet understand the non-transformer.[0]

        This is probably because all the data we trained it on was created by non-transformers, so it thinks it's a non-transformer, but it isn't.

        I don't think we know how to train a transformer yet. All the training data is linear, but that's not how they think at all.

        [0] It's a bit like the communication difficulties experienced between autistic people and neurotypicals. Each follow the Golden Rule, i.e. do unto others as you would have them do unto you -- and it fails in both directions. A Platinum Rule is necessary: do unto others as their API demands.

        • Dylan16807 5 hours ago
          I think the models would need far far more introspection for the problem to be it understanding how it thinks but not how others think. I really doubt it understands how it thinks.
        • mdmdkdk 9 hours ago
          [dead]
    • gruez 13 hours ago
      >Contributors

      >...

      >claude

      You don't need to presume. If someone is so lazy that they tell claude to commit their code (ie. they're too lazy to run git commit themselves), the chances they reviewed the code is slim.

      • sargunv 10 hours ago
        That's a strange and arbitrary line to draw. There's plenty of times I make edits by hand and then tell an agent to kick it up to a PR, or on the other extreme, let an agent implement something autonomously, and review the diff myself once it's in PR. Both of those scenarios involve the agent running the git commands, neither scenario indicates "the chances they've reviewed the code is slim"
      • danirod 13 hours ago
        To be fair, I appreciate when they are so upfront about who wrote the code without requiring further heuristics, so I encourage this behavior.
        • bensyverson 12 hours ago
          Yes, I do this all the time, and also check in the co-authored project plans which drove the commits. For a project that is transparently only possible due to agentic coding, I don't see any reason to conceal the methods.
      • freedomben 10 hours ago
        I often let Claude write my commit messages even when I'm the one who wrote the code. Claude is often damn good at writing commit messages, and they frequently end up much better than if I wrote it all by hand. I nearly always edit them somewhat, but it's like starting from 80% instead of 0%. Some might call it laziness, but I call it working smarter rather than harder.
        • forty 14 minutes ago
          A good commit message needs to explain why this change was needed/done rather than what is the content of the commit. Unless Claude also has access to the context via for example the associated issue, it simply cannot write a good commit message since it cannot generally guess why something was done from just the change. This is also the case for humans and the reason why you need to include this in the commit message.
      • simonw 13 hours ago
        Honestly, Claude writes better commit messages than most people.

        Personally I've mostly given in to letting it commit for me now, though I do occasionally take over and hand-write the messages if it's a particularly important concept and Claude's is too verbose.

        Codex/GPT-x defaults to one-line commit messages, which are too short. Claude likes to write several paragraphs, which is usually too long.

        If you tell it how to commit properly once per session it will stick with your standards for the rest of that session, and you can put that in AGENTS.md if you can be bothered to.

        • VulgarExigency 2 hours ago
          The agents write much better commit messages than me, at least.

          They also write better PR descriptions. At work we have a PR authoring skill and we’ve included an instruction for it to write a reviewer guide that tells the most logical way to review the code and I’ve found that really helps, so much so that I’m creating a tool to have “literate” PR reviews, where it constructs a narrative interwoven with diffs.

      • k8sToGo 13 hours ago
        Why do you say lazy? maybe they are ok with people seeing it is claude?
      • trollbridge 9 hours ago
        If my harness wrote the code, I have it write the commit. I will hand author something at a higher level that expresses my intent for how I promoted the harness.
      • Teever 11 hours ago
        That’s a needlessly antagonistic and insulting thing to say.

        This person that you’ve never met and probably never will doesn’t owe any of us anything.

        They’re out there doing what they want to do how they want to do it and if you don’t like it the correct response isn’t to insult them in front of a bunch of strangers on the internet for clout or whatever.

        I doubt that you’d ever call them lazy to their face — why do it here?

        • girvo 2 hours ago
          > I doubt that you’d ever call them lazy to their face — why do it here?

          What makes you so sure about that?

          Posting LLM generated obviously un-reviewed slop and wasting people's time deserves scorn.

    • a-dub 4 hours ago
      it is definitely the claudiest. it's weird, it's like there's a spot developing in my head next to all the other spots where i park mental models for how people write, but instead of being for a person, it's for the terse-staccato-prosodic-diarrhea that claude generates in readmes by default.
    • pkulak 7 hours ago
      Yes, but very slowly.
    • jv-k 6 hours ago
      Absolutely. Anyone can remove flag and remove typical LLM slop at least. I wrote a simple tool for it as part of my CI: https://github.com/jv-k/deslopper
    • cyanydeez 12 hours ago
      do people think these projects related to LLMs are ever going to be in anyway a pure human endevour?

      How bout we make a new rule: only complain about LLM writing when the product as zero relevents to use with LLMs.

    • sergiomattei 11 hours ago
      Does it matter?
      • jkahrs595 11 hours ago
        I need an llm to block these comments.
      • artemonster 9 hours ago
        yes. its a quality test. pre LLMs you could easily judge if a project was a labor of love by attention to details, like docs and README. Nowadays if even readme is sloped, what else was slop vibecoded? everything? how much effort was put in there besides 3 prompts? 5? you can never tell
    • guybedo 10 hours ago
      i thought, here on HN, we were past the "oooh it's written by a LLM it's bad!".

      I care about the craft, well designed systems, good clean architecture and code, etc...

      But i also care about reaching goals. Whether i do it working on my own, or with human coworkers or with AI coworkers doesn't matter that much to me. Yes, the result is sometimes the most important thing.

      • rf15 2 hours ago
        > I care about the craft

        No you don't. Buying a table and sanding the edges off doesn't mean you're a carpenter.

      • crent 3 hours ago
        This is my take as well. I think the voice LLMs tend to use in writing sucks but I’m honestly not good enough at English as a discipline to tell you why. That said when it comes to code, did it do the thing and is it causing problems over time? If it did and doesn’t cause more issues than your coworker would, why would someone be so vehemently opposed?

        Lately I've been landing on a couple of different reasons but I don’t think it’s one size fits all:

        - Ego/identity - “I am the crafter of code. That is what I do.” If someone has their identity deeply wrapped up in the concept of being a “software engineer” or “programmer” then LLMs are a direct threat to that. People don’t tend to do well with this. Think about dogmatically religious people, pseudoscience followers etc who are confronted with evidence directly contradicting their beliefs. Their entire world view revolves around that identity and if you threaten that, you threaten the foundations of their self-perception.

        - Career - you can take a lot of what I said above but also map it to threatening someone’s career. What if crafting software by hand becomes a niche, artisanal craft but most software is industrially generated? A lot of people will experience hardship if so and if they can’t find a way to be flexible into the future.

        - Passion - the ones who love software purely for the craft see this change as robbing them of the one thing they enjoyed in their career. Work is a big part of our life and if you kill the joy for a large group of people, that’s tough to deal with.

        - Lack of understanding their current purpose in role - I often see software engineers who don’t realize why they were hired. It was never to “write good clean code”, that was a means to an end. The end is generating business value for the company that hired you. That’s really it. It’s banal but it’s just a job like bagging groceries only it has required specialized knowledge so it pays well. Only very niche roles have actually hired for the craftsmanship. If someone is working for Groupon and they believe perfectly elegant systems are the value they provide, they are a bit deluded IMO. They build a platform that peddles coupons. That’s hardly comparable to building software that allows a surgeon to remotely operate a robot that does open heart surgery. Most of us do not work on truly mission critical software like that.

        Most importantly though, I think this topic needs to be approached with empathy. This is truly a seismic shift in how we, as software developers, work. Change is not easy to cope with especially when it threatens physical safety and identity. Will this change be here to stay and are we in for the extinction of software creation as we have known it? I don’t know. I do know that the world’s financial and governmental systems do seem to be betting on that outcome, however.

  • bilsbie 5 hours ago
    Claude might as well be .5 tok/s. I end up waiting several minutes and what it tells me could usually be summarized in under 100 words.

    So I could potentially live with this if it was concise.

    • throwawayffffas 19 minutes ago
      In my experience Kimi k3 is even more verbose.
    • walrus01 4 hours ago
      I have one setup that gets about 1.5 tok/s of a very large on prem LLM, on a system that lives under my desk. It's used for overnight project review runs and code review that it is fed at the end of each work day. When I look at it the next morning it has done quite a lot of useful work. Dealing with a big slow LLM as an effective tool is really about planning the workflow to feed it.
    • bpodgursky 4 hours ago
      This is not how thinking works. Claude uses tens of thousands of thinking tokens to get to 100 words. Kimi is no different.
      • no-name-here 3 hours ago
        Additionally, GP can use the word ‘concise’ (or similar) in their prompt if they want more concise output from a model.
        • dymk 2 hours ago
          That doesn’t mean “use fewer thinking tokens”. It might use more as it mulls over how to make its response concise.
          • tibbar 2 hours ago
            effort level is a separate parameter, and is probably what they want
  • OutOfHere 6 hours ago
    Be advised that the firm behind it ("sqliteai") had a nasty history of using non-open source licenses, e.g. Elastic License. I advise against using anything by them for this reason even if this project currently has an open license.
    • airstrafer 5 hours ago
      Are these the sqlite developers..?
      • orliesaurus 4 hours ago
        no, this is sqliteai aka SQLite Cloud, Inc
        • airstrafer 4 hours ago
          wow. shamelessly stealing the name of one of the most robust and effective libraries ever, to push some ai bullshit.

          what an embarrassment

    • oefrha 2 hours ago
      [dead]
  • roundup 10 hours ago
    How does this project compare to https://github.com/gavamedia/deltafin ?
    • chrisringrose 1 hour ago
      Hi! I'm one of the deltafin devs. The biggest difference is that this is not actually a 100% "pure" uncut Kimi K3. This is requantized to 3-bit residual, whereas deltafin is the full real unaltered k3, through and through.

      WASTE reads about 17 GB/token versus Deltafin’s 25.8 GB/pass—roughly. That's 34% less expert traffic, and some could argue a 34% reduction in quality.

  • herf 12 hours ago
    So if this Mac uses 30-50W, that's 40-60 tok/Wh...vs maybe 80k for a modern GPU cluster? So that's about 1000-2000x more power for the SSD streaming, unfortunately.
    • walrus01 4 hours ago
      GPU sufficient to hold and run Kimi have a totally different up front capex cost, however.
  • Catloafdev 11 hours ago
    Neat! But, what do you do with a 0.5tk/s LLM?

    Have you tried running it via llamacpp or other software that supports naive SSD offloading to compare speeds?

    • throwawayffffas 12 minutes ago
      You get 8 nvmes set them up in raid 0/1 across two full pcie5x16 ports and you could reach up to 4ish tokens per second, presumably.
    • dotancohen 9 hours ago
      Have it summarise the week overnight for the meeting in the morning. Then have it summarise the meeting transcription overnight for the report tomorrow. Then someone else will have it summarise the report overnight to read on a 6" handheld screen in the small office the next morning after breakfast.
      • ElectricalUnion 8 hours ago
        Then have it summarise the meeting transcription over the entire week for the report next week.

        ftfy.

        • Dylan16807 4 hours ago
          If we estimate a meeting with pauses between speakers as 2.25 words per second, and .75 words per token, then a meeting generates 3 tokens per second. This says prefill and decode are both .5 tokens per second? Then each hour of meeting turns into 6 hours to read and 1 hour to output a summary. You could summarize two hours of meeting overnight, not too bad.
          • mh- 3 hours ago
            Using half a kilowatt-hour, and if thinking is disabled during inference, yes.
    • gcampos 9 hours ago
      You could use it for long run tasks while you don’t use the laptop.
      • ElectricalUnion 8 hours ago
        By the time the tokens start coming out 30h later you might need to use your laptop again...
  • SSilver2k2 11 hours ago
    This sounds a lot like what the colibri project did for GLM-5.2. I'm a fan so keep at it!

    justvugg.github.io/colibri

  • righthand 10 hours ago
    I couldnt find anything explaining the name of this company on their website but is it okay that they’re riding on the name of an open source tool?

    SQLite code itself is public domain but I’m not sure about the name.

  • nharada 9 hours ago
    It's too bad Optane PMem is dead
    • throwawayffffas 6 minutes ago
      I don't get the fascination how is optane better than a modern nvme? I don't think it was faster.
  • logicallee 12 hours ago
    Interesting project. The headline number (29 GB of RAM) is for 4k context.

    From what I've read elsewhere, Kimi K3 is quite verbose in its thinking. At the quoted rate, it would generate only a total of 1.8k tokens in 1 hour. Is that enough for it to get any thinking done and produce output on more complicated prompts?

    • 0cf8612b2e1e 11 hours ago
      I saw someone’s excellent idea that if you have a slow system like this, you should communicate by email. It is no longer meant for realtime iteration, but more pointed questions for which there is more effort and time expected on both parties.
      • rwz 10 hours ago
        0.5t/s is still too slow even for email. For a moderately large inquiry (1MTok output, let's ignore the 4k context window limitation for now) it'll take the model around 23 days or uninterrupted execution to answer a single email.

        Real world inquiries are gonna be much slower of course, but this setup is still too slow to do anything meaningfully useful I think.

        • 0cf8612b2e1e 6 hours ago
          Sure, you cannot do 1M, but there are plenty of useful questions you could ask that are far more modest. Simple Q+A, look at this function, how would you design X? All of those could have few paragraphs of outputs that would finish within a day.
        • springtimesun 9 hours ago
          I’m sure it’s possible, but I really struggle to think of an example that would result in a 1m token output.
          • 8note 7 hours ago
            it would be 1M tokens worth of work, with some small report for the end
  • ElectricalUnion 8 hours ago
    Ok, this one will take just 30h (compared to that other project that would take 6.25 days) to start writing output tokens after you say hi in Claude Code.
  • cjbprime 13 hours ago
    Does it not use Metal, on macOS? Would it be faster if it did?
    • marcobambini 12 hours ago
      We tried to use Metal, but for that specific project it was slower than just using NEON ARM optimizations. It is all documented in the docs.
    • ashivkum 13 hours ago
      [dead]
  • jpecar 12 hours ago
    Where can this 1tb k3.waste be downloaded?
    • marcobambini 12 hours ago
      It is not yet available, the only way is to download the official Kimi K3 model and then convert it:

      # 1. preflight: reachable? how big? does it fit? tools/fetch_weights.sh --dest /Volumes/staging/k3 --dry-run

      # 2. download — resumable, safe to kill, safe to re-run tools/fetch_weights.sh --dest /Volumes/staging/k3

      # 3. convert into a container uv run --with torch --with safetensors python tools/convert.py \ --src /Volumes/staging/k3 \ --out ~/models/k3.waste --jobs 3

      • jpecar 11 hours ago
        Yeah, saw this ... was hoping that there's a torrent of it somewhere already. Or something.
  • brcmthrowaway 4 hours ago
    How does it compare to dsv4?
  • mrdootdoot 8 hours ago
    Fun. I see the novelty.
  • cadamsdotcom 10 hours ago
    Dear creator: you didn't ship the first draft of your code - why did you ship the first draft of your README??
    • w45wsdfgdgdf 10 hours ago
      because claude ships these verbose READMEs with its 'honest' takes and justifications for the naming. Its goal is to prime the next Agent that reads it, not you, human
      • 8note 7 hours ago
        we need a new HUMANS.md to replace the readme
  • yieldcrv 7 hours ago
    looks helpful

    your readme is overly verbose

    agents don't need that and its extremely low signal for humans too

    tell your language model to get it to the point

  • albertomr3 2 hours ago
    [flagged]