عرض على TensorFlow.org | عرض على جيثب | تحميل دفتر | تشغيل في Kaggle |
TensorFlow Cloud هي مكتبة تسهل إجراء التدريب وضبط المعلمات الفائقة لنماذج Keras على Google Cloud.
باستخدام واجهة برمجة تطبيقات run
TensorFlow Cloud، يمكنك إرسال رمز النموذج الخاص بك مباشرةً إلى حساب Google Cloud الخاص بك، واستخدام موارد حساب Google Cloud دون الحاجة إلى تسجيل الدخول والتفاعل مع Cloud UI (بمجرد إعداد مشروعك في وحدة التحكم).
هذا يعني أنه يمكنك استخدام موارد الحوسبة السحابية الخاصة بك على Google من داخل دفتر ملاحظات Python مباشرة: دفتر ملاحظات مثل هذا تمامًا! يمكنك أيضًا إرسال النماذج إلى Google Cloud من خلال برنامج نصي عادي .py
Python.
مثال بسيط
هذا مثال تمهيدي بسيط لتوضيح كيفية تدريب نموذج عن بعد باستخدام TensorFlow Cloud وGoogle Cloud.
يمكنك فقط قراءته للحصول على فكرة عن كيفية عمل ذلك، أو يمكنك تشغيل دفتر الملاحظات في Google Colab. يتطلب تشغيل الكمبيوتر المحمول الاتصال بحساب Google Cloud وإدخال بيانات الاعتماد ومعرف المشروع. راجع الإعداد والاتصال بحساب Google Cloud الخاص بك إذا لم يكن لديك حساب بعد أو لم تكن متأكدًا من كيفية إعداد مشروع في وحدة التحكم.
استيراد الوحدات المطلوبة
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 Cloud الخاص بك .
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 Cloud الخاص بك
يقوم هذا الرمز بمصادقة دفتر الملاحظات، والتحقق من بيانات اعتماد وهوية Google Cloud الصالحة. إنه موجود داخل كتلة if not tfc.remote()
للتأكد من تشغيله فقط في دفتر الملاحظات، ولن يتم تشغيله عند إرسال رمز دفتر الملاحظات إلى Google Cloud.
# 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
إعداد النموذج والبيانات
من هنا نتبع الإجراء الأساسي لإعداد نموذج Keras بسيط لتشغيل التصنيف على مجموعة بيانات 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) فقط للتأكد من إعداد كل شيء بشكل صحيح، وسنقوم بتضمين أمر التدريب هذا if not
tfc.remote
، بحيث يحدث هنا فقط في بيئة التشغيل التي أنت فيها نقرأ هذا، وليس عند إرساله إلى Google Cloud.
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 Cloud، وليس خلال وقت التشغيل الذي تقرأ فيه هذا.
أولاً، قمنا بإعداد عمليات الاسترجاعات التي سوف:
- إنشاء سجلات لـ TensorBoard .
- قم بإنشاء نقاط التفتيش وحفظها في دليل نقاط التفتيش المحدد أعلاه.
- أوقف تدريب النموذج إذا لم تتحسن الخسارة بشكل كافٍ.
ثم نستدعي model.fit
و model.save
، اللذين (عند تشغيل هذا الرمز على Google Cloud) اللذان يقومان بالفعل بتشغيل التدريب الكامل (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 Cloud جميع التعليمات البرمجية من بيئة التنفيذ المحلية الخاصة بها (هذا الكمبيوتر الدفتري)، وتغلفها، وترسلها إلى Google Cloud للتنفيذ. (ولهذا السبب تعتبر الأغلفة if
و if not
tfc.remote
مهمة.)
ستعمل هذه الخطوة على إعداد التعليمات البرمجية الخاصة بك من هذا الكمبيوتر الدفتري للتنفيذ عن بُعد ثم بدء مهمة التدريب عن بُعد على Google Cloud Platform لتدريب النموذج.
نقوم أولاً بإضافة حزمة Python tensorflow-cloud
إلى ملف requirements.txt
، والذي سيتم إرساله مع الكود الموجود في هذا الدفتر. يمكنك إضافة حزم أخرى هنا حسب الحاجة.
ثم يتم تحديد GPU وصورة وحدة المعالجة المركزية. ما عليك سوى تحديد واحد أو آخر؛ يتم استخدام GPU في الكود التالي.
أخيرًا، قلب سحابة TensorFlow: الدعوة إلى tfc.run
. عند تنفيذ ذلك داخل هذا الكمبيوتر المحمول، سيتم تجميع جميع التعليمات البرمجية من هذا الكمبيوتر المحمول وبقية الملفات الموجودة في هذا الدليل وإرسالها إلى Google Cloud للتنفيذ. تحدد المعلمات الموجودة في طريقة run
تفاصيل صور وحدة المعالجة المركزية GPU المحددة. ما عليك سوى تحديد واحد أو آخر؛ يتم استخدام GPU في الكود التالي.
أخيرًا، قلب سحابة TensorFlow: الدعوة إلى tfc.run
. عند تنفيذ ذلك داخل هذا الكمبيوتر المحمول، سيتم تجميع جميع التعليمات البرمجية من هذا الكمبيوتر المحمول وبقية الملفات الموجودة في هذا الدليل وإرسالها إلى Google Cloud للتنفيذ. تحدد المعلمات الموجودة في طريقة run
تفاصيل وحدة معالجة الرسومات وصور وحدة المعالجة المركزية. ما عليك سوى تحديد واحد أو آخر؛ يتم استخدام GPU في الكود التالي.
أخيرًا، قلب سحابة TensorFlow: الدعوة إلى tfc.run
. عند تنفيذ ذلك داخل هذا الكمبيوتر المحمول، سيتم تجميع جميع التعليمات البرمجية من هذا الكمبيوتر المحمول وبقية الملفات الموجودة في هذا الدليل وإرسالها إلى Google Cloud للتنفيذ. تحدد المعلمات الموجودة في طريقة run
تفاصيل بيئة التنفيذ واستراتيجية التوزيع (إن وجدت) التي سيتم استخدامها.
بمجرد إرسال المهمة، يمكنك الانتقال إلى الخطوة التالية لمراقبة تقدم المهام عبر Tensorboard.
# 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 Cloud الخاص بك
لا تقم بإعادة تشغيل بقية التعليمات البرمجية.
تحميل Tensorboard
أثناء تقدم التدريب، يمكنك استخدام Tensorboard لعرض النتائج. لاحظ أن النتائج لن تظهر إلا بعد بدء التدريب. قد يستغرق هذا بضع دقائق.
%load_ext tensorboard
%tensorboard --logdir $TENSORBOARD_LOGS_DIR
قم بتحميل النموذج المدرب الخاص بك
بمجرد اكتمال التدريب، يمكنك استرداد النموذج الخاص بك من مجموعة GCS التي حددتها أعلاه.
trained_model = tf.keras.models.load_model(SAVED_MODEL_DIR)
trained_model.summary()