ডিস্ট্রিবিউটেড এমএল সার্ভিং স্কেলেবিলিটি এবং রেজিলিয়েন্সের জন্য একাধিক নোডে ইনফারেন্স ওয়ার্কলোড ছড়িয়ে দেয়, অন্যদিকে সেন্ট্রালাইজড মডেল সার্ভিং সরলতা এবং নিয়ন্ত্রণের জন্য একটি একক সিস্টেমে কম্পিউটকে কেন্দ্রীভূত করে। এদের মধ্যে কোনটি বেছে নেওয়া হবে তা ট্র্যাফিক প্যাটার্ন, ল্যাটেন্সির প্রয়োজনীয়তা এবং অপারেশনাল পরিপক্কতার উপর নির্ভর করে।
কেন্দ্রীভূত ব্যবস্থা পরিচালনগত জটিলতা কমায়, কিন্তু এতে ব্যর্থতার একটি একক ঝুঁকি তৈরি হয়।
ডিস্ট্রিবিউটেড আর্কিটেকচার লোড ব্যালান্সিংয়ের মাধ্যমে ট্র্যাফিকের আকস্মিক বৃদ্ধিকে আরও সুন্দরভাবে সামাল দেয়।
কেন্দ্রীয় পরিষেবা সাধারণত কম থেকে মাঝারি ট্র্যাফিকের ক্ষেত্রে আরও সামঞ্জস্যপূর্ণ লেটেন্সি প্রদান করে।
বিতরণকৃত এমএল পরিবেশন কী?
একটি সার্ভিং আর্কিটেকচার যা স্কেল এবং ফল্ট টলারেন্স সামাল দেওয়ার জন্য একাধিক মেশিন বা নোডে মডেল ইনফারেন্স পরিচালনা করে।
ইনফারেন্স ওয়ার্কলোডগুলো GPU বা CPU-এর ক্লাস্টার জুড়ে ভাগ করা হয়, যা অনুরোধের পরিমাণ বাড়ার সাথে সাথে হরাইজন্টাল স্কেলিংয়ের সুযোগ দেয়।
NVIDIA Triton Inference Server, Ray Serve, এবং TensorFlow Serving-এর মতো ফ্রেমওয়ার্কগুলো স্বয়ংক্রিয়ভাবে ডিস্ট্রিবিউটেড ডেপ্লয়মেন্ট প্যাটার্ন সমর্থন করে।
লোড ব্যালেন্সার আগত অনুরোধগুলিকে সবচেয়ে কম লোডযুক্ত নোডে পাঠিয়ে দেয়, যার ফলে ট্র্যাফিকের আকস্মিক বৃদ্ধির সময় টেইল ল্যাটেন্সি কমে আসে।
একটি নোড বিকল হয়ে গেলেও পুরো পরিষেবাটি বন্ধ হয়ে যায় না, কারণ বাকি নোডগুলো ট্র্যাফিক সামলে নেয়।
এর সাধারণ ব্যবহারগুলোর মধ্যে রয়েছে বৃহৎ ল্যাঙ্গুয়েজ মডেল ইনফারেন্স, রিকমেন্ডেশন সিস্টেম এবং রিয়েল-টাইম কম্পিউটার ভিশন পাইপলাইন।
কেন্দ্রীভূত মডেল পরিবেশন কী?
একটি প্রচলিত সার্ভিং সেটআপ যেখানে একটি মেশিন বা ছোট ক্লাস্টার মডেলটিকে হোস্ট করে এবং সমস্ত ইনফারেন্স অনুরোধ পরিচালনা করে।
সমস্ত ইনফারেন্স ট্র্যাফিক একটিমাত্র হোস্টের মাধ্যমে প্রবাহিত হয়, ফলে ডেপ্লয়মেন্ট এবং ডিবাগিং উল্লেখযোগ্যভাবে সহজ হয়ে যায়।
লেটেন্সি অনুমানযোগ্য থাকে, কারণ অনুরোধগুলি পরিষেবা প্রদানকারী নোডগুলির মধ্যে কখনও নেটওয়ার্ক হপ অতিক্রম করে না।
রিসোর্স পরিকল্পনা বেশ সহজ, কারণ এর ধারণক্ষমতা একটি মেশিনের হার্ডওয়্যার ফুটপ্রিন্টের সমান।
সাধারণ প্ল্যাটফর্মগুলোর মধ্যে রয়েছে রিভার্স প্রক্সির পেছনে থাকা Flask বা FastAPI অ্যাপ, অথবা একটি সিঙ্গেল-নোড MLflow সার্ভিং ইনস্ট্যান্স।
কম ট্র্যাফিকের অভ্যন্তরীণ টুল, ব্যাচ-স্টাইলের এপিআই, এবং এমন প্রোটোটাইপের জন্য সবচেয়ে উপযুক্ত, যেখানে পরিধির চেয়ে সরলতা বেশি গুরুত্বপূর্ণ।
তুলনা সারণি
বৈশিষ্ট্য
বিতরণকৃত এমএল পরিবেশন
কেন্দ্রীভূত মডেল পরিবেশন
স্থাপত্য শৈলী
একটি লোড ব্যালেন্সারের পিছনে একাধিক নোড
একক হোস্ট বা নিবিড়ভাবে সংযুক্ত ক্লাস্টার
পরিমাপযোগ্যতা
নোড সংখ্যা সহ অনুভূমিক, প্রায়-রৈখিক
উল্লম্ব, একক-মেশিন হার্ডওয়্যার দ্বারা সীমাবদ্ধ
ত্রুটি সহনশীলতা
উচ্চ, টিকে থাকা স্বতন্ত্র নোড ব্যর্থতা
নিম্ন, একক ব্যর্থতার বিন্দু
অপারেশনাল জটিলতা
উচ্চতর, এর জন্য সমন্বয় ও পর্যবেক্ষণ প্রয়োজন।
কম ওজন, স্থাপন এবং ডিবাগ করা সহজ
সাধারণ লেটেন্সি প্রোফাইল
পরিবর্তনশীল, থ্রুপুটের জন্য অপ্টিমাইজ করা
সামঞ্জস্যপূর্ণ, পূর্বাভাসযোগ্যতার জন্য অপ্টিমাইজ করা
সেরা
উচ্চ QPS, বড় মডেল, উৎপাদন ট্র্যাফিক
কম থেকে মাঝারি ট্র্যাফিক, প্রোটোটাইপ, অভ্যন্তরীণ সরঞ্জাম
ব্যয় মডেল
উচ্চতর ভিত্তিরেখা, চাহিদার সাথে সামঞ্জস্যপূর্ণ।
নিম্ন ভিত্তি, নির্দিষ্ট ক্ষমতা
সাধারণ কাঠামো
Triton, Ray Serve, KServe, BentoML
FastAPI, Flask, MLflow, একক-নোড TF Serving
বিস্তারিত তুলনা
পরিমাপযোগ্যতা এবং থ্রুপুট
যখন ট্র্যাফিক একটিমাত্র মেশিনের ধারণক্ষমতা ছাড়িয়ে যায়, তখন ডিস্ট্রিবিউটেড সার্ভিং বিশেষভাবে কার্যকর হয়। আরও রেপ্লিকা বা শার্ড যোগ করলে লোড ভাগ হয়ে যায় এবং হঠাৎ ট্র্যাফিক বেড়ে গেলেও রেসপন্স টাইম স্থিতিশীল থাকে। অন্যদিকে, সেন্ট্রালাইজড সার্ভিং হোস্টের সরবরাহ ক্ষমতার মধ্যেই থ্রুপুট সীমাবদ্ধ রাখে, তাই স্কেলিং করার জন্য আরও নোড যোগ করার পরিবর্তে একটি বড় মেশিন কিনতে হয়।
ত্রুটি সহনশীলতা এবং নির্ভরযোগ্যতা
যখন একটি ডিস্ট্রিবিউটেড ক্লাস্টারের কোনো নোড ক্র্যাশ করে, তখন ট্র্যাফিক স্বয়ংক্রিয়ভাবে অন্য পথে চালিত হয় এবং পরিষেবাটি অনলাইন থাকে। সেন্ট্রালাইজড সেটআপে এমন কোনো সুরক্ষা ব্যবস্থা থাকে না, তাই হার্ডওয়্যার ব্যর্থতা বা কার্নেল প্যানিকের কারণে কেউ হস্তক্ষেপ না করা পর্যন্ত পুরো এপিআই-টি অফলাইন হয়ে যায়। অত্যন্ত গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলোর জন্য, ব্যর্থতার এই একক উৎসটি প্রায়শই একটি বড় বাধা হয়ে দাঁড়ায়।
পরিচালন উপরি ব্যয়
একটি ডিস্ট্রিবিউটেড সিস্টেম চালানোর অর্থ হলো এর বিভিন্ন চলমান অংশ জুড়ে সার্ভিস ডিসকভারি, হেলথ চেক, অটোস্কেলিং রুলস এবং অবজার্ভেবিলিটি পরিচালনা করা। ছোট দলগুলোর জন্য সেন্ট্রালাইজড সার্ভিং অনেক বেশি সুবিধাজনক, কারণ একটি মেশিনের একটি প্রসেস পর্যবেক্ষণ করা এবং সে সম্পর্কে ধারণা লাভ করা অনেক সহজ। এর অসুবিধা হলো, আজকের এই সরলতাই আগামীকালের জন্য একটি প্রতিবন্ধকতা হয়ে দাঁড়াতে পারে।
লেটেন্সি বৈশিষ্ট্য
ডিস্ট্রিবিউটেড সেটআপে কখনও কখনও লোড ব্যালান্সারের মাধ্যমে একটি ছোট নেটওয়ার্ক হপ যোগ হয়, কিন্তু এগুলো প্রতি নোডে কিউ ডেপথও কমিয়ে দেয়, যা প্রায়শই লোডের অধীনে টেইল ল্যাটেন্সি উন্নত করে। সেন্ট্রালাইজড সার্ভিং এই অতিরিক্ত হপটি সম্পূর্ণরূপে এড়িয়ে যায়, ফলে কম ট্র্যাফিকের সময় আপনি খুব সামঞ্জস্যপূর্ণ ল্যাটেন্সি পান। তবে, বেশি ট্র্যাফিকের সময় একক হোস্টে কিউ তৈরি হতে থাকে এবং p99 ল্যাটেন্সি দ্রুত খারাপ হয়ে যায়।
ব্যয় এবং সম্পদ দক্ষতা
ডিস্ট্রিবিউটেড সার্ভিং আপনাকে অটোস্কেলিংয়ের মাধ্যমে চাহিদা অনুযায়ী সক্ষমতা মেলাতে দেয়, ফলে কাজের চাপ কম থাকার সময়ে আপনি কেবল যতটুকু ব্যবহার করেন, তার জন্যই অর্থ প্রদান করেন। সেন্ট্রালাইজড সার্ভিংয়ের ক্ষেত্রে আগে থেকেই সর্বোচ্চ লোডের জন্য ব্যবস্থা করতে হয়, যার ফলে হার্ডওয়্যার বেশিরভাগ সময়ই অলস পড়ে থাকতে পারে। অনুমানযোগ্য এবং কম পরিমাণের কাজের চাপের জন্য, সেন্ট্রালাইজড পদ্ধতিটি সাধারণত সামগ্রিকভাবে সস্তা হয়।
সুবিধা এবং অসুবিধা
বিতরণকৃত এমএল পরিবেশন
সুবিধাসমূহ
+অনুভূমিক পরিমাপযোগ্যতা
+অন্তর্নির্মিত ত্রুটি সহনশীলতা
+হঠাৎ ট্র্যাফিকের চাপ সামলায়
+বড় মডেল সমর্থন করে
কনস
−উচ্চতর পরিচালনগত জটিলতা
−কম ট্র্যাফিকের সময় দাম বেশি
−অর্কেস্ট্রেশন টুলিং প্রয়োজন
−ডিবাগ করা আরও কঠিন
কেন্দ্রীভূত মডেল পরিবেশন
সুবিধাসমূহ
+স্থাপন করা সহজ
+পূর্বাভাসযোগ্য বিলম্ব
+নিম্ন ভিত্তি খরচ
+ডিবাগ করা সহজ
কনস
−ব্যর্থতার একক বিন্দু
−সীমিত উল্লম্ব স্কেলিং
−কম লোডে নিষ্ক্রিয় ক্ষমতা
−স্পাইকের নিচে প্রতিবন্ধকতা
সাধারণ ভুল ধারণা
পুরাণ
বিকেন্দ্রীভূত পরিবেশন সর্বদা কেন্দ্রীভূত পরিবেশনের চেয়ে দ্রুততর।
বাস্তবতা
গতি নির্ভর করে কাজের চাপ এবং কনফিগারেশনের উপর। কম ট্র্যাফিকের সময়, ডিস্ট্রিবিউটেড সেটআপে অতিরিক্ত নেটওয়ার্ক হপ আসলে ল্যাটেন্সি বাড়িয়ে দিতে পারে, যেখানে একটি ভালোভাবে টিউন করা সেন্ট্রালাইজড সার্ভার দ্রুত সাড়া দিতে পারে। ভারী লোডের অধীনে, ডিস্ট্রিবিউটেড সার্ভিং থ্রুপুট এবং টেইল ল্যাটেন্সির দিক থেকে এগিয়ে থাকে, কিন্তু এর মূল গতি সবসময় সুবিধাজনক হয় না।
পুরাণ
কেন্দ্রীভূত পরিষেবা ব্যবস্থা কোনোভাবেই সম্প্রসারণযোগ্য নয়।
বাস্তবতা
আরও বেশি মেমরি এবং জিপিইউ সহ বড় মেশিনে আপগ্রেড করার মাধ্যমে কেন্দ্রীভূত সেটআপগুলোকে উল্লম্বভাবে স্কেল করা যায়। অনেক প্রোডাকশন সিস্টেম ডিস্ট্রিবিউশনের প্রয়োজন হওয়ার আগে বছরের পর বছর ধরে সফলভাবে কেন্দ্রীভূত সার্ভিং চালায়। সীমাবদ্ধতাটি হার্ডওয়্যারে, আর্কিটেকচারে নয়।
পুরাণ
বন্টনমূলক পরিবেশনের ফলে পর্যবেক্ষণের প্রয়োজন হয় না।
বাস্তবতা
ডিস্ট্রিবিউটেড সিস্টেমে আসলে কম নয়, বরং আরও বেশি মনিটরিং প্রয়োজন। সমস্যাগুলো আগেভাগে ধরার জন্য আপনাকে প্রতিটি নোডের স্বাস্থ্য, রিকোয়েস্ট রাউটিং, রেপ্লিকা সংখ্যা এবং ক্লাস্টার-ব্যাপী লেটেন্সি ট্র্যাক করতে হবে। পর্যবেক্ষণযোগ্যতা ছাড়া ব্যর্থতা নির্ণয় করা অনেক বেশি কঠিন হয়ে পড়ে।
পুরাণ
সকল এমএল মডেলই ডিস্ট্রিবিউটেড সার্ভিং থেকে উপকৃত হয়।
বাস্তবতা
কম ট্র্যাফিকযুক্ত ছোট মডেলগুলো প্রায়শই একটিমাত্র মেশিনেই পুরোপুরি ভালোভাবে চলে। এগুলোকে ভাগ করে দিলে উল্লেখযোগ্য পারফরম্যান্সের উন্নতি ছাড়াই খরচ ও জটিলতা বাড়ে। মূলত বড় মডেল, উচ্চ QPS (কোয়ালিটি পার সেকেন্ড) বা কঠোর প্রাপ্যতার প্রয়োজনীয়তার ক্ষেত্রেই বিতরণ লাভজনক হয়।
পুরাণ
কেন্দ্রীভূত পরিষেবা একটি সেকেলে প্রযুক্তি।
বাস্তবতা
বাস্তব জগতের অনেক ডেপ্লয়মেন্টের জন্য, বিশেষ করে অভ্যন্তরীণ এপিআই, ব্যাচ ইনফারেন্স জব এবং প্রাথমিক পর্যায়ের প্রোডাক্টের ক্ষেত্রে, সেন্ট্রালাইজড সার্ভিং এখনও ডিফল্ট হিসেবে রয়ে গেছে। এটি অপ্রচলিত নয়; এটি কেবল ভিন্ন ধরনের সমস্যার জন্য সঠিক সমাধান।
সচরাচর জিজ্ঞাসিত প্রশ্নাবলী
ডিস্ট্রিবিউটেড এবং সেন্ট্রালাইজড এমএল সার্ভিংয়ের মধ্যে প্রধান পার্থক্য কী?
ডিস্ট্রিবিউটেড এমএল সার্ভিং একটি লোড ব্যালান্সারের মাধ্যমে সংযুক্ত একাধিক মেশিনে ইনফারেন্স ছড়িয়ে দেয়, অন্যদিকে সেন্ট্রালাইজড সার্ভিং সবকিছু একটিমাত্র হোস্টে চালায়। ডিস্ট্রিবিউটেড পদ্ধতি স্কেল এবং স্থিতিস্থাপকতাকে অগ্রাধিকার দেয়, অপরদিকে সেন্ট্রালাইজড পদ্ধতি সরলতা এবং অনুমানযোগ্য লেটেন্সিকে অগ্রাধিকার দেয়।
আমার কখন ডিস্ট্রিবিউটেড এমএল সার্ভিং ব্যবহার করা উচিত?
যখন আপনি বিপুল সংখ্যক অনুরোধ সামলান, একটি মেশিনের জন্য খুব বড় মডেল চালান, অথবা উচ্চ প্রাপ্যতা (high availability) প্রয়োজন হয়, তখন ডিস্ট্রিবিউটেড সার্ভিং একটি কার্যকর সমাধান। এছাড়াও, যখন ট্র্যাফিকের ধরন হঠাৎ করে বেড়ে যায় এবং আপনি রিয়েল-টাইমে চাহিদা অনুযায়ী অটোস্কেলিং চান, তখনও এটি একটি সঠিক বিকল্প।
প্রোডাকশনে কি এখনও সেন্ট্রালাইজড মডেল সার্ভিং ব্যবহার করা হয়?
হ্যাঁ, এখনও অনেক প্রোডাকশন সিস্টেম কেন্দ্রীভূত সার্ভিংয়ের উপর নির্ভর করে, বিশেষ করে অভ্যন্তরীণ টুল, কম-ট্র্যাফিকের এপিআই এবং ব্যাচ ইনফারেন্সের জন্য। অনেক টিম কেন্দ্রীভূত পদ্ধতিতে কাজ শুরু করে এবং কেবল তখনই ডিস্ট্রিবিউটেড পদ্ধতিতে স্থানান্তরিত হয়, যখন ট্র্যাফিক বা মডেলের আকার তা করতে বাধ্য করে।
কোন পদ্ধতিটি বেশি সাশ্রয়ী?
কম ট্র্যাফিকের সময় কেন্দ্রীভূত পরিষেবা সাধারণত সস্তা হয়, কারণ আপনাকে কেবল একটি মেশিনের জন্য অর্থ প্রদান করতে হয়। যখন ট্র্যাফিক হরাইজন্টাল স্কেলিং-এর যৌক্তিকতা প্রমাণ করে, তখন বিকেন্দ্রীভূত পরিষেবা সাশ্রয়ী হয়ে ওঠে, কারণ অটোস্কেলিং আপনাকে প্রকৃত চাহিদার সাথে ব্যয় সামঞ্জস্য করতে দেয়।
উভয়ের মধ্যে ফল্ট টলারেন্সের পার্থক্য কী?
ডিস্ট্রিবিউটেড সার্ভিং কোনো একটি নোড বিকল হলেও টিকে থাকে, কারণ ট্র্যাফিক সচল রেপ্লিকাগুলোতে পুনঃনির্দেশিত হয়। সেন্ট্রালাইজড সার্ভিং-এ ব্যর্থতার একটিমাত্র উৎস থাকে, তাই যেকোনো হার্ডওয়্যার বা সফটওয়্যার ক্র্যাশের ফলে হোস্টটি পুনরুদ্ধার না হওয়া পর্যন্ত পুরো এপিআই-টি অফলাইন হয়ে যায়।
কোন ফ্রেমওয়ার্কগুলো ডিস্ট্রিবিউটেড এমএল সার্ভিং সমর্থন করে?
জনপ্রিয় বিকল্পগুলোর মধ্যে রয়েছে এনভিডিয়া ট্রাইটন ইনফারেন্স সার্ভার, রে সার্ভ, কেসার্ভ, বেন্টোএমএল, এবং ক্লাস্টার মোডে টেনসরফ্লো সার্ভিং। এগুলোর বেশিরভাগই কেন্দ্রীভূত ডেপ্লয়মেন্টও সমর্থন করে, ফলে আপনি ছোট পরিসরে শুরু করে পরে এর পরিধি বাড়াতে পারেন।
আমি কি বিকেন্দ্রীভূত এবং কেন্দ্রীভূত পরিষেবা একসাথে ব্যবহার করতে পারি?
অবশ্যই। অনেক দল কম অগ্রাধিকারের কাজের জন্য একটি কেন্দ্রীভূত ব্যবস্থা এবং লেটেন্সি-সংবেদনশীল বা উচ্চ-ট্র্যাফিকের মডেলগুলোর জন্য একটি ডিস্ট্রিবিউটেড ক্লাস্টার ব্যবহার করে। হাইব্রিড আর্কিটেকচার বেশ প্রচলিত এবং এটি আপনাকে প্রতিটি পরিষেবার জন্য খরচ ও নির্ভরযোগ্যতার মধ্যে ভারসাম্য বজায় রাখতে সাহায্য করে।
ডিস্ট্রিবিউটেড সার্ভিং কি সবসময় ল্যাটেন্সি কমায়?
সবসময় নয়। কম ট্র্যাফিকের সময়, লোড ব্যালান্সারের মধ্য দিয়ে অতিরিক্ত নেটওয়ার্ক হপের কারণে কয়েক মিলিসেকেন্ড সময় লাগতে পারে। তবে, ভারী লোডের অধীনে, ডিস্ট্রিবিউটেড সার্ভিং প্রতি নোডে কিউ ডেপথ কমিয়ে দেয় এবং সাধারণত টেইল ল্যাটেন্সি উল্লেখযোগ্যভাবে উন্নত করে।
আমি কীভাবে কেন্দ্রীভূত পরিষেবা থেকে বিকেন্দ্রীভূত পরিষেবায় স্থানান্তরিত হব?
প্রথমে আপনার মডেলটিকে কন্টেইনারাইজ করুন এবং এটিকে দুই বা তিনটি রেপ্লিকাসহ একটি লোড ব্যালান্সারের পেছনে রাখুন। ধীরে ধীরে ট্র্যাফিক স্থানান্তর করার আগে হেলথ চেক, অটোস্কেলিং রুল এবং সেন্ট্রালাইজড লগিং যোগ করুন। বেশিরভাগ সার্ভিং ফ্রেমওয়ার্ক এই রূপান্তরটিকে বেশ সহজ করে তোলে।
আর্কিটেকচার নির্বাচনে জিপিইউ মেমরির ভূমিকা কী?
যদি আপনার মডেলটি একটিমাত্র জিপিইউ-এর মেমরিতে স্বাচ্ছন্দ্যে এঁটে যায়, তবে কেন্দ্রীভূত সার্ভিং প্রায়শই সবচেয়ে সহজ উপায়। যখন মডেলটি একটি জিপিইউ ছাড়িয়ে যায় অথবা আপনাকে একই সাথে অনেকগুলো অনুরোধ পরিচালনা করতে হয়, তখন মডেল শার্ডিং বা টেনসর প্যারালেলিজম সহ বিতরণকৃত সার্ভিং অপরিহার্য হয়ে পড়ে।
রায়
যখন আপনি উচ্চ অনুরোধের পরিমাণ আশা করেন, ফল্ট টলারেন্সের প্রয়োজন হয়, অথবা এমন বড় মডেল চালান যা একটি মেশিনের মেমরির ধারণক্ষমতা ছাড়িয়ে যায়, তখন ডিস্ট্রিবিউটেড এমএল সার্ভিং বেছে নিন। প্রোটোটাইপ, অভ্যন্তরীণ টুল, বা কম-ট্র্যাফিকের এপিআই-এর জন্য সেন্ট্রালাইজড মডেল সার্ভিং ব্যবহার করুন, যেখানে নিছক স্কেলের চেয়ে সরলতা এবং অনুমানযোগ্য লেটেন্সি বেশি গুরুত্বপূর্ণ।