<?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: Safiullah</title>
    <description>The latest articles on DEV Community by Safiullah (@safiullah222).</description>
    <link>https://dev.to/safiullah222</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%2F4072134%2F4c8bff8e-e957-48f0-8f12-3bab7aae2b67.png</url>
      <title>DEV Community: Safiullah</title>
      <link>https://dev.to/safiullah222</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/safiullah222"/>
    <language>en</language>
    <item>
      <title>"5 Things I Wish I Knew Before Starting My AI Engineering Internship"</title>
      <dc:creator>Safiullah</dc:creator>
      <pubDate>Tue, 11 Aug 2026 05:34:06 +0000</pubDate>
      <link>https://dev.to/safiullah222/5-things-i-wish-i-knew-before-starting-my-ai-engineering-internship-4o9n</link>
      <guid>https://dev.to/safiullah222/5-things-i-wish-i-knew-before-starting-my-ai-engineering-internship-4o9n</guid>
      <description>&lt;p&gt;Seven weeks into an AI Engineering internship (alongside the IBM Data Science Professional Certificate), I've picked up a few things I genuinely wish someone had told me on day one. None of these are deep technical lessons — they're more about mindset and habits, the kind of stuff that doesn't show up in a syllabus.&lt;/p&gt;

&lt;p&gt;If you're about to start something similar, here's what I'd tell past-me.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Accuracy going up doesn't always mean the model is getting better
&lt;/h2&gt;

&lt;p&gt;I learned this the hard way while fine-tuning a sentiment analysis model — accuracy kept climbing each epoch, but validation loss was quietly getting worse the whole time. It was overfitting, and I almost missed it because I was only watching one number. Now I check training loss and validation loss together, every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The "boring" model is sometimes the right one
&lt;/h2&gt;

&lt;p&gt;I expected Random Forest to beat Linear Regression on a house price prediction task. It didn't — Linear Regression won by a solid margin. With a small dataset, the simpler model generalized better. I've stopped assuming complexity equals performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Transfer learning feels like cheating, in a good way
&lt;/h2&gt;

&lt;p&gt;Building a Cat vs Dog classifier by only training the final layer of a pretrained ResNet18 — instead of a whole network from scratch — felt like skipping steps I was supposed to do the hard way. It's not cheating, it's just how the field actually works. I wish I'd trusted that sooner instead of assuming "real" learning meant building everything from zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Data cleanup is most of the actual work
&lt;/h2&gt;

&lt;p&gt;Somewhere around week 4 or 5 I realized most of my time wasn't spent tuning models — it was spent understanding, cleaning, and preparing data. That's not the part that gets talked about, but it's the part that actually determines whether anything downstream works.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Writing about what you're learning, in public, changes how you learn it
&lt;/h2&gt;

&lt;p&gt;I started documenting these weeks partly for accountability. What I didn't expect was that explaining a concept well enough to write about it forces a level of understanding that just doing the exercise doesn't. If you're on the fence about writing publicly, it's worth it even if nobody reads it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;None of this is groundbreaking advice, and honestly most of it I only understood after getting it wrong first. If you're just starting an AI internship, a certificate, or learning ML on your own — you'll probably relearn a few of these yourself, and that's fine. It sticks better that way.&lt;/p&gt;

&lt;p&gt;If you've got your own "wish I knew" moment from learning AI/ML, drop it in the comments — genuinely curious what other people's version of this list looks like.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>"I Accidentally Overfit My First Fine-Tuned Model — Here's What the Numbers Told Me"</title>
      <dc:creator>Safiullah</dc:creator>
      <pubDate>Tue, 11 Aug 2026 04:28:37 +0000</pubDate>
      <link>https://dev.to/safiullah222/i-accidentally-overfit-my-first-fine-tuned-model-heres-what-the-numbers-told-me-o48</link>
      <guid>https://dev.to/safiullah222/i-accidentally-overfit-my-first-fine-tuned-model-heres-what-the-numbers-told-me-o48</guid>
      <description>&lt;p&gt;A few weeks ago, while working through the NLP section of my AI Engineering internship, I built a Movie Review Sentiment Analyzer. First I tried a ready-made Hugging Face pipeline — it worked almost too well, near-perfect confidence on every test review. Then I fine-tuned my own DistilBERT model on a small subset of the IMDB dataset, and that's where things got interesting.&lt;/p&gt;

&lt;p&gt;Not because it failed — it actually reached 86.2% accuracy. But looking closer at the training numbers, I noticed something that's apparently a very common mistake: overfitting, happening in real time, in my own results. Here's what that looked like and what it taught me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1: The easy win
&lt;/h2&gt;

&lt;p&gt;I started with Hugging Face's &lt;code&gt;pipeline("sentiment-analysis")&lt;/code&gt;, which loads a model already fine-tuned for this exact task. I tested it on 3 sample reviews, and it nailed all three with near-perfect confidence — 0.9999 on a clearly positive review, 0.9998 on a clearly negative one, and 0.9891 even on a mixed, lukewarm review. This made sense: the model had already been trained specifically for sentiment analysis on far more data than I was about to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2: Fine-tuning my own model
&lt;/h2&gt;

&lt;p&gt;Next I fine-tuned &lt;code&gt;distilbert-base-uncased&lt;/code&gt; myself, on a 2,000-review subset of the IMDB dataset (out of 25,000 available), for 3 epochs. Here's what the training looked like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Epoch&lt;/th&gt;
&lt;th&gt;Training Loss&lt;/th&gt;
&lt;th&gt;Validation Loss&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.3295&lt;/td&gt;
&lt;td&gt;0.4152&lt;/td&gt;
&lt;td&gt;84.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.2186&lt;/td&gt;
&lt;td&gt;0.4945&lt;/td&gt;
&lt;td&gt;86.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0.0539&lt;/td&gt;
&lt;td&gt;0.5796&lt;/td&gt;
&lt;td&gt;86.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At first glance this looks fine — accuracy kept climbing, 84.6% → 86.0% → 86.2%. But look at the other two columns. Training loss dropped hard (0.33 → 0.22 → 0.05), while validation loss climbed every single epoch (0.42 → 0.49 → 0.58).&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3: What that actually means
&lt;/h2&gt;

&lt;p&gt;This is a textbook overfitting pattern. The model was getting better and better at the training data — memorizing it, essentially — while getting slightly worse at generalizing to data it hadn't seen. Accuracy still crept up because 2,000 examples aren't much for a model the size of DistilBERT, so it could still improve overall even while starting to overfit underneath.&lt;/p&gt;

&lt;p&gt;The likely cause: too little data for too many epochs. With only 2,000 training examples instead of the full 25,000, the model ran out of new patterns to learn within just a couple epochs, and by epoch 3 it was mostly just memorizing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 4: Why this mattered to me
&lt;/h2&gt;

&lt;p&gt;Before this, "overfitting" was a term I understood in theory — training accuracy high, test accuracy low, textbook definition. Seeing it show up in my own loss curves was different. It's one thing to be told a lower training loss doesn't always mean a better model. It's another to watch it happen in your own numbers and realize the model that looked "best" on paper (epoch 3, highest accuracy) was actually the one most at risk of not generalizing well.&lt;/p&gt;

&lt;p&gt;If I did this again, I'd either train on the full 25,000-review dataset, stop after epoch 1 or 2, or add early stopping based on validation loss instead of just watching accuracy climb.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;The pretrained pipeline outperformed my fine-tuned model, and that's fine — it was trained on far more data for this exact task. But the real value of this project wasn't the accuracy number. It was catching overfitting as it happened, in my own loss curves, instead of just reading about it as a concept.&lt;/p&gt;

&lt;p&gt;If you're learning ML too, I'd genuinely recommend printing out your validation loss alongside training loss every epoch — it's a small habit that turns an abstract warning ("watch out for overfitting") into something you can actually see.&lt;/p&gt;

&lt;p&gt;That's it for this one. Back to Week 7 (deployment) next — will post an update once the capstone starts.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>nlp</category>
    </item>
    <item>
      <title>7 Weeks Into My AI Engineering Internship (While Doing IBM's Data Science Certificate) — Here's What I've Actually Learned</title>
      <dc:creator>Safiullah</dc:creator>
      <pubDate>Tue, 11 Aug 2026 04:06:40 +0000</pubDate>
      <link>https://dev.to/safiullah222/7-weeks-into-my-ai-engineering-internship-while-doing-ibms-data-science-certificate-heres-17jh</link>
      <guid>https://dev.to/safiullah222/7-weeks-into-my-ai-engineering-internship-while-doing-ibms-data-science-certificate-heres-17jh</guid>
      <description>&lt;p&gt;Hey everyone. I'm a CS student at FAST-NUCES in Karachi, and for the past 7 weeks I've been doing two things in parallel: the IBM Data Science Professional Certificate and an 8-week AI Engineering Internship that goes from Python fundamentals all the way to LLMs and deployment.&lt;/p&gt;

&lt;p&gt;I wanted to write this partly to keep myself accountable, and partly because when I was starting out, reading other people's honest "here's what I actually struggled with" posts helped me a lot more than polished tutorials did.&lt;/p&gt;

&lt;p&gt;So here's a real recap of the last 7 weeks — what I covered, what clicked, and what didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 1 — Python for AI &amp;amp; Data Handling&lt;/strong&gt;&lt;br&gt;
Refreshed Python and got hands-on with NumPy, Pandas, and Matplotlib by building a Student Performance Analyzer on a class dataset. The interesting part wasn't the coding — it was seeing what the numbers actually said: pass rate came out to 93.3%, but the spread in Math scores was wide, clustering heavily at both the low (40s) and high (90s) ends rather than in the middle. Small reminder that "average" can hide a lot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 2 — Machine Learning Fundamentals&lt;/strong&gt;&lt;br&gt;
Built a House Price Prediction model comparing Linear Regression, Decision Tree, and Random Forest on 200 records. Linear Regression actually won, with an R² of 0.9116 versus 0.86 and 0.85 for the tree-based models. That surprised me a bit going in — I expected Random Forest to dominate — but with only 200 rows, the more complex models didn't have enough data to show their usual advantage. Good early lesson that the "fancier" model isn't automatically the better one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 3 — Deep Learning Basics&lt;/strong&gt;&lt;br&gt;
First real neural network, built in PyTorch for MNIST digit recognition. A simple 2-hidden-layer feedforward network hit 96.62% test accuracy after just 5 epochs, with training loss dropping from 0.38 to 0.09. Backpropagation finally clicked here — not the math itself, but watching the loss curve flatten out epoch by epoch made the "the model is learning" idea feel real instead of abstract.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 4 — Computer Vision&lt;/strong&gt;&lt;br&gt;
Moved to OpenCV and PyTorch for a Cat vs Dog classifier using transfer learning on a pretrained ResNet18 — only training the final layer instead of the whole network from scratch. This is where transfer learning really clicked for me: reusing a model already trained on 1.2 million images and just adapting the last layer felt like a shortcut that shouldn't work as well as it does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 5 — Natural Language Processing&lt;/strong&gt;&lt;br&gt;
Built a Movie Review Sentiment Analyzer two ways: a ready-made Hugging Face pipeline (99%+ confidence out of the box), and my own fine-tuned DistilBERT on a 2,000-review IMDB subset, which reached 86.2% accuracy. The more useful result was actually a mistake — training loss kept dropping each epoch (0.33 → 0.05) while validation loss went up (0.42 → 0.58). Textbook overfitting, and the first time I actually saw it happen in my own numbers instead of just reading about it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 6 — LLMs &amp;amp; Prompt Engineering&lt;/strong&gt;&lt;br&gt;
Explored how LLMs work under the hood and spent time experimenting with prompt design — small changes in phrasing or structure often changed the output more than I expected. Also got introduced to RAG (Retrieval-Augmented Generation) by building a Document Q&amp;amp;A Assistant, which combines a retrieval step (finding relevant chunks of a document) with generation (the LLM answering based on those chunks) instead of relying purely on what the model already "knows."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 7 — AI Engineering &amp;amp; Deployment (current)&lt;/strong&gt;&lt;br&gt;
Currently working with FastAPI and ChromaDB to build a Knowledge Base Chatbot API — essentially taking the RAG concept from last week and turning it into something that runs as an actual service instead of a notebook. This has been a different kind of learning curve: less about model accuracy, more about structuring an API properly, handling embeddings storage in a vector database, and thinking about how a real user (or another piece of software) would actually call this thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;That's the honest version of my last 7 weeks — some weeks went smoother than others, and the overfitting mistake in Week 5 probably taught me more than the weeks that went right. One more week to go before the capstone project, so I'll be posting an update once that's done.&lt;/p&gt;

&lt;p&gt;If you're doing something similar — a certificate, an internship, or just learning ML/AI on your own — I'd genuinely like to hear how it's going for you. Feel free to drop a comment.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>datascience</category>
      <category>python</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
