Split Learning
Узнай, как разделенное обучение распределяет нейронные сети по устройствам для поддержки совместного ИИ, а также изучи риски конфиденциальности, рабочие процессы обучения, приложения и выбор дизайна.
Разделенное обучение — это подход распределенного машинного обучения, который разделяет нейронную сеть между двумя или более вычислительными узлами. Клиент обрабатывает конфиденциальные входные данные через ранние слои модели, отправляет на сервер только промежуточные активации и получает градиенты, необходимые для продолжения обучения локальных слоев. Это позволяет организациям или устройствам сотрудничать без прямой передачи исходных обучающих данных.
Этот подход особенно актуален, когда машинное обучение должно работать в условиях ограничений конфиденциальности, права собственности, пропускной способности или аппаратного обеспечения. Например, больница может хранить медицинские изображения локально, в то время как более мощный сервер выполняет вычислительно сложную часть модели. Однако хранение исходных данных локально не гарантирует автоматически конфиденциальность данных, поскольку промежуточные представления все же могут раскрывать чувствительную информацию.
Как работает разделенное обучение#
Нейронная сеть разделяется по выбранному слою разреза. Слои до разреза выполняются на клиенте, а слои после него — на сервере. Выходные данные клиентской сети часто называют активацией, промежуточным представлением или усеченными данными.
Шаг обучения состоит из следующей последовательности:
- Клиент выполняет прямой проход от исходных входных данных до слоя разреза.
- Клиент отправляет полученную активацию на сервер.
- Сервер завершает прямой проход и вычисляет потери.
- Во время обратного распространения ошибки сервер вычисляет градиент для активации слоя разреза и возвращает его.
- Клиент использует этот градиент для обновления своих локальных слоев.
Этот процесс опирается на то же правило цепной дифференциации, которое реализовано в таких системах, как автоматическое дифференцирование PyTorch. Разница заключается в том, что активации и градиенты пересекают сетевой рубеж во время обучения.
Следующий однопроцессный пример симулирует этот рубеж:
import torch
from torch import nn
client_model = nn.Sequential(nn.Linear(8, 16), nn.ReLU())
server_model = nn.Sequential(nn.Linear(16, 2))
client_optimizer = torch.optim.SGD(client_model.parameters(), lr=0.01)
server_optimizer = torch.optim.SGD(server_model.parameters(), lr=0.01)
inputs = torch.randn(4, 8)
targets = torch.tensor([0, 1, 0, 1])
client_optimizer.zero_grad()
server_optimizer.zero_grad()
client_activations = client_model(inputs)
sent_activations = client_activations.detach().requires_grad_()
predictions = server_model(sent_activations)
loss = nn.CrossEntropyLoss()(predictions, targets)
loss.backward()
client_activations.backward(sent_activations.grad)
server_optimizer.step()
client_optimizer.step()
print(loss.item())Отсоединение client_activations представляет собой отправку их в другую систему. Возвращенный градиент активации воссоединяет две половины для оптимизации. Реализация для промышленной эксплуатации должна включать сетевое взаимодействие, аутентификацию, шифрование, обработку сбоев и средства контроля конфиденциальности.
Разделенное обучение и смежные подходы#
Разделенное обучение относится к более широкой области распределенного обучения, но распределяет вычисления иначе.
- Федеративное обучение: Каждый участник обычно обучает полную локальную модель и отправляет обновления модели для агрегации. Разделенное обучение предоставляет каждому участнику только часть модели и производит обмен промежуточными активациями и градиентами.
- Конвейерный параллелизм: Оба подхода размещают разные слои на разных устройствах. Конвейерный параллелизм в первую очередь повышает масштабируемость или использование оборудования в доверенной среде, в то время как разделенное обучение обычно разделяет владельцев данных и поставщиков вычислительных мощностей.
- Обучение с параллелизмом данных: Такие фреймворки, как PyTorch DistributedDataParallel и распределенное обучение TensorFlow, тиражируют модель и синхронизируют обновления. Они обычно не оставляют ранние слои исключительно рядом с исходными данными.
Разделенное обучение также может поддерживать вертикально разделенные данные, когда организации хранят разные признаки для сопоставления записей. Рабочий процесс разделенного обучения SecretFlow иллюстрирует это расположение.
Практические применения#
-
Совместная медицинская визуализация: Больницы могут обучать общую систему компьютерного зрения, сохраняя рентгеновские снимки или сканы в пределах собственной инфраструктуры. Каждая больница запускает первые слои локально, а центральный сервер завершает обучение на основе промежуточных признаков. В обзоре разделенного обучения MIT для объяснения этой архитектуры используются радиологические центры.
-
Промышленные камеры с ограниченными ресурсами: Заводские камеры или шлюзы могут локально запускать компактный экстрактор признаков, в то время как сервер обучает оставшиеся слои для обнаружения объектов. Это позволяет сократить передачу необработанного видео и нагрузку на вычисления клиента, делая данный подход актуальным для систем периферийного ИИ, работающих на нескольких объектах.
Преимущества, риски и проектные решения#
Слой разреза определяет баланс между рабочей нагрузкой клиента, рабочей нагрузкой сервера, объемом передаваемых данных и степенью раскрытия информации. Ранний разрез снижает вычислительную нагрузку на клиента, но может приводить к созданию крупных активаций, похожих на входные данные. Поздний разрез позволяет формировать более абстрактные признаки, но требует более мощного клиентского оборудования.
Промежуточные активации и градиенты могут оставаться уязвимыми для реконструкции, вывода или манипуляций. Поэтому командам следует оценивать средства контроля доступа, шифрование транспорта, защиту активаций, ведение журналов аудита и доверие между участниками, вместо того чтобы рассматривать разделенное обучение как полноценное решение для обеспечения конфиденциальности. Платформа конфиденциальности NIST и Платформа управления рисками ИИ NIST предоставляют более широкие процессы для оценки этих рисков.
Пропускная способность и задержка также имеют значение, поскольку каждый шаг обучения может требовать двусторонней связи. Медленные или ненадежные клиенты могут задерживать всю систему, а несогласованное распределение данных может повлиять на сходимость.
Ultralytics YOLO не предоставляет готовой оркестрации разделенного обучения. Реализация такого подхода потребует тщательного разделения архитектуры YOLO, координации удаленных прямых и обратных проходов, а также потенциального расширения задокументированного рабочего процесса пользовательского тренера. Для проектов, которым требуется лишь сохранение данных на собственном оборудовании, обучение моделей на платформе Ultralytics поддерживает локальное обучение со стримингом метрик, но локальное обучение не является разделенным обучением, поскольку сама модель не делится между участниками.






