Path: blob/master/site/ja/federated/federated_core.md
25115 views
ãã§ãã¬ãŒãããã³ã¢
ãã®ããã¥ã¡ã³ãã§ã¯ããã§ãã¬ãŒãããã©ãŒãã³ã°ã®åºç€ãšããŠæ©èœãã TFF ã®ã³ã¢ã¬ã€ã€ãŒãšãå¯èœæ§ã®ããå°æ¥ã®éåŠç¿åãã§ãã¬ãŒãããã¢ã«ãŽãªãºã ã説æããŸãã
ãã§ãã¬ãŒãããã³ã¢ã®ç°¡åãªèª¬æã«ã€ããŠã以äžã®ãã¥ãŒããªã¢ã«ããèªã¿ãã ããããã®ãã¥ãŒããªã¢ã«ã§ã¯ãäŸã䜿ã£ãŠããããã®åºæ¬æŠå¿µã玹ä»ããåçŽãªãã§ãã¬ãŒãããã¢ãã¬ãŒãžã³ã°ãã£ãããªãºã ã®æ§é ããæé ã远ã£ãŠå®æŒããŠããŸãã
ãŸãããã§ãã¬ãŒãããã©ãŒãã³ã°ãšãç»ååé¡ããã³ããã¹ãçæã«é¢ããé¢é£ãã¥ãŒããªã¢ã«ã«ãæ £ããŠããããšããå§ãããŸãããã§ãã¬ãŒãããã©ãŒãã³ã°ã« Federated Core APIïŒFC APIïŒã䜿çšãããšããã®ã¬ã€ã€ãŒã®èšèšã§è¡ãããã€ãã®éžæã«é¢ããéèŠãªã³ã³ããã¹ããåŸãããšãã§ããŸãã
æŠèŠ
ç®æšãçšéãããã³ã¹ã³ãŒã
ãã§ãã¬ãŒãããã³ã¢ïŒFCïŒã¯ã忣èšç®ãã€ãŸãããããããããŒã«ã«ã§éèŠãªåŠçãè¡ããäœæ¥ã®ããåãããããã¯ãŒã¯ã§è¡ãè€æ°ã®ã³ã³ãã¥ãŒã¿ïŒæºåž¯é»è©±ãã¿ãã¬ãããçµã¿èŸŒã¿ããã€ã¹ããã¹ã¯ãããã³ã³ãã¥ãŒã¿ãã»ã³ãµãŒãããŒã¿ããŒã¹ãµãŒããŒãªã©ïŒã䜿çšããèšç®ãå®è£ ããããã®ããã°ã©ãã³ã°ç°å¢ãšããŠæãããçè§£ãããŠããŸãã
ã忣ããšããèšèã¯éåžžã«äžè¬çã§ãTFF ã¯ãååšãããããã忣ã¢ã«ãŽãªãºã ãã¿ãŒã²ããããŠã¯ããªããããäžè¬æ§ã«å£ãããã§ãã¬ãŒãããã³ã³ãã¥ããŒã·ã§ã³ããšããèšèã§ãåã®ãã¬ãŒã ã¯ãŒã¯ã§è¡šçŸã§ããã¢ã«ãŽãªãºã ã®çš®é¡ã説æããŠããŸãã
å šãæ£åŒã«ãã§ãã¬ãŒãããã³ã³ãã¥ããŒã·ã§ã³ãšããèšèãå®çŸ©ããã®ã¯ããã®ããã¥ã¡ã³ãã®è¶£æšããå€ããŠããŸããŸãããæ°ãã忣ååŠç¿ã¢ã«ãŽãªãºã ã説æããç ç©¶çºè¡šã§ãç䌌ã³ãŒãã§è¡šçŸãããã¢ã«ãŽãªãºã ã®çš®é¡ãšèãããšããã§ãããã
FC ã®ç®æšã¯ãèŠçŽãããšãç䌌ã³ãŒãã§ã¯ãªãã倿§ãªã¿ãŒã²ããç°å¢ã§å®è¡å¯èœãªããã°ã©ã ããžãã¯ã®åæ§ã«ã³ã³ãã¯ããªè¡šçŸããåæ§ã®ç䌌ã³ãŒãã®ãããªã¬ãã«ã®æœè±¡åã§å®çŸããããšã§ãã
FC ã衚çŸããããã«èšèšãããŠããã¢ã«ãŽãªãºã ã®çš®é¡ã®äž»ãªæ±ºå®çãªç¹æ§ã¯ãã·ã¹ãã ã®èŠçŽ ã®ã¢ã¯ã·ã§ã³ãéåçã«èšè¿°ãããŠããããšã§ãããããã£ãŠãããŒã«ã«ã§ããŒã¿ã倿ããåããã€ã¹ããšããã®çµæããããŒããã£ã¹ããåéããŸãã¯éèšããäžå€®ã³ãŒãã£ããŒã¿ã«ãã£ãŠèª¿æŽããããã€ã¹ã«ã€ããŠèšåããåŸåã«ãããŸãã
TFF ã¯ãåçŽãªã¯ã©ã€ã¢ã³ããµãŒããŒã¢ãŒããã¯ãã£ãè¶ ããããããã«èšèšãããŠã¯ããŸãããéååŠçã®æŠå¿µãåºæ¬ãšããŠããŸããããã¯ããã§ãã¬ãŒãããã©ãŒãã³ã°ãšãããã¯ã©ã€ã¢ã³ãããã€ã¹ã®ç®¡çäžã®ãŸãŸãšãªãããã©ã€ãã·ãŒã®çç±ã§äžå€®ãã±ãŒã·ã§ã³ã«ç°¡åã«ã¯ããŠã³ããŒããããªãæœåšçã«æ©å¯ãªããŒã¿ã§ã®èšç®ããµããŒãããããã«ããšããšèšèšãããæè¡ã TFF ã®èµ·æºã§ããããã§ãããã®ãããªã·ã¹ãã ã®åã¯ã©ã€ã¢ã³ãã¯ãã·ã¹ãã ã«ãã£ãŠããŒã¿ãšåŠçèœåãçµæã®èšç®ã«äœ¿çšããŸããïŒäžè¬çã«ããã¹ãŠã®æ§æèŠçŽ ã®å€ãšããŠæåŸ ããçµæïŒãåã¯ã©ã€ã¢ã³ãã®ãã©ã€ãã·ãŒãšå¿åæ§ã®ä¿è·ã«ãåªããŠããŸãã
ãããã£ãŠã忣èšç®åãã®ã»ãšãã©ã®ãã¬ãŒã ã¯ãŒã¯ã¯åã
ã®æ§æèŠçŽ ã®èгç¹ãã€ãŸããã€ã³ãããŒãã€ã³ãã®ã¡ãã»ãŒãžäº€æã®ã¬ãã«ã§åŠçã衚çŸããããã«èšèšãããŠãããæ§æèŠçŽ ã®ããŒã«ã«ã®ç¶æ
ã®çžäºäŸåã¯åä¿¡ã¡ãã»ãŒãžãšéä¿¡ã¡ãã»ãŒãžã«ãã£ãŠå€åããŸãããTFF
ã®ãã§ãã¬ãŒãããã³ã¢ã¯ãã°ããŒãã«ã·ã¹ãã å
šäœã®èгç¹ïŒMapReduce ãªã©ã«é¡äŒŒïŒã§ã·ã¹ãã ã®åäœã説æããããã«èšèšãããŠããŸãã
çµæãšããŠãæ±çšã®åæ£ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãsend ã receive ãšãã£ãæŒç®ããã«ãã£ã³ã°ãããã¯ãšããŠæäŸããããšããããŸãããFC ã¯ãåçŽãªåæ£åãããã³ã«ãã«ãã»ã«åãã tff.federated_sum
ãtff.federated_reduce
ããŸã㯠tff.federated_broadcast
ãªã©ã®ãã«ãã£ã³ã°ãããã¯ãæäŸããŠããŸãã
èšèª
Python ã€ã³ã¿ãŒãã§ãŒã¹
TFF ã¯ããã§ãã¬ãŒãããã³ã³ãã¥ããŒã·ã§ã³ã®è¡šçŸã«å
éšèšèªã䜿çšããŸãããã®æ§æã¯ãcomputation.proto ã®ã·ãªã¢ã«åå¯èœãªè¡šçŸã«ãã£ãŠå®çŸ©ãããŠããŸãããã ããäžè¬çã«ãFC API ã®ãŠãŒã¶ãŒããã®èšèªãçŽæ¥æäœããå¿
èŠã¯ãããŸãããèšç®ãå®çŸ©ããæ¹æ³ãšããŠããã®èšèªãã©ããã³ã°ããŠãã Python APIïŒtff
åå空éïŒãæäŸãããŠããŸãã
å
·äœçã«ã¯ãTFF ã¯ãã³ã¬ãŒãããã颿°ã®æ¬æããã¬ãŒã¹ã㊠TFF ã®èšèªã§ã·ãªã¢ã«å衚çŸãçæãã tff.federated_computation
ãšãã£ã Python 颿°ãã³ã¬ãŒã¿ãæäŸããŠããŸããtff.federated_computation
ã§ãã³ã¬ãŒãããã颿°ã¯ãããã£ãã·ãªã¢ã«å衚çŸã®ãã£ãªã¢ãšããŠæ©èœããå¥ã®èšç®ã®æ¬æã«ãã«ãã£ã³ã°ãããã¯ãšããŠçµã¿èŸŒã¿ãåŒã³åºãæã«ãªã³ããã³ãã§å®è¡ããããšãã§ããŸãã
次ã¯ãäžäŸã§ãããã®ä»ã®äŸã¯ã«ã¹ã¿ã ã¢ã«ãŽãªãºã ãã¥ãŒããªã¢ã«ãã芧ãã ããã
é Eager ã® TensorFlow ã«æ
£ããŠãããŠãŒã¶ãŒã¯ããã®ã¢ãããŒãã TensorFlow ã°ã©ããå®çŸ©ãã Python ã³ãŒãã®ã»ã¯ã·ã§ã³ã§ tf.add
ãŸã㯠tf.reduce_sum
ãªã©ã®é¢æ°è·¯äœ¿çšãã Python ã³ãŒãã®æžãæ¹ã«é¡äŒŒããŠããããšã«æ°ã¥ãã§ããããã³ãŒããæè¡çã« Python ã§è¡šçŸãããŠãããšã¯ããããã®ç®çã¯ãTensorFlow ã©ã³ã¿ã€ã ãå
éšçã«å®è¡ã§ãããPython ã³ãŒãã§ã¯ãªããã°ã©ãã§ãããæ ¹åºã® tf.Graph
ã®ã·ãªã¢ã«åå¯èœè¡šçŸãæ§ç¯ããããšã«ãããŸããåæ§ã«ã ãã§ãã¬ãŒãããæŒç®ã get_average_temperature
ã衚çŸãããã§ãã¬ãŒãããã³ã³ãã¥ããŒã·ã§ã³ã«æ¿å
¥ãããšããŠãtff.federated_mean
ãæããããšãã§ããŸãã
FC ãèšèªãå®çŸ©ããçç±ã®äžéšã¯ãäžè¿°ã®ããã«ããã§ãã¬ãŒãããã³ã³ãã¥ããŒã·ã§ã³ã忣åãããéåçãªåäœãæå®ããããããã®ããžãã¯ãããŒã«ã«ã§ã¯ãªããšããäºå®ã«é¢ä¿ããŠããŸãã ããšãã°ãTFF ã¯ãããã¯ãŒã¯å ã®ããŸããŸãªå Žæã«ååšããå¯èœæ§ã®ããæŒç®åãå ¥åãããã³åºåãæäŸããŸãã
ããã«ã¯ãåæ£ã®æŠå¿µãæããèšèªãšåã·ã¹ãã ãå¿ èŠã§ãã
åã·ã¹ãã
ãã§ãã¬ãŒãããã³ã¢ã«ã¯ã次ã®åã«ããŽãªããããŸãããããã®åã説æããããã«ãåã³ã³ã¹ãã©ã¯ã¿ã瀺ããã³ã³ãã¯ããªè¡šèšã玹ä»ããŸããããã¯ãèšç®ãšæŒç®åã®åããããããã説æããŠããŸãã
ãŸããæ¢åã®äž»èŠèšèªã«èŠãããåã«ããŽãªã«é¡äŒŒããã«ããŽãªãã説æããŸãã
ãã³ãœã«åïŒ
tff.TensorType
ïŒãTensorFlow ãšåæ§ã«ãdtype
ãšshape
ããããŸããå¯äžã®éãã¯ããã®åã®ãªããžã§ã¯ãã¯ãTensorFlow æŒç®ã®åºåã衚ã Python ã®tf.Tensor
ã€ã³ã¹ã¿ã³ã¹ã«éããããããšãã°åæ£éçŽãããã³ã«ã®åºåãšããŠçæãããããŒã¿ã®ãŠããããå«ãããšããããšãããšããã§ãããã®ãããTFF ãã³ãœã«åã¯åã«ãPython ãŸã㯠TensorFlow ã®ãã®ãããªåã®å ·äœçãªç©ç衚çŸã®æœè±¡ããŒãžã§ã³ã§ããTFF ã®
TensorTypes
ã¯ãTensorFlow ããã圢ç¶ã® (éçãª) åŠçãå³å¯ã«ããããšãã§ããŸããããšãã°ãTFF ã®åã·ã¹ãã ã¯ãéæ°ãäžæãªãã³ãœã«ããåãdtype
ã®ä»ã®ãã³ãœã«ããå²ãåœãŠå¯èœãšããŠæ±ããŸãããåºå®éæ°ã®ãã³ãœã«ã«å²ãåœãŠãããšã¯ã§ããŸããããã®åŠçã«ãããTFF ãæå¹ãšããŠåãå ¥ããèšç®ãããå³å¯ã«ãªããŸãããç¹å®ã®å®è¡æã®å€±æãé²ãããšãã§ããŸãïŒããšãã°ãéæ°ãäžæãªãã³ãœã«ãèŠçŽ æ°ãæ£ãããªã圢ç¶ã«å€æŽããããšããå Žåãªã©ïŒããã³ãœã«åã®ã³ã³ãã¯ã衚èšã¯ã
dtype
ãŸãã¯dtype[shape]
ã§ããããšãã°ãint32
ãšint32[10]
ã¯ãããããæŽæ°ãš int ãã¯ãã«ã®åã§ããã·ãŒã±ã³ã¹åïŒ
tff.SequenceType
ïŒãTensorFlow ã®tf.data.Dataset
ãšããå ·è±¡æŠå¿µã«çžåœãã TFF ã®æœè±¡åã§ããã·ãŒã±ã³ã¹ã®èŠçŽ ã¯é 次æ¶è²»ãããè€éãªåãå«ããããšãã§ããŸããã·ãŒã±ã³ã¹åã®ã³ã³ãã¯ã衚èšã¯
T*
ã§ãT
ã¯èŠçŽ ã®åãæããŸããããšãã°ãint32*
ã¯ãæŽæ°ã®ã·ãŒã±ã³ã¹ã§ããååä»ãã¿ãã«åïŒ
tff.StructType
ïŒãååãã€ããŠãããåŠãã«ããããããäºåã«å®çŸ©ãããæ°ã®ãå ·äœçãªåãæã€èŠçŽ ãæã€ãã¿ãã«ããã³ãã£ã¯ã·ã§ããªã®ãããªæ§é ãæ§ç¯ãã TFF ã®æ¹æ³ã§ããTFF ã®ååä»ãã¿ãã«ã®æŠå¿µã¯ãPython ã®åŒæ°ã¿ãã«ãšåçã®æœè±¡åãã€ãŸãããã¹ãŠã§ã¯ãªãäžéšãååä»ãã§ãäžéšãå®äœçœ®ã«ããèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ãå«ãç¹ãéèŠã§ããååä»ãã¿ãã«ã®ã³ã³ãã¯ã衚èšã¯
<n_1=T_1, ..., n_k=T_k>
ã§ãn_k
ã¯ãªãã·ã§ã³ã®èŠçŽ åãT_k
ã¯èŠçŽ ã®åã§ããããšãã°ã<int32,int32>
ã¯ååä»ãã§ãªãæŽæ°ãã¢ã®ã³ã³ãã¯ã衚èšã§ã<X=float32,Y=float32>
ã¯ãå¹³é¢ã®ç¹ã衚ãååä»ãã®X
ãšY
ã®æµ®åå°æ°ç¹æ°ã®ã³ã³ãã¯ã衚èšã§ããã¿ãã«ã¯ãã¹ããããã ãã§ãªããã»ãã®åãšæ··åšããããšãã§ããŸããããšãã°ã<X=float32,Y=float32>*
ã¯ãç¹ã®ã·ãŒã±ã³ã¹ã®ã³ã³ãã¯ã衚èšã§ãã颿°åïŒ
tff.FunctionType
ïŒãTFF ã¯é¢æ°åããã°ã©ãã³ã°ãã¬ãŒã ã¯ãŒã¯ã§ã颿°ã¯ç¬¬äžçŽã®å€ãšããŠæ±ãããŸãã颿°ã«ã¯æå€§ 1 ã€ã®åŒæ°ããããã¡ããã© 1 ã€ã®çµæãè¿ããŸãã颿°åã®ã³ã³ãã¯ã衚èšã¯
(T -> U)
ã§ãT
ã¯åŒæ°ã®åãU
ã¯çµæã®åã§ããããåŒæ°ããªãå Žåã¯( -> U)
ã§ãïŒãã ããåŒæ°ç¡ã颿°ã¯ãã»ãŒ Python ã¬ãã«ã§ã®ã¿ååšããçž®éããæŠå¿µã§ãïŒãããšãã°ã(int32* -> int32)
ã¯ãæŽæ°ã®ã·ãŒã±ã³ã¹ãšåäžã®æŽæ°å€ã«çž®å°ãã颿°ã®çš®é¡ã®è¡šèšã§ãã
次ã®åã¯ãTFF èšç®ã®åæ£åã·ã¹ãã æŠå¿µã解決ããŸãããããã®æŠå¿µã¯ TFF åºæã®ãã®ã§ããåŸåã«ããããã説æãäŸãããã«å¿ èŠãªå Žåã¯ãã«ã¹ã¿ã ã¢ã«ãŽãªãºã ãã¥ãŒããªã¢ã«ãåç §ããããšããå§ãããŸãã
é 眮åããã®åã¯ãããªã㯠API ã§ã¯ãªãããã®åã®å®æ°ãšããŠæããããšã®ã§ãã
tff.SERVER
ãštff.CLIENTS
ãšãã 2 ã€ã®ãªãã©ã«ã®åœ¢æ ã§å ¬éãããŠããŸããçŸåšã¯å éšçã«äœ¿çšãããŸãããå°æ¥ã®ãªãªãŒã¹ã§ãããªã㯠API ã«å°å ¥ãããäºå®ã§ãããã®åã®ã³ã³ãã¯ã衚èšã¯ãplacement
ã§ããplacement ã¯ãç¹å®ã®åœ¹å²ãæããã·ã¹ãã æ§æèŠçŽ ã®éåã衚ããŸããåæã®ãªãªãŒã¹ã¯ãã¯ã©ã€ã¢ã³ããµãŒããŒã®èšç®ãã¿ãŒã²ãããšããŠãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã® 2 ã€ã®æ§æèŠçŽ ã°ã«ãŒãããããŸãïŒãµãŒããŒã¯ã·ã³ã°ã«ãã³ã°ã«ãŒããšããŠèããããšãã§ããŸãïŒããã ãããã粟巧ãªã¢ãŒããã¯ãã£ã§ã¯ãæ§ã ãªçš®é¡ã®éèšã宿œãããããµãŒããŒãŸãã¯ã¯ã©ã€ã¢ã³ãã®ããããã䜿çšãã以å€ã®ããŒã¿å§çž®/è§£åã䜿çšããããã«ããã£ã¢ã·ã¹ãã ã®äžéã¢ã°ãªã²ãŒã¿ãŒãªã©ã®åœ¹å²ããããŸãã
placement ã®è¡šèšãå®çŸ©ããã®ã¯ãäž»ã«ããã§ãã¬ãŒãããåãå®çŸ©ããããã®åºç€ãšããã®ãç®çã§ãã
ãã§ãã¬ãŒãããåïŒ
tff.FederatedType
ïŒããã§ãã¬ãŒãããåã®å€ã¯ãç¹å®ã® placementïŒtff.SERVER
ãŸãã¯tff.CLIENTS
ãªã©ïŒã«ãã£ãŠå®çŸ©ãããã·ã¹ãã æ§æèŠçŽ ã®ã°ã«ãŒãããã¹ãããå€ã§ãããã§ãã¬ãŒãããå㯠placement å€ïŒãããã£ãŠäŸååïŒãæ§æã¡ã³ããŒã®åïŒåæ§æèŠçŽ ãããŒã«ã«ã«ã©ã®çš®ã®ã³ã³ãã³ãããã¹ãããŠãããïŒãããã³ãã¹ãŠã®æ§æèŠçŽ ãåãé ç®ãããŒã«ã«ã«ãã¹ãããŠããããæå®ãã远å ã®ãããall_equal
ã«ãã£ãŠå®çŸ©ãããŠããŸããå
T
ã®é ç®ïŒã¡ã³ããŒèŠçŽ ïŒãå«ã¿ããããããã°ã«ãŒãïŒplacementïŒG
ã«ãã£ãŠãã¹ããããŠããå€ã®ãã§ãã¬ãŒãããåã®ã³ã³ãã¯ã衚èšã¯ãall_equal
ããããèšå®ãããŠããT@G
ãŸãã¯èšå®ãããŠããªã{T}@G
ã§ããæ¬¡ã«äŸã瀺ããŸãã
{ int32}@CLIENTS
ã¯ãã¯ã©ã€ã¢ã³ãããã€ã¹ããšã«æœåšçã«ç°ãªãäžé£ã®æŽæ°å€ã§æ§æããããã§ãã¬ãŒãããåã®å€ã衚ããŸãããããã¯ãŒã¯ã®è€æ°ã®å Žæã«çŸããããŒã¿ã®è€æ°ã®é ç®ãå«ãåäžã®ãã§ãã¬ãŒãããåã®å€ã«ã€ããŠèšåããŠãããšããã«æ³šæããŠãã ãããããã¯ãããããã¯ãŒã¯ã次å ãæã€ããçš®ã®ãã³ãœã«ãšããŠèããããšãã§ããŸãããã ããTFF ã§ã¯ãã§ãã¬ãŒãããåã®å€ã®ã¡ã³ããŒèŠçŽ ã«ã©ã³ãã ã«ã¢ã¯ã»ã¹ããããšãã§ããªããããå®å šã«é¡æ¯ã§ããããã§ã¯ãããŸããã{<X=float32,Y=float32>*}@CLIENTS
ã¯ãã¯ã©ã€ã¢ã³ãããã€ã¹åœãã 1 ã€ã®ã·ãŒã±ã³ã¹ãšããŠãXY
座æšã®è€æ°ã®ã·ãŒã±ã³ã¹ããæãããã§ãã¬ãŒãããããŒã¿ã»ããã®å€ã衚ããŸãã<weights=float32[10,5],bias=float32[5]>@SERVER
ã¯ããµãŒããŒã®éã¿ãšãã€ã¢ã¹ãã³ãœã«ã®ååä»ãã¿ãã«ã衚ããŸããæ³¢æ¬åŒ§ã䜿çšããŠããªããããããã¯ãall_equal
ããããèšå®ãããŠããããšã瀺ããŸããã€ãŸããåäžã®ã¿ãã«ã®ã¿ããããšããããšã§ãïŒãã®å€ããã¹ãããŠããã¯ã©ã¹ã¿å ã«ååšãããµãŒããŒã¬ããªã«ã®æ°ã«é¢ä¿ãããŸããïŒã
ãã«ãã£ã³ã°ãããã¯
ãã§ãã¬ãŒãããã³ã¢ã®èšèªã¯ãã©ã ãèšç®ã«èŠçŽ ãããã€ã远å ãã圢æ ã®èšèªã§ãã
ãããªã㯠API ã§çŸåšå ¬éãããŠããæ¬¡ã®ããã°ã©ãã³ã°æœè±¡ãæäŸããŠããŸãã
TensorFlow èšç®ïŒ
tff.tf_computation
ïŒãtff.tf_computation
ãã³ã¬ãŒã¿ã䜿çšããŠãTFF ã§åå©çšå¯èœãªã³ã³ããŒãã³ããšããŠã©ããã³ã°ãããŠãã TensorFlow ã³ãŒãã®ã»ã¯ã·ã§ã³ã§ããåžžã«é¢æ°åããããTensorFlow ã®é¢æ°ãšã¯ç°ãªã£ãŠãæ§é åãã©ã¡ãŒã¿ãåããã·ãŒã±ã³ã¹åã®æ§é çµæãè¿ãããšãã§ããŸããæ¬¡ã«ã
tf.data.Dataset.reduce
æŒç®åã䜿çšããŠæŽæ°ã®åãèšç®ãã(int32* -> int)
åã® TF èšç®ã®äžäŸã瀺ããŸããçµã¿èŸŒã¿é¢æ°ãŸãã¯ãã§ãã¬ãŒãããæŒç®åïŒ
tff.federated_...
ïŒãFC API ã®ãã«ã¯ãæ§æããtff.federated_sum
ãtff.federated_broadcast
ãªã©ã®é¢æ°ã®ã©ã€ãã©ãªã§ãããã®ã»ãšãã©ã®ãã«ã¯ã¯ãTFF ãšäœ¿çšããããã®åæ£åéä¿¡æŒç®åã衚ããŸãããããã¯ãçµã¿èŸŒã¿é¢æ°ãšããçšåºŠåæ§ã«ãTFF ãçè§£ããããäœã¬ãã«ã®ã³ãŒãã«ã³ã³ãã€ã«ããããªãŒãã³ãšã³ãã®æ¡åŒµå¯èœãªæŒç®åã»ããã§ãããããçµã¿èŸŒã¿é¢æ°ãšåŒãã§ããŸãã
ãããã®ã»ãšãã©ã®æŒç®åã«ã¯ããã§ãã¬ãŒãããåã®ãã©ã¡ãŒã¿ãšçµæããããã»ãšãã©ã倿§ãªããŒã¿ã«é©çšã§ãããã³ãã¬ãŒãã§ãã
ããšãã°ã
tff.federated_broadcast
ã¯ã颿°åT@SERVER -> T@CLIENTS
ã®ãã³ãã¬ãŒãæŒç®åãšããŠèããããšãã§ããŸããã©ã ãåŒïŒ
tff.federated_computation
ïŒãTFF ã®ã©ã ãåŒã¯ãPython ã®lambda
ãŸãã¯def
ã«çžåœããŸãããã©ã¡ãŒã¿åãããã³ãã®ãã©ã¡ãŒã¿ãžã®åç §ãå«ãæ¬æïŒåŒïŒã§æ§æãããŠããŸããPython ã³ãŒãã§ã¯ãPython 颿°ã
tff.federated_computation
ã§ãã³ã¬ãŒãããåŒæ°ãå®çŸ©ããããšã§äœæãããŸããæ¬¡ã¯ãåè¿°ã®ã©ã ãåŒã®äŸã§ãã
é 眮ãªãã©ã«ãçŸæç¹ã§ã¯ã
tff.SERVER
ãštff.CLIENTS
ã®ã¿ããåçŽãªã¯ã©ã€ã¢ã³ããµãŒããŒèšç®ãå®çŸ©ããããšãã§ããŸãã颿°åŒã³åºãïŒ
__call__
ïŒã颿°åã®ãããã®ã¯ãæšæºç㪠Python__call__
æ§æã䜿ã£ãŠåŒã³åºãããšãã§ããŸããåŒã³åºãã¯åŒã§ãããåŒã³åºããã颿°ã®çµæã®åãšåãåã§ããæ¬¡ã«äŸã瀺ããŸãã
add_up_integers(x)
ã¯ãåè¿°ã§åŒæ°x
ã«å®çŸ©ãã TensorFlow èšç®ã®åŒã³åºãã衚ããŸãããã®åŒã®åã¯int32
ã§ããtff.federated_mean(sensor_readings)
ã¯ãsensor_readings
ã®ãã§ãã¬ãŒãããã¢ãã¬ãŒãžã³ã°æŒç®åã®åŒã³åºãã衚ããŸãããã®åŒã®åã¯float32@SERVER
ã§ãïŒäžèšã®äŸã®ã³ã³ããã¹ããåæãšããå ŽåïŒã
ã¿ãã«ã圢æãããã®èŠçŽ ãéžæããŸãã
tff.federated_computation
ã§ãã³ã¬ãŒãããã颿°ã®æ¬æã«çŸãããã©ãŒã[x, y]
ãx[y]
ããŸãã¯x.y
ã® Paython åŒã§ãã