การทำให้ใช้งานได้

นอกเหนือจากการกำหนดการคำนวณแล้ว TFF ยังมีเครื่องมือสำหรับดำเนินการอีกด้วย แม้ว่าจุดสนใจหลักจะอยู่ที่การจำลอง แต่อินเทอร์เฟซและเครื่องมือที่เรามีให้นั้นมีความทั่วไปมากกว่า เอกสารนี้สรุปตัวเลือกสำหรับการปรับใช้กับแพลตฟอร์มประเภทต่างๆ

ภาพรวม

มีสองโหมดหลักในการปรับใช้สำหรับการคำนวณ TFF:

  • แบ็กเอนด์ดั้งเดิม เราจะอ้างถึงแบ็กเอนด์ว่าเป็น เนทีฟ หากสามารถตีความโครงสร้างวากยสัมพันธ์ของการคำนวณ TFF ตามที่กำหนดไว้ใน computation.proto แบ็กเอนด์ดั้งเดิมไม่จำเป็นต้องรองรับโครงสร้างหรือภาษาภายในทั้งหมด แบ็กเอนด์ดั้งเดิมต้องใช้อินเทอร์เฟซ ตัวดำเนินการ TFF มาตรฐานอย่างใดอย่างหนึ่ง เช่น tff.framework.Executor สำหรับการใช้งานด้วยโค้ด Python หรือเวอร์ชันที่ไม่ขึ้นกับภาษาของอินเทอร์เฟซที่กำหนดไว้ใน executor.proto ซึ่งเปิดเผยเป็นจุดสิ้นสุด gRPC

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

  • แบ็กเอนด์ที่ไม่ใช่เจ้าของภาษา แบ็กเอนด์ที่ไม่ใช่เจ้าของภาษา ตรงกันข้ามกับแบ็กเอนด์ดั้งเดิม ไม่สามารถตีความโครงสร้างการคำนวณ TFF ได้โดยตรง และจำเป็นต้องแปลงเป็น การนำเสนอเป้าหมาย อื่นที่แบ็กเอนด์เข้าใจ ตัวอย่างที่โดดเด่นของแบ็กเอนด์ดังกล่าวคือคลัสเตอร์ Hadoop หรือแพลตฟอร์มที่คล้ายกันสำหรับไปป์ไลน์ข้อมูลคงที่ เพื่อให้การคำนวณถูกปรับใช้กับแบ็กเอนด์ดังกล่าว จะต้องถูก แปลง ก่อน (หรือ คอมไพล์ ) ขึ้นอยู่กับการตั้งค่า ผู้ใช้สามารถทำได้อย่างโปร่งใส (เช่น แบ็กเอนด์ที่ไม่ใช่เจ้าของภาษาสามารถรวมไว้ในอินเทอร์เฟซตัวดำเนินการมาตรฐาน เช่น tff.framework.Executor ที่ทำการแปลงภายใต้ประทุน) หรือสามารถเปิดเผยเป็น เครื่องมือที่ช่วยให้ผู้ใช้สามารถแปลงการคำนวณหรือชุดการคำนวณด้วยตนเองเป็นการแสดงเป้าหมายที่เหมาะสมที่เข้าใจโดยคลาสแบ็กเอนด์เฉพาะ โค้ดที่รองรับแบ็กเอนด์ที่ไม่ใช่เนทีฟบางประเภทสามารถพบได้ในเนมสเปซ tff.backends ในขณะที่เขียนบทความนี้ ประเภทการสนับสนุนเพียงประเภทเดียวของแบ็กเอนด์ที่ไม่ใช่เจ้าของภาษาคือคลาสของระบบที่สามารถดำเนินการ MapReduce รอบเดียวได้

แบ็กเอนด์ดั้งเดิม

รายละเอียดเพิ่มเติมในเร็ว ๆ นี้

แบ็กเอนด์ที่ไม่ใช่เจ้าของภาษา

แผนที่ลด

รายละเอียดเพิ่มเติมในเร็ว ๆ นี้