ভূমিকা: কেন TensorRT-LLM আপনার উইকেন্ড বিল্ডের জন্য মূল্যবান
যদি আপনি কখনও একটি GPU-কে ৬০% ইউটিলাইজেশনে বসে থাকতে দেখেন যখন আপনার LLM ধীরে চলে, তাহলে আপনি জানেন টেবিলে কিছু অতিরিক্ত পারফরম্যান্স রয়ে গেছে। TensorRT-LLM সেই অতিরিক্ত স্থানটিকে থ্রুপুটে পরিণত করে: ফিউজড কার্নেল, পেজড অ্যাটেনশন, কোয়ান্টাইজেশন এবং গ্রাফ-লেভেল অপটিমাইজেশন যা লেটেন্সি কমায় এবং টোকেন-পার-সেকেন্ড বাড়ায়। এই হাউ-টু গাইডে, আমরা ইন্সটল থেকে ইঞ্জিন বিল্ড করে সার্ভিং পর্যন্ত সবকিছু দেখাবো—যাতে আপনি আত্মবিশ্বাসের সাথে NVIDIA GPU-তে দ্রুত, সাশ্রয়ী মূল্যের ইনফারেন্স স্থাপন করতে পারেন।
এই টিউটোরিয়ালটি একটি ব্যবহারিক ও সমাধান-ভিত্তিক শৈলীতে লেখা হয়েছে। আমরা অনুলিপিযোগ্য কমান্ড, সাধারণ সমস্যা এবং FP16 বনাম INT8, ব্যাচিং এবং KV ক্যাশে কৌশলগুলির জন্য সিদ্ধান্তের বিষয়গুলি সহ একটি প্রশ্ন-নেতৃত্বাধীন কাঠামো ব্যবহার করব। প্রয়োজনে আমরা আরও গভীরে যাওয়ার জন্য অফিসিয়াল রিসোর্সগুলিও উল্লেখ করব।
আপনি যা শিখবেন
- কীভাবে TensorRT-LLM-এর জন্য পরিবেশ সেট আপ করবেন
- কীভাবে ইঞ্জিন তৈরির জন্য একটি মডেল (Hugging Face বা চেকপয়েন্ট থেকে) প্রস্তুত করবেন
- কীভাবে FP16/INT8 ইঞ্জিন তৈরি করবেন এবং পারফরম্যান্স টিউন করবেন
- কীভাবে Python/C++ এবং HTTP সার্ভিংয়ের মাধ্যমে ইনফারেন্স চালাবেন
- কীভাবে বেঞ্চমার্ক, ব্যাচ এবং ডিবাগ করবেন
এটি কাদের জন্য
- ML প্রকৌশলী যারা NVIDIA GPU-তে LLM স্থাপন করছেন
- উৎপাদনে খরচ/লেটেন্সি অপ্টিমাইজ করা অনুশীলনকারীরা
- বিল্ডার যারা PyTorch ট্রান্সফরমার থেকে অত্যন্ত অপ্টিমাইজড ইনফারেন্সে স্থানান্তরিত হচ্ছেন
- TensorRT-LLM কী এবং কখন এটি ব্যবহার করা উচিত?
TensorRT-LLM হল একটি ইনফারেন্স স্ট্যাক যা ট্রান্সফরমার মডেলগুলিকে অত্যন্ত অপ্টিমাইজড GPU “ইঞ্জিনে” কম্পাইল করে। র PyTorch বা জেনেরিক রানটাইমের তুলনায়, আপনি সাধারণত যা পাবেন:
- বৃহৎ ব্যাচ আকারে উচ্চতর থ্রুপুট
- পেজড KV ক্যাশে এবং কোয়ান্টাইজেশনের সাথে আরও ভাল মেমরি দক্ষতা
যখন আপনি NVIDIA GPU-তে চালান এবং প্রোডাকশন-গ্রেড পারফরম্যান্সের বিষয়ে যত্নশীল হন তখন এটি ব্যবহার করুন। এটি বিশেষভাবে ডিকোডার-ওনলি LLM (যেমন, Llama, Mistral, Phi, BLOOM) এবং চ্যাটবট, RAG এবং উচ্চ-QPS API পরিষেবাগুলির মতো পরিস্থিতিতে মূল্যবান।
- পূর্বশর্ত এবং পরিবেশ সেটআপ
কোর প্রয়োজনীয়তা
- সাম্প্রতিক কম্পিউট ক্ষমতা সহ NVIDIA GPU (যেমন, Ampere, Ada, Hopper)
- ম্যাচিং CUDA এবং TensorRT সংস্করণ, সাথে উপযুক্ত ড্রাইভার
- Python 3.8+ এবং সোর্স থেকে কম্পাইল করার ক্ষেত্রে বিল্ড সরঞ্জাম
ভার্সনিং নোট: ইনস্টল করার আগে সামঞ্জস্যপূর্ণ CUDA/TensorRT সংস্করণ এবং বৈশিষ্ট্যগুলির জন্য সর্বদা অফিসিয়াল TensorRT সাপোর্ট ম্যাট্রিক্স এবং রিলিজ নোটগুলি পরীক্ষা করুন।
কুইক-স্টার্ট অপশন
- কন্টেইনারাইজড: প্রিইনস্টলড CUDA/TensorRT সহ NVIDIA-এর কন্টেইনার ব্যবহার করুন—সংস্করণ অমিল এড়ানোর দ্রুততম উপায়।
- নেটিভ ইনস্টল: বেস TensorRT-এর জন্য অফিসিয়াল কুইক স্টার্ট অনুসরণ করুন, তারপরে উপরে TensorRT-LLM স্তর করুন।
- আপনার মডেল প্রস্তুত করা (Hugging Face → TensorRT-LLM)
সাধারণ উৎস
- Hugging Face: Llama/Mistral/BLOOM ভেরিয়েন্ট
- লোকাল চেকপয়েন্ট: কাস্টম ফাইন-টিউন
প্রস্তুতি চেকলিস্ট
- নিশ্চিত করুন মডেল আর্কিটেকচার TensorRT-LLM দ্বারা সমর্থিত।
- মডেল ওজন এবং টোকেনাইজার ডাউনলোড করুন।
- প্রয়োজনে, প্রত্যাশিত ফরম্যাটে সেফটেনসরগুলিকে রূপান্তর করুন অথবা প্রকল্পের স্ক্রিপ্টের মাধ্যমে ONNX এ এক্সপোর্ট করুন।
টিপ: অফিসিয়াল কুইক স্টার্টে প্রায়শই মডেল আনা এবং সঠিক মধ্যবর্তী ফর্মে রূপান্তর করার জন্য স্ক্রিপ্ট অন্তর্ভুক্ত থাকে। BLOOM উদাহরণের সাথে একটি টিউটোরিয়াল-স্টাইল ওয়াকথ্রু জন্য, Hugging Face LLM-কে TensorRT-LLM-এ রূপান্তর করার বিষয়ে Dell-এর গাইড দেখুন।
- একটি TensorRT-LLM ইঞ্জিন তৈরি করা (ওয়ার্কফ্লোর মূল অংশ)
আপনার যে ধারণাগুলি জানা উচিত
- ইঞ্জিন: কম্পাইল করা, হার্ডওয়্যার-অপ্টিমাইজড আর্টিফ্যাক্ট যা আপনি ইনফারেন্সের জন্য লোড করেন।
- নির্ভুলতা: একটি শক্তিশালী বেসলাইনের জন্য FP16/BF16; নির্ভুলতা ধরে রাখলে উচ্চতর থ্রুপুটের জন্য INT8 বা FP8।
- KV ক্যাশে: পেজড KV ক্যাশে মেমরি ফ্র্যাগমেন্টেশন হ্রাস করে এবং দীর্ঘ-কনটেক্সট পারফরম্যান্স বাড়ায়।
উচ্চ-স্তরের পদক্ষেপ
- বিল্ড কনফিগারেশন সংজ্ঞায়িত করুন: সর্বোচ্চ ব্যাচ, সিকোয়েন্সের দৈর্ঘ্য, নির্ভুলতা, কোয়ান্টাইজেশন এবং GPU আর্কিটেকচার।
- আপনার মডেল চেকপয়েন্ট এবং টোকেনাইজারের দিকে নির্দেশ করুন।
- আপনার টার্গেট GPU(গুলি)-এর জন্য ইঞ্জিন কম্পাইল করুন।
রেফারেন্স: অফিসিয়াল ডক্স এবং কনফিগারেশন সহ ইঞ্জিন তৈরি করা। আপনি যদি Hugging Face Text Generation Inference (TGI) এর মাধ্যমে পরিবেশন করার পরিকল্পনা করেন, তাহলে GPU আর্কিটেকচার এবং কনফিগারেশন অনুসারে প্রি-কম্পাইলিং ইঞ্জিনগুলির উপর TRT-LLM ব্যাকএন্ড নোটগুলি দেখুন।
স্টার্টার সিদ্ধান্ত ট্রি
- প্রথম বিল্ড: FP16, মাঝারি সর্বোচ্চ সিকোয়েন্সের দৈর্ঘ্য (যেমন, 4K–8K), মাঝারি ব্যাচ (যেমন, 4–8)। সঠিকতা যাচাই করুন।
- স্কেলিং আপ: পেজড KV ক্যাশে সক্ষম করুন। সর্বোচ্চ ব্যাচ/বিম আকার বাড়ান। FP8 বা INT8 নিয়ে পরীক্ষা করুন।
- উৎপাদন: লেটেন্সি/QPS SLOs পূরণ করে এমন কনফিগারেশন পিন করুন; প্রতিটি পরিস্থিতির জন্য আলাদা ইঞ্জিন তৈরি করুন (সংক্ষিপ্ত প্রম্পট বনাম দীর্ঘ-কনটেক্সট)।
- ইনফারেন্স চালানো: Python, C++ এবং HTTP
আপনার তিনটি সাধারণ পথ রয়েছে:
- Python: দ্রুত প্রোটোটাইপিং, পাইপলাইন এবং নোটবুকের জন্য আদর্শ।
- C++: সর্বাধিক পারফরম্যান্স, নেটিভ পরিষেবাগুলিতে ইন্টিগ্রেশন।
- HTTP সার্ভিং: স্কেলেবল স্থাপনার জন্য TRT-LLM ব্যাকএন্ড বা রানটাইমের সার্ভিং উদাহরণগুলির সাথে TGI ব্যবহার করুন।
Hugging Face TGI ব্যাকএন্ড
- আপনার সঠিক GPU/নির্ভুলতা সেটআপের জন্য ইঞ্জিনগুলি প্রি-কম্পাইল করুন।
- TRT-LLM ব্যাকএন্ডের সাথে TGI স্পিন আপ করুন এবং ইঞ্জিন ডিরেক্টরির দিকে নির্দেশ করুন।
- /generate বা openai-সামঞ্জস্যপূর্ণ রুটের মাধ্যমে অনুরোধ পাঠান এবং রেপ্লিকাগুলির সাথে স্কেল করুন।
- পারফরম্যান্স টিউনিং যা আসলে গুরুত্বপূর্ণ
কোথা থেকে শুরু করবেন
- নির্ভুলতা: FP16 হল আপনার নির্ভরযোগ্য বেসলাইন। INT8/FP8 আরও লেটেন্সি কমাতে পারে, তবে গুণমান যাচাই করুন।
- ব্যাচিং: ডায়নামিক ব্যাচিং এবং অনুরোধ কোয়ালসিং নাটকীয়ভাবে থ্রুপুট বাড়ায়; টেইল লেটেন্সি পরিমাপ করুন।
- পেজড KV ক্যাশে: দীর্ঘ প্রম্পট এবং স্ট্রিমিংয়ের জন্য প্রয়োজনীয়; মেমরির চাপ কমায়।
- সর্বোচ্চ দৈর্ঘ্য: বৃহত্তর সর্বোচ্চ সিকোয়েন্সের দৈর্ঘ্য ইঞ্জিনের আকার বাড়ায় এবং ক্লক কমাতে পারে; উপযুক্ত ইঞ্জিন তৈরি করুন।
ব্যবহারিক টিপস
- বাস্তবসম্মত প্রম্পটগুলির সাথে বেঞ্চমার্ক: প্রিফিল বনাম ডিকোড পর্যায় আলাদাভাবে পরিমাপ করুন।
- টোকেনাইজারের থ্রুপুট গুরুত্বপূর্ণ: আপনার ফ্রেমওয়ার্ক সমর্থন করলে GPU-তে করুন।
- CUDA গ্রাফ/ফিউজড কার্নেলের উপর নজর রাখুন: এগুলি CPU ওভারহেড এবং কার্নেল লঞ্চ লেটেন্সি হ্রাস করে।
- মাল্টি-GPU-এর জন্য: আপনার মডেলের আকার এবং লেটেন্সির প্রয়োজনীয়তা অনুসারে টেনসর প্যারালাল বা পাইপলাইন প্যারালাল পছন্দ করুন।
- বেঞ্চমার্কিং: জয় প্রমাণ করুন
চেকলিস্ট
- লক্ষ্যযুক্ত ব্যাচ আকারে টোকেন/সেকেন্ড (থ্রুপুট)
- প্রথম টোকেনের সময় (TTFT) এবং প্রতি অনুরোধে এন্ড-টু-এন্ড লেটেন্সি
- পিক QPS এর অধীনে GPU ব্যবহার এবং মেমরি স্পেস
- নির্ভুলতা: আপনি যদি কোয়ান্টাইজ করেন তবে BLEU/পারপ্লেক্সিটি বা টাস্ক-স্পেসিফিক ইভাল
সঠিকতা এবং ডেল্টা যাচাই করার জন্য বেসলাইন জুড়ে (PyTorch বনাম TensorRT-LLM) সামঞ্জস্যপূর্ণ বীজ এবং প্রম্পট সেট ব্যবহার করুন।
- ডিবাগিং এবং সাধারণ সমস্যা
- অমিলিত সংস্করণ: অফিসিয়াল সাপোর্ট ম্যাট্রিক্স অনুসারে CUDA, ড্রাইভার এবং TensorRT সংস্করণগুলি সারিবদ্ধ করুন।
- ডিভাইসের জন্য অবৈধ ইঞ্জিন: বিশেষভাবে আপনার GPU আর্কিটেকচারের জন্য ইঞ্জিনগুলি পুনরায় তৈরি করুন।
- বিল্ডের সময় OOM: সর্বোচ্চ সিকোয়েন্সের দৈর্ঘ্য বা ব্যাচ হ্রাস করুন; পেজড KV সক্ষম করুন; কোয়ান্টাইজেশন বিবেচনা করুন।
- INT8 এর সাথে নির্ভুলতা হ্রাস: ডোমেইন-প্রতিনিধিত্বমূলক ডেটাতে ক্যালিব্রেট করুন; প্রতি-টেনসর কোয়ান্টাইজেশন চেষ্টা করুন এবং স্তর-ভিত্তিক সংবেদনশীলতা যাচাই করুন।
- উচ্চ থ্রুপুট সত্ত্বেও ধীর TTFT: পেজড KV ক্যাশে টিউন করুন, CUDA গ্রাফ সক্ষম করুন এবং টোকেনাইজার বাধাগুলি পরীক্ষা করুন।
- উদাহরণ ওয়ার্কফ্লো: Hugging Face মডেল থেকে উৎপাদন
পরিস্থিতি: আপনি একটি A100 এ কম-লেটেন্সি চ্যাট মডেল চান।
- মডেল নির্বাচন করুন: 7B–13B Llama/Mistral ভেরিয়েন্ট।
- প্রস্তুত করুন: ওজন এবং টোকেনাইজার ডাউনলোড করুন; আর্কিটেকচার সমর্থিত কিনা তা যাচাই করুন।
- প্রথম ইঞ্জিন: FP16, সর্বোচ্চ ইনপুট 4K, সর্বোচ্চ আউটপুট 1K, ব্যাচ 4; পেজড KV চালু।
- যাচাই করুন: আপনার PyTorch বেসলাইনের সাথে আউটপুট তুলনা করুন।
- অপ্টিমাইজ করুন: INT8 বা FP8 চেষ্টা করুন; TTFT এবং থ্রুপুট পরিমাপ করুন। সার্ভার মোডের জন্য ব্যাচ বাড়ান।
- পরিবেশন করুন: TGI TRT-LLM ব্যাকএন্ড ব্যবহার করুন; একটি লোড ব্যালান্সারের পিছনে রেপ্লিকা স্কেল করুন; স্ট্রিমিং যোগ করুন।
- প্রতি GPU থ্রুপুট: আপনার টার্গেট কনটেক্সটে টোকেন/সেকেন্ড পরিমাপ করুন। QPS ক্ষমতা গণনা করতে সেটি ব্যবহার করুন।
- প্রতি 1M টোকেনের মূল্য: দ্রুত ডিকোডিং এবং উচ্চতর ব্যাচ ব্যবহারের সাথে, TRT-LLM সাধারণত প্রতি টোকেনের খরচ কমিয়ে দেয়।
- রাইট-সাইজ ইঞ্জিন: হেডরুম অপচয় কমাতে সংক্ষিপ্ত-ফর্ম এবং দীর্ঘ-ফর্মের জন্য আলাদা ইঞ্জিন তৈরি করুন।
- গাইডের ভিতরে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
প্রশ্ন: প্রতিটি GPU প্রকারের জন্য আমাকে কি ইঞ্জিনগুলি পুনরায় তৈরি করতে হবে?
উত্তর: হ্যাঁ। ইঞ্জিনগুলি হার্ডওয়্যার-নির্দিষ্ট। প্রতিটি GPU আর্কিটেকচারের জন্য তৈরি করুন যা আপনি স্থাপন করবেন।
প্রশ্ন: INT8 গুণমানকে কতটা প্রভাবিত করে?
উত্তর: এটি মডেল এবং টাস্কের উপর নির্ভর করে। ভাল ক্যালিব্রেশন ডেটা সহ, অনেক মডেল যথেষ্ট স্পিডআপ সরবরাহ করার সময় প্রায়-FP16 গুণমান ধরে রাখে।
প্রশ্ন: আমি কি দীর্ঘ কনটেক্সট (যেমন, 32K) চালাতে পারি?
উত্তর: হ্যাঁ, তবে সাবধানে মেমরি পরিকল্পনা করুন। পেজড KV ক্যাশে ব্যবহার করুন এবং ব্লকের আকার টিউন করুন; মনে রাখবেন যে দীর্ঘ কনটেক্সট ইঞ্জিনের পদচিহ্ন এবং ডিকোড খরচ বাড়ায়।
প্রশ্ন: TGI কি আবশ্যক?
উত্তর: না। আপনি সরাসরি Python/C++ চালাতে পারেন। অটোস্কেলিং এবং লগিং সহ প্রোডাকশন-গ্রেড HTTP API-এর জন্য TGI সুবিধাজনক।
ওয়ার্কফ্লো ত্বরণের জন্য যা মনে রাখা দরকার
আপনি যদি ঘন ঘন প্রম্পটগুলিতে পুনরাবৃত্তি করেন, ইঞ্জিন জুড়ে আউটপুট তুলনা করেন বা পরীক্ষার নথিভুক্ত করেন, তবে একটি পাশাপাশি AI সহকারী যা দ্রুত পুনরায় চেষ্টা, কোড ব্লক এক্সিকিউশন এবং ওয়েব স্নিপেট সমর্থন করে আপনার লুপকে গতি বাড়িয়ে তুলতে পারে। যাইহোক, Sider.AI ইঞ্জিনিয়ারদের জন্য টিউন করা একটি ডেস্কটপ অভিজ্ঞতা সরবরাহ করে—বেঞ্চমার্ক ক্যাপচার করা, প্রম্পট পরীক্ষা করা এবং আপনার TensorRT-LLM পাইপলাইন অপ্টিমাইজ করার সময় আপনার নোটগুলি সংগঠিত করার জন্য সহজ। পরবর্তী পদক্ষেপ চেকলিস্ট
- আপনার পরিবেশ যাচাই করতে অফিসিয়াল কুইক স্টার্ট পড়ুন।
- সাপোর্ট ম্যাট্রিক্সে CUDA/TensorRT সামঞ্জস্যতা নিশ্চিত করুন।
- ইঞ্জিন-বিল্ডিং গাইড অনুসরণ করুন এবং প্রথমে FP16 নির্বাচন করুন।
- যদি TGI এর মাধ্যমে পরিবেশন করা হয়, তাহলে ইঞ্জিনগুলি প্রি-কম্পাইল করুন এবং TRT-LLM ব্যাকএন্ড কনফিগার করুন।
- ঐচ্ছিকভাবে, BLOOM এর মতো Hugging Face মডেলগুলির জন্য একটি টিউটোরিয়াল-স্টাইল ওয়াকথ্রু পর্যালোচনা করুন।
মূল বিষয়গুলি
- TensorRT-LLM সর্বাধিক থ্রুপুট এবং কম লেটেন্সির জন্য আপনার ট্রান্সফরমারকে একটি GPU-নেটিভ ইঞ্জিনে কম্পাইল করে।
- FP16 দিয়ে শুরু করুন, পেজড KV ক্যাশে সক্ষম করুন এবং পরিমাপ করুন। তারপরে আরও গতির জন্য INT8/FP8 অন্বেষণ করুন।
- ইঞ্জিনগুলি GPU- এবং কনফিগারেশন-নির্দিষ্ট; প্রতিটি স্থাপনার লক্ষ্যের জন্য তৈরি করুন।
- উৎপাদনের জন্য, একটি শক্তিশালী সার্ভিং স্তর (যেমন, TGI) এর সাথে ইঞ্জিনগুলি যুক্ত করুন এবং TTFT, থ্রুপুট এবং গুণমান নিরীক্ষণ করুন।
FAQ
প্রশ্ন ১: আমি কীভাবে সঠিকভাবে TensorRT-LLM ইনস্টল এবং সেট আপ করব?
ম্যাচিং CUDA/TensorRT সহ একটি কন্টেইনার ব্যবহার করুন অথবা সংস্করণ বিচ্যুতি এড়াতে অফিসিয়াল কুইক স্টার্ট এবং সাপোর্ট ম্যাট্রিক্স অনুসরণ করুন। ইঞ্জিন কম্পাইল করার আগে GPU ড্রাইভার এবং বিল্ড সরঞ্জামগুলি যাচাই করুন।
প্রশ্ন ২: Hugging Face মডেলগুলির সাথে TensorRT-LLM কীভাবে ব্যবহার করবেন?
মডেল এবং টোকেনাইজার ডাউনলোড করুন, সমর্থন নিশ্চিত করুন এবং ইঞ্জিন তৈরি করার আগে প্রয়োজন অনুযায়ী রূপান্তর করুন। TGI এর সাথে পরিবেশন করা হলে, আপনার GPU এর জন্য ইঞ্জিন কম্পাইল করুন এবং ব্যাকএন্ডকে ইঞ্জিন ডিরেক্টরিতে নির্দেশ করুন।
প্রশ্ন ৩: TensorRT-LLM এর জন্য আমার FP16, FP8, নাকি INT8 নির্বাচন করা উচিত?
স্থিতিশীলতার জন্য FP16 দিয়ে শুরু করুন, তারপর থ্রুপুট বাড়ানোর জন্য FP8/INT8 চেষ্টা করুন। কোয়ান্টাইজেশনের পরে সর্বদা টাস্ক নির্ভুলতা যাচাই করুন।
প্রশ্ন ৪: আমি কি HTTP এর মাধ্যমে TensorRT-LLM পরিবেশন করতে পারি?
হ্যাঁ। আপনি সরাসরি Python/C++ ব্যবহার করতে পারেন অথবা স্ট্রিমিং সহ স্কেলেবল, উৎপাদন-প্রস্তুত API-এর জন্য Hugging Face TGI-এর TRT-LLM ব্যাকএন্ডের মাধ্যমে পরিবেশন করতে পারেন।
প্রশ্ন ৫: TensorRT-LLM ব্যবহার করার সময় সাধারণ পারফরম্যান্স বাধাগুলি কী কী?
টোকেনাইজার ওভারহেড, উপ-অপ্টিমাল ব্যাচিং এবং পেজড KV ক্যাশের অভাব সাধারণ সমস্যা। ব্যাচের আকার টিউন করুন, CUDA গ্রাফ সক্ষম করুন এবং সামগ্রিক টোকেন-প্রতি-সেকেন্ডের বিপরীতে TTFT নিরীক্ষণ করুন।