تقاضای حافظه GPU شامل داده و وزنهای در حال استفاده، نتایج میانی، فضاهای کاری زمان اجرا و کشهای وابسته به بار کاری است. اوج مصرف را با دقت، اندازه دسته و همزمانی مورد نظر اندازهگیری کنید؛ اندازه ذخیرهشده مدل تنها یکی از ورودیهاست.
پیش از انتخاب GPU، بار کاری را انتخاب کنید
یک مشخصات GPU زمانی مفید میشود که نرمافزار و کاری که انجام خواهد داد را بدانید. رندر، پردازش تصویر، آموزش و استنتاج الگوهای حافظه و محاسبات متفاوتی دارند. پیش از مقایسه ظرفیت، معماری GPU، درایورها و زمان اجرای پشتیبانیشده برنامه را بررسی کنید. کارتی با حافظه کافی هنوز میتواند نامناسب باشد اگر مسیر نرمافزاری یا ویژگی مورد نیاز پشتیبانی نشود.
حداکثر اندازه ورودی، دقت، اندازه دسته و کار همزمانی که قصد دارید مجاز کنید را توصیف کنید. برای استنتاج، طولانیترین درخواست پشتیبانیشده و نشستهای همزمان را بگنجانید. برای رندر، صحنه و بافتهای نماینده را بگنجانید. یک نمایش کوچک موفق شواهدی است که پشته میتواند شروع شود؛ شواهدی نیست که بار کاری کامل تولید در آن جا میشود.
دادههای پایدار را از حافظه کاری جدا کنید
وزنها یا داراییهای ورودی ممکن است روی دستگاه باقی بمانند در حالی که نتایج میانی و بافرهای موقت در حین اجرا ظاهر میشوند. آموزش میتواند علاوه بر آن به گرادیانها و وضعیت بهینهساز نیاز داشته باشد. بارهای کاری استنتاج ممکن است کشهایی نگه دارند که اندازهشان با درخواست تغییر میکند. ترتیب دقیق به مدل، چارچوب و پیادهسازی بستگی دارد. یک ضریب جهانی واحد را به هر کار اعمال نکنید و آن را تضمین ظرفیت در نظر نگیرید.
بهعنوان یک مثال ساده حسابی، یک مدل فرضی هفت میلیارد پارامتری که با دو بایت به ازای هر پارامتر نمایش داده میشود، برای خود آن پارامترها به حدود چهارده میلیارد بایت نیاز دارد. این محاسبه تخصیصهای زمان اجرا، فعالسازیها، کشها و سربار قالب را کنار میگذارد. این یک مثال برنامهریزی سطح پایینتر است، نه بیانیهای که چنین بار کاری روی یک پیکربندی SwissOctet خاص جا میشود.
| مؤلفه حافظه | چه چیزی آن را تغییر میدهد | چگونه بررسی کنیم |
|---|---|---|
| وزنها یا داراییهای صحنه | اندازه مدل، نمایش و داراییهای بارگذاریشده | قالب مستقرشده و تخصیص واقعی بارگذاریشده را بررسی کنید |
| نتایج میانی | شکل ورودی و اندازه دسته | یک عملیات کامل نماینده را اندازهگیری کنید |
| کشها | طول درخواست و همزمانی | حداکثر بار کاری پشتیبانیشده را تمرین کنید |
| فضاهای کاری و زمان اجرا | کتابخانهها، کرنلها و استراتژی اجرا | اوج مصرف دستگاه و چارچوب را مشاهده کنید |
اوج مصرف را از دیدگاه درست اندازهگیری کنید
معیارهای چارچوب و معیارهای سطح دستگاه میتوانند چیزهای متفاوتی را توصیف کنند. PyTorch بین حافظه تخصیصیافته به تنسورها و حافظه رزروشده توسط تخصیصدهنده کش خود تمایز قائل میشود و معیارهای اوج ارائه میدهد. مستندات تجسم حافظه آن نیز توضیح میدهد که تخصیصهای انجامشده بیرون از تخصیصدهنده آن ممکن است در آن نما ظاهر نشوند. گزارش چارچوب را با وضعیت گستردهتر دستگاه مقایسه کنید، نه اینکه فرض کنید یک عدد همه تخصیصها را پوشش میدهد.
عملیات واقعی را گرم کنید، سپس کل کار و همپوشانی واقعبینانه بین کارها را اندازهگیری کنید. نسخههای نرمافزار و شرایط دقیق ورودی را ثبت کنید. یک رویداد کمبود حافظه ممکن است در یک اوج موقت رخ دهد، بنابراین یک تصویر نهایی آرام میتواند مشکل را از دست بدهد. ضبطهای تشخیصی را زمانی که ممکن است حاوی جزئیات مدل یا اطلاعاتی درباره ورودیهای برنامه شما باشند، خصوصی نگه دارید.
اندازه دسته و دقت را بهعنوان انتخابهای طراحی در نظر بگیرید
دستههای بزرگتر میتوانند هم بهرهوری و هم تقاضای حافظه را تغییر دهند. راهنمای عملکرد NVIDIA درباره تعامل بین شکل عملیات، شدت حسابی و قابلیتهای سختافزار بحث میکند. اندازه دسته مفید به هدف تأخیر بار کاری و همچنین توان عملیاتی بستگی دارد. یک سیاست دستهای که کار تکمیلشده در ثانیه را بیشینه میکند ممکن است کاربران فردی را بیش از آنچه برنامه اجازه میدهد منتظر بگذارد.
دقت کاهشیافته یا کوانتیزهسازی میتواند برخی نیازمندیهای حافظه را کاهش دهد، اما سازگاری و کیفیت خروجی نیاز به آزمون دارند. یک مجموعه داده ارزیابی نگه دارید و نتایج مرتبط را پس از تغییر قالب مقایسه کنید. نمایش یک مدل را صرفاً برای جا شدن آن تغییر ندهید بدون بررسی رفتاری که پروژه به آن وابسته است. بهینهسازی حافظه باید نتیجه مورد نیاز را حفظ کند، نه اینکه فقط از یک خطای تخصیص اجتناب کند.
بقیه ماشین را در بودجه لحاظ کنید
CPU، RAM میزبان و مسیر ذخیرهسازی کار GPU را آماده و تغذیه میکنند. رمزگشایی کند ورودی یا حافظه میزبان ناکافی میتواند شتابدهنده را منتظر بگذارد. فایلهای بزرگ مدل و مجموعهدادهها نیز به فضای دیسک کافی برای نصب، تبدیلهای موقت و بهروزرسانیها نیاز دارند. کل خط لوله را ارزیابی کنید، نه اینکه یک GPU بخرید و انتظار داشته باشید هر مرحله پیشین سریعتر شود.
چند GPU بهطور خودکار مانند یک دستگاه حافظه تجمیعی واحد رفتار نمیکنند. برنامه باید از یک استراتژی موازی مناسب استفاده کند، و سربار ارتباط میتواند مهم باشد. تأیید کنید که چند دستگاه ارائه میشود، حافظه هر کدام چقدر است و ترتیب پشتیبانیشده نرمافزار چیست. فهرستی از نامهای ارتقای GPU توصیف تأییدشدهای از حافظه در دسترس برای یک فرایند تغییرنیافته نیست.
از یک آزمون پذیرش نماینده استفاده کنید
یک آزمون با پشته نرمافزاری انتخابشده، حداکثر ورودی مورد انتظار و همزمانی مجاز تعریف کنید. اوج حافظه، زمان تکمیل، خطاها و کیفیت خروجی را اندازهگیری کنید. مقداری فضای اضافی برای تغییرات عادی زمان اجرا و نگهداری نگه دارید، با مقداری که با مشاهدات توجیه شود. اگر بار کاری جا نمیشود، تصمیم بگیرید که همزمانی را کاهش دهید، پیادهسازی را تغییر دهید یا سختافزار متفاوتی انتخاب کنید.
Tensor GPU انتخابهای مرتبط با GPU را در کاتالوگ SwissOctet ارائه میدهد. پیش از اتکا به آن، دستگاه دقیق، VRAM هر دستگاه، سازگاری درایور و پیکربندی انتخابشده را تأیید کنید. این سایت تضمین جا شدن مخصوص برنامه ارائه نمیدهد. یک آزمون پذیرش مستند، آن جزئیات سختافزاری را با کاری که نیاز دارید ماشین انجام دهد مرتبط میکند.
چکلیست عملی شما.
- معماری و زمان اجرای پشتیبانیشده GPU را تأیید کنید.
- وزنها، میانیها، کشها و فضاهای کاری را بودجهبندی کنید.
- اوجها را در حداکثر ورودی و همزمانی مورد نظر اندازهگیری کنید.
- نمای حافظه چارچوب و سطح دستگاه را مقایسه کنید.
- خروجی را پس از تغییرات دقت یا قالب اعتبارسنجی کنید.
- پیش از سفارش، VRAM دقیق هر دستگاه را تأیید کنید.
جزئیاتی که اهمیت دارند.
آیا اندازه ذخیرهشده مدل برابر با تقاضای VRAM است؟+
خیر. اجرا نتایج میانی، فضاهای کاری، کشها و تخصیصهای دیگر را اضافه میکند، در حالی که قالبهای ذخیرهسازی میتوانند با نمایشهای درون حافظه متفاوت باشند.
آیا افزودن یک GPU دوم بهطور خودکار حافظه قابل استفاده را دو برابر میکند؟+
خیر. برنامه به یک استراتژی موازی مناسب نیاز دارد. محدودیتهای هر دستگاه و رفتار ارتباطی همچنان مهم هستند.
آیا دقت کاهشیافته همیشه میتواند یک مشکل کمبود حافظه را حل کند؟+
خیر. ممکن است برخی تخصیصها را کاهش دهد، اما پشتیبانی، بافرهای باقیمانده و کیفیت خروجی قابل قبول باید آزمایش شوند.
به منبع بروید.
این منابع از مفاهیم فنی این راهنما پشتیبانی میکنند. پیش از تغییر یک سیستم تولیدی، مستندات جاری را دنبال کنید.
- NVIDIA: شروع کار با عملکرد یادگیری عمیق docs.nvidia.com
- PyTorch: درک مصرف حافظه CUDA docs.pytorch.org
- PyTorch: مدیریت حافظه CUDA docs.pytorch.org
راهنمایی تحریریه توسط SwissOctet. مثالها نمایشی هستند. مشخصات خدمات، گزینههای موجود و شرایط قراردادی باید جداگانه تأیید شوند.