个人çä¸ç¹çæ³ï¼
1. TensorFlowæ¯éç¨çDataFlowçæ°æ®æµæ¨¡åï¼ä¸è¿æä¸è§å¾åDryadæ太å¤ç¸ä¼¼ä¹å¤ï¼æ¤å¤Dryadä¹ä¸æ¯ç¬¬ä¸ä¸ªæåºDataFlow模åçå°æ¹ï¼è¦è¯´ææ©å¯ä»¥åèMIT TaggedToken
machineéé¢çstatic dataflow ådynamic dataflow architecture[2]çèµæ. å¨ä¸ä¸ªå¤§è§æ¨¡æºå¨å¦ä¹ ç³»ç»ä¸å
¨é¢ãå¯é çæ¯æDataFlowçfeatureæ¬ä¸æ¯ä¸ä»¶å®¹æçäºæ
ï¼ä½æ¯Tensorflowåå°è¿ä¸ç¹ï¼æ¯æcontrol_dependence, merge, condition,for-loop/while-loop, iterationã1. å°±åLSTMçunrollingï¼åæ¥éè¦predefine unrollï¼ç°å¨ç¨for-loopå»åå±å¼(å
é¨ç»´æç¶æçåå) 2. è¿ææ¯å¦ä¸äºç®æ³éè¦å¯¹ä¸åçinput exampleåä¸åçè®ç»(ä¸åçgradientï¼æ´æ°ä¸ä¸æ ·çvariables)ï¼ä»¥åéè¦hackå¾å¤ä¸è¥¿(è³å°å¨DistBelifä¸æ¯)ï¼ç°å¨åªéè¦ä¸ä¸ªConditionOp就解å³äºã3. æ¯å¦ä¸åçvariablesç¨ä¸åçoptimizerï¼SGD/AdaGrad/FTRL/MomentumçãæäºControlFlowçæ¯æï¼tensorflow graphæ´åæ¯ä¸ç§è¯è¨çæ½è±¡(variables, tensors, controlflow, compile[è¿ä¸ªæ¯æä¼rewriteæ´ä¸ªgraph, send/recv node, un-reference, graph partition, dynamic placement], parallelismï¼functional programmingç)ï¼ä»è¿ä¸ªè§åº¦è®²è¿æ¯æä¸å°æ°ä¸è¥¿å¨éé¢ã
2. æ¯å¦ç¨DataflowåBSP并æ ç´æ¥å¯¹åºå
³ç³»ï¼Dataflowåªæ¯tensor/tokençæµå¨ï¼æä¹ scheduleåæ§å¶æµå¨æ¯å«çé¨åçäºæ
(session å¦ä½drive)ãäºå®ä¸ï¼Tensorflowæä¾ççµæ´»æ§ç¨æ·å¾å®¹æå¨ä¸å±åBSP(å¦æä½ é常å欢è¿æ ·åçè¯ï¼è¿ç§æ¨¡åæ大ç缺ç¹æ¯fault toleranceå¾é¾å)ï¼SSP(å¦æéè¦æè¿ä¸ªæ¦å¿µå¼å
¥çè¯) æè
parameter serverçç»æ(äºå®ä¸æä»æ¥ä¸è®¤ä¸ºè¿æ¯ä¸ç§éç¨çç»æï¼åªæ¯ps被centralizedèµ·æ¥åæç¶æçvariablesèå·², 5å¹´åçDistBeliefå°±æ¯è¿ç§æ¶æ)ï¼æäºè¿ä¸ªæ¡æ¶çæ½è±¡ï¼ç¶åè¿ä¸æ¥ä½ å¯ä»¥åSynchronous or Asynchronous trainingãæ以说Dataflowåªè½åBSPï¼è¿ä¸ªæ¯å¾æ²¡æç¼ç±çã
3. æ°æ®è¡¨ç¤ºætensor/tokenï¼ååè¿ä¸ç¹éè¦è¯´è¿ä¸ªæå¤å°çåæ°ç¡®å®ä¹è°ä¸ä¸ãä¸è¿åºäºtensorçæ¯ä¸ä¸ªsingle opæä¹åå®ç°å°±æè究äºï¼ä»Eigenå¼å§å°æ¯ä¸ä¸ªkernels opåºæ¬é½æmicro-benchmarkæ¥ä¿è¯å个opçperformanceè¾¾å°æä¼ï¼æ¢ç¶æ¯kernel级çtensorflowçæ¡æ¶æ¯æç¨æ·å¯ä»¥é便æ©å±GPUãCPUçè³å³ä½¿æ¯CPUçå¯ä»¥é对ä¸åçæ令级åä¼ååå®å¶ãå½ç¶ä»»ä½äºæ
æå¾å°±æ失ï¼å¤§çç³»ç»ç设计æ¬èº«å°±æ¯trade-offï¼æ¯å¦ä½ æ¬æ¥ææçä¸è¥¿æå¨ä¸èµ·æä½æéãinplaceå
å读åå°±å¯ä»¥ï¼ä½ç°å¨æ½è±¡æå¤ä¸ªå个ç²åº¦çoperatorsï¼operatorsä¹é´è¯»åé¾å
æå¾å¤overhead(å½ç¶graph rewriteå·²ç»æ大é度çé¿å
)ãæ以æ¦æ¬èè¨TensorFlowéç¨(ç®æ )ç设计å
¶å®æ¯æ¯production级çperformance/æç度åresearch flexibilityçtrade-offãä»Googleå
é¨çåç§äº§å线(Search/inbox/Photoç)ç使ç¨çï¼è¿ä¸ªç³»ç»æ 论ä»å个æ¹é¢é½æ¯ç»åä½äºèéª(performance/scalability/flexibility/usabilityç)ãPs: TensorFlowç»ä¸æ¯åªè½ådeep learning, shallow/wide model 以åä¼ ç»çMLé½å¯ä»¥åºäºè¿ä¸ªç³»ç»æ¥å(å½ç¶ä¸äºoperators并ä¸ç°æï¼éè¦å»å®ç°)ã
4. æå说ä¸ä¸å¤æºçæ¬çå¼æºé®é¢ãæåç§å¤æçå ç´ å¯¼è´äºè¿æ¬¡releaseççæ¬æ²¡æå¤æºå¨éé¢ï¼æ¯å¦å¹¶æ²¡æå¾å¥½çjob sheduleåé«æ§è½çRPCç³»ç»çæ¯æãè¿ä¸ªé®é¢ä¸æ·±å
¥è®²ä½æ¯å¸æä¸ä¹
çå°æ¥è¿äºéç¢é½ä¼æé¤ã说å°åDistBeliefçæ§è½æ¯è¾ï¼åç§å¤§å¤§å°å°çtask表æTensorflowæ¯DistBeliefçæ§è½æé«ä¸å°(æä¸ä¼è¯´å Xçè¿æ ·çnumberï¼æ¾ç¶ä¸åçtasksè¿ä¸ªnumberçvarianceä¼å¾å¤§. Tensorflowæ¯DistBeliefæ©å±æ§åçµæ´»æ§çä¼å¿èªç¶ä¸ç¨å¤å°ï¼è¦è¯´å¼æ¾åºæ¥æ¯è¾æ°æ®æ´æ¯æ²¡ææä¹ï¼å 为DistBeliefæ¬èº«å¹¶æ²¡æå¼æºã
5. åæ¥è¯´ä¸ä¸distributed version supportçé®é¢ï¼å¦æä½ ä»ç»ç 究ä¸ä¸Tensorflowçframeworkå°±ä¼åç°åå½åçåºç¡ä¸å ä¸ä¸ªåå¸å¼çæ¯ææ¯ç¸å½å®¹æçï¼ä½ å¯ä»¥ç¨Zeromq/MPI ä»»ä½ä¸ç§é«æçéä¿¡æ¡æ¶æ¥åï¼ç»åå½åçGraph rewriteçfunctionalityï¼åªéè¦å¢å ä¸äºéä¿¡çèç¹å°±å¯ä»¥ã
6. æåå
³äºè¯¦ç»æ
åµè¯·åèTensorflow writepaper[3]ï¼æ¬¢è¿è¯ç¨ã
[1]: Arvind and David E. Culler. Annual review
of computer science vol. 1, 1986. chapter
Dataflow Architectures, pages 225â253. 1986
http://www.dtic.mil/cgi-bin/GetTRDoc?Location=U2&doc=GetTRDoc.pdf&AD=ADA166235.
[2]: Arvind and Rishiyur S. Nikhil. Executing a program
on the MIT tagged-token dataflow architecture.
IEEE Trans. Comput., 39(3):300â318, 1990.
http://dl.acm.org/citation.cfm?id=78583.[3]: TensorFlow:
Large-Scale Machine Learning on Heterogeneous Distributed Systems
ç¼è¾äº 2015-11-12
10 æ¡è¯è®º
æè°¢
å享
æ¶è
•
没æ帮å©
•
举æ¥
•
ä½è
ä¿çæå©
æ¶èµ·
è°¢æ¾æ¶æºå¨å¦ä¹ è¯é¢ä¼ç§åçè
CMUæºå¨å¦ä¹
227 人èµå
ææå°å¨å
¬å¼åºåè´¨çææ¹è¯å«äººçå·¥ä½ï¼ä½æ¯Googleè¿æ¬¡çå®£ä¼ ä¸å®é
å¼æºçä¸è¥¿å·®å«å¤ªå¤§ï¼å¿ä¸ä½åºæ¥è¯´å å¥ãå¨å°æªç¡®å®è½å¦åå¸åå¸å¼çæ¬ä¹åï¼æä¸ä¸ªåæºå·¥å
·æè¿°æ âToday weâre proud to announce the open source release of TensorFlow -- our secâ¦
æ¾ç¤ºå
¨é¨
ææå°å¨å
¬å¼åºåè´¨çææ¹è¯å«äººçå·¥ä½ï¼ä½æ¯Googleè¿æ¬¡çå®£ä¼ ä¸å®é
å¼æºçä¸è¥¿å·®å«å¤ªå¤§ï¼å¿ä¸ä½åºæ¥è¯´å å¥ãå¨å°æªç¡®å®è½å¦åå¸åå¸å¼çæ¬ä¹åï¼æä¸ä¸ªåæºå·¥å
·æè¿°æ âToday weâre proud to announce the open source release of TensorFlow -- our second-generation machine learning system [4]â ï¼ âWhy Google Is Giving Away Its Artificial Intelligence Secrets [5]"ï¼è¿æ ·çclaimæ¯å¦è¿å¤§ï¼ ä¸ç®¡æ¯å·¥ä¸çè¿æ¯å¦æ¯çï¼é½åºè¯¥çææºå¨å¦ä¹ ï¼æè
人工æºè½ï¼ä»å¤©è¿æ¥ä¹ä¸æçå±é¢ï¼å¨å®£ä¼ ä¸æ¨å¹¿èªå·±å·¥ä½çæ¶åå®äºæ±æ¯ï¼ä¸ç»å
¬ä¼é æ误导ã
=========================================
ä»ç»ç 读äºTensorFlowçå¼æºä»£ç ææ¡£åslidesï¼æ»ä½å°è±¡æ¯ï¼ä¸ä¸ªæ°çåæºæ·±åº¦å¦ä¹ å·¥å
·å
ï¼æ²¡æææ¾çç论åç³»ç»åæ°ï¼å¼æºçæ¬ä¸æ¯æåå¸å¼ï¼æ以对大è§æ¨¡æ·±åº¦å¦ä¹ 没æ太大çå¤ã
1. ç¼ç¨æ¨¡å¼ãéç¨äºä¸ç§ç§°ä½âcomputation graphâçæ°æ®æµç¼ç¨æ¨¡å¼ï¼è¿ç§æ¨¡å¼å¨ä¹åå¾å¤ç³»ç»ä¸å·²æå®ç°ï¼å¦å¾®è½¯Dryad [1], Sparkã
2. æ°æ®è¡¨ç¤ºã称ä½ä¸ºâTensorâï¼ç»ä¸æ¥è¡¨ç¤ºåéãç©éµãä¸ç»´å以ä¸å¼ éã类似çæ½è±¡å¨ä¹åå¾å¤ç³»ç»ä¸å·¥å
·ä¸å·²æã大é¨åæºå¨å¦ä¹ æä½ç对象(æ°æ®æè
åæ°)é½æ¯ä»¥åéãç©éµçå½¢å¼åå¨ï¼å°é¨åæ¯å¼ éãç»ä¸è¡¨å¾æ"tensor"没æé®é¢ï¼ä½å¨åæ°æ§ä¸è´¡ç®æéã
3. å¼æºçæ¬ä¸æ¯æåå¸å¼ãåæºç深度å¦ä¹ å·¥å
·å·²ç»ä¸ä¸10个ï¼Google没ææä¾æµè¯æ°æ®æ¾ç¤ºTensorFlowç¸æ¯è¿äºå·¥å
·å¨æ§è½ä¸æä¼å¿ãå¸é¢ä¸çæ£ç¼ºä¹çæ¯è½å¤æ¯æ大è§æ¨¡æ·±åº¦å¦ä¹ çåå¸å¼æ¡æ¶æç³»ç»ï¼èTensorFlowå¼æºçæ¬å¹¶æ²¡ææä¾ã
å¸æTensorFlowè½å¤å¼æºåå¸å¼çæ¬ãå¦æä¸æ¹ä¾¿å¼æºçè¯ï¼å¸æå¨ä»¥åçå®£ä¼ ä¸æ¸
æ°æåºå¼æºçæ¬æ¯ä¸ä¸ªåæºæ·±åº¦å¦ä¹ å·¥å
·ï¼èä¸æ¯æ¯æ大è§æ¨¡æ·±åº¦å¦ä¹ çç³»ç»ï¼è¿äºè
ææ¬è´¨çåºå«ã