การใช้ TFF สำหรับการวิจัยการเรียนรู้แบบสหพันธรัฐ

ภาพรวม

TFF เป็นเฟรมเวิร์กที่มีความยืดหยุ่นและทรงพลังสำหรับการทำวิจัยการเรียนรู้แบบรวมศูนย์ (Federated Learning: FL) โดยการจำลองการคำนวณแบบรวมศูนย์บนชุดข้อมูลตัวแทนที่สมจริง หน้านี้อธิบายแนวคิดหลักและส่วนประกอบที่เกี่ยวข้องกับการจำลองงานวิจัย ตลอดจนคำแนะนำโดยละเอียดสำหรับการทำวิจัยประเภทต่างๆ ใน ​​TFF

โครงสร้างทั่วไปของโค้ดวิจัยใน TFF

การจำลอง FL สำหรับงานวิจัยที่ดำเนินการใน TFF โดยทั่วไปประกอบด้วยตรรกะหลักสามประเภท

  1. โค้ด TensorFlow แต่ละส่วน ซึ่งโดยทั่วไปคือ tf.function นั้น จะห่อหุ้มตรรกะที่ทำงานในตำแหน่งเดียว (เช่น บนไคลเอนต์หรือบนเซิร์ฟเวอร์) โค้ดเหล่านี้มักเขียนและทดสอบโดยไม่มีการอ้างอิงถึง tff.* และสามารถนำไปใช้ซ้ำได้นอก TFF ตัวอย่างเช่น ลูปการฝึกอบรมฝั่งไคลเอนต์ใน Federated Averaging นั้นถูกนำไปใช้ในระดับนี้

  2. ตรรกะการจัดการแบบรวมศูนย์ของ TensorFlow ซึ่งเชื่อมโยง tf.function แต่ละตัวจากข้อ 1 เข้าด้วยกันโดยการห่อหุ้มฟังก์ชันเหล่านั้นเป็น tff.tensorflow.computation แล้วจัดการการทำงานโดยใช้แนวคิดนามธรรม เช่น federated_language.federated_broadcast และ federated_language.federated_mean ภายใน federated_language.federated_computation ดูตัวอย่างเช่น การจัดการการทำงานนี้สำหรับการหาค่าเฉลี่ยแบบรวมศูนย์

  3. สคริปต์ไดรเวอร์ภายนอกที่จำลองตรรกะการควบคุมของระบบ FL ในการผลิต โดยเลือกไคลเอ็นต์จำลองจากชุดข้อมูล จากนั้นดำเนินการคำนวณแบบเฟเดอเรตที่กำหนดไว้ในข้อ 2 บนไคลเอ็นต์เหล่านั้น ตัวอย่างเช่น ไดรเวอร์การทดลอง EMNIST แบบเฟเดอเรต

ชุดข้อมูลการเรียนรู้แบบเฟเดอเรต

TensorFlow Federated มีชุดข้อมูลหลายชุด ที่แสดงถึงลักษณะของปัญหาในโลกแห่งความเป็นจริงที่สามารถแก้ไขได้ด้วยการเรียนรู้แบบเฟเดอเรต (Federated Learning)

ชุดข้อมูลประกอบด้วย:

  • StackOverflow คือ ชุดข้อมูลข้อความที่สมจริงสำหรับการสร้างแบบจำลองภาษาหรือการเรียนรู้แบบมีผู้กำกับดูแล โดยมีผู้ใช้ที่ไม่ซ้ำกัน 342,477 คน และตัวอย่าง (ประโยค) จำนวน 135,818,730 ตัวอย่างในชุดข้อมูลฝึกฝน

  • EMNIST แบบรวมศูนย์ (Federated EMNIST ) คือการประมวลผลล่วงหน้าแบบรวมศูนย์ของชุดข้อมูลตัวอักษรและตัวเลข EMNIST โดยที่แต่ละไคลเอ็นต์จะสอดคล้องกับนักเขียนที่แตกต่างกัน ชุดข้อมูลฝึกฝนทั้งหมดประกอบด้วยผู้ใช้ 3400 คน พร้อมตัวอย่าง 671,585 ตัวอย่างจาก 62 ป้ายกำกับ

  • เชกสเปียร์ ชุดข้อมูลข้อความระดับตัวอักษรขนาดเล็กที่สร้างขึ้นจากผลงานทั้งหมดของวิลเลียม เชกสเปียร์ ชุดข้อมูลประกอบด้วยผู้ใช้ 715 คน (ตัวละครในบทละครของเชกสเปียร์) โดยแต่ละตัวอย่างสอดคล้องกับชุดบทพูดต่อเนื่องกันของตัวละครนั้น ๆ ในบทละครแต่ละเรื่อง

  • CIFAR-100 คือ ชุดข้อมูล CIFAR-100 ที่ถูกแบ่งแบบกระจายศูนย์ออกเป็น 500 เครื่องสำหรับฝึกฝน และ 100 เครื่องสำหรับทดสอบ โดยแต่ละเครื่องมีตัวอย่างข้อมูลที่ไม่ซ้ำกัน 100 ตัวอย่าง การแบ่งส่วนนี้ทำขึ้นเพื่อสร้างความแตกต่างที่สมจริงมากขึ้นระหว่างเครื่องต่างๆ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ API

  • ชุดข้อมูล Google Landmark v2 ประกอบด้วยภาพถ่ายสถานที่สำคัญต่างๆ ทั่วโลก โดยภาพจะถูกจัดกลุ่มตามช่างภาพเพื่อให้ได้การแบ่งส่วนข้อมูลแบบรวมศูนย์ มีชุดข้อมูลให้เลือกสองแบบ: ชุดข้อมูลขนาดเล็กที่มีลูกค้า 233 รายและภาพ 23,080 ภาพ และชุดข้อมูลขนาดใหญ่ที่มีลูกค้า 1,262 รายและภาพ 164,172 ภาพ

  • CelebA คือชุดข้อมูลตัวอย่าง (ภาพและคุณลักษณะใบหน้า) ของใบหน้าคนดัง ชุดข้อมูลแบบรวมศูนย์นี้จัดกลุ่มตัวอย่างของคนดังแต่ละคนเข้าด้วยกันเพื่อสร้างเป็นลูกค้าหนึ่งราย มีลูกค้าทั้งหมด 9343 ราย แต่ละรายมีตัวอย่างอย่างน้อย 5 ตัวอย่าง ชุดข้อมูลสามารถแบ่งออกเป็นกลุ่มฝึกฝนและกลุ่มทดสอบได้ทั้งตามลูกค้าหรือตามตัวอย่าง

  • iNaturalist เป็นชุดข้อมูลที่มีรูปถ่ายของสัตว์หลากหลายชนิด ชุดข้อมูลนี้มีรูปภาพ 120,300 ภาพ สำหรับสัตว์ 1,203 ชนิด มีชุดข้อมูลให้เลือกใช้ 7 รูปแบบ รูปแบบหนึ่งจัดกลุ่มตามช่างภาพ และมีลูกค้า 9,257 ราย ส่วนอีก 6 รูปแบบที่เหลือจัดกลุ่มตามสถานที่ทางภูมิศาสตร์ที่ถ่ายภาพ โดยมีลูกค้าตั้งแต่ 11 ถึง 3,606 ราย

การจำลองประสิทธิภาพสูง

แม้ว่าเวลาจริงของ การจำลอง FL จะไม่ใช่ตัวชี้วัดที่เกี่ยวข้องกับการประเมินอัลกอริทึม (เนื่องจากฮาร์ดแวร์การจำลองไม่ได้เป็นตัวแทนของสภาพแวดล้อมการใช้งาน FL จริง) แต่ความสามารถในการเรียกใช้การจำลอง FL ได้อย่างรวดเร็วนั้นมีความสำคัญอย่างยิ่งต่อประสิทธิภาพการวิจัย ดังนั้น TFF จึงลงทุนอย่างมากในการจัดหารันไทม์ประสิทธิภาพสูงสำหรับเครื่องเดียวและหลายเครื่อง เอกสารประกอบกำลังอยู่ระหว่างการพัฒนา แต่ในขณะนี้ โปรดดูคำแนะนำเกี่ยวกับ การจำลอง TFF ด้วยตัวเร่งความเร็ว และคำแนะนำเกี่ยวกับ การตั้งค่าการจำลองด้วย TFF บน GCP รันไทม์ TFF ประสิทธิภาพสูงเปิดใช้งานโดยค่าเริ่มต้น

TFF สำหรับสาขาวิจัยต่างๆ

อัลกอริทึมการเพิ่มประสิทธิภาพแบบรวมศูนย์

การวิจัยเกี่ยวกับอัลกอริธึมการเพิ่มประสิทธิภาพแบบรวมศูนย์สามารถทำได้หลายวิธีใน TFF ขึ้นอยู่กับระดับการปรับแต่งที่ต้องการ

ในที่นี้ ได้จัดเตรียมตัวอย่างการใช้งานอัลกอริธึมการหาค่าเฉลี่ยแบบรวมศูนย์ (Federated Averaging ) ที่ใช้งานง่ายและเป็นอิสระ โค้ดประกอบด้วย ฟังก์ชัน TF สำหรับการคำนวณในระดับท้องถิ่น การคำนวณ TFF สำหรับการจัดการกระบวนการ และ สคริปต์ตัวขับเคลื่อน บนชุดข้อมูล EMNIST เป็นตัวอย่าง ไฟล์เหล่านี้สามารถปรับเปลี่ยนได้อย่างง่ายดายสำหรับการใช้งานที่กำหนดเองและการเปลี่ยนแปลงอัลกอริธึม โดยทำตามคำแนะนำโดยละเอียดใน ไฟล์ README

สามารถดูวิธีการใช้งาน Federated Averaging ที่ครอบคลุมมากขึ้นได้ ที่นี่ การใช้งานนี้อนุญาตให้ใช้เทคนิคการเพิ่มประสิทธิภาพที่ซับซ้อนยิ่งขึ้น รวมถึงการใช้ตัวเพิ่มประสิทธิภาพที่แตกต่างกันทั้งบนเซิร์ฟเวอร์และไคลเอ็นต์ อัลกอริทึมการเรียนรู้แบบเฟเดอเรตอื่นๆ รวมถึงการจัดกลุ่ม k-means แบบเฟเดอเรต สามารถดูได้ ที่นี่

การบีบอัดการอัปเดตโมเดล

การบีบอัดข้อมูลแบบสูญเสียรายละเอียดในการอัปเดตโมเดลสามารถช่วยลดต้นทุนการสื่อสาร ซึ่งจะส่งผลให้ลดเวลาการฝึกอบรมโดยรวมลงได้

หากต้องการทำซ้ำ งานวิจัย ล่าสุด โปรดดู โครงการวิจัยนี้ หากต้องการใช้งานอัลกอริทึมการบีบอัดแบบกำหนดเอง โปรดดู comparison_methods ในโครงการเพื่อดูตัวอย่างวิธีการพื้นฐาน และ บทช่วยสอน TFF Aggregators หากยังไม่คุ้นเคย

ความเป็นส่วนตัวแบบดิฟเฟอเรนเชียล

TFF สามารถทำงานร่วมกับไลบรารี TensorFlow Privacy เพื่อสนับสนุนการวิจัยเกี่ยวกับอัลกอริธึมใหม่สำหรับการฝึกโมเดลแบบเฟเดอเรตที่มีความเป็นส่วนตัวแบบดิฟเฟอเรนเชียล สำหรับตัวอย่างการฝึกด้วย DP โดยใช้ อัลกอริธึม DP-FedAvg พื้นฐาน และ ส่วนขยาย โปรดดู ไดรเวอร์การทดลองนี้

หากคุณต้องการใช้งานอัลกอริธึม DP แบบกำหนดเองและนำไปใช้กับการอัปเดตแบบรวมของการหาค่าเฉลี่ยแบบเฟเดอเรต คุณสามารถสร้างอัลกอริธึมค่าเฉลี่ย DP ใหม่เป็นคลาสย่อยของ tensorflow_privacy.DPQuery และสร้าง tff.aggregators.DifferentiallyPrivateFactory ด้วยอินสแตนซ์ของแบบสอบถามของคุณ ตัวอย่างการใช้งาน อัลกอริธึม DP-FTRL สามารถดูได้ ที่นี่

GAN แบบรวมศูนย์ (อธิบายไว้ ด้านล่าง ) เป็นอีกตัวอย่างหนึ่งของโครงการ TFF ที่นำเอาความเป็นส่วนตัวแบบแตกต่างระดับผู้ใช้มาใช้ (เช่น ในโค้ดนี้ )

ความทนทานและการโจมตี

TFF ยังสามารถใช้เพื่อจำลองการโจมตีแบบเจาะจงเป้าหมายต่อระบบการเรียนรู้แบบกระจายศูนย์และการป้องกันตามหลักความเป็นส่วนตัวแบบดิฟเฟอเรนเชียลที่กล่าวถึงในบทความ "คุณสามารถเจาะระบบการเรียนรู้แบบกระจายศูนย์ได้จริงหรือ? " โดยการสร้างกระบวนการวนซ้ำที่มีไคลเอ็นต์ที่อาจเป็นอันตราย (ดู build_federated_averaging_process_attacked ) ไดเร็กทอรี targeted_attack มีรายละเอียดเพิ่มเติม

  • สามารถนำอัลกอริธึมการโจมตีใหม่มาใช้ได้โดยการเขียนฟังก์ชันอัปเดตไคลเอ็นต์ ซึ่งเป็นฟังก์ชันของ Tensorflow ดูตัวอย่างได้ที่ ClientProjectBoost
  • สามารถนำระบบป้องกันใหม่มาใช้ได้โดยการปรับแต่ง 'tff.utils.StatefulAggregateFn' ซึ่งจะรวบรวมเอาต์พุตของไคลเอ็นต์เพื่อรับการอัปเดตทั่วโลก

สำหรับตัวอย่างสคริปต์สำหรับการจำลอง โปรดดูที่ emnist_with_targeted_attack.py

เครือข่ายปฏิปักษ์เชิงสร้างสรรค์

GANs เป็น รูปแบบการจัดการแบบรวมศูนย์ ที่น่าสนใจ ซึ่งแตกต่างจาก Federated Averaging มาตรฐานเล็กน้อย โดยประกอบด้วยเครือข่ายสองเครือข่ายที่แตกต่างกัน (ตัวสร้างและตัวจำแนก) แต่ละเครือข่ายได้รับการฝึกฝนด้วยขั้นตอนการปรับให้เหมาะสมของตนเอง

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

อีกแนวทางหนึ่งคือการหลีกเลี่ยงการฝึกโมเดลแบบทั่วโลกโดยสมบูรณ์ โดยการฝึกส่วนหนึ่งของโมเดลในระดับท้องถิ่นทั้งหมด ตัวอย่างของแนวทางนี้ได้อธิบายไว้ใน บทความบล็อกนี้ แนวทางนี้ยังเชื่อมโยงกับการเรียนรู้แบบเมตา (meta learning) ดูได้จาก เอกสารนี้