This page was translated by the Cloud Translation API.
Switch to English

টেনসরবোর্ড ডিবাগার ভি 2 ব্যবহার করে টেনসরফ্লো প্রোগ্রামগুলিতে সংখ্যাসূচক সমস্যাগুলি ডিবাগ করা

NaN এর সাথে জড়িত বিপর্যয়কর ঘটনাগুলি কখনও কখনও টেনসরফ্লো প্রোগ্রামের সময় ঘটতে পারে, মডেল প্রশিক্ষণের প্রক্রিয়াগুলিকে পঙ্গু করে দেয়। এই জাতীয় ইভেন্টের মূল কারণটি প্রায়শই অস্পষ্ট হয়, বিশেষত ক্ষুদ্রতর আকার এবং জটিলতার মডেলগুলির জন্য। এই ধরণের মডেল বাগগুলি ডিবাগ করা সহজ করার জন্য, টেনসরবোর্ড 2.3+ (টেনসরফ্লো 2.3+ এর সাথে একত্রে) একটি বিশেষায়িত ড্যাশবোর্ড সরবরাহ করে যা ডিবাগার ভি 2 নামে পরিচিত। এখানে আমরা টেনসরফ্লোতে লিখিত নিউরাল নেটওয়ার্কে NaNs জড়িত একটি রিয়েল বাগের মাধ্যমে কাজ করে কীভাবে এই সরঞ্জামটি ব্যবহার করব তা এখানে প্রদর্শন করি।

এই টিউটোরিয়ালে চিত্রিত কৌশলগুলি জটিল প্রোগ্রামগুলিতে রানটাইম টেনসর আকারগুলি পরীক্ষা করা যেমন ডিবাগিং ক্রিয়াকলাপগুলির অন্যান্য ধরণের ক্ষেত্রে প্রযোজ্য। এই টিউটোরিয়ালটি তাদের তুলনামূলকভাবে উচ্চ ফ্রিকোয়েন্সি কারণে NaN- এ ফোকাস করে।

বাগ পর্যবেক্ষণ

আমরা ডিবাগ করব এমন টিএফ 2 প্রোগ্রামের উত্স কোডটি গিটহাবটিতে উপলব্ধ । উদাহরণস্বরূপ প্রোগ্রামটি টেনসরফ্লো পাইপ প্যাকেজ (সংস্করণ ২.৩+) এও প্যাকেজ করা হয় এবং এর দ্বারা আহ্বান করা যেতে পারে:

 python -m tensorflow.python.debug.examples.v2.debug_mnist_v2
 

এই টিএফ 2 প্রোগ্রামটি একটি বহু-স্তর উপলব্ধি (এমএলপি) তৈরি করে এবং এটি এমএনআইএসটি চিত্রগুলি সনাক্ত করতে প্রশিক্ষণ দেয়। এই উদাহরণটি উদ্দেশ্যমূলকভাবে কাস্টম লেয়ার কনস্ট্রাক্টস, লস ফাংশন এবং প্রশিক্ষণ লুপটি সংজ্ঞায়িত করতে টিএফ 2 এর নিম্ন-স্তরের এপিআই ব্যবহার করে, কারণ আমরা যখন আরও সহজ ব্যবহার করি তখন তার চেয়ে বেশি নমনীয় তবে আরও ত্রুটি-ঝুঁকির এপিআই ব্যবহার করার সময় এনএএন বাগের সম্ভাবনা বেশি থাকে because ব্যবহার করতে পারবেন তবে tf.keras এর মতো সামান্য কম নমনীয় উচ্চ-স্তরের এপিআই।

প্রোগ্রামটি প্রতিটি প্রশিক্ষণের পদক্ষেপের পরে একটি পরীক্ষার যথার্থতা ছাপায়। আমরা কনসোলে দেখতে পারি যে পরীক্ষার যথার্থতাটি প্রথম পদক্ষেপের পরে কাছের-সুযোগ পর্যায়ে (~ 0.1) আটকে যায়। এটি অবশ্যই মডেল প্রশিক্ষণের আচরণ হিসাবে প্রত্যাশিত নয়: ধাপে ধীরে ধীরে বৃদ্ধি পাওয়ার সাথে সাথে ধীরে ধীরে 1.0 (100%) এর কাছে পৌঁছানোর আমরা আশা করি।

 Accuracy at step 0: 0.216
Accuracy at step 1: 0.098
Accuracy at step 2: 0.098
Accuracy at step 3: 0.098
...
 

একটি শিক্ষিত অনুমান যে এই সমস্যাটি একটি সংখ্যাগত অস্থিতিশীলতা, যেমন এনএন বা অনন্তের কারণে ঘটে। যাইহোক, আমরা কীভাবে নিশ্চিত করব যে এটি সত্যিই কেস এবং কীভাবে আমরা টেনসরফ্লো অপারেশন (বিকল্প) সংখ্যার অস্থিরতা তৈরির জন্য দায়ী খুঁজে পাই? এই প্রশ্নের উত্তর দিতে, আসুন আমরা ডিবাগার ভি 2 এর সাথে বগি প্রোগ্রামটি চালিত করি।

ডিবাগার ভি 2 সহ টেনসরফ্লো কোড ইনস্ট্রুমেন্ট করা

tf.debugging.experimental.enable_dump_debug_info() হ'ল ডিবাগার ভি 2 এর এপিআই এন্ট্রি পয়েন্ট। এটি কোডের একক লাইনের সাথে একটি টিএফ 2 প্রোগ্রাম দেয়। উদাহরণস্বরূপ, প্রোগ্রামের শুরুতে নীচের লাইনটি যুক্ত করার ফলে / tmp / tfdbg2_logdir- এ লগ ডিরেক্টরিতে (লগডির) ডিবাগ তথ্য লেখা হবে। ডিবাগ তথ্য টেনসরফ্লো রানটাইমের বিভিন্ন দিক কভার করে। টিএফ 2-তে এর মধ্যে রয়েছে উত্সাহী মৃত্যুদণ্ডের সম্পূর্ণ ইতিহাস, @ tf.function দ্বারা সম্পাদিত গ্রাফ বিল্ডিং, গ্রাফগুলির সম্পাদন, কার্যকরকরণ ইভেন্টগুলি দ্বারা উত্পন্ন টেনসর মানগুলি, সেই সাথে সেই ইভেন্টগুলির কোড অবস্থান (পাইথন স্ট্যাক ট্রেসস) includes । ডিবাগ তথ্যের সমৃদ্ধি ব্যবহারকারীদেরকে অস্পষ্ট বাগগুলিতে সংকীর্ণ করতে সক্ষম করে।

 tf.debugging.experimental.enable_dump_debug_info(
    logdir="/tmp/tfdbg2_logdir",
    tensor_debug_mode="FULL_HEALTH",
    circular_buffer_size=-1)
 

tensor_debug_mode আর্গুমেন্ট প্রতিটি উত্সাহী বা ইন-গ্রাফ টেন্সর থেকে ডিবাগার ভি 2 কী তথ্য tensor_debug_mode করে তা নিয়ন্ত্রণ করে। "ফুলহেলথ" হ'ল একটি মোড যা প্রতিটি ভাসমান ধরণের টেনসর (যেমন, সাধারণত দেখা ফ্লোট 32 এবং কম সাধারণ বিফ্লোয়ট 16 টি টাইপ) সম্পর্কে নিম্নলিখিত তথ্য ক্যাপচার করে:

  • DType
  • মর্যাদাক্রম
  • উপাদানগুলির মোট সংখ্যা
  • নিম্নলিখিত বিভাগগুলিতে ভাসমান ধরণের উপাদানগুলির একটি ভাঙ্গন: নেতিবাচক সসীম ( - ), শূন্য ( 0 ), ইতিবাচক সসীম ( + ), নেতিবাচক অনন্ত ( -∞ ), ইতিবাচক অনন্ত ( +∞ ) এবং NaN

"FULL_HEALTH" মোড NaN এবং অনন্ত জড়িত বাগগুলি ডিবাগ করার জন্য উপযুক্ত। অন্যান্য সমর্থিত tensor_debug_mode জন্য নীচে দেখুন।

circular_buffer_size আর্গুমেন্টটি নিয়ন্ত্রণ করে যে কতগুলি সেন্সর ইভেন্ট লগডিরে সংরক্ষিত হয়। এটি 1000 এ ডিফল্ট হয়, যা ডিভাইসে চালিত টিফ 2 প্রোগ্রামটি শেষ হওয়ার আগে কেবলমাত্র শেষ 1000 টেনসরগুলির কারণ করে। এই ডিফল্ট আচরণটি ডিবাগ-ডেটা সম্পূর্ণতার ত্যাগ করে ডিবাগার ওভারহেড হ্রাস করে। যদি সম্পূর্ণতাটিকে অগ্রাধিকার দেওয়া হয়, তবে এই ক্ষেত্রে, আমরা যুক্তিটিকে নেতিবাচক মান হিসাবে সেট করে বিজ্ঞপ্তি বাফারটি অক্ষম করতে পারি (যেমন, এখানে -1)।

ডিবাগ_মিনিস্ট_ভি 2 উদাহরণটি এতে কমান্ড-লাইন পতাকা enable_dump_debug_info() আহ্বান জানায়। এই ডিবাগিং উপকরণটি সক্ষম করে আবার আমাদের সমস্যাযুক্ত টিএফ 2 প্রোগ্রামটি চালাতে, করুন:

 python -m tensorflow.python.debug.examples.v2.debug_mnist_v2 \
    --dump_dir /tmp/tfdbg2_logdir --dump_tensor_debug_mode FULL_HEALTH
 

টেনসরবোর্ডে ডিবাগার ভি 2 জিইউআই শুরু করা

ডিবাগার যন্ত্রের সাহায্যে প্রোগ্রামটি চালানো / tmp / tfdbg2_logdir এ একটি লগডির তৈরি করে। আমরা টেনসরবোর্ড শুরু করতে এবং এটি দিয়ে লগডিরের দিকে নির্দেশ করতে পারি:

 tensorboard --logdir /tmp/tfdbg2_logdir
 

ওয়েব ব্রাউজারে, টেনসরবোর্ডের পৃষ্ঠায় http: // লোকালহোস্ট: 6006 এ নেভিগেট করুন। "ডিবাগার ভি 2" প্লাগইনটি ডিফল্টরূপে সক্রিয় করা উচিত, যা নীচের মত দেখাচ্ছে এমন একটি পৃষ্ঠা প্রদর্শন করে:

ডিবাগার ভি 2 সম্পূর্ণ দেখার স্ক্রিনশট

NaNs এর মূল কারণ অনুসন্ধান করতে ডিবাগার ভি 2 জিইউআই ব্যবহার করা

টেনসরবোর্ডে ডিবাগার ভি 2 জিইউআই ছয়টি বিভাগে সংগঠিত হয়েছে:

  • সতর্কতা : এই শীর্ষ-বামে বিভাগটি ডিভাইসটি ডিভাইসটি ডেবগ দ্বারা ডেভগ্রেটেড টেনসরফ্লো প্রোগ্রাম থেকে সনাক্ত করা "সতর্কতা" ইভেন্টগুলির একটি তালিকা রয়েছে। প্রতিটি সতর্কতা একটি নির্দিষ্ট বেমানানকে নির্দেশ করে যা মনোযোগ দেয়। আমাদের ক্ষেত্রে, এই বিভাগটি 499 NaN / ∞ ইভেন্টগুলিকে একটি প্রধান গোলাপী-লাল রঙের সাথে হাইলাইট করে। এটি আমাদের সন্দেহের সত্যতা নিশ্চিত করে যে মডেলটি তার অভ্যন্তরীণ টেনসর মানগুলিতে NaN এবং / বা ইনফিনিটিটির উপস্থিতি কারণে শিখতে ব্যর্থ। আমরা শীঘ্রই এই সতর্কতাগুলির মধ্যে প্রকাশ করব।
  • পাইথন এক্সিকিউশন টাইমলাইন : এটি শীর্ষ-মধ্য বিভাগের উপরের অর্ধেক। এটি অপ্স এবং গ্রাফের আগ্রহী সম্পাদনের পুরো ইতিহাস উপস্থাপন করে। টাইমলাইনের প্রতিটি বাক্সকে অপ্ট বা গ্রাফের নামের প্রথম চিঠি দ্বারা চিহ্নিত করা হয় (উদাহরণস্বরূপ, "টেনসরস্লাইসড্যাটাসেট" অপের জন্য "টি", "মডেল" tf.function জন্য "মি")। সময়সীমার উপরে নেভিগেশন বোতাম এবং স্ক্রোলবার ব্যবহার করে আমরা এই টাইমলাইনটি নেভিগেট করতে পারি।
  • গ্রাফ এক্সিকিউশন : জিইউআইয়ের উপরের-ডান কোণে অবস্থিত, এই বিভাগটি আমাদের ডিবাগিং কার্যের কেন্দ্রিয় হবে। এতে গ্রাফের অভ্যন্তরে গণিত সমস্ত ভাসমান-টাইপ টেনারগুলির ইতিহাস রয়েছে (যেমন, @tf-function দ্বারা সংকলিত)।
  • গ্রাফ স্ট্রাকচার (শীর্ষ-মধ্য বিভাগের নীচের অর্ধেক), উত্স কোড (নীচে-বাম বিভাগ) এবং স্ট্যাক ট্রেস (নীচে-ডান বিভাগ) প্রাথমিকভাবে খালি are যখন আমরা জিইউআইয়ের সাথে যোগাযোগ করব তখন তাদের বিষয়বস্তুগুলি পপুলেশন হবে। এই তিনটি বিভাগ আমাদের ডিবাগিং কার্যেও গুরুত্বপূর্ণ ভূমিকা পালন করবে।

নিজেদেরকে ইউআই-এর প্রতিষ্ঠানের দিকে পরিচালিত করার পরে, এনএএনগুলি কেন উপস্থিত হয়েছিল তার নীচে যেতে নীচের পদক্ষেপগুলি গ্রহণ করি। প্রথমে সতর্কতা বিভাগে NaN / ∞ সতর্কতাতে ক্লিক করুন। এটি স্বয়ংক্রিয়ভাবে গ্রাফ এক্সিকিউশন বিভাগে 600 গ্রাফ টেনারগুলির তালিকা স্ক্রল করে এবং # 88-তে ফোকাস করে, যা একটি Log (প্রাকৃতিক লোগারিদম) অপের সাহায্যে উত্পন্ন "লগ: 0" নামে একটি টেনসর। একটি মুখ্য গোলাপী-লাল রঙ 2D ফ্লোট 32 টেন্সরের 1000 উপাদানগুলির মধ্যে একটি -∞ উপাদানকে হাইলাইট করে। এটি টিএফ 2 প্রোগ্রামের রানটাইম ইতিহাসের প্রথম টেনসর যা কোনও এনএএন বা ইনফিনিটি ধারণ করে: টেনারগুলিতে NaN বা contain না থাকার আগে গণনা করা হয়; অনেকগুলি (প্রকৃতপক্ষে, বেশিরভাগ) ট্যানারগুলির পরে গণনা করা হয় NaNs। গ্রাফ এক্সিকিউশন তালিকার উপরে এবং নীচে স্ক্রোল করে আমরা এটি নিশ্চিত করতে পারি। এই পর্যবেক্ষণটি একটি দৃ h় ইঙ্গিত দেয় যে Log অপটি এই টিএফ 2 প্রোগ্রামের সংখ্যাগত অস্থিরতার উত্স।

ডিবাগার ভি 2: ন্যান / ইনফিনিটি সতর্কতা এবং গ্রাফের প্রয়োগের তালিকা

কেন এই Log অপিট একটি -∞ থুথু না? এই প্রশ্নের উত্তর দেওয়ার জন্য বিকল্পটিতে ইনপুট পরীক্ষা করা দরকার। টেন্সরের নামে ক্লিক করা ("লগ: 0") গ্রাফ স্ট্রাকচার বিভাগে তার টেনসরফ্লো গ্রাফটিতে Log অপের আশেপাশের একটি সাধারণ তবে তথ্যমূলক দৃশ্যধারণ করে। তথ্য প্রবাহের শীর্ষ থেকে নীচে দিক নোট করুন। অপ্টটি নিজেই মাঝখানে বোল্ডতে দেখানো হয়েছে। তত্ক্ষণাত্ তার উপরে, আমরা দেখতে পাচ্ছি যে কোনও স্থানধারক অপটি Log অপকে একটি সরবরাহ করে। গ্রাফ এক্সিকিউশন তালিকায় এই লগইট প্লেসহোল্ডার দ্বারা উত্পাদিত টেন্সরটি কোথায়? ভিজ্যুয়াল এইড হিসাবে হলুদ ব্যাকগ্রাউন্ড রঙ ব্যবহার করে আমরা দেখতে পাব যে logits:0 টেনসর Log:0 টেনসরের উপরে, যা 85 সারিতে রয়েছে তার উপরে দুটি সারি।

ডিবাগার ভি 2: গ্রাফ স্ট্রাকচার ভিউ এবং ইনপুট টেনসরকে ট্রেসিং

85 সারি সন্ধানের "লগইটস: 0" টেন্সরের সংখ্যাগত ভাঙ্গনের দিকে আরও সতর্কতার সাথে পর্যালোচনা দেখায় যে কেন তার ভোক্তা Log:0 একটি-produces উত্পাদন করে: "লগইটস: 0" এর 1000 উপাদানগুলির মধ্যে একটি উপাদানের মান 0 হয়। -∞ 0 এর প্রাকৃতিক লোগারিদম গণনার ফলাফল! যদি আমরা কোনওভাবে নিশ্চিত করতে পারি যে লগ অপটি কেবলমাত্র ইতিবাচক ইনপুটগুলির সংস্পর্শে এসেছে, আমরা NaN / happening কে ঘটতে বাধা দিতে সক্ষম হব। ক্লিপিং প্রয়োগ করে এটি অর্জন করা যেতে পারে (যেমন, স্থানধারক লগইট টেনসরে tf.clip_by_value () ব্যবহার করে।

আমরা বাগটি সমাধানের কাছাকাছি চলেছি, তবে এখনও পুরোপুরি সম্পন্ন হয়নি। সমাধানটি প্রয়োগ করতে, পাইথন উত্স কোডে লগ অপ এবং এর স্থানধারক ইনপুটটি কোথা থেকে উদ্ভূত হয়েছিল তা আমাদের জানতে হবে। ডিবাগার ভি 2 তাদের উত্সটিতে গ্রাফ অপস এবং সম্পাদন ইভেন্টগুলি ট্রেস করার জন্য প্রথম শ্রেণির সহায়তা সরবরাহ করে। যখন আমরা গ্রাফ এক্সিকিউশনগুলিতে Log:0 সেন্সরটি ক্লিক করি তখন স্ট্যাক ট্রেস বিভাগটি লগ অপের সৃষ্টির মূল স্ট্যাক ট্রেস দ্বারা পপুলেশন করা হয়েছিল। স্ট্যাক ট্রেসটি কিছুটা বড় কারণ এটিতে টেনসরফ্লো এর অভ্যন্তরীণ কোড (যেমন, Gen_math_ops.py এবং ডাম্পিং_ক্যালব্যাক.পি) থেকে অনেকগুলি ফ্রেম অন্তর্ভুক্ত রয়েছে, যা আমরা বেশিরভাগ ডিবাগিং কাজের জন্য নিরাপদে উপেক্ষা করতে পারি। আগ্রহের ফ্রেমটি ডিবাগ_মনিস্ট_ভি 2.পি এর লাইন 216 (যেমন, পাইথন ফাইলটি আমরা আসলে ডিবাগ করার চেষ্টা করছি)। "204 লাইন" ক্লিক করা উত্স কোড বিভাগে কোডের সাথে সম্পর্কিত লাইনটির একটি দৃশ্য উপস্থিত করে।

ডিবাগার ভি 2: উত্স কোড এবং স্ট্যাক ট্রেস

এটি শেষ পর্যন্ত আমাদের উত্স কোডে নিয়ে আসে যা এর লগইটস ইনপুট থেকে সমস্যাযুক্ত লগ অপকে তৈরি করে। এটি আমাদের কাস্টম শ্রেণিবদ্ধ ক্রস-এন্ট্রপি ক্ষতি ফাংশন যা @tf.function দিয়ে সজ্জিত এবং অতএব একটি টেনসরফ্লো গ্রাফে রূপান্তরিত। প্লেসহোল্ডার অপ "লগইটস" ক্ষতি ফাংশনের সাথে প্রথম ইনপুট আর্গুমেন্টের সাথে মিলে যায়। Tf.math.log () API কল দিয়ে Log অপটি তৈরি করা হয়েছে।

এই বাগটিতে মান-ক্লিপিং ফিক্সটি এর মতো দেখতে পাবেন:

   diff = -(labels *
           tf.clip_by_value(tf.math.log(logits), 1e-6, 1.))
 

এটি এই টিএফ 2 প্রোগ্রামের সংখ্যার অস্থিরতা সমাধান করবে এবং এমএলপি সাফল্যের সাথে প্রশিক্ষণ দেবে। সংখ্যাগত অস্থিরতা ঠিক করার জন্য আর একটি সম্ভাব্য পন্থা হ'ল tf.keras.losses.CategoricalCrossentropy ব্যবহার করা।

এটি একটি টিএফ 2 মডেল বাগ পর্যবেক্ষণ থেকে শুরু করে একটি কোড পরিবর্তন নিয়ে আসে যা বাগ সংশোধন করে, ডিবাগার ভি 2 সরঞ্জাম দ্বারা সহায়তা করে, যা সংখ্যার সংক্ষিপ্তসারগুলি সহ চালিত টিএফ 2 প্রোগ্রামটির উত্সাহী এবং গ্রাফের সম্পাদনের ইতিহাসে সম্পূর্ণ দৃশ্যমানতা সরবরাহ করে অপশন, টেনসর এবং তাদের মূল উত্স কোডের মধ্যে টেনসর মান এবং সংযুক্তি।

ডিবাগার ভি 2 এর হার্ডওয়্যার সামঞ্জস্য

ডিবাগার ভি 2 সিপিইউ এবং জিপিইউ সহ মূলধারার প্রশিক্ষণ হার্ডওয়্যারকে সমর্থন করে। Tf.distributes.MirroredStrategy সহ মাল্টি-জিপিইউ প্রশিক্ষণও সমর্থিত। টিপিইউর সমর্থন এখনও প্রাথমিক পর্যায়ে রয়েছে এবং কল করার প্রয়োজন রয়েছে

 tf.config.set_soft_device_placement(True)
 

enable_dump_debug_info() কল করার আগে। এটির টিপিইউতেও অন্যান্য সীমাবদ্ধতা থাকতে পারে। আপনি যদি ডিবাগার ভি 2 ব্যবহার করে সমস্যায় পড়ে থাকেন তবে দয়া করে আমাদের গিটহাব ইস্যু পৃষ্ঠাতে বাগগুলি প্রতিবেদন করুন।

ডিবাগার ভি 2 এর এপিআই সামঞ্জস্যতা

ডিবাগার ভি 2 টেনসরফ্লো এর সফ্টওয়্যার স্ট্যাকের তুলনামূলক কম স্তরে প্রয়োগ করা হয়েছে, এবং তাই টেনসরফ্লো এর নীচের স্তরের উপরে নির্মিত tf.keras , tf.data এবং অন্যান্য API এর সাথে সামঞ্জস্যপূর্ণ। ডিবাগার ভি 2 টি টিএফ 1 এর সাথেও পশ্চাদপটে সামঞ্জস্যপূর্ণ, যদিও ইজিগার এক্সিকিউশন টাইমলাইন টিএফ 1 প্রোগ্রাম দ্বারা উত্পন্ন ডিবাগ লগডিয়ারগুলির জন্য খালি থাকবে।

এপিআই ব্যবহারের টিপস

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

বর্তমানে সমর্থিত টেনসর_দেবগ_মোডগুলি হ'ল: NO_TENSOR , CURT_HEALTH , CONCISE_HEALTH , FULL_HEALTH এবং SHAPE । এগুলি প্রতিটি টেনসর থেকে প্রাপ্ত পরিমাণের পরিমাণ এবং ডিবাগড প্রোগ্রামের ওভারহেডের পারফরম্যান্সে পৃথক হয়। enable_dump_debug_info() এর ডকুমেন্টেশন] এর আরগস বিভাগটি দেখুন

পারফরম্যান্স ওভারহেড

ডিবাগিং এপিআই চালিত টেনসরফ্লো প্রোগ্রামটির জন্য ওভারহেডের কার্য সম্পাদন করে। ওভারহেড tensor_debug_mode , হার্ডওয়্যার ধরণ এবং tensor_debug_mode প্রোগ্রামটির প্রকৃতি অনুসারে পরিবর্তিত হয়। একটি রেফারেন্স পয়েন্ট হিসেবে, একটি GPU এর মাধ্যমে, NO_TENSOR মোড 15% ওভারহেড একটি প্রশিক্ষণ চলাকালে যোগ ট্রান্সফরমার মডেল ব্যাচ আকার 64. অধীনে অন্যান্য tensor_debug_modes জন্য শতাংশ ওভারহেড উচ্চতর আছেন: প্রায় 50% CURT_HEALTH , CONCISE_HEALTH , FULL_HEALTH এবং SHAPE মোড। সিপিইউতে ওভারহেড কিছুটা কম থাকে। টিপিইউতে ওভারহেড বর্তমানে বেশি higher

অন্যান্য টেনসরফ্লো ডিবাগিং এপিআইয়ের সাথে সম্পর্কিত

নোট করুন যে টেনসরফ্লো ডিবাগিংয়ের জন্য অন্যান্য সরঞ্জাম এবং এপিআই সরবরাহ করে। আপনি tf.debugging.* অধীনে এই জাতীয় API ব্রাউজ করতে পারেন। এই এপিআইগুলির মধ্যে tf.print() সবচেয়ে বেশি ব্যবহৃত হয়। কখন tf.print() ডিবাগার ভি 2 ব্যবহার করা উচিত এবং এর পরিবর্তে কখন tf.print() ব্যবহার করা উচিত? tf.print() ক্ষেত্রে যেখানে সুবিধাজনক

  1. আমরা ঠিক জানি কোন টেনারগুলি প্রিন্ট করতে হবে,
  2. আমরা জানি ঠিক কোথায় সোর্স কোডে those tf.print() বিবৃতি tf.print() ,
  3. এই জাতীয় টেনার সংখ্যা খুব বেশি নয়।

অন্যান্য ক্ষেত্রে (উদাহরণস্বরূপ, অনেক টেনসরের মান পরীক্ষা করা, টেনসরফ্লোর অভ্যন্তরীণ কোড দ্বারা উত্পন্ন টেনসর মানগুলি পরীক্ষা করা এবং আমরা উপরে দেখানো হিসাবে সংখ্যাগত অস্থিরতার উত্স অনুসন্ধান করে), ডিবাগার ভি 2 ডিবাগিংয়ের একটি দ্রুততর উপায় সরবরাহ করে। তদ্ব্যতীত, ডিবাগার ভি 2 আগ্রহী এবং গ্রাফ টেনারগুলি পরিদর্শন করার জন্য একীভূত পদ্ধতির সরবরাহ করে। এটি অতিরিক্তভাবে গ্রাফ কাঠামো এবং কোড অবস্থানগুলি সম্পর্কে তথ্য সরবরাহ করে, যা tf.print() এর সক্ষমতা ছাড়িয়ে।

আর একটি এপিআই যা ∞ এবং NaN এর সাথে জড়িত সমস্যাগুলি ডিবাগ করতে ব্যবহৃত হতে পারে তা হল tf.debugging.enable_check_numerics()enable_dump_debug_info() বিপরীতে, enable_check_numerics() ডিস্কে ডিবাগের তথ্য সংরক্ষণ করে না। পরিবর্তে, এটি কেবল টেনসরফ্লো রানটাইম চলাকালীন N এবং NaN পর্যবেক্ষণ করে এবং কোনও বিকল্প যেমন খারাপ সংখ্যার মান উত্পন্ন করার সাথে সাথে মূল কোড অবস্থানটি ত্রুটি থেকে বেরিয়ে আসে। enable_dump_debug_info() তুলনায় এর কম পারফরম্যান্স ওভারহেড রয়েছে, তবে প্রোগ্রামটির সম্পাদনার ইতিহাসের পুরো ট্রেস বহন করে না এবং ডিবাগার ভি 2 এর মতো গ্রাফিকাল ইউজার ইন্টারফেসের সাথে আসে না।