টেনসরফ্লো ক্লাউড

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

টেনসরফ্লো ক্লাউড হল একটি লাইব্রেরি যা Google ক্লাউডে কেরাস মডেলগুলির প্রশিক্ষণ এবং হাইপারপ্যারামিটার টিউনিং করা সহজ করে তোলে৷

TensorFlow ক্লাউডের run API ব্যবহার করে, আপনি আপনার মডেল কোড সরাসরি আপনার Google ক্লাউড অ্যাকাউন্টে পাঠাতে পারেন, এবং ক্লাউড UI এর সাথে লগইন এবং ইন্টারঅ্যাক্ট করার প্রয়োজন ছাড়াই Google ক্লাউড কম্পিউট রিসোর্স ব্যবহার করতে পারেন (একবার আপনি কনসোলে আপনার প্রোজেক্ট সেট আপ করলে)।

এর মানে হল যে আপনি সরাসরি পাইথন নোটবুকের ভিতর থেকে আপনার Google ক্লাউড কম্পিউট রিসোর্স ব্যবহার করতে পারেন: এইরকম একটি নোটবুক! আপনি একটি প্লেইন .py পাইথন স্ক্রিপ্ট থেকে Google ক্লাউডে মডেল পাঠাতে পারেন।

সহজ উদাহরণ

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

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

প্রয়োজনীয় মডিউল আমদানি করুন

import tensorflow as tf
tf.version.VERSION
'2.6.0'
! pip install -q tensorflow-cloud
import tensorflow_cloud as tfc
print(tfc.__version__)
import sys

প্রকল্প কনফিগারেশন

প্রকল্পের পরামিতি সেট করুন। আপনি যদি না জানেন যে আপনার GCP_PROJECT_ID বা GCS_BUCKET কি হওয়া উচিত, দেখুন আপনার Google ক্লাউড অ্যাকাউন্ট সেট আপ এবং সংযোগ করা

JOB_NAME ঐচ্ছিক, এবং আপনি এটিকে যেকোনো স্ট্রিংয়ে সেট করতে পারেন। আপনি যদি একটি বৃহত্তর প্রকল্পের অংশ হিসাবে একাধিক প্রশিক্ষণের পরীক্ষা (উদাহরণস্বরূপ) করছেন, আপনি তাদের প্রত্যেককে একটি অনন্য JOB_NAME দিতে চাইতে পারেন।

# Set Google Cloud Specific parameters

# TODO: Please set GCP_PROJECT_ID to your own Google Cloud project ID.
GCP_PROJECT_ID = 'YOUR_PROJECT_ID'

# TODO: set GCS_BUCKET to your own Google Cloud Storage (GCS) bucket.
GCS_BUCKET = 'YOUR_GCS_BUCKET_NAME'

# DO NOT CHANGE: Currently only the 'us-central1' region is supported.
REGION = 'us-central1'

# OPTIONAL: You can change the job name to any string.
JOB_NAME = 'mnist'

# Setting location were training logs and checkpoints will be stored
GCS_BASE_PATH = f'gs://{GCS_BUCKET}/{JOB_NAME}'
TENSORBOARD_LOGS_DIR = os.path.join(GCS_BASE_PATH,"logs")
MODEL_CHECKPOINT_DIR = os.path.join(GCS_BASE_PATH,"checkpoints")
SAVED_MODEL_DIR = os.path.join(GCS_BASE_PATH,"saved_model")

আপনার Google ক্লাউড প্রকল্প ব্যবহার করার জন্য নোটবুক প্রমাণীকরণ করা হচ্ছে

এই কোডটি নোটবুককে প্রমাণীকরণ করে, আপনার বৈধ Google ক্লাউড শংসাপত্র এবং পরিচয় পরীক্ষা করে। এটি if not tfc.remote() ব্লকের ভিতরে থাকে তা নিশ্চিত করতে যে এটি শুধুমাত্র নোটবুকে চালানো হয় এবং যখন নোটবুক কোড Google ক্লাউডে পাঠানো হয় তখন এটি চালানো হবে না।

# Using tfc.remote() to ensure this code only runs in notebook
if not tfc.remote():

    # Authentication for Kaggle Notebooks
    if "kaggle_secrets" in sys.modules:
        from kaggle_secrets import UserSecretsClient
        UserSecretsClient().set_gcloud_credentials(project=GCP_PROJECT_ID)

    # Authentication for Colab Notebooks
    if "google.colab" in sys.modules:
        from google.colab import auth
        auth.authenticate_user()
        os.environ["GOOGLE_CLOUD_PROJECT"] = GCP_PROJECT_ID

মডেল এবং ডেটা সেটআপ

এখান থেকে আমরা MNIST ডেটাসেটে শ্রেণীবিভাগ চালানোর জন্য একটি সাধারণ কেরাস মডেল সেট আপ করার প্রাথমিক পদ্ধতি অনুসরণ করছি।

লোড এবং বিভক্ত তথ্য

কাঁচা ডেটা পড়ুন এবং ডেটা সেটগুলিকে প্রশিক্ষণ ও পরীক্ষা করতে বিভক্ত করুন।

(x_train, y_train), (_, _) = tf.keras.datasets.mnist.load_data()

x_train = x_train.reshape((60000, 28 * 28))
x_train = x_train.astype('float32') / 255

একটি মডেল তৈরি করুন এবং প্রশিক্ষণের জন্য প্রস্তুত করুন

একটি সাধারণ মডেল তৈরি করুন এবং এটির জন্য কয়েকটি কলব্যাক সেট আপ করুন৷

from tensorflow.keras import layers

model = tf.keras.Sequential([
  tf.keras.layers.Dense(512, activation='relu', input_shape=(28 * 28,)),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(loss='sparse_categorical_crossentropy',
              optimizer=tf.keras.optimizers.Adam(),
              metrics=['accuracy'])

দ্রুত বৈধতা প্রশিক্ষণ

সবকিছু সঠিকভাবে সেট আপ করা হয়েছে তা নিশ্চিত করার জন্য আমরা মডেলটিকে একটি (1) যুগের জন্য প্রশিক্ষণ দেব এবং tfc.remote if not আমরা সেই প্রশিক্ষণ কমান্ডটি গুটিয়ে দেব, যাতে এটি শুধুমাত্র রানটাইম পরিবেশে ঘটে যেখানে আপনি এটি পড়ছে, যখন এটি Google ক্লাউডে পাঠানো হয় তখন নয়।

if not tfc.remote():
    # Run the training for 1 epoch and a small subset of the data to validate setup
    model.fit(x=x_train[:100], y=y_train[:100], validation_split=0.2, epochs=1)

দূরবর্তী প্রশিক্ষণের জন্য প্রস্তুত করুন

নিচের কোডটি তখনই চলবে যখন নোটবুকের কোডটি Google ক্লাউডে পাঠানো হবে, আপনি যে রানটাইমে এটি পড়ছেন তার মধ্যে নয়।

প্রথমত, আমরা কলব্যাক সেট আপ করি যা করবে:

  • টেনসরবোর্ডের জন্য লগ তৈরি করুন।
  • চেকপয়েন্ট তৈরি করুন এবং উপরে উল্লিখিত চেকপয়েন্ট ডিরেক্টরিতে সংরক্ষণ করুন।
  • ক্ষতি যথেষ্ট উন্নতি না হলে মডেল প্রশিক্ষণ বন্ধ করুন।

তারপরে আমরা model.fit এবং model.save কল করি, যেটি (যখন এই কোডটি Google ক্লাউডে চলছে) যা প্রকৃতপক্ষে সম্পূর্ণ প্রশিক্ষণ চালায় (100 যুগ) এবং তারপরে উপরে সংজ্ঞায়িত GCS বাকেট এবং ডিরেক্টরিতে প্রশিক্ষিত মডেলটিকে সংরক্ষণ করি৷

if tfc.remote():
    # Configure Tensorboard logs
    callbacks=[
        tf.keras.callbacks.TensorBoard(log_dir=TENSORBOARD_LOGS_DIR),
        tf.keras.callbacks.ModelCheckpoint(
            MODEL_CHECKPOINT_DIR,
            save_best_only=True),
        tf.keras.callbacks.EarlyStopping(
            monitor='loss',
            min_delta =0.001,
            patience=3)]

    model.fit(x=x_train, y=y_train, epochs=100,
              validation_split=0.2, callbacks=callbacks)

    model.save(SAVED_MODEL_DIR)

দূরবর্তী প্রশিক্ষণ শুরু করুন

TensorFlow ক্লাউড তার স্থানীয় এক্সিকিউশন এনভায়রনমেন্ট (এই নোটবুক) থেকে সমস্ত কোড নেয়, এটি গুটিয়ে রাখে এবং এক্সিকিউশনের জন্য Google ক্লাউডে পাঠায়। ( if not if tfc.remote গুরুত্বপূর্ণ।)

এই ধাপটি এই নোটবুক থেকে রিমোট এক্সিকিউশনের জন্য আপনার কোড প্রস্তুত করবে এবং তারপরে মডেলটিকে প্রশিক্ষণের জন্য Google ক্লাউড প্ল্যাটফর্মে একটি দূরবর্তী প্রশিক্ষণের কাজ শুরু করবে।

প্রথমে আমরা একটি requirements.txt ফাইলে tensorflow-cloud Python প্যাকেজ যোগ করি, যা এই নোটবুকের কোড সহ পাঠানো হবে। প্রয়োজনে আপনি এখানে অন্যান্য প্যাকেজ যোগ করতে পারেন।

তারপর একটি GPU এবং একটি CPU ইমেজ নির্দিষ্ট করা হয়। আপনি শুধুমাত্র একটি বা অন্য নির্দিষ্ট করতে হবে; নিম্নলিখিত কোডে GPU ব্যবহার করা হয়।

অবশেষে, TensorFlow ক্লাউডের হৃদয়: tfc.run এ কল। যখন এটি এই নোটবুকের ভিতরে কার্যকর করা হয়, তখন এই নোটবুকের সমস্ত কোড এবং এই ডিরেক্টরির বাকি ফাইলগুলিকে প্যাকেজ করা হবে এবং সম্পাদনের জন্য Google ক্লাউডে পাঠানো হবে৷ run পদ্ধতির পরামিতিগুলি GPU CPU ইমেজগুলির বিশদ বিবরণ নির্দিষ্ট করে। আপনি শুধুমাত্র একটি বা অন্য নির্দিষ্ট করতে হবে; নিম্নলিখিত কোডে GPU ব্যবহার করা হয়।

অবশেষে, TensorFlow ক্লাউডের হৃদয়: tfc.run এ কল। যখন এটি এই নোটবুকের ভিতরে কার্যকর করা হয়, তখন এই নোটবুকের সমস্ত কোড এবং এই ডিরেক্টরির বাকি ফাইলগুলিকে প্যাকেজ করা হবে এবং সম্পাদনের জন্য Google ক্লাউডে পাঠানো হবে৷ run পদ্ধতির পরামিতিগুলি GPU এবং CPU ইমেজগুলির বিশদ বিবরণ নির্দিষ্ট করে। আপনি শুধুমাত্র একটি বা অন্য নির্দিষ্ট করতে হবে; নিম্নলিখিত কোডে GPU ব্যবহার করা হয়।

অবশেষে, TensorFlow ক্লাউডের হৃদয়: tfc.run এ কল। যখন এটি এই নোটবুকের ভিতরে কার্যকর করা হয়, তখন এই নোটবুকের সমস্ত কোড এবং এই ডিরেক্টরির বাকি ফাইলগুলিকে প্যাকেজ করা হবে এবং সম্পাদনের জন্য Google ক্লাউডে পাঠানো হবে৷ run পদ্ধতির পরামিতিগুলি এক্সিকিউশন এনভায়রনমেন্টের বিশদ বিবরণ এবং ডিস্ট্রিবিউশন কৌশল (যদি থাকে) ব্যবহার করা হবে তা উল্লেখ করে।

চাকরি জমা দেওয়ার পরে আপনি টেনসরবোর্ডের মাধ্যমে কাজের অগ্রগতি নিরীক্ষণ করতে পরবর্তী ধাপে যেতে পারেন।

# If you are using a custom image you can install modules via requirements
# txt file.
with open('requirements.txt','w') as f:
    f.write('tensorflow-cloud\n')

# Optional: Some recommended base images. If you provide none the system
# will choose one for you.
TF_GPU_IMAGE= "tensorflow/tensorflow:latest-gpu"
TF_CPU_IMAGE= "tensorflow/tensorflow:latest"

# Submit a single node training job using GPU.
tfc.run(
    distribution_strategy='auto',
    requirements_txt='requirements.txt',
    docker_config=tfc.DockerConfig(
        parent_image=TF_GPU_IMAGE,
        image_build_bucket=GCS_BUCKET
        ),
    chief_config=tfc.COMMON_MACHINE_CONFIGS['K80_1X'],
    job_labels={'job': JOB_NAME}
)

প্রশিক্ষণ ফলাফল

আপনার Colab ইন্সট্যান্স আবার কানেক্ট করুন

অধিকাংশ দূরবর্তী প্রশিক্ষণ কাজ দীর্ঘ চলমান. আপনি যদি Colab ব্যবহার করেন, তাহলে প্রশিক্ষণের ফলাফল পাওয়া যাওয়ার আগেই এর সময় শেষ হয়ে যেতে পারে।

সেই ক্ষেত্রে, প্রশিক্ষণের ফলাফলগুলি অ্যাক্সেস করার জন্য আপনার Colab ইন্সট্যান্স পুনরায় সংযোগ এবং কনফিগার করার জন্য নিম্নলিখিত বিভাগগুলি পুনরায় চালান

  1. প্রয়োজনীয় মডিউল আমদানি করুন
  2. প্রকল্প কনফিগারেশন
  3. আপনার Google ক্লাউড প্রকল্প ব্যবহার করার জন্য নোটবুক প্রমাণীকরণ করা হচ্ছে

কোডের বাকি অংশ পুনরায় চালাবেন না

টেনসরবোর্ড লোড করুন

প্রশিক্ষণ চলাকালীন আপনি ফলাফল দেখতে টেনসরবোর্ড ব্যবহার করতে পারেন। মনে রাখবেন আপনার প্রশিক্ষণ শুরু হওয়ার পরেই ফলাফল দেখাবে। এতে কয়েক মিনিট সময় লাগতে পারে।

%load_ext tensorboard
%tensorboard --logdir $TENSORBOARD_LOGS_DIR

আপনার প্রশিক্ষিত মডেল লোড করুন

একবার প্রশিক্ষণ সম্পূর্ণ হলে, আপনি উপরে উল্লিখিত GCS বাকেট থেকে আপনার মডেল পুনরুদ্ধার করতে পারেন।

trained_model = tf.keras.models.load_model(SAVED_MODEL_DIR)
trained_model.summary()