ͻ񻣼
ÔÚÔÆÆÜ¼ÆËãÖ®ÂõÚ5ÆÚ¡ª´óÊý¾ÝÓëÈ˹¤ÖÇÄÜ´ó»áÉÏ£¬À´×Ô°¢ÀïÔÆ´óÊý¾ÝÊÂÒµ²¿µÄ¾Å·á·ÖÏíÁË¡¶PAI·Ö²¼Ê½»úÆ÷ѧϰƽ̨±à³ÌÄ£ÐÍÑݽøÖ®Â·¡·¡£ËûÖ÷Òª½éÉÜÁËÔÚ¼¯ÍÅÖÐʹÓûúÆ÷ѧϰ½â¾ö´óÊý¾ÝÎÊÌâʱÈçºÎͨ¹ý±à³ÌÄ£Ð͵ÄÑݽøÖð²½½â¾öÒµÎñÉϵÄÍ´µã¡£
ÔÚÔÆÆÜ¼ÆËãÖ®ÂõÚ5ÆÚ¡ª´óÊý¾ÝÓëÈ˹¤ÖÇÄÜ´ó»áÉÏ£¬À´×Ô°¢ÀïÔÆ´óÊý¾ÝÊÂÒµ²¿µÄ¾Å·á·ÖÏíÁË¡¶PAI·Ö²¼Ê½»úÆ÷ѧϰƽ̨±à³ÌÄ£ÐÍÑݽøÖ®Â·¡·¡£ËûÖ÷Òª½éÉÜÁËÔÚ¼¯ÍÅÖÐʹÓûúÆ÷ѧϰ½â¾ö´óÊý¾ÝÎÊÌâʱÈçºÎͨ¹ý±à³ÌÄ£Ð͵ÄÑݽøÖð²½½â¾öÒµÎñÉϵÄÍ´µã¡£ÆäÖУ¬ËûÖ»Òª·ÖÏíÁËMapReduce¡¢MPI¡¢Parameter
Server±à³ÌÄ£Ð͵ÄÑݽø¹ý³Ì¡£
ÒÔÏÂÄÚÈݸù¾Ý´ó»áÊÓÆµÕûÀí¶ø³É¡£
ʲôÊÇPAI£¿
PAIµÄÈ«³ÆÊÇPlatform of Artificial Intelligence£¬Ö÷ÒªÔÚʹÓûúÆ÷ѧϰ×öÄ£ÐÍѵÁ·Ê±ÌṩÕûÌ×Á´Â·¡£»úÆ÷ѧϰ¼´·þÎñ£¬°Ñ»úÆ÷ѧϰ×÷Ϊ·þÎñ¶ÔÍâÍÆ³ö£¬´ó¼Ò¿ÉÒÔÔÚÆ½Ì¨ÉÏʹÓñȽÏÏȽøµÄ»úÆ÷ѧϰËã·¨¡£½«¶àÖÖÉî¶Èѧϰ¿ò¼Ü¼¯³Éµ½PAIÖУ¬Í¬Ê±»ùÓÚÉî¶Èѧϰ¿ò¼Ü°ü×°³É¸ü¼ÓÒ×ÓõÄ×é¼þ¡£¾ß±¸Òì¹¹µÄ¼ÆËã·þÎñÄÜÁ¦£¬°ÑCPU¼ÆËãÄÜÁ¦ºÍGPU¼ÆËãÄÜÁ¦Í³Ò»µ÷¶ÈÆðÀ´£¬Òì¹¹µÄ¼ÆËãÄÜÁ¦Í¸Ã÷£¬´ó¼ÒµÄ×¢ÒâÁ¦ÊÇÄÄЩ»úÆ÷ѧϰËã·¨¿ÉÒÔ°ïÖúÒµÎñ£¬²»ÓùØÐĵײã×ÊÔ´µÄÉêÇëºÍ·ÖÅä¡£PAIÒ²Ö§³ÖÔÚÏßÔ¤²â·þÎñ£¬Ä£ÐÍÒ»¼ü·¢²¼¡£
´ó¹æÄ£·Ö²¼Ê½»úÆ÷ѧϰµÄÌôÕ½
Êý¾Ý¹æÄ£ºÍÌØÕ÷»á²»¶ÏÔö¼Ó£¬Õâ¾Í»áµ¼ÖÂÄ£Ð͸´ÔӶȵÄÔö¼Ó£¬Ö®Ç°µÄÄ£ÐÍÒѾ²»Äܹ»´¦ÀíÕâô¸ßµÄ¸´ÔÓ¶ÈÁË¡£ÌØÕ÷Ôö¼ÓÖ®ºó£¬Ä£ÐͱäµÃÔ½À´Ô½´ó£¬Ä£ÐͺÜÄÑ×öµ½µ¥»ú¼ÓÔØ£¬ËùÒÔÔÚÄ£Ðʹ洢ʱÐèÒª×ö·ÖƬºÍÇз֡£ÔÚ³£¹æµÄ»úÆ÷ѧϰÀïÃæ£¬¸ü¶àµÄ×¢ÒâÁ¦·ÅÔÚÀí½âÒµÎñµÄÊý¾Ý¡¢ÌØÕ÷£¬¶øÏÖÔÚµÄ×¢ÒâÁ¦»á×ªÒÆµ½Ä£Ðͱ¾Éí£¬¸ü¶à¿¼ÂÇÔõôͨ¹ýµ÷ÕûÄ£Ð͵Ľṹ´ïµ½¸üºÃµÄÔ¤²âЧ¹û¡£
±à³ÌÄ£ÐÍÑݽø
MapReduce±à³ÌÄ£ÐÍ

MapReduceºËÐĵÄ˼ÏëÊÇ·Ö¶øÖÎÖ®£¬¼´°ÑÊý¾ÝÇзֳɺܶà¿é£¬Ã¿¸ö½Úµã´¦ÀíÆäÖеÄһС¿é¡£×ö·Ö²¼Ê½ÏµÍ³Ê±»áÃæÁٺܶàÎÊÌ⣬±ÈÈçÏ£Íû¼ÆËãÈÎÎñ¿ÉÒÔÔÚMapReduce¿ò¼Ü²ãÃæ×öÇзֺ͵÷¶È¡£MapReduce´Ó¿ò¼Ü²ãÃæ¼«´óµØ½µµÍÁ˰ÑÈÎÎñÇ¨ÒÆµ½·Ö²¼Ê½¼ÆËãϵͳÉϵÄÄѶȺÍÃż÷¡£¶ÔÓÚÊý¾ÝµÄ·Ö²¼Ê½´æ´¢ºÍ»®·Ö£¬Êý¾Ý¿É·ÖÉ¢´æ´¢ÔÚ¼¸Ç§Ì¨»úÆ÷ÉÏ£¬²¢ÇÒ¶¼ÓÐÏàÓ¦¸±±¾£¬²»ÐèÒªµ£ÐÄÊý¾ÝµÄ¶ªÊ§£¬µ×²ãµÄ·Ö²¼Ê½´æ´¢»áͳһ½øÐд¦Àí¡£¼ÆËãÈÎÎñµÄͬ²½ºÍ¼ÆËã½ÚµãµÄÈÝ´íÓë»Ö¸´£¬ÈôʹÓÃÆÕͨ»úÆ÷È¥´î´óÐͼÆËãȺµÄʱºò£¬»úÆ÷µÄå´»úʱ±È½ÏÆÕ±éµÄÏÖÏó£¬Ê¹ÓÃMapReduceÔò²»ÐèÒª¹ØÐÄÕâÒ»µã¡£ÓÒͼÊÇMapReduceµÄ±à³ÌÄ£ÐÍ£¬×î³õÊÇÓÃÀ´´¦ÀíSQLµÈÎÊÌâ¡£

ÔÚ»úÆ÷ѧϰÀïÃæ£¬ÓÐЩËã·¨ÊÇ»ùÓÚMapReduce±à³ÌÄ£ÐÍȥʵÏֵġ£TF-IDFÓÃÀ´ÆÀ¹ÀÎĵµÀïÃæµ¥´ÊÊÇ·ñÄܱíʾÎĵµÖ÷Ìâ¡£Ê×ÏȼÆËãÎĵµÀïÃæµ¥´Ê³öÏֵįµÂÊ£¬°Ñν´ÊºÍ̾´ÊÈ¥µô£¬¹Ø×¢ÕæÕýÓÐÒâÒåµÄ´Ê¡£IDFÔòÊÇͳ¼Æ¸Ã´ÊÔÚËùÓÐÎĵµÀïÃæ³öÏֵįµÂÊ£¬½«ÆäºÍÎĵµÀï³öÏֵįµÂʾ¹ýËã·¨¼ÆËãµÃ³ö×îÖÕ½á¹û¡£Õâ¸ö¹ý³ÌÈçºÎͨ¹ýMapReduceʵÏÖÄØ£¿ÔÚMapperÖеü´úµÄÈ¥¼ÓÔØÃ¿Ò»ÆªÒªÑµÁ·µÄÎÄÕ£¬ÔÚµü´ú¹ý³ÌÖÐͳ¼ÆÃ¿¸öµ¥´Ê³öÏֵįµÂÊ¡£½«Í³¼Æ½á¹û·ÅÈëReducerÖУ¬½øÐмÆË㣬µÃµ½TF-IDF½á¹û±í¡£
MapReduce±à³ÌÄ£ÐÍÓÐÁ½¸öÌØµã£º²»Í¬¼ÆËãÈÎÎñÖ®¼ä¶ÀÁ¢£¬Ã¿¸öMapperºÍReducerÖ»»á¼ÆËã×Ô¼ºÏà¹ØµÄÊý¾Ý£¬Êý¾Ý²¢Ðжȸߣ»Êʺϲ»ÐèÒª²»Í¬½ÚµãͨÐŵĻúÆ÷ѧϰËã·¨¡£
MPI±à³ÌÄ£ÐÍ

Âß¼»Ø¹éËã·¨ÊÇÐèÒª½Úµã¼ä½øÐÐͨÐŵ쬏ÃËã·¨ÔÚ¸öÐÔ»¯ÍƼöÖпÉÒÔ¾³£¿´µ½¡£¸öÐÔ»¯ÍƼöËã·¨ÊÇָÿ¸öÈ˵ã»÷½øÀ´Ö®ºó»á½øÐзÖÀ࣬ÅжÏÊÇ·ñ»á¶ÔijЩÉÌÆ·¸ÐÐËȤ£¬È»ºó½øÐÐÍÆ¼ö¡£Ä£Ðͺ¯ÊýÈçÉÏͼÖй«Ê½Ëùʾ£¬¶¨ÒåËðʧº¯Êý£¬Ëðʧº¯ÊýֵԽС˵Ã÷Ä£ÐÍÄâºÏÔ½ºÃ£¬Ñ°ÕÒËðʧº¯Êý×îСֵµÄ¹ý³ÌÖÐÓõ½ÁËÌݶÈϽµËã·¨¡£
ÔçÆÚ£¬ºÜ¶àÂß¼»Ø¹éËã·¨¶¼ÊÇ»ùÓÚMPI±à³ÌÄ£ÐÍʵÏֵģ¬MPIÊÇÏûÏ¢´«µÝ½Ó¿Ú£¬¶¨ÒåÁËSend£¬Receive£¬BC°¢Ë¹Í¼£¬AllReduce½Ó¿Ú£¬Ö§³Öµ¥»ú¶àInstanceºÍ¶à»ú¶àInstance£¬¾ßÓи߶ÈÁé»î£¬ÃèÊöÄÜÁ¦Ç¿£¬´óÁ¿ÓÃÓÚ¿ÆÑ§¼ÆËã¡£

MPIʹÓÃʱÓкܶàÏÞÖÆ£¬Ê×ÏȱØÐëÌáǰ֪µÀ½×¶ÎÈÎÎñÔÚÄÄЩ¼ÆËã½ÚµãÉÏ×ö¡£ÔÚ´ó¹æÄ£µÄ¼ÆË㼯ȺÀïÃæ£¬ËùÓÐ×ÊÔ´µÄ·ÖÅä¶¼ÊǶ¯Ì¬µÄ£¬ÔÚÈÎÎñÖ´ÐÐ֮ǰ²»ÖªµÀÈÎÎñ»áµ÷¶Èµ½ÄÄЩ½ÚµãÉÏ£¬µ«ÊÇÔçÆÚÓкܶàËã·¨ÐèÒª»ùÓÚMPIʵÏÖ£¬ËùÒÔ¶ÔMPIµ×²ã×öÁËÍøÂçÍØÆËµÄ½¨Á¢£¬×öÁË´óÁ¿µÄÖØ¹¹£¬°ïÖúMPIÏà¹Ø³ÌÐòÄܹ»»ùÓÚ·Ö²¼Ê½µÄµ÷¶Èϵͳµ÷¶ÈÆðÀ´¡£

Âß¼»Ø¹éµÄʵÏÖ¹ý³ÌÈçÉÏͼËùʾ¡£ÆäÖУ¬ÓÐn¸ö¼ÆËã½Úµã£¬Ê×ÏÈ»á¼ÓÔØÑµÁ·Ñù±¾£¬¼ÆËãÌݶȣ¬È»ºó±¾µØ¼ÓºÍ£¬×îºóµ÷ÓÃAllReduce½Ó¿ÚÈ¥¼ÆËãÏÖÔÚÄ£ÐÍËùÔÚµÄλÖá£MPI±¾Éí»¹´æÔÚһЩȱµã£ºÊ×ÏÈMPIÖÐWorkerµÄÊýÄ¿ÓÐÉÏÏÞ£¬µ±ÐèÒª¸ü¶à½ÚµãµÄʱºò»á·¢ÉúÐÔÄÜϽµ¡£
²ÎÊý·þÎñÆ÷Parameter Server

Parameter ServerºÍMPIÏà±È£¬ÔÚ¸ü¸ßµÄ²ã´Î¶¨ÒåÁ˱à³ÌÄ£Ðͺͽӿڡ£Parameter
ServerÖÐÓÐÈý¸ö½ÇÉ«£¬Server½ÚµãÓÃÀ´´æ´¢Ä£ÐÍ£¬¼ÆËã½Úµã»á¼ÓÔØ²¿·ÖÄ£ÐÍ¡¢ÑµÁ·Êý¾Ý£¬Ã¿ÂÖµü´úʱÿ¸ö½Úµã»á¼ÆËãϸöÌݶȣ¬½«½ÚµãºÍServer½øÐÐͨÐÅ¡£CoordinatorÓÃÀ´ÅжÏѵÁ·ÊÇ·ñ½áÊø¡£´ËÍ⣬Parameter
ServerÖ§³ÖÒ첽ͨÐŽӿڣ¬²»ÐèÒªÔÚ²»Í¬¼ÆËã½Úµã¼ä×öͬ²½¡£

°¢ÀïÔÚ2014ÄêϰëÄ꣬¶ÀÁ¢×ÔÑÐÁËPAI Parameter Server¼ÆËãÄ£ÐÍ£¬ÒÑÔÚ¼¯ÍÅÄÚ´ó¹æÄ£Ê¹Ó᣾ßÌå×öµÄ¹¤×÷ÈçÉÏͼËùʾ¡£MPIµÄÒ»¸öȱµãÊDz»Ö§³ÖÈÝ´í£¬¶øÃ¿ÌìÉÏÍǫ̀µÄ¼¯Èº»á³öÏÖ¸÷ÖÖ¸÷ÑùµÄ¹ÊÕÏ£¬PAI
Parameter ServerÕë¶Ô´ó¹æÄ£¼¯Èº×öÁ˽ڵãÈÝ´í¹¦ÄÜ¡£Parameter Server¼¯³ÉºÜ¶àËã·¨£¬±ÈÈçÂß¼»Ø¹éµÈ¡£
Éî¶Èѧϰ

Éî¶ÈѧϰÊÇÈ˹¤Éñ¾ÍøÂçµÄÑÓÉ죬Ïà±ÈÖ®ÏÂÄܹ»Ö§³Ö¸üÉîµÄÍøÂç¡£ÉÏͼÖУ¬AlexnetÊǾí»ýÉñ¾ÍøÂ磬×ܹ²ÓÐ8²ãÍøÂ磬Éî¶ÈѧϰÈç¹ûÏëÒª»ñµÃ¸üºÃµÄЧ¹û£¬±ØÐëÒª¹¹½¨Ò»¸ö¸üÉîµÄÉñ¾ÍøÂç¡£Ëæ×ÅÉñ¾ÍøÂç±äÉÐèÒª¸ü¶àµÄ²ÎÊý£¬²¢ÇÒÄ£ÐÍÒ²»á¸ü¼ÓÅӴ󡣶༶ѵÁ·ÔòÐèÒª¸ü¸ßÁ¿¼¶µÄͨÐÅÁ¿¡£
TensorFlow 
TensorFlowÊǹȸèµÚ¶þ´úµÄÉî¶Èѧϰ¿ò¼Ü£¬Ö§³Ö¸÷ÖÖÉñ¾ÍøÂ磬¾ßÓи߶ȵÄÁé»îÐÔ£¬·á¸»µÄÉçÇøÉú̬£¬Ö§³ÖCNN¡¢RNN¡¢LSTMµÈÍøÂç¡£
ÉÏͼÖÐTensorFlowµÄÀý×ÓÊÇÁ½²ãÉñ¾ÍøÂç×öͼƬµÄ·ÖÀà¡£ÉÏÃæÍ¨¹ýAPI¶¨ÒåѵÁ·Í¼Æ¬ºÍ²âÊÔÊý¾Ý£¬½Ó×Ŷ¨ÒåÁËÄ£ÐÍ£¨softmax¶à·ÖÀàÄ£ÐÍ£©£¬¶¨ÒåËðʧº¯Êýͨ¹ý½»²æìØÀ´×ö£¬×îºóÑ¡ÔñÓÅ»¯º¯ÊýÕÒ×îÓŵ㡣ÏÂÃæ²¿·ÖÔòÊÇͨ¹ýAPI°ÑѵÁ·Êý¾Ýι¸øÄ£ÐÍÔÙ¼ÆË㵱ǰģÐ͵Ä׼ȷÂÊ¡£´ÓÉÏÀýÖУ¬¿ÉÒÔ¿´³ö£¬API·Ç³£Áé»î£¬»ùÓÚPython£¬ËùÒԷdz£·½±ã¡£
PAI TensorFlow
½«TensorFlowÇ¨ÒÆµ½PAIÉÏÖ®ºó£¬½«TensorFlow×÷Òµ·þÎñ»¯£¬ÆðTensorFlow×÷ÒµµÄʱºò²»ÐèҪȥÉêÇë×ÊÔ´¡¢×öѵÁ·Êý¾ÝµÄÇ¨ÒÆ£»·Ö²¼Ê½µ÷¶È£¨°üÀ¨µ¥»úºÍ¶à»ú£©Ö»ÐèÌύģÐÍѵÁ·PythonÎļþ£»GPU¿¨Ó³É䣻¶àÖÖÊý¾ÝÔ´£¬½á¹¹»¯Êý¾ÝºÍ·Ç½á¹¹»¯Êý¾Ý¶¼Ö§³Ö£»³¬²ÎÖ§³Ö£¬ÑµÁ·Ä£ÐÍʱ»áµ÷ÕûѧϰÂÊ£¬Í¨¹ý³¬²Î°Ñ²ÎÊý´æ½øÀ´¾Í²»ÐèҪÿ´Î¶¼µ÷ÕûÁË£»Ä£ÐÍÔÚÏßÔ¤²â£¬ÑµÁ·ºÃÄ£ÐÍÖ®ºó¿ÉÒÔ²¿Êðµ½ÔÚÏßÔ¤²â·þÎñÉÏ£¬µ÷ÓÃAPI»ñ֪ģÐͽá¹ûÊÇ·ñÕýÃæ¡£
PAI Pluto£¨¶à»ú¶à¿¨Caffe£©

CaffeÔçÓÚTensorFlow£¬Caffe¿ÉÒÔÈÏΪÊǵÚÒ»´úµÄÉî¶Èѧϰ¿ò¼Ü£¬Ê¹ÓÃCaffeʱÐèҪͨ¹ýÅäÖÃÎļþÅäÖÃÉî¶ÈѧϰµÄ¾í»ýÉñ¾ÍøÂ·¡£Ä¿Ç°£¬ºÜ¶à¹ØÓÚͼÏñµÄÓ¦Óö¼ÊÇ»ùÓÚCaffeÀ´×öµÄ£¬Ê¹ÓÃCNNµÄÍøÂ磬±ÈÈçÉí·Ý֤ʶ±ð¡¢¼ÝÕÕʶ±ðµÈ¡£ÆäȱµãÊǵ¥»ú£¬µ±ÑµÁ·Ñù±¾¶àµÄʱºòѵÁ·Ê±¼ä·Ç³£³¤¡£½«Caffeµ×²ã¼Þ½Óµ½OpenMPIͨÐÅ¿ò¼ÜÉÏ£¬¿ÉÒÔÖ§³Ö¶à»úCaffe£¬Äܹ»´ïµ½ÏßÐÔ¼ÓËٱȡ£
×ܽá

ǰÎÄÌáµ½ÁËPAIÉÏÖ§³ÖµÄ¸÷ÖÖ±à³ÌÄ£ÐÍ£¬ÔÚ¹«ÓÐÔÆÉÏÏ£Íû°Ñ»úÆ÷ѧϰ×÷Ϊһ¸ö·þÎñÍÆ³öÀ´£¬°üÀ¨Êý¾ÝÉÏ´«¡¢Êý¾ÝÇåÏ´¡¢ÌØÕ÷¹¤³Ì¡¢Ä£ÐÍѵÁ·¡¢Ä£ÐÍÆÀ¼Û¡£ÕâÑù¾Í¿ÉÒÔÔÚPAIÉÏ×öһվʽµÄÄ£ÐÍѵÁ·ºÍÔ¤²â¡£ |