ภาพรวม
TFF เป็นเฟรมเวิร์กที่ขยายได้และทรงพลังสำหรับการดำเนินการวิจัยแบบสหพันธรัฐ (FL) โดยการจำลองการคำนวณแบบรวมศูนย์บนชุดข้อมูลพร็อกซีที่เหมือนจริง หน้านี้อธิบายแนวคิดหลักและส่วนประกอบที่เกี่ยวข้องกับการจำลองการวิจัย ตลอดจนคำแนะนำโดยละเอียดสำหรับการดำเนินการวิจัยประเภทต่างๆ ใน TFF
โครงสร้างทั่วไปของรหัสการวิจัยในTFF
การจำลองการวิจัย FL ที่ใช้ใน TFF โดยทั่วไปประกอบด้วยตรรกะหลักสามประเภท
โค้ด TensorFlow แต่ละส่วน โดยทั่วไปแล้วจะเป็น
tf.function
ที่ห่อหุ้มตรรกะที่ทำงานในตำแหน่งเดียว (เช่น บนไคลเอนต์หรือบนเซิร์ฟเวอร์) โดยทั่วไปแล้ว รหัสนี้เขียนและทดสอบโดยไม่มีการอ้างอิงtff.*
และสามารถนำกลับมาใช้ใหม่นอก TFF ได้ ตัวอย่างเช่น วงจรการฝึกไคลเอนต์ใน Federated Averaging ถูกนำไปใช้ที่ระดับนี้TensorFlow Federated orchestration logic ซึ่งรวม
tf.function
แต่ละตัวจาก 1 เข้าด้วยกัน โดยล้อมเป็นtff.tf_computation
s แล้วจัดการโดยใช้ abstractions เช่นtff.federated_broadcast
และtff.federated_mean
ภายในtff.federated_computation
ดูตัวอย่าง การ จัดระบบสำหรับ Federated Averagingสคริปต์ไดรเวอร์ภายนอกที่จำลองตรรกะการควบคุมของระบบ FL ที่ใช้งานจริง โดยเลือกไคลเอ็นต์จำลองจากชุดข้อมูล แล้วดำเนินการคำนวณแบบรวมศูนย์ที่กำหนดไว้ใน 2. บนไคลเอ็นต์เหล่านั้น ตัวอย่างเช่น โปรแกรมควบคุมการทดสอบ Federated EMNIST
ชุดข้อมูลการเรียนรู้แบบสหพันธรัฐ
TensorFlow federated โฮสต์ชุดข้อมูลหลายชุด ที่เป็นตัวแทนของลักษณะของปัญหาในโลกแห่งความเป็นจริงที่สามารถแก้ไขได้ด้วยการเรียนรู้แบบรวมศูนย์
ชุดข้อมูลประกอบด้วย:
ส แต็ คโอเวอร์โฟลว์ ชุดข้อมูลข้อความที่สมจริงสำหรับการสร้างแบบจำลองภาษาหรืองานการเรียนรู้ภายใต้การดูแล โดยมีผู้ใช้ที่ไม่ซ้ำ 342,477 รายพร้อมตัวอย่าง 135,818,730 (ประโยค) ในชุดการฝึก
สหพันธ์ EMNIST การประมวลผลล่วงหน้าแบบรวมศูนย์ของชุดข้อมูลอักขระ EMNIST และตัวเลข โดยที่ไคลเอ็นต์แต่ละเครื่องสอดคล้องกับตัวเขียนคนละตัว ชุดรถไฟทั้งชุดประกอบด้วยผู้ใช้ 3400 ราย โดยมีตัวอย่าง 671,585 ตัวอย่างจาก 62 ป้าย
เช็คสเปียร์ . ชุดข้อมูลข้อความระดับอักขระที่เล็กกว่าโดยอิงตามผลงานของวิลเลียม เชคสเปียร์ฉบับสมบูรณ์ ชุดข้อมูลประกอบด้วยผู้ใช้ 715 คน (ตัวละครในบทละครของเชคสเปียร์) โดยตัวอย่างแต่ละตัวอย่างจะสอดคล้องกับชุดบรรทัดที่ต่อเนื่องกันซึ่งพูดโดยตัวละครในบทละครที่กำหนด
CIFAR-100 . การแบ่งพาร์ติชันแบบรวมศูนย์ของชุดข้อมูล CIFAR-100 ในไคลเอนต์การฝึกอบรม 500 ลูกและไคลเอนต์ทดสอบ 100 ลูก ลูกค้าแต่ละรายมีตัวอย่างที่ไม่ซ้ำกัน 100 ตัวอย่าง การแบ่งพาร์ติชั่นทำเพื่อสร้างความแตกต่างที่สมจริงยิ่งขึ้นระหว่างไคลเอนต์ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ API
ชุดข้อมูล Google Landmark v2 ชุด ข้อมูลประกอบด้วยภาพถ่ายสถานที่สำคัญต่างๆ ของโลก โดยรูปภาพจะจัดกลุ่มตามช่างภาพเพื่อให้มีการแบ่งพาร์ติชันข้อมูลแบบรวมศูนย์ ชุดข้อมูลมีให้เลือก 2 แบบ ได้แก่ ชุดข้อมูลขนาดเล็กที่มีไคลเอ็นต์ 233 รายการและรูปภาพ 23080 ชุดข้อมูลขนาดใหญ่ขึ้นพร้อมไคลเอ็นต์ 1262 รายการและรูปภาพ 164172 ภาพ
CelebA ชุดข้อมูลของตัวอย่าง (รูปภาพและคุณลักษณะใบหน้า) ของใบหน้าคนดัง ชุดข้อมูลแบบรวมศูนย์มีตัวอย่างของผู้มีชื่อเสียงแต่ละคนที่จัดกลุ่มเข้าด้วยกันเพื่อสร้างลูกค้า มีลูกค้า 9343 ราย แต่ละรายมีตัวอย่างอย่างน้อย 5 ตัวอย่าง ชุดข้อมูลสามารถแบ่งออกเป็นกลุ่มฝึกและทดสอบโดยลูกค้าหรือตามตัวอย่าง
iNaturalist ชุดข้อมูลประกอบด้วยภาพถ่ายของสายพันธุ์ต่างๆ ชุดข้อมูลประกอบด้วยภาพ 120,300 ภาพสำหรับ 1,203 สปีชีส์ มีชุดข้อมูลเจ็ดรสชาติให้เลือก หนึ่งในนั้นจัดกลุ่มโดยช่างภาพ และประกอบด้วยลูกค้า 9257 ราย ชุดข้อมูลที่เหลือจะจัดกลุ่มตามตำแหน่งทางภูมิศาสตร์ที่ถ่ายภาพ ชุดข้อมูลทั้ง 6 รสชาตินี้ประกอบด้วยลูกค้า 11 - 3,606 ราย
การจำลองประสิทธิภาพสูง
แม้ว่าเวลานาฬิกาแขวนของการ จำลอง FL จะไม่ใช่ตัวชี้วัดที่เกี่ยวข้องสำหรับการประเมินอัลกอริธึม (เนื่องจากฮาร์ดแวร์การจำลองไม่ได้เป็นตัวแทนของสภาพแวดล้อมการปรับใช้ FL จริง) ความสามารถในการเรียกใช้การจำลอง FL อย่างรวดเร็วนั้นมีความสำคัญต่อประสิทธิภาพในการวิจัย ดังนั้น TFF ได้ลงทุนอย่างมากในการให้บริการรันไทม์เครื่องเดียวและหลายเครื่องที่มีประสิทธิภาพสูง เอกสารอยู่ระหว่างการพัฒนา แต่สำหรับตอนนี้ โปรดดู การจำลองประสิทธิภาพสูงด้วยบทช่วยสอนของ Kubernetes คำแนะนำเกี่ยวกับ การจำลอง TFF ด้วยตัวเร่งความเร็ว และคำแนะนำใน การตั้งค่าการจำลองด้วย TFF บน GCP รันไทม์ TFF ประสิทธิภาพสูงถูกเปิดใช้งานโดยค่าเริ่มต้น
TFF สำหรับพื้นที่การวิจัยต่างๆ
อัลกอริธึมการปรับให้เหมาะสมแบบรวมศูนย์
การวิจัยเกี่ยวกับอัลกอริธึมการปรับให้เหมาะสมแบบรวมศูนย์สามารถทำได้หลายวิธีใน TFF ขึ้นอยู่กับระดับการปรับแต่งที่ต้องการ
มีการใช้งานอัลกอริธึม Federated Averaging แบบสแตนด์อโลนน้อยที่สุด ที่นี่ โค้ดประกอบด้วย ฟังก์ชัน TF สำหรับการคำนวณในเครื่อง การคำนวณ TFF สำหรับการประสาน และ สคริปต์ไดรเวอร์ ในชุดข้อมูล EMNIST เป็นตัวอย่าง ไฟล์เหล่านี้สามารถปรับให้เข้ากับแอพพลิเคชั่นที่กำหนดเองและการเปลี่ยนแปลงอัลกอริธึมได้อย่างง่ายดายตามคำแนะนำโดยละเอียดใน README
การใช้งานทั่วไปของ Federated Averaging สามารถพบได้ ที่นี่ การใช้งานนี้ช่วยให้เทคนิคการเพิ่มประสิทธิภาพที่ซับซ้อนยิ่งขึ้น รวมถึงการใช้เครื่องมือเพิ่มประสิทธิภาพที่แตกต่างกันทั้งบนเซิร์ฟเวอร์และไคลเอนต์ อัลกอริธึมการเรียนรู้แบบรวมศูนย์อื่นๆ รวมถึงการจัดกลุ่มค่าเฉลี่ย k แบบรวมศูนย์ สามารถพบได้ ที่นี่
การบีบอัดการอัพเดตโมเดล
การบีบอัดข้อมูลอัพเดตโมเดลแบบสูญเสียข้อมูลสามารถนำไปสู่การลดค่าใช้จ่ายในการสื่อสาร ซึ่งจะทำให้เวลาการฝึกอบรมโดยรวมลดลง
หากต้องการทำซ้ำ บทความ ล่าสุด โปรดดู โครงการวิจัยนี้ ในการใช้อัลกอริธึมการบีบอัดแบบกำหนดเอง โปรดดูที่ comparison_methods ในโปรเจ็กต์สำหรับเส้นฐานเป็นตัวอย่าง และบทช่วย สอน TFF Aggregators หากยังไม่คุ้นเคย
ความเป็นส่วนตัวที่แตกต่าง
TFF สามารถทำงานร่วมกับ ไลบรารี TensorFlow Privacy เพื่อเปิดใช้งานการวิจัยในอัลกอริธึมใหม่สำหรับการฝึกอบรมแบบรวมศูนย์สำหรับแบบจำลองที่มีความเป็นส่วนตัวที่แตกต่างกัน สำหรับตัวอย่างการฝึกอบรมกับ DP โดยใช้อัลกอริธึมและ ส่วนขยาย DP-FedAvg พื้นฐาน โปรดดู ไดรเวอร์การทดสอบ นี้
หากคุณต้องการใช้อัลกอริธึม DP ที่กำหนดเองและนำไปใช้กับการอัพเดทแบบรวมของการหาค่าเฉลี่ยแบบรวมศูนย์ คุณสามารถใช้อัลกอริธึมค่าเฉลี่ย DP ใหม่เป็นคลาสย่อยของ tensorflow_privacy.DPQuery
และสร้าง tff.aggregators.DifferentiallyPrivateFactory
ด้วยอินสแตนซ์ของการสืบค้นของคุณ ดูตัวอย่างการใช้ อัลกอริทึม DP-FTRL ได้ ที่นี่
GAN แบบรวมศูนย์ (อธิบายไว้ ด้านล่าง ) เป็นอีกตัวอย่างหนึ่งของโครงการ TFF ที่ใช้ความเป็นส่วนตัวส่วนต่างระดับผู้ใช้ (เช่น ที่นี่ใน code )
ความแข็งแกร่งและการโจมตี
นอกจากนี้ยังสามารถใช้ TFF เพื่อจำลองการโจมตีเป้าหมายบนระบบการเรียนรู้แบบสหพันธรัฐและการป้องกันตามความเป็นส่วนตัวที่แตกต่างกันใน Can You really Back door Federated Learning? . สิ่งนี้ทำได้โดยการสร้างกระบวนการวนซ้ำกับไคลเอนต์ที่อาจเป็นอันตราย (ดู build_federated_averaging_process_attacked
) ไดเร็กทอรี targeted_attack มีรายละเอียดเพิ่มเติม
- อัลกอริธึมการโจมตีใหม่สามารถใช้งานได้โดยการเขียนฟังก์ชันอัพเดตไคลเอ็นต์ซึ่งเป็นฟังก์ชัน Tensorflow โปรดดูตัวอย่าง
ClientProjectBoost
- การป้องกันใหม่สามารถทำได้โดยการปรับแต่ง 'tff.utils.StatefulAggregateFn' ซึ่งรวบรวมเอาท์พุตของไคลเอ็นต์เพื่อรับการอัปเดตทั่วโลก
สำหรับสคริปต์ตัวอย่างสำหรับการจำลอง โปรดดู emnist_with_targeted_attack.py
เครือข่ายปฏิปักษ์ทั่วไป
GAN สร้าง รูปแบบการประสานรวมที่ น่าสนใจซึ่งดูแตกต่างไปจากค่าเฉลี่ยแบบรวมศูนย์แบบมาตรฐานเล็กน้อย พวกเขาเกี่ยวข้องกับเครือข่ายที่แตกต่างกันสองเครือข่าย (ตัวสร้างและตัวแบ่งแยก) ซึ่งแต่ละเครือข่ายได้รับการฝึกฝนด้วยขั้นตอนการเพิ่มประสิทธิภาพของตนเอง
TFF สามารถใช้สำหรับการวิจัยเกี่ยวกับการฝึกอบรมแบบรวมศูนย์ของ GAN ตัวอย่างเช่น อัลกอริทึม DP-FedAvg-GAN ที่นำเสนอใน งานล่าสุด ถูก นำไปใช้ใน TFF งานนี้แสดงให้เห็นถึงประสิทธิภาพของการรวมการเรียนรู้แบบสหพันธรัฐ โมเดลกำเนิด และ ความเป็นส่วนตัวที่แตกต่างกัน
การปรับเปลี่ยนในแบบของคุณ
การปรับเปลี่ยนในแบบของคุณในสภาพแวดล้อมของการเรียนรู้แบบสหพันธรัฐเป็นพื้นที่การวิจัยเชิงรุก เป้าหมายของการปรับเปลี่ยนในแบบของคุณคือการจัดเตรียมรูปแบบการอนุมานที่แตกต่างกันให้กับผู้ใช้ที่แตกต่างกัน มีแนวทางที่แตกต่างกันสำหรับปัญหานี้
แนวทางหนึ่งคือการให้ลูกค้าแต่ละรายปรับแต่งโมเดลส่วนกลางเดียว (ฝึกโดยใช้การเรียนรู้แบบสหพันธรัฐ) ด้วยข้อมูลในเครื่อง แนวทางนี้มีความเชื่อมโยงกับการเรียนรู้เมตา เช่น บทความ นี้ ตัวอย่างของวิธีการนี้มีให้ใน emnist_p13n_main.py
หากต้องการสำรวจและเปรียบเทียบกลยุทธ์การปรับเปลี่ยนในแบบของคุณ คุณสามารถ:
กำหนดกลยุทธ์การปรับให้เป็นส่วนตัวโดยใช้
tf.function
ที่เริ่มต้นจากโมเดลเริ่มต้น ฝึกฝนและประเมินโมเดลส่วนบุคคลโดยใช้ชุดข้อมูลในเครื่องของลูกค้าแต่ละราย ตัวอย่างได้รับโดยbuild_personalize_fn
กำหนด
OrderedDict
ที่แม็พชื่อกลยุทธ์กับกลยุทธ์การตั้งค่าส่วนบุคคลที่เกี่ยวข้อง และใช้เป็นอาร์กิวเมนต์personalize_fn_dict
ในtff.learning.build_personalization_eval
อีกแนวทางหนึ่งคือการหลีกเลี่ยงการฝึกอบรมแบบจำลองระดับโลกโดยสมบูรณ์โดยการฝึกอบรมส่วนหนึ่งของแบบจำลองทั้งหมดภายในพื้นที่ ตัวอย่างของแนวทางนี้อธิบายไว้ใน บล็อกโพสต์ นี้ วิธีการนี้ยังเชื่อมโยงกับการเรียนรู้เมตาอีกด้วย ดู เอกสาร นี้ หากต้องการสำรวจการเรียนรู้แบบสหพันธรัฐในพื้นที่บางส่วน คุณสามารถ:
ดูบทช่วย สอน สำหรับตัวอย่างโค้ดทั้งหมดที่ใช้ Federated Reconstruction และ แบบฝึกหัดติดตามผล
สร้างกระบวนการฝึกอบรมเฉพาะที่บางส่วนโดยใช้
tff.learning.reconstruction.build_training_process
การแก้ไขdataset_split_fn
เพื่อกำหนดพฤติกรรมของกระบวนการเอง