Tổng quan
TFF là một khung phần mềm mạnh mẽ, có khả năng mở rộng,用于 thực hiện nghiên cứu học tập liên kết (FL) bằng cách mô phỏng các phép tính liên kết trên các tập dữ liệu giả lập thực tế. Trang này mô tả các khái niệm và thành phần chính có liên quan đến mô phỏng nghiên cứu, cũng như hướng dẫn chi tiết để thực hiện các loại nghiên cứu khác nhau trong TFF.
Cấu trúc điển hình của mã nghiên cứu trong TFF
Một mô phỏng FL nghiên cứu được triển khai trong TFF thường bao gồm ba loại logic chính.
Các đoạn mã TensorFlow riêng lẻ, thường là các hàm
tf.function, bao gồm logic chạy tại một vị trí duy nhất (ví dụ: trên máy khách hoặc trên máy chủ). Mã này thường được viết và kiểm thử mà không cần bất kỳ thamtff.*nào, và có thể được sử dụng lại bên ngoài TFF. Ví dụ, vòng lặp huấn luyện phía máy khách trong Federated Averaging được triển khai ở cấp độ này.Logic điều phối TensorFlow Federated, liên kết các
tf.functionriêng lẻ từ mục 1 bằng cách gói chúng thành cáctff.tensorflow.computationvà sau đó điều phối chúng bằng cách sử dụng các trừu tượng nhưfederated_language.federated_broadcastvàfederated_language.federated_meanbên trong mộtfederated_language.federated_computation. Ví dụ, hãy xem sự điều phối này cho Federated Averaging .Một kịch bản điều khiển bên ngoài mô phỏng logic điều khiển của một hệ thống FL sản xuất, chọn các máy khách được mô phỏng từ một tập dữ liệu và sau đó thực hiện các phép tính liên kết được định nghĩa trong mục 2 trên các máy khách đó. Ví dụ: một trình điều khiển thử nghiệm Federated EMNIST .
Bộ dữ liệu học tập liên kết
TensorFlow federated lưu trữ nhiều tập dữ liệu đại diện cho các đặc điểm của các vấn đề thực tế có thể được giải quyết bằng học tập liên kết.
Các tập dữ liệu bao gồm:
StackOverflow . Một tập dữ liệu văn bản thực tế dành cho các tác vụ mô hình hóa ngôn ngữ hoặc học có giám sát, với 342.477 người dùng duy nhất và 135.818.730 ví dụ (câu) trong tập huấn luyện.
EMNIST Liên Kết . Đây là quá trình tiền xử lý liên kết của tập dữ liệu ký tự và chữ số EMNIST, trong đó mỗi máy khách tương ứng với một người viết khác nhau. Tập dữ liệu huấn luyện đầy đủ chứa 3400 người dùng với 671.585 ví dụ từ 62 nhãn.
Shakespeare . Một tập dữ liệu văn bản nhỏ hơn ở cấp độ ký tự, dựa trên toàn bộ tác phẩm của William Shakespeare. Tập dữ liệu bao gồm 715 người dùng (các nhân vật trong các vở kịch của Shakespeare), trong đó mỗi ví dụ tương ứng với một tập hợp các dòng thoại liên tiếp do nhân vật đó nói trong một vở kịch nhất định.
CIFAR-100 . Phân vùng liên kết của tập dữ liệu CIFAR-100 trên 500 máy khách huấn luyện và 100 máy khách kiểm thử. Mỗi máy khách có 100 ví dụ duy nhất. Việc phân vùng được thực hiện theo cách tạo ra sự khác biệt thực tế hơn giữa các máy khách. Để biết thêm chi tiết, hãy xem API .
Bộ dữ liệu Google Landmark v2 bao gồm các bức ảnh về nhiều địa danh nổi tiếng trên thế giới, được nhóm theo nhiếp ảnh gia để phân vùng dữ liệu theo mô hình liên kết. Có hai phiên bản bộ dữ liệu: một bộ dữ liệu nhỏ hơn với 233 máy khách và 23080 hình ảnh, và một bộ dữ liệu lớn hơn với 1262 máy khách và 164172 hình ảnh.
CelebA là một tập dữ liệu gồm các ví dụ (hình ảnh và thuộc tính khuôn mặt) về khuôn mặt của người nổi tiếng. Tập dữ liệu liên kết này có các ví dụ của mỗi người nổi tiếng được nhóm lại với nhau để tạo thành một "khách hàng". Có 9343 "khách hàng", mỗi khách hàng có ít nhất 5 ví dụ. Tập dữ liệu có thể được chia thành nhóm huấn luyện và nhóm kiểm tra theo "khách hàng" hoặc theo ví dụ.
Bộ dữ liệu iNaturalist bao gồm ảnh chụp nhiều loài khác nhau. Bộ dữ liệu chứa 120.300 hình ảnh cho 1.203 loài. Có bảy loại bộ dữ liệu khác nhau. Một trong số đó được nhóm theo người chụp ảnh và bao gồm 9.257 khách hàng. Các bộ dữ liệu còn lại được nhóm theo vị trí địa lý nơi chụp ảnh. Sáu loại bộ dữ liệu này bao gồm 11 khách hàng với tổng cộng 3.606 người.
Mô phỏng hiệu năng cao
Mặc dù thời gian thực tế của một mô phỏng FL không phải là thước đo thích hợp để đánh giá thuật toán (vì phần cứng mô phỏng không đại diện cho môi trường triển khai FL thực tế), khả năng chạy mô phỏng FL nhanh chóng là rất quan trọng đối với năng suất nghiên cứu. Do đó, TFF đã đầu tư mạnh vào việc cung cấp các môi trường chạy hiệu năng cao trên một và nhiều máy. Tài liệu đang được phát triển, nhưng hiện tại, hãy xem hướng dẫn về mô phỏng TFF với bộ tăng tốc và hướng dẫn thiết lập mô phỏng với TFF trên GCP . Môi trường chạy TFF hiệu năng cao được bật theo mặc định.
TFF cho các lĩnh vực nghiên cứu khác nhau
Thuật toán tối ưu hóa liên kết
Việc nghiên cứu các thuật toán tối ưu hóa liên kết có thể được thực hiện theo nhiều cách khác nhau trong TFF, tùy thuộc vào mức độ tùy chỉnh mong muốn.
Một triển khai độc lập tối thiểu của thuật toán Trung bình Liên kết được cung cấp ở đây . Mã nguồn bao gồm các hàm TF để tính toán cục bộ, các phép tính TFF để điều phối và một kịch bản điều khiển trên tập dữ liệu EMNIST làm ví dụ. Các tệp này có thể dễ dàng được điều chỉnh cho các ứng dụng tùy chỉnh và thay đổi thuật toán theo hướng dẫn chi tiết trong tệp README .
Bạn có thể tìm thấy một triển khai tổng quát hơn của phương pháp Trung bình Liên kết (Federated Averaging) tại đây . Triển khai này cho phép sử dụng các kỹ thuật tối ưu hóa phức tạp hơn, bao gồm việc sử dụng các bộ tối ưu hóa khác nhau trên cả máy chủ và máy khách. Các thuật toán học liên kết khác, bao gồm cả thuật toán phân cụm k-means liên kết, có thể được tìm thấy tại đây .
Nén cập nhật mô hình
Việc nén dữ liệu cập nhật mô hình có tổn hao có thể dẫn đến giảm chi phí truyền thông, từ đó giảm thời gian huấn luyện tổng thể.
Để tái hiện một bài báo gần đây, hãy xem dự án nghiên cứu này . Để triển khai thuật toán nén tùy chỉnh, hãy xem comparison_methods trong dự án để biết các phương pháp cơ bản làm ví dụ, và hướng dẫn TFF Aggregators nếu bạn chưa quen thuộc.
Bảo mật khác biệt
TFF tương thích với thư viện TensorFlow Privacy để hỗ trợ nghiên cứu các thuật toán mới cho việc huấn luyện liên kết các mô hình với tính bảo mật khác biệt. Để xem ví dụ về huấn luyện với DP sử dụng thuật toán DP-FedAvg cơ bản và các phần mở rộng , hãy xem trình điều khiển thử nghiệm này .
Nếu bạn muốn triển khai thuật toán DP tùy chỉnh và áp dụng nó cho các bản cập nhật tổng hợp của phép tính trung bình liên kết, bạn có thể triển khai thuật toán trung bình DP mới như một lớp con của tensorflow_privacy.DPQuery và tạo một tff.aggregators.DifferentiallyPrivateFactory với một thể hiện của truy vấn của bạn. Bạn có thể tìm thấy ví dụ về cách triển khai thuật toán DP-FTRL tại đây.
Mạng GAN liên kết (được mô tả bên dưới ) là một ví dụ khác về dự án TFF triển khai tính bảo mật khác biệt ở cấp độ người dùng (ví dụ: ở đây trong mã ).
Độ bền và các cuộc tấn công
TFF cũng có thể được sử dụng để mô phỏng các cuộc tấn công có chủ đích vào các hệ thống học tập liên kết và các biện pháp phòng thủ dựa trên bảo mật khác biệt được xem xét trong bài viết "Bạn có thực sự có thể tạo cửa hậu cho học tập liên kết không?" . Điều này được thực hiện bằng cách xây dựng một quy trình lặp đi lặp lại với các máy khách có khả năng độc hại (xem build_federated_averaging_process_attacked ). Thư mục targeted_attack chứa thêm chi tiết.
- Các thuật toán tấn công mới có thể được triển khai bằng cách viết một hàm cập nhật phía máy khách, đây là một hàm Tensorflow, xem
ClientProjectBoostđể biết ví dụ. - Các biện pháp phòng thủ mới có thể được triển khai bằng cách tùy chỉnh 'tff.utils.StatefulAggregateFn' , chức năng này tổng hợp đầu ra của máy khách để có được bản cập nhật toàn cục.
Để xem ví dụ về kịch bản mô phỏng, hãy xem emnist_with_targeted_attack.py .
Mạng đối kháng tạo sinh
GAN tạo ra một mô hình điều phối liên kết thú vị, trông hơi khác so với phương pháp trung bình liên kết tiêu chuẩn. Chúng bao gồm hai mạng riêng biệt (mạng tạo và mạng phân biệt), mỗi mạng được huấn luyện với bước tối ưu hóa riêng.
TFF có thể được sử dụng cho nghiên cứu về huấn luyện liên kết của GAN. Ví dụ, thuật toán DP-FedAvg-GAN được trình bày trong công trình gần đây đã được triển khai trong TFF . Công trình này chứng minh hiệu quả của việc kết hợp học liên kết, mô hình tạo sinh và bảo mật vi sai .
Cá nhân hóa
Cá nhân hóa trong bối cảnh học tập liên kết là một lĩnh vực nghiên cứu đang được quan tâm. Mục tiêu của cá nhân hóa là cung cấp các mô hình suy luận khác nhau cho những người dùng khác nhau. Có nhiều cách tiếp cận khác nhau để giải quyết vấn đề này.
Một cách tiếp cận là cho phép mỗi khách hàng tinh chỉnh một mô hình toàn cục duy nhất (được huấn luyện bằng học liên kết) với dữ liệu cục bộ của họ. Cách tiếp cận này có liên quan đến siêu học, xem ví dụ bài báo này . Một ví dụ về cách tiếp cận này được đưa ra trong emnist_p13n_main.py . Để khám phá và so sánh các chiến lược cá nhân hóa khác nhau, bạn có thể:
Hãy định nghĩa chiến lược cá nhân hóa bằng cách triển khai một
tf.functionbắt đầu từ một mô hình ban đầu, huấn luyện và đánh giá một mô hình được cá nhân hóa bằng cách sử dụng tập dữ liệu cục bộ của mỗi khách hàng. Một ví dụ được đưa ra bởibuild_personalize_fn.Hãy định nghĩa một
OrderedDictánh xạ tên chiến lược đến các chiến lược cá nhân hóa tương ứng, và sử dụng nó làm đối sốpersonalize_fn_dicttrongtff.learning.build_personalization_eval_computation.
Một cách tiếp cận khác là tránh huấn luyện một mô hình toàn cục bằng cách huấn luyện một phần của mô hình hoàn toàn cục bộ. Một ví dụ cụ thể về cách tiếp cận này được mô tả trong bài đăng trên blog này . Cách tiếp cận này cũng có liên quan đến học siêu cấp (meta learning), xem bài báo này .