<?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: Priyanshi Naghera</title>
    <description>The latest articles on DEV Community by Priyanshi Naghera (@priyanshi_naghera).</description>
    <link>https://dev.to/priyanshi_naghera</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%2F3422955%2F80c202d4-1003-4a27-aa0a-20068087c1ee.jpg</url>
      <title>DEV Community: Priyanshi Naghera</title>
      <link>https://dev.to/priyanshi_naghera</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/priyanshi_naghera"/>
    <language>en</language>
    <item>
      <title>What I learned about testing LLM fine‑tuning without owning the target hardware</title>
      <dc:creator>Priyanshi Naghera</dc:creator>
      <pubDate>Tue, 30 Jun 2026 17:16:51 +0000</pubDate>
      <link>https://dev.to/priyanshi_naghera/what-i-learned-about-testing-llm-fine-tuning-without-owning-the-target-hardware-2jjb</link>
      <guid>https://dev.to/priyanshi_naghera/what-i-learned-about-testing-llm-fine-tuning-without-owning-the-target-hardware-2jjb</guid>
      <description>&lt;p&gt;While working through an edge‑AI paper, I ran into a common problem: I needed to understand how an LLM behaves when fine‑tuned on a Jetson Orin Nano and on phone‑class hardware, but I didn’t have either device. The paper discussed memory needs, runtime, and power draw after fine‑tuning — details that determine feasibility — so I needed a way to evaluate those constraints without the hardware in hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The idea I explored: Simulate device limits&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I learned that, for early-stage research and sanity checks, you can often get useful answers by simulating a device’s known limits instead of trying to run on the device itself. The approach is simple: collect published specs and benchmark numbers, encode them as constraints, and ask “given these constraints, would this model fit or run?” It doesn’t reproduce the chip, but it provides a practical feasibility check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two approaches I compared:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simulation&lt;/strong&gt; (what I relied on): Simulation doesn’t replicate instruction-level behavior. Instead, it uses numbers — VRAM, throughput, power budgets, token/sec from datasheets or papers — and compares those against model footprints and training configurations. It’s a predictive method: “Would this work under these constraints?” rather than “Let me run this exactly like the device.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A conceptual example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device: Jetson Orin Nano, 8 GB VRAM&lt;/li&gt;
&lt;li&gt;Model: 5.2 GB VRAM footprint (fp32)&lt;/li&gt;
&lt;li&gt;Takeaway: model fits; if it didn’t, quantization or pruning would be needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From the learning perspective, assembling device-spec lookup tables (VRAM, power, tokens/sec) and measuring model footprints (fp32, int8, int4) lets you quickly triage configurations. Simulation is lightweight, fast to iterate with, and excellent for early planning. Its limitation is that it can miss micro-level behaviors like kernel differences or memory fragmentation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Emulation:&lt;/strong&gt; Emulation seeks higher fidelity by reproducing the device’s instruction set and memory model so code actually runs as if on the target chip. It’s more accurate for timing and runtime debugging but heavier to set up and slower to run. I found emulation useful only when I needed execution-level validation or encountered behavior simulation couldn’t explain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy1ncw4gy62t90n4y08uq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy1ncw4gy62t90n4y08uq.png" alt=" " width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use simulation to answer quick feasibility questions: “Will it fit? How much slower might it be? Is quantization required?” It’s the fast path for iteration before investing in hardware.&lt;/li&gt;
&lt;li&gt;Use emulation when you need device-accurate timing, low-level debugging, or to validate drivers and kernels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Simulating device limits helped me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quickly rule out obviously infeasible model+training pairs.&lt;/li&gt;
&lt;li&gt;Explore trade-offs across model sizes and quantization levels without waiting for hardware access.&lt;/li&gt;
&lt;li&gt;Build simple decision rules to decide when to run full experiments on remote GPUs versus when to compress the model first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simulation accuracy depends on input quality: outdated or wrong specs give misleading results.&lt;/li&gt;
&lt;li&gt;It won’t surface runtime surprises caused by device-specific drivers, memory fragmentation, or kernel implementations.&lt;/li&gt;
&lt;li&gt;Power and thermal behavior are approximate without validated traces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A practical checklist to try this yourself&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collect device specs: VRAM, swap behavior, peak throughput, power budget, and thermal throttling info when available.&lt;/li&gt;
&lt;li&gt;Measure model footprints: sizes in fp32, fp16, int8, int4 and estimated peak working memory during training/inference.&lt;/li&gt;
&lt;li&gt;Implement a simple rules engine: check memory fit, estimate throughput changes from quantization, and flag likely power/thermal violations.&lt;/li&gt;
&lt;li&gt;Validate on real hardware when possible to refine assumptions.&lt;/li&gt;
&lt;li&gt;Move to emulation only when simulation can’t explain behavior or when instruction-level accuracy is required.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Documentation Debt</title>
      <dc:creator>Priyanshi Naghera</dc:creator>
      <pubDate>Sat, 08 Nov 2025 16:54:50 +0000</pubDate>
      <link>https://dev.to/priyanshi_naghera/documentation-debt-3d10</link>
      <guid>https://dev.to/priyanshi_naghera/documentation-debt-3d10</guid>
      <description>&lt;p&gt;An outdated documentation is often referred to as “documentation debt” or “tech debt” in software development.&lt;/p&gt;

&lt;p&gt;Learning from documentation is far better than falling into tutorial hell. But learning from outdated documentation is even worse.&lt;/p&gt;

&lt;p&gt;Recently, I have been relying on documentation rather than watching tutorials for learning purposes. I am currently trying to understand the codebase of a large project for open-source contribution. For that, I had to clone and build it by referring to the documentation provided.&lt;br&gt;
Just building the project became a hassle for me — the documentation was nearly 8–10 years old. From outdated compiler versions to non-existent libraries and dependencies, everything became a challenge for a beginner like me.&lt;/p&gt;

&lt;p&gt;This problem took me days to solve. Finding newer versions of each library, reaching out to maintainers to confirm compatibility, and searching for missing dependencies from alternate sources turned into a constant cycle of trial and error. It consumed a lot of time and energy — both mine and the maintainer’s — as we worked through each build issue and tracked down missing libraries.&lt;/p&gt;

&lt;p&gt;The project itself is very interesting, but over time, all these hurdles made me lose interest. And that’s exactly what happens when documentation isn’t updated regularly.&lt;/p&gt;

&lt;p&gt;Up-to-date documentation plays a crucial role in improving both user and developer experience, ensuring they continue using and contributing to your product in the long run.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
