<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sarthak Agrawal</title>
    <description>The latest articles on DEV Community by Sarthak Agrawal (@sarthakagrawal927).</description>
    <link>https://dev.to/sarthakagrawal927</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F527567%2F7ee4ae21-6589-422a-bcc2-3ae870e23d85.png</url>
      <title>DEV Community: Sarthak Agrawal</title>
      <link>https://dev.to/sarthakagrawal927</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sarthakagrawal927"/>
    <language>en</language>
    <item>
      <title>PostTrainLLM vs Axolotl: Mac specialist workflow or accelerator framework?</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Fri, 04 Sep 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/posttrainllm-vs-axolotl-mac-specialist-workflow-or-accelerator-framework-411f</link>
      <guid>https://dev.to/sarthakagrawal927/posttrainllm-vs-axolotl-mac-specialist-workflow-or-accelerator-framework-411f</guid>
      <description>&lt;p&gt;Axolotl is a mature configuration-driven framework for fine-tuning across supported accelerator environments. PostTrainLLM is an Apple Silicon-first workflow for taking a narrow specialist from target definition through MLX training, evaluation, routing, packaging, and a documented ship-or-reject decision.&lt;/p&gt;

&lt;p&gt;Axolotl's own Mac documentation describes M-series support as partial, so hardware is the first branch in this comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;PostTrainLLM&lt;/th&gt;
&lt;th&gt;Axolotl&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary job&lt;/td&gt;
&lt;td&gt;End-to-end Mac specialist factory and evidence workspace&lt;/td&gt;
&lt;td&gt;Configuration-driven framework for post-training many model families&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple Silicon&lt;/td&gt;
&lt;td&gt;Core path through MLX and local runtime experiments&lt;/td&gt;
&lt;td&gt;Official Mac documentation describes partial support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distributed training&lt;/td&gt;
&lt;td&gt;Not the product center&lt;/td&gt;
&lt;td&gt;Advanced GPU and distributed configurations on supported environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration&lt;/td&gt;
&lt;td&gt;Recipes plus explicit datasets, baselines, evaluations, reports, and routing decisions&lt;/td&gt;
&lt;td&gt;YAML-centered training configuration with broad model and method options&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best fit&lt;/td&gt;
&lt;td&gt;Reproducible specialist experiments on Apple Silicon&lt;/td&gt;
&lt;td&gt;Flexible production training on supported Linux/GPU infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When Axolotl is the better fit
&lt;/h2&gt;

&lt;p&gt;Axolotl is a natural choice when an organization already has a supported GPU environment and needs a flexible training framework.&lt;/p&gt;

&lt;p&gt;Its documentation covers LoRA and QLoRA optimizations, multimodal models, preference and reinforcement-learning methods, and distributed stacks. A configuration-first workflow also helps when many experiments share one repeatable training shape.&lt;/p&gt;

&lt;p&gt;The same feature matrix should not be assumed on a Mac. Axolotl's M-series page documents partial support and material constraints around PyTorch MPS, dependencies, training modes, precision, kernels, bitsandbytes, DeepSpeed, and related capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  When PostTrainLLM is the better fit
&lt;/h2&gt;

&lt;p&gt;PostTrainLLM is narrower in hardware posture and broader in experiment lifecycle.&lt;/p&gt;

&lt;p&gt;It is built to answer whether a specialist should exist: define the target, freeze the baseline and holdout, prepare data with provenance, run a Mac-compatible recipe, evaluate target and breadth behavior, package the artifact, and record the route or rejection.&lt;/p&gt;

&lt;p&gt;That does not make it a replacement for Axolotl's distributed-training breadth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do not compare configuration files alone
&lt;/h2&gt;

&lt;p&gt;A YAML file can reproduce training parameters while leaving the product question unanswered.&lt;/p&gt;

&lt;p&gt;A fair test needs a frozen model revision, tokenizer and chat template, dataset split, adapter targets, sequence length, precision, stopping rule, and evaluation suite. It should report target quality, breadth regressions, peak memory, wall time, artifact compatibility, and failure cases.&lt;/p&gt;

&lt;p&gt;PostTrainLLM does not publish a controlled Axolotl head-to-head run, so I make no claim that its MLX path trains faster, uses less memory, or produces a better model.&lt;/p&gt;

&lt;p&gt;The full comparison and current primary sources are at &lt;a href="https://posttrainllm.com/posttrainllm-vs-axolotl" rel="noopener noreferrer"&gt;https://posttrainllm.com/posttrainllm-vs-axolotl&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>osdc</category>
      <category>programming</category>
    </item>
    <item>
      <title>PostTrainLLM vs Unsloth: start with the hardware and the decision</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Thu, 03 Sep 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/posttrainllm-vs-unsloth-start-with-the-hardware-and-the-decision-1bo1</link>
      <guid>https://dev.to/sarthakagrawal927/posttrainllm-vs-unsloth-start-with-the-hardware-and-the-decision-1bo1</guid>
      <description>&lt;p&gt;PostTrainLLM and Unsloth are not interchangeable products.&lt;/p&gt;

&lt;p&gt;Unsloth is a mature, optimized training and inference framework across supported accelerator hardware. PostTrainLLM is an Apple Silicon-first specialist-model workflow that connects data preparation, MLX recipes, evaluation, routing decisions, artifacts, and local runtime evidence.&lt;/p&gt;

&lt;p&gt;The choice starts with the hardware and the outcome you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;PostTrainLLM&lt;/th&gt;
&lt;th&gt;Unsloth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary job&lt;/td&gt;
&lt;td&gt;Mac-first factory for building and evaluating narrow specialists&lt;/td&gt;
&lt;td&gt;Optimized open-source training and inference framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple Silicon training&lt;/td&gt;
&lt;td&gt;Core path through MLX and MLX-LM recipes&lt;/td&gt;
&lt;td&gt;Official requirements currently describe MLX training as work in progress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NVIDIA training&lt;/td&gt;
&lt;td&gt;Not the product center&lt;/td&gt;
&lt;td&gt;Core strength across LoRA, QLoRA, full fine-tuning, and reinforcement-learning workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence posture&lt;/td&gt;
&lt;td&gt;Frozen baselines, target and breadth evaluations, report cards, artifacts, and limitations&lt;/td&gt;
&lt;td&gt;Training metrics and framework benchmarks; the user owns the product-evaluation boundary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best fit&lt;/td&gt;
&lt;td&gt;Apple Silicon experiments where downstream evaluation matters&lt;/td&gt;
&lt;td&gt;Fast training on supported hardware with broad model and method coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When Unsloth is the better fit
&lt;/h2&gt;

&lt;p&gt;Unsloth is the stronger default when efficient training on officially supported hardware is the main problem.&lt;/p&gt;

&lt;p&gt;Its documentation covers many models, LoRA and QLoRA, full fine-tuning, pre-training, reinforcement learning, notebooks, Studio, monitoring, and export. A team with NVIDIA infrastructure and an established dataset and evaluation stack should consider it before adopting a broader experimental factory.&lt;/p&gt;

&lt;p&gt;Unsloth can run GGUF models and several Studio workflows on macOS. That is different from native Apple Silicon training, and its current requirements should be rechecked because MLX support is actively changing.&lt;/p&gt;

&lt;h2&gt;
  
  
  When PostTrainLLM is the better fit
&lt;/h2&gt;

&lt;p&gt;PostTrainLLM is designed around the complete specialist experiment on a Mac.&lt;/p&gt;

&lt;p&gt;It starts from a narrow target, freezes a baseline and holdout, prepares the data, runs an MLX-compatible recipe, measures target gain and breadth regression, packages the artifact, and records a ship, retry, route, or reject decision.&lt;/p&gt;

&lt;p&gt;That is useful when the difficult question is not how to launch a fine-tuning command, but whether the specialist earned a narrow route and can be reproduced on Apple Silicon.&lt;/p&gt;

&lt;h2&gt;
  
  
  A fair evaluation plan
&lt;/h2&gt;

&lt;p&gt;A valid comparison needs a shared model, dataset, prompt template, precision, adapter target, sequence length, batch policy, and frozen evaluation set.&lt;/p&gt;

&lt;p&gt;I would record wall time, peak memory, adapter size, target accuracy, breadth regressions, and export/runtime compatibility. A Mac MLX run and a CUDA result should not be compared as though hardware and kernels were controlled.&lt;/p&gt;

&lt;p&gt;PostTrainLLM does not publish a controlled Unsloth head-to-head result, so I make no speed, memory, or quality superiority claim.&lt;/p&gt;

&lt;p&gt;The complete comparison and current primary sources are at &lt;a href="https://posttrainllm.com/posttrainllm-vs-unsloth" rel="noopener noreferrer"&gt;https://posttrainllm.com/posttrainllm-vs-unsloth&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>CodeVetter vs Greptile: repository-aware review or task evidence?</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Wed, 02 Sep 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/codevetter-vs-greptile-repository-aware-review-or-task-evidence-50ln</link>
      <guid>https://dev.to/sarthakagrawal927/codevetter-vs-greptile-repository-aware-review-or-task-evidence-50ln</guid>
      <description>&lt;p&gt;Greptile is a repository-aware review product that works in the pull-request workflow and can hand findings to coding agents. CodeVetter is an execution-backed verifier that binds a requested task and exact change to checks, artifacts, and a measurable verdict.&lt;/p&gt;

&lt;p&gt;The useful choice is not which product sounds more advanced. It is which authority the team needs: review guidance or reproducible task evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical difference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;CodeVetter&lt;/th&gt;
&lt;th&gt;Greptile&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary job&lt;/td&gt;
&lt;td&gt;Verify whether an agent task worked and retain evidence&lt;/td&gt;
&lt;td&gt;Review pull requests with repository context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main surface&lt;/td&gt;
&lt;td&gt;Local viewer, CLI/MCP, and portable evidence&lt;/td&gt;
&lt;td&gt;GitHub/GitLab review workflow, CLI, and agent handoff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product center&lt;/td&gt;
&lt;td&gt;Task identity, executable checks, and verdict portability&lt;/td&gt;
&lt;td&gt;Continuous repository-aware review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment direction&lt;/td&gt;
&lt;td&gt;Local product without a required CodeVetter-hosted code service&lt;/td&gt;
&lt;td&gt;Hosted cloud with enterprise self-hosting documented&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When Greptile fits
&lt;/h2&gt;

&lt;p&gt;Greptile is built around continuous pull-request review with repository context. Its official material describes full-codebase analysis, configurable rules, GitHub and GitLab support, comments that can be sent to coding agents, a CLI, and enterprise self-hosting.&lt;/p&gt;

&lt;p&gt;Its TREX surface can also run code during review, so it would be inaccurate to call Greptile static-only.&lt;/p&gt;

&lt;h2&gt;
  
  
  When CodeVetter fits
&lt;/h2&gt;

&lt;p&gt;CodeVetter makes the portable verification record the primary artifact. It begins with the task and exact patch, executes repository-owned checks, classifies failures, preserves bounded outputs and artifacts, and emits pass, fail, or unverified without turning missing evidence into confidence.&lt;/p&gt;

&lt;p&gt;That is useful for agent evaluation, repeated regression comparison, and local or air-gapped evidence review.&lt;/p&gt;

&lt;h2&gt;
  
  
  How TREX changes the comparison
&lt;/h2&gt;

&lt;p&gt;TREX brings Greptile closer to verification by adding execution. The remaining difference is the center of gravity and evidence contract: Greptile starts from managed pull-request review, while CodeVetter starts from immutable task identity, execution evidence, and a portable verdict.&lt;/p&gt;

&lt;p&gt;Teams should test both against their own acceptance checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  No invented leaderboard
&lt;/h2&gt;

&lt;p&gt;CodeVetter's public benchmark compares its current review pipeline with a raw Claude baseline on 27 synthetic cases and 29 labeled findings. Greptile has not been run through that harness.&lt;/p&gt;

&lt;p&gt;Greptile publishes separate benchmark material, but separately designed benchmarks cannot become a shared leaderboard. I therefore make no claim that either product catches more bugs, produces fewer false positives, runs faster, or costs less per successful verification.&lt;/p&gt;

&lt;p&gt;The full comparison and current primary sources are at &lt;a href="https://codevetter.com/codevetter-vs-greptile" rel="noopener noreferrer"&gt;https://codevetter.com/codevetter-vs-greptile&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>A small language model specialist should earn one job</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Tue, 01 Sep 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/a-small-language-model-specialist-should-earn-one-job-k58</link>
      <guid>https://dev.to/sarthakagrawal927/a-small-language-model-specialist-should-earn-one-job-k58</guid>
      <description>&lt;p&gt;A small language model specialist does not need to outperform a frontier model everywhere. It needs to beat a chosen baseline on one defined target, remain inside regression and runtime limits, and route away when the task is outside its competence.&lt;/p&gt;

&lt;p&gt;That is a more useful standard than calling every narrow improvement a smarter model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick the job
&lt;/h2&gt;

&lt;p&gt;Good specialist targets have repeatable inputs, objective outcomes, representative data, and a runtime reason to stay local.&lt;/p&gt;

&lt;p&gt;Tool selection, structured extraction, file operations, SQL generation, formatting, and bounded intent routing are measurable. "Be a better assistant" does not define a measurable target.&lt;/p&gt;

&lt;h2&gt;
  
  
  Establish the baseline
&lt;/h2&gt;

&lt;p&gt;I run the unmodified base model on the frozen evaluation set before training. The baseline should include accuracy by slice, invalid outputs, latency, memory, and abstention or routing behavior when available.&lt;/p&gt;

&lt;p&gt;A specialist without a baseline has no demonstrated gain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose the smallest intervention
&lt;/h2&gt;

&lt;p&gt;Prompting or constrained decoding comes first when it solves the problem. LoRA or QLoRA makes sense when behavior has to be learned. Distillation can help when a stronger teacher produces reviewed target behavior.&lt;/p&gt;

&lt;p&gt;I avoid stacking methods until the failure requires them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protect breadth with routing
&lt;/h2&gt;

&lt;p&gt;A candidate can improve on its target and regress on general work. It needs an explicit router or confidence boundary, and that boundary needs its own evaluation.&lt;/p&gt;

&lt;p&gt;The runtime should select the specialist only for tasks it has earned. A routed ship should be reported as routed, not as a new general default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package the whole result
&lt;/h2&gt;

&lt;p&gt;A usable package includes the base identity, adapter or fused artifact, tokenizer and prompt contract, routing rule, runtime requirements, license information, evaluation report, known regressions, and reproducible configuration.&lt;/p&gt;

&lt;p&gt;Missing latency or memory remains missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make an honest decision
&lt;/h2&gt;

&lt;p&gt;The outcomes I use are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ship inside the declared route&lt;/li&gt;
&lt;li&gt;retry training&lt;/li&gt;
&lt;li&gt;retry the data or evaluation&lt;/li&gt;
&lt;li&gt;reject&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Failed attempts should remain available because they explain the next experiment and prevent the same recipe from being repeated without evidence.&lt;/p&gt;

&lt;p&gt;PostTrainLLM is organized around this target-to-report loop. Its public file-operations specialist shows a strong target gain alongside a disclosed breadth regression and routing constraint.&lt;/p&gt;

&lt;p&gt;The complete specialist workflow is at &lt;a href="https://posttrainllm.com/build-small-language-model-specialist" rel="noopener noreferrer"&gt;https://posttrainllm.com/build-small-language-model-specialist&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>CodeVetter vs CodeRabbit: review guidance or verification evidence?</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Mon, 31 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/codevetter-vs-coderabbit-review-guidance-or-verification-evidence-31g8</link>
      <guid>https://dev.to/sarthakagrawal927/codevetter-vs-coderabbit-review-guidance-or-verification-evidence-31g8</guid>
      <description>&lt;p&gt;CodeRabbit and CodeVetter address different checkpoints.&lt;/p&gt;

&lt;p&gt;CodeRabbit is built for automated review inside pull requests, an IDE, or a CLI. CodeVetter starts from an agent task and exact change, then binds them to executable checks, retained evidence, and a pass, fail, or unverified verdict.&lt;/p&gt;

&lt;p&gt;A team can use both: review to discover risk, verification to prove behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical difference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;CodeVetter&lt;/th&gt;
&lt;th&gt;CodeRabbit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary job&lt;/td&gt;
&lt;td&gt;Execution-backed verification of an agent change&lt;/td&gt;
&lt;td&gt;Automated AI code review and development workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main surface&lt;/td&gt;
&lt;td&gt;Local desktop viewer plus CLI/MCP and portable evidence bundles&lt;/td&gt;
&lt;td&gt;Pull requests, IDE, CLI, and planning workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main output&lt;/td&gt;
&lt;td&gt;Task-linked checks, artifacts, uncertainty, and measurable verdict&lt;/td&gt;
&lt;td&gt;Review summaries, findings, suggestions, fixes, and conversations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product center&lt;/td&gt;
&lt;td&gt;Reproducible behavior and evidence&lt;/td&gt;
&lt;td&gt;Team review workflow and developer feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When CodeRabbit is the natural fit
&lt;/h2&gt;

&lt;p&gt;CodeRabbit meets developers where review already happens. Its official documentation covers automatic pull-request reviews, incremental follow-ups, IDE and CLI review, codebase knowledge, linked repositories, planning, and one-click fixes.&lt;/p&gt;

&lt;p&gt;If the immediate need is consistent review comments across a team and Git provider, that is its natural workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  When CodeVetter is the natural fit
&lt;/h2&gt;

&lt;p&gt;CodeVetter starts from the requested task rather than the review comment. It records the exact change, runs declared checks in a bounded environment, separates regressions from environment and pre-existing failures, and preserves a machine-readable verdict.&lt;/p&gt;

&lt;p&gt;That distinction matters when a plausible patch must demonstrate browser behavior, an API contract, authorization, persistence, concurrency, or regression closure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do not invent a head-to-head result
&lt;/h2&gt;

&lt;p&gt;CodeVetter publishes 27 synthetic cases with 29 labeled findings, outputs, scoring rules, and limitations. CodeRabbit has not been run through the same harness.&lt;/p&gt;

&lt;p&gt;That means I do not claim that either product catches more bugs, produces fewer false positives, runs faster, or costs less on the basis of CodeVetter's benchmark. A valid comparison would require the same immutable cases, configuration disclosure, repeated runs, and scorer.&lt;/p&gt;

&lt;h2&gt;
  
  
  A combined workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Let CodeRabbit identify suspicious code in the pull request.&lt;/li&gt;
&lt;li&gt;Translate material findings and acceptance criteria into focused executable checks.&lt;/li&gt;
&lt;li&gt;Run CodeVetter against the exact agent change.&lt;/li&gt;
&lt;li&gt;Keep review findings and execution evidence separate.&lt;/li&gt;
&lt;li&gt;Re-run failed behavior after the fix and preserve both attempts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The full comparison, including current source links and data-boundary notes, is at &lt;a href="https://codevetter.com/codevetter-vs-coderabbit" rel="noopener noreferrer"&gt;https://codevetter.com/codevetter-vs-coderabbit&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>An agent trajectory dataset needs more than final answers</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Sun, 30 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/an-agent-trajectory-dataset-needs-more-than-final-answers-5cip</link>
      <guid>https://dev.to/sarthakagrawal927/an-agent-trajectory-dataset-needs-more-than-final-answers-5cip</guid>
      <description>&lt;p&gt;An agent trajectory dataset should preserve the behavior that produced an outcome, including the steps before the final response.&lt;/p&gt;

&lt;p&gt;That means keeping the task, observations, tool calls, tool results, decisions, corrections, and authoritative outcome. Without provenance, privacy controls, and a frozen evaluation boundary, a large trajectory collection can still be a poor training dataset.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose the training unit
&lt;/h2&gt;

&lt;p&gt;One example might be a full episode, a single decision point, or a correction pair. I keep the original task and enough state to explain each action.&lt;/p&gt;

&lt;p&gt;Hidden evaluator feedback that the runtime will never receive should not leak into the training input.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capture typed events
&lt;/h2&gt;

&lt;p&gt;Observations, permitted reasoning, tool names, arguments, results, errors, and final outputs should use a versioned schema.&lt;/p&gt;

&lt;p&gt;Raw source references need to remain available so the transformation can be audited. Flattening every event into one undifferentiated chat transcript throws away useful structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Filter for useful behavior
&lt;/h2&gt;

&lt;p&gt;I remove duplicates, leaked tests, private values, malformed tool calls, and trajectories without an authoritative outcome.&lt;/p&gt;

&lt;p&gt;Successful examples, correction data, and hard negatives should stay distinguishable. Every acceptance or rejection should retain its reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  Split by source and task family
&lt;/h2&gt;

&lt;p&gt;Random row splits can place nearly identical episodes in training and test data. I group by repository, task template, session, or source artifact before splitting and freeze the holdout before tuning the recipe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Train the narrowest useful target
&lt;/h2&gt;

&lt;p&gt;Trajectory data can support supervised fine-tuning, preference pairs, distillation, routing, or an evaluator. The objective should follow the observed failure.&lt;/p&gt;

&lt;p&gt;If the model already over-edits, an objective that increases edit pressure is the wrong response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluate behavior, not imitation
&lt;/h2&gt;

&lt;p&gt;The important measures are whether the specialist chooses the right tool, produces valid arguments, responds correctly to results, stops at the right point, and completes the task.&lt;/p&gt;

&lt;p&gt;Unsupported actions and breadth regressions need their own gates.&lt;/p&gt;

&lt;p&gt;PostTrainLLM includes trajectory conversion, correction-to-data, synthesis, filtering, deduplication, tool-calling evaluations, and factory-run evidence. The full workflow is at &lt;a href="https://posttrainllm.com/agent-trajectory-dataset" rel="noopener noreferrer"&gt;https://posttrainllm.com/agent-trajectory-dataset&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Meeting notes can stay on the Mac</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Sat, 29 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/meeting-notes-can-stay-on-the-mac-1nia</link>
      <guid>https://dev.to/sarthakagrawal927/meeting-notes-can-stay-on-the-mac-1nia</guid>
      <description>&lt;p&gt;Meeting-note software often begins with a convenient transcript and quietly turns the entire conversation into a third party's input.&lt;/p&gt;

&lt;p&gt;For customer data, hiring discussions, product strategy, credentials, or other sensitive work, I want a different default: capture, transcription, synthesis, and retention on the Mac.&lt;/p&gt;

&lt;h2&gt;
  
  
  The complete local pipeline
&lt;/h2&gt;

&lt;p&gt;A useful meeting workflow needs more than a microphone recording. It should:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;capture the user's microphone and the other side of the call&lt;/li&gt;
&lt;li&gt;preserve the tracks&lt;/li&gt;
&lt;li&gt;transcribe them locally&lt;/li&gt;
&lt;li&gt;segment the conversation&lt;/li&gt;
&lt;li&gt;produce a summary, decisions, and action items&lt;/li&gt;
&lt;li&gt;link important output back to source moments&lt;/li&gt;
&lt;li&gt;expose storage, retention, export, and deletion&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last two steps are easy to omit and are essential when generated notes need to be checked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pace meeting mode
&lt;/h2&gt;

&lt;p&gt;Pace records two local audio tracks: the user's microphone and system or call audio. When the meeting ends, local transcription feeds a privacy-pinned local note model.&lt;/p&gt;

&lt;p&gt;The resulting notes include structured sections and transcript-grounded action items. Meeting files remain ordinary local artifacts under Pace's application-support directory and follow a configurable retention policy. The current public FAQ describes a 30-day default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the privacy pin matters
&lt;/h2&gt;

&lt;p&gt;Pace can use a cloud or command-line planner for other capabilities when the user explicitly selects it. That choice does not allow meeting-note synthesis to leave the local path.&lt;/p&gt;

&lt;p&gt;The meeting pipeline has its own stricter boundary. Users can still export content or invoke another external workflow themselves, but the default synthesis remains local.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would evaluate
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Does the app capture both sides reliably on the target Mac?&lt;/li&gt;
&lt;li&gt;Do transcription and synthesis work without a network fallback?&lt;/li&gt;
&lt;li&gt;Can an action item show its source quote or timestamp?&lt;/li&gt;
&lt;li&gt;Are files easy to locate, export, and delete?&lt;/li&gt;
&lt;li&gt;Is retention configurable and enforced?&lt;/li&gt;
&lt;li&gt;Are microphone and system-audio permissions explained clearly?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Local does not mean unlimited
&lt;/h2&gt;

&lt;p&gt;Local transcription and synthesis consume memory, storage, and battery. Accuracy still depends on audio quality, speakers, language, and installed models.&lt;/p&gt;

&lt;p&gt;A generated summary is a draft. Important decisions should be checked against the transcript rather than accepted because the model sounds certain.&lt;/p&gt;

&lt;p&gt;The full meeting pipeline and current limitations are at &lt;a href="https://heypace.app/on-device-meeting-notes-mac/" rel="noopener noreferrer"&gt;https://heypace.app/on-device-meeting-notes-mac/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>privacy</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What CodeVetter's public benchmark proves, and what it does not</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Fri, 28 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/what-codevetters-public-benchmark-proves-and-what-it-does-not-5h6</link>
      <guid>https://dev.to/sarthakagrawal927/what-codevetters-public-benchmark-proves-and-what-it-does-not-5h6</guid>
      <description>&lt;p&gt;CodeVetter's public v1 benchmark is a reproducible recognition benchmark for agent-written bugs. It publishes 27 synthetic cases, 29 labeled findings, reviewer outputs, scoring rules, downloads, and explicit limitations.&lt;/p&gt;

&lt;p&gt;That answers a narrow question: does the tested review pipeline recognize these known issues under this fixture set? It does not prove that CodeVetter verifies arbitrary production pull requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the result in layers
&lt;/h2&gt;

&lt;p&gt;I separate the evidence on the benchmark page into three layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Published now:&lt;/strong&gt; the 27-case recognition benchmark and its exact results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implemented qualification infrastructure:&lt;/strong&gt; task packages, executable checks, receipts, and evaluation contracts described by the repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not yet proven publicly:&lt;/strong&gt; repeated provider runs on a broad realistic corpus with reliability, cost, and latency comparisons.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Blurring those layers would turn a useful result into a marketing claim it cannot support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose the benchmark for the question
&lt;/h2&gt;

&lt;p&gt;Recognition fixtures help isolate issue-type coverage and scoring behavior.&lt;/p&gt;

&lt;p&gt;Repository-task benchmarks such as SWE-bench ask whether a generated patch resolves a real issue inside a reproducible environment.&lt;/p&gt;

&lt;p&gt;A product-specific agent benchmark should go further by retaining the requested task, exact patch, environment, checks, evidence, and uncertainty. No single score answers all three questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspect the artifacts
&lt;/h2&gt;

&lt;p&gt;A benchmark should expose its dataset, per-case pages, reviewer outputs, scoring method, and reproduction path. It should also put the limitations before the call to action.&lt;/p&gt;

&lt;p&gt;For this benchmark, those limits include synthetic cases, narrow languages and categories, no timing or cost dimension, and precision as a material constraint.&lt;/p&gt;

&lt;h2&gt;
  
  
  The next credible proof
&lt;/h2&gt;

&lt;p&gt;The next step is not a larger slogan. It is qualified, repeated agent-task evidence with immutable receipt linkage and a clear failure taxonomy.&lt;/p&gt;

&lt;p&gt;You can inspect the cases, downloads, scorer, and current limitations at &lt;a href="https://codevetter.com/benchmark" rel="noopener noreferrer"&gt;https://codevetter.com/benchmark&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>programming</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Evaluate a local LLM for a decision, not a leaderboard</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Thu, 27 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/evaluate-a-local-llm-for-a-decision-not-a-leaderboard-1bm2</link>
      <guid>https://dev.to/sarthakagrawal927/evaluate-a-local-llm-for-a-decision-not-a-leaderboard-1bm2</guid>
      <description>&lt;p&gt;A local LLM evaluation should answer a product decision. Producing one more leaderboard number is not enough.&lt;/p&gt;

&lt;p&gt;I freeze the target and baseline first, run the unchanged model and candidate through the same protocol, inspect target slices and regressions, and then record one of four outcomes: ship, route, retry, or reject.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define the contract
&lt;/h2&gt;

&lt;p&gt;The evaluation contract needs inputs, expected outputs, allowed variation, protected content, and failure classes.&lt;/p&gt;

&lt;p&gt;Metrics should match the task. SQL needs execution correctness. Tool agents need tool and argument accuracy. Autocorrection needs unnecessary-edit and meaning-preservation checks. Retrieval needs grounded-answer criteria.&lt;/p&gt;

&lt;p&gt;Qualitative review still matters, but it should not overwrite deterministic gates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freeze the evaluation set
&lt;/h2&gt;

&lt;p&gt;Training, validation, and test data need separate provenance. I deduplicate across splits and freeze the holdout before tuning the recipe.&lt;/p&gt;

&lt;p&gt;A holdout that changes for every candidate cannot support a fair comparison. Synthetic fixtures should stay labeled as synthetic, and a small suite should never be described as production proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run baseline and candidate symmetrically
&lt;/h2&gt;

&lt;p&gt;Both models need the same prompts, decoding settings, runtime, and evaluator. Raw predictions and measurement state should be preserved.&lt;/p&gt;

&lt;p&gt;Timeouts and missing values are different from zero. When the candidate is a routed specialist, the target slice and the routing boundary both need evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure regressions directly
&lt;/h2&gt;

&lt;p&gt;A specialist can improve its hard gate and become worse elsewhere. I report the delta for every protected slice and set reject conditions before the run.&lt;/p&gt;

&lt;p&gt;Those conditions can include meaning changes, leakage, excessive breadth loss, or latency and memory outside the target machine's budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the decision reproducible
&lt;/h2&gt;

&lt;p&gt;The final package should identify the base and candidate, dataset revision, evaluator revision, configuration, per-slice results, missing measurements, and decision.&lt;/p&gt;

&lt;p&gt;"Ship" must remain narrower than "the candidate improved." A routed ship can be correct when the target gain is real and the route is enforced.&lt;/p&gt;

&lt;p&gt;PostTrainLLM includes fixture and no-GPU gates, live evaluation commands, canonical factory-run records, packages, and public report cards. Missing historical latency, RAM, throughput, or raw traces remain missing instead of being replaced with estimates.&lt;/p&gt;

&lt;p&gt;The full evaluation workflow is at &lt;a href="https://posttrainllm.com/evaluate-local-llm" rel="noopener noreferrer"&gt;https://posttrainllm.com/evaluate-local-llm&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>fastapi</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A Mac AI assistant should verify its actions</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Wed, 26 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/a-mac-ai-assistant-should-verify-its-actions-g7p</link>
      <guid>https://dev.to/sarthakagrawal927/a-mac-ai-assistant-should-verify-its-actions-g7p</guid>
      <description>&lt;p&gt;A useful Mac assistant needs to do more than generate instructions. It also needs to do less than silently control the computer.&lt;/p&gt;

&lt;p&gt;The boundary I want is an observable action loop: understand the request, inspect the current state, propose typed steps, request approval when risk requires it, act through the strongest available interface, and verify what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prefer semantic actions
&lt;/h2&gt;

&lt;p&gt;Application APIs, App Intents, Shortcuts, MCP tools, and the macOS Accessibility API expose meaning and state. They are usually more durable than raw screen coordinates.&lt;/p&gt;

&lt;p&gt;Visual grounding and pointer events still matter for applications with incomplete semantic access, but I treat them as a fallback. A coordinate can tell the system where input was sent. It cannot prove what the control meant or whether the outcome was correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep planning separate from authority
&lt;/h2&gt;

&lt;p&gt;A model can propose an action. Policy should decide whether it may run.&lt;/p&gt;

&lt;p&gt;Read-only navigation, reversible edits, external messages, downloads, and destructive mutations require different treatment. Planner output should become typed actions that can be validated before execution, not free-form instructions with ambient authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify every material step
&lt;/h2&gt;

&lt;p&gt;A click event proves only that input was sent. Verification should inspect the resulting window, control value, file, reminder, message draft, or other expected state.&lt;/p&gt;

&lt;p&gt;If the result is ambiguous, the assistant should stop or recover. It should not continue a long workflow on an assumed success.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pace's current action stack
&lt;/h2&gt;

&lt;p&gt;Pace combines a typed tool registry, a plan-act-observe loop, application integrations, App Intents and deeplinks, accessibility and pointer execution, click scoring and recovery, undo for supported reversible mutations, failure narration, and local action history.&lt;/p&gt;

&lt;p&gt;Users can also record literal flows, install recipes, or teach natural-language skills that are re-grounded against the current screen. MCP connections and external services remain optional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with bounded workflows
&lt;/h2&gt;

&lt;p&gt;The best early workflows have outcomes that are easy to inspect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open an application&lt;/li&gt;
&lt;li&gt;create a reminder&lt;/li&gt;
&lt;li&gt;draft rather than send an email&lt;/li&gt;
&lt;li&gt;navigate a known interface&lt;/li&gt;
&lt;li&gt;record a repeatable flow&lt;/li&gt;
&lt;li&gt;guide the user through an unfamiliar screen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Authority can expand after the verification path proves reliable.&lt;/p&gt;

&lt;p&gt;The current action and privacy model is at &lt;a href="https://heypace.app/mac-ai-assistant-actions/" rel="noopener noreferrer"&gt;https://heypace.app/mac-ai-assistant-actions/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What belongs in a coding-agent verification evidence bundle?</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Tue, 25 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/what-belongs-in-a-coding-agent-verification-evidence-bundle-4402</link>
      <guid>https://dev.to/sarthakagrawal927/what-belongs-in-a-coding-agent-verification-evidence-bundle-4402</guid>
      <description>&lt;p&gt;A verification evidence bundle is the portable record behind a verdict. It should let a person, a CI system, or a later evaluation understand what was checked without depending on a screenshot or a model summary.&lt;/p&gt;

&lt;p&gt;When I cannot answer which task, revision, environment, and checks produced a result, I do not consider that result durable evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bind the required identities
&lt;/h2&gt;

&lt;p&gt;The bundle should identify the task, repository, base revision, agent change, verifier version, environment, and attempt.&lt;/p&gt;

&lt;p&gt;Without those identities, passing output can be attached to the wrong patch or repeated under different conditions. The result may be real and still fail to prove the change under review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preserve execution records
&lt;/h2&gt;

&lt;p&gt;For every check, I want the normalized command or runner identity, start and finish state, exit result, timeout or cancellation state, and bounded output.&lt;/p&gt;

&lt;p&gt;Screenshots, reports, and other artifacts should be recorded by path and digest when they contribute to the verdict. Environment failures should remain environment failures rather than being hidden inside a generic test failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep uncertainty in the verdict
&lt;/h2&gt;

&lt;p&gt;A useful verdict separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;passed requirements&lt;/li&gt;
&lt;li&gt;reproduced failures&lt;/li&gt;
&lt;li&gt;regressions&lt;/li&gt;
&lt;li&gt;pre-existing failures&lt;/li&gt;
&lt;li&gt;infrastructure failures&lt;/li&gt;
&lt;li&gt;requirements that remain unverified&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an authoritative check is missing, the bundle should fail closed. A confidence score cannot fill an evidence gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redact without destroying portability
&lt;/h2&gt;

&lt;p&gt;Evidence needs to be useful without leaking secrets or entire private repositories. I retain the necessary excerpts and metadata, enforce output bounds, redact sensitive values, and make truncation explicit.&lt;/p&gt;

&lt;p&gt;JSON works well for automation. Markdown and self-contained HTML are useful when a person needs to inspect the result offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Link the re-check
&lt;/h2&gt;

&lt;p&gt;When a failure is fixed, the new bundle should reference the earlier attempt and preserve the failing evidence. That gives the work a closure trail:&lt;/p&gt;

&lt;p&gt;failed behavior -&amp;gt; corrective change -&amp;gt; passing check -&amp;gt; regression result&lt;/p&gt;

&lt;p&gt;CodeVetter treats this machine-readable bundle as a primary product surface. Completed reviews can export fail-closed JSON, Markdown, and self-contained HTML while keeping missing proof visible.&lt;/p&gt;

&lt;p&gt;The full bundle model is at &lt;a href="https://codevetter.com/verification-evidence-bundle" rel="noopener noreferrer"&gt;https://codevetter.com/verification-evidence-bundle&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>MLX LoRA fine-tuning: the command is the easy part</title>
      <dc:creator>Sarthak Agrawal</dc:creator>
      <pubDate>Mon, 24 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/sarthakagrawal927/mlx-lora-fine-tuning-the-command-is-the-easy-part-3h4a</link>
      <guid>https://dev.to/sarthakagrawal927/mlx-lora-fine-tuning-the-command-is-the-easy-part-3h4a</guid>
      <description>&lt;p&gt;MLX LM gives Apple Silicon a native path for adapting open language models with LoRA or QLoRA. Starting the run is straightforward. Deciding whether the resulting adapter is useful is the real work.&lt;/p&gt;

&lt;p&gt;I treat the dataset contract, frozen baseline, and post-training evaluation as part of the training recipe rather than cleanup after it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prepare the environment and data
&lt;/h2&gt;

&lt;p&gt;MLX LM accepts a local data directory with &lt;code&gt;train.jsonl&lt;/code&gt;, optional &lt;code&gt;valid.jsonl&lt;/code&gt;, and &lt;code&gt;test.jsonl&lt;/code&gt;, as well as supported Hugging Face datasets. Chat, tool, completion, and text formats can all work.&lt;/p&gt;

&lt;p&gt;Each JSONL example should stay on one line. The selected base model's chat template needs to be checked before a long run. A malformed template can turn a valid-looking dataset into the wrong learning problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run a bounded adapter experiment
&lt;/h2&gt;

&lt;p&gt;I use &lt;code&gt;mlx_lm.lora&lt;/code&gt; with an explicit base model, data path, iteration budget, and adapter output path. A quantized base selects QLoRA; a non-quantized base uses LoRA by default.&lt;/p&gt;

&lt;p&gt;The run record should keep the exact base revision, MLX LM version, configuration, seed, data manifest, and machine. If prompt masking is enabled, I verify that loss is applied to the intended completion tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluate before fusing
&lt;/h2&gt;

&lt;p&gt;The unchanged base model and the adapter should run against the same frozen examples.&lt;/p&gt;

&lt;p&gt;Perplexity can reveal some training problems, but it cannot replace task metrics. A tool specialist needs exact tool and argument checks. A formatter needs protected-span and unnecessary-edit measurements. Every narrow target also needs out-of-domain slices so a gain does not hide a breadth regression.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generate and package
&lt;/h2&gt;

&lt;p&gt;Qualitative generation is useful after the quantitative gate, not instead of it. I fuse an adapter only after the evidence supports that decision.&lt;/p&gt;

&lt;p&gt;The package still needs the base identity, adapter or fused artifact, tokenizer, quantization, runtime requirements, model card, license checks, evaluation revision, and missing measurements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure modes I watch for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;overlapping training and evaluation examples&lt;/li&gt;
&lt;li&gt;choosing a threshold after seeing the candidate&lt;/li&gt;
&lt;li&gt;treating lower loss as task success&lt;/li&gt;
&lt;li&gt;publishing only the improved slice&lt;/li&gt;
&lt;li&gt;fusing before preserving the adapter, recipe, and evidence&lt;/li&gt;
&lt;li&gt;replacing a general model with a narrow specialist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PostTrainLLM wraps this into a factory-run, evaluation, package, and report-card workflow. The complete MLX path is at &lt;a href="https://posttrainllm.com/mlx-lora-fine-tuning" rel="noopener noreferrer"&gt;https://posttrainllm.com/mlx-lora-fine-tuning&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
