Jupyter Notebook ও Colab
এই পাঠে যা শিখবেন
- Notebook কী — কেন data scientist এতে কাজ করে
- Cell type — code vs markdown, কীবোর্ড শর্টকাট
- Jupyter local-এ চালানো — install ও first launch
- Google Colab — login থেকে GPU activate
- Notebook-এর সাধারণ ফাঁদ — hidden state, version control, secret leak
- কখন
.ipynbছেড়ে.py-তে যাবেন
১ · Notebook কী?
Jupyter NotebookJupyterProject Jupyter (২০১৪, Fernando Pérez) — IPython থেকে evolve হওয়া interactive computing environment। নাম এসেছে Julia + Python + R থেকে — তিন ভাষাকেই support। আজকে data science-এর de facto interface। হলো একটি interactive document যেখানে code, output, লেখা, ছবি, গাণিতিক সূত্র — সব এক জায়গায় থাকে। Document-টি cell-এ ভাগ — প্রতিটি cell আলাদা করে run করা যায়। এক cell-এ ভেরিয়েবল declare করুন, পরের cell-এ ব্যবহার করুন — kernel state ধরে রাখে। এই workflow exploratory data analysis (EDA), data science teaching, reproducible research-এ revolutionary।
১) Code cell: Python (বা R, Julia) — Shift+Enter দিয়ে run।
২) Markdown cell: ব্যাখ্যা, heading, list, link, image, math (LaTeX)।
৩) Raw cell: render না — কাঁচা text, খুব কম ব্যবহৃত।
.py ফাইল) = একটি বইয়ের পাতা — উপর থেকে নিচ পর্যন্ত একসাথে পড়তে হয়। Notebook = একটি ল্যাব নোটবুক — পরীক্ষা চালান, observation লিখুন, ছবি আঁকুন, একই পাতায় পরের পরীক্ষা। Data analysis "পরীক্ষা" — তাই notebook এতটা প্রিয়।
২ · Code ও Markdown — দু'টি প্রধান cell
Code cell-এ Python চালান — পাশে output instantly। Markdown cell-এ # দিয়ে heading, **bold**, - list, $x^2$ দিয়ে math — ম্যানুয়ালি render। দু'টি interleave করেই notebook readable হয়।
# Cell 1 — variable
x = 10
y = 20
# Cell 2 — গণনা (kernel state থেকে x, y এখনো পাবে)
total = x + y
print(f"Total = {total}")
# Cell 3 — last expression auto-display হয় (print ছাড়াই)
total ** 2
print() ছাড়াই। এই কারণে df.head() বা model.score() এক লাইনেই output দেখা যায়।
৩ · Jupyter local-এ install ও launch
নিজের কম্পিউটারে Jupyter চালাতে — Python install থাকলে এক command-এ install ও launch:
# (১) install — শুধু একবার
pip install notebook jupyterlab
# (২) launch — প্রতিবার কাজ শুরুর সময়
jupyter lab # আধুনিক, file browser সহ
# অথবা
jupyter notebook # classic interface
# (৩) ব্রাউজার auto-open হবে — http://localhost:8888
# (৪) New → Python 3 → প্রথম cell-এ:
print("Hello from Jupyter!")
jupyter lab-ই recommend।
৪ · Google Colab — install ছাড়া cloud notebook
Google ColabGoogle ColabGoogle-এর hosted Jupyter — ২০১৭-তে চালু। ফ্রি tier-এ T4 GPU, 12GB RAM, 100GB disk। Pro/Pro+ paid tier-এ A100/L4। ML কোর্স, কর্মশালা, prototyping-এর সবচেয়ে accessible platform। = Google-এর hosted Jupyter। শুধু Gmail অ্যাকাউন্ট লাগে। কোনো install নেই, GPU/TPU ফ্রি (limited time), Drive-এ auto-save। বাংলাদেশের ছাত্র-গবেষকদের জন্য — সেরা শুরু।
- লগইন:
colab.research.google.com→ "New Notebook"। - GPU on: Runtime → Change runtime type → Hardware accelerator → GPU।
- Drive mount:
from google.colab import drive; drive.mount('/content/drive')। - File upload: বাঁ-পাশের files icon → upload → drag-drop।
# Colab-এ আজই কাজ করে — কিছু install লাগে না
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
print("NumPy:", np.__version__)
print("Pandas:", pd.__version__)
# GPU check (Runtime → GPU on করার পর)
import subprocess
try:
out = subprocess.check_output(["nvidia-smi", "--query-gpu=name", "--format=csv"]).decode()
print("GPU:", out.strip())
except Exception:
print("GPU active নেই — Runtime মেনু থেকে on করুন")
import দিলেই চলে। GPU on করলে — DL training-এ ১০-২০× speedup।
৫ · কীবোর্ড শর্টকাট — গতি বাড়ান
Notebook-এ দুই mode — Edit (cell-এ লিখছেন) ও Command (cell select)। Esc দিয়ে command, Enter দিয়ে edit।
- Shift+Enter — cell run করে next-এ যান।
- Ctrl+Enter — cell run, একই জায়গায় থাকুন।
- A / B — উপরে / নিচে নতুন cell (command mode)।
- D, D — cell delete (পরপর দু'বার)।
- M / Y — Markdown / Code-এ convert।
- Z — undo cell delete।
- 00 — kernel restart।
৬ · Hidden state — সবচেয়ে বড় ফাঁদ
Notebook-এর সবচেয়ে কুখ্যাত সমস্যা — hidden stateHidden stateNotebook cell out-of-order run করলে kernel-এ এমন variable-state তৈরি হয় যা সরাসরি দেখা ফাইল থেকে বোঝা যায় না। ফাইল share করলে অন্যজন reproduce পারবে না — কারণ তার কাছে সেই hidden history নেই।। আপনি cell ১০ run, তারপর cell ৩ edit করে আবার run, তারপর cell ৭। Output সবগুলো সঠিক দেখাচ্ছে। কিন্তু অন্য কেউ ফাইল top-to-bottom run করলে — error। কারণ মাঝখানে কোনো ভেরিয়েবল order-এ define হয়নি।
.py বেছে নেবেন।৭ · Notebook → Script — কখন রূপান্তর করবেন
Notebook-এ exploration শেষ হলে — যে code stable, reusable, scheduled — সেটা .py ফাইলে নিয়ে যান। কারণ:
- Version control:
.ipynb= JSON, git diff পড়া কঠিন। - Testability:
pytestnotebook চালায় না সহজে। - Import: অন্য module থেকে notebook import করা যায় না সরাসরি।
- Production deploy: Airflow, Docker, Lambda —
.pyচাইলো।
jupyter nbconvert --to script my.ipynb — এক command-এ .py। তারপর function-এ ভাগ, test লিখুন।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ Joel Grus-এর বিখ্যাত talk "I Don't Like Notebooks" — কেন তিনি এত সমালোচনা করেন? Hidden state, version control, testing — তিন দিক থেকে notebook-এর দুর্বলতা বিশ্লেষণ করুন।
২০১৮-তে JupyterCon-এ Joel Grus (Data Science from Scratch-এর লেখক) দিলেন এক provocative talk — "I Don't Like Notebooks"। ৪০টি স্লাইডে notebook-এর সমস্যা গুনলেন। বিতর্ক উঠল, কিন্তু সমালোচনাগুলো বাস্তব।
(১) Hidden state — সবচেয়ে গভীর সমস্যা:
- Cell run order ≠ cell display order। আপনি ৫ → ২ → ৭ run করেছেন, কিন্তু file-এ ১,২,৩,৪,৫,৬,৭ ক্রমে দেখাচ্ছে।
- একটি ভেরিয়েবল আপনি ১০ মিনিট আগে define করেছেন, পরে cell মুছে ফেলেছেন — কিন্তু kernel এখনো ধরে রেখেছে।
- Result: notebook "কাজ করছে" আপনার কাছে, কিন্তু colleague-এর কাছে error।
- "Restart & Run All" — গণিতের প্রমাণের মতো, প্রতিবার করতে হবে।
(২) Version control নরক:
.ipynb= JSON ফাইল, যাতে cell metadata, execution_count, output cache, base64-encoded images সব আছে।git diff-এ ১ লাইন code change দেখাবে ৩০০ লাইন diff (output bytes change হলে)।- Merge conflict অপ্রতিরোধ্য — output binary মার্জ অসম্ভব।
- Tools:
nbstripout(output strip on commit),nbdime(semantic diff/merge),jupytext(auto-pair with.py/.md) — সবই workaround।
(৩) Testing প্রায় অসম্ভব:
- Function notebook-এর মাঝে define হলে — pytest-এ import করতে hack লাগে।
- Cell-এ side-effect (file read, plot display) — unit test purity ভাঙে।
- CI pipeline-এ notebook চালানো ব্যয়বহুল, slow।
papermill,nbval— testing framework আছে, কিন্তুpytest-এর সরলতার ধারে-কাছে নেই।
আরও সমালোচনা:
- IDE বৈশিষ্ট্য দুর্বল: refactor, jump-to-definition, type-checking — VS Code, PyCharm-এর কাছাকাছি না।
- Out-of-order encourages bad habit: নতুন developer-রা "kernel state" mental model build করে — যা production-এ harmful।
- Reproducibility crisis: ICML/NeurIPS paper-এর notebook, একদম অন্যজন run করলে — ৬০%+ ক্ষেত্রে fail (২০২০ Pimentel et al.)।
- Data leakage: exploration-এ test set দেখে fit; পরে production-এ কেউ ধরবে না।
তবু কেন থাকছে:
- EDA-র জন্য বিকল্প নেই — narrative + plot + code একসাথে।
- Teaching tool হিসেবে অনন্য — student step-by-step দেখে।
- Demo, presentation — stakeholder-এর কাছে narrative storytelling।
আধুনিক উত্তর:
- Marimo (২০২৪): reactive notebook — out-of-order সমস্যা নেই, dependency graph থেকে auto-rerun।
- Quarto: RMarkdown-inspired, Jupyter ব্যবহার করে কিন্তু source
.qmd— diff-friendly। - Jupytext: notebook-কে paired
.py-এ auto-sync — git-এ.pycommit। - Databricks/Hex/Deepnote: commercial — collaborative, version-controlled notebook।
মূল উপলব্ধি: Notebook এক অসাধারণ exploration tool, কিন্তু production code-এর substitute না। Joel Grus-এর সমালোচনা — "notebook ব্যবহার বন্ধ করো" না, বরং "এর সীমা চিনে ব্যবহার করো"। Mature data scientist দু'টোই use করেন — context-অনুযায়ী।
প্র ০২ Colab free tier-এর 12-hour session timeout, RAM limit, GPU queue — কেন? Pro/Pro+ কখন worth it? বাংলাদেশ-এর গবেষকের জন্য বিকল্প cloud GPU কী?
Google Colab-কে Google ক্ষতিতে চালায় — প্রতি GPU-hour-এর AWS-rate ~$0.5-3। ফ্রি tier-এ মাসে কোটি ব্যবহারকারীকে এত compute দিতে গিয়ে — কিছু কঠোর সীমা থাকতেই হবে।
Free tier-এর মূল সীমা:
- Session timeout: Idle হলে ৯০ মিনিট, max ১২ ঘণ্টা connect থাকে।
- RAM: ১২ GB (high-RAM rare)। বড় ডেটাসেটে out-of-memory।
- Disk: ১০০ GB scratch — session শেষে মুছে যায়।
- GPU: T4 — যখন available; usage বেশি হলে CPU-only নামিয়ে দেয়।
- Daily quota: অস্বচ্ছ — heavy ব্যবহারে ১২-২৪ ঘণ্টা cooldown।
কেন এই সীমা:
- Crypto mining আটকানো — GPU illegitimately use।
- Deep learning model training-এ ১২+ hour লাগে — paid tier-এ যাওয়ার incentive।
- Resource fairly বণ্টন — পৃথিবী-জুড়ে শিক্ষার্থীদের।
Pro ($10/month) — কখন worth:
- প্রায়ই GPU দরকার (সপ্তাহে ৫+ ঘণ্টা)।
- Background execution — বন্ধ ল্যাপটপেও training চলবে।
- Faster GPU (V100/A100 মাঝে মাঝে)।
- RAM ২৫ GB।
- Longer runtime (২৪ hour)।
Pro+ ($50/month):
- Priority GPU access — A100 প্রায়ই available।
- Compute units ৫০০, terminal access।
- সিরিয়াস research-এর জন্য।
বাংলাদেশের গবেষকের জন্য বিকল্প:
- Kaggle Notebooks: ৩০ ঘণ্টা/সপ্তাহ free GPU (P100/T4)। Dataset hosting integrated।
- Lightning AI Studios: ২২ free GPU hours/month।
- Paperspace Gradient: ফ্রি tier আছে, paid hourly।
- Modal/Replicate/RunPod: serverless GPU — pay per second।
- Vast.ai: spot-priced consumer GPU (RTX 3090/4090) — অর্ধেক দামে।
- SAIL Bangladesh / BRAC IT lab: on-prem GPU server — local institutional।
- Hugging Face Spaces: demo hosting + zero-GPU shared।
Cost optimization tips:
- Mixed precision (FP16) — অর্ধেক memory, ১.৫× speed।
- Gradient checkpointing — বেশি batch, কম memory।
- Pretrained model + fine-tune — scratch থেকে train না।
- Subset দিয়ে dev, full data দিয়ে final।
- WandB/MLflow দিয়ে track — failed run আবার চালাতে হবে না।
মূল উপলব্ধি: Colab free = "শিখতে অপ্রতিরোধ্য, production-এ অপর্যাপ্ত"। সিরিয়াস কাজে — Kaggle (data) + Colab Pro (compute) + Drive (storage) — মাসে ~$10-এ পূর্ণ stack। আরও বড় কাজে — institutional GPU বা commercial cloud।
প্র ০৩
Notebook-এ secrets — API key, password — accidentally commit হয়ে যায় বহু developer-এর। কেন এটা এত বিপজ্জনক? .env, secret manager, git history scrub — সম্পূর্ণ defence কী?
GitHub-এ প্রতিদিন হাজার-হাজার AWS key, OpenAI token leak হয়। অনেকেই notebook থেকে। কারণ — exploration-এ "একবার hardcode করি, পরে সরাব" → পরে ভুলে যায় → commit।
কেন secret leak এত বিপজ্জনক:
- GitHub public repo-এ পুশ হলে — secret scanner bot ১ মিনিটে ধরে। Hacker সেকেন্ডে।
- OpenAI API key leak — ১০০০-$ক্ষতি কয়েক ঘণ্টায়। আপনার অ্যাকাউন্টে bill।
- AWS key — EC2 instance spin up, crypto mining → ১০-৫০ হাজার ডলারের bill ঘন্টায়।
- DB credential — data exfiltration, GDPR violation।
- Git history-এ লুকানো — শুধু latest commit মুছলেও পুরোনো commit-এ থাকে।
git filter-branchবা BFG Repo-Cleaner লাগে।
সম্পূর্ণ defence — পাঁচ স্তর:
(১) Code-এ কখনো hardcode না:
- ❌
API_KEY = "sk-abc123..." - ✅
API_KEY = os.environ["OPENAI_API_KEY"]
(২) Local-এ .env file:
.envfile-এOPENAI_API_KEY=sk-....gitignore-এ.envঅবশ্যই add।python-dotenvদিয়ে load:from dotenv import load_dotenv; load_dotenv()।
(৩) Colab-এ Secrets feature (২০২৩+):
- বাঁ-পাশের 🔑 icon → Add secret।
from google.colab import userdata; key = userdata.get('OPENAI_API_KEY')- Notebook share করলেও secret share হয় না।
(৪) Cloud secret manager — production:
- AWS Secrets Manager, GCP Secret Manager, Azure Key Vault।
- HashiCorp Vault — multi-cloud।
- Application IAM role দিয়ে fetch — কোনো credential code-এ না।
(৫) Pre-commit hook — accidental leak ধরে:
detect-secretsবাgitleaks— pre-commit hook হিসেবে।- Pattern match করে — AWS key format, OpenAI
sk-prefix, JWT token ইত্যাদি। - Commit আটকায় leak হবার আগে।
যদি leak হয়ে যায় — emergency response:
- সাথে সাথে key revoke (provider console-এ)। নতুন key generate।
- সব deployment-এ নতুন key — আগে, তারপর git history clean।
- BFG Repo-Cleaner বা
git filter-repoদিয়ে git history থেকে মুছুন। - Force push (সব collaborator-কে জানিয়ে)।
- Provider-এর audit log দেখুন — abuse হয়েছে কি না।
- Public repo হলে — leak detected হয়েছে ধরে নিন। key changed না করলে চলবে না।
Notebook-specific extra precaution:
nbstripout— pre-commit-এ output strip। কারণprint(api_key)output-এও থাকতে পারে।- Output cell-এ token কখনোই print না।
- Share-এর আগে — Restart, Run All, output check।
Bangladesh-এর developer-দের জন্য বিশেষ সতর্কতা:
- Public repo-এ class assignment — supervisor-এর OpenAI key paste করে দিল ছাত্র — bill $5000।
- BB-এর payment gateway test credentials git-এ — fraud risk।
- Government API, NID API — leak হলে আইনগত পরিণতি।
মূল উপলব্ধি: Secret leak ১% mistake, ৯৯% ক্ষতি। এক leak-এ career, কোম্পানি, সম্পর্ক ক্ষতি। তাই — নীতি: hardcode নয়, কখনো নয়। প্রথম দিন থেকেই .env + secret manager habit। Tooling দিয়ে human error remove।
প্র ০৪ Reactive notebook (Marimo, Pluto, Observable) — traditional Jupyter-এর সমস্যাগুলোর কীভাবে সমাধান করে? কেন তবু Jupyter dominate করছে?
Hidden state — notebook-এর জন্মগত পাপ। ২০১৪-র Jupyter design-এ "cell run order = display order" এর কোনো guarantee নেই। ২০২০-র দশকে এই সমস্যা সমাধানে এক ঢেউ — reactive notebook।
Reactive notebook কী:
- Cell-গুলোর মধ্যে dependency graph tracked।
- একটি cell update হলে — সব dependent cell auto-rerun।
- Cell order matter করে না — graph determine করে execution order।
- "Out-of-order execution" সমস্যা গণিতিকভাবে নিষিদ্ধ।
প্রধান reactive notebooks:
- Observable (২০১৯, Mike Bostock): JavaScript-based, web-first। D3.js-এর জনক-এর কাজ। Static visualization-এর জন্য চমৎকার, কিন্তু Python ecosystem নেই।
- Pluto.jl (২০২০): Julia-র জন্য। প্রতিটি variable একবারই define — duplicate disallow। Reactivity built-in।
-
Marimo (২০২৩): Python reactive notebook। File
.py(git-friendly!), AST-from-source dependency analysis। dataflow + UI element + deployable as web app। - Streamlit/Gradio: notebook না — কিন্তু reactive principle। Form-based ML demo-র জন্য।
Marimo-র innovation:
- File
.py— git diff পুরোপুরি স্বাভাবিক। - Variable shadowing forbidden — same name দু'বার define হলে error।
- Slider, dropdown widget reactive — change-এ dependent cell auto-rerun।
marimo editnotebook UI;marimo runstandalone web app।- Imports, functions, plots — সবই pure Python।
সুবিধাগুলো:
- Hidden state সমস্যা ০।
- Reproducibility default।
- Git workflow চমৎকার।
- Production deploy সহজ — same file।
- Python — আগের knowledge transfer।
তবু Jupyter কেন dominate করছে:
- Network effect: ১০ বছরের ecosystem — extensions, kernel (R, Julia, Scala), JupyterHub multi-user। নতুন এসে replace করা কঠিন।
- Familiarity: সব tutorial, কোর্স, paper — Jupyter। Switch cost বিশাল।
- Free-form flexibility: reactive constraint কখনো কখনো অস্বস্তিকর — exploratory, scratch কাজে।
- Cell-by-cell debugging: Hidden state সুবিধাও — variable inspect, কোনো cell skip করা যায়।
- Industry inertia: Databricks, SageMaker, Colab — সবই Jupyter-protocol-based।
Hybrid future:
- Jupyter — exploration, teaching, EDA।
- Marimo/Pluto — production-bound prototype, deploy-ready dashboard।
.pymodule — stable library code।- Streamlit — quick demo।
২০২৬-এর প্রবণতা:
- Jupyter team নিজেই reactivity-র দিকে যাচ্ছে — JupyterLab Reactive extension।
- Quarto + Jupytext — diff-friendly source format।
- AI assistance (Copilot, Cursor) — notebook-এ integrate হচ্ছে।
মূল উপলব্ধি: Innovation আসে, technical superiority থাকে — কিন্তু adoption-এ ecosystem, habit, switch cost জিতে। Marimo/Pluto আজ দারুণ বিকল্প — কিন্তু "Jupyter is dead" বলা ভুল। আগামী ৫-১০ বছরে coexistence; সম্ভবত reactive principle Jupyter-এ merge। Tool বদলায়, principle থাকে — explicit dependency, reproducibility, version-friendly source।
অনুশীলন
-
Setup: নিজের কম্পিউটারে JupyterLab install ও launch করুন। অথবা Colab-এ login করে নতুন notebook খুলুন।
# Local pip install jupyterlab jupyter lab # Colab # colab.research.google.com → New Notebookপ্রথম cell-এ লিখুন
print("Hello")এবং Shift+Enter চাপুন। -
Hidden state demo: তিনটি cell বানান। Cell A-তে
x = 5, Cell B-তেy = x * 2; print(y), Cell C-তেx = 100। B → A → C → B order-এ run করুন। প্রতিবার output কী আসছে, ব্যাখ্যা করুন।- B প্রথম → NameError (x define হয়নি)।
- A → x=5 set।
- C → x=100 set।
- B আবার → y = 100*2 = 200।
এখন Restart Kernel → Run All — সবগুলো top-down চলে: x=5, y=10, x=100 → তখন B-এর output ১০। কোন order "right"? এখানেই hidden state-এর বিভ্রান্তি।
-
Markdown + math: একটি markdown cell বানান যেখানে heading, bullet list, এবং একটি গাণিতিক সূত্র (যেমন পাইথাগোরাস) থাকবে।
# আমার প্রথম Notebook ## আজকের কাজ - Jupyter চালু করেছি - Markdown শিখেছি - পাইথাগোরাসের সূত্র লিখেছি ## পাইথাগোরাস $$ a^2 + b^2 = c^2 $$ inline math: ভেক্টর $\mathbf{v} = (3, 4)$-এর দৈর্ঘ্য $\sqrt{25} = 5$।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ২০ · scikit-learn-এর সাথে পরিচয় পরবর্তী পাঠ পরিবেশ প্রস্তুত — এবার প্রথম ML library। Notebook-এই scikit-learn।
- পাঠ ১৮ · Seaborn — সুন্দর ডেটা ভিজ্যুয়াল আগের পাঠ EDA visualization — notebook-এর সাথে যেটা চলে সবচেয়ে ভাল।
- পাঠ ২২ · virtualenv ও pip এই পাঠের সাথে সম্পর্কিত Local Jupyter দিয়ে কাজ করতে — environment isolation শিখুন।
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।