Есть ли способ симулировать расходы на связь в тензорно-федеративном объединении? - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над оптимизацией расходов на связь в Федеративном обучении. Поэтому мне нужно смоделировать реальные c сетевые задержки и измерить накладные расходы на связь (связь между клиентами и сервером). Возможно ли это сделать с помощью TFF? Существует ли реалистичная c сетевая модель для связи в условиях федеративного обучения?

1 Ответ

0 голосов
/ 01 апреля 2020

Введение задержки в сети или задержек в стеке выполнения - это не то, что TFF в настоящее время поддерживает "из коробки".

Однако архитектурно это абсолютно возможно. Одним из примеров недавнего вклада, который обращается к аналогичному запросу, является SizingExecutor, который измеряет биты, прошедшие через него на пути вниз и вверх в иерархии исполнения. Помещение SizingExecutor непосредственно поверх каждого исполнителя, представляющего клиента, затем измеряет биты, передаваемые и агрегируемые в каждом объединенном вычислении, выполняемом через этот стек выполнения; эта реализация может быть найдена здесь , и на самом деле представлена ​​в API API c.

Ваше желание не совсем отличается от исполнителя размеров, и исполнитель размеров может служить вашим цели непосредственно, если вы берете общее количество битов за метрику c, которое вы пытаетесь оптимизировать. Однако, если вы предпочитаете изучать другие аспекты распределенных вычислений (например, случайное повреждение данных), вы можете представить, что реализуете аналогичную функциональность с исполнителем определения размера, хотя можно также представить, что это делается на уровне вычислений (клиент выбирает случайным образом чтобы вернуть его истинный результат или искаженную версию его результата.)

Я думаю, с точки зрения дизайна, TFF предпочел бы, чтобы любые новые исполнители оставляли семантику вычислений, которые они выполняют, без изменений и будет направлен либо на простое измерение свойств, таких как биты за раунд, либо на непосредственное внесение каких-либо искажений в вычисления или алгоритм, а не в выполнение этих вычислений. Вид коррупции или задержки, которую клиент может выбрать для введения, является фактически произвольным; здесь - это пример недавнего исследовательского проекта, который пытался атаковать глобальную модель, вставляя вредоносные обновления на определенных клиентах. Я полагаю, что тот же подход можно использовать для имитации любого желаемого свойства сети (например, некоторые клиенты спят, некоторые отправляют обратно поврежденные обновления и т. Д. c.).

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...