173 pointsby MediaSquirrel13 hours ago8 comments
  • LuxBennu12 hours ago
    I run whisper large-v3 on an m2 max 96gb and even with just inference the memory gets tight on longer audio, can only imagine what fine-tuning looks like. Does the 64gb vs 96gb make a meaningful difference for gemma 4 fine-tuning or does it just push the oom wall back a bit? Been wanting to try local fine-tuning on apple silicon but the tooling gap has kept me on inference only so far.
    • weitendorf9 hours ago
      Hey I was literally just working on this today (I was racing ahead on an audio FT myself but OP beat me by a few hours). For audio inference definitely try running your input through VAD first to drop junk data and if necessary, as one of several preprocessing steps before sending the audio to the large model. You can check out how I did it here: https://github.com/accretional/vad/blob/main/pkg/vad/vad.go

      I was using https://huggingface.co/onnx-community/pyannote-segmentation-... because with ONNX, I could run it on Intel servers with vectorized instructions, locally on my Mac, AND in-browser with transformers.js

      VAD is absurdly time-effective (I think like O(10s) to segment 1hr of audio or something) and reduces the false positive rate/cost of transcription and multimodal inference since you can just pass small bits of segmented audio into another model specializing in that, then encode it as text before passing it to the expensive model.

      • MediaSquirrel9 hours ago
        Great minds think alike!

        Also, I had a huge head start, as I spent a month or two working on this in September 2025, shelved it and dusted it back off this weekend.

        • weitendorf8 hours ago
          Excellent work still, your repo is much more robust and fleshed out and I am just beelining straight to audio LoRa not really knowing what I'm doing, as this is my first time attempting a ~real ML training project.

          I think in https://github.com/mattmireles/gemma-tuner-multimodal/blob/m... and https://github.com/mattmireles/gemma-tuner-multimodal/blob/m... and https://github.com/mattmireles/gemma-tuner-multimodal/blob/m... you have a superset of the various cludges I have in my finetuning repo, I'm going to study this and do what I can to learn from it. Really appreciate you sharing it here!

          Definitely interested in swapping notes if you are though. Probably the biggest thing that came out of this exercise for us was realizing that Apple actually has some really powerful local inference/data processing tools available locally, they just are much more marketed towards application developers so a lot of them fly under the radar.

          We just published https://github.com/accretional/macos-vision to make it easy for anybody to use Apple's local OCR, image segmentation, foreground-masking, facial analysis, classification, and video tracking functionality accessible via CLI and hopefully more commonly in ML and data workloads. Hopefully you or someone else can get some use of it. I definitely will from yours!

          • MediaSquirrel7 hours ago
            Look inside here: https://github.com/mattmireles/gemma-tuner-multimodal/tree/m...

            Here’s the trick: use Gemini Pro deep research to create “Advanced Hacker’s Field Guide for X” where X is the problem that you are trying to solve. Ask for all the known issues, common bugs, unintuitive patterns, etc. Get very detailed if you want.

            Then feed that to Claude / Codex / Cursor. Basically, create a cheat sheet for your AI agents.

            This will unlock a whole new level of capability.

            I’m @mattmireles on Twitter — feel free to DM me.

    • MediaSquirrel12 hours ago
      Memory usage increases quadratically with sequence length. Therefore, using shorter sequences during fine-tuning can prevent memory explosions. On my 64GB RAM machine, I'm limited to input sequences of about 2,000 tokens, considering my average output for the fine-tuning task is around 1,000 tokens (~3k tokens total).
      • zozbot2347 hours ago
        Shouldn't FlashAttention address the quadratic increase in memory footprint wrt. fine-tuning/training? I'm also pretty sure that it does not apply to pure inference due to how KV-caching works.
      • LuxBennu10 hours ago
        Ah that makes sense, quadratic scaling is brutal. So with 96gb i'd probably get somewhere around 4-5k total sequence length before hitting the wall, which is still pretty limiting for anything multimodal. Do you do any gradient checkpointing or is that not worth the speed tradeoff at these sizes?
        • MediaSquirrel9 hours ago
          Haven’t tried yet. That’s on the do list. But good suggestion.
      • 7 hours ago
        undefined
    • MediaSquirrel8 hours ago
      re: Whisper v3 -- how is this possible? Whisper has a 30s context window. You have to chunk it.
  • conception10 hours ago
    I’m pretty excited about the edge gallery ios app with gemma 4 on it but it seems like they hobbled it, not giving access to intents and you have to write custom plugins for web search, etc. Does anyone have a favorite way to run these usefully? ChatMCP works pretty well but only supports models via api.
  • craze313 hours ago
    Nice! I've been wanting to try local audio fine-tuning. Hopefully it works with music vocals too
  • mandeepj7 hours ago
    > I had 15,000 hours of audio data

    do you really need that much data for fine-tuning?

    • MediaSquirrel7 hours ago
      More data -> better, faster on-device models

      The actual plan was to distill Gemini 2.5 Pro into the best on-device voice dictation model.

      Pretty sure it would have worked. Alas.

      • nomel6 hours ago
        Reasons for running local aside...

        What is the practical latency difference you see between on-device and, say, whisper, in streaming mode, over the internet? Comparable? Seems that internet latency would be mostly negligible (assuming reasonable internet/cell coverage), or at least compensated for by the higher end hardware on the other side?

        • MediaSquirrel4 hours ago
          depends on the model!

          If you run a smaller whisper-distil variant AND you optimize the decoder to run on Apple Neural Engine, you can get latency down to ~300ms without any backend infra.

          The issue is that the smaller models tend to suck, which is why the fine-tuning is valuable.

          My hypothesis is that you can distill a giant model like Gemini into a tiny distilled whisper model.

          but it depends on the machina you are running, which is why local AI is a PITA.

  • neonstatic8 hours ago
    Just a heads up, that I found NVIDIA Parakeet to be way better than Whisper - faster, uses less compute, the output is better, and there are more options for the output. I am using parakeet-mlx from the command line. Check it out!
    • MediaSquirrel4 hours ago
      yeah, it came out after I stared on my project last year. Only issue is that you can't fine-tune it on Apple Silicon.
  • dsabanin13 hours ago
    Thanks for doing this. Looks interesting, I'm going to check it out soon.
    • MediaSquirrel12 hours ago
      you are welcome! It was a fun side quest
  • yousifa12 hours ago
    This is super cool, will definitely try it out! Nice work
  • pivoshenko12 hours ago
    nice!