Федеративное обучение без центрального сервера: эксперимент с gossip-протоколом и дифференциальной приватностью

Специалисты 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.