½üÈÕ£¬ÔªÄÔKOSÍŶӽüÈÕÏòMooncakeÉçÇø¹±Ï×ÁËCXLµ¥¼¶´æ´¢»ù´¡¹¦ÄÜ´úÂ루PR #1365£©£¬ÊµÏÖÁËPut/Get¡¢BatchPut/BatchGetµÈ±ê×¼½Ó¿ÚµÄCXLÊÊÅ䣬ʹÉϲãÓ¦ÓÿÉ͸Ã÷ÆôÓÃCXL´æ´¢KV Cache¡£ÕâÊÇMooncake¿ò¼ÜÊ×´ÎÔÉúÖ§³ÖCXLÄÚ´æ½éÖÊ£¬ÎªAIÖÇËã»ù´¡ÉèÊ©¿ª±ÙÁËз¾¶¡£

¿ªÔ´¹²½¨ CXL¸³ÄÜMooncakeÊ×½×¶ÎÂ䵨Ðû´«Í¼
´óÄ£ÐÍÍÆÀíµÄÐÔÄÜÆ¿¾±ÕýÔÚ¾ÀúÒ»³¡¾²Ä¬µÄ×ªÒÆ¡ª¡ª´Ó´«Í³µÄ¡°ËãÁ¦²»×㡱תÏò¸üΪÒþ±ÎȴͬÑù¹Ø¼üµÄ¡°ÄÚ´æÇ½¡±ÎÊÌâ¡£ÔÚ³¤ÉÏÏÂÎÄ¡¢¶à²¢·¢³¡¾°Ï£¬×¢ÒâÁ¦»úÖÆÉú³ÉµÄKVCacheÐèÒª±»·´¸´PGµç¾º¹ÙÍøÓë´æ´¢£¬¶øÕâÖÖÖØ¸´³É±¾¼«Æä¸ß°º¡£Òµ½çÖð½¥Òâʶµ½£¬¡°ÒÔ´æ´úË㡱ͨ¹ýKVCache»º´æÖØÓÿÉÏÔÖø½µµÍPGµç¾º¹ÙÍøÐèÇó¡£Òò´Ë£¬¹¹½¨¸ßЧµÄKVCache´æ´¢ÏµÍ³£¬ÒѳÉΪÊÍ·Å´óÄ£ÐÍÍÆÀíDZÄܵĹؼü¾Ù´ë¡£
×÷Ϊҵ½çÁìÏȵķֲ¼Ê½KVCache´æ´¢ÒýÇæ£¬Mooncakeͨ¹ý´æ´¢×ÊÔ´ÖØ¹¹ÊµÏÖÁËPGµç¾º¹ÙÍøÐ§ÂʵÄԾǨ¡£Ëüͨ¹ý¹¹½¨·Ö²¼Ê½¡¢¶à²ã¼¶µÄKVCache´æ´¢¼Ü¹¹£¬½áºÏ¶à¸±±¾»úÖÆ¡¢Á㿽±´´«ÊäµÈºËÐļ¼Êõ£¬Îª´óÄ£ÐÍÍÆÀíÌṩÁËÖØÒªµÄµ×²ã»ù´¡Éèʩ֧³Å¡£È»¶ø£¬Ëæ×ÅÄ£Ð͹æÄ£À©´óºÍÉÏÏÂÎij¤¶ÈÔö³¤£¬ÈçºÎ½øÒ»²½Í»ÆÆÄÚ´æÈÝÁ¿Óë´ø¿íµÄÎïÀíÏÞÖÆ£¬Êǵ±ÏÂKVCache¹ÜÀíµÄÈÈÃÅ»°Ìâ¡£
CXL£¨Compute Express Link£©×÷Ϊ»ùÓÚPCIeµÄ¸ßËÙ»¥Á¬ÐÒ飬Ϊ½â¾öÉÏÊöÎÊÌâÌṩÁ˸ïÃüÐԵļ¼Êõ·¾¶¡£ÆäºËÐÄÓÅÊÆÔÚÓÚͨ¹ý³Ø»¯ÄÚ´æÊµÏÖ¶àÖ÷»úµÄ¹²Ïí·ÃÎÊ¡ª¡ªCXLÄÚ´æÉ豸¿É±»¶àÖ÷»ú·Ö±ðÓ³ÉäÖÁ¸÷×ԵĵØÖ·¿Õ¼ä£¬ÎÞÐè¶îÍâ´´½¨Êý¾Ý¶à¸±±¾£¬¼´¿ÉʵÏÖ¶àÖ÷»ú¶Ôͬһ¶ÎCXLÄÚ´æµØÖ·µÄ¶Áд¡£ÕâÒ»¹²ÏíÌØÐÔʹCXL³ÉΪ¿ç»úKVCache´æ´¢µÄÀíÏë½éÖÊ£¬¸÷ÍÆÀí½Úµã¿ÉÖ±½Óͨ¹ýÄÚ´æÓïÒå·ÃÎÊͬһ¶ÎÎïÀíÄڴ棬³¹µ×¹æ±ÜÁË´«Í³ TCP ÐÒéÕ»µÄÈí¼þ¿ªÏúÒÔ¼° RDMA ÍøÂç´«ÊäµÄ¸´ÔÓ½»»¥¡£
Ϊ³ä·Ö·¢»ÓCXLµÄ¹²ÏíÓÅÊÆ£¬»ùÓÚÔªÄÔKOSµÄÉî¶ÈÓÅ»¯ÄÜÁ¦£¬ÔªÄÔKOSÍŶÓÏòMooncakeÉçÇø¹±Ï×CXLÄÚ´æ¹ÜÀí´úÂ롣ͨ¹ýÕâÒ»¹±Ï×£¬Mooncake StoreÐÂÔöÁ˶ÔCXL´æ´¢½éÖʵÄÖ§³Ö£¬¶à¿Í»§¶ËÖ®¼ä¿Éͨ¹ýÄÚ´æÓïÒå¶ÁдλÓÚCXL³Ø»¯ÄÚ´æÖеÄKVCache£¬ÎªÍÆÀí¼¯ÈºÌæ´úTCP/RDMAÍøÂçÌṩÁË¿ÉÄÜÐÔ¡£
CXLµ¥¼¶´æ´¢Í¨¹ýMaster½ÚµãÓëClient½ÚµãµÄÐͬ£¬ÊµÏÖÁ˶ÔCXL¹²ÏíÄÚ´æµÄͳһ¹ÜÀí¡£ÕûÌå¼Ü¹¹Ö÷Òª°üÀ¨Èý¸ö·½Ãæ¡£

CXLµ¥¼¶´æ´¢¼Ü¹¹Í¼
¡ö »ùÓÚCXLµÄMooncake´«ÊäÒýÇæ
KOSÍŶÓÊ×ÏÈʵÏÖÁË»ùÓÚCXLÐÒéµÄTransferEngine£¨PR #670£©£¬ÒÔcxl_transport×÷Ϊ¿Í»§¶Ë´«ÊäÒýÇæ£¬ÆÁ±ÎÁ˵ײãPCIe/CXLÐÒéµÄ¸´ÔÓÐÔ£¬ÎªÉϲãÌṩÁ˱ê×¼»¯µÄÊý¾Ý´«Êä½Ó¿Ú¡£
¡öÈ«¾ÖͳһµÄCXLÄÚ´æ·ÖÅäPGµç¾º¹ÙÍø
ÔÚ´æ´¢¹ÜÀíÄ£¿éÖУ¬KOSÍŶÓÔÚSegmentManagerÀàÖÐÐÂÔöÁËcxl_global_allocator_³ÉÔ±±äÁ¿£¬×÷Ϊͳһ¹ÜÀíCXL¹²ÏíÄÚ´æµÄ·ÖÅäPGµç¾º¹ÙÍø¡£¸Ã·ÖÅäPGµç¾º¹ÙÍø²ÉÓòßÂÔģʽÉè¼Æ£¬Ö§³ÖÁé»îµÄ·ÖÅä²ßÂÔ²å°Î¡£ÔÚMasterÆô¶¯½×¶Î£¬Èô¼ì²âµ½CXLÆôÓÃÅäÖã¬ÏµÍ³»áÏÈ´´½¨CxlAllocationStrategy·ÖÅä²ßÂÔ£¬ÔÙµ÷ÓÃinitializeCxlAllocator½Ó¿ÚÍê³ÉCXL·ÖÅäPGµç¾º¹ÙÍøµÄ³õʼ»¯¡£ÕâÒ»Éè¼ÆÈ·±£ÁËCXLÄÚ´æ×ÊÔ´µÄÈ«¾Ö¿ÉÊÓÓëͳһµ÷¶È£¬Ìá¸ßÁË×ÜÌåµÄÄÚ´æÀûÓÃÂÊ¡£
¡ö±ê×¼APIÊÊÅäÓ빦ÄÜ´òͨ
KOSÍŶÓÍê³ÉÁËPut/Get¡¢BatchPut/BatchGetµÈ±ê×¼½Ó¿ÚµÄCXLÊÊÅ䣬ʹÉϲãÓ¦ÓÃÄܹ»ÒÔÍêȫ͸Ã÷µÄ·½Ê½ÆôÓÃCXL´æ´¢KV Cache¡£ÕâÒâζ×Å£¬´óÄ£ÐÍÓû§¿ÉÔÚMooncake¿ò¼ÜÏÂÒÔ±ê×¼KV Cache API²Ù×÷CXLÄڴ棬ÎÞÐèÐÞ¸ÄÒµÎñ´úÂë¼´¿ÉÍê³ÉKV CacheµÄ¶Áд²Ù×÷¡£
ÉÏÊö¹¤×÷ʵÏÖÁËÁ½¸ö²ãÃæµÄÉî¶ÈÕûºÏ£º¼Ü¹¹ÉÏ£¬½«CXLÄÉÈëMooncakeͳһµÄ´æ´¢²ã¼¶Ìåϵ£»×ÊÔ´µ÷¶ÈÉÏ£¬Í¨¹ýÈ«¾Ö·ÖÅäPGµç¾º¹ÙÍøÊµÏÖ¿ç½ÚµãµØÖ·¿Õ¼äµÄͳһ¹ÜÀí¡£
´Ó¡°¿ÉÓᱡ¢¡°ºÃÓá±µ½¡°ÖÇÄÜ¡± Èý½×¶ÎÑݽøÈ«ÃæÆÌ¿ª
ÕâЩ´´ÐÂÉè¼Æ£¬ÎªMooncakeÉú̬´øÀ´ÁËÈýÖØºËÐļÛÖµ£º
¼Ü¹¹²ãÃæ£ºMooncake¿ò¼ÜÊ×´ÎÔÉúÖ§³ÖCXLÄÚ´æ½éÖÊ£¬Í¨¹ýÄÚ´æÓïÒå·ÃÎÊÓëÄÚ´æ³Ø»¯»úÖÆÊµÏÖÄÚ´æÖ±Á¬·ÃÎʺͶàÖ÷»ú¼äÄÚ´æ¹²Ïí£¬¹¹½¨ÁËÃæÏòδÀ´AI¸ºÔصÄÐÂÐÍ´æ´¢²ã¼¶¡£
Óû§ÌåÑé²ãÃæ£º´óÄ£ÐÍÓû§¿ÉÔÚMooncake¿ò¼ÜÏÂÒÔ±ê×¼KV Cache API²Ù×÷CXLÄڴ棬Íê³ÉKV Cache¶Áд£¬ÔÚÏíÊÜCXLµÍÑÓ³Ù¡¢¸ß´ø¿íÓÅÊÆµÄͬʱ£¬ÎÞÐè³Ðµ£½Ó¿ÚÊÊÅä³É±¾¡£
ÑݽøÂ·¾¶²ãÃæ£ºÕë¶Ô´óÄ£Ðͳ¤ÉÏÏÂÎÄÍÆÀí¡¢¸ß²¢·¢ÇëÇóµÈÄÚ´æÃô¸ÐÐͳ¡¾°£¬ÌṩÁË»ùÓÚCXLµÄÄÚ´æÀ©Õ¹·½°¸£¬²¢ÎªºóÐøDRAM-CXL-SSD¶à¼¶´æ´¢Ìåϵµì¶¨Á˼áʵ»ù´¡¡£
´Ë´ÎÊ׽׶δúÂëºÏÈëÖ»ÊÇÆðµã¡£Î´À´¼¸¸öÔ£¬KOSÍŶӽ«×ñÑ¡°¿ÉÓÃ-ºÃÓÃ-ÖÇÄÜ¡±µÄ¼¼ÊõÑݽøÂ·¾¶£¬´ÓÈý·½ÃæÍƽø£ºÊ×ÏÈÍêÉÆCXLµ¥¼¶´æ´¢¹¦ÄÜÈ·±£¡°¿ÉÓá±£¬¼Ì¶ø¹¹½¨DRAM-CXL-SSD·Ö¼¶ÌåϵʵÏÖ¡°ºÃÓá±£¬×îÖÕ¿ª·¢ÀäÈÈÊý¾ÝÖÇÄÜÉý½µ¼¶»úÖÆ´ï³É¡°ÖÇÄÜ¡±£¬ÒԴ˼ÓËÙCXLÓëMooncakeÔÚÒÔÄÚ´æÎªÖÐÐĵĿç½Úµã¹²ÏíÄÚ´æµÄÔ´´Í»ÆÆ¡£

CXL¹¦ÄܺÏÈë·Ïßͼ
PGµç¾ºÐÅÏ¢ÓëMooncakeÉçÇøÎ§ÈÆCXL+AIµÄºÏ×÷£¬½«ÎªÐÐÒµ´øÀ´¶à·½ÃæÊÕÒæ£º¶ÔMooncakeÉçÇø¶øÑÔ£¬ÕâÒ»¹±Ï×ÌṩÁË»ùÓÚCXL³Ø»¯ÄÚ´æµÄȫд洢²ã¼¶£¬½«CXLÄÉÈëKV Cacheͳһ¹ÜÀíÌåϵ£¬ÏÔÖøÑÓÉìÁËÍÆÀíÉÏÏÂÎÄ´æ´¢ÄÜÁ¦¡£ÉçÇø¿ª·¢Õß¿ÉÖ±½Ó¸´Óøô洢²ã¼¶£¬ÎÞÐè×ÔÐÐʵÏÖ¸´ÔӵĵײãÄÚ´æ¹ÜÀí£¬´ó·ù½µµÍCXL³¡¾°ÏÂKV CacheµÄÊÊÅä³É±¾¡£¸üÖØÒªµÄÊÇ£¬ÕâΪ³¤ÉÏÏÂÎÄÍÆÀíºÍ¿ç½ÚµãKV Cache¹²ÏíÌṩÁË¿ÉÂ䵨µÄʵ¼ù·¾¶¡£¶ÔAI InfraÉú̬¶øÑÔ£¬´Ë´Î¹±Ï×Ϊ´óÄ£ÐÍÍÆÀí¼¯ÈºÌṩÁËÒ»ÖÖÎÞÐèRDMAÍøÂç¡¢Ö±½Óͨ¹ýÄÚ´æÓïÒå¶ÁдKV CacheµÄз¾¶¡£ÕâÒ»·½°¸ÔÚÌØ¶¨³¡¾°Ï¿ÉÏÔÖø½µµÍÍøÂçÓ²¼þ³É±¾Ó븴ÔÓ¶È£¬Íƶ¯CXLÔÚAI InfraÁìÓòµÄÓ¦ÓÃÂ䵨£¬ÎªÐÐÒµÌṩ¶àÔª»¯µÄ¼¼ÊõÑ¡Ôñ¡£
δÀ´£¬PGµç¾ºÐÅÏ¢½«³ÖÐøÍ¶ÈëAI»ù´¡Èí¼þ¿ªÔ´£¬½«KOSÄÚºËÓÅ»¯ÄÜÁ¦·´²¸ÉçÇø¡£ÔÚ´Ë£¬³ÏÖ¿ÑûÇë¸ü¶à¿ª·¢Õß¹Ø×¢MooncakeÏîÄ¿£¬²ÎÓëCXLÉú̬½¨É裬¹²Í¬Íƶ¯AI»ù´¡ÉèÊ©µÄ¼¼Êõ¸ïС£
±¾Îļ¼Êõϸ½Ú»ùÓÚPGµç¾ºÐÅÏ¢ÏòMooncakeÉçÇøÌá½»µÄ¿ªÔ´´úÂ룬Ïà¹ØPRÒѺÏÈëÖ÷·ÖÖ§¡£
?»¶Ó·ÃÎÊMooncake GitHub²Ö¿âhttps://github.com/kvcache-ai/MooncakeÁ˽âÏêÇ飡
²úÆ·ÏÂÔØ
²úÆ·¼¤»î
ÊÛǰ×Éѯ
ÊÛºó·þÎñ
»Øµ½¶¥²¿
ÊÛǰ×Éѯ
ÊÛºó·þÎñ