Специалисты MarkTechPost провели практический эксперимент: что произойдёт с федеративным обучением, если убрать из схемы центральный сервер-агрегатор и заменить его децентрализованным peer-to-peer обменом по gossip-протоколу. Авторы реализовали с нуля два подхода — классический централизованный FedAvg и децентрализованное Gossip Federated Learning — и добавили в оба клиентскую дифференциальную приватность через инъекцию калиброванного шума в локальные обновления модели. Весь код написан на PyTorch и опубликован как обучающий туториал.
Данные, модель и разбиение на клиентов
В качестве бенчмарка взяли MNIST. Датасет искусственно сделали неоднородным (non-IID): обучающую выборку разбили на шарды по меткам классов и раздали 20 клиентам, каждому — по два шарда. Такая схема имитирует реальную федеративную среду, где данные на разных устройствах сильно различаются по составу.
Модель — компактный многослойный перцептрон:
class MLP(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(28*28, 256)
self.fc2 = nn.Linear(256, 128)
self.fc3 = nn.Linear(128, 10)
def forward(self, x):
x = x.view(x.size(0), -1)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
return self.fc3(x)
Для экспериментов установили набор зависимостей: torch, torchvision, numpy, matplotlib, networkx и tqdm — последняя нужна для визуализации сетевой топологии клиентов и прогресс-баров обучения.
Как в обновления модели добавили приватность
Ключевой механизм — санитизация локальных обновлений перед их отправкой другим участникам. Сначала обновление клиппируется по L2-норме, затем, если задан бюджет приватности epsilon, к нему добавляется гауссов шум по механизму дифференциальной приватности:
def dp_sanitize_update(delta, clip_norm, epsilon, delta_dp, rng):
norm = l2_norm_params(delta)
scale = min(1.0, clip_norm / (norm + 1e-12))
clipped = scale_params(delta, scale)
if epsilon is None or math.isinf(epsilon) or epsilon <= 0:
return clipped
sigma = clip_norm * math.sqrt(2.0 * math.log(1.25 / delta_dp)) / epsilon
noised = {}
for k, v in clipped.items():
noise = torch.normal(mean=0.0, std=sigma, size=v.shape, generator=rng, device=v.device, dtype=v.dtype)
noised[k] = v + noise
return noised
Чем меньше epsilon, тем сильнее приватность, но и тем больше шума в итоге получают все модели в системе.
Централизованный вариант: FedAvg
Базовый сценарий — классический FedAvg: на каждом раунде случайно выбирается подмножество клиентов, они обучаются локально, их зашумлённые обновления усредняются и применяются к глобальной модели. Конфигурация: 25 раундов, 10 клиентов на раунд, одна локальная эпоха, скорость обучения 0,06, размер батча 64, клиппинг нормы 2.0.
Децентрализованный вариант: gossip-протокол
В gossip-версии центрального сервера нет вообще. Каждый из 20 узлов обучается на своих данных, затем случайные пары узлов, соединённые рёбрами сетевой топологии (в базовом варианте — кольцо, альтернатива — граф Эрдёша — Реньи с вероятностью связи p=0,2), обмениваются и усредняют параметры друг с другом. За раунд происходит 10 таких попарных обменов, после чего у каждого узла остаётся своя, немного отличающаяся от соседей версия модели, которая тем не менее постепенно сходится к общему состоянию по всей сети.
Эксперимент и результаты
Оба алгоритма прогнали по 20 раундов при разных уровнях приватности: epsilon = бесконечность (без шума), 8, 4, 2 и 1 — то есть от полного отсутствия защиты до жёстких ограничений. Для каждого запуска фиксировались точность на тестовой выборке и число раундов, необходимое для достижения 90% от финального качества (без приватности).
Выводы эксперимента:
- при слабых ограничениях приватности (большой epsilon) централизованный FedAvg сходится быстрее, чем gossip-схема;
- при сильном шуме децентрализованное обучение оказывается устойчивее — деградация качества у него менее резкая, но ценой более медленной сходимости;
- усиление приватности замедляет обучение в обоих режимах, но в децентрализованной топологии эффект заметнее — из-за задержки распространения информации между узлами при попарном, а не централизованном усреднении.
Главный практический вывод авторов: топологию сети, схему коммуникации и бюджет приватности нельзя проектировать по отдельности — это взаимосвязанные параметры, и их нужно подбирать совместно при построении приватных федеративных систем.
Источник: MarkTechPost.