بررسی اجمالی
TFF یک چارچوب توسعهیافته و قدرتمند برای انجام تحقیقات یادگیری فدرال (FL) با شبیهسازی محاسبات فدرال روی مجموعه دادههای پراکسی واقعی است. این صفحه مفاهیم و مؤلفههای اصلی مرتبط با شبیهسازیهای تحقیقاتی و همچنین راهنمایی دقیق برای انجام انواع مختلف تحقیق در TFF را شرح میدهد.
ساختار معمول کد تحقیق در TFF
یک شبیهسازی تحقیقاتی FL که در TFF اجرا میشود، معمولاً از سه نوع منطق اصلی تشکیل شده است.
تکههای منفرد کد TensorFlow، معمولاً
tf.function
، که منطقی را که در یک مکان اجرا میشود (مثلاً روی کلاینتها یا روی سرور) محصور میکنند. این کد معمولاً بدون هیچ مرجعtff.*
نوشته و آزمایش میشود و میتواند در خارج از TFF دوباره استفاده شود. به عنوان مثال، حلقه آموزش مشتری در میانگین گیری فدرال در این سطح پیاده سازی می شود.منطق ارکستراسیون فدرال
tff.tf_computation
tf.function
و سپس هماهنگ کردن آنها با استفاده از انتزاعاتی مانندtff.federated_broadcast
وtff.federated_mean
در داخل یکtff.federated_computation
، به هم متصل می شود. برای مثال، این ارکستراسیون را برای میانگینگیری فدرال ببینید.یک اسکریپت درایور بیرونی که منطق کنترل یک سیستم FL تولیدی را شبیهسازی میکند، مشتریان شبیهسازی شده را از یک مجموعه داده انتخاب میکند و سپس محاسبات فدرال تعریفشده در 2. را روی آن کلاینتها اجرا میکند. به عنوان مثال، یک راننده آزمایش فدرال EMNIST .
مجموعه داده های یادگیری فدرال
TensorFlow فدرال میزبان مجموعه داده های متعددی است که نماینده ویژگی های مشکلات دنیای واقعی است که می تواند با یادگیری فدرال حل شود.
مجموعه داده ها عبارتند از:
StackOverflow . مجموعه داده متنی واقعی برای مدلسازی زبان یا وظایف یادگیری تحت نظارت، با 342,477 کاربر منحصر به فرد با 135,818,730 مثال (جملات) در مجموعه آموزشی.
EMNIST فدرال یک پیش پردازش فدرال از کاراکتر و مجموعه رقمی EMNIST، که در آن هر مشتری با نویسنده متفاوتی مطابقت دارد. مجموعه کامل قطار شامل 3400 کاربر با 671585 نمونه از 62 برچسب است.
شکسپیر . مجموعه داده متنی در سطح کاراکتر کوچکتر بر اساس آثار کامل ویلیام شکسپیر. مجموعه داده شامل 715 کاربر (شخصیتهای نمایشنامههای شکسپیر) است که هر نمونه مربوط به مجموعهای از خطوط به هم پیوسته است که توسط شخصیت در یک نمایشنامه مشخص گفته میشود.
CIFAR-100 . پارتیشن بندی فدرال مجموعه داده CIFAR-100 در بین 500 مشتری آموزشی و 100 مشتری آزمایشی. هر مشتری 100 نمونه منحصر به فرد دارد. پارتیشن بندی به گونه ای انجام می شود که ناهمگونی واقعی تری بین مشتریان ایجاد کند. برای جزئیات بیشتر، به API مراجعه کنید.
مجموعه داده Google Landmark v2 مجموعه داده شامل عکسهایی از مکانهای دیدنی مختلف جهان است، با تصاویر گروهبندی شده توسط عکاس برای دستیابی به پارتیشن بندی فدرال دادهها. دو نوع مجموعه داده در دسترس است: یک مجموعه داده کوچکتر با 233 مشتری و 23080 تصویر، و یک مجموعه داده بزرگتر با 1262 مشتری و 164172 تصویر.
CelebA مجموعه داده ای از نمونه ها (تصویر و ویژگی های چهره) از چهره های مشهور. مجموعه دادههای فدرال دارای نمونههای هر فرد مشهور برای تشکیل یک مشتری است. 9343 مشتری وجود دارد که هر کدام حداقل 5 نمونه دارند. مجموعه داده را می توان به گروه های آموزشی و آزمایشی یا توسط مشتریان یا با نمونه تقسیم کرد.
مجموعه داده iNaturalist از عکس های گونه های مختلف تشکیل شده است. مجموعه داده شامل 120300 تصویر برای 1203 گونه است. هفت طعم از مجموعه داده موجود است. یکی از آنها توسط عکاس گروه بندی شده و شامل 9257 مشتری است. بقیه مجموعه داده ها بر اساس مکان جغرافیایی که عکس گرفته شده است گروه بندی می شوند. این شش طعم از مجموعه داده شامل 11 - 3606 مشتری است.
شبیه سازی با کارایی بالا
در حالی که زمان ساعت دیواری یک شبیهسازی FL یک معیار مناسب برای ارزیابی الگوریتمها نیست (زیرا سختافزار شبیهسازی نماینده محیطهای استقرار FL واقعی نیست)، توانایی اجرای سریع شبیهسازیهای FL برای بهرهوری تحقیق بسیار مهم است. از این رو، TFF سرمایه گذاری هنگفتی را برای ارائه زمان های اجرای تک و چند ماشینی با کارایی بالا انجام داده است. مستندات در حال توسعه است، اما در حال حاضر آموزش شبیهسازی با کارایی بالا با Kubernetes ، دستورالعملهای شبیهسازی TFF با شتابدهندهها ، و دستورالعملهای تنظیم شبیهسازی با TFF در GCP را ببینید. زمان اجرا TFF با کارایی بالا به طور پیش فرض فعال است.
TFF برای حوزه های مختلف تحقیقاتی
الگوریتم های بهینه سازی فدرال
تحقیق در مورد الگوریتمهای بهینهسازی فدرال بسته به سطح دلخواه سفارشیسازی، میتواند به روشهای مختلفی در TFF انجام شود.
حداقل پیاده سازی مستقل از الگوریتم میانگین فدرال در اینجا ارائه شده است. کد شامل توابع TF برای محاسبات محلی، محاسبات TFF برای ارکستراسیون، و یک اسکریپت درایور در مجموعه داده EMNIST به عنوان مثال است. این فایل ها را می توان به راحتی برای اعمال سفارشی و تغییرات الگوریتمی پیرو دستورالعمل های دقیق در README تطبیق داد.
یک پیاده سازی کلی تر از میانگین گیری فدرال را می توان در اینجا یافت. این پیاده سازی تکنیک های بهینه سازی پیچیده تری از جمله استفاده از بهینه سازهای مختلف در سرور و کلاینت را امکان پذیر می کند. سایر الگوریتمهای یادگیری فدرال، از جمله خوشهبندی k-means فدرال، را میتوانید در اینجا بیابید .
فشرده سازی به روز رسانی مدل
فشرده سازی از دست دادن به روز رسانی مدل می تواند منجر به کاهش هزینه های ارتباطی شود که به نوبه خود می تواند منجر به کاهش زمان کلی آموزش شود.
برای بازتولید مقاله اخیر، به این پروژه تحقیقاتی مراجعه کنید. برای پیادهسازی یک الگوریتم فشردهسازی سفارشی، بهعنوان مثال، comparation_methods را در پروژه برای خطوط پایه، و آموزش TFF Aggregators را در صورتی که قبلاً با آن آشنایی ندارید، ببینید.
حریم خصوصی متفاوت
TFF با کتابخانه TensorFlow Privacy سازگار است تا امکان تحقیق در الگوریتمهای جدید برای آموزش فدرال مدلها با حریم خصوصی متفاوت را فراهم کند. برای مثالی از آموزش با DP با استفاده از الگوریتم و برنامه های افزودنی اولیه DP-FedAvg، این درایور آزمایش را ببینید.
اگر میخواهید یک الگوریتم DP سفارشی را پیادهسازی کنید و آن را روی بهروزرسانیهای کلی میانگینگیری فدرال اعمال کنید، میتوانید یک الگوریتم میانگین DP جدید را به عنوان زیرکلاس tensorflow_privacy.DPQuery
کنید و یک tff.aggregators.DifferentiallyPrivateFactory
با نمونهای از پرسوجو ایجاد کنید. نمونه ای از پیاده سازی الگوریتم DP-FTRL را می توان در اینجا یافت
GAN های فدرال (در زیر توضیح داده شده است) نمونه دیگری از پروژه TFF است که حریم خصوصی دیفرانسیل در سطح کاربر را پیاده سازی می کند (به عنوان مثال، در اینجا در کد ).
استحکام و حملات
TFF همچنین میتواند برای شبیهسازی حملات هدفمند به سیستمهای یادگیری فدرال و دفاعهای متمایز مبتنی بر حریم خصوصی در نظر گرفته شده در Can You Really Back Door Federated Learning استفاده شود؟ . این کار با ساخت یک فرآیند تکراری با کلاینتهای بالقوه مخرب انجام میشود (به build_federated_averaging_process_attacked
مراجعه کنید). فهرست targeted_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
استفاده کنید.
رویکرد دیگر این است که با آموزش بخشی از یک مدل کاملاً محلی، از آموزش یک مدل کاملاً جهانی اجتناب کنید. نمونه ای از این رویکرد در این پست وبلاگ توضیح داده شده است. این رویکرد همچنین با فرا یادگیری مرتبط است، این مقاله را ببینید. برای کشف یادگیری فدرال محلی، میتوانید:
آموزش نمونه کامل کد مربوط به اعمال بازسازی فدرال و تمرینات بعدی را بررسی کنید.
با استفاده از
tff.learning.reconstruction.build_training_process
، یک فرآیند آموزشی جزئی محلی ایجاد کنید،dataset_split_fn
را برای سفارشی کردن رفتار فرآیند تغییر دهید.