Split Learning
Tìm hiểu cách học chia tách phân chia mạng nơ-ron trên các thiết bị để hỗ trợ AI cộng tác đồng thời khám phá các rủi ro về quyền riêng tư, quy trình huấn luyện, ứng dụng và các lựa chọn thiết kế.
Split learning là một phương pháp học máy phân tán chia mạng nơ-ron thành hai hoặc nhiều vị trí tính toán. Một client xử lý dữ liệu đầu vào riêng tư qua các lớp đầu của model, chỉ gửi các activation trung gian đến server, và nhận các gradient cần thiết để tiếp tục huấn luyện các lớp cục bộ của mình. Điều này cho phép các tổ chức hoặc thiết bị cộng tác mà không cần chuyển trực tiếp dữ liệu huấn luyện thô.
Phương pháp này đặc biệt phù hợp khi machine learning phải hoạt động vượt qua các ranh giới về quyền riêng tư, quyền sở hữu, băng thông hoặc phần cứng. Ví dụ, một bệnh viện có thể giữ lại hình ảnh y tế cục bộ trong khi một server mạnh mẽ hơn chạy phần đòi hỏi nhiều tính toán của model. Tuy nhiên, việc giữ dữ liệu thô ở cục bộ không tự động đảm bảo data privacy, vì các biểu diễn trung gian vẫn có thể tiết lộ thông tin nhạy cảm.
Cách Split Learning Hoạt Động#
Một neural network được chia tại một cut layer được chọn. Các lớp trước điểm cắt chạy trên client, trong khi các lớp sau điểm cắt chạy trên server. Đầu ra của mạng phía client thường được gọi là activation, biểu diễn trung gian, hoặc smashed data.
Một bước huấn luyện tuân theo trình tự sau:
- Client chạy một lượt lan truyền tiến từ đầu vào thô đến cut layer.
- Client gửi activation kết quả đến server.
- Server hoàn tất lượt lan truyền tiến và tính toán hàm mất mát.
- Trong quá trình backpropagation, server tính toán gradient cho activation của cut layer và trả về gradient đó.
- Client sử dụng gradient đó để cập nhật các lớp cục bộ của mình.
Quá trình này dựa trên cùng quy tắc chuỗi do các hệ thống như PyTorch automatic differentiation thực hiện. Điểm khác biệt là các activation và gradient vượt qua ranh giới mạng trong quá trình huấn luyện.
Ví dụ đơn tiến trình sau đây mô phỏng ranh giới đó:
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())Việc tách rời client_activations đại diện cho việc gửi các tensor này sang một hệ thống khác. Gradient activation được trả về kết nối lại hai nửa để tối ưu hóa. Một bản triển khai cho môi trường production phải bổ sung mạng, xác thực, mã hóa, xử lý lỗi và các biện pháp kiểm soát quyền riêng tư.
Split Learning và Các Phương Pháp Liên Quan#
Split learning thuộc lĩnh vực rộng lớn hơn của distributed training, nhưng phân chia tính toán theo cách khác.
- Federated learning: Mỗi bên tham gia thường huấn luyện một model cục bộ hoàn chỉnh và gửi các bản cập nhật model để tổng hợp. Split learning cung cấp cho mỗi bên tham gia chỉ một phần của model và trao đổi các activation trung gian cũng như gradient.
- Pipeline parallelism: Cả hai phương pháp đều đặt các lớp khác nhau trên các thiết bị khác nhau. Pipeline parallelism chủ yếu cải thiện khả năng mở rộng hoặc hiệu suất sử dụng phần cứng trong một môi trường đáng tin cậy, trong khi split learning thường tách biệt chủ sở hữu dữ liệu khỏi nhà cung cấp hạ tầng tính toán.
- Training song song dữ liệu: Các framework như PyTorch DistributedDataParallel và TensorFlow distributed training nhân bản model và đồng bộ hóa các bản cập nhật. Chúng thường không giữ các lớp đầu độc quyền bên cạnh dữ liệu gốc.
Split learning cũng có thể hỗ trợ dữ liệu được phân chia theo chiều dọc, nơi các tổ chức giữ các đặc trưng khác nhau cho các bản ghi khớp nhau. SecretFlow split-learning workflow minh họa cách sắp xếp này.
Các ứng dụng trong thực tế#
-
Chụp ảnh y tế cộng tác: Các bệnh viện có thể huấn luyện một hệ thống computer vision dùng chung trong khi vẫn giữ các bức ảnh X-quang hoặc bản quét trong cơ sở hạ tầng của riêng họ. Mỗi bệnh viện chạy các lớp đầu tiên ở cục bộ, và một server trung tâm hoàn tất việc huấn luyện từ các đặc trưng trung gian. MIT split-learning overview sử dụng các trung tâm X-quang để giải thích kiến trúc này.
-
Camera công nghiệp bị giới hạn tài nguyên: Camera nhà máy hoặc gateway có thể chạy bộ trích xuất đặc trưng gọn nhẹ ở cục bộ trong khi một server huấn luyện các lớp còn lại cho object detection. Điều này có thể giảm việc truyền video thô và giảm khối lượng tính toán của client, làm cho phương pháp này phù hợp với các hệ thống edge AI hoạt động trên nhiều cơ sở.
Lợi ích, Rủi ro và Lựa chọn Thiết kế#
Cut layer quyết định sự cân bằng giữa khối lượng công việc của client, khối lượng công việc của server, dung lượng truyền thông và mức độ phơi bày thông tin. Việc cắt sớm làm giảm khối lượng tính toán của client nhưng có thể tạo ra các activation lớn, giống như đầu vào. Việc cắt muộn hơn có thể tạo ra các đặc trưng mang tính trừu tượng cao hơn nhưng đòi hỏi phần cứng client mạnh mẽ hơn.
Các activation và gradient trung gian có thể vẫn dễ bị tái tạo, suy luận hoặc thao túng. Do đó, các nhóm nên đánh giá các biện pháp kiểm soát truy cập, truyền tải được mã hóa, bảo vệ activation, ghi nhật ký kiểm toán và độ tin cậy của bên tham gia thay vì coi split learning là một giải pháp bảo mật toàn diện. NIST Privacy Framework và NIST AI Risk Management Framework cung cấp các quy trình rộng hơn để đánh giá các rủi ro này.
Băng thông và độ trễ cũng rất quan trọng vì mọi bước huấn luyện có thể yêu cầu giao tiếp hai chiều. Các client chậm hoặc không ổn định có thể làm chậm toàn bộ hệ thống, trong khi các phân phối dữ liệu không đồng nhất có thể ảnh hưởng đến độ hội tụ.
Ultralytics YOLO không cung cấp giải pháp điều phối split learning sẵn sàng sử dụng. Việc triển khai phương pháp này sẽ đòi hỏi phải phân chia cẩn thận YOLO architecture, điều phối các lượt lan truyền tiến và lan truyền ngược từ xa, và có thể mở rộng custom trainer workflow đã được tài liệu hóa. Đối với các dự án chỉ cần dữ liệu nằm trên phần cứng sở hữu riêng, Ultralytics Platform model training hỗ trợ huấn luyện cục bộ với các số liệu được truyền trực tuyến, nhưng huấn luyện cục bộ không phải là split learning vì bản thân model không bị chia nhỏ giữa những người tham gia.






