সাহায্য Kaggle উপর TensorFlow সঙ্গে গ্রেট বেরিয়ার রিফ রক্ষা চ্যালেঞ্জ যোগদান

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

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 সমর্থিত সমর্থিত সমর্থিত পরীক্ষামূলক সমর্থন পরীক্ষামূলক সমর্থন
কাস্টম প্রশিক্ষণ লুপ সমর্থিত সমর্থিত সমর্থিত পরীক্ষামূলক সমর্থন পরীক্ষামূলক সমর্থন
অনুমানকারী API সীমিত সমর্থন সমর্থিত নয় সীমিত সমর্থন সীমিত সমর্থন সীমিত সমর্থন

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

tf.distribute.MirroredStrategy সমর্থন এক মেশিনে একাধিক জিপিইউ উপর প্রশিক্ষণ বিতরণ সমলয়। এটি প্রতি GPU ডিভাইসে একটি প্রতিরূপ তৈরি করে। মডেলের প্রতিটি পরিবর্তনশীল সমস্ত প্রতিলিপি জুড়ে মিরর করা হয়। একসঙ্গে, এই ভেরিয়েবল একটি একক ধারণাগত পরিবর্তনশীল নামক গঠন 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 হিসাবে ক্রস-ডিভাইস যোগাযোগ।

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

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) । TPUs হল Google-এর বিশেষায়িত ASICs যা মেশিন লার্নিং কাজের চাপকে নাটকীয়ভাবে ত্বরান্বিত করার জন্য ডিজাইন করা হয়েছে। তারা পাওয়া যায় গুগল 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 যুক্তি।
  • আপনি প্রোগ্রামের শুরুতে স্পষ্টভাবে নমনীয় সিস্টেম আরম্ভ করতে হবে। TPUs গণনার জন্য ব্যবহার করার আগে এটি প্রয়োজন। টিপিইউ সিস্টেম শুরু করার ফলে টিপিইউ মেমরিও মুছে যায়, তাই অবস্থা হারানো এড়াতে প্রথমে এই পদক্ষেপটি সম্পূর্ণ করা গুরুত্বপূর্ণ।

মাল্টিওয়ার্কার মিররড স্ট্র্যাটেজি

tf.distribute.MultiWorkerMirroredStrategy খুব অনুরূপ MirroredStrategy । এটি একাধিক কর্মীদের মধ্যে সিঙ্ক্রোনাস বিতরণ করা প্রশিক্ষণ প্রয়োগ করে, প্রতিটি সম্ভাব্য একাধিক GPU সহ। অনুরূপ 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 পাশাপাশি সমকালীন প্রশিক্ষণ নেই। ভেরিয়েবলগুলি মিরর করা হয় না, পরিবর্তে সেগুলি সিপিইউতে স্থাপন করা হয় এবং সমস্ত স্থানীয় GPU তে অপারেশনগুলি প্রতিলিপি করা হয়। শুধুমাত্র একটি GPU থাকলে, সমস্ত ভেরিয়েবল এবং অপারেশন সেই GPU-তে স্থাপন করা হবে।

এর একটি দৃষ্টান্ত তৈরি করুন 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()

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

  • এটি বিতরণ-সচেতন লাইব্রেরি কোড নিঃশর্তভাবে লেখার অনুমতি দেয়। উদাহরণস্বরূপ, মধ্যে 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>
}

OneDevice Strategy

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

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

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

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

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

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

Keras Model.fit এর সাথে 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)
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',).
2021-10-26 01:27:56.527729: 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
        }
      }
    }
  }
}
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.2552
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: 0.9968
2021-10-26 01:27:59.372113: 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.6190
0.6190494298934937

এখানে একটি 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-10-26 01:28:00.609977: 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.4406
Epoch 2/2
10/10 [==============================] - 0s 2ms/step - loss: 0.1947
<keras.callbacks.History at 0x7fb81813d2d0>

উভয় ক্ষেত্রেই-সঙ্গে সালে Dataset বা NumPy-প্রতিটি প্রদত্ত ইনপুট এর ব্যাচ একাধিক প্রতিলিপি মধ্যে সমানভাবে ভাগ করা হয়। উদাহরণস্বরূপ, যদি আপনি ব্যবহার করছেন MirroredStrategy 2 জিপিইউ সঙ্গে, আকার 10 প্রতিটি ব্যাচ 2 জিপিইউ মধ্যে প্রতিটি পদক্ষেপ প্রতিটি প্রাপ্তির 5 ইনপুট উদাহরণ বিভক্ত করা হবে। আপনি আরও GPU যোগ করার সাথে সাথে প্রতিটি যুগ দ্রুত প্রশিক্ষণ পাবে। সাধারণত, অতিরিক্ত কম্পিউটিং শক্তির কার্যকর ব্যবহার করার জন্য আপনি আরও এক্সিলারেটর যুক্ত করার সাথে সাথে আপনার ব্যাচের আকার বাড়াতে চান। মডেলের উপর নির্ভর করে আপনাকে আপনার শেখার হার পুনরায় টিউন করতে হবে। আপনি ব্যবহার করতে পারেন 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 শ্রেণীর সমর্থন কাস্টম প্রশিক্ষণ লুপ করার পদ্ধতি কোর সেট প্রদান। এগুলি ব্যবহার করার জন্য প্রাথমিকভাবে কোডের ছোটখাটো পুনর্গঠনের প্রয়োজন হতে পারে, তবে একবার এটি হয়ে গেলে, আপনি কেবল কৌশল উদাহরণ পরিবর্তন করে GPU, TPU এবং একাধিক মেশিনের মধ্যে স্যুইচ করতে সক্ষম হবেন।

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

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

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-10-26 01:28:01.831942: 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.distribute.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.18686396, shape=(), dtype=float32)
tf.Tensor(0.18628375, shape=(), dtype=float32)
tf.Tensor(0.18570684, shape=(), dtype=float32)
tf.Tensor(0.18513316, shape=(), dtype=float32)
tf.Tensor(0.1845627, shape=(), dtype=float32)
tf.Tensor(0.18399543, shape=(), dtype=float32)
tf.Tensor(0.18343134, shape=(), dtype=float32)
tf.Tensor(0.18287037, shape=(), dtype=float32)
tf.Tensor(0.18231256, shape=(), dtype=float32)
tf.Tensor(0.18175781, shape=(), dtype=float32)
tf.Tensor(0.18120615, shape=(), dtype=float32)
tf.Tensor(0.18065754, shape=(), dtype=float32)
tf.Tensor(0.18011193, shape=(), dtype=float32)
tf.Tensor(0.17956935, shape=(), dtype=float32)
tf.Tensor(0.17902976, shape=(), dtype=float32)
tf.Tensor(0.17849308, shape=(), dtype=float32)
tf.Tensor(0.17795937, shape=(), dtype=float32)
tf.Tensor(0.17742859, shape=(), dtype=float32)
tf.Tensor(0.17690066, shape=(), dtype=float32)
tf.Tensor(0.17637561, 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.17585339, shape=(), dtype=float32)
tf.Tensor(0.17533402, shape=(), dtype=float32)
tf.Tensor(0.17481743, shape=(), dtype=float32)
tf.Tensor(0.17430364, shape=(), dtype=float32)
tf.Tensor(0.17379259, shape=(), dtype=float32)
tf.Tensor(0.17328428, shape=(), dtype=float32)
tf.Tensor(0.17277871, shape=(), dtype=float32)
tf.Tensor(0.17227581, shape=(), dtype=float32)
tf.Tensor(0.17177561, shape=(), dtype=float32)
tf.Tensor(0.17127804, 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 বিষয়