আমাদের কার্যত অক্টোবর 19 এমএল সিম্পোজিয়াম নারী এ যোগ দিন এখন রেজিস্টার

টেনসরফ্লো দিয়ে প্রশিক্ষণ বিতরণ করা হয়েছে

TensorFlow.org এ দেখুন গুগল কোলাবে চালান GitHub এ উৎস দেখুন নোটবুক ডাউনলোড করুন

ওভারভিউ

tf.distribute.Strategy একাধিক GPU, একাধিক মেশিন, বা TPUs জুড়ে প্রশিক্ষণ বিতরণ করার একটি TensorFlow এপিআই হয়। এই API ব্যবহার করে, আপনি আপনার বিদ্যমান মডেল এবং প্রশিক্ষণ কোড ন্যূনতম কোড পরিবর্তনের সাথে বিতরণ করতে পারেন।

tf.distribute.Strategy মনের মধ্যে এই চাবি গোল সঙ্গে ডিজাইন করা হয়েছে:

  • গবেষক, মেশিন লার্নিং ইঞ্জিনিয়ার ইত্যাদি সহ একাধিক ব্যবহারকারী বিভাগ ব্যবহার করা এবং সমর্থন করা সহজ।
  • বক্সের বাইরে ভাল পারফরম্যান্স প্রদান করুন।
  • কৌশলগুলির মধ্যে সহজ পরিবর্তন।

ব্যবহার করে আপনি প্রশিক্ষণ বিতরণ করতে পারেন tf.distribute.Strategy Keras মত একটি উচ্চ পর্যায়ের API- এর সাথে Model.fit , সেইসাথে কাস্টম প্রশিক্ষণ লুপ (TensorFlow ব্যবহার করে যে কোনও গণনার সাধারণভাবে এবং,)।

TensorFlow 2.x, আপনি আপনার প্রোগ্রাম সাগ্রহে বা গ্রাফ ব্যবহার নির্বাহ করতে পারেন, tf.functiontf.distribute.Strategy উভয় মৃত্যুদণ্ড এই মোডগুলির সমর্থন করতে ইচ্ছুক, কিন্তু সঙ্গে ভাল কাজ করে tf.function । উৎসুক মোড শুধুমাত্র ডিবাগ উদ্দেশ্যে বাঞ্ছনীয় এবং এর জন্য সমর্থিত নয় tf.distribute.TPUStrategy । যদিও প্রশিক্ষণ এই গাইডের কেন্দ্রবিন্দু, এই API টি বিভিন্ন প্ল্যাটফর্মে মূল্যায়ন এবং ভবিষ্যদ্বাণী বিতরণের জন্যও ব্যবহার করা যেতে পারে।

আপনি ব্যবহার করতে পারেন tf.distribute.Strategy , আপনার কোডে খুব কম পরিবর্তনের সঙ্গে কারণ TensorFlow অন্তর্নিহিত উপাদান কৌশল সচেতন পরিণত পরিবর্তন করা হয়েছে। এর মধ্যে রয়েছে ভেরিয়েবল, লেয়ার, মডেল, অপটিমাইজার, মেট্রিক্স, সারাংশ এবং চেকপয়েন্ট।

এই গাইডে, আপনি বিভিন্ন ধরণের কৌশল এবং কিভাবে আপনি বিভিন্ন পরিস্থিতিতে তাদের ব্যবহার করতে পারেন সে সম্পর্কে জানতে পারবেন। কিভাবে ডিবাগ কর্মক্ষমতা বিষয় করতে হয় শিখতে, খুঁজে বার করো নিখুত TensorFlow জিপিইউ কর্মক্ষমতা গাইড।

TensorFlow সেট আপ করুন

import tensorflow as tf

কৌশলগুলির প্রকারগুলি

tf.distribute.Strategy বিভিন্ন অক্ষ বরাবর ব্যবহারের ক্ষেত্রে একটি নম্বর আবরণ করতে ইচ্ছুক। এই সংমিশ্রণগুলির মধ্যে কিছু বর্তমানে সমর্থিত এবং অন্যগুলি ভবিষ্যতে যোগ করা হবে। এই অক্ষগুলির মধ্যে কয়েকটি হল:

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

এইসব ব্যবহারের ক্ষেত্রে সমর্থন করার জন্য, TensorFlow হয়েছে MirroredStrategy , TPUStrategy , MultiWorkerMirroredStrategy , ParameterServerStrategy , CentralStorageStrategy , সেইসাথে অন্যান্য কৌশল পাওয়া যায়। পরবর্তী বিভাগটি ব্যাখ্যা করে যে টেনসারফ্লোতে কোন পরিস্থিতিতে এটি সমর্থিত। এখানে একটি দ্রুত ওভারভিউ দেওয়া হল:

প্রশিক্ষণ API MirroredStrategy TPUStrategy MultiWorkerMirroredStrategy CentralStorageStrategy ParameterServerStrategy
Keras Model.fit সমর্থিত সমর্থিত সমর্থিত পরীক্ষামূলক সমর্থন পরীক্ষামূলক সমর্থন
কাস্টম প্রশিক্ষণ লুপ সমর্থিত সমর্থিত সমর্থিত পরীক্ষামূলক সমর্থন পরীক্ষামূলক সমর্থন
এস্টিমেটর এপিআই সীমিত সমর্থন সমর্থিত নয় সীমিত সমর্থন সীমিত সমর্থন সীমিত সমর্থন

মিররড স্ট্র্যাটেজি

tf.distribute.MirroredStrategy সমর্থন এক মেশিনে একাধিক জিপিইউ উপর প্রশিক্ষণ বিতরণ সমলয়। এটি প্রতি জিপিইউ ডিভাইসে একটি প্রতিলিপি তৈরি করে। মডেলের প্রতিটি ভেরিয়েবল সমস্ত প্রতিরূপ জুড়ে প্রতিফলিত হয়। একসঙ্গে, এই ভেরিয়েবল একটি একক ধারণাগত পরিবর্তনশীল নামক গঠন MirroredVariable । অভিন্ন আপডেটগুলি প্রয়োগ করে এই ভেরিয়েবলগুলি একে অপরের সাথে সমন্বয় করা হয়।

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

এখানে তৈরি করার সবচেয়ে সহজ উপায় হল MirroredStrategy :

mirrored_strategy = tf.distribute.MirroredStrategy()
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',)

এই তৈরি করবে MirroredStrategy উদাহরণস্বরূপ, যা সব জিপিইউ যে TensorFlow কাছে দৃশ্যমান ব্যবহার করবে, এবং NCCL হিসাবে ক্রস-ডিভাইস যোগাযোগ।

আপনি যদি আপনার মেশিনে শুধুমাত্র কিছু জিপিইউ ব্যবহার করতে চান, তাহলে আপনি এটি এভাবে করতে পারেন:

mirrored_strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0", "/gpu:1"])
WARNING:tensorflow:Some requested devices in `tf.distribute.Strategy` are not visible to TensorFlow: /job:localhost/replica:0/task:0/device:GPU:1,/job:localhost/replica:0/task:0/device:GPU:0
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0', '/job:localhost/replica:0/task:0/device:GPU:1')

আপনি ক্রস ডিভাইস যোগাযোগ ওভাররাইড করতে চান, আপনি এখন ব্যবহার করতে পারি না cross_device_ops একটি দৃষ্টান্ত সরবরাহ দ্বারা যুক্তি tf.distribute.CrossDeviceOps । বর্তমানে, tf.distribute.HierarchicalCopyAllReduce এবং tf.distribute.ReductionToOneDevice ছাড়া অন্য দুটি বিকল্প আছে tf.distribute.NcclAllReduce , যা পূর্বনির্ধারিত।

mirrored_strategy = tf.distribute.MirroredStrategy(
    cross_device_ops=tf.distribute.HierarchicalCopyAllReduce())
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',)

টিপিএস কৌশল

tf.distribute.TPUStrategy আপনি আপনার TensorFlow প্রশিক্ষণ চালাতে দেয় টেন্সর প্রসেসিং ইউনিট (TPUs) । টিপিইউ হল গুগলের বিশেষ এএসআইসি যা নাটকীয়ভাবে মেশিন লার্নিং কাজের চাপ বাড়ানোর জন্য ডিজাইন করা হয়েছে। তারা পাওয়া যায় গুগল Colab , নমনীয় গবেষণা ক্লাউড এবং ক্লাউড নমনীয়

বিতরণ প্রশিক্ষণ স্থাপত্য নিরিখে TPUStrategy একই MirroredStrategy -এটা কার্যকরী সমলয় বিতরণ প্রশিক্ষণ। TPUs একাধিক নমনীয় কোর, যা ব্যবহার করা হয় জুড়ে দক্ষ অল-কমাতে এবং অন্যান্য সমষ্টিগত অপারেশন তাদের নিজস্ব বাস্তবায়ন প্রদান TPUStrategy

এখানে কিভাবে আপনি instantiate হবে TPUStrategy :

cluster_resolver = tf.distribute.cluster_resolver.TPUClusterResolver(
    tpu=tpu_address)
tf.config.experimental_connect_to_cluster(cluster_resolver)
tf.tpu.experimental.initialize_tpu_system(cluster_resolver)
tpu_strategy = tf.distribute.TPUStrategy(cluster_resolver)

TPUClusterResolver উদাহরণস্বরূপ TPUs সনাক্ত করতে সাহায্য করে। Colab- এ, আপনাকে এর জন্য কোনো যুক্তি নির্দিষ্ট করার প্রয়োজন নেই

আপনি যদি ক্লাউড টিপিইউ এর জন্য এটি ব্যবহার করতে চান:

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

MultiWorkerMirroredStrategy

tf.distribute.MultiWorkerMirroredStrategy খুব অনুরূপ MirroredStrategy । এটি একাধিক কর্মী জুড়ে সিঙ্ক্রোনাস ডিস্ট্রিবিউটেড ট্রেনিং প্রয়োগ করে, প্রত্যেকটি সম্ভাব্য একাধিক জিপিইউ সহ। অনুরূপ tf.distribute.MirroredStrategy , এটা সব কর্মীদের একে ডিভাইসে মডেল সব ভেরিয়েবল কপি তৈরি করে।

এখানে তৈরি করার সবচেয়ে সহজ উপায় হল MultiWorkerMirroredStrategy :

strategy = tf.distribute.MultiWorkerMirroredStrategy()
WARNING:tensorflow:Collective ops is not configured at program startup. Some performance features may not be enabled.
INFO:tensorflow:Single-worker MultiWorkerMirroredStrategy with local_devices = ('/device:GPU:0',), communication = CommunicationImplementation.AUTO

MultiWorkerMirroredStrategy ক্রস-ডিভাইস যোগাযোগের জন্য দুই বাস্তবায়নের হয়েছে। CommunicationImplementation.RING হয় আরপিসি ভিত্তিক এবং উভয় CPU ও জিপিইউ সমর্থন করে। CommunicationImplementation.NCCL NCCL ব্যবহার করে এবং জিপিইউ রাজ্যের অফ শিল্প কর্মক্ষমতা উপলব্ধ করা কিন্তু এটা সিপিইউ সমর্থন করে না। CollectiveCommunication.AUTO Tensorflow করতে পছন্দ অবকাশ। আপনি নিম্নলিখিত পদ্ধতিতে তাদের নির্দিষ্ট করতে পারেন:

communication_options = tf.distribute.experimental.CommunicationOptions(
    implementation=tf.distribute.experimental.CommunicationImplementation.NCCL)
strategy = tf.distribute.MultiWorkerMirroredStrategy(
    communication_options=communication_options)
WARNING:tensorflow:Collective ops is not configured at program startup. Some performance features may not be enabled.
INFO:tensorflow:Single-worker MultiWorkerMirroredStrategy with local_devices = ('/device:GPU:0',), communication = CommunicationImplementation.NCCL

মাল্টি-জিপিইউ ট্রেনিংয়ের তুলনায় মাল্টি ওয়ার্কার ট্রেনিং চালু করার অন্যতম প্রধান পার্থক্য হল মাল্টি-ওয়ার্কার সেটআপ। 'TF_CONFIG' এনভায়রনমেন্ট ভেরিয়েবল TensorFlow মধ্যে আদর্শ উপায় প্রতিটি কর্মী যে ক্লাস্টার অংশ থেকে ক্লাস্টার কনফিগারেশন উল্লেখ করা হয়। আরো জানুন সেটিং TF_CONFIG অধ্যায় আপ এই ডকুমেন্টের।

সম্পর্কে আরো জানার জন্য MultiWorkerMirroredStrategy , নিম্নলিখিত টিউটোরিয়াল বিবেচনা করুন:

প্যারামিটার সার্ভার স্ট্র্যাটেজি

প্যারামিটার সার্ভার ট্রেনিং হল একটি সাধারণ ডেটা-প্যারালাল পদ্ধতি যা একাধিক মেশিনে মডেল ট্রেনিং স্কেল করে। একটি প্যারামিটার সার্ভার প্রশিক্ষণ ক্লাস্টার শ্রমিক এবং প্যারামিটার সার্ভার নিয়ে গঠিত। প্যারামিটার সার্ভারে ভেরিয়েবল তৈরি করা হয় এবং সেগুলো প্রতিটি ধাপে শ্রমিকরা পড়ে এবং আপডেট করে। পরীক্ষা করে দেখুন প্যারামিটার সার্ভার প্রশিক্ষণ বিস্তারিত জানার জন্য টিউটোরিয়াল।

TensorFlow 2, প্যারামিটার সার্ভার প্রশিক্ষণ এর মাধ্যমে একটি কেন্দ্রীয় সমন্বয়কারী ভিত্তিক স্থাপত্য ব্যবহার tf.distribute.experimental.coordinator.ClusterCoordinator বর্গ।

এই বাস্তবায়ন সালে worker এবং parameter server কর্ম চালানোর tf.distribute.Server গুলি যে সমন্বয়কারী থেকে কাজের জন্য শুনুন। সমন্বয়কারী সম্পদ তৈরি করে, প্রশিক্ষণের কাজ প্রেরণ করে, চেকপয়েন্ট লেখায় এবং টাস্কের ব্যর্থতা নিয়ে কাজ করে।

সমন্বয়কারী চলমান প্রোগ্রামিং, আপনি একটি ব্যবহার করা হবে ParameterServerStrategy একটি প্রশিক্ষণ পদক্ষেপ সংজ্ঞায়িত করতে বস্তু এবং একটি ব্যবহার ClusterCoordinator দূরবর্তী শ্রমিকদের প্রেরণ প্রশিক্ষণ পদক্ষেপ করতে। এগুলি তৈরি করার সহজ উপায় এখানে:

strategy = tf.distribute.experimental.ParameterServerStrategy(
    tf.distribute.cluster_resolver.TFConfigClusterResolver(),
    variable_partitioner=variable_partitioner)
coordinator = tf.distribute.experimental.coordinator.ClusterCoordinator(
    strategy)

সম্পর্কে আরও জানতে ParameterServerStrategy , খুঁজে বার করো Keras Model.fit এবং একটি কাস্টম প্রশিক্ষণ লুপ সঙ্গে প্যারামিটার সার্ভার প্রশিক্ষণ টিউটোরিয়াল।

TensorFlow 1 সালে ParameterServerStrategy শুধুমাত্র মাধ্যমে একটি মূল্নির্ধারক সাথে উপলব্ধ tf.compat.v1.distribute.experimental.ParameterServerStrategy প্রতীক।

সেন্ট্রাল স্টোরেজ স্ট্র্যাটেজি

tf.distribute.experimental.CentralStorageStrategy পাশাপাশি সমকালীন প্রশিক্ষণ নেই। ভেরিয়েবলগুলি মিরর করা হয় না, পরিবর্তে সেগুলি সিপিইউতে স্থাপন করা হয় এবং সমস্ত স্থানীয় জিপিইউতে অপারেশনগুলি প্রতিলিপি করা হয়। যদি শুধুমাত্র একটি জিপিইউ থাকে তবে সমস্ত ভেরিয়েবল এবং অপারেশন সেই জিপিইউতে রাখা হবে।

এর একটি দৃষ্টান্ত তৈরি করুন CentralStorageStrategy দ্বারা:

central_storage_strategy = tf.distribute.experimental.CentralStorageStrategy()
INFO:tensorflow:ParameterServerStrategy (CentralStorageStrategy if you are using a single machine) with compute_devices = ['/job:localhost/replica:0/task:0/device:GPU:0'], variable_device = '/job:localhost/replica:0/task:0/device:GPU:0'

এই তৈরি করবে CentralStorageStrategy উদাহরণস্বরূপ যা সকল দৃশ্যমান জিপিইউ এবং CPU- র ব্যবহার করবে। ভেরিয়েবলগুলিতে প্রয়োগ করার আগে প্রতিলিপিতে ভেরিয়েবলের আপডেট একত্রিত করা হবে।

অন্যান্য কৌশল

উপরে কৌশল ছাড়াও, দুটি অন্যান্য কৌশল যা প্রোটোটাইপিং এবং কখন ব্যবহার ডিবাগ করার জন্য উপযোগী হতে পারে tf.distribute API গুলি।

ডিফল্ট কৌশল

ডিফল্ট স্ট্র্যাটেজি হল একটি ডিস্ট্রিবিউশন স্ট্র্যাটেজি যা উপস্থিত থাকে যখন কোন স্পষ্ট ডিস্ট্রিবিউশন স্ট্র্যাটেজি সুযোগের মধ্যে থাকে না। এটা তোলে প্রয়োগ tf.distribute.Strategy ইন্টারফেস কিন্তু একটি পাস-থ্রু এবং কোন প্রকৃত বন্টন প্রদান করে। উদাহরণস্বরূপ, strategy.run(fn) কেবল ডাকব fn । এই কৌশল ব্যবহার করে লিখিত কোড কোন কৌশল ছাড়া লিখিত কোড হিসাবে ঠিক আচরণ করা উচিত। আপনি এটিকে "নো-অপ" কৌশল হিসাবে ভাবতে পারেন।

ডিফল্ট স্ট্র্যাটেজি হল সিঙ্গেলটন — এবং কেউ এর বেশি দৃষ্টান্ত তৈরি করতে পারে না। এটি ব্যবহার প্রাপ্ত করা যাবে tf.distribute.get_strategy কোনো স্পষ্ট কৌশল এর আওতার বাইরে (একই API যা একটি সুনির্দিষ্ট কৌশল এর সুযোগ ভিতরে বর্তমান কৌশল পেতে ব্যবহার করা যেতে পারে)।

default_strategy = tf.distribute.get_strategy()

এই কৌশল দুটি প্রধান উদ্দেশ্য পূরণ করে:

  • এটি নি distributionশর্তভাবে বিতরণ-সচেতন লাইব্রেরি কোড লেখার অনুমতি দেয়। উদাহরণস্বরূপ, মধ্যে tf.optimizer গুলি আপনি ব্যবহার করতে পারেন tf.distribute.get_strategy এবং হ্রাস করার জন্য যে কৌশল ব্যবহার গ্রেডিয়েন্ট-এটা সবসময় একটি কৌশল বস্তুর উপর আপনি কল করতে পারেন ফিরে আসবে Strategy.reduce API- টি।
# In optimizer or other library code
# Get currently active strategy
strategy = tf.distribute.get_strategy()
strategy.reduce("SUM", 1., axis=None)  # reduce some values
1.0
  • লাইব্রেরী কোডের অনুরূপ, এটি শর্তাধীন যুক্তির প্রয়োজন ছাড়াই বিতরণ কৌশল সহ এবং ছাড়া কাজ করার জন্য শেষ ব্যবহারকারীদের প্রোগ্রাম লিখতে ব্যবহার করা যেতে পারে। এখানে একটি নমুনা কোড স্নিপেট এটি ব্যাখ্যা করে:
if tf.config.list_physical_devices('GPU'):
  strategy = tf.distribute.MirroredStrategy()
else:  # Use the Default Strategy
  strategy = tf.distribute.get_strategy()

with strategy.scope():
  # Do something interesting
  print(tf.Variable(1.))
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',)
MirroredVariable:{
  0: <tf.Variable 'Variable:0' shape=() dtype=float32, numpy=1.0>
}

OneDeviceStrategy

tf.distribute.OneDeviceStrategy একটি কৌশল একটি একক নির্দিষ্ট ডিভাইসে সমস্ত ভেরিয়েবল এবং গণনার স্থান হয়।

strategy = tf.distribute.OneDeviceStrategy(device="/gpu:0")

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

এই কৌশলটির মাধ্যমে বিতরণ করা ইনপুট নির্দিষ্ট ডিভাইসে প্রি -ফেচ করা হবে। ডিফল্ট কৌশলে, কোন ইনপুট বন্টন নেই।

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

এখন পর্যন্ত আপনি বিভিন্ন কৌশল সম্পর্কে শিখেছেন এবং কিভাবে আপনি তাদের তাত্ক্ষণিক করতে পারেন। পরবর্তী কয়েকটি বিভাগ বিভিন্ন উপায়ে দেখায় যেগুলি ব্যবহার করে আপনি আপনার প্রশিক্ষণ বিতরণ করতে পারেন।

কেরাস মডেল.ফিটের সাথে tf.distribute.Strategy ব্যবহার করুন

tf.distribute.Strategy মধ্যে একত্রিত করা tf.keras , যার মধ্যে TensorFlow বাস্তবায়ন হয় Keras এপিআই স্পেসিফিকেশনtf.keras তৈরি করুন এবং ট্রেন মডেলের একটি উচ্চ পর্যায়ের এপিআই হয়। মধ্যে সমন্বয়ের মাধ্যমে tf.keras ব্যাকএন্ড, আপনার জন্য এটা বিজোড় আপনার প্রশিক্ষণ Keras প্রশিক্ষণ কাঠামোর মধ্যে লিখিত বিতরণ করার Model.fit ব্যবহার

আপনার কোডে আপনাকে যা পরিবর্তন করতে হবে তা এখানে:

  1. উপযুক্ত একটি দৃষ্টান্ত তৈরি করুন tf.distribute.Strategy
  2. Keras মডেল, অপটিমাইজার এবং ভিতরে মেট্রিক্স সৃষ্টির সরান strategy.scope

TensorFlow বিতরণ নীতি Keras models- সব ধরনের সমর্থন অনুক্রমিক , প্রায়োগিকsubclassed

এখানে এক সঙ্গে একটি খুব সহজ Keras মডেল জন্য এই কাজ করতে কোডের একটি টুকরো হয় Dense স্তর:

mirrored_strategy = tf.distribute.MirroredStrategy()

with mirrored_strategy.scope():
  model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))])

model.compile(loss='mse', optimizer='sgd')
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',)
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).

এই উদাহরণটিতে ব্যবহার MirroredStrategy যাতে আপনি একাধিক GPU সহ মেশিনে এই রান করতে পারেন। strategy.scope() Keras যা কৌশল প্রশিক্ষণ বিতরণ করতে ব্যবহার করার জন্য নির্দেশ করে। এই সুযোগের মধ্যে মডেল/অপটিমাইজার/মেট্রিক তৈরি করা আপনাকে নিয়মিত ভেরিয়েবলের পরিবর্তে বিতরণকৃত ভেরিয়েবল তৈরি করতে দেয়। একবার এটি সেট আপ হয়ে গেলে, আপনি আপনার মডেলকে আপনার মত করে ফিট করতে পারেন যা আপনি স্বাভাবিকভাবেই করবেন। MirroredStrategy উপলব্ধ জিপিইউ উপর মডেলের প্রশিক্ষণ প্রতিলিপি নির্মাণ গ্রেডিয়েন্ট সমষ্টি, এবং আরো অনেক যত্ন নেয়।

dataset = tf.data.Dataset.from_tensors(([1.], [1.])).repeat(100).batch(10)
model.fit(dataset, epochs=2)
model.evaluate(dataset)
2021-09-22 20:33:41.551842: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:695] AUTO sharding policy will apply DATA sharding policy as it failed to apply FILE sharding policy because of the following reason: Found an unshardable source dataset: name: "TensorDataset/_2"
op: "TensorDataset"
input: "Placeholder/_0"
input: "Placeholder/_1"
attr {
  key: "Toutput_types"
  value {
    list {
      type: DT_FLOAT
      type: DT_FLOAT
    }
  }
}
attr {
  key: "output_shapes"
  value {
    list {
      shape {
        dim {
          size: 1
        }
      }
      shape {
        dim {
          size: 1
        }
      }
    }
  }
}
Epoch 1/2
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
10/10 [==============================] - 3s 2ms/step - loss: 2.4687
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
Epoch 2/2
10/10 [==============================] - 0s 2ms/step - loss: 1.0912
2021-09-22 20:33:44.537154: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:695] AUTO sharding policy will apply DATA sharding policy as it failed to apply FILE sharding policy because of the following reason: Found an unshardable source dataset: name: "TensorDataset/_2"
op: "TensorDataset"
input: "Placeholder/_0"
input: "Placeholder/_1"
attr {
  key: "Toutput_types"
  value {
    list {
      type: DT_FLOAT
      type: DT_FLOAT
    }
  }
}
attr {
  key: "output_shapes"
  value {
    list {
      shape {
        dim {
          size: 1
        }
      }
      shape {
        dim {
          size: 1
        }
      }
    }
  }
}
10/10 [==============================] - 1s 2ms/step - loss: 0.6776
0.6776412129402161

এখানে একটি tf.data.Dataset প্রশিক্ষণ ও Eval ইনপুট প্রদান করে। আপনি NumPy অ্যারে ব্যবহার করতে পারেন:

import numpy as np

inputs, targets = np.ones((100, 1)), np.ones((100, 1))
model.fit(inputs, targets, epochs=2, batch_size=10)
Epoch 1/2
2021-09-22 20:33:45.820303: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:695] AUTO sharding policy will apply DATA sharding policy as it failed to apply FILE sharding policy because of the following reason: Did not find a shardable source, walked to a node which is not a dataset: name: "FlatMapDataset/_9"
op: "FlatMapDataset"
input: "PrefetchDataset/_8"
attr {
  key: "Targuments"
  value {
    list {
    }
  }
}
attr {
  key: "f"
  value {
    func {
      name: "__inference_Dataset_flat_map_slice_batch_indices_997"
    }
  }
}
attr {
  key: "output_shapes"
  value {
    list {
      shape {
        dim {
          size: 10
        }
      }
    }
  }
}
attr {
  key: "output_types"
  value {
    list {
      type: DT_INT64
    }
  }
}
. Consider either turning off auto-sharding or switching the auto_shard_policy to DATA to shard this dataset. You can do this by creating a new `tf.data.Options()` object then setting `options.experimental_distribute.auto_shard_policy = AutoShardPolicy.DATA` before applying the options object to the dataset via `dataset.with_options(options)`.
10/10 [==============================] - 1s 2ms/step - loss: 0.4823
Epoch 2/2
10/10 [==============================] - 0s 2ms/step - loss: 0.2132
<keras.callbacks.History at 0x7f12645690d0>

উভয় ক্ষেত্রেই-সঙ্গে সালে Dataset বা NumPy-প্রতিটি প্রদত্ত ইনপুট এর ব্যাচ একাধিক প্রতিলিপি মধ্যে সমানভাবে ভাগ করা হয়। উদাহরণস্বরূপ, যদি আপনি ব্যবহার করছেন MirroredStrategy 2 জিপিইউ সঙ্গে, আকার 10 প্রতিটি ব্যাচ 2 জিপিইউ মধ্যে প্রতিটি পদক্ষেপ প্রতিটি প্রাপ্তির 5 ইনপুট উদাহরণ বিভক্ত হবে। আপনি আরও জিপিইউ যুক্ত করার সাথে সাথে প্রতিটি যুগ দ্রুত প্রশিক্ষণ দেবে। সাধারণত, আপনি আরো ব্যাবহারকারী যোগ করার সাথে সাথে আপনার ব্যাচের আকার বৃদ্ধি করতে চান, যাতে অতিরিক্ত কম্পিউটিং শক্তির কার্যকর ব্যবহার করা যায়। মডেলের উপর নির্ভর করে আপনাকে আপনার শেখার হারকে পুনরায় টিউন করতে হবে। আপনি ব্যবহার করতে পারেন strategy.num_replicas_in_sync প্রতিলিপি সংখ্যা পেতে।

# Compute a global batch size using a number of replicas.
BATCH_SIZE_PER_REPLICA = 5
global_batch_size = (BATCH_SIZE_PER_REPLICA *
                     mirrored_strategy.num_replicas_in_sync)
dataset = tf.data.Dataset.from_tensors(([1.], [1.])).repeat(100)
dataset = dataset.batch(global_batch_size)

LEARNING_RATES_BY_BATCH_SIZE = {5: 0.1, 10: 0.15}
learning_rate = LEARNING_RATES_BY_BATCH_SIZE[global_batch_size]

এখন কি সমর্থিত?

প্রশিক্ষণ API MirroredStrategy TPUStrategy MultiWorkerMirroredStrategy ParameterServerStrategy CentralStorageStrategy
Keras Model.fit সমর্থিত সমর্থিত সমর্থিত পরীক্ষামূলক সমর্থন পরীক্ষামূলক সমর্থন

উদাহরণ এবং টিউটোরিয়াল

এখানে টিউটোরিয়াল এবং উদাহরণ যে উপরোক্ত ইন্টিগ্রেশন এন্ড-টু-এন্ড Keras সঙ্গে চিত্রিত করা একটি তালিকা রয়েছে Model.fit :

  1. টিউটোরিয়াল : সঙ্গে প্রশিক্ষণ Model.fit এবং MirroredStrategy
  2. টিউটোরিয়াল : সঙ্গে প্রশিক্ষণ Model.fit এবং MultiWorkerMirroredStrategy
  3. গাইড : ব্যবহার একটি উদাহরণ রয়েছে Model.fit এবং TPUStrategy
  4. টিউটোরিয়াল : সঙ্গে প্যারামিটার সার্ভার প্রশিক্ষণ Model.fit এবং ParameterServerStrategy
  5. টিউটোরিয়াল : সঙ্গে আঠা বেঞ্চমার্ক থেকে অনেক কাজের জন্য ফাইন-টিউনিং বার্ট Model.fit এবং TPUStrategy
  6. TensorFlow মডেল গার্ডেন সংগ্রহস্থলের বিভিন্ন কৌশল ব্যবহার করে বাস্তবায়ন করা রাষ্ট্রীয় অত্যাধুনিক মডেলের সংগ্রহ রয়েছে।

কাস্টম প্রশিক্ষণ লুপগুলির সাথে tf.distribute.Strategy ব্যবহার করুন

উপরোক্ত আলোচনা দেখায়, ব্যবহার tf.distribute.Strategy Keras সঙ্গে Model.fit আপনার কোড শুধুমাত্র একটি দম্পতি লাইন পরিবর্তন প্রয়োজন। একটু বেশি প্রচেষ্টার সঙ্গে, এছাড়াও আপনি ব্যবহার করতে পারেন tf.distribute.Strategy কাস্টম প্রশিক্ষণ loops সঙ্গে

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

tf.distribute.Strategy শ্রেণীর সমর্থন কাস্টম প্রশিক্ষণ লুপ করার পদ্ধতি কোর সেট প্রদান। এইগুলি ব্যবহার করার জন্য প্রাথমিকভাবে কোডের সামান্য পুনর্গঠনের প্রয়োজন হতে পারে, কিন্তু একবার এটি হয়ে গেলে, আপনি কেবল কৌশলগত উদাহরণ পরিবর্তন করে GPUs, TPUs এবং একাধিক মেশিনের মধ্যে স্যুইচ করতে সক্ষম হবেন।

পূর্বে একই কেরাস মডেল ব্যবহার করে একটি সাধারণ প্রশিক্ষণ উদাহরণের জন্য এই ব্যবহারের ক্ষেত্রে একটি সংক্ষিপ্ত স্নিপেট দেওয়া হল।

প্রথমে, কৌশলটির সুযোগের মধ্যে মডেল এবং অপটিমাইজার তৈরি করুন। এটি নিশ্চিত করে যে মডেল এবং অপটিমাইজারের সাথে তৈরি যেকোনো ভেরিয়েবলই মিরর ভেরিয়েবল।

with mirrored_strategy.scope():
  model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))])
  optimizer = tf.keras.optimizers.SGD()

এর পরে, ইনপুট ডেটা সেটটি তৈরি এবং কল tf.distribute.Strategy.experimental_distribute_dataset কৌশল উপর ভিত্তি করে ডেটা সেটটি বিতরণ করতে।

dataset = tf.data.Dataset.from_tensors(([1.], [1.])).repeat(100).batch(
    global_batch_size)
dist_dataset = mirrored_strategy.experimental_distribute_dataset(dataset)
2021-09-22 20:33:47.092428: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:695] AUTO sharding policy will apply DATA sharding policy as it failed to apply FILE sharding policy because of the following reason: Found an unshardable source dataset: name: "TensorDataset/_2"
op: "TensorDataset"
input: "Placeholder/_0"
input: "Placeholder/_1"
attr {
  key: "Toutput_types"
  value {
    list {
      type: DT_FLOAT
      type: DT_FLOAT
    }
  }
}
attr {
  key: "output_shapes"
  value {
    list {
      shape {
        dim {
          size: 1
        }
      }
      shape {
        dim {
          size: 1
        }
      }
    }
  }
}

তারপরে, প্রশিক্ষণের একটি ধাপ নির্ধারণ করুন। ব্যবহারের tf.GradientTape কম্পিউট গ্রেডিয়েন্ট এবং অপটিমাইজার আপনার মডেলের ভেরিয়েবল আপডেট করার জন্য ঐ গ্রেডিয়েন্ট প্রযোজ্য হবে। এই প্রশিক্ষণ পদক্ষেপ বিতরণ করতে, একটি ফাংশন রাখা train_step এবং এটা পাস tf.distrbute.Strategy.run ডেটা সেটটি ইনপুট তোমার থেকে শিখেছে সহ dist_dataset আগে তৈরি করা হয়েছে:

loss_object = tf.keras.losses.BinaryCrossentropy(
  from_logits=True,
  reduction=tf.keras.losses.Reduction.NONE)

def compute_loss(labels, predictions):
  per_example_loss = loss_object(labels, predictions)
  return tf.nn.compute_average_loss(per_example_loss, global_batch_size=global_batch_size)

def train_step(inputs):
  features, labels = inputs

  with tf.GradientTape() as tape:
    predictions = model(features, training=True)
    loss = compute_loss(labels, predictions)

  gradients = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(gradients, model.trainable_variables))
  return loss

@tf.function
def distributed_train_step(dist_inputs):
  per_replica_losses = mirrored_strategy.run(train_step, args=(dist_inputs,))
  return mirrored_strategy.reduce(tf.distribute.ReduceOp.SUM, per_replica_losses,
                         axis=None)

উপরের কোডে আরও কয়েকটি বিষয় লক্ষ্য করুন:

  1. আপনাকে ব্যবহৃত tf.nn.compute_average_loss ক্ষতি গনা। tf.nn.compute_average_loss উদাহরণ প্রতি লোকসান অঙ্কের এবং global_batch_size দ্বারা সমষ্টি ভাগ করা হয়। এটি গুরুত্বপূর্ণ কারণ পরে পরে গ্রেডিয়েন্ট প্রতিটি প্রতিরূপ হিসেব করা হয়েছে, তবে তারা তাদেরকে summing দ্বারা প্রতিলিপি জুড়ে সমষ্টিগত হয়।
  2. এছাড়াও আপনি ব্যবহার tf.distribute.Strategy.reduce দ্বারা ফিরে ফলাফল সমষ্টি করতে এপিআই tf.distribute.Strategy.runtf.distribute.Strategy.run কৌশল প্রতিটি স্থানীয় প্রতিরূপ থেকে ফলাফল ফেরৎ, এবং এই ফলাফলের গ্রাস একাধিক উপায় আছে। আপনি করতে পারেন reduce একটি সমষ্টিগত মান পেতে তাদের। এছাড়াও আপনি কি করতে পারেন tf.distribute.Strategy.experimental_local_results তালিকা পেতে মান ফলে, স্থানীয় প্রতিরূপ প্রতি এক অন্তর্ভুক্ত।
  3. আপনি কল যখন apply_gradients একটি বিতরণ কৌশল সুযোগ মধ্যে, তার আচরণ রুপান্তরিত করা হয়েছে। বিশেষ করে, সিঙ্ক্রোনাস ট্রেনিংয়ের সময় প্রতিটি সমান্তরাল দৃষ্টান্তে গ্রেডিয়েন্ট প্রয়োগ করার আগে, এটি গ্রেডিয়েন্টের সমষ্টি-সব-প্রতিলিপি সম্পাদন করে।

অবশেষে, একবার আপনি প্রশিক্ষণ পদক্ষেপ সংজ্ঞায়িত, আপনি উপর পুনরুক্তি করতে পারেন dist_dataset এবং একটি লুপ প্রশিক্ষণ সঞ্চালন করুন:

for dist_inputs in dist_dataset:
  print(distributed_train_step(dist_inputs))
tf.Tensor(0.29786447, shape=(), dtype=float32)
tf.Tensor(0.29653987, shape=(), dtype=float32)
tf.Tensor(0.29522538, shape=(), dtype=float32)
tf.Tensor(0.29392087, shape=(), dtype=float32)
tf.Tensor(0.29262626, shape=(), dtype=float32)
tf.Tensor(0.29134142, shape=(), dtype=float32)
tf.Tensor(0.29006627, shape=(), dtype=float32)
tf.Tensor(0.28880078, shape=(), dtype=float32)
tf.Tensor(0.2875447, shape=(), dtype=float32)
tf.Tensor(0.28629807, shape=(), dtype=float32)
tf.Tensor(0.28506076, shape=(), dtype=float32)
tf.Tensor(0.2838327, shape=(), dtype=float32)
tf.Tensor(0.28261372, shape=(), dtype=float32)
tf.Tensor(0.28140378, shape=(), dtype=float32)
tf.Tensor(0.28020284, shape=(), dtype=float32)
tf.Tensor(0.27901068, shape=(), dtype=float32)
tf.Tensor(0.27782732, shape=(), dtype=float32)
tf.Tensor(0.27665266, shape=(), dtype=float32)
tf.Tensor(0.2754866, shape=(), dtype=float32)
tf.Tensor(0.274329, shape=(), dtype=float32)

উপরের উদাহরণে, তোমাদের উপর iterated dist_dataset আপনার প্রশিক্ষণ ইনপুট প্রদান। এছাড়াও আপনি সাথে উপলব্ধ করা হয় tf.distribute.Strategy.make_experimental_numpy_dataset NumPy ইনপুট সমর্থন। আপনি কল করার আগে ডেটা সেটটি তৈরি করতে এই API ব্যবহার করতে পারেন tf.distribute.Strategy.experimental_distribute_dataset

আপনার ডেটার উপর পুনরাবৃত্তির আরেকটি উপায় হল স্পষ্টভাবে ইটারেটর ব্যবহার করা। আপনি যখন পুরো ডেটাসেটে পুনরাবৃত্তির বিপরীতে প্রদত্ত সংখ্যক পদক্ষেপের জন্য দৌড়াতে চান তখন আপনি এটি করতে চাইতে পারেন। পুনরাবৃত্তির উপরে এখন প্রথম কোনো ইটারেটরে তৈরি করতে পরিবর্তন করা হবে এবং তারপর স্পষ্টভাবে কল next ইনপুট ডেটা পেতে এটিতে।

iterator = iter(dist_dataset)
for _ in range(10):
  print(distributed_train_step(next(iterator)))
tf.Tensor(0.2731799, shape=(), dtype=float32)
tf.Tensor(0.27203918, shape=(), dtype=float32)
tf.Tensor(0.27090666, shape=(), dtype=float32)
tf.Tensor(0.26978233, shape=(), dtype=float32)
tf.Tensor(0.26866615, shape=(), dtype=float32)
tf.Tensor(0.26755798, shape=(), dtype=float32)
tf.Tensor(0.2664578, shape=(), dtype=float32)
tf.Tensor(0.26536545, shape=(), dtype=float32)
tf.Tensor(0.2642809, shape=(), dtype=float32)
tf.Tensor(0.26320407, shape=(), dtype=float32)

এই কভার ব্যবহার সহজ ক্ষেত্রে tf.distribute.Strategy এপিআই কাস্টম প্রশিক্ষণ লুপ বিতরণ করতে।

এখন কি সমর্থিত?

প্রশিক্ষণ API MirroredStrategy TPUStrategy MultiWorkerMirroredStrategy ParameterServerStrategy CentralStorageStrategy
কাস্টম প্রশিক্ষণ লুপ সমর্থিত সমর্থিত সমর্থিত পরীক্ষামূলক সমর্থন পরীক্ষামূলক সমর্থন

উদাহরণ এবং টিউটোরিয়াল

কাস্টম প্রশিক্ষণ লুপগুলির সাথে বিতরণ কৌশল ব্যবহার করার জন্য এখানে কিছু উদাহরণ দেওয়া হল:

  1. টিউটোরিয়াল : একটি কাস্টম প্রশিক্ষণ লুপ এবং প্রশিক্ষণ MirroredStrategy
  2. টিউটোরিয়াল : একটি কাস্টম প্রশিক্ষণ লুপ এবং প্রশিক্ষণ MultiWorkerMirroredStrategy
  3. গাইড : সঙ্গে একটি কাস্টম প্রশিক্ষণ লুপ একটি উদাহরণ রয়েছে TPUStrategy
  4. টিউটোরিয়াল : একটি কাস্টম প্রশিক্ষণ লুপ এবং প্যারামিটার সার্ভার প্রশিক্ষণ ParameterServerStrategy
  5. TensorFlow মডেল গার্ডেন সংগ্রহস্থলের বিভিন্ন কৌশল ব্যবহার করে বাস্তবায়ন করা রাষ্ট্রীয় অত্যাধুনিক মডেলের সংগ্রহ রয়েছে।

অন্যান্য বিষয়

এই বিভাগে এমন কিছু বিষয় রয়েছে যা একাধিক ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক।

TF_CONFIG পরিবেশ পরিবর্তনশীল সেট আপ করা হচ্ছে

বহু-কর্মী প্রশিক্ষণ জন্য, আগের মত উল্লেখ করা হয়েছে, আপনি সেট আপ করার প্রয়োজন 'TF_CONFIG' আপনার ক্লাস্টার প্রতিটি বাইনারি চলমান জন্য এনভায়রনমেন্ট ভেরিয়েবল। 'TF_CONFIG' এনভায়রনমেন্ট ভেরিয়েবল একটি JSON- স্ট্রিংটি নির্দিষ্ট করে কি কর্ম একটি ক্লাস্টার, তাদের ঠিকানা ও ক্লাস্টারের প্রতিটি কাজের ভূমিকা গঠন করা হয়। tensorflow/ecosystem রেপো একটি Kubernetes টেমপ্লেট, যা সেট আপ উপলব্ধ 'TF_CONFIG' আপনার প্রশিক্ষণ কাজের জন্য।

সেখানে দুই উপাদান 'TF_CONFIG' একটি ক্লাস্টার এবং একটি টাস্ক।

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

এর একটা উদাহরণ 'TF_CONFIG' হল:

os.environ["TF_CONFIG"] = json.dumps({
    "cluster": {
        "worker": ["host1:port", "host2:port", "host3:port"],
        "ps": ["host4:port", "host5:port"]
    },
   "task": {"type": "worker", "index": 1}
})

এই 'TF_CONFIG' নির্দিষ্ট করে তিনটি শ্রমিক ও দুই আছে "ps" মধ্যে কর্ম "cluster" তাদের সৈন্যবাহিনী এবং পোর্ট করেন। "task" অংশে বর্তমান কাজের ভূমিকা নির্দিষ্ট করে "cluster" -worker 1 (দ্বিতীয় কর্মী)। একটি ক্লাস্টার বৈধ ভূমিকা আছে "chief" , "worker" , "ps" , এবং "evaluator" । কোন হওয়া উচিত "ps" যখন ব্যবহার ছাড়া কাজ tf.distribute.experimental.ParameterServerStrategy

এরপর কি?

tf.distribute.Strategy উন্নয়ন অধীনে সক্রিয়ভাবে হয়। এটি চেষ্টা করে দেখুন এবং ব্যবহার করে আপনার প্রতিক্রিয়া প্রদান GitHub বিষয়