Path: blob/master/site/ko/federated/federated_core.md
38958 views
íëë ìŽì ë ìœìŽ
ìŽ ë¬žìë Federated Learning(íëë ìŽì íìµ)ì í ëê° ëë 믞ë TFFì ìœìŽ ë ìŽìŽì 믞ëì ë¹ íìµ íëë ìŽì ìê³ ëŠ¬ìŠì ìê°í©ëë€.
Federated Coreì ëí ê°ëší ìê°ë¥Œ ìíŽ ë€ì íí 늬ìŒë¥Œ ìœìŽ ë³Žìžì. Ʞ볞 ê°ë ì€ ìŒë¶ë¥Œ ìì ë¡ ìê°íê³ ê°ëší íëë ìŽì íê· í ìê³ ëŠ¬ìŠì 구ì±ì ëšê³ë³ë¡ 볎ì¬ì€ëë€.
ì¬ì©ì ì ì íëë ìŽì ìê³ ëŠ¬ìŠ, 1ë¶: Federated Core ìê°
ì¬ì©ì ì ì íëë ìŽì ìê³ ëŠ¬ìŠ, 2ë¶: íëë ìŽì íê· í 구ííêž°
ëí, íëë ìŽì íìµì Federated Core API(FC API)륌 ì¬ì©í멎 ìŽ ë ìŽìŽë¥Œ ì€ê³í ë ì íí ìŒë¶ ì¬íì ëí ì€ìí ë§¥ëœì ìŽíŽí ì ììŒë¯ë¡ íëë ìŽì íìµê³Œ ìŽë¯žì§ ë¶ë¥ ë° í ì€íž ìì±ì êŽí êŽë š íí 늬ìŒì ìµìíŽì§êž°ë¥Œ ê¶ì¥í©ëë€.
ê°ì
목í, ìëë ì©ë ë° ë²ì
Federated Core(FC)ë ë¶ì° ê³ì°ì 구ííêž° ìí íë¡ê·žëë° í겜, ìŠ ê°ê° ì€ìí ì²ëŠ¬ë¥Œ ë¡ì»¬ìì ìííê³ ë€ížìí¬ë¥Œ íµíŽ íµì íì¬ ìì ì ì¡°ì íë ì¬ë¬ 컎íší°(íŽë ì í, íëžëŠ¿, ëŽì¥ êž°êž°, ë°ì€í¬í± 컎íší°, ìŒì, ë°ìŽí°ë² ìŽì€ ìë² ë±)륌 í¬íšíë ê³ì° í겜ìŒë¡ ìŽíŽí ì ììµëë€.
ë¶ì°ìŽëŒë ì©ìŽë ë§€ì° ìŒë°ì ìŽë©°, TFFë ê°ë¥í 몚ë ì íì ë¶ì° ìê³ ëŠ¬ìŠì ëììŒë¡ íì§ ììŒë¯ë¡ ìŽ íë ììí¬ìì ííí ì ìë ìê³ ëŠ¬ìŠì ì íì ì€ëª íêž° ìíŽ ë ìŒë°ì ìž ì©ìŽìž *íëë ìŽì ê³ì°(federated computation)*ì ì¬ì©íêžž ì íží©ëë€.
ìì í ê³µìì ìž ë°©ììŒë¡ íëë ìŽì ê³ì°ìŽëŒë ì©ìŽë¥Œ ì ìíë ê²ì ìŽ ë¬žìì ë²ì륌 ë²ìŽëì§ë§, ìë¡ìŽ ë¶ì° íìµ ìê³ ëŠ¬ìŠì ì€ëª íë ì°êµ¬ ê°í묌ìì ìì¬ ìœëë¡ ííë ì ìë ìê³ ëŠ¬ìŠ ì íìŒë¡ ìê°í ì ììµëë€.
FCì 목íë nusthellìì, ëì ë€ìí í겜ìì ì€íì ë€ì ì ì¬ ì»Ží©íž í ìì¬ìë íë¡ê·žëš ë¡ì§ì ì¶ìí ì ì¬í ìì¬ì ê°ì ìì€ìì íííì§ë§ë¥Œ íì±ííë ê²ì ëë€.
FCê° íííë ìê³ ëŠ¬ìŠ ì¢ ë¥ì í¹ì§ì ì ìíë íµì¬ì ìì€í ì°žê°ìë€ì íëìŽ ì§í©ì ìŒë¡ ì€ëª ëë€ë ê²ì ëë€. ë°ëŒì ë°ìŽí°ë¥Œ ë¡ì»¬ë¡ ë³ííë ê° êž°êž°ì 결곌륌 ëžë¡ëìºì€í íê³ ìì§íê±°ë ì§ê³íë ì€ì ì§ì€ì ìœëë€ìŽí°ë¥Œ íµíŽ ìì ì ì¡°ì íë êž°êž°ì ëíŽ ìŽìŒêž°íë 겜í¥ìŽ ììµëë€.
TFFë ëšìí íŽëŒìŽìžíž-ìë² ìí€í ì²ë¥Œ ë°ìŽëì ì ìëë¡ ì€ê³ëìì§ë§, ìŒêŽ ì²ëЬ(collective processing)ì ê°ë ì Ʞ볞ì ëë€. ìŽë íëë ìŽì íìµììì TFFì êž°ììŽ íŽëŒìŽìžíž êž°êž°ì ì ìŽ ìë ì ì§ëê³ ê°ìž ì 볎 볎ížë¥Œ ìíŽ ì€ì ìì¹ë¡ ê°ëší ë€ìŽë¡ëí ì ìë ì ì¬ì ìŒë¡ ì€ìí ë°ìŽí°ì ëí ê³ì°ì ì§ìíëë¡ ì²ìë¶í° ì€ê³ë êž°ì ì ìêž° ë묞ì ëë€. ìŽë¬í ìì€í ìì ê° íŽëŒìŽìžížë ìì€í ì 결곌(몚ë ì°žê°ììê² ìŒë°ì ìŒë¡ ê°ì¹ê° ìë 결곌)륌 ê³ì°íë ë° ë°ìŽí° ë° ì²ëЬ ë¥ë ¥ì ì ê³µíì§ë§, ê° íŽëŒìŽìžížì ê°ìž ì 볎 ë° ìµëª ì±ì ì ì§íêž° ìíŽ ë žë ¥í©ëë€.
ë°ëŒì ë¶ì° 컎íší ì ìí ëë¶ë¶ì íë ììí¬ë ê°ë³ ì°žê°ìì êŽì , ìŠ ê°ë³ ì§ì ê° ë©ìì§ êµí ìì€ìì ìì ë° ë°ì ë©ìì§ë¥Œ íµí ì°žê°ìì ë¡ì»¬ ìí ì íì ìíž ìì¡Žì± êŽì ìì ì²ëŠ¬ë¥Œ íííëë¡ ì€ê³ë ë°ë©Ž, TFFì Federated Coreë ì ì ìì€í ì°šìì êŽì ìì ìì€í ì ëìì ì€ëª íëë¡ ì€ê³ëììµëë€(ì륌 ë€ìŽ, MapReduceì ì ì¬).
ë°ëŒì ìŒë°ì ìž ì©ëì ë¶ì° íë ììí¬ë êµ¬ì± ììë¡ì 볎ëŽêž° ë° ë°êž°ì ê°ì ì°ì°ì ì ê³µí ì ìì§ë§, FCë ê°ëší ë¶ì° íë¡í ìœì 캡ìííë tff.federated_sum, tff.federated_reduce ëë tff.federated_broadcastì ê°ì êµ¬ì± ìì륌 ì ê³µí©ëë€.
ìžìŽ
Python ìží°íìŽì€
TFF íëë ìŽì
ê³ì°ì íííêž° ìíŽ ëŽë¶ ìžìŽë¥Œ ì¬ì©íë©°, ìžìŽì 구묞ì computation.protoìì ì§ë ¬í ííì ìíŽ ì ìë©ëë€. FC API ì¬ì©ìë ìŒë°ì ìŒë¡ ìŽ ìžìŽì ì§ì ìíž ìì©í íìê° ììµëë€. 귞볎ë€ë ê³ì°ì ì ìíë ë°©ë²ìŒë¡ ìžìŽë¥Œ ëííë Python API(tff ë€ìì€íìŽì€)륌 ì ê³µí©ëë€.
í¹í, TFFë tff.federated_computation곌 ê°ì Python íšì ë°ìœë ìŽí°ë¥Œ ì ê³µíì¬ ë°ìœë ìŽí
ë íšìì 볞묞ì ì¶ì íê³ TFFì ìžìŽë¡ íëë ìŽì
ê³ì° ë
ŒëЬì ì§ë ¬íë ííì ìì±í©ëë€. tff.federated_computationìŒë¡ ë°ìœë ìŽí
ë íšìë ìŽë¬í ì§ë ¬íë ííì ìºëŠ¬ìŽ ìí ì íë©°, ìºëЬìŽë¥Œ ë€ë¥ž ê³ì° 볞묞ì êµ¬ì± ììë¡ í¬íšíê±°ë ížì¶ë ë ìì² ì ì€íí ì ììµëë€.
ì¬êž°ì í ê°ì§ ìì ê° ììµëë€. ë ë§ì ìì ë ì¬ì©ì ì ì ìê³ ëŠ¬ìŠ íí 늬ìŒìì ì°Ÿì ì ììµëë€.
ìŠì 몚ëê° ìë TensorFlowì ìµìí ë
ìë TensorFlow ê·žëí륌 ì ìíë Python ìœë ì¹ì
ìì tf.add ëë tf.reduce_sum곌 ê°ì íšì륌 ì¬ì©íë Python ìœë륌 ìì±íë ê²ê³Œ ì ì¬íë€ë ê²ì ìê² ë ê²ì
ëë€. ìœëë PythonìŒë¡ êž°ì ì ìŒë¡ ííëìì§ë§, ê·ž ìëì tf.Graphì ì§ë ¬í ííì 구ì±íë ê²ìŽ ëª©ì ìŽë©°, TensorFlow ë°íìì ìíŽ ëŽë¶ì ìŒë¡ ì€íëë ê²ì Python ìœëê° ìë ê·žëíì
ëë€. ë§ì°¬ê°ì§ë¡, tff.federated_meanì get_average_temperatureë¡ íìëë íëë ìŽì
ê³ì°ì federated op륌 ìœì
íë ê²ìŒë¡ ìê°í ì ììµëë€.
FCìì ìžìŽë¥Œ ì ìíë ìŽì ì€ ìŒë¶ë ììì ìžêžíë¯ìŽ íëë ìŽì ê³ì°ìŽ ë¶ì° ì§ëš ëìì ì§ì íë¯ë¡ ëìì ë ŒëŠ¬ê° ë¡ì»¬ìŽ ìëëŒë ì¬ì€ê³Œ êŽë šìŽ ììµëë€. ì륌 ë€ìŽ, TFFë ë€ížìí¬ì ë€ë¥ž ìì¹ì 졎ì¬í ì ìë ì°ì°ì, ì ë ¥ ë° ì¶ë ¥ì ì ê³µí©ëë€.
ë°ëŒì ë¶ì°ì±ì ê°ë ì í¬ì°©íë ìžìŽì ì í ìì€í ìŽ íìí©ëë€.
ì í ìì€í
Federated Coreë ë€ì ì íì ë²ì£Œë¥Œ ì ê³µí©ëë€. ìŽë€ ì íì ì€ëª í ë ížëЬí ì íìŽë ê³ì° ë° ì°ì°ìì ì íì ì€ëª íë ê°ëší íêž°ë²ì ìê°í ë¿ë§ ìëëŒ ì í ìì±ì륌 ìëŽí©ëë€.
첫짞, Ʞ졎 ì£Œë¥ ìžìŽìì 볌 ì ìë ì í곌 ê°ë ì ìŒë¡ ì ì¬í ì íì ë²ì£Œë ë€ì곌 ê°ìµëë€.
í ì ì í(
tff.TensorType): TensorFlowììì ë§ì°¬ê°ì§ë¡dtype곌shapeìŽ ììµëë€. ì ìŒí ì°šìŽì ì ìŽ ì íì ê°ì²Žë TensorFlow ê·žëíìì TensorFlow opsì ì¶ë ¥ì ëíëŽë Pythonìtf.Tensorìžì€íŽì€ë¡ ì íëì§ ììŒë©°, ì륌 ë€ìŽ ë¶ì° ì§ê³ íë¡í ìœì ì¶ë ¥ìŒë¡ ìì±ë ì ìë ë°ìŽí°ì ëšì륌 í¬íší ì ìë€ë ê²ì ëë€. ë°ëŒì TFF í ì ì íì ëšìí Python ëë TensorFlowìì íŽë¹ ì íì 구첎ì ìž ë¬ŒëŠ¬ì ííì ì¶ì ë²ì ì ëë€.TFFì
TensorTypesë TensorFlowë³Žë€ íì(shape)ì (ì ì ) ì²ëŠ¬ê° ë ì격í ì ììµëë€. ì륌 ë€ìŽ, 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ë íšìê° ìŒêž ê°ìŒë¡ ì·šêžëë íšìí íë¡ê·žëë° íë ììí¬ì ëë€. íšìë ìµë íëì ìžìì ì íí íëì 결곌륌 ê°ìµëë€.íšìì ê°ê²°í íêž°ë²ì
(T -> U)ì ëë€.Të ìžìì ì íìŽê³ ,Uë 결곌ì ì íìŽê±°ë ìžìê° ìë 겜ì°(ìžì ìë íšìë ì£Œë¡ Phython ë 벚ììë§ ì¡Žì¬íë ì€ë³µ ì ê±° ê°ë ìŽì§ë§),( -> U)ì ëë€. ì륌 ë€ìŽ,(int32* -> int32)ë ì ì ìíì€ë¥Œ ëšìŒ ì ì ê°ìŒë¡ ì€ìŽë íšì ì íì ëí íêž°ë²ì ëë€.
ë€ì ì íì TFF ê³ì°ì ë¶ì° ìì€í 잡멎ì íŽê²°í©ëë€. ìŽë¬í ê°ë ì ë€ì TFFì ê³ ì íë¯ë¡ ì¶ê° 죌ì ë° ìì ë ì¬ì©ì ì ì ìê³ ëŠ¬ìŠ íí 늬ìŒì ì°žì¡°íìžì.
ë°°ì¹ ì í: ìŽ ì íì ìŽ ì íì ììë¡ ìê°í ì ìë 2ê°ì 늬í°ëŽ
tff.SERVERë°tff.CLIENTSíì ìŽìžì ê³µì© APIì ìì§ ë žì¶ëì§ ìì ì íì ëë€. ëŽë¶ì ìŒë¡ ì¬ì©ëì§ë§, í¥í 늎늬ì€ììë ê³µê° APIì ëì ë ìì ì ëë€. ìŽ ì íì ê°ëší ííìplacementì ëë€.ë°°ì¹ë í¹ì ìí ì ìííë ìŒë šì ìì€í ì°žê°ì륌 ëíë ëë€. ìŽêž° 늎늬ì€ë íŽëŒìŽìžíž ë° ìë²ì ë 귞룹ìŒë¡ 구ì±ë íŽëŒìŽìžíž-ìë² ê³ì°ì ëììŒë¡ í©ëë€(íìë ì±êží€ 귞룹ìŒë¡ ìê°í ì ìì). ê·žë¬ë ë³Žë€ ì êµí ìí€í ì²ììë ë€ì€ ê³ìžµ ìì€í ì ì€ê° ì§ê³êž°ì ê°ìŽ ë€ë¥ž ì íì ì§ê³ë¥Œ ìííê±°ë ìë² ëë íŽëŒìŽìžížìì ì¬ì©íë ì í곌 ë€ë¥ž ì íì ë°ìŽí° ìì¶/ìì¶ íŽì 륌 ì¬ì©íë ë€ë¥ž ìí ìŽ ìì ì ììµëë€.
ë°°ì¹ì ê°ë ì ì ìíë Ʞ볞 목ì ì íëë ìŽì ì íì ì ìíêž° ìí êž°ìŽì ëë€.
íëë ìŽì ì í(
tff.FederatedType): íëë ìŽì ì íì ê°ì í¹ì ë°°ì¹(ì:tff.SERVERëëtff.CLIENTS)ìì ì ìë ìì€í ì°žê°ì ê·žë£¹ìŽ ížì€í íë ê°ì ëë€. íëë ìŽì ì íì ë°°ì¹ ê°(ìŠ, ì¢ ì ì í), ë©€ë² êµ¬ì± ììì ì í(ê° ì°žê°ìê° ë¡ì»¬ìì ížì€í íë ìœí ìž ì ì¢ ë¥) ë° ëªšë ì°žê°ìê° ë¡ì»¬ë¡ ê°ì í목ì ížì€í íê³ ìëì§ë¥Œ ì§ì íë ì¶ê° ë¹ížall_equalì ìíŽ ì ìë©ëë€.귞룹(ë°°ì¹)
Gê° ê°ê° ížì€í íë ì íTì í목(ë©€ë² êµ¬ì± ìì)ì í¬íšíë íëë ìŽì ì íì ê°ì ëí ê°ëší íêž°ë²ì ê°ê°all_equalë¹ížê° ì€ì ëìê±°ë ì€ì ëì§ ììT@Gëë{T}@Gì ëë€.ì륌 ë€ë©Ž, ë€ì곌 ê°ìµëë€.
{int32}@CLIENTSë íŽëŒìŽìžíž êž°êž°ë¹ íëì© ì ì¬ì ìŒë¡ ë€ë¥ž ì ì ìžížë¡ 구ì±ë íëë ìŽì ê°ì ëíë ëë€. ë€ížìí¬ì ì¬ë¬ ìì¹ì ëíëë ì¬ë¬ ë°ìŽí° í목ì í¬íšíë ëšìŒ íëë ìŽì ê°ì ëíŽ ìŽìŒêž°íê³ ììµëë€. "ë€ížìí¬" ì°šìì ê°ì§ ìŒì¢ ì í ì(tensor)ë¡ ìê°í ì ìì§ë§, TFFìì íëë ìŽì ê°ì ë©€ë² êµ¬ì± ììì ëí ìì ì¡ìžì€ë¥Œ íì©íì§ ìëë€ë ì ìì ìŽ ë¹ì ë ì벜íì§ ììµëë€.{<X=float32,Y=float32>*}@CLIENTSë íëë ìŽì ë°ìŽí°ìžížë¥Œ ëíëŽë©°, íŽëŒìŽìžíž êž°êž°ë¹ íëì ìíì€ìž ì¬ë¬XYì¢í ìíì€ë¡ 구ì±ë ê°ì ëë€.<weights=float32[10,5],bias=float32[5]>@SERVERë ìë²ìì ê°ì€ì¹ ë° ë°ìŽìŽì€ í ìì ëª ëª ë íí륌 ëíë ëë€. ì€êŽížë¥Œ ìì íìŒë¯ë¡all_equalë¹ížê° ì€ì ëìŽ ììì ëíë ëë€. ìŠ, (ìŽ ê°ì ížì€í íë íŽë¬ì€í°ì ìì ì ìë ìë² ë³µì 볞ì ìì êŽê³ììŽ) ëšìŒ ííë§ ììµëë€.
êµ¬ì± ìì
Federated Coreì ìžìŽë ëª ê°ì§ ì¶ê° ììê° í¬íšë ëë€ ë¯žì ë¶ì ííì ëë€.
íì¬ ê³µê° APIì ë žì¶ëìŽ ìë ë€ì곌 ê°ì íë¡ê·žëë° ì¶ìí륌 ì ê³µí©ëë€.
TensorFlow ê³ì°(
tff.tf_computation):tff.tf_computationë°ìœë ìŽí°ë¥Œ ì¬ì©íì¬ TFFìì ì¬ì¬ì© ê°ë¥í 컎í¬ëížë¡ ëíë TensorFlow ìœë ì¹ì ì ëë€. íì íšìí ì íì ê°ì§ê³ ììŒë©° TensorFlowì íšìì ë¬ëЬ 구조ì ë§€ê°ë³ì륌 ì·šíê±°ë ìíì€ ì íì 구조ì 결곌륌 ë°íí ì ììµëë€.ë€ìì
tf.data.Dataset.reduceì°ì°ì륌 ì¬ì©íì¬ ì ìì í©ê³ë¥Œ ê³ì°íë ì í(int32* -> int)ì TF ê³ì° ìì ëë€.intrinsics(ëŽì¥ êž°ë¥) ëë íëë ìŽì ì°ì°ì (
tff.federated_...): ëë¶ë¶ì FC API륌 구ì±íëtff.federated_sumëëtff.federated_broadcastì ê°ì íšì ëŒìŽëžë¬ëЬìŽë©°, ëë¶ë¶ TFFì íšê» ì¬ì©ëë ë¶ì° íµì ì°ì°ì륌 ëíë ëë€.ìŽë€ ì°ì°ì륌 intrinsicsëŒê³ ë¶ë¥Žë ìŽì ë ëŽì¥ íšìì ë€ì ë¹ì·íì§ë§, TFFê° ìŽíŽíê³ íì ë 벚 ìœëë¡ ì»ŽíìŒëë íì¥ ê°ë¥í ê°ë°©í ì°ì°ì ìžížìŽêž° ë묞ì ëë€.
ìŽë€ ì°ì°ìì ëë¶ë¶ì íëë ìŽì ì íì ë§€ê°ë³ìì 결곌륌 ê°ì§ë©°, ëë¶ë¶ì ë€ìí ì¢ ë¥ì ë°ìŽí°ì ì ì©í ì ìë í í늿ì ëë€.
ì륌 ë€ìŽ,
tff.federated_broadcastë íšì ì íT@SERVER -> T@CLIENTSì í í늿 ì°ì°ìë¡ ìê°í ì ììµëë€.ëë€ ì(
tff.federated_computation): TFFì ëë€ ìì Pythonìlambdaëëdefì ê°ìµëë€. ë§€ê°ë³ì ìŽëŠê³Œ ìŽ ë§€ê°ë³ìì ëí 찞조륌 í¬íšíë 볞묞(ííì)ìŒë¡ 구ì±ë©ëë€.Python ìœëììë
tff.federated_computationë¡ Pyhon íšì륌 ë°ìœë ìŽí íê³ ìžì륌 ì ìíì¬ ë§ë€ ì ììµëë€.ë€ìì ìì ìžêží ëë€ ìì ìì ëë€.
ë°°ì¹ ëŠ¬í°ëŽ: íì¬ë ê°ëší íŽëŒìŽìžíž-ìë² ê³ì°ì ì ìí ì ìë
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ì Python ííìì ëë€.