TensorFlow.org এ দেখুন | 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 ইন্সট্যান্স পুনরায় সংযোগ এবং কনফিগার করার জন্য নিম্নলিখিত বিভাগগুলি পুনরায় চালান ।
- প্রয়োজনীয় মডিউল আমদানি করুন
- প্রকল্প কনফিগারেশন
- আপনার Google ক্লাউড প্রকল্প ব্যবহার করার জন্য নোটবুক প্রমাণীকরণ করা হচ্ছে
কোডের বাকি অংশ পুনরায় চালাবেন না ।
টেনসরবোর্ড লোড করুন
প্রশিক্ষণ চলাকালীন আপনি ফলাফল দেখতে টেনসরবোর্ড ব্যবহার করতে পারেন। মনে রাখবেন আপনার প্রশিক্ষণ শুরু হওয়ার পরেই ফলাফল দেখাবে। এতে কয়েক মিনিট সময় লাগতে পারে।
%load_ext tensorboard
%tensorboard --logdir $TENSORBOARD_LOGS_DIR
আপনার প্রশিক্ষিত মডেল লোড করুন
একবার প্রশিক্ষণ সম্পূর্ণ হলে, আপনি উপরে উল্লিখিত GCS বাকেট থেকে আপনার মডেল পুনরুদ্ধার করতে পারেন।
trained_model = tf.keras.models.load_model(SAVED_MODEL_DIR)
trained_model.summary()