به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام
روی یک سیستم گرافیک 980ti با گرافیک 4 گیگ روی ویندوز 7 با رم 8
روی یک سیستم دیگه 1080ti با گرافیک 11 گیگ روی ubuntu با رم 16 و هارد ssd
یک کد رو اجرا کردم
روی سیستم 980ti با batch size= 16 گرافیک 3800 مگش پر شد یعنی هر بچش 237 مگ گرفته
روی سیستم 1080ti با batch size= 24 گرافیک 10700 مگش پر میشه یعنی هر بچش 445 مگ گرفته !
چرا مقدار حافظه ی گرفته شده تو دو گرافیک انقدر فرق داره ؟
باید تنظیم خاصی انجام بدم ؟
با تشکر

توسط (208 امتیاز)

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام
اگه از تنسورفلو استفاده میکنید بنظرم میاد این عادیه چون تنسورفلو کل فضای gpu رو اشغال میکنه و بعد خودش مدیریت رو انجام میده .(سابقا اینو چندبار دیدم نمیدونم الان هم هست یا نه در ورژن جدید تست نکردم) میتونید با معماری خیلی سبکتری تست کنید و باید ببینید که اونجا هم باید در 1080 کل فضای رم شما اشغال میشه.
کلا هر کارت گرافیکی استفاده کنید تقریبا همه فضاش رو بدون توجه به اینکه واقعا خود معماری چقدر مصرف داره اشغال میکنه.

آپدیت :
سرچی که کردم به موارد زیر رسیدم . طبق مستندات خود تنسورفلو برای اینکه این مشکل رو برطرف کنید دو راه دارید
1. در داخل کد مشخص کنید که بر اساس مصرف معماری حافظه اختصاص پیدا کنه . برای اینکار از کد زیر استفاده کنید

config = tf.ConfigProto()
config.gpu_options.allow_growth=True
sess = tf.Session(config=config)

فقط این نکته ای که داره اینه که گفتن در این حالت ما خودمون حافظه رو ازاد نمیکنیم چون اگ راینکارو بکنیم پرفورمنس خیلی بد میشه!

2) برای هر gpu در سیستم یک حد بالایی مشخص کنید مثلا 40% فضای حافظه کارتهای گرافیک قابل استفاده باشه برای اینکار باید از گزینه per_process_gpu_memory_fraction در gpu_options استفاده کنید و مقدار اون رو برابر درصد مورد نظر قرار بدید و بعد موقع ساخت session ازش استفاده کنید : مثل زیر : .

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config, ...)
توسط (4.3k امتیاز)
انتخاب شده توسط
سلام خب اگه 4 گیگ بود پس همون بحث اوله . یعنی تنسورفلو کل فضای گرافیک رو میگیره. نسبت اشغال فضا هم در هر دو کارت یکیه. بعنوان مثال 92 93 درصد فضا در کارت اول اشغال شده . در کارت دوم هم به همین شکل. یعنی هیچ کاری نکنید اینه. و ربطی به این نداره که بچ اونجا انقدر فضا گرفته اینجا انقدر. حالا برای اینکه دقیق بدست بیارید مصرف حافظه هرکدوم چقدره میتونید از اون لینکی که بالا دادم استفاده کنید یا کلا allow_growth رو true کنید و با یک بچ یکسان در هر دو تست بگیرید و مصرف حافظه رو چک کنید.
سلام منظورم رو متوجه نشدید
من میزان حافظه مصرف شده رو با یه تقریبی میدونم علت اینکه روی 1080ti هر بچ مقدار دو برابر بیشتر از 980  حافظه رو میگیره رو نمیفهمم(منظورم اینه که گرافیک خوب خریدم بشه تعداد بچ بیشتری روش قرار داد نه اینکه با اضافه کردن 7 گیگ گرافیک (11 گیگ به نسبت 4 گیگ گرافیک 980) فقط بشه 8 بچ اضافه کنم.  اگر تناسب ببندیم 16 بچ روی 980 ران میشه باید روی 1080ti بشه 44 بچ ران کرد!
ولی با 24 بچ کل حافظه ی 1080tiپر میشه و 25 میدم خطا میده که حافظه پر شده (هیچ چیز دیگه ای هم ران نیست چک کردم)
درسته. عرض من اینه شما دقیق امار مصرفی رو در بیارید تا مشخص بشه ایا جایی لیکی وجود داره که خطا میده یا بحث دیگه ایه . اینکه نسبت ها نمیخونه و در 1080ti باید بچ بزرگتری رو زد درسته ولی من میگم اطلاعات رو بدست بیارید ببینید اندازه بچی که با 24 مثلا میزنید دقیقا چقدر از حافظه رو اشغال میکنه بقیه اش ایا بخاطر لیک شدن حافظه اس که خطا میده یا نه کلا دوبرابر بیشتر داره اختصاص میده.
اینو باید تو issues تنسورفلو مطرح کنید و برای اینکه اونجا جواب درست بگیرید لازمه این اطلاعات اولیه رو هم ضمیمه کنید تا سریعتر اونجا پیگیری کنن .
با لینکی که خدمتتون دادم تو استک اورفلو بنظر میاد بطور دقیق میشه مصرف حافظه رو در جاهای مختلف گراف دیدو چک کرد اینطور بهتر میشه فهمید گیر کار ازکجاست.
...