আমরা যারা Python দিয়ে মেশিন লার্নিং করি, scikit-learn আমাদের অতি পরিচিত একটি লাইব্রেরি। সহজ API, বহুল ব্যবহৃত অ্যালগরিদম, আর pandas ও NumPy-এর সঙ্গে দারুণভাবে কাজ করে বলেই এটি এত জনপ্রিয়। তবে বড় ডেটাসেট নিয়ে কাজ করলে অনেক সময় ট্রেনিং ও প্রিডিকশন ধীরগতির হয়ে যায় — বিশেষ করে যখন শুধুমাত্র CPU ব্যবহার করা হয়।
এই সমস্যার সমাধান নিয়ে এসেছে NVIDIA cuML, যার নতুন আপডেটে এসেছে একটি ম্যাজিক ফিচার — Zero Code Change Acceleration। মানে, আপনার এক লাইন কোডও না বদলে, scikit-learn-এর পুরনো কোড GPU-তে আগের চেয়ে ৫০ গুণ পর্যন্ত দ্রুত চলবে!
💡 Zero Code Change — ব্যাপারটা কী?
NVIDIA cuML 25.02 ভার্সনে zero code change acceleration ফিচারটি cuml.accel নামে একটি মডিউল দিয়ে কাজ করে, যেখানে scikit-learn কোডে কোনো পরিবর্তন ছাড়াই সেটিকে GPU-তে রান করানো যায়।
আপনি একবার এটি লোড করলেই, আপনার scikit-learn কোড ব্যাকএন্ডে cuML দিয়ে GPU-তে এক্সিকিউট হয়। যেসব অ্যালগরিদম GPU-তে সাপোর্ট করে না, সেগুলো অটোমেটিকভাবে CPU-তে fallback করে।
⚙️ কোন কোন অ্যালগরিদম সাপোর্ট করে?
এই মুহূর্তে (বিটা ভার্সনে) যেসব অ্যালগরিদম zero code change দিয়ে GPU-তে চলে, তার মধ্যে রয়েছে:
Scikit-Study
- KMeans, DBSCAN
- RandomForestClassifier, RandomForestRegressor
- PCA, TruncatedSVD
- LinearRegression, LogisticRegression, Ridge, Lasso, ElasticNet
- KNeighborsClassifier, KNeighborsRegressor, NearestNeighbors
- t-SNE
- KernelRidge
UMAP-Study
HDBSCAN
🧪 ব্যবহার করবেন কীভাবে?
যদি আপনি Google Colab ব্যবহার করেন, তাহলে কিছুই ইনস্টল করতে হবে না — সব আগেই সেটআপ করা থাকে।
শুধু নোটবুকের শুরুতে লিখুন:
%load_ext cuml.accel
import sklearn
এরপর আগের মতোই আপনার কোড চালাতে পারবেন — No change!
🚀 পারফরম্যান্স কতটা ভালো?
NVIDIA H100 GPU দিয়ে টেস্ট করে দেখা গেছে:
Random Forest: 25x quicker
Linear Regression: 52x quicker
t-SNE: 50x quicker
UMAP: 60x quicker
HDBSCAN: 175x quicker
🧙 কিভাবে কাজ করে এই “ ম্যাজিক”?
cuml.accel মডিউলটি scikit-learn-এর উপর একটি প্রক্সি লেয়ার তৈরি করে। আপনি যখন একটি মডেল কল করেন, তখন এটি দেখে GPU-তে চালানো সম্ভব কি না। যদি সম্ভব হয়, তাহলে তা GPU-তে চালানো হয়। না হলে CPU fallback হয়।
এমনকি আপনি যদি কোনো থার্ড পার্টি লাইব্রেরি ব্যবহার করেন যেটা scikit-learn এর উপর তৈরি (যেমন: AutoML লাইব্রেরিগুলো), সেখানেও এটি কাজ করতে পারে।
আর বড় ডেটা নিয়ে কাজ করার সময় যদি GPU মেমোরি শেষ হয়ে যায়, cuML তখন CUDA Unified Reminiscence ব্যবহার করে — যার ফলে CPU ও GPU মেমোরি একসাথে ব্যবহার করে, যাতে মডেল বড় হলেও প্রোসেসিং বন্ধ না হয়।
❓ FAQ — যে প্রশ্নগুলো সবার মনে আসে
১. cuml.accel কেন ব্যবহার করব, যখন cuML নিজেই আছে?
কারণ cuml.accel আপনার পুরনো scikit-learn/umap-learn/hdbscan কোডে এক লাইনও পরিবর্তন ছাড়াই GPU এক্সিলারেট করে।
আপনার কোড ডেভেলপমেন্টে CPU-তে চলতে পারে, আবার প্রোডাকশনে GPU-তে — কোড না বদলে। একেবারে “plug & play” টাইপ সমাধান।
২. তাহলে কি cuML আর দরকার নেই?
আছে অবশ্যই। যদি আপনি পুরোপুরি GPU ফোকাসড কোনো সিস্টেম বানাচ্ছেন — যেখানে সবসময় GPU থাকবে — তখন সরাসরি cuML ব্যবহার করলে আরও টিউনিং করতে পারবেন।
মানে, cuml.accel হলো “straightforward shortcut” আর cuML হলো “customized freeway”।
৩. GPU মেমোরি নিয়ে কি চিন্তা করতে হবে?
না, কারণ cuml.accel নিজে থেকেই unified reminiscence ইউজ করে। দরকার হলে RAM দিয়ে GPU-কে হেল্প করে। তবে যদি ডেটা অনেক বড় হয়, আর মেমোরি লিমিট ছাড়িয়ে যায় — তখন OOM (Out of Reminiscence) হতে পারে।
পারফরম্যান্স কমে গেলে চাইলে — disable-uvm ফ্ল্যাগ দিয়ে unified reminiscence বন্ধ করে দেখতে পারেন।
৪. রেজাল্ট কি একদম আগের মতোই থাকবে?
প্রায়ই থাকে। মাঝে মাঝে floating level precision এর কারণে অল্প পার্থক্য হতে পারে — কারণ GPU-তে সব একসাথে চলে বলে অর্ডার বা প্রিসিশনে হালকা ডিফারেন্স হয়।
তবে Accuracy বা Last Consequence সাধারণত অপরিবর্তিত থাকে।
কোনো অ্যালগরিদমে পার্থক্য খুব বেশি হলে সেটা বাগ ধরে নিয়ে রিপোর্ট করতে পারেন।
৫. GPU-তে ট্রেন করলাম, কিন্তু inference চলবে CPU-তে — সেটা কি সম্ভব?
অবশ্যই! pickle বা joblib দিয়ে মডেল সেভ করে আপনি সেটিকে CPU-কম্প্যাটিবল করে নিতে পারেন:
python -m cuml.accel — convert-to-sklearn mannequin.pkl — format pickle — output model_cpu.pkl
এখন এই মডেলটি যেকোনো Python CPU environment-এ চলবে — GPU ছাড়াই।
✨পুরো লেখাটি ধৈর্য্যসহকারে পড়ার জন্য ধন্যবাদ। শেষ করছি প্রিয় একটি উক্তি দিয়ে।
“Velocity is helpful solely if you’re operating in the suitable route.” — Joel Barker
– Rakib Hossain Sajib
IBM Licensed Knowledge Science Skilled
Undergraduate Scholar,
Division of Laptop Science and Engineering,
Begum Rokeya College, Rangpur.