Эта публикация является компиляцией изученных материалов по теме и писалась с целью в материале разобраться и упорядочить собственные знания – такой аналог реферата/курсовой. Т.к. исходный материал в основном на английском, возможно, данная статья кому-то также будет полезна. Federated Learning – подход к решению задач машинного обучения, который позволяет анализировать данные непосредственно в их источниках, не объединяя их на каком-то центральном ресурсе, а объединяя уже результаты таким способом, чтобы итог обучения был не хуже, чем в традиционных подходах.  Есть две «легенды» появления FL. Первая рассказывает о данных столь больших, что обучение на них занимает недели и даже месяцы. Данные стали разбивать на части. Затем части отдавать отдельным вычислительным узлам. Затем данные перестали собирать и стали обрабатывать прямо в источниках. Вторая «легенда» – о конфиденциальности тренировочных данных. Трудности обезличивания данных (как ни хэшируй, а информацию с конкретным объектом можно сопоставить, особенно если количество наблюдений в источнике невелико) привели к мысли передавать не сами данные, а результаты обучения на них. («Легенды» – потому что у всякой версии есть примеры обратного: медицинские данные не велики, а наоборот, малы и трудно собрать их в одном месте – какое уж тут разбиение, тут проблема в том, что для глубокого обучения такие малые выборки не дадут хорошей эффективности, нужно не данные обрабатывать, а развивать методы машинного обучения на малых данных.) Что бы ни озаботило человечество раньше – FL помогает решать и те, и другие задачи. Нет в мире технологий без ограничений. У FL оно тоже есть. Вычислительные ресурсы источников данных невелики, и несмотря на то, что обрабатываются только собственные данные оконечного устройства, недостаток ресурсов может быть проблемой. Современные модели ML часто большие. Например, успешная архитектура модели для ASR, Conformer, имеет 130 миллионов параметров и только для их хранения во время обучения требует не менее 520 МБ памяти (то есть фраза «Окей, Google!» может загрузить работой около четверти вычислительных мощностей смартфонов средних параметров – правда, ML-модели учатся только когда смартфон в режиме ожидания, и это тоже не от хорошей жизни вызвано ограничением ресурсов). Бороться с таким дефицитом помогает уменьшение объема тренировочных данных. (Далее будем как синонимы употреблять слова «сокращение», «усечение» и «разрежение».) Для этого уменьшения есть несколько способов: Federated dropout (федеративный отсев). Уменьшенные модели на клиентах (подмодели) генерируются случайным образом; финальное обучение выполняется на полной модели на стороне сервера. Подмодели на клиентах при использовании федеративного отсева 	имеют уровень ошибок, не зависящий от полной модели на сервере, что упрощает 	настройку размера модели на оконечных устройствах.  	 PruneFL. Включает обрезку начальную на выбранном клиенте и дальнейшую обрезку как часть процесса FL. Размер модели динамически изменяется во время этого процесса. Эксперименты с различными наборами данных на различных периферийных устройствах (например, Raspberry Pi) показывают, что значительно сокращается время обучения по сравнению с обычным FL и различными другими методами, основанными на сокращении; усеченная модель с автоматически определенным размером сходится с точностью, очень близкой к исходной модели Federated Pruning (FP). Удаляет (на оконечных 	устройствах) избыточные параметры из 	модели. Использует два инструмента: шаблоны (маски) разрежения и методы разрежения. Последний способ, Federated Pruning, наиболее популярен сейчас. Остановимся на нем подробнее.   FP был широко изучен в условиях централизованного обучения. Эмпирически доказано, что хорошо инициализированная на периферийных устройствах модель может иметь точность полной модели, обучавшейся централизовано. Существование метода обусловлено тем, что обычно для облегчения обучения модели изначально параметризуются чрезмерно. Поэтому параметры, в конкретном наборе данных определенные как избыточные, можно убрать. Полученные в результате выборки меньшего размера требуют меньше места на устройстве, меньшего объема памяти для обучения и более низкой пропускной способности сети для передачи данных на сервер. Главная проблема этого подхода в том, что когда параметры признаны незначимыми и сокращены на ранней итерации, это может оказать влияние на более поздние итерации. Для решения этой проблемы используются различные методы разрежения по времени и по модели. Разрежение данных начинается с генерации на сервере маски разрежения для переменных (1). Маска бинарная, нули означают, что соответствующие параметры являются незначимыми и подлежат сокращению. Число сокращений соответствует заданному уровню усечения (является гиперпараметром, задается в долях от первоначального количества параметров). Сервер обрезает данные на основе масок и отправляет их клиентам (2). Затем каждый клиент локально обучает эту сокращенную модель и возвращает результат обучения (3). Наконец, сервер объединяет результаты обучения (4) всех моделей от всех клиентов и после усреднения (5) переходит к следующему этапу. По сравнению со стандартным федеративным обучением, федеративное разрежение обрезает данные в начале каждой эпохи, а обрезанные выборки обучаются на клиентах и обученная (под)модель передается по сети. На первом этапе уровень сокращения увеличивается от 0 до S. В зависимости от схемы разрежения это может производиться за один проход или итеративно. Следующий после разрежения (a) этап FP – уточнение (b). На этом этапе уровень разрежения фиксируется на S, и основное внимание уделяется уточнению масок. Отметим, что существует обратное преобразование: если значение в маске инвертируется с 0 на 1, это означает восстановление обрезанного на предыдущем этапе параметра. Этим как раз решается главная проблема подхода FP – возможность ошибочного отсечения не тех параметров.   На последнем этапе настройки (с) уровень разрежения и маски фиксируются, а оптимизируются оставшиеся параметры. Эта фаза заканчивается, когда усеченные модели заканчивают обучение. Пора посмотреть, как определять значимость переменных. Обычно для FP используются L1- и L2-нормы, вычисляемые по (одно из): весовым коэффициентам переменных,  	 импульсу градиентного спуска (или по градиенту) произведению веса и величины градиента. L1- и L2-нормы используются как оценка значимости параметров модели. Полученные веса значимости сортируют и, используя целевой уровень разреженности, устанавливают порог отсечения. Области матриц с меньшим значением порога будут удалены из данных, полученных с клиентов, для формирования сокращенной модели. На стороне сервера участки с меньшими показателями значимости по-прежнему остаются и будут окончательно удалены в фазе финальной настройки (или восстановлены, если потребуется). В зависимости от способа установки порога отсечения, схемы разрежения бывают неструктурированные – сокращаются менее сильные связи между любыми узлами – и структурированные – сокращаются крупные структуры, группы узлов или слои целиком.Реализованы следующие шаблоны структурной обрезки: Целая строка/столбец (Whole row/column): удаление всей строки или столбца 	двумерной матрицы весов W. (Пример тут) Половина строки/столбца (Half row/column): равномерно разделяем двухмерную матрицу W на [W1;W2] и сокращаем половину исходной строки или столбца. Для матриц размерности больше 2 их сначала преобразуют в двухмерные, применяют  указанные шаблоны и возвращают в исходное размерное пространство. На этапе уточнения маска все еще переформировывается. Так как сокращенные области в полной модели на сервере получают 0 обновлений от вычислительных узлов, оценка их значимости не меняется. Для остальных областей данных их оценки значимости обновляются. Если значимости несокращенных параметров снижаются, они могут быть сокращены. При этом, чтобы сохранить целевой уровень разреженности, ранее сокращенные параметры должны быть в соответствующем количестве и в соответствии с обновленным набором всех оценок значимости восстановлены. Поэтому маски дорабатываются и переобучаются на этой фазе.  Заметим, что для оценки важности на основе градиента замаскированные области не будут иметь градиентов и потеряют способность восстанавливаться. В глубоких нейронных сетях слои делают разный вклад в точность модели. Соответственно, одни могут быть классифицированы как критические – те, обрезка которых приведет к серьезным ухудшениям качества, другие как слои окружения (ambient) – те, обрезка которых мало влияет на качество модели. Следовательно, уровень разреженности должен быть настроен на каждом слое отдельно. В FP же разреженность по слоям не меняется.Для определения послойного уровня разреженности считают значимость каждого слоя, используя, например, усредненную величину значимости параметров этого слоя. Далее назначают уровень разреженности для каждого слоя с использованием оценки значимости. Чем менее значимый слой, тем больший уровень разреженности он получает. Таким образом, при применении адаптивной разреженности меняется архитектура модели – может сокращаться, полностью или частично, отдельный слой нейросети – в то время как классический Federated Learning оставляет архитектуру модели неизменной. В статье «Federated Pruning: Improving Neural Network Efficiency with Federated Learning» приведены результаты эксперимента, проведенного на симуляторе распределенного обучения. Приведем здесь (очень кратко) основные моменты, за полным описанием – вэлкам в оригинальную статью. Эксперимент посвящен исследованию применимости Federated Pruning в задаче распознавания речи. Датасет – набор открытых анонимных данных LibriSpeech: 970 часов размеченной вручную речи. Базовая модель – Conformer-Transducer: 17512-мерных конформных слоев кодировщиков (энкодеров), 640-мерная сети предсказания эмбединга и 2048-мерный полносвязный объединяющий слой. Модель обучалась 30тысяч федеративных раундов. Эксперименты сокращению различных измерений показали, что оценка, основанная на весе, достигает такого же WER (Word Error Rate), как и оценки, основанные на градиенте и произведении веса и градиента, однако же оценка по весу является более стабильной, поэтому именно она использовалась как показатель значимости параметров и слоев.При уровне разреженности 50% адаптивная разреженность выигрывает у единой разреженности. Сокращение столбца и сокращение полустолбца превосходят сокращение на основе строк; при этом сокращение целого столбца эффективнее. То есть вес целесообразно использовать в качестве метода разрежения и весь столбец в качестве шаблона разрежения. Можно наблюдать очевидное ухудшение качества при уровне разреженности > 30% во всех схемах обрезки. Уточнение маски снижает WER. Метод Federated Pruning уменьшает данные, но сохраняет эффективность обучения. Как говорится, всем рекомендую любить FP. И адаптивное разрежение. Стоимость обучения снижается, требования к памяти и пропускной способности сети уменьшаются. Однако повышается сложность исполнения. В данной статье совсем не затронуты вопросы трафика данных (в контролируемой среде/по обычной сети/с использованием SwitchML и др.), а в некоторых реализациях они целиком ложатся на разработчика. И не учтены временные и машинные затраты на трафик. Хотя это бы дало более близкий к реальному расчет эффективности FL. Возможно, где-то он свелся бы к нулю. Однако чтобы текст не был уныло большим, оставим это для материала других статей.