يتحكم في كيفية تنظيف موارد TensorFlow عندما لا تكون هناك حاجة إليها.
يتم حذف جميع الموارد المخصصة أثناء جلسة EagerSession
عند إغلاق الجلسة. لمنع أخطاء نفاد الذاكرة، يُقترح أيضًا تنظيف هذه الموارد أثناء الجلسة. على سبيل المثال، سيؤدي تنفيذ عمليات n في حلقة من التكرارات إلى تخصيص الحد الأدنى من موارد n*m بينما في معظم الحالات، لا يزال يتم استخدام موارد التكرار الأخير فقط.
يمكن إخطار مثيلات EagerSession
بطرق مختلفة عندما لا تتم إحالة كائنات TensorFlow، حتى تتمكن من متابعة تنظيف أي موارد تمتلكها.
الطرق الموروثة
قيم التعداد
النهائي العام الثابت EagerSession.ResourceCleanupStrategy IN_BACKGROUND
مراقبة وحذف الموارد غير المستخدمة من موضوع جديد يعمل في الخلفية.
هذا هو الأسلوب الأكثر موثوقية لتنظيف موارد TensorFlow، على حساب بدء وتشغيل مؤشر ترابط إضافي مخصص لهذه المهمة. كل مثيل EagerSession
له مؤشر ترابط خاص به، والذي يتوقف فقط عند إغلاق الجلسة.
يتم استخدام هذه الإستراتيجية بشكل افتراضي.
النهائي العام الثابت EagerSession.ResourceCleanupStrategy ON_SAFE_POINTS
مراقبة وحذف الموارد غير المستخدمة من المواضيع الموجودة، قبل أو بعد إكمال مهمة أخرى.
يتم تحرير الموارد غير المستخدمة عندما يصل استدعاء مكتبة TensorFlow إلى نقطة آمنة للتنظيف. يتم ذلك بشكل متزامن وقد يؤدي إلى حظر مؤشر الترابط الذي قام بتشغيل تلك المكالمة لفترة قصيرة من الوقت.
يجب استخدام هذه الإستراتيجية فقط في حالة عدم تخصيص مؤشر ترابط إضافي للتنظيف، لبعض الأسباب. بخلاف ذلك، يجب تفضيل IN_BACKGROUND
.
النهائي العام الثابت EagerSession.ResourceCleanupStrategy ON_SESSION_CLOSE
احذف الموارد فقط عندما تكون الجلسة مغلقة.
ستبقى جميع الموارد المخصصة أثناء الجلسة في الذاكرة حتى يتم إغلاق الجلسة بشكل صريح (أو عبر تقنية "المحاولة باستخدام المورد" التقليدية). لن تتم محاولة أي مهمة إضافية لتنظيف الموارد.
يمكن أن تؤدي هذه الإستراتيجية إلى حدوث أخطاء نفاد الذاكرة ولا يوصى باستخدامها، إلا إذا كان نطاق الجلسة محدودًا بتنفيذ كمية صغيرة فقط من العمليات.