FL Гид

Guardora VFL демо для PC

Демо версия продукта для ML-специалистов,
проект в GitHub, легкий запуск на Python на своем PC

Преимущество

Легкий запуск на Python

01

Преимущество

Вертикальное федеративное обучение модели логистической регрессии со встроенной криптографической защитой

02

Преимущество

Включает тренировочный набор данных для изучения возможностей и функционала

03

Преимущество

Проект готов к применению для решения ваших прикладных задач

04

Предлагаемый Demo-продукт позволяет совместно несколькими участниками (от двух и более) без необходимости передачи самих данных проводить вертикальное федеративное обучение.

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

Линейная модель

Линейная регрессия

Модель логистической регрессии

Логистическая регрессия

Софтмакс регрессии (многоклассовой регрессии).

Softmax регрессия для многоклассовой классификации

Загрузка проекта
и установка зависимостей

1.  Убедитесь, что на компьютере установлен Python3 версии не ниже 3.9

2.  Убедитесь, что на компьютере установлен стандартный диспетчер пакетов pip

3.  Скачайте проект, размещенный в GitHub по ссылке https://github.com/guardora-ai/Guardora-VFL-demo

4.  Перейдите в папку с проектом

5.  Установите необходимые зависимости

6.  Для вопросов и обратной связи используйте канал #federated-learning сообщества Guardora в Discord или почту guardora@guardora.ru

python

Использование SSL/TLS
(доступно только для двух участников, в остальных случаях, используйте флаг -ns)

По умолчанию коммуникационные каналы участников обучения защищаются SSL/TLS-шифрованием на основе сертификатов. Данную функцию можно отключить, указав соответствующий параметр командной строки при запуске обучения.

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

Если готовые сертификаты отсутствуют, можно сгенерировать необходимый набор самоподписанных сертификатов и ключей с использованием скрипта .  Для выполнения скрипта используйте команду:

Здесь  может быть IP-адресом или доменным именем. После генерации необходимо указать пути к сформированным сертификатам и ключам в командной строке запуска обучения.

12345

// Введите какой-нибудь код ->

Запуск обучения

Пассивные участники (без таргетного признака)

Каждый участник без таргетного признака должен запустить скрипт VFL_server.py с использованием следующих параметров командной строки:

-i

<ID участника, например, порядковый номер; значение по умолчанию: 1>

-p

<Номер порта для сетевых соединений во время обучения; значение по умолчанию: 50055>

-t

<Путь к обучающему датасету (CSV-файл); значение по умолчанию: train файл из папки 'data'>

-v

<Путь к тестовому/валидационному датасету (CSV-файл); значение по умолчанию: test файл из папки 'data'>

-d 

<Название столбца, содержащего идентификаторы записей; значение по умолчанию: 'ID'>

-f

<Доля случайно выбираемых записей из обучающих и тестовых данных для выполнения обучения; значение по умолчанию: 0.5>

-ns

<Флаг отключения SSL/TLS-шифрования (опционально); по умолчанию SSL/TLS включено>

-cp 

<Путь к серверному сертификату для SSL/TLS; значение по умолчанию: 'cert/127.0.0.1.crt'>

-kp 

<Путь к серверному ключу для SSL/TLS; значение по умолчанию: 'cert/127.0.0.1.key'>

Активный участник (с таргетным признаком)

Участник, обладающий таргетным признаком, должен указать необходимые параметры в конфигурационном файле (пример файла можно найти в папке config) и запустить обучение. Т.е. выполнить следующие шаги:

01

Указать пассивных участников:

Определить id, IP-адрес (или доменное имя) и порт для каждого пассивного участника. Порт должен совпадать с указанным в VFL_server.py, а IP-адрес/доменное имя — соответствовать сертификату (если SSL/TLS включено).

02

Задать параметры обучения:

Указать learning_rate и число эпох.

03

Установить порог бинаризации:

Задать значения порога бинаризации для выполнения инференса.

04

Указать длину ключа шифрования:

Определить длину ключа (в битах) для криптосистемы Пайе.

05

Запустить скрипт обучения:

Выполнить скрипт VFL_client.py с использованием следующих параметров:

-c

<Путь к конфигурационному файлу; значение по умолчанию: 'config/config.conf'>

-m

<Тип модели: 'linear', 'logistic' или 'softmax'; значение по умолчанию: 'softmax'>

-t

<Путь к обучающему датасету (CSV-файл); значение по умолчанию: train файл из папки 'data'>

-v

<Путь к тестовому/валидационному датасету (CSV-файл); значение по умолчанию: test файл из папки 'data'>

-d

<Название столбца, содержащего идентификаторы записей; значение по умолчанию: 'ID'>

-y

<Название столбца, содержащего таргетный признак; значение по умолчанию: 'y'>

-f

<Доля случайно выбираемых записей для обучения/тестирования; значение по умолчанию: 0.5>

-ns

<Флаг отключения SSL/TLS-шифрования (опционально); по умолчанию SSL/TLS включено>

-cp

<Путь к серверному сертификату для SSL/TLS; значение по умолчанию: 'cert/127.0.0.1.crt'>

-kp

<Путь к серверному ключу для SSL/TLS; значение по умолчанию: 'cert/127.0.0.1.key'>

-rp

<Путь к корневому сертификату для SSL/TLS; значение по умолчанию: 'cert/rootCA.crt'>

Инференс

После завершения обучения у каждого участника будут сохранены параметры общей модели, относящиеся к его данным. При проведении инференса параметры модели загружаются каждым участником, после чего выполняется инференс на записях.

Что такое Guardora VFL Demo?
Guardora VFL Demo — бесплатная публично доступная Python-реализация вертикального федеративного обучения. Позволяет двум и более участникам совместно обучать регрессионную модель — линейную, логистическую (бинарная классификация) или softmax (многоклассовая классификация) — без передачи сырых данных между сторонами. Служебная информация для обучения (градиенты, параметры модели) передаётся в криптографически защищённом виде. Демо включает тренировочный датасет для самостоятельной работы. Исходный код размещён на GitHub: github.com/guardora-ai/Guardora-VFL-demo.
Какие модели поддерживает Guardora VFL Demo?
Демо поддерживает три архитектуры моделей для табличных данных: Линейная регрессия (предсказание непрерывной целевой переменной), Логистическая регрессия (бинарная классификация — например, «дефолт / нет дефолта» в скоринге) и Softmax регрессия (многоклассовая классификация — например, рейтинги «Низкий / Стандартный / Высокий»). Тип модели выбирается при запуске обучения через флаг `-m` со значениями `linear`, `logistic` или `softmax`. По умолчанию: `softmax`.
Каковы требования к системе для запуска демо?
Минимальные требования: Python 3.9 или выше, pip (стандартный диспетчер пакетов Python), Git для клонирования репозитория. Демо работает на Linux, macOS и Windows. GPU не требуется — обучение в демо-масштабе выполняется на CPU. Для обучения с несколькими участниками каждой стороне нужен сетевой доступ к другим (локальная сеть для тестирования или маршрутизируемые IP/домены для распределённых развёртываний).
Как установить Guardora VFL Demo?
Четыре шага:
(1) убедиться, что установлены Python 3.9+ и pip;
(2) клонировать репозиторий с GitHub: `git clone https://github.com/guardora-ai/Guardora-VFL-demo`;
(3) перейти в папку проекта;
(4) установить зависимости через pip (в проекте есть requirements-файл). После установки демо готово к запуску с приложенным sample-датасетом, либо можно подставить свои CSV-файлы.
Как запустить обучение в демо?
Обучение требует запуска двух скриптов на машинах участников. Пассивные участники (без таргетного признака) запускают `VFL_server.py` с флагами: ID участника (`-i`), порт (`-p`), пути к тренировочным и тестовым данным (`-t`, `-v`), название столбца с ID (`-d`), доля случайной выборки (`-f`), пути к SSL/TLS-сертификатам (`-cp`, `-kp`). Активный участник (с таргетным признаком) задаёт параметры обучения в `config/config.conf` (learning rate, число эпох, порог бинаризации, длина ключа Paillier) и запускает `VFL_client.py` с флагами: путь к конфигу (`-c`), тип модели (`-m`), пути к данным, название столбца с меткой (`-y`), сертификаты.
В чём разница между активным и пассивным участниками?
Пассивный участник располагает признаками, но не имеет таргетного признака — обычно это аналитический вендор или партнёр по данным. Пассивный участник запускает `VFL_server.py` и ждёт запросов на обучение от активной стороны. Активный участник располагает таргетным признаком (целевой переменной) и оркестрирует обучение. Активный участник запускает `VFL_client.py`, задаёт гиперпараметры обучения и агрегирует градиенты от пассивных участников. В сценарии кредитного скоринга банк — активный участник (владелец меток кредитоспособности), а дата-вендор — пассивный.
Шифруется ли коммуникация между участниками?
Да — два слоя шифрования. SSL/TLS защищает канал коммуникации между участниками на основе сертификатов (по умолчанию `cert/127.0.0.1.crt` и `cert/127.0.0.1.key`). Демо включает примеры self-signed сертификатов для тестирования на localhost; собственные сертификаты указываются флагами `-cp` и `-kp`. Гомоморфное шифрование Paillier защищает значения градиентов, обмениваемые при обучении — длина ключа настраивается в конфиг-файле. SSL/TLS можно отключить флагом `-ns` для сценариев тестирования с 3+ участниками.
Где получить помощь с демо?
Два канала сообщества.
Discord-сообщество Guardora — присоединяйтесь через https://discord.com/invite/jQxXnUKYdH и задавайте вопросы в канале `#federated-learning`.
Email в Guardora напрямую: guardora@guardora.ru — для вопросов, обратной связи или обсуждения перехода от демо к коммерческому развёртыванию Guardora VFL. Канал Discord мониторят инженеры Guardora — это самый быстрый путь для технических вопросов по реализации демо.