8 comments

  • hankbond2 hours ago
    I appreciate the amount of detail in the post, I think it&#x27;s a useful addition to the space.<p>That said, I have to read LLM output all day all the time, and I would implore you to take the time to explore your own voice a bit more.<p>&gt; Two separate things then happened, and it is worth keeping them apart.<p>Is one of those phrases claude spits out nonstop.
    • SubiculumCode2 hours ago
      Nonstop. There is too much wholesale reliance on LLMs to generate content. When I use LLMs for scientific writing, I approach it differently: I write the paragraph dirty, then ask an LLM to perform a minor rewrite for &quot;clarity&quot;, using Claude&#x27;s now retired Concise Mode. This has been a great approach for scientific writing. It tends to prevent these overly used turns of phrase, it makes sure that the writing is making the points I want to make, and shortens writing time by cleaning up the dirty edges of my grammar (especially since my writing can tend towards convoluted constructions). More artistic&#x2F;creative writing, I&#x27;d probably not use it at all, because then, it&#x27;s usually (for me) about rthym and emotional flow.<p>BTW It IS an effective rhetorical phrase, but given it&#x27;s ubiquity in Claude&#x27;s output, I have to avoid it.
    • marzukia2 hours ago
      Ahhh yeah, I’m not going to sit here and say I don’t use Claude to clean up my writing (ie make it actually coherently laid out). In all honestly I tend to write in a rambling stream of consciousness style across random scrap markdown files (ha), but point is taken.
      • SadTrombone1 hour ago
        &gt; In all honestly I tend to write in a rambling stream of consciousness style<p>At this point that&#x27;d be a welcome respite from every single blog post being written in the same exact AI tone.
    • joshka48 minutes ago
      I caught the title &quot;The real work...&quot; labelizing things in a sort of weird phrasing like this is the one I&#x27;ve seen a lot.
    • Grimblewald2 hours ago
      I second this, I read too much AI slop already so when something triggers that part of my brain, at this stage I immediatley lose the capacity to engage outside of work, largly because it feels like work. Scrolling through, this article looks like it holds useful info. Info i&#x27;d likely love to engage with, but realistically I cannot force myself to spend my weekend reading more ai outout, even if human seeded.
      • marzukia2 hours ago
        Fair enough, nothing more infuriating than the sycophantic way LLMs write.<p>But I’d definitely be dishonest if I said I’d stop using LLMs to tidy my writing (out of principle or otherwise), my hold on the English language has seriously degenerated over the last eight years since I pivoted into IT from customer facing roles.
  • jval433 hours ago
    Impressive debugging skills, and thank you for the benchmarks. Now I&#x27;m wondering if mlx-engine &#x2F; mlx-lm have these bugs too.<p>One minor thing: as you are concerned with honest numbers, the graphs should be logarithmic on the y-axis too (like they are on the x-axis). Otherwise it&#x27;s hard to see whether the curve is sublinear or linear.
    • marzukia2 hours ago
      Thanks, good call. I&#x27;ve switched both throughput charts to a log y-axis (they were already log on x), so the sublinear taper is actually readable now instead of getting flattened by the big prefill numbers up top.<p>On mlx-engine &#x2F; mlx-lm: I&#x27;d wager it&#x27;s not resolved upstream. The core bug here is a re-prefill on hybrid recurrent models, and it&#x27;s not isolated to my setup. oMLX hit it, and llama.cpp has the same issue open right now (<a href="https:&#x2F;&#x2F;github.com&#x2F;ggml-org&#x2F;llama.cpp&#x2F;issues&#x2F;22746" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ggml-org&#x2F;llama.cpp&#x2F;issues&#x2F;22746</a>). When two independent engines trip on the same thing, it usually points at a shared architectural gap rather than a one-off, so I&#x27;d assume mlx-lm is worth checking too.
  • pianopatrick49 minutes ago
    Do you have any rough stats on how many total tokens per day you end up using with this setup?
  • tills131 hour ago
    Sorry but I&#x27;m not reading an AI slop article no matter how pertinent or interesting the subject is. You want my attention? Earn it. Write it yourself.
    • terhechte8 minutes ago
      I&#x27;d rather have a ai-written article then no article at all. I think this is a real struggle. Writing an article takes time that could be spent on improving the product. Would I prefer a human article, yes. But if the alternative is &quot;no article&quot;, then that&#x27;s how it is.
    • jstanley56 minutes ago
      It&#x27;s fine, if you don&#x27;t want to read it you don&#x27;t have to read it, nobody&#x27;s forcing you.
  • marzukia8 hours ago
    I spent three weeks debugging why my Qwen 122B setup on an M3 Ultra was taking 3–5 minutes to generate the first token on follow-up messages (despite having a &quot;warm&quot; context).<p>The root cause wasn&#x27;t the model, but three specific infrastructure bugs in my serving stack:<p>1. Prompt Instability: A unique message ID in the system prompt broke byte-exact KV cache matching, forcing a full re-compute every turn.<p>2. Interrupt Path: Streaming replies weren&#x27;t persisted when the generation was interrupted, causing history divergence.<p>3. Checkpoint Poison: A background writer created unmatchable checkpoints that crowded out valid ones, triggering aggressive eviction.<p>After fixing these, prefill time dropped from minutes to sub-seconds (53k tokens cached, 33 tokens prefilled).<p>I&#x27;ve open-sourced the fork (qMLX) and a benchmarking tool to verify these numbers. Would love feedback on the hybrid attention caching strategy or any other edge cases I might have missed.
  • marzukia8 hours ago
    The most counter-intuitive bug was that a unique message ID in the system prompt broke the entire KV cache. Since the cache requires byte-exact matches, that changing ID forced a full re-compute on every turn, turning warm contexts into cold fills.<p>I&#x27;ve open-sourced the fork (qMLX) and a benchmark script (bench_qmlx.py) that separates prefill&#x2F;decode metrics. I chose to fork rather than submit a PR because these hybrid attention changes are specific to the Qwen flavor of models and would likely be unpalatable to upstream maintainers who prioritize a general-purpose stack. I expect this fork to continue diverging from the base as we optimize specifically for this architecture. Happy to answer questions about the caching strategy or eviction logic.
    • msdz1 hour ago
      &gt; a unique message ID in the system prompt broke the entire KV cache. Since the cache requires byte-exact matches, that changing ID forced a full re-compute on every turn, turning warm contexts into cold fills.<p>This is (part of) the same problem that initially lead Anthropic to ban non-Claude Code clients from using the subsidized subscription: A full to-the-second datetime stamp in the system prompts of OpenCode, and I believe Pi as well, invalidated the caches, making this a <i>very</i> expensive use of their compute very quickly.<p>They even had Anthropic employees submit PRs (or maybe just open issues, I’d have to check) to these other clients&#x2F;harnesses because the cache misses were hitting them so hard.
  • kamranjon32 minutes ago
    [dead]