प्रौद्योगिकी साझेदारी

TensorFlow 2 GPU स्मृतिः कुशलतया प्रबन्धयितुं व्यावहारिकः मार्गदर्शकः

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

प्रस्तावना

प्रशिक्षणार्थं वा भविष्यवाणीं वा TensorFlow 2 इत्यस्य उपयोगं कुर्वन् GPU स्मृतेः सम्यक् प्रबन्धनं महत्त्वपूर्णम् अस्ति । GPU स्मृतिः प्रभावीरूपेण प्रबन्धयितुं विमोचनं च कर्तुं असफलतायाः कारणेन स्मृति-लीकं भवितुम् अर्हति, यत् अनन्तरं कम्प्यूटिंग्-कार्यं प्रभावितं कर्तुं शक्नोति । अस्मिन् लेखे वयं GPU स्मृतिः प्रभावीरूपेण मुक्तं कर्तुं अनेकाः उपायाः अन्वेषयामः, पारम्परिकरूपेण अपि च यदा कार्यं समाप्तुं बाध्यं भवति ।

1. पारम्परिकाः विडियो स्मृतिप्रबन्धनविधयः
1. पूर्वनिर्धारितं चित्रं पुनः सेट् कुर्वन्तु

प्रत्येकं समये भवन्तः नूतनं TensorFlow आलेखं चालयन्ति, आह्वानं कृत्वा tf.keras.backend.clear_session() वर्तमान TensorFlow आलेखं मुक्तस्मृतिं च स्वच्छं कर्तुं ।

import tensorflow as tf
tf.keras.backend.clear_session()
2. GPU स्मृतिप्रयोगं सीमितं कुर्वन्तु

विडियो मेमोरी उपयोगनीतिं सेट् कृत्वा भवान् GPU विडियो मेमोरी इत्यस्य अधिकं कब्जां निवारयितुं शक्नोति ।

  • माङ्गल्यां विडियो स्मृतिप्रयोगं वर्धयन्तु

    import tensorflow as tf
    
    gpus = tf.config.experimental.list_physical_devices('GPU')
    if gpus:
        try:
            for gpu in gpus:
                tf.config.experimental.set_memory_growth(gpu, True)
        except RuntimeError as e:
            print(e)
    
  • विडियो स्मृतिप्रयोगं सीमितं कुर्वन्तु

    import tensorflow as tf
    
    gpus = tf.config.experimental.list_physical_devices('GPU')
    if gpus:
        try:
            tf.config.experimental.set_virtual_device_configuration(
                gpus[0],
                [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=4096)])  # 限制为 4096 MB
        except RuntimeError as e:
            print(e)
    
3. GPU स्मृतिं मैन्युअल् रूपेण विमोचयन्तु

प्रशिक्षणस्य वा भविष्यवाणीयाः अनन्तरं प्रयोगः gc मॉड्यूल् तथा TensorFlow इत्यस्य स्मृतिप्रबन्धनकार्यं GPU स्मृतिं मैन्युअल् रूपेण मुक्तं करोति ।

import tensorflow as tf
import gc

tf.keras.backend.clear_session()
gc.collect()
4. प्रयोगः with कथन प्रबन्धन सन्दर्भ

प्रशिक्षणे अथवा भविष्यवाणीसङ्केते प्रयुक्तम् with संसाधनविमोचनं स्वयमेव प्रबन्धयितुं कथनम् ।

import tensorflow as tf

def train_model():
    with tf.device('/GPU:0'):
        model = tf.keras.models.Sequential([
            tf.keras.layers.Dense(64, activation='relu', input_shape=(32,)),
            tf.keras.layers.Dense(10, activation='softmax')
        ])
        model.compile(optimizer='adam', loss='categorical_crossentropy')
        # 假设 X_train 和 y_train 是训练数据
        model.fit(X_train, y_train, epochs=10)

train_model()
2. कार्याणि बलात् समाप्तं कुर्वन् विडियो स्मृतिप्रबन्धनम्

कदाचित् GPU स्मृतिं मुक्तुं अस्माभिः TensorFlow कार्यं बलात् समाप्तं कर्तव्यम् ।अस्मिन् सति Python इत्यस्य उपयोगं कुर्वन्तुmultiprocessing मॉड्यूल वाos मॉड्यूल्स् संसाधनानाम् कुशलतापूर्वकं प्रबन्धनं कर्तुं शक्नुवन्ति ।

1. प्रयोगः multiprocessing मॉड्यूल

पृथक् प्रक्रियासु TensorFlow कार्याणि चालयित्वा आवश्यकतायां विडियो स्मृतिः मुक्तं कर्तुं सम्पूर्णं प्रक्रियां मारयितुं शक्यते ।

import multiprocessing as mp
import tensorflow as tf
import time

def train_model():
    model = tf.keras.models.Sequential([
        tf.keras.layers.Dense(64, activation='relu', input_shape=(32,)),
        tf.keras.layers.Dense(10, activation='softmax')
    ])
    model.compile(optimizer='adam', loss='categorical_crossentropy')
    # 假设 X_train 和 y_train 是训练数据
    model.fit(X_train, y_train, epochs=10)

if __name__ == '__main__':
    p = mp.Process(target=train_model)
    p.start()
    time.sleep(60)  # 例如,等待60秒
    p.terminate()
    p.join()  # 等待进程完全终止
2. प्रयोगः os मॉड्यूल प्रक्रिया समाप्तं करोति

प्रक्रिया ID प्राप्त्वा उपयोगेन च os मॉड्यूल् यत् TensorFlow प्रक्रियां बलात् समाप्तुं शक्नोति ।

import os
import signal
import tensorflow as tf
import multiprocessing as mp

def train_model():
    pid = os.getpid()
    with open('pid.txt', 'w') as f:
        f.write(str(pid))

    model = tf.keras.models.Sequential([
        tf.keras.layers.Dense(64, activation='relu', input_shape=(32,)),
        tf.keras.layers.Dense(10, activation='softmax')
    ])
    model.compile(optimizer='adam', loss='categorical_crossentropy')
    # 假设 X_train 和 y_train 是训练数据
    model.fit(X_train, y_train, epochs=10)

if __name__ == '__main__':
    p = mp.Process(target=train_model)
    p.start()
    time.sleep(60)  # 例如,等待60秒
    with open('pid.txt', 'r') as f:
        pid = int(f.read())
    os.kill(pid, signal.SIGKILL)
    p.join()

सारांशं कुरुत

प्रशिक्षणार्थं वा भविष्यवाणीं वा TensorFlow 2 इत्यस्य उपयोगं कुर्वन् GPU स्मृतिः सम्यक् प्रबन्धयितुं विमोचनं च महत्त्वपूर्णम् अस्ति ।पूर्वनिर्धारितं मानचित्रं पुनः सेट् कृत्वा, विडियो स्मृतिप्रयोगं सीमितं कृत्वा, विडियोस्मृतिं मैन्युअल् रूपेण मुक्तं कृत्वा, उपयोगेन चwith कथनप्रबन्धनसन्दर्भः स्मृतिलीकसमस्याः प्रभावीरूपेण परिहर्तुं शक्नोति।यदा भवन्तः बलात् कार्यं समाप्तुं प्रवृत्ताः भवन्ति तदा उपयोगं कुर्वन्तुmultiprocessing मॉड्यूल् तथाos मॉड्यूल् इत्यनेन सुनिश्चितं कर्तुं शक्यते यत् विडियो स्मृतिः समये एव मुक्तः भवति । एतेषां पद्धतीनां माध्यमेन GPU संसाधनानाम् कुशलं उपयोगः सुनिश्चितं कर्तुं शक्यते तथा च कम्प्यूटिंगकार्यस्य स्थिरता, कार्यप्रदर्शने च सुधारः कर्तुं शक्यते ।