<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Code & Cloud by Achal Jain]]></title><description><![CDATA[Practical articles on backend development, AI/ML, and cloud computing by Achal Jain. Learn how to build and deploy ML projects without breaking the bank.]]></description><link>https://achal-jain.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/69a656eee8e1f9df72fc29db/f111db17-8d1f-4f3f-b37d-8d62beff9565.png</url><title>Code &amp; Cloud by Achal Jain</title><link>https://achal-jain.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 09:16:14 GMT</lastBuildDate><atom:link href="https://achal-jain.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Stop breaking your vector DB: How I fixed the Pinecone 40KB metadata limit]]></title><description><![CDATA[Hey everyone, I’m Achal. I’m a backend engineer, usually building systems in Python and FastAPI.
If you are building RAG applications or managing vector databases, you’ve probably hit this exact wall:]]></description><link>https://achal-jain.hashnode.dev/stop-breaking-your-vector-db-how-i-fixed-the-pinecone-40kb-metadata-limit</link><guid isPermaLink="true">https://achal-jain.hashnode.dev/stop-breaking-your-vector-db-how-i-fixed-the-pinecone-40kb-metadata-limit</guid><category><![CDATA[vector database]]></category><category><![CDATA[Pinecone]]></category><category><![CDATA[AI]]></category><category><![CDATA[llm]]></category><dc:creator><![CDATA[Achal Jain]]></dc:creator><pubDate>Thu, 02 Jul 2026 17:04:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69a656eee8e1f9df72fc29db/0cc09dea-f91c-444d-a959-a6efeba5af7b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone, I’m Achal. I’m a backend engineer, usually building systems in Python and FastAPI.</p>
<p>If you are building RAG applications or managing vector databases, you’ve probably hit this exact wall: you go to upsert your chunks, and the job fails because your metadata payload is too large. Pinecone, for example, has a strict 40KB limit.</p>
<p>It's incredibly frustrating when an entire pipeline crashes just because you wanted to store <code>chunk_text</code>, <code>raw_html</code>, and a <code>summary</code> alongside your vectors. The standard "fix" is to write messy custom scripts to strip out the heavy fields, which breaks your workflow and is hard to maintain.</p>
<p>I got tired of writing hacky workarounds, so I built a native Python solution.</p>
<p>I just open-sourced <code>vectormeta</code>, a tool to scan, validate, and fix vector DB metadata <em>before</em> you upsert.</p>
<p><strong>How it works:</strong> Instead of losing your data, <code>vectormeta</code> analyzes your JSON/JSONL records in UTF-8. It keeps the filterable fields you actually need (like <code>source</code>, <code>page</code>, <code>doc_id</code>, <code>tags</code>) directly in the vector DB record. Then, it automatically moves the heavy, storage-heavy payloads (like HTML or massive text chunks) into local sidecar stores (SQLite, JSON, or FileStore).</p>
<p>It leaves behind a lightweight <code>content_ref</code> so you stay well under the 40KB limit, but you never lose your source data.</p>
<p>You can use it as a CLI tool (<code>vectormeta scan records.json --target pinecone</code>) or drop <code>safe_upsert</code> directly into your Python ingestion pipelines.</p>
<p>If you are building in the AI space and fighting metadata limits, you can check it out on GitHub: <a href="https://github.com/Achal13jain/vectormeta">https://github.com/Achal13jain/vectormeta</a> or run <code>pip install vectormeta</code>.</p>
<p>What vector DB are you currently using, and how do you normally handle massive chunk metadata?</p>
]]></content:encoded></item><item><title><![CDATA[I Deployed a Stock Prediction Model on AWS — Here's Exactly How]]></title><description><![CDATA[Colab disconnected on me mid-training again. Kaggle hit the weekly limit on a Thursday. At some point you just want a server that doesn't vanish when you close your browser.
So that's what I did. Took]]></description><link>https://achal-jain.hashnode.dev/i-deployed-a-stock-prediction-model-on-aws-here-s-exactly-how</link><guid isPermaLink="true">https://achal-jain.hashnode.dev/i-deployed-a-stock-prediction-model-on-aws-here-s-exactly-how</guid><category><![CDATA[AWS]]></category><category><![CDATA[Machine Learning]]></category><category><![CDATA[Stock Prediction ]]></category><category><![CDATA[Python]]></category><category><![CDATA[FastAPI]]></category><category><![CDATA[yfinance]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Achal Jain]]></dc:creator><pubDate>Tue, 24 Mar 2026 04:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69a656eee8e1f9df72fc29db/79f9f085-9f1b-49ea-be00-e322e7a41bbc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Colab disconnected on me mid-training again. Kaggle hit the weekly limit on a Thursday. At some point you just want a server that doesn't vanish when you close your browser.</p>
<p>So that's what I did. Took a stock prediction model trained on real Yahoo Finance data, put it on AWS EC2, and wrapped it with a FastAPI endpoint. You hit <code>/predict/TCS.NS</code> and it tells you if the model thinks tomorrow goes up or down. Not localhost — an actual server with a public IP.</p>
<p>If you've never touched AWS, that's fine. I was googling "what is a .pem file" two weeks before writing this.</p>
<hr />
<h2>What We're Building</h2>
<p>Two years of TCS stock data pulled from Yahoo Finance. A Random Forest classifier trained on it. That model sitting on an EC2 instance behind a FastAPI endpoint. You give it a ticker, it gives you a direction. Nothing fancier than that.</p>
<hr />
<h2>Pulling Data and Training the Thing</h2>
<p>Get the installs out of the way first — <code>pip install yfinance pandas scikit-learn joblib fastapi uvicorn</code>.</p>
<p>yfinance is almost suspiciously easy. No API key, no signup, no rate limit dashboard. You give it a ticker, it hands you two years of daily prices. I kept waiting for the catch and there isn't one.</p>
<p>Here's the full pipeline from pulling data to saving the trained model. I'm putting it all in one block because that's honestly how I wrote it — one script, ran it locally, checked the accuracy, moved on.</p>
<pre><code class="language-python">import yfinance as yf
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import joblib

stock = yf.Ticker("TCS.NS")
df = stock.history(period="2y")

# moving averages, price momentum, volatility, volume shifts
df['MA_7'] = df['Close'].rolling(7).mean()
df['MA_21'] = df['Close'].rolling(21).mean()
df['Price_Change'] = df['Close'].pct_change()
df['Volatility'] = df['Close'].rolling(7).std()
df['Volume_Change'] = df['Volume'].pct_change()
df.dropna(inplace=True)

df['Target'] = (df['Close'].shift(-1) &gt; df['Close']).astype(int)
df.dropna(inplace=True)

cols = ['MA_7', 'MA_21', 'Price_Change', 'Volatility', 'Volume_Change', 'Close']
X, y = df[cols], df['Target']

cutoff = int(len(df) * 0.8)
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X[:cutoff], y[:cutoff])

print(f"Accuracy: {accuracy_score(y[cutoff:], model.predict(X[cutoff:])):.2%}")
joblib.dump(model, 'stock_model.pkl')
</code></pre>
<p>Few things worth mentioning here. Raw closing prices as input is useless — the model just memorizes numbers. The rolling averages and volatility give it something to actually learn from.</p>
<p>I tried predicting exact prices at first. Regression. Terrible idea. The model would spit out a number like 3847 when the real price was 3902 and I'd have no idea if that's acceptable or not. Reframing it as a binary up/down question made evaluation straightforward — either it got the direction right or it didn't.</p>
<p>Also, don't use <code>train_test_split</code> with shuffle on time series data. I almost did out of habit. If you shuffle, 2024 rows end up in training while 2023 rows are in test. Your accuracy looks amazing because the model literally saw the future. Chronological split only.</p>
<p>That first <code>dropna()</code> matters too — rolling windows produce NaN for the first ~20 rows and sklearn won't warn you about it. It just trains on garbage quietly.</p>
<hr />
<h2>AWS Setup</h2>
<p>Go to aws.amazon.com, make a free account. Free tier gives you 12 months of t2.micro EC2. Small machine, plenty for this.</p>
<p>EC2 dashboard, Launch Instance. Ubuntu Server 22.04 LTS, t2.micro, create a new key pair and download the <code>.pem</code> file. You cannot re-download this — I lost my first one. In the security group, allow SSH on port 22 and add custom TCP for port 8000 from anywhere.</p>
<p>Once it's running, grab the public IP and SSH in:</p>
<pre><code class="language-bash">chmod 400 your-key.pem
ssh -i your-key.pem ubuntu@your-instance-public-ip
</code></pre>
<p>That <code>chmod 400</code> is required — SSH refuses the key if permissions are too open. First time you see a Linux prompt on a machine you don't own is a weird feeling.</p>
<p>Set up Python and transfer the model:</p>
<pre><code class="language-bash">sudo apt update &amp;&amp; sudo apt install python3-pip python3-venv -y
python3 -m venv ml-env &amp;&amp; source ml-env/bin/activate
pip install fastapi uvicorn scikit-learn joblib pandas yfinance numpy
</code></pre>
<p>Open a second terminal on your local machine (keep SSH open) and copy the model over:</p>
<pre><code class="language-bash">scp -i your-key.pem stock_model.pkl ubuntu@your-instance-ip:~/
</code></pre>
<p>Never used <code>scp</code> before this project — it's just file copy over SSH. The <code>~/</code> drops it in the home directory.</p>
<hr />
<h2>The API</h2>
<p>Create <code>app.py</code> on the server and put this in:</p>
<pre><code class="language-python">from fastapi import FastAPI
import joblib, yfinance as yf, numpy as np

app = FastAPI()
model = joblib.load('stock_model.pkl')

@app.get("/predict/{ticker}")
def predict(ticker: str):
    try:
        df = yf.Ticker(ticker).history(period="60d")
        df['MA_7'] = df['Close'].rolling(7).mean()
        df['MA_21'] = df['Close'].rolling(21).mean()
        df['Price_Change'] = df['Close'].pct_change()
        df['Volatility'] = df['Close'].rolling(7).std()
        df['Volume_Change'] = df['Volume'].pct_change()
        df.dropna(inplace=True)

        row = df[['MA_7','MA_21','Price_Change','Volatility','Volume_Change','Close']].iloc[-1]
        features = row.values.reshape(1, -1)

        pred = model.predict(features)[0]
        prob = round(max(model.predict_proba(features)[0]) * 100, 1)
        direction = "UP" if pred == 1 else "DOWN"

        return {"ticker": ticker, "prediction": direction, "confidence": f"{prob}%"}
    except Exception as e:
        return {"error": str(e)}

@app.get("/")
def root():
    return {"status": "running"}
</code></pre>
<p>No separate <code>get_features</code> function — one route, no need to split things up.</p>
<p>Run <code>uvicorn app:app --host 0.0.0.0 --port 8000</code> and try hitting it from your own machine:</p>
<pre><code class="language-bash">curl http://your-ec2-ip:8000/predict/TCS.NS
</code></pre>
<p>You should get back something like <code>{"ticker": "TCS.NS", "prediction": "UP", "confidence": "64.3%"}</code>. First time I saw that come back from my own server I just sat there for a bit.</p>
<h3>Keeping It Alive</h3>
<p>Close SSH and uvicorn dies. I use <code>screen</code> for this:</p>
<pre><code class="language-bash">sudo apt install screen -y
screen -S stock-api
source ml-env/bin/activate
uvicorn app:app --host 0.0.0.0 --port 8000
</code></pre>
<p><code>Ctrl+A</code> then <code>D</code> to detach. Your server stays up even after you close the terminal. <code>screen -r stock-api</code> to get back in.</p>
<hr />
<h2>Cost</h2>
<p>Zero. t2.micro is free for 12 months. yfinance is free forever. But <strong>stop the instance when you're done</strong> — EC2, select your instance, Instance State, Stop. A forgotten running instance drains free tier hours and AWS won't warn you.</p>
<hr />
<h2>Step Back</h2>
<p>Someone can type a URL, hit your endpoint, on a server you set up, and get a prediction from a model you trained on 2 years of real market data. That covers data engineering, ML, API development, and cloud deployment in one project. Put the live link in your portfolio — it hits differently when the interviewer can actually click it.</p>
<hr />
<h2>What's Next</h2>
<p>Part 4 runs this same thing on GCP and Oracle Cloud. Oracle's always-free tier gives you a permanent 24GB RAM server for nothing — sounds fake, it's not. We'll compare all three providers head to head.</p>
<p><em>Following along? Hit follow on Hashnode so Part 4 lands in your feed. Stuck on the AWS setup? Drop a comment — there's like 15 things that can go wrong with security groups alone.</em></p>
]]></content:encoded></item><item><title><![CDATA[Free Cloud Platforms for ML — Colab, Kaggle & Hugging Face (What Nobody Tells You)]]></title><description><![CDATA[If you read Part 1, you already know why your laptop struggles with ML. Now let’s actually fix that.
When I was building my Disease Prediction System, my laptop gave up mid-training. Not metaphoricall]]></description><link>https://achal-jain.hashnode.dev/free-cloud-platforms-for-ml-colab-kaggle-hugging-face-what-nobody-tells-you</link><guid isPermaLink="true">https://achal-jain.hashnode.dev/free-cloud-platforms-for-ml-colab-kaggle-hugging-face-what-nobody-tells-you</guid><category><![CDATA[Machine Learning]]></category><category><![CDATA[Google Colab]]></category><category><![CDATA[kaggle]]></category><category><![CDATA[huggingface]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Achal Jain]]></dc:creator><pubDate>Sat, 14 Mar 2026 09:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69a656eee8e1f9df72fc29db/cb755b53-c0f2-4e66-a324-98759d19e9bc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you read Part 1, you already know why your laptop struggles with ML. Now let’s actually fix that.</p>
<p>When I was building my Disease Prediction System, my laptop gave up mid-training. Not metaphorically—it just hung. That’s when I turned to free cloud platforms. And the thing that surprised me most? I didn’t have to pay anything. Not a single rupee.</p>
<p>Here are the three I’ve actually used.</p>
<h2>1. Google Colab—The <strong>One Everyone Starts With</strong></h2>
<p>Someone has probably already told you to "just use Colab." That advice isn't wrong.</p>
<p>Colab is Jupyter Notebook but running on Google's hardware. You open a browser tab, write code, run it — your laptop does almost nothing. And getting a free GPU takes literally three clicks.</p>
<h3>Setting it up</h3>
<p>Go to <a href="http://colab.research.google.com">colab.research.google.com</a>, sign in, and open a new notebook. Then:</p>
<p><strong>Runtime → Change runtime type → T4 GPU → Save</strong></p>
<p>To verify it worked:</p>
<pre><code class="language-python">import tensorflow as tf
print("GPU Available:", tf.config.list_physical_devices('GPU'))
</code></pre>
<p>If you see an empty list, restart the runtime and try again.</p>
<h3>The Google Drive Trick</h3>
<p>Every new Colab session starts completely fresh — no files, nothing. So instead of re-uploading your dataset every time, store it in Google Drive and mount it:</p>
<pre><code class="language-python">from google.colab import drive
drive.mount('/content/drive')

import pandas as pd
df = pd.read_csv('/content/drive/MyDrive/your-dataset.csv')
</code></pre>
<p>I wasted multiple sessions before I figured this out. Don't be me.</p>
<h3><strong>Where Colab Will Frustrate You</strong></h3>
<p>Step away for 90 minutes and your session is gone. Variables, progress, everything. I learned this during a 45-minute training run. Timed out. Started over.</p>
<p>Also, the free GPU isn't guaranteed. During peak hours you might silently get a CPU instead. Always check your runtime type before training.</p>
<p><strong>Short version:</strong> Great for quick experiments. Not reliable for long runs.</p>
<h2><strong>2. Kaggle Notebooks—Honestly Underrated</strong></h2>
<p>Most people think of Kaggle as the competition platform and completely ignore the notebook environment. That's a mistake.</p>
<p>For my Disease Prediction project, the dataset I needed was already on Kaggle. No downloading, no uploading. Just click, add, done. That alone sold me.</p>
<h3><strong>Getting Started</strong></h3>
<p>Create a free account at <a href="http://kaggle.com">kaggle.com</a> → <strong>Create → New Notebook</strong></p>
<p>Right panel → <strong>Session options → Accelerator → GPU P100 → Save</strong></p>
<p>You get <strong>30 hours of free GPU per week</strong>, consistent, no surprises. Compare that to Colab where you're kind of gambling each session.</p>
<h3><strong>Loading Datasets Directly</strong></h3>
<pre><code class="language-python">import pandas as pd

# datasets live at /kaggle/input/ — no uploading needed
df = pd.read_csv('/kaggle/input/disease-symptoms-dataset/dataset.csv')
print(df.shape)
</code></pre>
<p>For the Disease Prediction project, this saved me 30-40 minutes of downloading, unzipping, re-uploading nonsense every single session.</p>
<h3><strong>Saving Your Model</strong></h3>
<pre><code class="language-python">import joblib
joblib.dump(model, '/kaggle/working/disease_model.pkl')
</code></pre>
<p>Download it from the output panel on the right. Your notebook also auto-saves, unlike Colab.</p>
<h3><strong>Where Kaggle Falls Short</strong></h3>
<p>30 hours sounds like a lot until it's Wednesday and you've used it all. Internet is also off by default — enable it manually or pip installs fail silently, which is a confusing bug to debug.</p>
<p><strong>Short version:</strong> More reliable than Colab, better for data-heavy work. Use this when Colab keeps letting you down.</p>
<h2><strong>3. Hugging Face Spaces — For Showing Your Work</strong></h2>
<p>This is where most ML beginners stop — they train a model, save a .pkl file, and it just sits on their laptop. Nobody sees it. Hugging Face Spaces fixes that.</p>
<p>It lets you wrap your model in a web UI and deploy it free. Think about it this way — if you send a recruiter your GitHub link, they have to clone the repo, set up the environment, install dependencies, and hope it runs. Nobody does that.</p>
<p>But if you send them a link and they can just type in symptoms and see a prediction in 5 seconds? That's a different conversation entirely.</p>
<p>Gradio is what makes that possible. And it's stupidly easy to set up.</p>
<h3><strong>Building a Demo with Gradio</strong></h3>
<pre><code class="language-python">import gradio as gr
import joblib

model = joblib.load('disease_model.pkl')

def predict(symptom1, symptom2, symptom3):
    result = model.predict([[symptom1, symptom2, symptom3]])
    return result[0]

gr.Interface(
    fn=predict,
    inputs=["text", "text", "text"],
    outputs="text",
    title="Disease Prediction System"
).launch()
</code></pre>
<p>That's the whole thing. Run it, Gradio hands you a URL, and your model is now a working web app. No HTML, no JavaScript, no backend setup. I genuinely could not believe how fast this worked the first time I tried it.</p>
<h3><strong>Deploying It</strong></h3>
<p>Go to <a href="http://huggingface.co/spaces">huggingface.co/spaces</a> → <strong>Create new Space</strong> → pick Gradio → upload your model and app file. It goes live at <code>huggingface.co/spaces/yourusername/app-name</code>. Free tier runs on CPU which is enough for demos.</p>
<p><strong>Short version:</strong> Don't use this for training. Use it to turn a finished model into something people can actually interact with.</p>
<hr />
<h2><strong>Which One Do I Actually Use?</strong></h2>
<p>Depends on where you are:</p>
<ul>
<li><p><strong>Just learning / quick experiment</strong> → Colab. Low friction, just open and go.</p>
</li>
<li><p><strong>Real dataset, need reliable GPU</strong> → Kaggle. 30 hours a week, auto-saves, no upload headaches.</p>
</li>
<li><p><strong>Want to show your model to someone</strong> → Hugging Face Spaces. Build a Gradio app, deploy, share the link.</p>
</li>
</ul>
<p>For my Disease Prediction project — started on Kaggle because the dataset was there, did some experimentation on Colab, planned the Gradio demo for Hugging Face. Three platforms, one project, zero rupees.</p>
<p>None of them are perfect. But together they cover everything you need at the beginner-to-intermediate level.</p>
<p>When they stop being enough — that's Part 3. We're moving to AWS with a real stock market dataset. Full setup, real code, step by step.</p>
<hr />
<p><em>Following along? Hit follow on Hashnode so Part 3 lands in your feed. Questions about Colab or Kaggle? Drop them in the comments.</em></p>
]]></content:encoded></item><item><title><![CDATA[Why Your Laptop Isn't Enough & What Cloud Actually Means for ML?]]></title><description><![CDATA[You're excited. You've got a dataset, a model plan and a cup of coffee. You start your Jupyter notebook, hit model.fit() and then your laptop fan gets really loud. The training is slow. The kernel cra]]></description><link>https://achal-jain.hashnode.dev/why-your-laptop-isn-t-enough-what-cloud-actually-means-for-ml</link><guid isPermaLink="true">https://achal-jain.hashnode.dev/why-your-laptop-isn-t-enough-what-cloud-actually-means-for-ml</guid><category><![CDATA[Machine Learning]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Deep Learning]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Achal Jain]]></dc:creator><pubDate>Fri, 06 Mar 2026 04:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69a656eee8e1f9df72fc29db/f8d82df0-bf2c-46cf-a8f1-5a22d7d9e1f4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<p>You're excited. You've got a dataset, a model plan and a cup of coffee. You start your Jupyter notebook, hit <code>model.fit()</code> and then your laptop fan gets really loud. The training is slow. The kernel crashes. Or worse. It runs for 3 hours. You get an error right at the end.</p>
<p>I have been there. When I started working with datasets that required deep learning models my laptop just couldn't keep up. It wasn't a skill problem. It was a hardware problem. That's when I started taking cloud computing seriously.</p>
<p>If you hit this wall too this series is for you.</p>
<hr />
<h3>Why Your Laptop Struggles with ML</h3>
<p>Lets be honest about whats happening.</p>
<p>Most laptops are built for tasks like browsing and coding. They typically come with:</p>
<ul>
<li><p><strong>4–16 GB RAM:</strong> Okay for development not okay for loading a 10GB dataset</p>
</li>
<li><p><strong>A CPU</strong> Good at doing tasks one at a time not great at parallel computation</p>
</li>
<li><p><strong>No dedicated GPU (or a weak one):</strong> This is the real problem for deep learning</p>
</li>
</ul>
<p>Here's the thing about Machine Learning and Deep Learning. These models don't just run computations they run <strong>millions or billions of computations at the same time.</strong> Matrix multiplications, gradient updates, backpropagation. All of this is parallel work. That's exactly what GPUs are designed for.</p>
<p>When you train a learning model on a CPU it's like trying to fill a swimming pool with a water bottle. It works. It'll take forever.</p>
<hr />
<h3>What Happens When You Push Your Laptop Hard</h3>
<p>If you've trained any serious model locally you've probably experienced one or more of these:</p>
<p><strong>Kernel crashes / Out of Memory (OOM) errors</strong> Your dataset or model simply exceeds your available RAM. Python throws an error. Your progress is gone.</p>
<p><strong>Slow training</strong> A model that would take 10 minutes on a cloud GPU takes 6 hours on a laptop CPU. You can't iterate, experiment. Improve quickly.</p>
<p><strong>Overheating and throttling</strong> Your laptop detects its running too hot. Automatically slows itself down to prevent damage. Training gets even slower.</p>
<p><strong>You can't do anything</strong> Your entire machine is locked up running the model. No multitasking.</p>
<p>These aren't edge cases. They're the normal experience for anyone trying to do real ML work on consumer hardware.</p>
<hr />
<h3>So What Does "The Cloud" Actually Mean?</h3>
<p>The word "cloud" gets thrown around a lot. Lets simplify it.</p>
<p>The cloud is simply someone else's powerful computer. One that you access over the internet.</p>
<p>That's it. When you run your model "on the cloud " you're renting time on a machine that lives in a data center. That machine might have:</p>
<ul>
<li><p><strong>Hundreds of GB of RAM</strong></p>
</li>
<li><p><strong>High-end GPUs</strong> like NVIDIA A100s or V100s</p>
</li>
<li><p>Storage and network speeds</p>
</li>
<li><p>The ability to scale up or down based on your needs</p>
</li>
</ul>
<p>You write your code on your laptop send it to the cloud machine it does the computation and sends the results back. Your laptop is the controller. The cloud is where the real work happens.</p>
<hr />
<h3>The Three Types of Cloud ML Environments</h3>
<p>Not all cloud options are the same. As someone getting started, it helps to know the three main categories:</p>
<p><strong>1. Notebook Environments (Easiest to start)</strong></p>
<p>These are browser-based platforms where you write and run code directly — just like Jupyter on your laptop, but with cloud hardware behind it.</p>
<p>Examples: <strong>Google Colab, Kaggle Notebooks, Deepnote</strong></p>
<p>Best for: Learning, experimenting, small to medium projects, students</p>
<p><strong>2. Cloud ML Platforms (More control)</strong></p>
<p>These are dedicated ML services from major cloud providers. You get more control over hardware, storage, and deployment.</p>
<p>Examples: <strong>AWS SageMaker, Google Vertex AI, Oracle Cloud, Azure ML</strong></p>
<p>Best for: Production models, larger teams, serious projects</p>
<p><strong>3. GPU Rental Services (Pay for exactly what you need)</strong></p>
<p>You rent a raw GPU instance and set everything up yourself. Maximum flexibility.</p>
<p>Examples: <a href="http://Vast.ai"><strong>Vast.ai</strong></a><strong>, Lambda Labs, RunPod</strong></p>
<p>Best for: Heavy deep learning training, when you need a specific GPU</p>
<hr />
<h3>Free vs Paid — What you actually get</h3>
<p>Here's something important for students and beginners: <strong>you don't need to spend money to start.</strong></p>
<p>Several platforms offer genuinely free tiers that are more than enough to learn and build:</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Free GPU</th>
<th>RAM</th>
<th>Storage</th>
<th>Best For</th>
</tr>
</thead>
<tbody><tr>
<td>Google Colab</td>
<td>T4 GPU (limited)</td>
<td>~ 12 GB</td>
<td>15 GB Drive</td>
<td>Quick experiment</td>
</tr>
<tr>
<td>Kaggle</td>
<td>P100 GPU (30 hrs/week)</td>
<td>~ 13 GB</td>
<td>20 GB</td>
<td>Competitions, datasets</td>
</tr>
<tr>
<td>Hugging Face Spaces</td>
<td>CPU (free), GPU (paid)</td>
<td>Varies</td>
<td>Persistent</td>
<td>Deploying ML apps</td>
</tr>
<tr>
<td>Oracle Cloud (Free tier)</td>
<td>CPU</td>
<td>24 GB</td>
<td>200 GB</td>
<td>Always-free instances</td>
</tr>
</tbody></table>
<p>We'll do a deep dive into each of these in <strong>Part 2</strong> of this series — with actual walkthroughs.</p>
<hr />
<h3>When Should You Move to the Cloud?</h3>
<p>You don't need the cloud for everything. Here's a simple way to think about it:</p>
<p><strong>Stay local when:</strong></p>
<ul>
<li><p>You're learning the basics of ML (linear regression, small datasets)</p>
</li>
<li><p>Your dataset fits comfortably in your RAM (under 1–2 GB)</p>
</li>
<li><p>Training takes less than a few minutes</p>
</li>
</ul>
<p><strong>Move to the cloud when:</strong></p>
<ul>
<li><p>Your dataset is large (images, video, NLP corpora)</p>
</li>
<li><p>You're using deep learning (CNNs, Transformers, LLMs)</p>
</li>
<li><p>Training takes more than 30 minutes on your laptop</p>
</li>
<li><p>You want to deploy your model so others can use it</p>
</li>
</ul>
<hr />
<h3>What's Coming Next in This Series</h3>
<p>Now that you understand <em>why</em> local hardware falls short and <em>what</em> the cloud actually is, the next parts of this series get practical:</p>
<ul>
<li><p><strong>Part 2:</strong> Free cloud options for small ML projects — Google Colab, Kaggle, and Hugging Face Spaces with hands-on walkthroughs</p>
</li>
<li><p><strong>Part 3:</strong> Deploying heavy ML models on AWS, GCP, and Oracle Cloud step by step</p>
</li>
<li><p><strong>Part 4:</strong> Which cloud platform should you pick? A comparison for ML beginners</p>
</li>
</ul>
<hr />
<h3>The Bottom Line</h3>
<p>Your laptop struggling with ML isn't a sign that you're doing something it's a sign that you're doing something real. Real datasets are large. Real models are heavy.. The cloud exists precisely to solve this problem.</p>
<p>The good news? Getting started with ML is free and its more accessible than most tutorials make it seem. Stick with this series and, by the end you'll be running your models on GPUs without paying a rupee.</p>
<hr />
<p><em>If you found this helpful follow me on Hashnode for Part 2. Have questions. Hit a specific issue with your own setup? Drop it in the comments. I read everything.</em></p>
<hr />
]]></content:encoded></item></channel></rss>