±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂ磬±¾ÎÄÕë¶Ô³¡¾°ÏµļÆËãÌØµã¶ÔÉî¶Èѧϰ¿ò¼Ü½øÐÐÉè¼ÆºÍÓÅ»¯¡£
|
|
Ò»£® ×ÛÊö
Éî¶Èѧϰ±È´«Í³µÄÂß¼»Ø¹éÓÐןüÇ¿µÄÄ£ÐͿ̻ÄÜÁ¦£¬Í¬Ê±Ò²´øÀ´Á˼ÆËãÁ¦°Ù±¶ÌáÉýµÄÐèÇó¡£Ïà±ÈͼÏñ¡¢ÓïÒô¡¢ÊÓÆµµÈÁìÓò£¬ËÑË÷¡¢¹ã¸æ¡¢ÍƼöµÈ³¡¾°ÓÐ×ŶÀÌØµÄ³¡¾°Ìصã:
Ñù±¾¹æÄ£ºÍÌØÕ÷¿Õ¼äͨ³£·Ç³£¾Þ´ó£¬Ç§ÒÚÑù±¾¡¢°ÙÒÚÌØÕ÷²¢²»º±¼û£¬Í¬Ê±´æÔÚ´óÁ¿µÄÏ¡ÊèÌØÕ÷×÷ΪEmbeddingÊäÈë¡£Õâ¾ÍÒªÇóÎÒÃÇÕë¶Ô´Ë³¡¾°ÏµļÆËãÌØµã¶ÔÉî¶Èѧϰ¿ò¼Ü½øÐÐÉè¼ÆºÍÓÅ»¯¡£
ÎÒÃÇ»ùÓÚTensorFlowÔÚËÑË÷¡¢¹ã¸æ¡¢ÍƼö³¡¾°Ï½øÐÐÁËÉî¶ÈµÄÓÅ»¯ÓëÔöÇ¿£¬ÄÚ²¿ÏîÄ¿Ãû³ÆÎªTensorFlowRS£¬Ö÷ÒªµÄ³É¹ûÈçÏ£º
(1) ½â¾öÁËÔÉúTFˮƽÀ©Õ¹ÄÜÁ¦²»×ãµÄÎÊÌâ¡£ÔÚÎÒÃǵIJâÊÔÖУ¬¾ø´ó¶àÊýËÑË÷¹ã¸æÄ£Ð͵ÄѵÁ·ÐÔÄÜÌáÉýÔÚÊ®±¶ÒÔÉÏ£¬Ä³Ð©Ä£Ð͵ļ«ÏÞÐÔÄÜ×î¸ß¿ÉÌáÉý°Ù±¶¡£
(2) Ö§³ÖÍ걸µÄÔÚÏßѧϰÓïÒ壬ģÐͱä¸üʵʱд³ö£»Ï¡ÊèÌØÕ÷ÎÞÐè×öÁ¬ÐøID»¯£¬¿ÉÒÔÖ±½ÓʹÓÃÔÊ¼ÌØÕ÷±íÕ÷½øÐÐѵÁ·£¬´ó·ù¼ò»¯ÁËÌØÕ÷¹¤³ÌµÄ¸´ÔÓ¶È¡£
(3) Ò첽ѵÁ·µÄÌݶÈÐÞÕýÓÅ»¯Æ÷£¨grad-compensation optimizer£©£¬ÓÐЧ¼õÉÙÁËÒì²½´ó¹æÄ£²¢·¢ÒýÆðµÄѵÁ·Ð§¹ûËðʧ¡£
(4) ¼¯³ÉÁ˸ßЧµÄGraph Embedding¡¢Memory Network¡¢Cross MediaµÈ¶àÖָ߼¶ÑµÁ·Ä£Ê½¡£
(5) Ä£ÐÍ¿ÉÊÓ»¯ÏµÍ³DeepInSightÌṩÉî¶ÈÄ£ÐÍѵÁ·µÄ¶àά¶È¿ÉÊÓ»¯·ÖÎö¡£
¶þ£® TensorFlowRS·Ö²¼Ê½¼Ü¹¹
ÔÚʹÓÃTensorFlowµÄ¹ý³ÌÖÐÎÒÃÇ·¢ÏÖTF×÷Ϊһ¸ö·Ö²¼Ê½ÑµÁ·ÏµÍ³ÓÐÁ½¸öÖ÷ÒªµÄÎÊÌ⣺
1. ˮƽÀ©Õ¹ÄÜÁ¦²î£ºÔڴ󲿷ÖÄ£Ð͵ÄÐÔÄܲâÊÔÖÐ,ÎÒÃÇ·¢ÏÖËæ×ÅÊý¾Ý²¢ÐжȵÄÔö¼Ó£¬µ¥¸öworkerµÄÑù±¾´¦ÀíQPS¼±¾çϽµ¡£µ±workerÊýÁ¿Ôö´óµ½Ò»¶¨¹æÄ£µÄʱºò£¬ÏµÍ³ÕûÌåQPS²»ÔÙÓÐÔö³¤ÉõÖÁÓÐËùϽµ¡£
2. ȱ·¦Í걸µÄ·Ö²¼Ê½Failover»úÖÆ£ºTF»ùÓÚ¾²Ì¬ÍØÆËÅäÖÃÀ´¹¹½¨cluster£¬²»Ö§³Ö¶¯Ì¬×éÍø£¬Õâ¾ÍÒâζ×ŵ±Ä³¸öps»òÕßworker¹ÒµôÖØÆôÖ®ºó£¬Èç¹ûip»òÕ߶˿ڷ¢Éú±ä»¯£¨ÀýÈç»úÆ÷crash£©£¬ÑµÁ·½«ÎÞ·¨¼ÌÐø¡£ÁíÍâTFµÄcheckpointÖ»°üº¬server´æ´¢µÄ²ÎÊýÐÅÏ¢£¬²»°üº¬worker¶ËµÄ״̬£¬²»ÊÇÈ«¾ÖÒ»ÖÂÐÔµÄcheckpoint£¬ÎÞ·¨ÊµÏÖExactly-OnceµÈ»ù±¾µÄFailoverÓïÒå¡£
Õë¶ÔÉÏÊöÎÊÌ⣬TensorFlowRS²ÉÈ¡µÄ½â¾ö·½°¸°üÀ¨£º
ͨ¹ý¶Ô½Ó¶ÀÁ¢²ÎÊý·þÎñÆ÷ÌáÉýˮƽÀ©Õ¹ÄÜÁ¦
ÔÚ¶ÔTF×ö¹ýϸÖµÄprofilingÖ®ºó£¬ÎÒÃÇ·¢ÏÖTFÔÉúµÄPSÓÉÓÚÉè¼ÆºÍʵÏÖ·½ÃæµÄ¶àÖÖÔÒò£¨grpc£¬lock£¬graph-engine£©£¬ºÜÄÑ´ïÁ¼ºÃµÄˮƽÀ©Õ¹ÄÜÁ¦¡£ÓÚÊÇÎÒÃǾö¶¨¶ªµôTF-PSµÄ°ü¸¤£¬ÖØÐÂʵÏÖÒ»¸ö¸ßÐÔÄܵIJÎÊý·þÎñÆ÷£ºPS-Plus¡£´ËÍâÎÒÃÇÌṩÁËÍêÕûµÄTF
on PS-Plus·½°¸£¬¿ÉÒÔÖ§³ÖÓû§ÔÚNative-PSºÍPS-PlusÖ®¼ä×ÔÓÉÇл»£¬²¢ÇÒÍêÈ«¼æÈÝTensorFlowµÄGraphÓïÒåºÍËùÓÐAPI¡£Óû§¿ÉÒÔÔÚÉî¶ÈÍøÂç´úÂëÒ»Ðв»¸ÄµÄÇé¿öÏ£¬½«²ÎÊý·Ö²¼ºÍÔËÐÐÔÚPS-PlusÉÏ£¬ÏíÊܸßÐÔÄܵIJÎÊý½»»»ºÍÁ¼ºÃµÄˮƽÀ©Õ¹ÄÜÁ¦¡£
ÖØÐÂÉè¼ÆFailover»úÖÆ£¬Ö§³Ö¶¯Ì¬×éÍøºÍExactly-OnceµÄFailover
TensorFlowRSÒýÈëÁËworker state£¬ÔÚcheckpointÖд洢ÁËworkerµÄ״̬ÐÅÏ¢£¬workerÖØÆôºó£¬»á´Ó½Ó×ÅÉϴεĽø¶È¼ÌÐøÑµÁ·¡£´ËÍâTensorFlowRSͨ¹ýzkÉú³ÉclusterÅäÖã¬Ö§³ÖÁ˶¯Ì¬×éÍøµÄFailover¡£ÐµÄFailover»úÖÆ¿ÉÒÔ±£Ö¤ÈÎÒâ½ÇÉ«¹ÒµôµÄÇé¿öÏ£¬ÏµÍ³¶¼ÄÜÔÚ·ÖÖÓ¼¶Íê³ÉFailover£¬²¢ÇÒ²»¶àËãºÍ©ËãÊý¾Ý
TensorFlowRSµÄÕûÌå¼Ü¹¹ÈçͼËùʾ£º
Èý£® PS-Plus
PS-PlusÏà¶ÔÓÚ´«Í³µÄParameterServerÓÐÈçÏÂÌØµã£º
(1)¸ßÐÔÄÜ£ºPS-Plusͨ¹ýÖÇÄܲÎÊý·ÖÅ䣬Á㿽±´£¬seastarµÈ¶àÏî¼¼Êõ£¬½øÒ»²½ÌáÉýÁ˵¥Ì¨serverµÄ·þÎñÄÜÁ¦ºÍϵͳÕûÌåµÄˮƽÀ©Õ¹ÄÜÁ¦¡£ÔÚʵ²âÖУ¬ÔÚ64coreµÄ»úÆ÷Éϵ¥¸öserverÄÜÇáËÉÓÃÂú55+µÄºËÐÄ£¬ÔÚdense³¡¾°ÏÂioÄÜ´òÂúË«25GÍø¿¨£¬ÏµÍ³ÕûÌåÔÚ
1~4000 worker µÄ·¶Î§ÄÚ¶¼¾ßÓнüËÆÏßÐÔµÄˮƽÀ©Õ¹ÄÜÁ¦
(2)¸ß¶ÈÁé»î£ºPS-PlusÓµÓÐÍêÉÆµÄUDF½Ó¿Ú£¬Óû§¿ÉʹÓÃSDK¿ª·¢¶¨ÖÆ»¯µÄUDF²å¼þ£¬²¢ÇÒ¿ÉÒÔͨ¹ý¼òµ¥µÄC++ÒÔ¼°Python½Ó¿Ú½øÐе÷Óá£
(3)Í걸µÄÔÚÏßѧϰ֧³Ö£ºPS-PlusÖ§³Ö·ÇID»¯ÌØÕ÷ѵÁ·£¬ÌØÕ÷¶¯Ì¬Ôöɾ£¬ÒÔ¼°Ä£ÐÍÔöÁ¿ÊµÊ±µ¼³öµÈÖ§³ÅÔÚÏßѧϰµÄÖØÒªÌØÐÔ¡£
ÏÂÃæ´ÓÖÐѡȡ¼¸µã×ö±È½ÏÏêϸµÄ½éÉÜ£º
1. ÖÇÄܲÎÊý·ÖÅä
²ÎÊý·ÖÅä²ßÂÔ(variable placement)£¬¾ö¶¨ÁËÈçºÎ½«Ò»¸ö²ÎÊýÇзֲ¢·ÅÖõ½²»Í¬µÄserverÉÏ¡£placement²ßÂԵĺûµÔڸ߲¢·¢µÄÇé¿ö϶ÔPSµÄÕûÌåÐÔÄÜÓÐ×ÅÖØ´óµÄÓ°Ïì¡£´«Í³ParameterServerµÄplacement·½°¸ÊÇÓÉϵͳԤÏÈʵÏÖ¼¸ÖÖ³£¼ûµÄplacementËã·¨£¨±ÈÈçÆ½¾ùÇзÖ+roundrobin£©£¬»òÕßÓÉÓû§ÔÚ´´½¨²ÎÊýµÄʱºòÊÖ¹¤»®·Ö£¬ÍùÍùûÓÐ×ۺϿ¼ÂÇÈ«¾ÖµÄ²ÎÊý¹æÄ£¡¢ServerµÄ¸ºÔصȡ£
PS-PlusʵÏÖÁË»ùÓÚÄ£ÄâÍË»ðËã·¨µÄÆô·¢Ê½²ÎÊý·ÖÅä²ßÂÔ£¬ºóÐøÒ²ÔÚ¿¼ÂÇʵÏÖ»ùÓÚÔËÐÐʱ¸ºÔØ£¬¶¯Ì¬rebalanceµÄplacement²ßÂÔ¡£PS-PlusµÄplacementÉè¼ÆÓÐÈçÏÂÓŵ㣺
×ۺϿ¼ÂÇÁËÈ«¾Ö²ÎÊýµÄshapeÐÅÏ¢£¬ÔÚcpu£¬ÄÚ´æ£¬ÍøÂç´ø¿íµÈÏÞÖÆÌõ¼þϸø³öÁ˽üËÆ×îÓŵÄplacement·½°¸£¬±ÜÃâÁËÊÖ¹¤·ÖÅäÔì³ÉµÄ²»¾ùÔÈ¡¢ÈȵãµÈÎÊÌâ¡£
Õû¸ö²ÎÊý·ÖÅä¹ý³ÌÓÉϵͳÄÚ²¿×Ô¶¯Íê³É£¬Óû§ÎÞÐèÅäÖü´¿É»ñµÃ½Ó½ü×îÓŵÄÐÔÄÜ£¬Óû§ÎÞÐèÁ˽âPSµ×²ãʵÏֵľßÌåϸ½Ú¡£
PartitionÓÉ¿ò¼Ü×Ô¶¯Íê³É£¬ÔÚÉϲãËã·¨´úÂ룬ÈçTF´úÂëÖУ¬²»ÐèÒª¶îÍâʹÓÃPartitionedVariableµÈ»úÖÆ£¬Ê¹Óüòµ¥·½±ã¡£
2. È¥ID»¯ÌØÕ÷Ö§³Ö
ĿǰÖ÷Á÷µÄÉî¶Èѧϰ¿ò¼Ü¶¼ÊÇÒÔÁ¬ÐøµÄÄÚ´æÀ´´æ´¢ÑµÁ·²ÎÊý£¬Í¨¹ýÆ«ÒÆÁ¿£¨IDÖµ£©À´Ñ°Ö·µ½¾ßÌåµÄÈ¨ÖØ¡£ÎªÁ˱ÜÃâÄÚ´æµÄÀË·Ñ£¬ÐèÒª¶ÔÌØÕ÷×ö´Ó0¿ªÊ¼µÄÁ¬ÐøID»¯±àÂ룬ÕâÒ»¹ý³ÌÎÒÃdzÆÖ®ÎªÌØÕ÷ID»¯¡£ÌØÕ÷ID»¯ÊÇÒ»¸ö·Ç³£¸´ÔӵĹý³Ì£¬ÓÈÆäÊǵ±Ñù±¾ºÍÌØÕ÷ÊýÁ¿·Ç³£ÅÓ´óµÄʱºò£¬ÌØÕ÷ID»¯»áÕ¼ÓôóÁ¿µÄʱ¼äºÍ»úÆ÷×ÊÔ´£¬¸øÑù±¾¹¹½¨´øÀ´Á˺ܴóµÄ¸´ÔÓ¶È¡£
PS-PlusÄÚ²¿ÊµÏÖÁËÒ»¸ö¶¨ÖÆ»¯µÄhashmap£¬Õë¶Ô²ÎÊý½»»»³¡¾°×öÁËרÃŵÄÓÅ»¯£¬ÔÚÖ§³ÖÌØÕ÷¶¯Ì¬ÔöɾµÄͬʱÌṩÁ˳¬¸ßµÄÐÔÄÜ¡£Í¨¹ýhashmap£¬PS-PlusÖ±½ÓʵÏÖÁ˶ԷÇIDÌØÕ÷µÄÖ§³Ö£¬¼«´óµÄ¼ò»¯ÁËÑù±¾¹¹½¨µÄ¸´ÔÓ¶È¡£
3. ͨÐŲãÓÅ»¯
¶ÔÓÚParameter Server¼Ü¹¹£¬ÑÓ³ÙÊÇÓ°ÏìÕûÌåÐÔÄܵÄÖØÒªÔÒò¡£ÓÈÆäÊÇÔÚÄ£Ð͸´ÔӶȲ»¸ßµÄÇé¿öÏ£¬Ä£ÐͼÆË㲿·ÖÍùÍùÔÚ10~100msÁ¿¼¶£¬ÄÇô×ÜÌåͨÐŵÄÑӳپͳÉΪһ¸ö¹Ø¼üÒòËØ¡£
ÔÚ´«Í³µÄpipelineÏß³ÌÄ£ÐÍ£¬¸ß²¢·¢Çé¿öÏÂÖжϺÍÏß³ÌÉÏÏÂÎÄÇл»»áµ¼ÖºܴóµÄ¿ªÏú£¬Í¬Ê±»áÒýÆð´óÁ¿µÄcache-line
miss¡£´ËÍ⣬¸ßƵµÄËø¾ºÕùÊÇ´øÀ´ÑÓ³ÙµÄ×îÖ÷ÒªÔÒòÖ®Ò»£¬¼´±ãÊǸ÷ÀàSpinLock¡¢¶ÁÐ´ËøµÈÓÅ»¯Ò²²¢²»ÄÜÓÐЧÏû³ýÕâ¸öÎÊÌâ¡£ÎÒÃÇÈÏΪpolling
+ run to completionÊÇÒ»¸öÕýÈ·µÄÑ¡Ôñ£¬²¢ÇÒÉè¼ÆÁËÎÒÃǵÄÕûÌåͨÐŲã¼Ü¹¹¡£ÔÚеÄͨÐŲãÖУ¬ÎÒÃÇʹÓÃÁËSeastar×÷Ϊµ×²ãµÄ¿ò¼Ü¡£¶ÔÓÚServer¡¢WorkerÉϵÄconnection£¬¶¼Ñϸñ±£Ö¤connection°ó¶¨µ½¹Ì¶¨µÄỊ̈߳¬Í¬Ê±Ïß³ÌÓëCPUºËÐİ󶨡£Request¡¢responseÖ±½Ó²ÉÓÃrun
to completionµÄ·½Ê½ÔÚµ±Ç°Ï̴߳¦Àí¡£ÕûÌå¼Ü¹¹ÈçÏÂͼËùʾ£º
ÔÚSeastarµÄ»ù´¡ÉÏ£¬ÎÒÃÇ×öÁ˺ܶ๦ÄÜ¡¢ÐÔÄܵĸĽøºÍÓÅ»¯£¬ÕâÀï×öһЩ¼òÒªµÄ½éÉÜ¡£
ÍⲿÏ߳̽»»¥¶ÓÁС£ÎÒÃÇ½è¼øSeastarºËÐÄÖ®¼äµÄ½»»¥»úÖÆ£¬ÌṩÁËÒ»¸ö M:N ÎÞËøÉú²úÕßÏû·ÑÕß¶ÓÁУ¬ÓÃÓÚÍⲿÏß³ÌÓëSeastarÄÚ²¿Ï߳̽øÐн»»¥¡£Ïà±È´«Í³¶ÓÁÐÐÔÄÜÓм«´óµÄÌáÉý¡£
дÇëÇó˳Ðòµ÷¶È¡£´ÓÍⲿÏß³Ìpollµ½µÄдÇëÇó£¬Èç¹ûÖ±½Óµ÷ÓÃSeastarµÄд½Ó¿Ú£¬»áµ¼ÖÂдbufferÎÞ·¨±£Ö¤ÓÐÐò¡£ÎÒÃÇͨ¹ý¶ÓÁлúÖÆµÄ¸ÄÔ죬×Ô¶¯±£Ö¤ÁËд˳Ðò£¬Í¬Ê±»ù±¾²»Ëðʧ¶àconnectionµÄ²¢·¢Ð´µÄÐÔÄÜ¡£
Áé»îµÄ±à½âÂë²ã¡£ÎÒÃÇÌṩÁËÒ»Ì×±à½âÂë²ãµÄ³éÏó½Ó¿Ú£¬·½±ãÓû§Ê¹Ó㬴Ӷø²»ÐèÒª½èÖúprotobufµÈ´«Í³µÄÐòÁл¯¡¢·´ÐòÁл¯µÄµÚÈý·½¿â£¬Í¬Ê±Ò²±ÜÃâÁËprotobufµÄһЩÐÔÄÜÎÊÌâ¡£
ËÄ£®ÐÔÄܲâÊÔ
ÎÒÃDzâÊÔÁËTensorFlowRSÔÚDenseÒÔ¼°WDE(Wide-Deep-Embedding)Á½ÖÖ¾µäÄ£Ð͵ÄÐÔÄÜÖ¸±ê£º
1.Ä£ÐÍ˵Ã÷£º
2.²âÊÔ½á¹û£º
3.WDEÄ£ÐÍÏÂNative-TFÓëTFRSˮƽÀ©Õ¹ÄÜÁ¦±È½Ï
Îå. ÔÚÏßѧϰ
ÒÔFtrlΪ´ú±í£¬ÔÚÏßѧϰ½üÄêÀ´ÔÚ¹¤Òµ½ç¿ªÊ¼±»´ó¹æÄ£Ó¦Óã¬ËüÊǹ¤³ÌÓëËã·¨µÄÉîÈë½áºÏ£¬¸³ÓèÄ£ÐÍʵʱ²¶×½ÏßÉÏÁ÷Á¿±ä»¯µÄÄÜÁ¦£¬ÔÚһЩ¶ÔʱЧÐÔÒªÇóºÜ¸ßµÄ³¡¾°£¬ÓÐÊ®·Ö´óµÄ¼ÛÖµ¡£
Éî¶ÈÄ£ÐͺÍLRÄ£ÐÍÒ»Ñù£¬¶ÔÔÚÏßѧϰÓÐ×ÅͬÑùÇ¿ÁÒµÄÐèÇó£¬È»¶øÄ¿Ç°Ö÷Á÷µÄÉî¶Èѧϰ¿ò¼Ü¶¼È±·¦¶ÔÔÚÏßѧϰµÄÖ§³Ö¡£TensorFlowRSͨ¹ý¶Ô½ÓPS-Plus£¬¸ø³öÁËÒ»Ì×ÍêÕûµÄ¶Ëµ½¶ËµÄÔÚÏßѧϰ½â¾ö·½°¸£¬¸³ÓèÁËTFÖ§³ÖǧÒÚ¹æÄ£·ÇID»¯ÌØÕ÷ÔÚÏßѵÁ·µÄÄÜÁ¦¡£
TFRSÕë¶ÔÔÚÏßѧϰµÄ³¡¾°×öÁËרÃÅÉè¼ÆºÍÓÅ»¯£¬¾ßÌå°üÀ¨£º
1. ·ÇID»¯ÌØÕ÷Ö§³Ö
ÔÚÔÚÏßѧϰµÄ³¡¾°ÏÂ×öÌØÕ÷ʵʱID»¯ÊDZȽϸ´Ôӵģ¬ÐèÒªÒ»¸ö³¬¸ßÐÔÄܵÄÈ«¾ÖµÄIDÉú³ÉÆ÷£¬Õâ¸øÑù±¾Éú³É´øÀ´Á˺ܴóµÄ¸´ÔÓ¶È¡£TensorFlowRSÀûÓÃPS-PlusÖ±½ÓʵÏÖÁ˶ԷÇIDÌØÕ÷µÄÖ§³Ö£¬¼«´óµÄ¼ò»¯ÁËʵʱÑù±¾¹¹½¨µÄ¸´ÔÓ¶È¡£
2. ÌØÕ÷¶¯Ì¬Ôöɾ
ÔÚÔÚÏßѵÁ·µÄ³¡¾°Ï£¬ÑµÁ·ÈÎÎñ»áÒÔserviceµÄÐÎʽ³¤ÆÚÔËÐУ¬ÔÚѵÁ·¹ý³ÌÖУ¬²»¶Ï»áÓÐÐÂÌØÕ÷¼ÓÈ뵽ģÐÍÖУ¬ÎªÁ˱£Ö¤ÑµÁ·¿ÉÒÔ³¤ÆÚ½øÐжø²»»áÒòΪÐÂÌØÕ÷µÄ²»¶Ï¼ÓÈëµ¼ÖÂOOM£¬PS-PlusÔÚÖ§³ÖÌØÕ÷¶¯Ì¬Ìí¼ÓµÄͬʱ£¬»¹ÌṩÁËĬÈϵÄÌØÕ÷ɾ³ý²ßÂÔ£¬¿ÉÒÔ½«µÍƵ»òÕßµÍÈ¨ÖØµÄÌØÕ÷ɾ³ýµô£¬Óû§»¹¿ÉÒÔͨ¹ýUDF¶¨ÖÆ·ûºÏ×ÔÉíÒµÎñÐèÇóµÄɾ³ý²ßÂÔ
3. Ä£ÐÍÔöÁ¿ÊµÊ±µ¼³ö
ÔÚÏßѧϰģÐ͸üеij£¼û·½Ê½ÓÐÈ«Á¿ºÍÔöÁ¿Á½ÖÖ¡£ÔÚÄ£ÐͲÎÊý½Ï¶àµÄÇé¿öÏ£¬È«Á¿¸üеķ½Ê½»á¶ÔÔÚÏßϵͳµÄ´ø¿í´øÀ´¾Þ´óµÄѹÁ¦£¬¶ø½µµÍ¸üÐÂÆµÂÊÓÖ»áʹģÐ͵ÄʵЧÐÔ½µµÍ¡£PS-PlusÖ§³ÖÒÔÈÎÒâÆµÂʽ«Ä£ÐÍÔöÁ¿²¿·Öʵʱд³öµ½ÏûÏ¢¶ÓÁУ¬ÔÚ´ó·ù¼õÉÙÍøÂçIOµÄͬʱʵÏÖÁËÕæÕýÒâÒåÉϵÄÄ£ÐÍʵʱ¸üС£
4. AUC Decay
ÔÚÔÚÏßѧϰµÄ³¡¾°Ï£¬ÎÒÃÇÏ£ÍûÔÚѵÁ·µÄ¹ý³ÌÖоͿÉÒÔ¾¡¿ìµÄ·¢ÏÖÄ£Ðͱ¾ÉíµÄÒì³££¬¶ø²»ÊǵÈÄ£Ð͸üе½ÏßÉÏÖ®ºó¡£Òò´ËÎÒÃÇÐèÒªÓÐһЩ·½·¨À´ÆÀ¹ÀÄ£ÐÍÔÚѵÁ·¹ý³ÌÖеÄ
AUCµÈÖ¸±ê¡£TFÀïĬÈϵÄstreaming aucµÄʵÏÖÔÚÀúÊ·Êý¾ÝÀÛ»ýÁËÒ»¶¨Á¿µÄʱºò£¬ÎÞ·¨¼°Ê±·´Ó¦µ±Ç°Ä£Ð͵Ä״̬£¬·´À¡ÓкܴóµÄÖͺóÐÔ¡£Òò´ËÎÒÃÇÒýÈëÁËеÄAUC¼ÆËã»úÖÆ£ºAUC
Decay¡£AUC Decay±¾ÖÊÉÏÊÇÒ»ÖÖÌØÊâµÄMoving Average£¬Í¨¹ý»ùÓÚʱ¼äµÄ¼õÒæ·½Ê½£¬Èõ»¯ÀúÊ·Ñù±¾ºÍÄ£ÐÍÔÚµ±Ç°AUC¼ÆËãÖеıÈÖØ£¬ÒÔ´ïµ½¸ü¿ì·´Ó¦Ä£Ðͱ仯µÄÄ¿µÄ
Áù. ´ó¹æÄ£ÑµÁ·³¡¾°ÏµÄÊÕÁ²Ð§¹ûÓÅ»¯
1. ÎÊÌâ²ûÊö
´óÊý¾ÝÄ£ÐÍÒýÈëÁË·Ö²¼Ê½²¢ÐÐѵÁ·£¬Í¬²½²¢ÐÐѵÁ·Êܳ¤Î²workerµÄÖÆÔ¼£¬²¢·¢ÊýÈÝÒ×ÊÜÏÞ¡£Òì²½²¢ÐÐÊÇ¿ìËÙѵÁ·µÄÖ÷Á÷¡£Òì²½²¢ÐÐѵÁ·´òÆÆÁËÆÕͨSGDѵÁ·µÄ´®ÐÐÐÔ£¬¼ÆËãµÄÌݶÈÓë¸üеÄÄ£ÐͲ»ÊÇÑϸñÒ»Ö£¬ÒýÈëÁËÌݶÈdelayµÄÎÊÌâ¡£
2. ÌݶȲ¹³¥
ÒýÈëÏà¹ØÒò×ÓÊÇÒÀ¾ÝÈçÏ·ÖÎöǰÌáµÄ£º
(1)Ò첽ѵÁ·Ê±£¬´æÔÚÒþʽµÄÌݶȶ¯Á¿¼ÓËÙÇé¿ö²Î¼û¡¶Asynchrony begets Momentum,
with an Application to Deep Learning¡·,²¢·¢Ô½´ó£¬Òþʽ¶¯Á¿Ô½´ó£¬Ôì³ÉÌݶÈÍùÒ»¸ö·½Ïò¹ý¶Èǰ½øµÄÇé¿ö¡£
(2)Èç¹û²»ÊǺÜÀϵÄw,Ïà¹ØÒò×ÓÊÇתÕÛÐźţ¬°µÊ¾Ä£ÐÍÔÚ¶à¸öworkerµÄ¶¯Á¿ÀÛ»ýÍÆ¶¯ÏÂǰ½øµÄÓÐЩ¹ý¶ÈÁË¡£
(3)´æÔÚ×Åtradeoff,Ì«ÀϵÄw£¬ÐźÅ׼ȷÂÊ»áϽµ£¬ÕâʱҪ¿ØÖÆ(µ÷С)ϵÊýlambda¡£
ÒòΪ
ÓëgµÄÏà¹ØÐԾ߱¸ÆÕÊÊÐÔ£¬ËùÒÔ¿ÉÒÔºÍÖ÷Á÷µÄsgd-based optimizer½áºÏ£¬ÊÊÓ¦²»Í¬³¡¾°µÄ²»Í¬ÓÅ»¯Æ÷²¢·¢ÑµÁ·ÐèÇó¡£
Æß. ʵÑé½á¹û
ÎÒÃÇÓÃÏà¹ØÐÔÒò×ÓboostÁËSGD¡¢Momentum¡¢AdaGradÈýÖÖËã·¨£¬²¢ÔÚÉú²ú»·¾³ºÍ¹«¿ªÊý¾Ý¼¯ÉÏ×öÁËʵÑ飬ʵÑé½á¹ûÈçÏÂ
°Ë£®¸ß¼¶ÑµÁ·Ä£Ê½
TFRSÖм¯³ÉÁ˶àÖָ߽×ѵÁ·Ä£Ê½£¬ÀýÈçGraph Embedding£¬Memory Network£¬Cross
Media TrainingµÈ¡£ÔÚ±¾ÎÄÎÒÃÇ»á¼òÒªµÄ½éÉÜһϣ¬ÔÚÒÔºóµÄÎÄÕÂÖÐ×öÏêϸµÄ²ûÊö¡£
Graph EmbeddingͼÊÇÒ»ÖÖ±íÕ÷ÄÜÁ¦¼«Ç¿µÄÊý¾Ý½á¹¹£¬µ«ÊÇÎÞ·¨Ö±½Ó×÷ΪÉñ¾ÍøÂçµÄÊäÈë¡£TFRSÖ§³ÖÑù±¾ÒÔͼµÄÐÎʽ½øÐÐÊäÈ룬²¢Ö§³Ö¶àÖÖËæ»úÓÎ×ßËã·¨¶¯Ì¬Éú³ÉÕý¸ºÑù±¾¡£Ä¿Ç°Graph
EmbeddingÒѾӦÓÃÔÚÁËËÑË÷ֱͨ³µµÄÏòÁ¿»¯Õٻصȶà¸öÏîÄ¿Àͨ¹ýÔÚUser-Query-ItemÈýÖÖ½ÚµãµÄÒì¹¹ÓÐÏòͼÖÐËæ»úÓÎ×ߣ¬Éú³ÉÉî¶ÈÉñ¾ÍøÂçÄܹ»´¦ÀíµÄÏ¡ÊèÌØÕ÷¡£×îÖÕѧϰ³öUser£¬QueryºÍItemÈýÕߵĸßάÏòÁ¿»¯µÄ±íʾ£¬ÓÃÓÚÏßÉÏ¹ã¸æµÄÏòÁ¿»¯Õٻء£ÖµµÃÒ»ÌáµÄÊÇ£¬³ýÁËGraph
Embedding£¬ÎÒÃÇͬÑùÖ§³Ö¶ÔͼµÄ½á¹¹½øÐÐѧϰ£¬ÀýÈçÔÚѵÁ·¹ý³ÌÖз´À¡µ÷ÕûͼÖеıߵÄÈ¨ÖØµÈ¡£
Memory Network¼ÇÒäÍøÂç×îÔçÓÉFacebookÔÚ2015ÄêÌá³ö£¬ÓÃÓÚQAϵͳÖС£ÔÚ±¾Ä£ÐͳöÏÖ֮ǰ£¬»úÆ÷ѧϰµÄÄ£ÐͶ¼È±·¦¿ÉÒÔ¶ÁÈ¡ºÍдÈëÍⲿ֪ʶµÄ×é¼þ¡£¶ÔºÜ¶àÈÎÎñÀ´Ëµ£¬ÕâÊÇÒ»¸öºÜÇ¿µÄÏÞÖÆ¡£±ÈÈ磬¸ø¶¨Ò»ÏµÁÐÊÂʵ»ò¹ÊÊ£¬È»ºóÒªÇ󻨴ð¹ØÓÚ¸ÃÖ÷ÌâµÄÎÊÌ⣬ËäÈ»ÔÔòÉÏÕâ¿ÉÒÔÓÃRNNµÈÄ£ÐͽøÐд¦Àí£¬È»¶øËüÃǵļÇÒ䣨Òþ²Ø×´Ì¬ºÍÈ¨ÖØ±àÂ룩ͨ³£Ì«Ð¡£¬²¢ÇÒ²»Äܾ«È·µØ¼Çס¹ýÈ¥µÄÊÂʵ¡£ÔÚ°¢ÀïÂèÂèËÑË÷¹ã¸æ³¡¾°Ï£¬ÎÒÃÇʹÓüÇÒäÍøÂç¶ÔÓû§ÐÐΪ½øÐн¨Ä£¡£
Ïà±ÈÒ»°ãµÄÔÚÑù±¾×éÖ¯½×¶Î½øÐмÇÒäÌåÉú³ÉµÄ·½Ê½£¬TFRSͨ¹ýÔÚѵÁ·¹ý³ÌÖÐÒýÈ붯̬¼ÇÒä´æ´¢Ä£¿é£¬Ö§³Ö³¤¶ÌÆÚ¼ÇÒ䣬´ó·ùÌá¸ßÁËÐòÁл¯ÀàÐÐΪÊý¾ÝµÄѵÁ·Ð§ÂÊ¡£
¾Å. ¿ÉÊÓ»¯Ä£ÐÍ·ÖÎöϵͳDeepInsight
DeepInsightÊÇÒ»¸öÉî¶Èѧϰ¿ÉÊÓ»¯ÖÊÁ¿ÆÀ¹Àϵͳ£¬Ö§³ÖѵÁ·½×¶ÎÄ£ÐÍÄÚ²¿Êý¾ÝµÄÈ«ÃæÍ¸³öÓë¿ÉÊÓ»¯·ÖÎö£¬ÓÃÒÔ½â¾öÄ£ÐÍÆÀ¹À¡¢·ÖÎö¡¢µ÷ÊÔµÈһϵÁÐÎÊÌ⣬Ìá¸ßÉî¶ÈÄ£Ð͵ĿɽâÊÍÐÔ¡£
ÏÂÃæÎÒÃÇͨ¹ýÒ»¸ö¹ýÄâºÏµÄÀý×ÓÀ´ËµÃ÷DeepInsightÔÚÄ£ÐÍÖÊÁ¿·ÖÎöºÍÎÊÌⶨλ·½Ãæ·¢»ÓµÄ×÷Óãº
ÉÏͼÊÇͨ¹ýDeepInsightÉú³ÉµÄÌØÕ÷È¨ÖØ·Ö²¼,´ÓͼÖÐÎÒÃÇ¿ÉÒÔ¿´µ½ÓÒ²à¹ýÄâºÏÄ£Ð͵ıßÈ¨ÖØ´óС·Ö²¼ºÜ²»¾ùÔÈ£¬³öÏÖÁË´óÁ¿È¨Öؼ«´óµÄ±ß£¬ÇÒ¼¯ÖÐÔÚÒ»Ìõ´ø×´ÇøÓòÄÚ£¬ÆäΪijһ×éÌØÕ÷ÊäÈëËùÁ¬½ÓµÄËùÓбߣ¬Õâ±íÃ÷Ä£Ð͹ý¶ÈÄâºÏÁ˸Ã×éÌØÕ÷µÄÐÅÏ¢¡£ÔÚʹÓÃÕýÔòÏîºÍdropoutÖ®ºó£¬¹ýÄâºÏµÄÎÊÌâÈÔȻû½â¾ö£¬Òò´ËÎÒÃÇ×îÖÕ¶¨Î»µ½ÎÊÌâ³öÏÖÔÚ¸Ã×éÌØÕ÷µÄÊäÈëÉÏ¡£·µ»ØËѺü£¬²é¿´¸ü¶à |