1- المقدمة
تينسر فلو للتعلم العميق من جوجل هي عبارة عن منصة مفتوحة المصدر للتعلّم العميق تضم مجموعة شاملة ومرنة من الأدوات و المكتبات التي تتيح للباحثين تطوير وتدريب نماذج تعلّم الآلة وتمكّن بناء ونشر تطبيقاتها بسهولة، وقد تم تطويرها من قبل فريق جوجل برين Google Brain في شركة جوجل لأبحاث الذكاء في تعلم الآلة والشبكات العصبونية، حيث اعتمدوا في بنائها على البساطة وسهولة الاستخدام وجعلوها عامة بما يكفي لتصبح قابلة للتطبيق في مجموعة واسعة من المجالات الأخرى. وفيما يلي سنتعرف عن أهم الأمور التي يجب معرفتها عن تينسر فلو.
المحتويات
- 1- المقدمة
- 2- منصة قوية لتعلم الآلة
- 3- منفّذ ايجر Eager execution
- 4- إمكانية بناء الشبكات العصبونية سطر بسطر
- 5- تينسر فلو ليست فقط بايثون.
- 6- يمكن القيام بكل شيء ضمن المتصفح
- 7- إصدار خفيف للأجهزة الصغيرة
- 8- تحسين المعدات الفيزيائية
- 9- مسار تدفق البيانات أكثر تطورًا
- 10- لا داعي للبدء من الصفر
- 11- الخاتمة
2- منصة قوية لتعلم الآلة
تعتبر تينسر فلو أفضل منصة مفتوحة المصدر لتعلم الآلة وخاصة عند وجود بيانات ضخمة كما في حالة مساعدة الأطباء في الكشف عن اعتلال شبكية مرضى السكري لمنع العمى، وأيضًا عند إشعار السلطات بعمليات إزالة الغابات بشكل غير قانوني للمساعدة في حمايتها، حيث تجمع بين برنامج التعلم العميق ألفا غو AlphaGo والرؤية السحابية لجوجل Google Cloud Vision وقد قامت الوكالة الفضائية ناسا باستخدامها في اكتشاف الكوكب الثامن الذي يدور حول النجم كبلر-90 Kepler-90 خارج المجموعة الشمسية والذي يدعى كبلر-90-اي Kepler-90i. بذلك يكون كبلر-90 هو النظام الآخر الوحيد الذي نعرفه والذي يحتوي على ثمانية كواكب في مداره كما في الشكل التالي.
3- منفّذ ايجر Eager execution
في حال كان هناك استياء سابق حيال تينسر فلو كونها تجبرنا على البرمجة بأسلوب أكاديمي وليس كمطورين. يمكن العودة لها الآن حيث زُودت بمنفّذ ايجر الذي سيتيح لنا التفاعل معها كمبرمج بايثون. فهو يعمل على تقييم العمليات وتصحيح الأخطاء مباشرة سطر بسطر والتبليغ عنها من خلال فحص النماذج قيد التنفيذ واختبار التغييرات وذلك لاستخدامه مصحح الأخطاء القياسي لبايثون. ويعيد قيمًا ملموسة بدلاً من إنشاء رسوم بيانية ضخمة لاعتماده أيضًا على تدفق تحكم بايثون.
optimizer = tf.train.MomentumOptimizer(...)
for (x,y) in dataset.make_one_shot_iterator();
with tf.GradientTape() as g:
y_ = model(x)
loss = loss_fn(y,y_)
grads= g.gradient(y_, model.variables)
optimizer.apply_gradients(zip(grads, model.variables))
4- إمكانية بناء الشبكات العصبونية سطر بسطر
دمجت تينسر فلو مكتبة كيراس ضمن بيئتها منتجة بذلك حزمة كيراس للتعلم العميق من جوجل tf.keras والتي يمكن من خلالها بناء أي شبكة عصبونية بطريقة سهلة متسلسلة مع تحديد جميع المعاملات الضرورية وذلك بكتابة بضعة أسطر برمجية فقط في صفحة جديدة من منصة جوجل كولاب google colab .
import tensorflow as tf
L=tf.keras.layers
model = tf.keras.Sequential([
L.Reshape((28,28,1)),
L.Conv2D(32,5,activation=tf.nn.relu),
L.MaxPooling2D((2, 2), (2, 2)),
L.Conv2D(64,5,activation=tf.nn.relu),
L.MaxPooling2D((2, 2), (2, 2)),
L.Flatten(),
L.Dense(1824,activation=tf.nn.relu),
L.Dropout(0,4),
L.Dense(18)
])
5- تينسر فلو ليست فقط بايثون.
لم تعد تينسر فلو خاصة بلغة البايثون وحسب وإنما أصبحت تتضمن عدة لغات برمجية أخرى مثل جافا سكريبت JavaScript وأر R و سويفت Swift والكثير.
6- يمكن القيام بكل شيء ضمن المتصفح
في حال أردنا استخدام جافا سكريبت Javascript لتدريب وتنفيذ النماذج في المتصفح، يمكننا استخدام مكتبتها الخاصة بتينسر فلو TensorFlow.js . فقد تم استخدام هذه المكتبة لعمل تقنية تقوم بتخمين مفاصل جسم الإنسان الرئيسية المتحركة في الزمن الحقيقي. يمكنك تجربتها من هنا بعد فتح الكاميرا.
7- إصدار خفيف للأجهزة الصغيرة
يسمح لنا الإصدار الخفيف من تينسر فلو (تينسر فلو لايت) TensorFlow Lite بتنفيذ النماذج على أنواع مختلفة من الأجهزة بما في ذلك أجهزة الهاتف النقال والجيل الجديد من الإنترنت الذي يتيح التفاهم بين الأجهزة المترابطة مع بعضها أو ما يسمى إنترنت الأشياء ‘IoT’ Internet of Things متيحًا بذلك سرعة أكبر بثلاث مرات في الاستدلال عن تينسر فلو العادي. أي يمكننا الآن البدء في الحصول على التعلم الآلي على هواتفنا أو على الكمبيوتر المصغر رازبيري باي Raspberry Pi. وكما نرى في الصورة التالية فقد استغرق حوالي 1.6 ثانية ليستدل على أنها موزة.
8- تحسين المعدات الفيزيائية
ربما يعاني الجميع من بطء وحدة المعالجة المركزية CPU عند تدريب الشبكات العصبونية. الآن أصبح بالإمكان تدريب وتشغيل نماذج تعلم الآلة بشكل أسرع من أي وقت مضى من خلال استخدام معدات فيزيائية خصصت لتعمل مع وحدة معالجة المصفوفة متعددة الأبعاد السحابية (CloudTensor Processing Unit (TPU والتي تم تصميمها لتشغيل نماذج تعلم الآلة مع خدمات الذكاء الاصطناعي على الحوسبة السحابية الخاصة بجوجل Google Cloud.
9- مسار تدفق البيانات أكثر تطورًا
يمكن لوحدات معالجة الرسومات GPUs ووحدة معالجة المصفوفة متعددة الأبعاد السحابية TPU أن تقلل بشكل جذري من الوقت اللازم لتنفيذ خطوة تدريب واحدة. ولكن تحقيق أعلى مستوى من الأداء يتطلب وجود مسار تدفق بيانات فعال يوفر البيانات للخطوة التالية قبل انتهاء الخطوة الحالية. حققت تينسر فلو ذلك باستخدام مساحة الاسم Namespace المسمى tf.data الذي جعل معالجة الدخل في تينسر فلو أكثر تعبيرًا وفعالية، باستخدام مسارات تدفق بيانات سريعة ومرنة وسهلة الاستخدام ومتزامنة مع التدريب.
10- لا داعي للبدء من الصفر
إحدى أهم الأشياء الأساسية في تطوير البرامج هي فكرة مخزن الشيفرة المشتركة. وقد وفرت تينسر فلو مخزن لمحبي تعلم الآلة يدعى تينسرفلو-هاب TensorFlow Hub والذي يحتوي على مكونات نماذج التعلم الآلي القابلة لإعادة الاستخدام والمدربة سابقا ليتم إعادة استخدامها من خلال سطر واحد فقط من الشيفرة البرمجية. كما وفرت أيضًا مدونة TensorFlow Blog وقناة على اليوتيوب خاصة بها TensorFlow Youtube Channel كمصادر جديدة للتعلم والمشاركة.
11- الخاتمة
أخيرأ تتيح تينسر فلو تجربة بناء وتدريب الشبكات العصبونية العميقة بوقت أقل. وهي تشبه إلى حد كبير مجموعات أدوات تعلم الآلة الأخرى، ولكنها تحظى بدعم فريق موظفي التعلم الألي الذي يتألف من العديد من المحترفين البارزين مثل أحد مهندسي شركة كافيه Caffe وهو مؤسس أحد أسرع بيئات عمل الشبكات. إضافة لذلك فقد ظهر الإصدار الثاني من تينسر فلو TensorFlow 2.0 في شهر آذار من عام 2019 والذي يعتبر تحول جذري يكمن في جعلها أكثر سهولة في الاستخدام وسيكون له تأثير كبير على جميع الصناعات.