TPUEstimator থেকে TPUStrategy এ স্থানান্তর করুন

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

এই নির্দেশিকাটি দেখায় কিভাবে TPU-তে চলমান আপনার ওয়ার্কফ্লোগুলিকে TensorFlow 1-এর TPUEstimator API থেকে TensorFlow 2-এর TPUStrategy API-তে স্থানান্তর করতে হয়।

  • TensorFlow 1-এ, tf.compat.v1.estimator.tpu.TPUEstimator API আপনাকে একটি মডেলকে প্রশিক্ষণ ও মূল্যায়ন করতে দেয়, সেইসাথে অনুমান করতে এবং (ক্লাউড) TPU-তে আপনার মডেল (পরিষেবার জন্য) সংরক্ষণ করতে দেয়।
  • TensorFlow 2-এ, TPUs এবং TPU Pods (ডেডিকেটেড হাই-স্পিড নেটওয়ার্ক ইন্টারফেস দ্বারা সংযুক্ত TPU ডিভাইসের একটি সংগ্রহ) উপর সিঙ্ক্রোনাস প্রশিক্ষণের জন্য, আপনাকে একটি TPU বিতরণ কৌশল ব্যবহার করতে tf.distribute.TPUStrategy । মডেল বিল্ডিং ( tf.keras.Model ), অপ্টিমাইজার ( tf.keras.optimizers.Optimizer ), এবং ট্রেনিং ( Model.fit )-এর পাশাপাশি একটি কাস্টম ট্রেনিং লুপ ( tf.function সহ tf.function এবং tf.GradientTape . গ্রেডিয়েন্টটেপ)।

এন্ড-টু-এন্ড টেনসরফ্লো 2 উদাহরণের জন্য, টিপিইউ ব্যবহার করুন নির্দেশিকাটি দেখুন—যেমন, টিপিইউগুলির শ্রেণীবিভাগ —এবং TPU টিউটোরিয়ালের BERT ব্যবহার করে GLUE কাজগুলি সমাধান করুন । আপনি ডিস্ট্রিবিউটেড ট্রেনিং গাইডটিও দরকারী খুঁজে পেতে পারেন, যা TPUStrategy বিতরণ কৌশলগুলিকে কভার করে।

সেটআপ

প্রদর্শনের উদ্দেশ্যে আমদানি এবং একটি সাধারণ ডেটাসেট দিয়ে শুরু করুন:

import tensorflow as tf
import tensorflow.compat.v1 as tf1
/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/requests/__init__.py:104: RequestsDependencyWarning: urllib3 (1.26.8) or chardet (2.3.0)/charset_normalizer (2.0.11) doesn't match a supported version!
  RequestsDependencyWarning)
features = [[1., 1.5]]
labels = [[0.3]]
eval_features = [[4., 4.5]]
eval_labels = [[0.8]]

টেনসরফ্লো 1: টিপিইউইস্টিমেটর দিয়ে টিপিইউতে একটি মডেল চালান

গাইডের এই বিভাগটি টেনসরফ্লো 1-এ tf.compat.v1.estimator.tpu.TPUEstimator এর সাহায্যে কীভাবে প্রশিক্ষণ এবং মূল্যায়ন করতে হয় তা প্রদর্শন করে।

একটি TPUEstimator ব্যবহার করতে, প্রথমে কয়েকটি ফাংশন সংজ্ঞায়িত করুন: প্রশিক্ষণ ডেটার জন্য একটি ইনপুট ফাংশন, মূল্যায়ন ডেটার জন্য একটি মূল্যায়ন ইনপুট ফাংশন, এবং একটি মডেল ফাংশন যা TPUEstimator বলে যে প্রশিক্ষণ অপটি বৈশিষ্ট্য এবং লেবেলগুলির সাথে কীভাবে সংজ্ঞায়িত করা হয়েছে:

def _input_fn(params):
  dataset = tf1.data.Dataset.from_tensor_slices((features, labels))
  dataset = dataset.repeat()
  return dataset.batch(params['batch_size'], drop_remainder=True)

def _eval_input_fn(params):
  dataset = tf1.data.Dataset.from_tensor_slices((eval_features, eval_labels))
  dataset = dataset.repeat()
  return dataset.batch(params['batch_size'], drop_remainder=True)

def _model_fn(features, labels, mode, params):
  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.tpu.TPUEstimatorSpec(mode, loss=loss, train_op=train_op)

এই ফাংশনগুলিকে সংজ্ঞায়িত করে, একটি tf.distribute.cluster_resolver.TPUClusterResolver তৈরি করুন যা ক্লাস্টার তথ্য প্রদান করে, এবং একটি tf.compat.v1.estimator.tpu.RunConfig অবজেক্ট। আপনার সংজ্ঞায়িত মডেল ফাংশনের সাথে, আপনি এখন একটি TPUEstimator তৈরি করতে পারেন। এখানে, আপনি চেকপয়েন্ট সঞ্চয় বাদ দিয়ে প্রবাহকে সহজ করবেন। তারপর, আপনি TPUEstimator এর প্রশিক্ষণ এবং মূল্যায়ন উভয়ের জন্য ব্যাচের আকার নির্দিষ্ট করবেন।

cluster_resolver = tf1.distribute.cluster_resolver.TPUClusterResolver(tpu='')
print("All devices: ", tf1.config.list_logical_devices('TPU'))
All devices:  []
tpu_config = tf1.estimator.tpu.TPUConfig(iterations_per_loop=10)
config = tf1.estimator.tpu.RunConfig(
    cluster=cluster_resolver,
    save_checkpoints_steps=None,
    tpu_config=tpu_config)
estimator = tf1.estimator.tpu.TPUEstimator(
    model_fn=_model_fn,
    config=config,
    train_batch_size=8,
    eval_batch_size=8)
WARNING:tensorflow:Estimator's model_fn (<function _model_fn at 0x7fef73ae76a8>) includes params argument, but params are not passed to Estimator.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmp_bkua7zf
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmp_bkua7zf', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': None, '_session_config': allow_soft_placement: true
cluster_def {
  job {
    name: "worker"
    tasks {
      key: 0
      value: "10.240.1.2:8470"
    }
  }
}
isolate_session_state: true
, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': None, '_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({'worker': ['10.240.1.2:8470']}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': 'grpc://10.240.1.2:8470', '_evaluation_master': 'grpc://10.240.1.2:8470', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1, '_tpu_config': TPUConfig(iterations_per_loop=10, num_shards=None, num_cores_per_replica=None, per_host_input_for_training=2, tpu_job_name=None, initial_infeed_sleep_secs=None, input_partition_dims=None, eval_training_input_configuration=2, experimental_host_call_every_n_steps=1, experimental_allow_per_host_v2_parallel_get_next=False, experimental_feed_hook=None), '_cluster': <tensorflow.python.distribute.cluster_resolver.tpu.tpu_cluster_resolver.TPUClusterResolver object at 0x7ff288b6aa20>}
INFO:tensorflow:_TPUContext: eval_on_tpu True

মডেল প্রশিক্ষণ শুরু করতে TPUEstimator.train এ কল করুন:

estimator.train(_input_fn, steps=1)
INFO:tensorflow:Querying Tensorflow master (grpc://10.240.1.2:8470) for TPU system metadata.
INFO:tensorflow:Found TPU system:
INFO:tensorflow:*** Num TPU Cores: 8
INFO:tensorflow:*** Num TPU Workers: 1
INFO:tensorflow:*** Num TPU Cores Per Worker: 8
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:CPU:0, CPU, -1, 2562214468325910549)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 7806191887455116208)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 4935096526614797404)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:2, TPU, 17179869184, 6208852770722846295)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:3, TPU, 17179869184, -4484747666522931072)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:4, TPU, 17179869184, -8715412538518264422)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:5, TPU, 17179869184, -3521027846460785533)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:6, TPU, 17179869184, -6534172152637582552)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:7, TPU, 17179869184, 4735861352635655596)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU_SYSTEM:0, TPU_SYSTEM, 17179869184, -411508280321075475)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 2431932884271560631)
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/training/training_util.py:236: 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.6/site-packages/tensorflow/python/training/adagrad.py:77: 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:Bypassing TPUEstimator hook
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:TPU job name worker
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/tpu/tpu_estimator.py:758: Variable.load (from tensorflow.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Prefer Variable.assign which has equivalent behavior in 2.X.
INFO:tensorflow:Initialized dataset iterators in 0 seconds
INFO:tensorflow:Installing graceful shutdown hook.
INFO:tensorflow:Creating heartbeat manager for ['/job:worker/replica:0/task:0/device:CPU:0']
INFO:tensorflow:Configuring worker heartbeat: shutdown_mode: WAIT_FOR_COORDINATOR

INFO:tensorflow:Init TPU system
INFO:tensorflow:Initialized TPU in 7 seconds
INFO:tensorflow:Starting infeed thread controller.
INFO:tensorflow:Starting outfeed thread controller.
INFO:tensorflow:Enqueue next (1) batch(es) of data to infeed.
INFO:tensorflow:Dequeue next (1) batch(es) of data from outfeed.
INFO:tensorflow:Outfeed finished for iteration (0, 0)
INFO:tensorflow:loss = 4.462118, step = 1
INFO:tensorflow:Stop infeed thread controller
INFO:tensorflow:Shutting down InfeedController thread.
INFO:tensorflow:InfeedController received shutdown signal, stopping.
INFO:tensorflow:Infeed thread finished, shutting down.
INFO:tensorflow:infeed marked as finished
INFO:tensorflow:Stop output thread controller
INFO:tensorflow:Shutting down OutfeedController thread.
INFO:tensorflow:OutfeedController received shutdown signal, stopping.
INFO:tensorflow:Outfeed thread finished, shutting down.
INFO:tensorflow:outfeed marked as finished
INFO:tensorflow:Shutdown TPU system.
INFO:tensorflow:Loss for final step: 4.462118.
INFO:tensorflow:training_loop marked as finished
<tensorflow_estimator.python.estimator.tpu.tpu_estimator.TPUEstimator at 0x7fec59ef9d68>

তারপর, মূল্যায়ন ডেটা ব্যবহার করে মডেলটি মূল্যায়ন করতে TPUEstimator.evaluate কল করুন:

estimator.evaluate(_eval_input_fn, steps=1)
INFO:tensorflow:Could not find trained model in model_dir: /tmp/tmp_bkua7zf, running initialization to evaluate.
INFO:tensorflow:Calling model_fn.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/tpu/tpu_estimator.py:3406: div (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Deprecated in favor of operator or tf.math.divide.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2022-02-05T13:15:25
INFO:tensorflow:TPU job name worker
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Init TPU system
INFO:tensorflow:Initialized TPU in 10 seconds
INFO:tensorflow:Starting infeed thread controller.
INFO:tensorflow:Starting outfeed thread controller.
INFO:tensorflow:Initialized dataset iterators in 0 seconds
INFO:tensorflow:Enqueue next (1) batch(es) of data to infeed.
INFO:tensorflow:Dequeue next (1) batch(es) of data from outfeed.
INFO:tensorflow:Outfeed finished for iteration (0, 0)
INFO:tensorflow:Evaluation [1/1]
INFO:tensorflow:Stop infeed thread controller
INFO:tensorflow:Shutting down InfeedController thread.
INFO:tensorflow:InfeedController received shutdown signal, stopping.
INFO:tensorflow:Infeed thread finished, shutting down.
INFO:tensorflow:infeed marked as finished
INFO:tensorflow:Stop output thread controller
INFO:tensorflow:Shutting down OutfeedController thread.
INFO:tensorflow:OutfeedController received shutdown signal, stopping.
INFO:tensorflow:Outfeed thread finished, shutting down.
INFO:tensorflow:outfeed marked as finished
INFO:tensorflow:Shutdown TPU system.
INFO:tensorflow:Inference Time : 10.80091s
INFO:tensorflow:Finished evaluation at 2022-02-05-13:15:36
INFO:tensorflow:Saving dict for global step 1: global_step = 1, loss = 116.58184
INFO:tensorflow:evaluation_loop marked as finished
{'loss': 116.58184, 'global_step': 1}

TensorFlow 2: Keras Model.fit এবং TPUStrategy সহ TPU-তে একটি মডেল চালান

TensorFlow 2-এ, TPU কর্মীদের প্রশিক্ষণ দিতে, মডেল সংজ্ঞা এবং প্রশিক্ষণ/মূল্যায়নের জন্য কেরাস API-এর সাথে tf.distribute.TPUStrategy ব্যবহার করুন। (Keras Model.fit এবং একটি কাস্টম প্রশিক্ষণ লুপ ( tf.function এবং tf.GradientTape ) প্রশিক্ষণের আরও উদাহরণের জন্য TPUs নির্দেশিকা ব্যবহার করুন।)

যেহেতু রিমোট ক্লাস্টারের সাথে সংযোগ করতে এবং টিপিইউ কর্মীদের আরম্ভ করার জন্য আপনাকে কিছু প্রারম্ভিক কাজ সম্পাদন করতে হবে, তাই ক্লাস্টারের তথ্য প্রদান করতে এবং ক্লাস্টারের সাথে সংযোগ করতে একটি TPUClusterResolver তৈরি করে শুরু করুন। ( TPUs ব্যবহার করুন গাইডের TPU প্রারম্ভিক বিভাগে আরও জানুন।)

cluster_resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
tf.config.experimental_connect_to_cluster(cluster_resolver)
tf.tpu.experimental.initialize_tpu_system(cluster_resolver)
print("All devices: ", tf.config.list_logical_devices('TPU'))
INFO:tensorflow:Clearing out eager caches
INFO:tensorflow:Clearing out eager caches
INFO:tensorflow:Initializing the TPU system: grpc://10.240.1.2:8470
INFO:tensorflow:Initializing the TPU system: grpc://10.240.1.2:8470
INFO:tensorflow:Finished initializing TPU system.
INFO:tensorflow:Finished initializing TPU system.
All devices:  [LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:0', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:1', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:2', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:3', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:4', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:5', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:6', device_type='TPU'), LogicalDevice(name='/job:worker/replica:0/task:0/device:TPU:7', device_type='TPU')]

এরপরে, একবার আপনার ডেটা প্রস্তুত হয়ে গেলে, আপনি একটি TPUStrategy তৈরি করবেন, একটি মডেল, মেট্রিক্স এবং এই কৌশলের সুযোগের অধীনে একটি অপ্টিমাইজার সংজ্ঞায়িত করবেন।

TPUStrategy সাথে তুলনামূলক প্রশিক্ষণের গতি অর্জন করতে, আপনাকে steps_per_executionModel.compile এর জন্য একটি নম্বর বাছাই করতে হবে কারণ এটি প্রতিটি tf.function কল চলাকালীন চালানোর জন্য ব্যাচের সংখ্যা নির্দিষ্ট করে এবং কর্মক্ষমতার জন্য গুরুত্বপূর্ণ। এই যুক্তিটি একটি TPUEstimator এ ব্যবহৃত iterations_per_loop এর অনুরূপ। আপনি যদি কাস্টম ট্রেনিং লুপ ব্যবহার করেন, আপনার নিশ্চিত হওয়া উচিত tf.function -ed ট্রেনিং ফাংশনের মধ্যে একাধিক ধাপ চালানো হয়েছে। আরও তথ্যের জন্য TPUs ব্যবহার করুন গাইডের tf.function বিভাগে একাধিক ধাপের সাথে পারফরম্যান্সের উন্নতিতে যান।

tf.distribute.TPUStrategy ডাইনামিক শেপকে সমর্থন করতে পারে, যে ক্ষেত্রে ডায়নামিক শেপ কম্পিউটেশনের উপরের বাউন্ড অনুমান করা যায়। কিন্তু গতিশীল আকারগুলি স্ট্যাটিক আকারের তুলনায় কিছু কর্মক্ষমতা ওভারহেড প্রবর্তন করতে পারে। সুতরাং, সাধারণত আপনার ইনপুট আকারগুলিকে সম্ভব হলে স্থির করার পরামর্শ দেওয়া হয়, বিশেষ করে প্রশিক্ষণে। একটি সাধারণ বিকল্প যা একটি গতিশীল আকৃতি প্রদান করে তা হল tf.data.Dataset.batch(batch_size) , যেহেতু একটি স্ট্রীমে অবশিষ্ট নমুনার সংখ্যা ব্যাচের আকারের চেয়ে কম হতে পারে। তাই, TPU-তে প্রশিক্ষণ নেওয়ার সময়, সেরা প্রশিক্ষণ কর্মক্ষমতার জন্য আপনার tf.data.Dataset.batch(..., drop_remainder=True) ব্যবহার করা উচিত।

dataset = tf.data.Dataset.from_tensor_slices(
    (features, labels)).shuffle(10).repeat().batch(
        8, drop_remainder=True).prefetch(2)
eval_dataset = tf.data.Dataset.from_tensor_slices(
    (eval_features, eval_labels)).batch(1, drop_remainder=True)

strategy = tf.distribute.TPUStrategy(cluster_resolver)
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", steps_per_execution=10)
INFO:tensorflow:Found TPU system:
INFO:tensorflow:Found TPU system:
INFO:tensorflow:*** Num TPU Cores: 8
INFO:tensorflow:*** Num TPU Cores: 8
INFO:tensorflow:*** Num TPU Workers: 1
INFO:tensorflow:*** Num TPU Workers: 1
INFO:tensorflow:*** Num TPU Cores Per Worker: 8
INFO:tensorflow:*** Num TPU Cores Per Worker: 8
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:CPU:0, CPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:CPU:0, CPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:0, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:0, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:1, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:1, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:2, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:2, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:3, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:3, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:4, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:4, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:5, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:5, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:6, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:6, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:7, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU:7, TPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU_SYSTEM:0, TPU_SYSTEM, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:TPU_SYSTEM:0, TPU_SYSTEM, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 0, 0)
INFO:tensorflow:*** Available Device: _DeviceAttributes(/job:worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 0, 0)

এর সাথে, আপনি প্রশিক্ষণ ডেটাসেটের সাথে মডেলটিকে প্রশিক্ষণ দিতে প্রস্তুত:

model.fit(dataset, epochs=5, steps_per_epoch=10)
Epoch 1/5
10/10 [==============================] - 2s 151ms/step - loss: 0.0840
Epoch 2/5
10/10 [==============================] - 0s 3ms/step - loss: 9.6915e-04
Epoch 3/5
10/10 [==============================] - 0s 3ms/step - loss: 1.5100e-05
Epoch 4/5
10/10 [==============================] - 0s 3ms/step - loss: 2.3593e-07
Epoch 5/5
10/10 [==============================] - 0s 3ms/step - loss: 3.7059e-09
<keras.callbacks.History at 0x7fec58275438>

অবশেষে, মূল্যায়ন ডেটাসেট ব্যবহার করে মডেলটি মূল্যায়ন করুন:

model.evaluate(eval_dataset, return_dict=True)
1/1 [==============================] - 2s 2s/step - loss: 0.6127
{'loss': 0.6127181053161621}

পরবর্তী পদক্ষেপ

TensorFlow 2-এ TPUStrategy সম্পর্কে আরও জানতে, নিম্নলিখিত সংস্থানগুলি বিবেচনা করুন:

আপনার প্রশিক্ষণ কাস্টমাইজ করার বিষয়ে আরও জানতে, পড়ুন:

TPUs—মেশিন লার্নিংয়ের জন্য Google-এর বিশেষ ASICs—Google Colab , TPU Research Cloud এবং Cloud TPU-এর মাধ্যমে পাওয়া যায়।