اذهب إلى المحتوى

السؤال

نشر

قمت  ب تحميل ابونتو ب داخل  WLS وقمت ب تحميل المكتبات ب داخل بيئه افتراضيه ب داخل ابونتو و تحميل الجبيتار 
وكل شي شغال قمت ب تطبيق مع المعلم في :

الرئيسية

دورات تعليمية

دورة الذكاء الاصطناعي

التعلم العميق Deep Learning

التعرف على الصور باستخدام الشبكات التلافيفية

03. البحث الشبكي لإيجاد قيم معاملات الشبكة العصبية

 

بحيث التدريب ياخذ وقتا طويلا لذالك قمت ب تشغيل الجبيتار ب ابونتو لكي يكون اسرع لانه يستخدم ال GPU و لحظت فرق السرعه وكانت الامور بخير ولكن فيه مشكله تظهر اخطا ورنقيس عندما اشغل الخليات 
عند تحميل ال ور من الجهاز ب داخل المشروع :
 

WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1791889562.862837    1665 cpu_feature_guard.cc:227] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.

ايضا هذا يحصل الخطا عندما اشغل عملية البحث الشبكي :

Fitting 5 folds for each of 8 candidates, totalling 40 fits
I0000 00:00:1791889604.057263    1665 gpu_device.cc:2043] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 5560 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 4060 Laptop GPU, pci bus id: 0000:01:00.0, compute capability: 8.9
W0000 00:00:1791889606.729477    1665 cpu_allocator_impl.cc:82] Allocation of 491520000 exceeds 10% of free system memory.
W0000 00:00:1791889608.140843    1665 cpu_allocator_impl.cc:82] Allocation of 491520000 exceeds 10% of free system memory.
I0000 00:00:1791889610.600192    1761 service.cc:153] XLA service 0x750d44033ab0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
I0000 00:00:1791889610.600240    1761 service.cc:161]   StreamExecutor [0]: NVIDIA GeForce RTX 4060 Laptop GPU, Compute Capability 8.9 (Driver: 13.3.0; Runtime: 12.9.0; Toolkit: 12.5.0; DNN: 9.27.0)
I0000 00:00:1791889610.663175    1761 dump_mlir_util.cc:269] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.
I0000 00:00:1791889611.060303    1761 cuda_dnn.cc:461] Loaded cuDNN version 92700
I0000 00:00:1791889611.169698    1761 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_2423__.35
I0000 00:00:1791889621.567903    1761 device_compiler.h:208] Compiled cluster using XLA!  This line is logged at most once for the lifetime of the process.
[CV] END model__dense_dropout=0.4, model__dense_units=256, model__dropout=0.2, model__filters=32, model__kernel_size=(3, 3), model__opt=adam, model__pool_size=(2, 2); total time=  31.2s
W0000 00:00:1791889635.164034    1665 cpu_allocator_impl.cc:82] Allocation of 491520000 exceeds 10% of free system memory.
W0000 00:00:1791889636.935587    1665 cpu_allocator_impl.cc:82] Allocation of 491520000 exceeds 10% of free system memory.
I0000 00:00:1791889640.155196    1761 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_12401__.35
[CV] END model__dense_dropout=0.4, model__dense_units=256, model__dropout=0.2, model__filters=32, model__kernel_size=(3, 3), model__opt=adam, model__pool_size=(2, 2); total time=  19.7s
W0000 00:00:1791889654.644878    1665 cpu_allocator_impl.cc:82] Allocation of 491520000 exceeds 10% of free system memory.
I0000 00:00:1791889659.373453    1760 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_22379__.35
[CV] END model__dense_dropout=0.4, model__dense_units=256, model__dropout=0.2, model__filters=32, model__kernel_size=(3, 3), model__opt=adam, model__pool_size=(2, 2); total time=  20.7s
I0000 00:00:1791889680.673699    1761 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_32357__.35
[CV] END model__dense_dropout=0.4, model__dense_units=256, model__dropout=0.2, model__filters=32, model__kernel_size=(3, 3), model__opt=adam, model__pool_size=(2, 2); total time=  21.4s
I0000 00:00:1791889701.863301    1759 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_42335__.35
[CV] END model__dense_dropout=0.4, model__dense_units=256, model__dropout=0.2, model__filters=32, model__kernel_size=(3, 3), model__opt=adam, model__pool_size=(2, 2); total time=  21.5s
I0000 00:00:1791889723.813488    1757 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_52321__.35
[CV] END model__dense_dropout=0.4, model__dense_units=256, model__dropout=0.2, model__filters=64, model__kernel_size=(3, 3), model__opt=adam, model__pool_size=(2, 2); total time=  28.6s
I0000 00:00:1791889752.060141    1759 dot_merger.cc:481] Merging Dots in computation: a_inference_one_step_on_data_62307__.35

 

ف هل هذه الاخطا تسبب مشاكل ايضا اهم شي والي كتبت السوال ذا علشانه وهو الرام حرفيا ال WLS ياخذ تقريبا 1 قيقا قبل ما ادرب النموذج وعند تشغيل الخليه ترتفع تدريجيا ل 8 او 9 قيقا كامله هل ذا شي طبيعي وايضا عند الانتها تنزل فقط وتصير 6 قيقا بس ما ترجع زي قبل ف هل يوجد حل حتى ان النموذج مره من المرات توقف كل شي توقف الجبيتار لا اعلم و الرام عندي 16 قيقا و تمتلي تصير لعند ال 14 

Recommended Posts

  • 0
نشر

يرجئ الاجابه على سوالي السابق ,لان المشكله تمنعني من اكمال الدروس ب تعلم العميق .

  • 0
نشر

التدريب نفسه يعمل بشكل سليم ولا يوجد خطأ.

Allocation of 491520000 exceeds 10% of free system memory الرسالة المهمة وهي تحذير وليس خطأ، تعني TensorFlow حجز  470MB وذلك حجم داتا CIFAR-10 تقريباً بصيغة float32، أي أمر طبيعي، لكنه يحذرك لأن الذاكرة الحرة المتبقية قليلة.

لينكس يحتفظ بالملفات والبيانات التي استخدمتها في الرام احتياطاً لأنها قد تُطلب مرة أخرى، الـ 6GB المتبقية بعد الانتهاء معظمها من هذا النوع  تُحرر تلقائياً لو احتاجها برنامج آخر.

مخصص ذاكرة TensorFlow لا يعيد الذاكرة للنظام فوراً، بل يبقيها في مسبح خاص لإعادة استخدامها، وكل Fold ينسخ جزءاً من الداتا، ومع 40 تدريبات تتراكم النسخ.

قم بإنشاء ملف باسم .wslconfig في مجلد المستخدم بالويندوز:

C:\Users\<اسم_المستخدم>\.wslconfig

وضع فيه:

[wsl2]
memory=8GB
swap=8GB

[experimental]
autoMemoryReclaim=gradual
  • memory=8GB يحمي الويندوز من أن يستحوذ WSL على كل الرام وبالتالي لن يتجمد الجهاز مرة أخرى.
  • autoMemoryReclaim في ويندوز 11 تعيد الذاكرة المخبأة إلى الويندوز تدريجياً.

قم بالحفظ ثم أعد فتح أوبونتو:

wsl --shutdown

وفي أول خلية قبل بناء أي نموذج ضع:

import tensorflow as tf

for gpu in tf.config.list_physical_devices('GPU'):
    tf.config.experimental.set_memory_growth(gpu, True)

ومفادها بدلاً من أن يستحوذ TensorFlow كل الـ 5.5GB من كرت الشاشة مرة واحدة، يأخذ فقط ما يحتاجه.

ولديك التدريبات تعمل بعمليات متوازية (أرقام عمليات مختلفة 1757, 1759, 1760)، أي أن n_jobs أكبر من 1. مع الـ GPU وذلك يضاعف استهلاك الرام وذاكرة كرت الشاشة (كل عملية تحاول حجز ذاكرتها)،  لذا اجعل n_jobs=1 في البحث الشبكي:

grid = GridSearchCV(estimator=model, param_grid=param_grid,
                    cv=5, n_jobs=1, verbose=2) 

وتنظيف الذاكرة بعد انتهاء التدريب:

import gc

del grid_result, grid, model
gc.collect()
tf.keras.backend.clear_session()

حيث في Jupyter إعادة تشغيل الـ Kernel تعيد الرام لـ 1GB تقريباً.

  • 0
نشر

كل شيء طبيعي و ليس أخطاء، لكن موضوع الرام يحتاج تعديلات بسيطة.

ليش الرام يرتفع ولا ينزل؟

ارتفاعه لـ 8–9 جيجا أثناء التدريب طبيعي. الصور تتحمل في الرام، وTensorFlow يسوي نسخ منها (التحذير اللي يقول 491 ميجا تقريباً هو نسخة من بياناتك). والبحث الشبكي يدرّب 40 مرة، فيتكرر هذا.

عدم نزوله بعد الانتهاء طبيعي أيضاً وله سببان:

  • Python وTensorFlow ما يرجعون الذاكرة لنظام التشغيل فوراً، يحتفظون فيها لاستخدامها لاحقاً.
  • WSL2 نفسه ما يرجع الرام لويندوز بسهولة، فيبقى محجوزاً حتى لو Python تحرر منه.

توقف كل شي غالباً الرام امتلأ (وصل 14 من 16)، لأن ويندوز نفسه يحتاج رام. هذا السبب الأرجح.

ولحل هذه المشكلة حدّد رام WSL. أنشئ أو عدّل الملف

C:\Users\اسم_المستخدم\.wslconfig:
[wsl2]
memory=10GB
swap=8GB

[experimental]
autoMemoryReclaim=gradual

ثم في PowerShell نفّذ

wsl --shutdown

وافتح Ubuntu من جديد. هذا يمنع WSL من أكل كل الرام، ويخلي ويندوز يسترجع الذاكرة تدريجياً.

  • 0
نشر

تلك الرسائل هي مجرد تحذيرات وليست أخطاء، وارتفاع الرام إلى 8 أو 9 جيقا طبيعي لأن كل مرة تدريب في البحث الشبكي تنسخ البيانات، وبقاؤه مرتفعا بعد الانتهاء طبيعي أيضا لأن TensorFlow ولينكس وWSL لا يعيدون الذاكرة فورا، أما التوقف فسببه غالبا امتلاء الرام.

والحل هنا أن تنشئ ملف:

  • C:\Users\اسم_المستخدم.wslconfig

وتكتب فيه:

[wsl2]

memory=8GB

swap=8GB

 [experimental]

autoMemoryReclaim=gradual

وتنفذ الأمر wsl --shutdown، وتجعل n_jobs=1 في GridSearchCV. وبعد انتهاء التدريب نفذ del للمتغيرات ثم gc.collect() وtf.keras.backend.clear_session()، أو أعد تشغيل ال Kernel.

  • 0
نشر

التحذيرات ليست أخطاء ولا تؤثر على النتائج، والرقم 491520000 بايت (حوالي 469MB) هو حجم 40000 صورة CIFAR-10 بصيغة float32، أي مجموعة التدريب لكل fold، وTensorFlow ينسخها في كل fit داخل GridSearchCV فيتكرر التحذير.

أما ارتفاع الرام إلى 8-9GB سببه تراكم نسخ البيانات وبقايا النماذج السابقة، وعدم هبوطه بعد الانتهاء سببه أن Python لا يعيد الذاكرة الفارغة للنظام وأن WSL2 لا يرجعها لويندوز إلا مع autoMemoryReclaim، أما ال 6GB المتبقية فمعظمها page cache وليست مشكلة.

وتوقف Jupyter غالباسببه وصول الرام إلى 14 من 16GB فيقتله النظام أو يتجمد ويندوز.

ولحل ذلك أنشئ الملف C:\Users\اسمك\.wslconfig واكتب فيه [wsl2] ثم memory=10GB وswap=8GB ثم [experimental] ثم autoMemoryReclaim=gradual، ثم نفّذ الأمر التالي:

wsl --shutdown

في PowerShell مع جعل n_jobs=1 في GridSearchCV لأن العمليات المتوازية تضاعف النسخ وتتنافس على ذاكرة الـGPU، وفعّل tf.config.experimental.set_memory_growth(gpu, True) في أول خلية، وبعد انتهاء البحث نفّذ del grid ثم gc.collect() ثم tf.keras.backend.clear_session()، وإن بقي الرام مرتفعا فأعد تشغيل ال Kernel.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...