GPU মেমরি ম্যানেজমেন্ট এবং ফ্র্যাগমেন্টেশন
কীভাবে AI ফ্রেমওয়ার্কগুলি একটি GPU-তে সীমিত মেমরি বরাদ্দ, পুনঃব্যবহার এবং পুনরুদ্ধার করে এবং কেন অবশিষ্ট ফাঁক (খণ্ডন) মেমরির বাইরের ত্রুটির কারণ হতে পারে এমনকি যখন প্রচুর মেমরি প্রযুক্তিগতভাবে অবশিষ্ট থাকে।
ওভারভিউ
এটা বোঝা বড় মডেল ফিট করা এবং রহস্যময় ক্র্যাশ এড়াতে চাবিকাঠি।
গভীর ডুব
GPU মেমরি স্থির এবং মূল্যবান: একটি কার্ডে মোট 24, 80, বা 192 GB থাকতে পারে, মডেল ওজন, অ্যাক্টিভেশন, গ্রেডিয়েন্ট, অপ্টিমাইজার স্টেট এবং অস্থায়ী বাফার দ্বারা ভাগ করা। প্রতিটি অপারেশনে মেমরি বরাদ্দ করার জন্য ড্রাইভারকে কল করা ধীর হবে, তাই PyTorch এর মতো ফ্রেমওয়ার্কগুলি একটি ক্যাশিং বরাদ্দকারী ব্যবহার করে যা সামনের দিকে বড় বড় ব্লকগুলিকে ধরে এবং সাব-টুকরোগুলি হস্তান্তর করে, তারপর পুনঃব্যবহারের জন্য মুক্ত করা টুকরোগুলিকে পুলে রাখে। ক্যাচ হল ফ্র্যাগমেন্টেশন: যেহেতু বিভিন্ন আকারের টেনসরগুলি বরাদ্দ করা হয় এবং মুক্ত করা হয়, মুক্ত স্থানটি বিক্ষিপ্ত অংশে ভেঙে যায়। আপনি মোট 5 GB বিনামূল্যে পেতে পারেন তবে একটি সংলগ্ন 2 GB টেনসর বরাদ্দ করতে ব্যর্থ হন কারণ কোনও একক ফাঁক যথেষ্ট বড় নয়। এই কারণেই আপাতদৃষ্টিতে উপলব্ধ হেডরুম থাকা সত্ত্বেও প্রশিক্ষণ মেমরির বাইরের ত্রুটিগুলির সাথে ক্র্যাশ হতে পারে।
প্রযুক্তিগত অন্তর্দৃষ্টি
PyTorch-এর CUDA ক্যাশিং বরাদ্দকারী মেমরিকে ব্লকের স্ট্রিমগুলিতে বিভক্ত করে এবং মুক্ত করা ব্লকগুলিকে পুনরায় ব্যবহার করে যা অনুরোধকৃত আকারের সাথে মেলে, ব্যয়বহুল cudaMalloc/cudaFree কল এড়িয়ে যায়। যখন বিভক্ত ব্লকগুলি পুনরায় সংযুক্ত করা যায় না তখন ফ্র্যাগমেন্টেশন দেখা দেয়। torch.cuda.empty_cache, PYTORCH_CUDA_ALLOC_CONF প্রসারণযোগ্য_সেগমেন্ট বিকল্প এবং মেমরি স্ন্যাপশটগুলির মতো সরঞ্জামগুলি সাহায্য করে৷ নতুন পন্থাগুলি ভার্চুয়াল-মেমরি ধারণাগুলি ধার করে, অ-সংলগ্ন ভৌত পৃষ্ঠাগুলিকে একটি সংলগ্ন ভার্চুয়াল পরিসরে ম্যাপ করে যাতে বড় অনুরোধগুলি খণ্ডিত হওয়া সত্ত্বেও সফল হয়।
কৌশলগত প্রভাব
খরচ ও বাজেট
আর্কিটেকচারের সিদ্ধান্তগুলি বছরের পর বছর ধরে কর্মক্ষমতা এবং অপারেটিং খরচ চালায়।
সুস্পষ্ট সিদ্ধান্ত
কারিগরি শিক্ষা দলগুলোকে সঠিক স্ট্যাক বেছে নিতে সাহায্য করে, শুধু নতুনটি নয়।
মান নিয়ন্ত্রণ
ভালো ইঞ্জিনিয়ারিং পছন্দ উৎপাদনে নির্ভরযোগ্যতার ঘটনা কমিয়ে দেয়।
GPU মেমরি ম্যানেজমেন্ট এবং ফ্র্যাগমেন্টেশনের ভবিষ্যত
অপারেটিং সিস্টেম দ্বারা অনুপ্রাণিত হয়ে মেমরি ম্যানেজমেন্ট আরও স্মার্ট এবং আরও পৃষ্ঠাযুক্ত হয়ে উঠছে। ভার্চুয়াল-মেমরি-স্টাইল অ্যালোকেটর এবং পেজড অ্যাটেনশনের মতো কৌশলগুলি (অনুমান করার সময় কেভি ক্যাশে পরিচালনা করতে ব্যবহৃত) নাটকীয়ভাবে বর্জ্য এবং খণ্ডন হ্রাস করে। ফ্রেমওয়ার্কগুলিকে প্রসারণযোগ্য, ডিফ্র্যাগমেন্টিং বরাদ্দকারী, বিল্ট-ইন প্রোফাইলারের মাধ্যমে আরও ভাল দৃশ্যমানতা এবং অফলোডিং এবং পুনঃগণনার সাথে আরও শক্ত কাপলিং আশা করুন যাতে সিস্টেমটি স্বয়ংক্রিয়ভাবে জিপিইউ, সিপিইউ এবং ডিস্ক মেমরিকে জাগল করে যাতে ব্যবহার বেশি থাকে এবং বিরল ক্র্যাশ হয়।
বাস্তব-বিশ্ব বাস্তবায়ন
একটি প্রশিক্ষণ রান যা সংরক্ষিত মেমরি মুক্ত স্থান দেখানো সত্ত্বেও 'CUDA আউট অফ মেমরি' এর সাথে ক্র্যাশ হয়, প্রসারণযোগ্য সেগমেন্টগুলি সক্ষম করতে PYTORCH_CUDA_ALLOC_CONF সেট করে ঠিক করা হয়েছে৷
torch.cuda.memory_summary বা একটি মেমরি স্ন্যাপশট ব্যবহার করে নির্ণয় করা যে কোন টেনসর এবং ফ্র্যাগমেন্টেশন একটি GPU এর 80 GB খাচ্ছে।
vLLM-এর PagedAttention মেমরি নষ্ট না করে অনেক সমসাময়িক চ্যাট অনুরোধ পরিবেশন করতে নির্দিষ্ট আকারের পৃষ্ঠাগুলিতে মনোযোগ কেভি ক্যাশে পরিচালনা করে।
ব্যাচের আকার কমানো বা অ্যাক্টিভেশন মেমরি কাটাতে এবং ফ্র্যাগমেন্টেশন-চালিত-আউট-অফ-মেমরি ব্যর্থতা এড়াতে গ্রেডিয়েন্ট চেকপয়েন্টিং সক্ষম করা।
ঝুঁকি এবং প্রহরী
একটি বেঞ্চমার্ক অপ্টিমাইজ করা বৃহত্তর সিস্টেম দুর্বলতা আড়াল করতে পারে।
অবকাঠামো এবং রক্ষণাবেক্ষণের খরচ প্রায়ই অবমূল্যায়ন করা হয়।
সিস্টেমগুলি আরও জটিল হওয়ার সাথে সাথে সুরক্ষা এবং পর্যবেক্ষণযোগ্যতার ফাঁক বাড়তে পারে।
বাস্তবায়ন রোডম্যাপ
বাস্তবায়নের আগে বিলম্ব, গুণমান এবং খরচের লক্ষ্য নির্ধারণ করুন।
বাস্তবসম্মত লোড এবং ডেটা অবস্থার অধীনে বেঞ্চমার্ক।
ত্রুটি, প্রবাহ, এবং ব্যবহারকারীর প্রভাবের জন্য যন্ত্র পর্যবেক্ষণ।
স্কেল করার আগে রোলব্যাক এবং ঘটনার প্রতিক্রিয়া পাথ প্রস্তুত করুন।
অন্বেষণ চালিয়ে যান
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the GPU Memory Management and Fragmentation quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
পরবর্তী গাইড
GPU শিডিউলিং এবং ক্লাস্টার অর্কেস্ট্রেশন
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
GPU মেমরি ম্যানেজমেন্ট এবং ফ্র্যাগমেন্টেশন কি?
কীভাবে AI ফ্রেমওয়ার্কগুলি একটি GPU-তে সীমিত মেমরি বরাদ্দ, পুনঃব্যবহার এবং পুনরুদ্ধার করে এবং কেন অবশিষ্ট ফাঁক (খণ্ডন) মেমরির বাইরের ত্রুটির কারণ হতে পারে এমনকি যখন প্রচুর মেমরি প্রযুক্তিগতভাবে অবশিষ্ট থাকে। এটা বোঝা বড় মডেল ফিট করা এবং রহস্যময় ক্র্যাশ এড়াতে চাবিকাঠি।
GPU মেমরি ফ্র্যাগমেন্টেশন কি?
ফ্র্যাগমেন্টেশন মানে মোট ফ্রি মেমরি যথেষ্ট, কিন্তু এটি টুকরো টুকরো হয়ে গেছে, তাই বড় টেনসরের জন্য কোনো একক ফাঁক যথেষ্ট বড় নয়।
কেন PyTorch মত ফ্রেমওয়ার্ক একটি ক্যাশিং মেমরি বরাদ্দকারী ব্যবহার করে?
প্রতিটি অপের জন্য cudaMalloc/cudaFree কল করা ধীরগতির, তাই ক্যাশিং বরাদ্দকারী বড় ব্লকগুলি ধরে এবং পুল থেকে মুক্ত হওয়াগুলিকে পুনরায় ব্যবহার করে৷
আপনি 5 জিবি ফ্রি দেখতে পাচ্ছেন কিন্তু 2 জিবি টেনসর বরাদ্দ করতে পারবেন না। সম্ভাব্য কারণ কি?
ফ্র্যাগমেন্টেশনের এই ক্লাসিক উপসর্গটি ঘটে যখন মুক্ত মেমরি বিদ্যমান থাকে তবে অনুরোধের জন্য যথেষ্ট বড় একটি সংলগ্ন অংশ হিসাবে নয়।
কোন PyTorch সেটিং মেমরির অংশগুলিকে নমনীয়ভাবে বাড়তে দিয়ে ফ্র্যাগমেন্টেশন কমাতে সাহায্য করে?
PYTORCH_CUDA_ALLOC_CONF প্রসারণযোগ্য_সেগমেন্টগুলি সক্ষম করার জন্য সেট করা বরাদ্দকারীকে সেগমেন্ট বাড়তে দেয় এবং ফ্র্যাগমেন্টেশন-সম্পর্কিত ব্যর্থতা হ্রাস করে।
VLLM-এর PagedAttention অনুমানের সময় মেমরির অপচয় কমাতে কী পরিচালনা করে?
PagedAttention OS ভার্চুয়াল মেমরির মতো নির্দিষ্ট-আকারের পৃষ্ঠাগুলিতে KV ক্যাশে সংরক্ষণ করে, ফ্র্যাগমেন্টেশন কাটা এবং দক্ষতার সাথে অনেক অনুরোধ পরিবেশন করে।