هل يمكن استخدام TensorFlow Federated في إعدادات الإنتاج، على سبيل المثال، على الهواتف المحمولة؟
ليس الان. على الرغم من أننا صممنا TFF مع وضع النشر على الأجهزة الحقيقية في الاعتبار، إلا أننا في هذه المرحلة لا نقدم حاليًا أي أدوات لهذا الغرض. الإصدار الحالي مخصص للاستخدامات التجريبية، مثل التعبير عن الخوارزميات الموحدة الجديدة، أو تجربة التعلم الموحد باستخدام مجموعات البيانات الخاصة بك، باستخدام وقت تشغيل المحاكاة المضمن.
نتوقع أنه بمرور الوقت سوف يتطور النظام البيئي مفتوح المصدر حول TFF ليشمل أوقات التشغيل التي تستهدف منصات النشر المادية.
كيف يمكنني استخدام TFF لإجراء تجارب على مجموعات البيانات الكبيرة؟
وقت التشغيل الافتراضي المضمن في الإصدار الأولي من TFF مخصص فقط للتجارب الصغيرة مثل تلك الموضحة في برامجنا التعليمية التي يتم فيها احتواء جميع بياناتك (عبر جميع العملاء الذين تمت محاكاتهم) في الذاكرة على جهاز واحد في نفس الوقت، ويتم تشغيل التجربة بأكملها محليًا داخل دفتر كولاب.
تتضمن خريطة الطريق المستقبلية على المدى القريب وقت تشغيل عالي الأداء للتجارب مع مجموعات بيانات كبيرة جدًا وأعداد كبيرة من العملاء.
كيف يمكنني التأكد من أن العشوائية في TFF تتوافق مع توقعاتي؟
نظرًا لأن TFF قامت بتوحيد الحوسبة في جوهرها، فلا ينبغي لكاتب TFF أن يتولى التحكم في مكان وكيفية إدخال Session
TensorFlow، أو استدعاء run
خلال تلك الجلسات. يمكن أن تعتمد دلالات العشوائية على الدخول والخروج من Session
TensorFlow إذا تم تعيين البذور. نوصي باستخدام النمط العشوائي TensorFlow 2، باستخدام tf.random.experimental.Generator
على سبيل المثال اعتبارًا من TF 1.14. يستخدم هذا tf.Variable
لإدارة حالته الداخلية.
للمساعدة في إدارة التوقعات، يسمح TFF لـ TensorFlow الذي يقوم بتسلسله بالحصول على مجموعة بذور على مستوى العمليات، ولكن ليس بذور على مستوى الرسم البياني. وذلك لأن دلالات بذور المستوى التشغيلي يجب أن تكون أكثر وضوحًا في إعداد TFF: سيتم إنشاء تسلسل حتمي عند كل استدعاء لوظيفة مغلفة كـ tf_computation
، وفقط ضمن هذا الاستدعاء سيتم الاحتفاظ بأي ضمانات يقدمها منشئ الأرقام العشوائية الزائفة . لاحظ أن هذا يختلف تمامًا عن دلالات استدعاء tf.function
في وضع حريص؛ يدخل TFF بشكل فعال إلى tf.Session
الفريدة في كل مرة يتم فيها استدعاء tf_computation
، في حين أن استدعاء دالة بشكل متكرر في وضع حريص يشبه استدعاء sess.run
على موتر الإخراج بشكل متكرر خلال نفس الجلسة.
كيف يمكنني المساهمة؟
راجع الملف التمهيدي (README) وإرشادات المساهمة والتعاون .
ما هي العلاقة بين FedJAX و TensorFlow Federated؟
TensorFlow Federated (TFF) هو إطار عمل متكامل للتعلم الموحد والتحليلات تم تصميمه لتسهيل إنشاء خوارزميات وميزات مختلفة، ولتمكين نقل التعليمات البرمجية عبر سيناريوهات المحاكاة والنشر المختلفة. يوفر TFF وقت تشغيل قابلاً للتطوير ويدعم العديد من خوارزميات الخصوصية والضغط والتحسين عبر واجهات برمجة التطبيقات القياسية الخاصة به. يدعم TFF أيضًا العديد من أنواع أبحاث FL ، مع مجموعة من الأمثلة من أبحاث Google المنشورة التي تظهر في مستودع أبحاث Google .
في المقابل، تعد FedJAX مكتبة محاكاة خفيفة الوزن تعتمد على Python وJAX وتركز على سهولة الاستخدام والنماذج الأولية السريعة لخوارزميات التعلم الموحد لأغراض البحث. تم تطوير TensorFlow Federated وFedJAX كمشروعين منفصلين، دون توقع إمكانية نقل التعليمات البرمجية.