XProf ব্যবহার করে TensorFlow কর্মক্ষমতা অপ্টিমাইজ করুন

এই নির্দেশিকাটি দেখায় যে কীভাবে XProf-এর সাথে উপলব্ধ সরঞ্জামগুলি ব্যবহার করে হোস্ট (CPU), ডিভাইস (GPU), অথবা হোস্ট এবং ডিভাইস (গুলি) উভয়ের সংমিশ্রণে আপনার TensorFlow মডেলগুলির কর্মক্ষমতা ট্র্যাক করতে হয়।

প্রোফাইলিং আপনার মডেলের বিভিন্ন টেনসরফ্লো অপারেশনের (অপস) হার্ডওয়্যার রিসোর্স খরচ (সময় এবং মেমরি) বুঝতে সাহায্য করে এবং পারফরম্যান্সের বাধাগুলি সমাধান করে এবং পরিণামে, মডেলটিকে দ্রুত কার্যকর করতে সাহায্য করে।

এই নির্দেশিকাটি আপনাকে বিভিন্ন ধরণের সরঞ্জাম কীভাবে ব্যবহার করতে হয় এবং প্রোফাইলার কীভাবে কর্মক্ষমতা ডেটা সংগ্রহ করে তার বিভিন্ন পদ্ধতি সম্পর্কে জানাবে।

আপনি যদি ক্লাউড টিপিইউ-তে আপনার মডেলের পারফরম্যান্স প্রোফাইল করতে চান, তাহলে ক্লাউড টিপিইউ গাইডটি দেখুন।

কর্মক্ষমতা তথ্য সংগ্রহ করুন

XProf আপনার TensorFlow মডেলের হোস্ট কার্যকলাপ এবং GPU ট্রেস সংগ্রহ করে। আপনি প্রোগ্রাম্যাটিক মোড অথবা স্যাম্পলিং মোডের মাধ্যমে পারফরম্যান্স ডেটা সংগ্রহ করতে XProf কনফিগার করতে পারেন।

প্রোফাইলিং API গুলি

প্রোফাইলিং করার জন্য আপনি নিম্নলিখিত API গুলি ব্যবহার করতে পারেন।

  • TensorBoard Keras কলব্যাক ব্যবহার করে প্রোগ্রাম্যাটিক মোড ( tf.keras.callbacks.TensorBoard )

    # Profile from batches 10 to 15
    tb_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir,
                                                 profile_batch='10, 15')
    
    # Train the model and use the TensorBoard Keras callback to collect
    # performance profiling data
    model.fit(train_data,
              steps_per_epoch=20,
              epochs=5,
              callbacks=[tb_callback])
    
  • tf.profiler ফাংশন API ব্যবহার করে প্রোগ্রাম্যাটিক মোড

    tf.profiler.experimental.start('logdir')
    # Train the model here
    tf.profiler.experimental.stop()
    
  • প্রসঙ্গ ব্যবস্থাপক ব্যবহার করে প্রোগ্রাম্যাটিক মোড

    with tf.profiler.experimental.Profile('logdir'):
        # Train the model here
        pass
    
  • স্যাম্পলিং মোড: আপনার TensorFlow মডেল রান দিয়ে একটি gRPC সার্ভার শুরু করতে tf.profiler.experimental.server.start ব্যবহার করে অন-ডিমান্ড প্রোফাইলিং করুন। gRPC সার্ভার শুরু করে এবং আপনার মডেল রান করার পরে, আপনি XProf-এ Capture Profile বোতামের মাধ্যমে একটি প্রোফাইল ক্যাপচার করতে পারেন। যদি TensorBoard ইন্সট্যান্স ইতিমধ্যেই চালু না থাকে তবে উপরের Install profiler বিভাগে স্ক্রিপ্টটি ব্যবহার করুন।

    উদাহরণস্বরূপ,

    # Start a profiler server before your model runs.
    tf.profiler.experimental.server.start(6009)
    # (Model code goes here).
    #  Send a request to the profiler server to collect a trace of your model.
    tf.profiler.experimental.client.trace('grpc://localhost:6009',
                                          'gs://your_tb_logdir', 2000)
    

    একাধিক কর্মীর প্রোফাইলিংয়ের একটি উদাহরণ:

    # E.g., your worker IP addresses are 10.0.0.2, 10.0.0.3, 10.0.0.4, and you
    # would like to profile for a duration of 2 seconds.
    tf.profiler.experimental.client.trace(
        'grpc://10.0.0.2:8466,grpc://10.0.0.3:8466,grpc://10.0.0.4:8466',
        'gs://your_tb_logdir',
        2000)
    

প্রোফাইল ডায়ালগ ক্যাপচার করুন

ক্যাপচার প্রোফাইল ডায়ালগ ব্যবহার করে নির্দিষ্ট করুন:

  • প্রোফাইল পরিষেবা URL বা TPU নামের একটি কমা-বিভাজিত তালিকা।
  • একটি প্রোফাইলিং সময়কাল।
  • ডিভাইস, হোস্ট এবং পাইথন ফাংশন কল ট্রেসিংয়ের স্তর।
  • প্রথমে ব্যর্থ হলে প্রোফাইলার কতবার প্রোফাইল ক্যাপচার করার চেষ্টা করুক তা আপনি চান?

কাস্টম প্রশিক্ষণ লুপগুলির প্রোফাইলিং

আপনার TensorFlow কোডে কাস্টম ট্রেনিং লুপ প্রোফাইল করতে, XProf-এর ধাপের সীমানা চিহ্নিত করতে tf.profiler.experimental.Trace API দিয়ে ট্রেনিং লুপটি ইন্সট্রুমেন্ট করুন।

ধাপের নামের জন্য name আর্গুমেন্টটি একটি উপসর্গ হিসেবে ব্যবহৃত হয়, step_num কীওয়ার্ড আর্গুমেন্টটি ধাপের নামের সাথে যুক্ত করা হয়, এবং _r কীওয়ার্ড আর্গুমেন্টটি এই ট্রেস ইভেন্টটিকে XProf দ্বারা একটি ধাপ ইভেন্ট হিসেবে প্রক্রিয়াজাত করে।

উদাহরণস্বরূপ,

for step in range(NUM_STEPS):
    with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
        train_data = next(dataset)
        train_step(train_data)

এটি XProf-এর ধাপ-ভিত্তিক কর্মক্ষমতা বিশ্লেষণ সক্ষম করবে এবং ধাপের ইভেন্টগুলি ট্রেস ভিউয়ারে প্রদর্শিত হবে।

ইনপুট পাইপলাইনের সঠিক বিশ্লেষণের জন্য tf.profiler.experimental.Trace প্রসঙ্গে ডেটাসেট ইটারেটর অন্তর্ভুক্ত করুন।

নিচের কোড স্নিপেটটি একটি অ্যান্টি-প্যাটার্ন:

for step, train_data in enumerate(dataset):
    with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
        train_step(train_data)

প্রোফাইলিং ব্যবহারের ক্ষেত্রে

প্রোফাইলারটি চারটি ভিন্ন অক্ষ বরাবর বেশ কয়েকটি ব্যবহারের ক্ষেত্রে কাজ করে। কিছু সংমিশ্রণ বর্তমানে সমর্থিত এবং ভবিষ্যতে অন্যান্যগুলি যুক্ত করা হবে। কিছু ব্যবহারের ক্ষেত্রে হল:

  • লোকাল বনাম রিমোট প্রোফাইলিং : আপনার প্রোফাইলিং পরিবেশ সেট আপ করার জন্য এটি দুটি সাধারণ উপায়। লোকাল প্রোফাইলিংয়ে, প্রোফাইলিং API আপনার মডেল যে মেশিনে কাজ করছে সেই একই মেশিনে ডাকা হয়, উদাহরণস্বরূপ, GPU সহ একটি স্থানীয় ওয়ার্কস্টেশনে। রিমোট প্রোফাইলিংয়ে, প্রোফাইলিং API আপনার মডেল যে মেশিনে কাজ করছে তার থেকে ভিন্ন একটি মেশিনে ডাকা হয়, উদাহরণস্বরূপ, একটি ক্লাউড TPU তে।
  • একাধিক কর্মীর প্রোফাইলিং : টেনসরফ্লোর বিতরণকৃত প্রশিক্ষণ ক্ষমতা ব্যবহার করার সময় আপনি একাধিক মেশিনের প্রোফাইল তৈরি করতে পারেন।
  • হার্ডওয়্যার প্ল্যাটফর্ম : প্রোফাইল সিপিইউ, জিপিইউ এবং টিপিইউ।

নীচের টেবিলটি উপরে উল্লিখিত TensorFlow-সমর্থিত ব্যবহারের ক্ষেত্রে একটি সংক্ষিপ্ত সারসংক্ষেপ প্রদান করে:

প্রোফাইলিং API স্থানীয় দূরবর্তী একাধিক কর্মী হার্ডওয়্যার প্ল্যাটফর্ম
টেনসরবোর্ড কেরাস কলব্যাক সমর্থিত সমর্থিত নয় সমর্থিত নয় সিপিইউ, জিপিইউ
tf.profiler.experimental স্টার্ট/স্টপ API সমর্থিত সমর্থিত নয় সমর্থিত নয় সিপিইউ, জিপিইউ
tf.profiler.experimental client.trace API সমর্থিত সমর্থিত সমর্থিত সিপিইউ, জিপিইউ, টিপিইউ
কনটেক্সট ম্যানেজার API সমর্থিত সমর্থিত নয় সমর্থিত নয় সিপিইউ, জিপিইউ

অতিরিক্ত সম্পদ