استفاده از TFF برای تحقیقات یادگیری فدرال

نمای کلی

TFF یک چارچوب قدرتمند و توسعه‌پذیر برای انجام تحقیقات یادگیری فدرال (FL) با شبیه‌سازی محاسبات فدرال بر روی مجموعه داده‌های پروکسی واقع‌گرایانه است. این صفحه مفاهیم و مؤلفه‌های اصلی مرتبط با شبیه‌سازی‌های تحقیقاتی و همچنین راهنمایی‌های دقیق برای انجام انواع مختلف تحقیقات در TFF را شرح می‌دهد.

ساختار معمول کد تحقیق در TFF

یک شبیه‌سازی FL تحقیقاتی که در TFF پیاده‌سازی می‌شود، معمولاً از سه نوع منطق اصلی تشکیل شده است.

  1. قطعات جداگانه کد TensorFlow، معمولاً tf.function ها، که منطقی را که در یک مکان واحد اجرا می‌شود (مثلاً روی کلاینت‌ها یا روی سرور) کپسوله می‌کنند. این کد معمولاً بدون هیچ tff.* نوشته و آزمایش می‌شود و می‌تواند خارج از TFF دوباره استفاده شود. به عنوان مثال، حلقه آموزش کلاینت در Federated Averaging در این سطح پیاده‌سازی می‌شود.

  2. منطق ارکستراسیون فدرال TensorFlow، که توابع tf.function منفرد از 1. را با قرار دادن آنها به عنوان tff.tensorflow.computation و سپس هماهنگ کردن آنها با استفاده از انتزاعاتی مانند federated_language.federated_broadcast و federated_language.federated_mean درون federated_language.federated_computation به هم متصل می‌کند. برای مثال، به این ارکستراسیون برای Federated Averaging مراجعه کنید.

  3. یک اسکریپت درایور خارجی که منطق کنترل یک سیستم FL تولیدی را شبیه‌سازی می‌کند، کلاینت‌های شبیه‌سازی شده را از یک مجموعه داده انتخاب می‌کند و سپس محاسبات فدرال تعریف شده در 2. را روی آن کلاینت‌ها اجرا می‌کند. به عنوان مثال، یک درایور آزمایش فدرال EMNIST .

مجموعه داده‌های یادگیری فدرال

TensorFlow Federated میزبان چندین مجموعه داده است که نمایانگر ویژگی‌های مسائل دنیای واقعی هستند که می‌توانند با یادگیری Federated حل شوند.

مجموعه داده‌ها شامل موارد زیر است:

  • StackOverflow . یک مجموعه داده متنی واقع‌گرایانه برای مدل‌سازی زبان یا وظایف یادگیری نظارت‌شده، با ۳۴۲,۴۷۷ کاربر منحصر به فرد با ۱۳۵,۸۱۸,۷۳۰ مثال (جمله) در مجموعه آموزشی.

  • EMNIST فدرال . یک پیش‌پردازش فدرال از مجموعه داده‌های کاراکتر و رقم EMNIST، که در آن هر کلاینت با یک نویسنده متفاوت مطابقت دارد. مجموعه کامل آموزش شامل ۳۴۰۰ کاربر با ۶۷۱,۵۸۵ مثال از ۶۲ برچسب است.

  • شکسپیر . یک مجموعه داده متنی کوچک‌تر در سطح کاراکتر بر اساس آثار کامل ویلیام شکسپیر. این مجموعه داده شامل ۷۱۵ کاربر (شخصیت‌های نمایشنامه‌های شکسپیر) است که در آن هر مثال مربوط به مجموعه‌ای پیوسته از جملات گفته شده توسط شخصیت در یک نمایشنامه خاص است.

  • CIFAR-100 . یک پارتیشن‌بندی فدرال از مجموعه داده‌های CIFAR-100 در ۵۰۰ کلاینت آموزشی و ۱۰۰ کلاینت آزمایشی. هر کلاینت ۱۰۰ نمونه منحصر به فرد دارد. پارتیشن‌بندی به گونه‌ای انجام می‌شود که ناهمگونی واقع‌گرایانه‌تری بین کلاینت‌ها ایجاد شود. برای جزئیات بیشتر، به API مراجعه کنید.

  • مجموعه داده Google Landmark v2 این مجموعه داده شامل عکس‌هایی از مکان‌های دیدنی مختلف جهان است که تصاویر بر اساس عکاس گروه‌بندی شده‌اند تا به تقسیم‌بندی فدرال داده‌ها دست یابند. دو نوع مجموعه داده موجود است: یک مجموعه داده کوچکتر با ۲۳۳ کلاینت و ۲۳۰۸۰ تصویر، و یک مجموعه داده بزرگتر با ۱۲۶۲ کلاینت و ۱۶۴۱۷۲ تصویر.

  • CelebA مجموعه‌ای از مثال‌ها (تصویر و ویژگی‌های صورت) از چهره‌های افراد مشهور. مجموعه داده فدرال، مثال‌های هر فرد مشهور را در کنار هم قرار داده تا یک کلاینت را تشکیل دهد. ۹۳۴۳ کلاینت وجود دارد که هر کدام حداقل ۵ مثال دارند. این مجموعه داده را می‌توان بر اساس کلاینت‌ها یا بر اساس مثال‌ها به گروه‌های آموزشی و آزمایشی تقسیم کرد.

  • iNaturalist یک مجموعه داده شامل عکس‌هایی از گونه‌های مختلف است. این مجموعه داده شامل ۱۲۰۳۰۰ تصویر برای ۱۲۰۳ گونه است. هفت دسته از این مجموعه داده در دسترس است. یکی از آنها بر اساس عکاس گروه‌بندی شده و شامل ۹۲۵۷ کلاینت است. بقیه مجموعه داده‌ها بر اساس موقعیت جغرافیایی که عکس در آن گرفته شده است گروه‌بندی شده‌اند. این شش دسته از مجموعه داده شامل ۱۱ تا ۳۶۰۶ کلاینت هستند.

شبیه‌سازی‌های با کارایی بالا

اگرچه زمان تقریبی شبیه‌سازی FL معیار مناسبی برای ارزیابی الگوریتم‌ها نیست (زیرا سخت‌افزار شبیه‌سازی نماینده محیط‌های واقعی استقرار FL نیست)، اما توانایی اجرای سریع شبیه‌سازی‌های FL برای بهره‌وری تحقیق بسیار مهم است. از این رو، TFF سرمایه‌گذاری زیادی در ارائه زمان‌های اجرای تک و چند ماشینی با کارایی بالا انجام داده است. مستندات در حال توسعه است، اما فعلاً به دستورالعمل‌های مربوط به شبیه‌سازی‌های TFF با شتاب‌دهنده‌ها و دستورالعمل‌های مربوط به راه‌اندازی شبیه‌سازی‌ها با TFF روی GCP مراجعه کنید. زمان اجرای TFF با کارایی بالا به طور پیش‌فرض فعال است.

TFF برای حوزه‌های تحقیقاتی مختلف

الگوریتم‌های بهینه‌سازی فدرال

تحقیق روی الگوریتم‌های بهینه‌سازی فدرال می‌تواند به روش‌های مختلفی در TFF انجام شود، بسته به سطح دلخواه سفارشی‌سازی.

یک پیاده‌سازی مستقل و حداقلی از الگوریتم میانگین‌گیری فدرال در اینجا ارائه شده است. این کد شامل توابع TF برای محاسبات محلی، محاسبات TFF برای ارکستراسیون و یک اسکریپت درایور روی مجموعه داده EMNIST به عنوان نمونه است. این فایل‌ها را می‌توان به راحتی برای برنامه‌های سفارشی و تغییرات الگوریتمی با پیروی از دستورالعمل‌های دقیق در README تطبیق داد.

یک پیاده‌سازی عمومی‌تر از میانگین‌گیری فدرال را می‌توان در اینجا یافت. این پیاده‌سازی امکان تکنیک‌های بهینه‌سازی پیچیده‌تری را فراهم می‌کند، از جمله استفاده از بهینه‌سازهای مختلف در سرور و کلاینت. سایر الگوریتم‌های یادگیری فدرال، از جمله خوشه‌بندی k-means فدرال، را می‌توان در اینجا یافت.

فشرده‌سازی به‌روزرسانی مدل

فشرده‌سازی پراتلاف به‌روزرسانی‌های مدل می‌تواند منجر به کاهش هزینه‌های ارتباطی شود که به نوبه خود می‌تواند منجر به کاهش زمان کلی آموزش شود.

برای بازتولید یک مقاله اخیر، به این پروژه تحقیقاتی مراجعه کنید. برای پیاده‌سازی یک الگوریتم فشرده‌سازی سفارشی، برای مثال به بخش «روش‌های مقایسه» در پروژه مراجعه کنید و اگر با TFF Aggregators آشنا نیستید، به آموزش آن مراجعه کنید .

حریم خصوصی دیفرانسیلی

TFF با کتابخانه حریم خصوصی TensorFlow قابل تعامل است تا امکان تحقیق در الگوریتم‌های جدید برای آموزش فدرال مدل‌هایی با حریم خصوصی تفاضلی را فراهم کند. برای مثالی از آموزش با DP با استفاده از الگوریتم پایه DP-FedAvg و افزونه‌های آن ، به این درایور آزمایش مراجعه کنید.

اگر می‌خواهید یک الگوریتم DP سفارشی پیاده‌سازی کنید و آن را روی به‌روزرسانی‌های کلی میانگین‌گیری فدرال اعمال کنید، می‌توانید یک الگوریتم میانگین DP جدید را به عنوان زیرکلاس tensorflow_privacy.DPQuery پیاده‌سازی کنید و یک tff.aggregators.DifferentiallyPrivateFactory با نمونه‌ای از پرس‌وجوی خود ایجاد کنید. نمونه‌ای از پیاده‌سازی الگوریتم DP-FTRL را می‌توانید اینجا بیابید.

شبکه‌های GAN فدرال (که در زیر توضیح داده شده است) نمونه دیگری از یک پروژه TFF است که حریم خصوصی تفاضلی سطح کاربر را پیاده‌سازی می‌کند (مثلاً در اینجا به صورت کد ).

استحکام و حملات

TFF همچنین می‌تواند برای شبیه‌سازی حملات هدفمند به سیستم‌های یادگیری فدرال و دفاع‌های مبتنی بر حریم خصوصی تفاضلی که در «آیا واقعاً می‌توانید یادگیری فدرال را در پشت داشته باشید؟» در نظر گرفته شده‌اند، استفاده شود. این کار با ساخت یک فرآیند تکراری با کلاینت‌های بالقوه مخرب انجام می‌شود (به build_federated_averaging_process_attacked مراجعه کنید). دایرکتوری target_attack حاوی جزئیات بیشتری است.

  • الگوریتم‌های حمله جدید را می‌توان با نوشتن یک تابع به‌روزرسانی کلاینت که یک تابع Tensorflow است، پیاده‌سازی کرد، برای مثال به ClientProjectBoost مراجعه کنید.
  • با سفارشی‌سازی 'tff.utils.StatefulAggregateFn' که خروجی‌های کلاینت را برای دریافت به‌روزرسانی سراسری جمع‌آوری می‌کند، می‌توان راهکارهای دفاعی جدیدی پیاده‌سازی کرد.

برای یک اسکریپت نمونه برای شبیه‌سازی، به emnist_with_targeted_attack.py مراجعه کنید.

شبکه‌های مولد تخاصمی

شبکه‌های مولد تخاصمی (GAN) یک الگوی هماهنگی فدرال جالب ایجاد می‌کنند که کمی متفاوت از میانگین‌گیری فدرال استاندارد به نظر می‌رسد. آن‌ها شامل دو شبکه مجزا (مولد و متمایزکننده) هستند که هر کدام با گام بهینه‌سازی خاص خود آموزش دیده‌اند.

TFF می‌تواند برای تحقیق در مورد آموزش فدرال شبکه‌های مولد تخاصمی (GAN) مورد استفاده قرار گیرد. به عنوان مثال، الگوریتم DP-FedAvg-GAN که در کار اخیر ارائه شده است، در TFF پیاده‌سازی شده است. این کار اثربخشی ترکیب یادگیری فدرال، مدل‌های مولد و حریم خصوصی تفاضلی را نشان می‌دهد.

شخصی سازی

شخصی‌سازی در محیط یادگیری فدرال یک حوزه تحقیقاتی فعال است. هدف از شخصی‌سازی، ارائه مدل‌های استنتاج متفاوت به کاربران مختلف است. رویکردهای بالقوه متفاوتی برای این مشکل وجود دارد.

یک رویکرد این است که به هر کلاینت اجازه دهیم یک مدل سراسری واحد (که با استفاده از یادگیری فدرال آموزش دیده است) را با داده‌های محلی خود تنظیم کند. این رویکرد با متا-یادگیری مرتبط است، مثلاً به این مقاله مراجعه کنید. نمونه‌ای از این رویکرد در emnist_p13n_main.py آورده شده است. برای بررسی و مقایسه استراتژی‌های مختلف شخصی‌سازی، می‌توانید:

  • با پیاده‌سازی یک tf.function که از یک مدل اولیه شروع می‌شود، یک مدل شخصی‌سازی شده را با استفاده از مجموعه داده‌های محلی هر کلاینت آموزش داده و ارزیابی می‌کند، یک استراتژی شخصی‌سازی تعریف کنید. مثالی از این مورد با build_personalize_fn ارائه شده است.

  • یک OrderedDict تعریف کنید که نام‌های استراتژی را به استراتژی‌های شخصی‌سازی مربوطه نگاشت کند و از آن به عنوان آرگومان personalize_fn_dict در tff.learning.build_personalization_eval_computation استفاده کنید.

رویکرد دیگر، اجتناب از آموزش یک مدل کاملاً سراسری با آموزش بخشی از یک مدل به صورت کاملاً محلی است. نمونه‌ای از این رویکرد در این پست وبلاگ شرح داده شده است. این رویکرد همچنین با متا یادگیری مرتبط است، به این مقاله مراجعه کنید.