Äã¸Õ¿ªÊ¼½Ó´¥AI£¬¿ÉÄܾõµÃPyTorchÕâ¸ö¿ò¼Üͦ¿á£¬ÄÜд¼¸ÐдúÂëÈõçÄÔ¡°Ñ§»á¡±ÈÏͼ»òÕßÁÄÌì¡£µ«ÅÜ×ÅÅÜ×Å£¬ÊDz»ÊÇ·¢ÏÖµçÄÔÂýµÃÏñÎÏÅ££¿Ò»¸ö¼òµ¥µÄÄ£ÐÍѵÁ·£¬±ðÈ˼¸·ÖÖӸ㶨£¬ÄãµÄµçÄÔÈ´Òª»¨Éϼ¸Ð¡Ê±ÉõÖÁÒ»ÕûÌì¡£ÕâʱºòÄã¿ÉÄÜ»áÏ룬ÊDz»ÊÇÎҵĴúÂëÓÐÎÊÌ⣿»òÕߣ¬ÕâÍæÒâ¶ù¸ù±¾¾Í²»ÊǸøÆÕͨÈËÍæµÄ£¿
Ïȱð¼±×Å»³ÒÉ×Ô¼º¡£ÎÊÌâµÄ¹Ø¼ü£¬ºÜ¿ÉÄܲ»ÔÚÄãµÄ´úÂ룬¶øÔÚÄãµçÄÔÀïµÄÄǿ顰оƬ¡±¡£Õâ¾ÍºÃ±ÈÄãÏëÌåÑéì³µµÄ¿ì¸Ð£¬È´¿ª×ÅÒ»Á¾¼ÒÓÃС½Î³µÈ¥Èü³µ³¡£¬ÒýÇæµ±È»»áÁ¦²»´ÓÐÄ¡£½ñÌ죬ÎÒÃǾÍÀ´³¹µ×¸ã¶®Õâ¸ö¾ö¶¨ÄãAIѧϰÌåÑé¿ìÂýµÄºËÐÄ¡ª¡ªÄÇЩ֧³ÖPyTorchµÄAIоƬ¡£¶®ÁËËü£¬Äã²ÅËãÕæÕýÄõ½Á˽øÈëAIÊÀ½çµÄÈ볡ȯ¡£
¼òµ¥À´Ëµ£¬PyTorch¾ÍÊÇAI¿ª·¢Õߵġ°¹¤¾ßÏ䡱ºÍ¡°Àָ߻ýľ¡±¡£Ëü°Ñ¸÷ÖÖ¸´ÔÓµÄÊýѧ¼ÆË㣨±ÈÈç¾ØÕó³Ë·¨¡¢¾í»ýÕâЩÉñ¾ÍøÂçµÄºËÐIJÙ×÷£©´ò°ü³ÉÁ˼òµ¥Ò×Óõĺ¯Êý¡£Äã²»ÐèÒª´ÓÁ㿪ʼÔìÂÖ×Ó£¬Ö»ÐèÒªÏñ´î»ýľһÑù£¬µ÷ÓÃÕâЩº¯Êý£¬¾ÍÄÜ×éºÏ³ö¸÷ÖÖ¸÷ÑùµÄAIÄ£ÐÍ¡£
ÄÇΪʲôÐèҪоƬÀ´¡°Ö§³Ö¡±ËüÄØ£¿Äã¿ÉÒÔ°ÑPyTorchÏëÏó³Éһλ²Å»ªºáÒçµÄ³øÊ¦£¨Ëã·¨£©£¬µ«ËûÐèÒªÒ»¸ö¸ßЧ¡¢³ÃÊֵijø·¿£¨Ó²¼þ£©À´Ê©Õ¹³øÒÕ¡£CPU£¨µçÄÔµÄÖÐÑë´¦ÀíÆ÷£©¾ÍÏñ¼ÒÀïµÄÆÕͨ³ø·¿£¬É¶¶¼ÄÜ×ö£¬µ«Ò»´ÎÖ»ÄÜ´¦ÀíÒ»¸öÈÎÎñ£¬³´²Ë¡¢Çвˡ¢ìÀÌÀµÃÅŶÓÀ´¡£¶øAI¼ÆË㣬ÓÈÆäÊÇѵÁ·Ò»¸öÄ£ÐÍ£¬ÐèҪͬʱ´¦Àíº£Á¿µÄ¡¢Öظ´ÐԵļòµ¥¼ÆË㣨±ÈÈç¸ø¼¸°ÙÍòÕÅͼƬµÄÿ¸öÏñËØµã×öÔËË㣩¡£ÓÃCPUÀ´×ö£¬¾ÍÏñÈÃÕâλ´ó³øÔÚ¼ÒͥС³ø·¿Àï×¼±¸¹úÑ磬ЧÂÊ¿ÉÏë¶øÖª¡£
ËùÒÔ£¬ÎÒÃÇÐèҪΪÕâλ¡°´ó³ø¡±Å䱸¸üרҵµÄ³ø·¿É豸£¬Õâ¾ÍÊÇAI¼ÓËÙоƬ¡£ËüÃÇÄÜͬʱ¿ª¼¸Ê®¡¢Éϰٸö¡°Â¯Ô£¬²¢Ðд¦Àíº£Á¿Êý¾Ý£¬°ÑѵÁ·Ê±¼ä´Ó¼¸ÌìËõ¶Ìµ½¼¸Ð¡Ê±¡£
ÊÐÃæÉÏÖ§³ÖPyTorchµÄ¡°³ø·¿É豸¡±Ö÷Òª·Ö¼¸´óÀ࣬¸÷Óи÷µÄÉó¤²ËϵºÍÆ¢Æø¡£
1. GPU£ºµ±Ç°×îÖ÷Á÷µÄ¡°È«ÄÜÐÍºó³ø¡±
Õâ¿ÖÅÂÊÇÄãÌýµÃ×î¶àµÄÃû×Ö¡£GPU£¬Í¼Ðδ¦ÀíÆ÷£¬±¾À´ÊÇÉè¼ÆÀ´´òÓÎÏ·¡¢äÖȾ»ÃæµÄ£¬ÒòΪËüÌìÉú¾ÍÉ󤲢Ðд¦Àí´óÁ¿ÏñËØÊý¾Ý¡£AI¼ÆËãÕýºÃÒ²ÊÇÕâÖÖÃܼ¯µÄ²¢ÐмÆË㣬ËùÒÔGPU¡°×ªÐС±¸ÉAIÒì³£³É¹¦¡£
*ËüÔõô֧³ÖPyTorch£¿Í¨¹ýCUDA£¨Ó¢Î°´ï¼ÒµÄ¼¼Êõ£©»òROCm£¨AMD¼ÒµÄ¼¼Êõ£©ÕâЩ¡°Í¨ÐÅÐÒ顱¡£PyTorchÄÜͨ¹ýËüÃÇ£¬Ö±½Ó°Ñ¼ÆËãÈÎÎñÅÉ·¢¸øGPUÈ¥·è¿ñ²¢Ðд¦Àí¡£
*ÌØµã£ºÉú̬¼«ÆäÍêÉÆ£¬½Ì³Ì¶à£¬ÉçÇø»îÔ¾¡£¶ÔÓÚÐÂÊÖС°×À´Ëµ£¬ÓµÓÐÒ»¿é»¹²»´íµÄNVIDIA GPU£¬¼¸ºõÒâζ×ÅÄãÄÜÎÞÕϰµØÔËÐÐÍøÉÏ99%µÄPyTorch½Ì³ÌºÍ¿ªÔ´ÏîÄ¿¡£ËüÊÇÐÔ¼Û±È×î¸ß¡¢×îÎÈÍ×µÄÈëÃÅÑ¡Ôñ¡£
2. NPU£ºÎªAI¶øÉúµÄ¡°ÖÇÄܳ´²Ë»ú¡±
NPU£¬Éñ¾ÍøÂç´¦ÀíÆ÷¡£ÌýÃû×Ö¾ÍÖªµÀ£¬ËüÊÇרÃÅΪÉñ¾ÍøÂç¼ÆËã¶¨ÖÆµÄоƬ¡£Èç¹û˵GPUÊÇ¡°È«ÄÜºó³ø¡±£¬ÄÇNPU¾ÍÊÇһ̨É趨ºÃ³ÌÐòµÄ¡°ÖÇÄܳ´²Ë»ú¡±£¬×¨ÃŸßЧµØ×ö¡°³´²Ë¡±£¨AIÍÆÀí£¬ÓÐʱҲ°üÀ¨ÑµÁ·£©ÕâÒ»¼þÊ¡£
*ËüÔõô֧³ÖPyTorch£¿ÕâÊÇÒ»¸öÐÂÇ÷ÊÆ¡£ÒÔǰºÜÂé·³£¬ÐèÒª³§ÉÌ×Ô¼ºÄ§¸ÄPyTorch´úÂë¡£µ«ÏÖÔÚÇé¿ö±äÁË¡£±ÈÈ绪ΪµÄ•NÌÚ£¨Ascend£©NPU£¬´ÓPyTorch 2.1°æ±¾¿ªÊ¼£¬ÒѾ±»¹Ù·½Õýʽ½ÓÄÉÖ§³ÖÁË¡£ÕâÒâζ×Å¿ª·¢Õß¿ÉÒÔÖ±½ÓÓÃÔÉúµÄPyTorch´úÂëÔÚ•NÌÚоƬÉÏÅÜ£¬ÌåÑé¸üÁ÷³©¡£Æ»¹ûM1/M2/M3ϵÁÐоƬÀïµÄÄǸöÇ¿´óGPU£¨ÆäʵҲ¼¯³ÉÁËNPUµÄÌØÐÔ£©£¬Ò²Í¨¹ýMetal Performance Shaders£¨MPS£©ºó¶Ë»ñµÃÁËPyTorchµÄ¹Ù·½Ö§³Ö¡£
*ÌØµã£ºÄÜЧ±È¸ß£¬ÔÚÌØ¶¨ÈÎÎñÉÏËٶȿ졣µ«Éú̬Ïà¶ÔGPU»¹Ôڳɳ¤ÖУ¬¸üÊʺÏÓÐÒ»¶¨»ù´¡ºó£¬ÔÚÌØ¶¨³¡¾°£¨±ÈÈçÊÖ»ú¶Ë¡¢±ßÔµÉ豸£©×·Çó¼«ÖÂÄÜЧʱ¿¼ÂÇ¡£
3. ÆäËû¡°ÌØÉ«³ø·¿¡±£ºFPGAºÍÔÆÉϾÞÎÞ°Ô
*FPGA£¨ÏÖ³¡¿É±à³ÌÃÅÕóÁУ©£ºÕâÏñÊÇÒ»¸ö¡°¿É×ÔÓÉÆ´×°µÄÄ£¿é»¯³ø·¿¡±¡£Ó²¼þµç·¿ÉÒÔËæÊ±ÖØÐ±à³Ì£¬ÒÔÊÊÓ¦²»Í¬µÄËã·¨¡£Ëü·Ç³£Áé»î£¬ÄÜЧҲ²»´í£¬µ«¡°×°ÐÞ¡±£¨±à³Ì£©Ãż÷¼«¸ß£¬Í¨³£ÊÇÓ²¼þ¸ßÊÖ»òÌØ¶¨ÁìÓò£¨ÈçͨÐÅ¡¢½ðÈÚ¸ßÆµ½»Ò×£©µÄÍæ¼ÒÔÚÓá£
*ÔÆÉÏAIоƬ£¨Èç¹È¸èTPU¡¢Cerebras CS-2µÈ£©£ºÕâЩÊÇ¡°ÎåÐǼ¶¾ÆµêµÄÖÐÑë³ø·¿¡±£¬¹æÄ£ÅÓ´ó£¬ÐÔÄֲܿÀ¡£ËüÃÇͨ³£Í¨¹ýÔÆ·þÎñÌṩ£¬Äã²»ÐèÒª¹ºÂòʵÌåÓ²¼þ£¬×âÓÃËüµÄËãÁ¦¼´¿É¡£¶ÔÓÚѵÁ·°ÙÒÚ¡¢Ç§ÒÚ²ÎÊýµÄ´óÄ£ÐÍ£¬ËüÃÇÊDZØÐèÆ·¡£µ«¶ÔÐÂÊÖÀ´Ëµ£¬¿ÉÄÜÔÝʱÓò»µ½£¬Çҳɱ¾½Ï¸ß¡£
¿´µ½ÕâÀÄã¿ÉÄÜÓеãÔΡ£Õâô¶àÑ¡Ôñ£¬ÎÒµ½µ×¸ÃÔõôÌô£¿±ð¼±£¬ÎÒÃÇÖ±½ÓÀ´¶Ô±Èһϡ£
¼òµ¥´Ö±©µÄ¶Ô±È±í
| оƬÀàÐÍ | ½ÇÉ«±ÈÓ÷ | Ö÷ÒªÓŵã | Ö÷Ҫȱµã | ÊʺÏË£¿ |
|---|---|---|---|---|
| :--- | :--- | :--- | :--- | :--- |
| GPU(ÈçNVIDIARTXϵÁÐ) | È«ÄÜÐÍÖ÷³ø | Éú̬Î޵У¬½Ì³Ì¼«¶à£¬Í¨ÓÃÐÔÇ¿£¬ÐÔ¼Û±È¸ß | ¹¦ºÄ½Ï¸ß£¬²»ÊÇAIרÓã¨ÓÐЩËãÁ¦ÓÃÓÚͼÐΣ© | AIÐÂÊÖ¡¢Ñо¿Õß¡¢´ó¶àÊý¿ª·¢ÕßµÄÊ×Ñ¡ |
| NPU(È绪Ϊ•NÌÚ¡¢Æ»¹ûMϵÁÐ) | ÖÇÄܳ´²Ë»ú | ÄÜЧ±È¸ß£¬AIרÓã¬Ä³Ð©ÈÎÎñ¿ì | Éú̬»¹ÔÚ·¢Õ¹£¬Í¨ÓÃÐÔÉÔÈõ | ×·ÇóÄÜЧµÄÒÆ¶¯/±ßÔµ¼ÆËã¡¢ÌØ¶¨Éú̬¿ª·¢Õß |
| CPU(ÄãµÄµçÄÔºËÐÄ) | ¼ÒÍ¥³ø·¿ | ʲô¶¼ÄÜ×ö£¬¼æÈÝÐÔ100% | ËÙ¶ÈÂý£¬²»Êʺϴó¹æÄ£ÑµÁ· | ½öÓÃÓÚѧϰ¼«Ð¡Ä£ÐÍ¡¢´úÂëµ÷ÊÔ |
| ÔÆÐ¾Æ¬(TPUµÈ) | ¾ÆµêÖÐÑë³ø·¿ | ËãÁ¦¾ÞÎÞ°Ô£¬Ãâά»¤ | ¹ó£¬ÒÀÀµÍøÂ磬ÓÐÒ»¶¨Ê¹ÓÃÃż÷ | ÆóÒµ¡¢ÐèҪѵÁ·³¬´óÄ£Ð͵ÄÍÅ¶Ó |
ºÃ£¬ºËÐÄÎÊÌâÀ´ÁË¡£ÎÒÖªµÀGPUÇ¿£¬NPUУ¬µ«×÷Ϊһ¸öÇ®°ü²»¹Ä¡¢Ê±¼ä±¦¹óµÄС°×£¬ÎÒµÚÒ»²½¸Ã̤ÏòÄÄÀ
´ð°¸ÊÇ£ºÎÞÄÔÓÅÏÈ¿¼ÂÇGPU£¬ÌرðÊÇNVIDIAµÄGPU¡£
Õâ²»ÊǸøÀϻƴò¹ã¸æ£¬¶øÊÇ×îÏÖʵµÄÉú´æ²ßÂÔ¡£ÔÒòÓÐÈýµã£¬·Ç³£³àÂãÂ㣺
µÚÒ»£¬Éú̬¾ÍÊÇÒ»ÇС£AIѧϰ²»ÊDZÕÃÅÔì³µ£¬ÄãÐèÒª¿´ÎÞÊý½Ì³Ì¡¢¸´ÏÖÎÞÊýÂÛÎÄ´úÂë¡¢ÓÃÎÞÊý¿ªÔ´¿â£¨±ÈÈçHugging FaceÉÏÄÇЩģÐÍ£©¡£ÕâЩ×ÊÔ´£¬¼¸ºõ99%¶¼ÊÇ»ùÓÚCUDA£¨Ò²¾ÍÊÇNVIDIA GPU£©»·¾³¿ª·¢ºÍ²âÊԵġ£ÄãÓÃÆäËûоƬ£¬ºÜ¿ÉÄÜÔÚ¡°»·¾³ÅäÖá±ÕâÒ»²½¾Í±»¿¨ËÀ£¬´úÂ뱨µÄ´íÍøÉ϶¼ËѲ»µ½½â¾ö·½°¸£¬Ö±½ÓȰÍË¡£
µÚ¶þ£¬ÊÔ´í³É±¾×îµÍ¡£Ò»¿éÖ÷Á÷¼¶±ðµÄNVIDIA GPU£¨±ÈÈçRTX 4060£¬4070¼¶±ð£©£¬¼Û¸ñÏà¶ÔÄܽÓÊÜ¡£ËüÄÜÈÃÄãÁ÷³©µØÑ§Ï°¼ÆËã»úÊÓ¾õ£¨CV£©¡¢×ÔÈ»ÓïÑÔ´¦Àí£¨NLP£©µÈÖ÷Á÷·½ÏòµÄ¾ø´ó¶àÊýÈëÃźÍÖм¶ÏîÄ¿¡£¼´Ê¹ÒÔºó¾õµÃ²»¹»ÓÃÁË£¬¶þÊÖÒ²Ïà¶ÔºÃ³ö¡£
µÚÈý£¬ÉçÇø¾ÍÊÇÄãµÄºóÔ®ÍÅ¡£Óöµ½ÎÊÌ⣬ÔÚÂÛ̳¡¢ÈºÀﺰһÉù¡°ÎÒµÄ3080ÅÜÕâ¸ö±¨´íÁË¡±£¬Ë²¼äÄÜÕ¨³öÒ»¶ÑÓÃͬ¿îоƬµÄ»ï°é°ïÄã½â´ð¡£Èç¹ûÄã˵¡°ÎÒµÄXX NPU±¨´íÁË¡±£¬¿ÉÄÜ´ó¼Ò¶¼µÃ³ÁĬһ»á¶ù¡£
ÄÇNPUÊDz»ÊǾÍûÓÃÁË£¿¾ø¶Ô²»ÊÇ¡£ËüµÄÎę̀ÔÚ¡°ÍÆÀí²¿Ê𡱺͡°±ßÔµ¶Ë¡±¡£±ÈÈ磬Äã°ÑѵÁ·ºÃµÄAIÄ£ÐÍÈû½øÊÖ»ú¡¢ÉãÏñÍ·¡¢ÖÇÄÜÒôÏäÀïÈÃËüʵʱ¹¤×÷£¬ÕâʱºòNPUµÍ¹¦ºÄ¡¢¸ßЧÂʵÄÓÅÊÆ¾Í·¢»Ó³öÀ´ÁË¡£µ«Çë×¢Ò⣬¡°ÑµÁ·¡±ºÍ¡°ÍÆÀí¡±ÊÇÁ½»ØÊ¡£Ïֽ׶Σ¬¶ÔÓÚÐÂÊÖ¡°ÑµÁ·¡±Ä£ÐÍÕâ¸öÖ÷ÒªÈÎÎñ£¬GPUÒÀÈ»ÊDz»¿ÉÌæ´úµÄÆðµã¡£
ÀíÂÛ˵Ôٶ࣬²»È綯ÊÖ¡£Èç¹ûÄãÒѾÓÐһ̨´øNVIDIA GPUµÄµçÄÔ£¨ÓÎÏ·±¾»ǫ̀ʽ»ú£©£¬ÄÇô£º
1.È·ÈÏÏÔ¿¨ÐͺţºÔÚµçÄÔÉÏ¿´¿´ÄãµÄGPUÊDz»ÊÇNVIDIAµÄ£¨AMDÏÔ¿¨¶ÔÐÂÊÖ²»Ì«ÓѺã©¡£
2.°²×°CUDAºÍPyTorch£ºÈ¥PyTorch¹ÙÍø£¬ÓÃËüµÄ°²×°ÃüÁîÑ¡Ôñ¶ÔÓ¦ÄãCUDA°æ±¾µÄPyTorch¡£ÕâÒ»²½Èç¹ûÓöµ½ÎÊÌâ£¬ÍøÉÏÓк£Á¿½Ì³Ì¡£
3.ÅÜͨµÚÒ»¸öDemo£º±ðд´úÂ룬ÏÈÕÒ¸ö×î¼òµ¥µÄ¡¢¾µäµÄMNISTÊÖдÊý×Öʶ±ð´úÂëÅÜһϡ£¿´µ½ÃüÁî¿òÀ↑ʼ·ÉËÙË¢ÆÁ£¬GPUÀûÓÃÂÊìÉý£¬¹§Ï²Ä㣬ÄãµÄ¡°×¨Òµ³ø·¿¡±¿ª»ðÁË£¡
Èç¹ûÄãµçÄÔûÓÐGPU£¬Ö»ÓÐCPU£¬Ò²²»ÊDz»ÄÜѧ¡£PyTorchÕÕÑùÄÜÔËÐУ¬Ö»ÊÇÂý¡£Äã¿ÉÒÔÓÃËüÔÚСÊý¾Ý¼¯£¨±ÈÈ缸°ÙÕÅͼƬ£©ÉÏÀí½â´úÂëºÍÔÀí¡£µ«µ±ÄãÏëÌôÕ½¸üÕæÊµµÄÏîĿʱ£¬Ò»¿éGPU£¬»òÕß×âÓÃÔÆ·þÎñÆ÷µÄGPUʵÀý£¨°´Ð¡Ê±¼Æ·Ñ£¬³õÆÚѧϰ³É±¾ºÜµÍ£©£¬¾ÍÊÇÄã±ØÐëÒª¿¼ÂǵÄÉý¼¶ÁË¡£
ËùÒÔ£¬±ðÔÙ±§Ô¹´úÂëÅܵÃÂýÁË¡£ÔÚAIµÄÊÀ½çÀËãÁ¦¾ÍÊÇÄãµÄʱ¼ä£¬ÄãµÄÁé¸Ð£¬Äã̽Ë÷δ֪±ß½çµÄȼÁÏ¡£Àí½â²¢ÎªÄãÊÖÖеÄPyTorch¿ò¼ÜÑ¡ÔñºÏÊʵġ°ÒýÇæ¡±£¬ÊÇÄã´ÓÅÔ¹ÛÕß±äΪʵ¼ùÕߵĹؼüÒ»Ô¾¡£´ÓÏÖÔÚ¿ªÊ¼£¬¹Ø×¢ÄãµÄÓ²¼þ£¬Ëü¿ÉÄܱÈÄãдµÄÏÂÒ»ÐдúÂë¸üÖØÒª¡£
