TensorFlow.org এ দেখুন | Google Colab-এ চালান | GitHub-এ উৎস দেখুন | নোটবুক ডাউনলোড করুন |
এই নির্দেশিকাটি দেখায় কিভাবে আপনার বহু-কর্মী বিতরণকৃত প্রশিক্ষণ কর্মপ্রবাহকে TensorFlow 1 থেকে TensorFlow 2-এ স্থানান্তর করতে হয়।
সিপিইউ/জিপিইউ সহ বহু-কর্মী প্রশিক্ষণ সঞ্চালন করতে:
- TensorFlow 1-এ, আপনি ঐতিহ্যগতভাবে
tf.estimator.train_and_evaluate
এবংtf.estimator.Estimator
API ব্যবহার করেন। - TensorFlow 2-এ, মডেল, লস ফাংশন, অপ্টিমাইজার এবং মেট্রিক্স লেখার জন্য Keras API ব্যবহার করুন। তারপর,
tf.distribute.experimental.ParameterServerStrategy
বাtf.distribute.MultiWorkerMirroredStrategy
সহ একাধিক কর্মীদের মধ্যে KerasModel.fit
API বা একটি কাস্টম প্রশিক্ষণ লুপ (tf.GradientTape
সহ) দিয়ে প্রশিক্ষণটি বিতরণ করুন। আরো বিস্তারিত জানার জন্য, নিম্নলিখিত টিউটোরিয়াল পড়ুন:
সেটআপ
কিছু প্রয়োজনীয় আমদানি এবং প্রদর্শনের উদ্দেশ্যে একটি সাধারণ ডেটাসেট দিয়ে শুরু করুন:
# The notebook uses a dataset instance for `Model.fit` with
# `ParameterServerStrategy`, which depends on symbols in TF 2.7.
# Install a utility needed for this demonstration
!pip install portpicker
import tensorflow as tf
import tensorflow.compat.v1 as tf1
features = [[1., 1.5], [2., 2.5], [3., 3.5]]
labels = [[0.3], [0.5], [0.7]]
eval_features = [[4., 4.5], [5., 5.5], [6., 6.5]]
eval_labels = [[0.8], [0.9], [1.]]
টেনসরফ্লোতে একাধিক মেশিনে প্রশিক্ষণের জন্য আপনার 'TF_CONFIG'
কনফিগারেশন এনভায়রনমেন্ট ভেরিয়েবলের প্রয়োজন হবে। 'cluster'
এবং 'task'
এর ঠিকানাগুলি নির্দিষ্ট করতে 'TF_CONFIG'
ব্যবহার করুন। ( ডিস্ট্রিবিউটেড_ট্রেনিং গাইডে আরও জানুন।)
import json
import os
tf_config = {
'cluster': {
'chief': ['localhost:11111'],
'worker': ['localhost:12345', 'localhost:23456', 'localhost:21212'],
'ps': ['localhost:12121', 'localhost:13131'],
},
'task': {'type': 'chief', 'index': 0}
}
os.environ['TF_CONFIG'] = json.dumps(tf_config)
ভেরিয়েবলটি অপসারণ করতে del
স্টেটমেন্ট ব্যবহার করুন (কিন্তু TensorFlow 1-এ বাস্তব-বিশ্বের বহু-কর্মী প্রশিক্ষণে, আপনাকে এটি করতে হবে না):
del os.environ['TF_CONFIG']
TensorFlow 1: tf.estimator API-এর সাথে বহু-কর্মী বিতরণ করা প্রশিক্ষণ
নিম্নলিখিত কোড স্নিপেটটি TF1-এ বহু-কর্মী প্রশিক্ষণের ক্যানোনিকাল ওয়ার্কফ্লো প্রদর্শন করে: আপনি একটি tf.estimator.Estimator
, একটি tf.estimator.TrainSpec
, একটি tf.estimator.EvalSpec
, এবং tf.estimator.train_and_evaluate
API ব্যবহার করবেন প্রশিক্ষণ:
def _input_fn():
return tf1.data.Dataset.from_tensor_slices((features, labels)).batch(1)
def _eval_input_fn():
return tf1.data.Dataset.from_tensor_slices(
(eval_features, eval_labels)).batch(1)
def _model_fn(features, labels, mode):
logits = tf1.layers.Dense(1)(features)
loss = tf1.losses.mean_squared_error(labels=labels, predictions=logits)
optimizer = tf1.train.AdagradOptimizer(0.05)
train_op = optimizer.minimize(loss, global_step=tf1.train.get_global_step())
return tf1.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op)
estimator = tf1.estimator.Estimator(model_fn=_model_fn)
train_spec = tf1.estimator.TrainSpec(input_fn=_input_fn)
eval_spec = tf1.estimator.EvalSpec(input_fn=_eval_input_fn)
tf1.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
INFO:tensorflow:Using default config. WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpvfb91q_5 INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpvfb91q_5', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true graph_options { rewrite_options { meta_optimizer_iterations: ONE } } , '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1} INFO:tensorflow:Not using Distribute Coordinator. INFO:tensorflow:Running training and evaluation locally (non-distributed). INFO:tensorflow:Start train and evaluate loop. The evaluate will happen after every checkpoint. Checkpoint frequency is determined based on RunConfig arguments: save_checkpoints_steps None or save_checkpoints_secs 600. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/training/training_util.py:401: Variable.initialized_value (from tensorflow.python.ops.variables) is deprecated and will be removed in a future version. Instructions for updating: Use Variable.read_value. Variables in 2.X are initialized automatically both in eager and graph (inside tf.defun) contexts. INFO:tensorflow:Calling model_fn. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/training/adagrad.py:143: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version. Instructions for updating: Call initializer instance with the dtype argument instead of passing it to the constructor INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Graph was finalized. INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0... INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpvfb91q_5/model.ckpt. INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0... INFO:tensorflow:loss = 0.038075272, step = 0 INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 3... INFO:tensorflow:Saving checkpoints for 3 into /tmp/tmpvfb91q_5/model.ckpt. INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 3... INFO:tensorflow:Calling model_fn. INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Starting evaluation at 2021-11-13T02:31:06 INFO:tensorflow:Graph was finalized. INFO:tensorflow:Restoring parameters from /tmp/tmpvfb91q_5/model.ckpt-3 INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Inference Time : 0.13630s INFO:tensorflow:Finished evaluation at 2021-11-13-02:31:06 INFO:tensorflow:Saving dict for global step 3: global_step = 3, loss = 0.005215075 INFO:tensorflow:Saving 'checkpoint_path' summary for global step 3: /tmp/tmpvfb91q_5/model.ckpt-3 INFO:tensorflow:Loss for final step: 0.061832994. ({'loss': 0.005215075, 'global_step': 3}, [])
TensorFlow 2: বিতরণ কৌশল সহ বহু-কর্মী প্রশিক্ষণ
TensorFlow 2-এ, CPU, GPU এবং TPU সহ একাধিক কর্মীদের মধ্যে বিতরণ করা প্রশিক্ষণ tf.distribute.Strategy
s এর মাধ্যমে সম্পন্ন করা হয়।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে এই ধরনের দুটি কৌশল ব্যবহার করতে হয়: tf.distribute.experimental.ParameterServerStrategy
এবং tf.distribute.MultiWorkerMirroredStrategy
, উভয়ই একাধিক কর্মীদের সাথে CPU/GPU প্রশিক্ষণের জন্য ডিজাইন করা হয়েছে।
ParameterServerStrategy
একজন সমন্বয়কারী ( 'chief'
) নিয়োগ করে, যা এই Colab নোটবুকে পরিবেশের সাথে আরও বন্ধুত্বপূর্ণ করে তোলে। আপনি এখানে একটি চলমান অভিজ্ঞতার জন্য প্রয়োজনীয় সহায়ক উপাদানগুলি সেট আপ করতে এখানে কিছু ইউটিলিটি ব্যবহার করবেন: আপনি একটি ইন-প্রসেস ক্লাস্টার তৈরি করবেন, যেখানে থ্রেডগুলি প্যারামিটার সার্ভারগুলি ( 'ps'
) এবং কর্মীদের ( 'worker'
) অনুকরণ করতে ব্যবহৃত হয় . প্যারামিটার সার্ভার প্রশিক্ষণ সম্পর্কে আরও তথ্যের জন্য, প্যারামিটার সার্ভার স্ট্র্যাটেজি টিউটোরিয়াল সহ প্যারামিটার সার্ভার প্রশিক্ষণ পড়ুন।
এই উদাহরণে, ক্লাস্টার তথ্য প্রদানের জন্য প্রথমে 'TF_CONFIG'
পরিবেশ পরিবর্তনশীলটিকে একটি tf.distribute.cluster_resolver.TFConfigClusterResolver
দিয়ে সংজ্ঞায়িত করুন। আপনি যদি আপনার বিতরণ করা প্রশিক্ষণের জন্য একটি ক্লাস্টার ম্যানেজমেন্ট সিস্টেম ব্যবহার করেন, তবে এটি ইতিমধ্যেই আপনার জন্য 'TF_CONFIG'
প্রদান করে কিনা তা পরীক্ষা করে দেখুন, সেক্ষেত্রে আপনাকে স্পষ্টভাবে এই পরিবেশ পরিবর্তনশীল সেট করার প্রয়োজন নেই। (TensorFlow গাইডের সাথে ডিস্ট্রিবিউটেড ট্রেনিং -এ 'TF_CONFIG'
এনভায়রনমেন্ট ভেরিয়েবল সেকশন সেট আপ করার বিষয়ে আরও জানুন।)
# Find ports that are available for the `'chief'` (the coordinator),
# `'worker'`s, and `'ps'` (parameter servers).
import portpicker
chief_port = portpicker.pick_unused_port()
worker_ports = [portpicker.pick_unused_port() for _ in range(3)]
ps_ports = [portpicker.pick_unused_port() for _ in range(2)]
# Dump the cluster information to `'TF_CONFIG'`.
tf_config = {
'cluster': {
'chief': ["localhost:%s" % chief_port],
'worker': ["localhost:%s" % port for port in worker_ports],
'ps': ["localhost:%s" % port for port in ps_ports],
},
'task': {'type': 'chief', 'index': 0}
}
os.environ['TF_CONFIG'] = json.dumps(tf_config)
# Use a cluster resolver to bridge the information to the strategy created below.
cluster_resolver = tf.distribute.cluster_resolver.TFConfigClusterResolver()
তারপর, কর্মীদের জন্য tf.distribute.Server
s তৈরি করুন এবং পরামিতি সার্ভারগুলি একে একে:
# Workers need some inter_ops threads to work properly.
# This is only needed for this notebook to demo. Real servers
# should not need this.
worker_config = tf.compat.v1.ConfigProto()
worker_config.inter_op_parallelism_threads = 4
for i in range(3):
tf.distribute.Server(
cluster_resolver.cluster_spec(),
job_name="worker",
task_index=i,
config=worker_config)
for i in range(2):
tf.distribute.Server(
cluster_resolver.cluster_spec(),
job_name="ps",
task_index=i)
বাস্তব-বিশ্বের বিতরণ করা প্রশিক্ষণে, সমন্বয়কারীতে সমস্ত tf.distribute.Server
চালু করার পরিবর্তে, আপনি একাধিক মেশিন ব্যবহার করবেন এবং "worker"
এবং "ps"
(প্যারামিটার সার্ভার) হিসাবে মনোনীত প্রতিটি মেশিন ব্যবহার করবেন একটি tf.distribute.Server
। আরও বিশদ বিবরণের জন্য প্যারামিটার সার্ভার প্রশিক্ষণ টিউটোরিয়ালের বাস্তব বিশ্বের বিভাগে ক্লাস্টারগুলি পড়ুন।
সবকিছু প্রস্তুত করে, ParameterServerStrategy
অবজেক্ট তৈরি করুন:
strategy = tf.distribute.experimental.ParameterServerStrategy(cluster_resolver)
INFO:tensorflow:`tf.distribute.experimental.ParameterServerStrategy` is initialized with cluster_spec: ClusterSpec({'chief': ['localhost:16660'], 'ps': ['localhost:15313', 'localhost:20369'], 'worker': ['localhost:21380', 'localhost:18699', 'localhost:19420']}) INFO:tensorflow:ParameterServerStrategyV2 is now connecting to cluster with cluster_spec: ClusterSpec({'chief': ['localhost:16660'], 'ps': ['localhost:15313', 'localhost:20369'], 'worker': ['localhost:21380', 'localhost:18699', 'localhost:19420']}) INFO:tensorflow:ParameterServerStrategy (CentralStorageStrategy if you are using a single machine) with compute_devices = ['/job:chief/replica:0/task:0/device:GPU:0'], variable_device = '/job:chief/replica:0/task:0/device:GPU:0' INFO:tensorflow:Number of GPUs on workers: 1
একবার আপনি একটি কৌশল অবজেক্ট তৈরি করার পরে, মডেল, অপ্টিমাইজার এবং অন্যান্য ভেরিয়েবলগুলিকে সংজ্ঞায়িত করুন এবং প্রশিক্ষণ বিতরণ করতে Strategy.scope
API-এর মধ্যে Model.compile
কল করুন৷ (আরো তথ্যের জন্য Strategy.scope
API ডক্স দেখুন।)
আপনি যদি আপনার প্রশিক্ষণ কাস্টমাইজ করতে পছন্দ করেন, উদাহরণস্বরূপ, ফরোয়ার্ড এবং ব্যাকওয়ার্ড পাসগুলিকে সংজ্ঞায়িত করে, আরও বিশদ বিবরণের জন্য প্যারামিটার সার্ভার প্রশিক্ষণ টিউটোরিয়ালের একটি কাস্টম প্রশিক্ষণ লুপ বিভাগে প্রশিক্ষণ পড়ুন।
dataset = tf.data.Dataset.from_tensor_slices(
(features, labels)).shuffle(10).repeat().batch(64)
eval_dataset = tf.data.Dataset.from_tensor_slices(
(eval_features, eval_labels)).repeat().batch(1)
with strategy.scope():
model = tf.keras.models.Sequential([tf.keras.layers.Dense(1)])
optimizer = tf.keras.optimizers.Adagrad(learning_rate=0.05)
model.compile(optimizer, "mse")
model.fit(dataset, epochs=5, steps_per_epoch=10)
Epoch 1/5 INFO:tensorflow:Reduce to /device:CPU:0 then broadcast to ('/replica:0/device:CPU:0',). INFO:tensorflow:Reduce to /device:CPU:0 then broadcast to ('/replica:0/device:CPU:0',). /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/data/ops/dataset_ops.py:453: UserWarning: To make it possible to preserve tf.data options across serialization boundaries, their implementation has moved to be part of the TensorFlow graph. As a consequence, the options value is in general no longer known at graph construction time. Invoking this method in graph mode retains the legacy behavior of the original implementation, but note that the returned value might not reflect the actual value of the options. warnings.warn("To make it possible to preserve tf.data options across " INFO:tensorflow:Reduce to /device:CPU:0 then broadcast to ('/replica:0/device:CPU:0',). INFO:tensorflow:Reduce to /device:CPU:0 then broadcast to ('/replica:0/device:CPU:0',). 2021-11-13 02:31:09.110074: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:766] 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: "TensorSliceDataset/_2" op: "TensorSliceDataset" input: "Placeholder/_0" input: "Placeholder/_1" attr { key: "Toutput_types" value { list { type: DT_FLOAT type: DT_FLOAT } } } attr { key: "_cardinality" value { i: 3 } } attr { key: "is_files" value { b: false } } attr { key: "metadata" value { s: "\n\024TensorSliceDataset:4" } } attr { key: "output_shapes" value { list { shape { dim { size: 2 } } shape { dim { size: 1 } } } } } 2021-11-13 02:31:09.115349: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:766] 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: "TensorSliceDataset/_2" op: "TensorSliceDataset" input: "Placeholder/_0" input: "Placeholder/_1" attr { key: "Toutput_types" value { list { type: DT_FLOAT type: DT_FLOAT } } } attr { key: "_cardinality" value { i: 3 } } attr { key: "is_files" value { b: false } } attr { key: "metadata" value { s: "\n\024TensorSliceDataset:4" } } attr { key: "output_shapes" value { list { shape { dim { size: 2 } } shape { dim { size: 1 } } } } } 2021-11-13 02:31:09.117963: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:766] 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: "TensorSliceDataset/_2" op: "TensorSliceDataset" input: "Placeholder/_0" input: "Placeholder/_1" attr { key: "Toutput_types" value { list { type: DT_FLOAT type: DT_FLOAT } } } attr { key: "_cardinality" value { i: 3 } } attr { key: "is_files" value { b: false } } attr { key: "metadata" value { s: "\n\024TensorSliceDataset:4" } } attr { key: "output_shapes" value { list { shape { dim { size: 2 } } shape { dim { size: 1 } } } } } 10/10 - 3s - loss: 7.4912 - 3s/epoch - 259ms/step Epoch 2/5 10/10 - 0s - loss: 3.3420 - 43ms/epoch - 4ms/step Epoch 3/5 10/10 - 0s - loss: 1.9022 - 44ms/epoch - 4ms/step Epoch 4/5 10/10 - 0s - loss: 1.1536 - 42ms/epoch - 4ms/step Epoch 5/5 10/10 - 0s - loss: 0.7208 - 43ms/epoch - 4ms/step <keras.callbacks.History at 0x7f45d83f3a50>
model.evaluate(eval_dataset, steps=10, return_dict=True)
1/10 [==>...........................] - ETA: 11s - loss: 2.4114 2021-11-13 02:31:10.757780: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:766] 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: "TensorSliceDataset/_2" op: "TensorSliceDataset" input: "Placeholder/_0" input: "Placeholder/_1" attr { key: "Toutput_types" value { list { type: DT_FLOAT type: DT_FLOAT } } } attr { key: "_cardinality" value { i: 3 } } attr { key: "is_files" value { b: false } } attr { key: "metadata" value { s: "\n\024TensorSliceDataset:8" } } attr { key: "output_shapes" value { list { shape { dim { size: 2 } } shape { dim { size: 1 } } } } } 2021-11-13 02:31:10.910985: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:766] 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: "TensorSliceDataset/_2" op: "TensorSliceDataset" input: "Placeholder/_0" input: "Placeholder/_1" attr { key: "Toutput_types" value { list { type: DT_FLOAT type: DT_FLOAT } } } attr { key: "_cardinality" value { i: 3 } } attr { key: "is_files" value { b: false } } attr { key: "metadata" value { s: "\n\024TensorSliceDataset:8" } } attr { key: "output_shapes" value { list { shape { dim { size: 2 } } shape { dim { size: 1 } } } } } 10/10 [==============================] - 2s 38ms/step - loss: 3.8431 2021-11-13 02:31:11.053772: W tensorflow/core/grappler/optimizers/data/auto_shard.cc:766] 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: "TensorSliceDataset/_2" op: "TensorSliceDataset" input: "Placeholder/_0" input: "Placeholder/_1" attr { key: "Toutput_types" value { list { type: DT_FLOAT type: DT_FLOAT } } } attr { key: "_cardinality" value { i: 3 } } attr { key: "is_files" value { b: false } } attr { key: "metadata" value { s: "\n\024TensorSliceDataset:8" } } attr { key: "output_shapes" value { list { shape { dim { size: 2 } } shape { dim { size: 1 } } } } } {'loss': 3.843122}
বিভাজনকারী (
tf.distribute.experimental.partitioners
)টেনসরফ্লো 2-এ
ParameterServerStrategy
সার্ভার স্ট্র্যাটেজি পরিবর্তনশীল পার্টিশনিং সমর্থন করে এবং কম বিভ্রান্তিকর নাম সহ টেনসরফ্লো 1-এর মতো একই পার্টিশনার অফার করে: -tf.compat.v1.variable_axis_size_partitioner
->tf.distribute.experimental.partitioners.MaxSizePartitioner
একটি সর্বোচ্চ আকার পার্টিশনারের অধীনে রাখে . -tf.compat.v1.min_max_variable_partitioner
->tf.distribute.experimental.partitioners.MinSizePartitioner
: একটি পার্টিশনার যেটি প্রতি শার্ডে ন্যূনতম আকার বরাদ্দ করে। -tf.compat.v1.fixed_size_partitioner
->tf.distribute.experimental.partitioners.FixedShardsPartitioner
: একটি বিভাজনকারী যা একটি নির্দিষ্ট সংখ্যক শার্ড বরাদ্দ করে।
বিকল্পভাবে, আপনি একটি MultiWorkerMirroredStrategy
অবজেক্ট ব্যবহার করতে পারেন:
# To clean up the `TF_CONFIG` used for `ParameterServerStrategy`.
del os.environ['TF_CONFIG']
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
অবজেক্ট দিয়ে উপরে ব্যবহৃত কৌশলটি প্রতিস্থাপন করতে পারেন।
tf.estimator
API-এর মতো, যেহেতু MultiWorkerMirroredStrategy
একটি মাল্টি-ক্লায়েন্ট কৌশল, তাই এই Colab নোটবুকে বিতরণ করা প্রশিক্ষণ চালানোর কোনো সহজ উপায় নেই। অতএব, এই কৌশলটির সাথে উপরের কোডটি প্রতিস্থাপন করা স্থানীয়ভাবে জিনিসগুলিকে শেষ করে। Keras Model.fit/ একটি কাস্টম ট্রেনিং লুপ টিউটোরিয়াল-এর সাথে মাল্টি-ওয়ার্কার ট্রেনিং দেখায় যে কীভাবে Colab-এর লোকালহোস্টে দুইজন কর্মীকে 'TF_CONFIG'
ভেরিয়েবল সেট আপ করে মাল্টি-ওয়ার্কার ট্রেনিং চালাতে হয়। অনুশীলনে, আপনি বাহ্যিক IP ঠিকানা/পোর্টে একাধিক কর্মী তৈরি করবেন এবং প্রতিটি কর্মীর জন্য ক্লাস্টার কনফিগারেশন নির্দিষ্ট করতে 'TF_CONFIG'
ভেরিয়েবল ব্যবহার করবেন।
পরবর্তী পদক্ষেপ
TensorFlow 2-এ tf.distribute.experimental.ParameterServerStrategy
এবং tf.distribute.MultiWorkerMirroredStrategy
সহ বহু-কর্মী বিতরণ করা প্রশিক্ষণ সম্পর্কে আরও জানতে, নিম্নলিখিত সংস্থানগুলি বিবেচনা করুন:
- টিউটোরিয়াল: ParameterServerStrategy এবং Keras Model.fit/a কাস্টম ট্রেনিং লুপের সাথে প্যারামিটার সার্ভার প্রশিক্ষণ
- টিউটোরিয়াল: MultiWorkerMirroredStrategy এবং Keras Model.fit সহ বহু-কর্মী প্রশিক্ষণ
- টিউটোরিয়াল: MultiWorkerMirroredStrategy এবং একটি কাস্টম প্রশিক্ষণ লুপ সহ বহু-কর্মী প্রশিক্ষণ
- গাইড: TensorFlow এর সাথে প্রশিক্ষণ বিতরণ করা হয়েছে
- নির্দেশিকা: টেনসরফ্লো প্রোফাইলারের সাথে টেনসরফ্লো জিপিইউ পারফরম্যান্স অপ্টিমাইজ করুন
- নির্দেশিকা: একটি জিপিইউ ব্যবহার করুন (একাধিক জিপিইউ ব্যবহার করা বিভাগ)