এই সাইটের বিষয়বস্তু কৃত্রিম বুদ্ধিমত্তা (AI) বা মেশিন অনুবাদ প্রযুক্তি ব্যবহার করে অনুবাদ করা হয়েছে এবং ত্রুটি থাকতে পারে।

Skip to content

Roblox-এ 3D সৃষ্টির জন্য AI ইনফারেন্স ত্বরান্বিত করা

৭.৮ গুণ দ্রুত, আরও প্রতিক্রিয়াশীল ৩ডি অবজেক্ট জেনারেশন

SEO image for Accelerating AI Inference for 3D Creation on Roblox
  • Roblox CUDA গ্রাফ এবং KV ক্যাশিং প্রয়োগ করেছে আরও প্রতিক্রিয়াশীল পুনরাবৃত্তির জন্য 3D মেশ জেনারেটনের গতি বাড়াতে।
  • লঞ্চের সময়, Cube 3D মডেল 7.8 মিলিসেকেন্ডে টোকেন তৈরি করতে পারছিল (60.5 মিলিসেকেন্ড থেকে কমে) এবং 4 সেকেন্ডে পূর্ণ অবজেক্ট তৈরি করতে পারছিল (31 সেকেন্ড থেকে কমে)। 

এই বছরের শুরুতে, Roblox আমাদের Cube 3D ফাউন্ডেশন মডেলের প্রথম সক্ষমতা শেয়ার করেছিল। Cube 3D-এর মাধ্যমে, নির্মাতারা টেক্সট প্রম্পট থেকে সরাসরি 3D মডেল এবং পরিবেশ তৈরি করতে পারেন। শুরু থেকেই আমরা বিলম্ব কমানোর (ল্যাটেন্সি অপ্টিমাইজেশন) ওপর অগ্রাধিকার দিয়েছি, কারণ ধীরগতির জেনারেটেশন সময় স্বভাবতই পুনরাবৃত্তিমূলক একটি প্রক্রিয়াকে ব্যাহত করে। Cube 3D মার্চে চালু হওয়ার আগেই আমরা ইনফারেন্স ধাপটিকে ডেভেলপার এবং ব্যবহারকারী উভয়ের জন্যই ৭.৮ গুণ দ্রুত এবং আরও প্রতিক্রিয়াশীল করে তুলেছিলাম। 

লঞ্চের পর থেকে, বেশ কয়েকটি উল্লেখযোগ্য অভিজ্ঞতা জুড়ে ৫৭৮,০০০-এরও বেশি অবজেক্ট তৈরি হয়েছে। ডেভেলপাররাও "বিড়াল", "বার্গার" ইত্যাদি টেক্সট প্রম্পট ব্যবহার করে অভিজ্ঞতার মধ্যেই 3D অবজেক্ট তৈরি করার সুবিধা দেওয়ার আগ্রহ প্রকাশ করেছেন। সবচেয়ে উল্লেখযোগ্যভাবে, ভয়েস চ্যাট ব্যবহার করে জনপ্রিয় হ্যাংআউট গেম Mic Up, খেলোয়াড়দের অবজেক্ট তৈরি করার জন্য একটি মজাদার এবং ইন্টারেক্টিভ উপায় দিতে Cube 3D ব্যবহার করেছে। তাদের বাস্তবায়নে, খেলোয়াড়রা বাম-হাতের একটি মেনু খুলতে পারে, যেখানে অতিরিক্ত বৈশিষ্ট্যগুলোর মধ্যে একটি AI আইকনও রয়েছে। সেই আইকনে ক্লিক করার পর, খেলোয়াড়রা একটি টেক্সট প্রম্পট লিখে 3D অবজেক্ট তৈরি করতে পারে। ব্যবহারকারীদের জন্য দীর্ঘ জেনারেট সময় বাধা সৃষ্টি করে, যা তাদেরকে তাদের ধারণাগুলোকে রিয়েল-টাইমে 3D-তে রূপান্তরিত হওয়ার জাদু থেকে বঞ্চিত করে। 

আমরা থেমে-থেকে অপেক্ষা করার ইন্টারঅ্যাকশন থেকে 3D জেনারেট অভিজ্ঞতাকে এমন কিছুতে রূপান্তর করতে চেয়েছিলাম যা দ্রুত সাড়া দেয় এবং স্বাভাবিক মনে হয়, দ্রুত পরীক্ষা-নিরীক্ষা সম্ভব করে। একটি দৃশ্যে দ্রুত অবজেক্ট যোগ করার ক্ষমতা ডেভেলপারদের জন্য অত্যন্ত গুরুত্বপূর্ণ। Cube 3D-কে ত্বরান্বিত করতে, আমরা প্রথমে ইনফারেন্স পাইপলাইনের প্রোফাইলিং করে পারফরম্যান্সের বাধাগুলো চিহ্নিত করেছিলাম। শক্তিশালী GPU ব্যবহার করার পরেও, আমরা অপারেশনগুলোর মধ্যে উল্লেখযোগ্য নিষ্ক্রিয় সময় খুঁজে পেয়েছিলাম।

সিপিইউ-জিপিইউ শিডিউলিং বটলনেক সমাধান

আধুনিক গভীর শিক্ষার ফ্রেমওয়ার্কগুলো CPU-র উপর নির্ভর করে GPU-তে অপারেশন (অথবা কার্নেল) নির্ধারণ ও চালু করতে। CPU প্রতিটি অপারেশন প্রস্তুত করে, তা GPU-তে পাঠায়, এবং পরবর্তী অপারেশন প্রস্তুত করার আগে নিশ্চিতকরণের অপেক্ষা করে। এই অপেক্ষা একটি সময়সূচি সংকীর্ণতা তৈরি করে, যেখানে CPU পরবর্তী কাজের ব্যাচ প্রস্তুত করার সময় GPU নিষ্ক্রিয় থাকতে পারে। আদর্শভাবে, আমরা চাই CPU GPU-র থেকে এগিয়ে থাকুক, অপারেশনগুলো প্রস্তুত ও সারিতে সাজিয়ে রাখুক যাতে GPU-র কাছে সবসময় কাজ থাকে।

Cube 3D-এর মতো ট্রান্সফরমার-ধরনের মডেলগুলিতে অটোরিগ্রেশন ডিকোডারগুলির জন্য এটি বিশেষ করে সমস্যা সৃষ্টি করে, যেহেতু এগুলিকে ইনপুট প্রক্রিয়া করে ধারাবাহিকভাবে টোকেন তৈরি করতে হয়। এই মডেলগুলির একটি একক জেনারেশনের জন্য হাজার হাজার পৃথক অপারেশন প্রয়োজন, এবং ক্রমের প্রতিটি ধাপে কম্পিউটেশনাল ওভারহেড জমা হয়।

"আমরা এমন কিছু তৈরি করতে চেয়েছিলাম যা চার-মাত্রিক ইন্টার‌্যাকশন সক্ষম করে," ইঞ্জিনিয়ারিং বিভাগের ভাইস প্রেসিডেন্ট অনুপম সিং বলেন, ব্যাখ্যা করে কেন Roblox একটি অটোরিগ্রেসিভ পদ্ধতি বেছে নিয়েছে। "আমরা শুধু গাড়িটা তৈরি করতে চাই না; আমরা গাড়ির দরজা খুলে ভিতরে ঢুকতেও চাই।"

প্রতিটি অপারেশন খরচ হয়েছে:

  • প্রতিটি কার্নেল প্রস্তুত করতে CPU সময়
  • কার্নেল লঞ্চ করার ওভারহেড
  • GPU কার্যনির্বাহণের সময় (বাস্তব গণনা)
  • সম্পূর্ণতা যাচাই করার সময় সিঙ্ক্রোনাইজেশন ওভারহেড

GPU-তে দ্রুত সম্পাদিত ছোট অপারেশনগুলির ক্ষেত্রে, এই ওভারহেড ইনফারেন্স সময়কে প্রভাবিত করতে পারে। GPU মোট ইনফারেন্স সময়ের মাত্র একটি ক্ষুদ্র অংশেই সক্রিয়ভাবে গণনা চালাতে পারে।

الجدول الزمني الإجمالي لتوليد رمز واحد دون أي تحسينات.
عرض زمني لتنفيذ GPU لنموذج غير مُحسّن، يُظهر وقتًا طويلاً من خمول GPU.
CUDA গ্রাফ বাস্তবায়ন: মধ্যস্বত্বভোগী নির্মূল

এই সংকীর্ণতা মোকাবেলা করতে আমরা CUDA গ্রাফস ব্যবহার করেছি—একটি ফিচার যা CPU হস্তক্ষেপ ছাড়াই GPU অপারেশনের সিকোয়েন্স রেকর্ড এবং পুনরায় প্লে করার সুযোগ দেয়। Cube 3D-এর আর্কিটেকচারের অটো-রিগ্রেসিভ ডিকোডার উপাদান টেক্সট প্রম্পট প্রক্রিয়া করে এবং একটি স্থির-দৈর্ঘ্যের ভেক্টরের মাধ্যমে শেপ টোকেন তৈরি করে। 

যদিও কার্যকারিতায় এটি একটি ঐতিহ্যবাহী বৃহৎ ভাষা মডেল (LLM)-এর মতোই, আমাদের দ্বৈত-স্ট্রিম ডিকোডার স্থাপত্যে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে—এটি দুটি সমান্তরাল অ্যাটেনশন স্ট্রিম ব্যবহার করে। একটি স্ট্রিম শর্ত টোকেন এবং অন্যটি আকৃতি টোকেনের জন্য নিবেদিত। বাজারজাত LLM ইনফারেন্স ইঞ্জিনগুলো আমাদের প্রয়োজনের জন্য উপযুক্ত ছিল না, এবং আমাদের নির্দিষ্ট স্থাপত্যের জন্য একটি কাস্টম বাস্তবায়ন প্রয়োজন ছিল।

CUDA গ্রাফকে GPU-এর জন্য একটি ম্যাক্রো রেকর্ড করার মতো ভাবুন। CPU যখন প্রতিটি কমান্ড আলাদাভাবে ইস্যু করার পরিবর্তে GPU-র অপারেশনগুলির একটি সম্পূর্ণ সিকোয়েন্স (গ্রাফ) রেকর্ড করে এবং একটি একক CPU নির্দেশনার মাধ্যমে পুরো গ্রাফটি চালু করে, তখন এই পদ্ধতি ইনফারেন্স চলাকালীন CPU-কে প্রতিটি অপারেশন আলাদাভাবে নির্ধারণ করার প্রয়োজনীয়তা দূর করে কার্নেল লঞ্চের ওভারহেড নাটকীয়ভাবে কমিয়ে দেয়। একবার গ্রাফটি চালু হয়ে গেলে, GPU পরবর্তী কোনো নির্দেশনার জন্য অপেক্ষা না করে স্বায়ত্তশাসিতভাবে পুরো সিকোয়েন্সটি সম্পাদন করে।

CUDA গ্রাফের কিছু সীমাবদ্ধতা রয়েছে। যেহেতু গ্রাফের কাঠামো আগে থেকেই নির্ধারণ করতে হয়, তাই এদের জন্য একটি নির্দিষ্ট ব্যাচ সাইজ এবং ইনপুট মাত্রা প্রয়োজন। এর মানে হলো প্রতিটি ব্যাচ সাইজ বা ইনপুট আকৃতির জন্য আলাদা গ্রাফ তৈরি করতে হবে। আমাদের কিউব 3D ব্যবহারের ক্ষেত্রে, এই সীমাবদ্ধতাটি গ্রহণযোগ্য ছিল, কারণ আমরা সাধারণ ইনপুট মাত্রার চারপাশে ইনফারেন্স প্রক্রিয়াটি মানসম্মত করতে পেরেছিলাম।

আমাদের Cube 3D মডেলের জন্য CUDA গ্রাফ বাস্তবায়ন করতে আমাদের পদ্ধতি মানিয়ে নিতে হয়েছিল। প্রচলিত LLM-গুলোতে, অ্যাটেনশন অপারেশনগুলো সবসময় একই সিকোয়েন্স দৈর্ঘ্যে সম্পাদিত হয়, যা কাজের জন্য একটি স্থির আকৃতি প্রদান করে। তবে, আমাদের কাস্টম ডুয়াল-স্ট্রিম আর্কিটেকচারে, কিছু অ্যাটেনশন লেয়ার শুধুমাত্র সিকোয়েন্স দৈর্ঘ্যের উপর কাজ করে, অন্যগুলো সিকোয়েন্স এবং কন্ডিশন দৈর্ঘ্যের সংমিশ্রণে কাজ করে।

এই চ্যালেঞ্জগুলো সত্ত্বেও, CUDA Graphs বাস্তবায়নের পর আমরা অসাধারণ ফলাফল দেখেছি। ইনফারেন্সের সময় প্রতিটি টোকেনের জেনারেট সময় পরিমাপ করতে আমরা টাইম পার আউটপুট টোকেন (TPOT) ব্যবহার করি। CUDA Graphs বাস্তবায়নের পর, আমাদের TPOT 60.5 মিলিসেকেন্ড থেকে 20.5 মিলিসেকেন্ডে উন্নীত হয়েছে, যা 2.9 গুণ উন্নতি। সামগ্রিক জেনারেট সময় 66% কমে 31 সেকেন্ড থেকে 10.5 সেকেন্ডে নেমে এসেছে।

কেভি ক্যাশিং: আমাদের সাফল্যের ওপর ভিত্তি করে

লেটেন্সি আরও উন্নত করতে, আমরা KV ক্যাশিং প্রয়োগ করেছি, যা LLM ইনফারেন্সে একটি মানক অনুশীলন এবং শিল্পজুড়ে অত্যন্ত কার্যকর প্রমাণিত হয়েছে। 

Cube 3D-এর মতো ট্রান্সফরমার-ভিত্তিক মডেলগুলিতে, প্রতিটি টোকেন জেনারেট করার সময় পূর্বে তৈরি সমস্ত টোকেনের উপর ভিত্তি করে কী (K) এবং ভ্যালু (V) ম্যাট্রিস গণনা করতে হয়। সিকোয়েন্স যত দীর্ঘ হয়, প্রতিটি টোকেনের জন্য এই ম্যাট্রিসগুলো পুনরায় গণনা করা ততই অকার্যকর হয়ে ওঠে।

KV ক্যাশিং এটি সমাধান করে:

  1. আগে তৈরি করা সমস্ত টোকেনের জন্য K এবং V ম্যাট্রিস সংরক্ষণ করা
  2. কেবল নতুন টোকেনগুলির জন্য K এবং V ম্যাট্রিস গণনা করা
  3. এই নতুন ম্যাট্রিসগুলোকে ক্যাশকৃত মানগুলোর সাথে সংযুক্ত করা

এই পদ্ধতি অপ্রয়োজনীয় গণনা দূর করে, প্রতিটি নতুন টোকেনের জন্য প্রয়োজনীয় কাজ কমিয়ে আনে। জেনারেট হওয়া সিকোয়েন্স যত দীর্ঘ হয়, ততই এর প্রভাব আরও বেশি হয়।

KV ক্যাশিংকে CUDA গ্রাফ বাস্তবায়নের সাথে একীভূত করার আমাদের পদ্ধতিটি প্রচলিত LLM ইনফারেন্সের মতোই ছিল। KV ক্যাশিং যোগ করার ফলে আমাদের TPOT মাত্র 7.8 মিলিসেকেন্ডে নেমে এসেছে। সামগ্রিক জেনারেট সময় 87% কমেছে, মূল 31 সেকেন্ড থেকে মাত্র 4 সেকেন্ডে নেমে এসেছে। এই উল্লেখযোগ্য সময় হ্রাস এই টুল ব্যবহারকারী নির্মাতাদের জন্য এটিকে অনেক বেশি কার্যকর করে তোলে।

CUDA গ্রাফস এবং KV ক্যাশের সাথে একক টোকেন জেনারেশনের সামগ্রিক সময়রেখা।
CUDA গ্রাফ সংস্করণের GPU কার্যনির্বাহণের টাইমলাইন ভিউ, যা প্রায় কোনো GPU নিষ্ক্রিয় সময় দেখায় না
ডেভেলপার এবং ব্যবহারকারীদের উপর বাস্তব-বিশ্বের প্রভাব মূল্যায়ন
এই উন্নতিগুলো সরাসরি ডেভেলপার এবং ব্যবহারকারীদের জন্য স্পর্শযোগ্য সুবিধা নিয়ে আসে। মেশ পোস্ট-প্রসেসিং সহও, আমাদের চূড়ান্ত এন্ড-টু-এন্ড (E2E) ল্যাটেন্সি সাত সেকেন্ড। ডেভেলপাররা এখন দ্রুত পুনরাবৃত্তি চক্রে কাজ করতে পারে, এবং ব্যবহারকারীরা আরও প্রতিক্রিয়াশীল 3D জেনারেটনের অভিজ্ঞতা পান।
*تم إجراء جميع قياسات زمن الاستجابة على وحدات معالجة الرسومات NVIDIA H100.

আমরা আরও দেরি কমাতে এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে বিভিন্ন কৌশল অন্বেষণ করছি, যেমন অপ্টিমাইজড কার্নেল, আরও দ্রুত ইনফারেন্সের জন্য মডেল কোয়ান্টাইজেশন, হার্ডওয়্যার-নির্দিষ্ট অপ্টিমাইজেশন এবং সমান্তরাল টোকেন জেনারেটেশন।

এই কাজটি আরও জটিল হয়ে ওঠে যখন আমরা পূর্ণ দৃশ্য তৈরি ও বোঝাপড়ায় প্রসারিত করি, যেখানে অনেক 3D উপাদানকে একটি বিন্যাসে একে অপরের প্রেক্ষাপটে একসঙ্গে কাজ করতে হয়। আমরা চাই আমাদের তৈরি 3D বস্তু ও জগতগুলো সম্পূর্ণ কার্যকরী হোক, যেমন দরজা খোলে ও বন্ধ হয়, চাকা ঘোরে ইত্যাদি। সেখানে পৌঁছাতে আমাদের দ্রুত তৈরি ও পুনরাবৃত্তি প্রয়োজন, যাতে পুরো দৃশ্য, সম্পূর্ণ কার্যকরী বস্তু এবং অবতার তৈরি করা যায়। আমরা আমাদের কিউব 3D ফাউন্ডেশন মডেল সম্প্রসারণের সাথে সাথে আরও উন্নতি এবং নতুন কার্যকারিতা শেয়ার করতে পেরে উচ্ছ্বসিত—এবং আমাদের নির্মাতা সম্প্রদায় এগুলোর মাধ্যমে যে নিমগ্ন জগতগুলো তৈরি করবে তা দেখতে আগ্রহী।