ภาพรวม
TFF เป็นเฟรมเวิร์กที่ขยายได้และมีประสิทธิภาพสำหรับการดำเนินการวิจัยแบบสมาพันธ์การเรียนรู้ (FL) โดยการจำลองการคำนวณแบบรวมศูนย์บนชุดข้อมูลพร็อกซีที่เหมือนจริง หน้านี้อธิบายแนวคิดหลักและองค์ประกอบที่เกี่ยวข้องกับการจำลองการวิจัย ตลอดจนคำแนะนำโดยละเอียดสำหรับการดำเนินการวิจัยประเภทต่างๆ ใน TFF
โครงสร้างทั่วไปของรหัสการวิจัยใน TFF
โดยทั่วไปแล้วการจำลอง FL การวิจัยที่ใช้ใน TFF จะประกอบด้วยตรรกะหลักสามประเภท
โค้ด TensorFlow แต่ละส่วน โดยทั่วไปคือ
tf.function
s ซึ่งสรุปตรรกะที่ทำงานในตำแหน่งเดียว (เช่น บนไคลเอ็นต์หรือบนเซิร์ฟเวอร์) โดยทั่วไปโค้ดนี้เขียนและทดสอบโดยไม่มีการอ้างอิงtff.*
และสามารถใช้ซ้ำได้นอก TFF ตัวอย่างเช่น ลูปการฝึกอบรมไคลเอ็นต์ใน Federated Averaging จะถูกนำไปใช้ที่ระดับนี้ตรรกะการเรียบเรียง TensorFlow Federated ซึ่งรวมเอา
tf.function
แต่ละรายการจาก 1 เข้าด้วยกันโดยการรวมเป็นtff.tf_computation
แล้วจัดการโดยใช้ abstractions เช่นtff.federated_broadcast
และtff.federated_mean
ภายในtff.federated_computation
ดูตัวอย่าง การประสานนี้สำหรับการหาค่าเฉลี่ยแบบรวมศูนย์สคริปต์ไดรเวอร์ภายนอกที่จำลองตรรกะการควบคุมของระบบ FL ที่ใช้งานจริง โดยเลือกไคลเอ็นต์จำลองจากชุดข้อมูล จากนั้นดำเนินการคำนวณแบบรวมศูนย์ที่กำหนดไว้ในข้อ 2 บนไคลเอนต์เหล่านั้น ตัวอย่างเช่น โปรแกรมควบคุมการทดลอง EMNIST แบบรวมศูนย์
ชุดข้อมูลการเรียนรู้แบบรวมศูนย์
TensorFlow federated โฮสต์ชุดข้อมูลหลายชุด ที่เป็นตัวแทนของลักษณะของปัญหาในโลกแห่งความเป็นจริงที่สามารถแก้ไขได้ด้วยการเรียนรู้แบบสมาพันธ์
ชุดข้อมูลประกอบด้วย:
StackOverflow . ชุดข้อมูลข้อความจริงสำหรับการสร้างแบบจำลองภาษาหรืองานการเรียนรู้ภายใต้การดูแล โดยมีผู้ใช้ที่ไม่ซ้ำกัน 342,477 รายพร้อมตัวอย่าง (ประโยค) 135,818,730 ตัวอย่างในชุดการฝึกอบรม
สหพันธ์เอ็มนิสต์ การประมวลผลล่วงหน้าแบบรวมศูนย์ของชุดข้อมูลอักขระและตัวเลขของ 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 ขึ้นอยู่กับระดับการปรับแต่งที่ต้องการ
การใช้งานอัลกอริทึม การหาค่าเฉลี่ยรวม แบบสแตนด์อโลนขั้นต่ำมีให้ ที่นี่ โค้ดประกอบด้วย ฟังก์ชัน TF สำหรับการคำนวณภายในเครื่อง การคำนวณ TFF สำหรับการประสาน และ สคริปต์ไดรเวอร์ ในชุดข้อมูล EMNIST เป็นตัวอย่าง ไฟล์เหล่านี้สามารถปรับให้เข้ากับแอปพลิเคชันที่กำหนดเองและการเปลี่ยนแปลงอัลกอริทึมตามคำแนะนำโดยละเอียดใน README
การใช้งานทั่วไปของ Federated Averaging สามารถพบได้ ที่นี่ การดำเนินการนี้ช่วยให้สามารถใช้เทคนิคการเพิ่มประสิทธิภาพที่ซับซ้อนมากขึ้น รวมถึงการใช้เครื่องมือเพิ่มประสิทธิภาพที่แตกต่างกันทั้งบนเซิร์ฟเวอร์และไคลเอ็นต์ อัลกอริทึมการเรียนรู้แบบสมาพันธ์อื่น ๆ รวมถึงการจัดกลุ่มค่าเฉลี่ย k แบบรวม อยู่ที่นี่
การบีบอัดการอัปเดตโมเดล
การสูญเสียการบีบอัดการอัปเดตโมเดลอาจทำให้ต้นทุนการสื่อสารลดลง ซึ่งส่งผลให้เวลาการฝึกอบรมโดยรวมลดลง
หากต้องการทำซ้ำ เอกสาร ล่าสุด โปรดดู โครงการวิจัยนี้ หากต้องการใช้อัลกอริทึมการบีบอัดแบบกำหนดเอง ให้ดูที่ การเปรียบเทียบวิธี ในโครงการสำหรับบรรทัดฐานเป็นตัวอย่าง และ บทช่วยสอน TFF Aggregators หากยังไม่คุ้นเคย
ความเป็นส่วนตัวที่แตกต่าง
TFF สามารถทำงานร่วมกันได้กับไลบรารี TensorFlow Privacy เพื่อเปิดใช้งานการวิจัยในอัลกอริทึมใหม่สำหรับการฝึกอบรมแบบรวมศูนย์ของโมเดลที่มีความเป็นส่วนตัวต่างกัน สำหรับตัวอย่างการฝึกกับ DP โดยใช้ อัลกอริทึม DP-FedAvg พื้นฐาน และ ส่วนขยาย โปรดดู ไดรเวอร์การทดสอบนี้
หากคุณต้องการใช้อัลกอริทึม DP ที่กำหนดเองและนำไปใช้กับการอัปเดตรวมของค่าเฉลี่ยแบบรวมศูนย์ คุณสามารถใช้ tff.aggregators.DifferentiallyPrivateFactory
tensorflow_privacy.DPQuery
เฉลี่ย DP ใหม่เป็นคลาสย่อยของ สามารถดูตัวอย่างการนำ อัลกอริทึม 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
อีกวิธีหนึ่งคือการหลีกเลี่ยงการฝึกอบรมโมเดลระดับโลกทั้งหมดโดยการฝึกอบรมส่วนหนึ่งของโมเดลทั้งหมดในพื้นที่ ตัวอย่างของวิธีการนี้ได้อธิบายไว้ใน บล็อกโพสต์นี้ แนวทางนี้ยังเชื่อมโยงกับการเรียนรู้เมตา ดู เอกสารนี้ หากต้องการสำรวจการเรียนรู้แบบสมาพันธรัฐในท้องถิ่นบางส่วน คุณสามารถ:
ดู บทช่วยสอน สำหรับตัวอย่างรหัสที่สมบูรณ์โดยใช้การสร้างใหม่แบบรวมศูนย์และ แบบฝึกหัดติดตามผล
สร้างกระบวนการฝึกอบรมในเครื่องบางส่วนโดยใช้
tff.learning.reconstruction.build_training_process
ปรับเปลี่ยนdataset_split_fn
เพื่อปรับแต่งลักษณะการทำงานของกระบวนการ