ภาพรวม
TFF เป็นเฟรมเวิร์กที่ขยายได้และมีประสิทธิภาพสำหรับการดำเนินการวิจัยการเรียนรู้แบบรวมศูนย์ (FL) โดยการจำลองการคำนวณแบบรวมศูนย์บนชุดข้อมูลพร็อกซีที่สมจริง หน้านี้อธิบายแนวคิดหลักและองค์ประกอบที่เกี่ยวข้องกับการจำลองการวิจัย รวมถึงคำแนะนำโดยละเอียดสำหรับการดำเนินการวิจัยประเภทต่างๆ ใน TFF
โครงสร้างทั่วไปของรหัสการวิจัยใน TFF
การจำลองการวิจัย FL ที่ใช้ใน TFF โดยทั่วไปประกอบด้วยตรรกะหลักสามประเภท
โค้ด TensorFlow แต่ละชิ้น ซึ่งโดยทั่วไปคือ
tf.function
ซึ่งห่อหุ้มตรรกะที่ทำงานในตำแหน่งเดียว (เช่น บนไคลเอนต์หรือบนเซิร์ฟเวอร์) โดยทั่วไปโค้ดนี้จะถูกเขียนและทดสอบโดยไม่มีการอ้างอิงtff.*
และสามารถนำกลับมาใช้ใหม่ได้ภายนอก TFF ตัวอย่างเช่น ลูปการฝึกอบรมไคลเอนต์ใน Federated Averaging ถูกนำมาใช้ในระดับนี้ตรรกะการจัดการแบบรวมของ TensorFlow Federated ซึ่งเชื่อมโยง
tf.function
แต่ละรายการจาก 1 เข้าด้วยกันโดยการรวมเข้าด้วยกันเป็นtff.tensorflow.computation
s จากนั้นจึงเรียบเรียงโดยใช้สิ่งที่เป็นนามธรรม เช่นtff.federated_broadcast
และtff.federated_mean
ภายในtff.federated_computation
ดูตัวอย่าง การเรียบเรียงสำหรับ Federated Averaging นี้สคริปต์ไดรเวอร์ภายนอกที่จำลองตรรกะการควบคุมของระบบ FL ที่ใช้งานจริง โดยเลือกไคลเอนต์จำลองจากชุดข้อมูล จากนั้นดำเนินการคำนวณแบบรวมศูนย์ที่กำหนดไว้ใน 2. บนไคลเอนต์เหล่านั้น ตัวอย่างเช่น โปรแกรมควบคุมการทดสอบ Federated EMNIST
ชุดข้อมูลการเรียนรู้แบบรวมศูนย์
TensorFlow แบบรวมศูนย์ โฮสต์ชุดข้อมูลหลายชุด ที่เป็นตัวแทนของลักษณะของปัญหาในโลกแห่งความเป็นจริงที่สามารถแก้ไขได้ด้วยการเรียนรู้แบบรวมศูนย์
ชุดข้อมูลประกอบด้วย:
สแต็คโอเวอร์โฟลว์ ชุดข้อมูลข้อความที่สมจริงสำหรับการสร้างแบบจำลองภาษาหรืองานการเรียนรู้ภายใต้การดูแล โดยมีผู้ใช้ที่ไม่ซ้ำกัน 342,477 ราย พร้อมด้วยตัวอย่าง (ประโยค) 135,818,730 ตัวอย่างในชุดการฝึกอบรม
สหพันธ์ EMNIST การประมวลผลล่วงหน้าแบบรวมศูนย์ของชุดข้อมูลอักขระและตัวเลข EMNIST โดยที่ไคลเอ็นต์แต่ละเครื่องสอดคล้องกับผู้เขียนที่แตกต่างกัน ชุดรถไฟทั้งชุดประกอบด้วยผู้ใช้ 3,400 รายพร้อมตัวอย่าง 671,585 รายการจาก 62 ป้ายกำกับ
เช็คสเปียร์ . ชุดข้อมูลข้อความระดับถ่านขนาดเล็กที่อิงจากผลงานทั้งหมดของ William Shakespeare ชุดข้อมูลประกอบด้วยผู้ใช้ 715 คน (ตัวละครในบทละครของเช็คสเปียร์) โดยแต่ละตัวอย่างจะสอดคล้องกับชุดบรรทัดที่ต่อเนื่องกันที่ตัวละครพูดในบทละครที่กำหนด
ซีฟาร์-100 . การแบ่งพาร์ติชันชุดข้อมูล CIFAR-100 แบบรวมศูนย์ระหว่างไคลเอนต์การฝึกอบรม 500 ตัวและไคลเอนต์ทดสอบ 100 ตัว ลูกค้าแต่ละรายมีตัวอย่างที่ไม่ซ้ำกัน 100 ตัวอย่าง การแบ่งพาร์ติชันเสร็จสิ้นในลักษณะที่จะสร้างความหลากหลายที่สมจริงยิ่งขึ้นระหว่างไคลเอนต์ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ API
ชุดข้อมูล Google Landmark v2 ชุดข้อมูลประกอบด้วยภาพถ่ายของสถานที่สำคัญต่างๆ ของโลก โดยรูปภาพจะจัดกลุ่มตามช่างภาพเพื่อให้มีการแบ่งพาร์ติชันข้อมูลแบบรวมศูนย์ ชุดข้อมูลมีให้เลือกสองแบบ: ชุดข้อมูลขนาดเล็กที่มีไคลเอนต์ 233 ตัวและอิมเมจ 23080 ภาพ และชุดข้อมูลขนาดใหญ่ที่มีไคลเอนต์ 1262 ตัวและอิมเมจ 164172 รูป
CelebA ชุดข้อมูลตัวอย่าง (รูปภาพและคุณลักษณะใบหน้า) ของใบหน้าคนดัง ชุดข้อมูลแบบรวมศูนย์มีตัวอย่างของคนดังแต่ละคนที่จัดกลุ่มไว้ด้วยกันเพื่อสร้างไคลเอ็นต์ มีลูกค้า 9343 ราย แต่ละรายมีตัวอย่างอย่างน้อย 5 ตัวอย่าง ชุดข้อมูลสามารถแบ่งออกเป็นกลุ่มฝึกและทดสอบโดยไคลเอนต์หรือตามตัวอย่าง
iNaturalist ชุดข้อมูลประกอบด้วยภาพถ่ายของสายพันธุ์ต่างๆ ชุดข้อมูลประกอบด้วย 120,300 ภาพสำหรับ 1,203 สปีชีส์ ชุดข้อมูลมีเจ็ดรสชาติให้เลือก หนึ่งในนั้นจัดกลุ่มตามช่างภาพและประกอบด้วยลูกค้า 9257 ราย ชุดข้อมูลที่เหลือจะถูกจัดกลุ่มตามตำแหน่งทางภูมิศาสตร์ที่ถ่ายภาพ ชุดข้อมูลทั้งหกรูปแบบนี้ประกอบด้วยไคลเอนต์ 11 - 3,606 ราย
การจำลองประสิทธิภาพสูง
แม้ว่าเวลานาฬิกาแขวนของ การจำลอง FL ไม่ใช่ตัวชี้วัดที่เกี่ยวข้องสำหรับการประเมินอัลกอริธึม (เนื่องจากฮาร์ดแวร์การจำลองไม่ได้เป็นตัวแทนของสภาพแวดล้อมการปรับใช้ FL จริง) ความสามารถในการรันการจำลอง FL ได้อย่างรวดเร็วถือเป็นสิ่งสำคัญสำหรับประสิทธิภาพการวิจัย ดังนั้น TFF จึงลงทุนอย่างมากในการให้บริการรันไทม์แบบเครื่องเดียวและหลายเครื่องที่มีประสิทธิภาพสูง เอกสารอยู่ระหว่างการพัฒนา แต่ในตอนนี้ โปรดดูคำแนะนำเกี่ยวกับ การจำลอง TFF ด้วยตัวเร่งความเร็ว และวิธีการใน การตั้งค่าการจำลองด้วย TFF บน GCP รันไทม์ TFF ประสิทธิภาพสูงถูกเปิดใช้งานตามค่าเริ่มต้น
TFF สำหรับการวิจัยสาขาต่างๆ
อัลกอริธึมการเพิ่มประสิทธิภาพแบบรวมศูนย์
การวิจัยเกี่ยวกับอัลกอริธึมการปรับให้เหมาะสมแบบรวมศูนย์สามารถทำได้หลายวิธีใน TFF ขึ้นอยู่กับระดับการปรับแต่งที่ต้องการ
มีการติดตั้งอัลกอริธึม Federated Averaging แบบสแตนด์อโลนขั้นต่ำ ไว้ที่นี่ โค้ดประกอบด้วย ฟังก์ชัน TF สำหรับการคำนวณเฉพาะที่ การคำนวณ TFF สำหรับการเรียบเรียง และ สคริปต์ไดรเวอร์ บนชุดข้อมูล EMNIST เป็นตัวอย่าง ไฟล์เหล่านี้สามารถปรับให้เหมาะกับการใช้งานที่กำหนดเองและการเปลี่ยนแปลงอัลกอริธึมได้อย่างง่ายดาย โดยทำตามคำแนะนำโดยละเอียดใน README
คุณสามารถดูการใช้งาน Federated Averaging แบบทั่วไปเพิ่มเติมได้ ที่นี่ การใช้งานนี้ช่วยให้สามารถใช้เทคนิคการปรับให้เหมาะสมที่ซับซ้อนมากขึ้น รวมถึงการใช้เครื่องมือเพิ่มประสิทธิภาพที่แตกต่างกันทั้งบนเซิร์ฟเวอร์และไคลเอนต์ สามารถดูอัลกอริธึมการเรียนรู้แบบรวมศูนย์อื่นๆ รวมถึงการจัดกลุ่มเคมีนแบบรวมศูนย์ ได้ ที่นี่
การบีบอัดการอัปเดตโมเดล
การบีบอัดการอัปเดตโมเดลที่สูญเสียไปอาจส่งผลให้ต้นทุนการสื่อสารลดลง ซึ่งอาจส่งผลให้เวลาการฝึกอบรมโดยรวมลดลงได้
หากต้องการทำซ้ำ รายงาน ล่าสุด โปรดดู โครงการวิจัยนี้ หากต้องการใช้อัลกอริธึมการบีบอัดแบบกำหนดเอง โปรดดูที่ comparison_methods ในโปรเจ็กต์สำหรับเส้นพื้นฐานเป็นตัวอย่าง และ บทช่วยสอน TFF Aggregators หากยังไม่คุ้นเคย
ความเป็นส่วนตัวที่แตกต่าง
TFF สามารถทำงานร่วมกับไลบรารี TensorFlow Privacy เพื่อเปิดใช้งานการวิจัยในอัลกอริธึมใหม่สำหรับการฝึกอบรมแบบรวมศูนย์สำหรับโมเดลที่มีความเป็นส่วนตัวที่แตกต่างกัน สำหรับตัวอย่างการฝึกอบรมกับ DP โดยใช้อัลกอริทึมและ ส่วนขยาย DP-FedAvg พื้นฐาน โปรดดู โปรแกรมควบคุมการทดสอบนี้
หากคุณต้องการใช้อัลกอริธึม DP แบบกำหนดเองและใช้กับการอัปเดตรวมของการหาค่าเฉลี่ยแบบรวมศูนย์ คุณสามารถใช้อัลกอริธึมค่าเฉลี่ย DP ใหม่เป็นคลาสย่อยของ tensorflow_privacy.DPQuery
และสร้าง tff.aggregators.DifferentiallyPrivateFactory
ด้วยอินสแตนซ์ของการสืบค้นของคุณ สามารถดูตัวอย่างการใช้ อัลกอริทึม DP-FTRL ได้ ที่นี่
GAN แบบรวมศูนย์ (อธิบาย ไว้ด้านล่าง ) เป็นอีกตัวอย่างหนึ่งของโครงการ TFF ที่ใช้ความเป็นส่วนตัวระดับผู้ใช้ที่แตกต่างกัน (เช่น ในโค้ดนี้ )
ความแข็งแกร่งและการโจมตี
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_computation
อีกวิธีหนึ่งคือการหลีกเลี่ยงการฝึกโมเดลระดับโลกโดยการฝึกส่วนหนึ่งของโมเดลในเครื่องทั้งหมด ตัวอย่างของแนวทางนี้ได้อธิบายไว้ใน โพสต์บนบล็อกนี้ แนวทางนี้ยังเชื่อมโยงกับการเรียนรู้เมตาด้วย ดู บทความนี้ หากต้องการสำรวจการเรียนรู้แบบสหพันธรัฐในพื้นที่บางส่วน คุณสามารถ:
ดู บทช่วยสอน เพื่อดูตัวอย่างโค้ดที่สมบูรณ์โดยใช้ Federated Restruction และ แบบฝึกหัดติดตามผล
สร้างกระบวนการฝึกอบรมในพื้นที่บางส่วนโดยใช้
tff.learning.reconstruction.build_training_process
โดยแก้ไขdataset_split_fn
เพื่อปรับแต่งพฤติกรรมของกระบวนการ