gekro
GitHub LinkedIn
Infrastructure

Linux-এর সুবিধা: কেন AI কার্নেলে ভালো করে শ্বাস নেয়

8 মিনিটে পড়া যায়

এটি ইংরেজি মূল লেখাটির মেশিন অনুবাদ। কিছু সূক্ষ্মতা হারিয়ে যেতে পারে, তাই ইংরেজি সংস্করণই মূল রেফারেন্স। মূল ইংরেজি লেখাটি পড়ুন

সংক্ষেপে

কেন আমি Windows রেজিস্ট্রির এররের সঙ্গে লড়াই ছেড়ে আমার পুরো AI ইঞ্জিনিয়ারিং ল্যাব WSL2 ও Ubuntu Server-এ নিয়ে গেলাম।
Windows মানুষের জন্য দারুণ OS, কিন্তু এজেন্টদের জন্য দমবন্ধ করা পরিবেশ। আমি Gekro-কে WSL2/Ubuntu কোরে সরিয়ে নিয়েছি কারণ AI লাইব্রেরি POSIX-সঙ্গতিপূর্ণ হৃদয় প্রত্যাশা করে। এই লেখায় CUDA-পাসথ্রু সেটআপ খুলে বলা হয়েছে, আর কেন স্বয়ংক্রিয় সার্ভিসের ক্রমবর্ধমান বহর সামলানোর একমাত্র উপায় Linux-এ Docker।

আপনি যদি কোনো কনজিউমার অপারেটিং সিস্টেমে AI ল্যাব বানান, তাহলে আপনি দুই ফ্রন্টে যুদ্ধ করছেন: আপনার কোড আর আপনার OS। AI যুগে Linux হলো বুদ্ধিমত্তার মাতৃভাষা। আমি ছয় মাস জটিল Python ডিপেন্ডেন্সিকে Windows-এর পাথ আর DLL-এর সঙ্গে খাপ খাওয়াতে চেষ্টা করেছি, তারপর অবশেষে সত্যটা মেনে নিয়েছি: মডেলের ওয়েট যদি Linux ক্লাস্টারে ট্রেন হয়ে থাকে, তাহলে ইনফারেন্সও Linux কার্নেলেই হওয়া উচিত। DFW-তে হেডলেস Ubuntu ওয়ার্কফ্লোতে যাওয়ার মুহূর্ত থেকে আমার কোডের বদলে আমার অপারেটিং সিস্টেম নিয়ে যে ডিবাগিং হতো তা প্রায় পুরোপুরি বন্ধ হয়ে গেছে।

যে জিনিসটা সিদ্ধান্ত পাকা করল, সেটা হলো AI-জেনারেটেড PowerShell-কে ব্যর্থ হতে, আবার চেষ্টা করতে, আবার ব্যর্থ হতে আর এই করতে করতে টোকেন পোড়াতে দেখা। একবার নয়, একটা প্যাটার্ন হিসেবে। এটা আজও ঘটে, আর সেই কারণেই আমি এজেন্টের কাজে PowerShell ছেড়ে দিয়েছি, ঠিক করার চেষ্টা না করে।

আর্কিটেকচার

আমার ল্যাবে “Edge” মানে হার্ডওয়্যারে সরাসরি, মধ্যস্থতাহীন নাগাল। Windows আপনার কোড আর আপনার GPU-র মাঝখানে “Desktop Window Manager” (DWM)-এর বাড়তি ঝামেলার একটি স্তর জুড়ে দেয়। Linux দেয় হার্ডওয়্যার পাসথ্রু, যা বেয়ার মেটালের মতো লাগে।

বৈশিষ্ট্যWindows (নেটিভ)WSL2 (Ubuntu 22.04+)Ubuntu Server (বেয়ার মেটাল)
GPU অ্যাক্সেসDirectX / CUDA (ভারী)CUDA পাসথ্রু (প্রায় নেটিভ)সরাসরি CUDA (দ্রুততম)
I/O পারফরম্যান্সদ্রুত (NTFS)দ্রুত (VHDX-এর ভেতরে)অতি দ্রুত (ext4/zfs)
Docker ইঞ্জিনHyper-V VM (ধীর)WSL2 ব্যাকএন্ড (দক্ষ)নেটিভ Cgroups (তাৎক্ষণিক)
স্থিতিশীলতাস্বয়ংক্রিয় আপডেট (ঝুঁকি)ব্যবহারকারী-পরিচালিত99.9% আপটাইম

আমার ল্যাবে আমি WSL2-কে ব্যবহার করি “অপারেটর কনসোল” হিসেবে আর আমার Raspberry Pi ক্লাস্টারে Ubuntu Server-কে “প্রোডাকশন Edge” হিসেবে।

নির্মাণ

দ্রুতগতির AI পরিবেশ বানাতে শুধু apt install-এর চেয়ে বেশি কিছু লাগে। Windows-এর হার্ডওয়্যার আর Linux-এর লজিকের মধ্যে সেতু বানাতে হয়।

1. WSL2-তে CUDA চালু করা

Windows-ভিত্তিক ল্যাবের “গোপন মশলা” হলো NVIDIA-র WSL ড্রাইভার। এটি Linux কার্নেলকে আপনার PC-র GPU “দেখতে” দেয়, পূর্ণ ভার্চুয়াল মেশিনের বাড়তি বোঝা ছাড়াই।

# Verify GPU visibility inside WSL2
nvidia-smi

# If you see your GPU here, you're ready for local LLMs
# If not, you need to install the 'NVIDIA Game Ready' or 'Studio' driver on the Windows host.

2. Docker-AI স্ট্যাক

আমি হোস্টে কখনও pip প্যাকেজ ইনস্টল করি না। প্রতিটি মডেলের জন্য Docker কনটেইনার ব্যবহার করি। এতে “ডিপেন্ডেন্সি হেল” এড়ানো যায়, যেখানে একটি এজেন্টের লাগে Python 3.10 আর আরেকটির 3.12।

লোকাল Gekro নোডের জন্য docker-compose.yml:

services:
  ollama:
    image: ollama/ollama
    volumes:
      - ./ollama_data:/root/.ollama
    ports:
      - "11434:11434"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  summarizer-agent:
    build: ./agents/summarizer
    environment:
      - OLLAMA_HOST=http://ollama:11434
    depends_on:
      - ollama

3. WSL2 নোট: মেমরি ম্যানেজমেন্ট

ডিফল্টভাবে WSL2 আপনার সব Windows RAM খেয়ে ফেলার চেষ্টা করে। আমি এটাকে 16GB-এ সীমিত করি, যাতে Windows-এ আমার Tesla টেলিমেট্রি স্ক্রিপ্ট ক্র্যাশ না করে। আপনার ইউজার ফোল্ডারে একটি .wslconfig তৈরি করুন:

[wsl2]
memory=16GB
processors=8

সমঝোতা

কষ্টের কথা বলা যাক: সিমলিংক ও ফাইল পারফরম্যান্স। আপনি যদি আপনার কোড Windows-এর C: ড্রাইভে রাখেন কিন্তু WSL2-এর ভেতরে চালাতে যান, তাহলে 9P প্রোটোকলের অনুবাদের কারণে সেটা 10 গুণ ধীর হবে। আমার ভেক্টর ডেটাবেস কেন হামাগুড়ি দিচ্ছে ভাবতে ভাবতে আমি এক সপ্তাহের উৎপাদনশীলতা হারিয়েছি, তারপর বুঝেছি পুরো প্রজেক্ট ফোল্ডারটা Linux ফাইল সিস্টেমের ভেতরে (/home/rohit/gkro) নিয়ে যেতে হবে।

যেটা আমি মিস করি সেটা ইন্টারঅপারেবিলিটি। Windows-এ আমি স্ক্রিনের একদিকে আপডেট চলতে দিয়ে অন্যদিকে কাজ করতে পারতাম, কিংবা কোনো জেনারেটর চালু রেখে অন্য কিছু করতে চলে যেতে পারতাম। সেটা এখন অনেকাংশে নেই, আর এর কোনো পরিচ্ছন্ন বিকল্প আমি পাইনি।

মাইগ্রেশনটা নিজেই আমার প্রত্যাশার চেয়ে নরম ছিল। আমি ভেবেছিলাম নতুন সিস্টেম আমাকে আছাড় মারবে, আর বেশির ভাগ সময় তা হয়নি। অন্য সবকিছুর চেয়ে অনেক বেশি সময় লেগেছে ফাইল সিঙ্কে: OneDrive-কে ঠিকমতো চালানো এবং ফাইলগুলো Raspberry Pi-তে নির্ভরযোগ্যভাবে পৌঁছে দেওয়া। যেটা এখনও মিস করি সেটা মাসল মেমরি। Windows কমান্ডের দুই দশক চলে গেছে, আর Linux-এ স্বচ্ছন্দ হওয়া সেটা ফিরিয়ে দেয় না।

এ ছাড়া, VRAM একটি সীমিত সম্পদ। Windows-এ আমার Chrome-এ 50টি ট্যাব খোলা থাকলে সেটা WSL2-এ আমার Llama 3 ইনস্ট্যান্স থেকে VRAM চুরি করছে। হাইব্রিড পরিবেশে মেমরির নির্দয় সংগ্রাহক হতে শিখতে হয়।

আগামী দিনে

আমি এগোচ্ছি একটি সিঙ্গল-পেন-অফ-গ্লাস ম্যানেজমেন্ট লেয়ারের দিকে: Astro-তে বানানো একটি কাস্টম ড্যাশবোর্ড, যা আমার সব Linux নোডের (Pi ও PC) CPU/GPU তাপমাত্রা আর RAM ব্যবহার রিয়েল-টাইমে নজরে রাখে। লক্ষ্য হলো আমার বাড়ির নেটওয়ার্ককে একটি মিনি-AWS রিজিয়নের মতো দেখা, যেখানে OS কেবল একটি খুঁটিনাটি আর এজেন্টরাই প্রধান নাগরিক।

Rohit Burani

লেখক

Rohit Burani

AI ইঞ্জিনিয়ার, যিনি ল্যাব থেকে লোকাল-ফার্স্ট সিস্টেম, সেলফ-হোস্টেড অবকাঠামো এবং স্বয়ংক্রিয় টুল তৈরি করেন।

পড়ার জন্য ধন্যবাদ।

লেখাটি ভালো লাগলে আপনার নেটওয়ার্কের সঙ্গে শেয়ার করুন।

← ব্লগে ফিরে যান