ããã«ã¡ã¯ï¼ç§ã¯ãã¡ã³ã¨ã³ãã¨ç³ãã¾ãï¼JXéä¿¡ç¤¾ã§æ©æ¢°å¦ç¿ã¨ã³ã¸ãã¢ãè¡ã£ã¦ããã¾ãï¼ ç§ã¯PyTorch Lightningãåãã¦ä½¿ã£ãã¨ãã®ä¾¿å©ãã«æåãã以æ¥ãPyTorch Lightningã®ããã¼ã¦ã¼ã¶ã¼ã§ãï¼ ãã®è§£èª¬è¨äºããã¼ã¦ã¼ã¶ã¼ã®ç§ãçæ§ã«PyTorch Lightningãç¥ã£ã¦ããã ããå©ç¨ã®ãã£ããã«ãªã£ã¦ã»ããã¨æã£ã¦å ¬éãã¦ãã¾ãï¼
ä»åã®è§£èª¬è¨äºã®ãµã³ãã«ã³ã¼ãã¯ãã¡ãã«ããã¾ãããã²ãå®éã®ã³ã¼ããæã«ã¨ã£ã¦ä½é¨ãPyTorch Lightningã®ç´ æ´ãããã«è§¦ãã¦ã¿ã¦ãã ããï¼
ãã®è¨äºå 容ã¯ï¼ï¼åã®MLOpsåå¼·ä¼ã§çºè¡¨ãã¾ããï¼ speakerdeck.com
- èªè ã®å¯¾è±¡
- PyTorch Vs PyTorch Lightning
- PyTorch Lightningã¨ã¯
- PyTorch Lightning ã®æ¸ãæ¹
- ãµã¤ã¨ã³ã¹ã«é¢ããé¨å
- ãµã¤ã¨ã³ã¹ä»¥å¤ã®é¨åã®ã³ã¼ãã®æ¸ãæ¹(çµæã®è¡¨ç¤ºã¨ä¿åã«ã¤ãã¦)
- ãµã¤ã¨ã³ã¹ä»¥å¤ã®é¨åã®ã³ã¼ãã®æ¸ãæ¹(callback : ã¢ãã«ã®ä¿åã¨early stopping)
- ãµã¤ã¨ã³ã¹ä»¥å¤ã®é¨åã®ã³ã¼ãã®æ¸ãæ¹(GPU /TPU /IPUã§ã®å¦ç¿)
- PyTorch Lightningããä¸ä½ã®ã©ããã¼ (PyTorch Lightning Flash)
- æã ã¨ã¨ãã«ææ¦ãã仲éãæ±ãã¦ãã¾ã
- æ¥æ¬ã§PyTorch Lightningãçãä¸ãã¦ããããï¼
èªè ã®å¯¾è±¡
- PyTorch Lightningã使ã£ã¦ã¿ããããæåã®åãæ¹ãããããªã人
- PyTorch ãããç¨åº¦ç¥ã£ã¦ããæ¹
PyTorch Vs PyTorch Lightning
PyTorch ã«ã¤ãã¦
PyTorchã¯Deep Learningãå®è¡ããæã«ç¨ãããã代表çãªãã¬ã¼ã ã¯ã¼ã¯ã§ãããèªç±åº¦ãé«ããåã
人ã§èªç±ãªè¨è¿°ãå¯è½ã§ããããã¯ã¡ãªããã§ãããã¾ãããå¯èªæ§ãé常ã«ä½ããªããªã¹ã¯ãããã¾ããã¾ããå¦ç¿æã®ã¢ãã«ãçµæã®ä¿åãªã©ããµã¤ã¨ã³ã¹ã®å´é¢ã¨ã¯ç°ãªãã³ã¼ãæ¸ãã¿ã¤ãã³ã°ãå¤ããã³ã¼ãã£ã³ã°ã«å¤ãã®æéãåããã¾ãããããã£ã¦ãPyTorchã§æ©æ¢°å¦ç¿ãè¡ããªãããã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãã«ã¯ãµã¤ã¨ã³ã¹ã®è½åã¨ã³ã¼ãã£ã³ã°ã®ï¼ã¤ã®è½åãæ±ãããã¾ãã
PyTorch Lightningã«ã¤ãã¦
䏿¹ããã¼ã¿ãµã¤ã¨ã³ãã£ã¹ããåãååã«çºæ®ããããã¾ã§æ³åãããªãã£ã驿°çãªãã¨ãããããªããã³ã¼ãã£ã³ã°ã®é¨åãããµã¤ã¨ã³ã¹ã®é åã«åãæ³¨ãã¹ãã ã¨æãã¾ãã
PyTorch Lightningãç¨ããã¨ãã³ã¼ãã£ã³ã°ã«ãããæéãæå°éã«ãããã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãããµã¤ã¨ã³ã¹ã®é åã«å
¨åãæ§ããããããã«ãªãã¾ãã
JXé信社ã§PyTorch Lightningãæ¡ç¨ããçç±
JXé信社ã®MLãã¼ã ã§ã¯"åã使ãã¹ãå ´æã«æ³¨åããã"ã¨ãããã¨ãç念ã大äºã«ãã¦ããããã®å·¥å¤«ã®ä¸ã¤ã¨ãã¦å¦ç¿ã»ãããã¤ã®ãã³ãã¬ã¼ãã³ã¼ãã使ããéç¨ãã¦ãã¾ãããã®ãã³ãã¬ã¼ãã¯PyTorch Lightningããã¼ã¹ã«è¨è¿°ããã¦ãã¾ãã詳ããã¯ãã¡ãã®ããã°ããåç §ãã ããã
PyTorch Lightningã¨ã¯
PyTorch Lightningã¯"ãã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãã¯ãµã¤ã¨ã³ã¹ã«åãæ§ãã¹ãã§ãã³ã¼ãã£ã³ã°ã¯æå°éã®å´åã§"ãã³ã³ã»ããã«ä½æããããPyTorch ã®ã©ããã¼ã§ããPyTorch Lightningã¯å¾è¿°ããããã«ãã³ã¼ãã®æ¸ãæ¹ã«æå®ãããããµã¤ã¨ã³ã¹ã«é¢ããé¨å(ã¢ãã«ã®ã¢ã¼ããã¯ãã£ãå¦ç¿æ¹æ³ãåå¦çã®æ¹æ³ãªã©)ãã¡ã¤ã³ã«æ¸ãã¾ãããã®ã³ã¼ãã®æ¸ãæ¹ã®é©åº¦ãªç¯æ£ã¯ãã¼ã éã§ã®å¯èªæ§ãä¸ãã广ãããã¾ãï¼ã¾ããGPUãTPUã§ã®å¦ç¿ããã¢ãã«ã¨çµæã®ä¿åãªã©è¤éãªã³ã¼ãã£ã³ã«é¢ããé¨åã¯æ°è¡æ¸ãè¶³ãã ãã§ãå®è¡ãããã¨ãã§ããããã«ãªã£ã¦ãã¾ãã
PyTorch Lightningã®æè»æ§ã«ã¤ãã¦
ãã®æ§ã«èãã¨ãæè»æ§ãæ¬ ãã¦ãããã§ããªãå®é¨ãããã®ã§ã¯ï¼ã¨æããæ¹ãããã¨æãã¾ããããããæè»æ§ãæå¤§åãããã¨ãPyTorch Lightningã®å²å¦ã¨ãã¦ç´¹ä»ããã¦ãããã»ã¨ãã©ãã¹ã¦ã®å®é¨ãåç¾ãããã¨ãå¯è½ã§ãã
ã¾ãPyTorch Lightningããã£ã¨ä½¿ã£ã¦ããã®ç§å人çãªæè¦ã¨ãã¦ã¯ããã¡ãã®ããã°ã«ãè¨è¿°ããã¦ããéããæ¥åã«ããã¦PyTorch Lightningã®è¨è¿°ã§å°ã£ããã¨ã¯ã»ã¨ãã©ãªããã¡ãªããã®ã¿ã享åãã¦ãã¾ãã(ããããåæå¸«ããå¦ç¿ãPyTorch Lightningã§è¨è¿°ãããã¨ããéãOptimizerã®è¨è¿°ã«æ²¼ã£ã¦ãã¾ããä½è¨ãªæéã¨å´åãè²»ããããã¨ãä¸åº¦ããã¾ãã)
PyTorch Lightning ã®æ¸ãæ¹
ãµã¤ã¨ã³ã¹ã«é¢ããé¨å
PyTorch Lightningã«æ¸ãæ¹ã®ãã¬ã¼ã ã¯ã¼ã¯ãããããããåãã¦ããããã«æ¸ãã¨è¨è¿°ãã¾ããããã®ãã¼ã¸ã§ã¯ãPyTorch Lightningã®æ¸ãæ¹ããPyTorch ã¨ã®å·®åã¨ããæèã§è¨è¿°ããã¦ããã ãã¾ãããã®ã ã¼ãã¼ã¯é常ã«ããããããã ã¼ãã¼ã§ãã®ã§ããã¡ãã®ã ã¼ãã¼ãã覧ã«ãªã£ã¦ããã ãã¦ãããä¸ã®ç« ãèªãã§ã¿ã¦ãã ããã Google Colabã§åä½ãããµã³ãã«ã³ã¼ãã¯ãã¡ãã«ããã¾ããããã°ã®å 容ã¨å ¨ã¦ãä¸å¯¾ä¸å¯¾å¿ãã¦ã¾ããããå®éãèªèº«ã®æã§åããã¦ã¿ã¦ãã ããï¼
PyTorch Lightningã¯Dataã«é¢ããé¨å(DatasetãDataloaderç)ã¨å¦ç¿ã«é¢ããé¨å(ã¢ãã«ã®æ§é ãå¦ç¿ã«ã¼ãã®æ¸ãæ¹)ã«å¤§ããåºåããã¾ãã
Dataã«é¢ããé¨å(LightningDataModule)
PyTorch ã§ã¯å¦ç¿ã«ç¨ãããã¼ã¿ã¯torch.utils.data
ã®DataLoader
ãDataset
ãç¨ãã¦è¨è¿°ããã¾ããPyTorch Ligthningã§ã¯ãLightningDataModule
ãç¶æ¿ããã¯ã©ã¹ã使ãããã®ä¸ã®train_dataloader()
ã¨åã®ã¤ãã颿°ã«trainã«ç¨ããDataloaderãreturnããå¿
è¦ãããã¾ããvalidation, testãåæ§ã§ã(å³ï¼)ãããã§æ³¨æãã¹ããªã®ã¯é¢æ°åã¯å¤æ´ãã¦ã¯ãªãã¾ããããã®æ§ã«é¢æ°åãå®å
¨ã«æ±ºã¾ã£ã¦ããã®ã§ãä»ã®ãã¼ã ã¡ã³ãã¼ãã³ã¼ããèªãã¨ãã«ã©ã®ãã¼ã¿ãã©ãã«å©ç¨ããã¦ããã®ããããããããªãã¾ãã
LightningDataModule
ã«ã¯ããã®ãã¼ã¸ã§ç´¹ä»ãã颿°ä»¥å¤ã«ãå¤ãã®é¢æ°ãå®ç¾©ããã¦ãã¾ããLightningDataModule
ã«ã¤ãã¦ã®è©³ç´°ã¯å
¬å¼ã®ããã¥ã¡ã³ããã覧ãã ãã.
å¦ç¿ã«é¢ããé¨å(LightningModule)
PyTorch ã§ã¯ãtorch.nn
ã®moduleãç¶æ¿ããã¯ã©ã¹ã§ã¢ãã«ã®æ§é ãæ±ºå®ãããã®å¾ãå¦ç¿ã«ã¼ããtrain.pyãªã©ã«ãã¿ãããããã¨ãå¤ãã¨æãã¾ããPyTorch Lightningã§ã¯ãã¢ãã«ã®æ§é ã¨å¦ç¿ã«ã¼ãã§ã®è¨ç®æåãLightningModule
ã§å®ç¾©ãã¾ãã
å³ï¼ã¯LightningModuleã«å¿ è¦ãªæä½éã®ã³ã¼ãã示ãã¦ãã¾ããã¾ããinitã§ã¢ãã«ã®ãã¼ããå®ç¾©ããforwordã§ã¢ãã«ã®æ§é (è¨ç®ã®æµã)ãå®ç¾©ãã¾ã(ããã¾ã§ã¯PyTorchã¨åã)ã
次ã«PyTorch Lightningã§ã¯ãå¦ç¿ã«ã¼ãã®åã¹ãããã§ã©ã®æ§ã«è¨ç®ãã¦ã»ããããè¨è¿°ãã¾ããå³ï¼ã§ã¯ãtraining_step()
ã¨ãã颿°ãå®ç¾©ããã¦ãã¾ããããã®é¢æ°ã¯å¦ç¿ã«ã¼ãã®ããããããä¸ããããã¨ãã«ãã©ã®æ§ã«è¨ç®ããã®ãè¨è¿°ãã¦ã¾ããããã§ãreturn ã®dictä¸ã®"loss"ãéµã¨ããå¤ãåºã«Lightningã®æ¹ã§é伿ãæé©åãè¡ããã¾ãããã®ã¨ãã«ç¨ããããOptimizerãschedulerã¯configure_optimizers()
ã«å®ç¾©ããå¿
è¦ãããã¾ãã
å³ï¼ã§ã¯ãtraining_step(å¦ç¿ã®ãããããã«å¯¾ããå¦ç)
ã ããæ¸ããã¦ã¾ãããtraining_epoch_end
ãvalidation_step
, validation_epoch_end, on_fit_start
ãªã©ãå¦ç¿ã«ã¼ãã®åã¹ãããã§è¡ã£ã¦ã»ãããã¨ã®è¨è¿°ãå¯è½ã«ãªã£ã¦ãã¾ãã
ã¾ããPyTorchã§ã¯å¦ç¿ã«ã¼ãã®è¨è¿°ã®éããã¼ã¿ãã¢ãã«ãCPUãGPUã«ç§»åããå¿
è¦ãããã.to(device)
ãè³ãæã«è¨è¿°ããå¿
è¦ãããã¨æãã¾ããPyTorch Lightningãç¨ãã¦ããã¨to(device)
ã®è¨è¿°ããªãã¦ããLightningãèªåã§å¦ç¿ã«ç¨ããããã¤ã¹ã«ãã¼ã¿ãç§»åãã¦ããã¾ããLightningModule
ã«ã¤ãã¦ã®ä»ã®é¢æ°ãå«ã詳細ã¯ãã¡ãã御覧ãã ããã
å¦ç¿ã®åãæ¹
ä¸ã§å®ç¾©ãããLightningDataModule
ã¨LightningModule
ãç¨ãã¦å¦ç¿ããã«ã¯ãTrainerãå®ç¾©ããtrainer.fitã§å¦ç¿ããã¾ã(å³ï¼)ã
ãµã¤ã¨ã³ã¹ã«é¢ããã³ã¼ãã®æ¸ãæ¹ã¾ã¨ã
ãã®ãã¼ã¸ã§ã¯ãµã¤ã¨ã³ã¹ã«é¢ããã³ã¼ãã®è¨è¿°æ³ã«ã¤ãã¦è¨è¿°ãã¦ãã¾ãããPyTorch Lightningãå©ç¨ãã¦ããã¨ãä¸è¨ã§è§£èª¬ãããµã¤ã¨ã³ã¹é¨åã®å®è£ ã«è²»ããæéãå¤ããªãã¾ãï¼ ä¸æ¹ãããã¾ã§èªã¾ããæ¹ã¯ä»¥ä¸ã®çåãæã£ãã¨æãã¾ãã
- çµæã®è¡¨ç¤ºãä¿åã¯ã©ãããã®ï¼
- ã¢ãã«ã®ä¿åæ¹æ³ã¯ï¼
- å¦ç¿ã®ããã¤ã¹ãã©ã®æ§ã«æå®ããã®ãï¼ ãã¡ãã¯ãLightningãç¨ãã¦ããã¨ãæ°è¡ã®è¿½å ã§çµäºãã¾ãããããLighthningã®å¼·ã¿ã ã¨æãã¾ããè©³ç´°ã¯æ¬¡ç« 以éã®ãã¼ã¸ã«ã¦è§£èª¬ãã¾ãï¼
ãµã¤ã¨ã³ã¹ä»¥å¤ã®é¨åã®ã³ã¼ãã®æ¸ãæ¹(çµæã®è¡¨ç¤ºã¨ä¿åã«ã¤ãã¦)
åç« ã§ã¯Pytorch Lightningã®ãµã¤ã¨ã³ã¹ã«é¢ããé¨åã®ã³ã¼ãã®è¨è¿°æ¹ã«ã¤ãã¦è§£èª¬ãã¾ããã
ããã§ã¯ãçµæã®è¡¨ç¤ºæ³ã¨ä¿åæ³ã«ã¤ãã¦è¨è¿°ãã¾ãã
ååã®è§£èª¬ã§ãLightningã§ã¯å¦ç¿ã«ã¼ãã®æ®µéãã¨ã®è¨ç®æåãè¨è¿°ããã¨è¨è¿°ãã¾ããããã®ã¨ãã«è¦ãã/ä¿åãããçµæãããã¨ããself.log()
ã«è¦ããã¡ããªã¯ã¹ãå
¥ããã¨ãçµæãè¨é²ããã¾ã (å³ï¼)ãããããã®å¼æ°ã®æå³ã¯ä»¥ä¸ã®ã¨ããã§ãã
self.log( "test_loss", #metiricsã®åå loss,#metiricsã®å¤ prog_bar=True,#ããã°ã¬ã¹ãã¼ã«è¡¨ç¤ºãããï¼ logger=True,#çµæãä¿åããã®ãï¼ on_epoch=True,#ï¼epochä¸ã®çµæãç´¯ç©ããå¤ãå©ç¨ããã®ãï¼ on_step=True,#ï¼stepã®çµæãå©ç¨ããã®ãï¼ )
TorchMetricsã®å©ç¨
TorchMetricsã®ã©ã¤ãã©ãªãå©ç¨ããã¨çµæãé常ã«ç°¡åã«æ±ããã¨ãã§ãã¾ããTorchMetricsãç¨ãããã¨ã§ãAccuracyãRecallãªã©ä¸è¬çãªææ¨ãç°¡æ½ã«æ¸ããã ãã§ãªããMetiricsCollection
ãç¨ããã¨è¤æ°ã®ææ¨ãä¸åº¦ã«å®ç¾©ã(å³ï¼å·¦)ãè¨ç®ãããã¨ãã§ãã¾ã(å³ï¼å³)ã
çµæã®è¡¨ç¤º
self.log()ã®prog_bar = Trueã«è¨å®ããMetricsã¯ããã°ã¬ã¹ãã¼ã«è¡¨ç¤ºããã¾ã (å³ï¼ï¼)ã
çµæã®ä¿åæ¹æ³
self.log()ã®logger = Trueã«ããMetricsã®ä¿åã¯ã©ã®æ§ã«ãªãã®ã§ããããï¼
Lightningã®Trainerãå®ç¾©ããã¨ãã«loggerãå®ç¾©ããã¨ããã®å½¢å¼ã«ãã£ããã°ãèªåã§ä¿åããã¾ãããã®loggerã«ã¯TensorBoardã ãã§ãªããMLFlow, Cometãªã©æåãªå®é¨ç®¡çã©ã¤ãã©ãªã«å¯¾å¿ãã¦ãã¾ãã®ã§ãèªèº«ã®å¥½ããªã©ã¤ãã©ãªãç¨ãããã¨ãã§ãã¾ãã
JXé信社ã§ã¯Google App Engineã«ãããã¤ãããMLFlowã«çµæãä¿åãããæ§ã«ãã¦ãã¾ãã詳細ã¯ãã¡ãã御覧ãã ããã
ãµã¤ã¨ã³ã¹ä»¥å¤ã®é¨åã®ã³ã¼ãã®æ¸ãæ¹(callback : ã¢ãã«ã®ä¿åã¨early stopping)
åç« ã¯çµæã®è¡¨ç¤ºã¨ä¿åæ¹æ³ã«ã¤ãã¦è§£èª¬ãã¾ããã ãã®ãã¼ã¸ã§ã¯ã¢ãã«ã®ä¿åæ¹æ³ã¨Early stoppingã®æ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã ãã®ããã«ã¯Lightningã®Callbackã¨å¼ã°ããæ©è½ã«ã¤ãã¦çè§£ããå¿ è¦ããããããå ã«callbackã«ã¤ãã¦ã®è§£èª¬ãè¡ã£ãå¾ã«ã¢ãã«ã®ä¿åæ¹æ³ã¨Early stoppingã®æ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã
callbackã«ã¤ãã¦
PyTorch Lightning ã«ã¯Callback
ã¨ããmoduleãããã¾ããCallback
ãç¨ããã¨ãLightningModule
ã§å®ç¾©ããå¦ç¿ã«ã¼ãã®è¨ç®æåã«æ°ããªåä½ãå·®ãè¾¼ããã¨ãã§ãã¾ãã
ä¾ã¨ãã¦ãå³ï¼ï¼ã®å·¦ã®å³ã®æ§ã«å®ç¾©ããcallbacks
ãtrainerã«å
¥ããã¨ããããããå¦ç¿ãå§ãã«"train_batch is starting"ãçµããã«"train_batch is completed"ã¨è¡¨ç¤ºãããããã«ãªãã¾ãã
ã§ãã®ã§ãå¦ç¿ã§æ®éçã«ç¨ãããã便å©ç³»ã®ã³ã¼ããcallbacksã§å®ç¾©ãã¦ãããã¨ã§ãLightningModule
å
ã®å¦ç¿ã«ã¼ãã®å®ç¾©ã¯ç°¡æ½ã«ãªãã¾ãã
JXé信社ã§ã®callbackã®å©ç¨
JXé信社ã§ã¯WebHookãéãã¦å¦ç¿ã®é²æç¶æ³ãSlackã«ç¥ãããcallbacksã使ãéç¨ãã¦ãã¾ãã詳ããã¯ãã¡ãã御覧ãã ããï¼
ã¢ãã«ã®ä¿åã¨early stopping
Lightningããæä¾ãããBuilt-in callbackãå©ç¨ãããã¨ãã§ãã¾ãã
ããã«ã¯ModelCheckpoint
, EarlyStopping
ãªã©ã®ä¾¿å©ãªcallbackãããã¾ãã
ModelCheckpoint
ã¯æå®ããææ¨ãæãé«ã/ä½ãã¢ãã«ãä¿åãããã¨ãã§ããcallbackã§ãããã®callbackã®ç´ æ´ããããã¤ã³ãã¯ç£è¦å¯¾è±¡ã鏿ãããã®å¤ãæå¤§/ æå°ã®ã¨ãã®ã¢ãã«ãä¿åããã¨ãã£ããã¹ãã¢ãã«ãä¿åãããã¨ãã§ãã¾ã(å³ï¼ã®å ´åãvalid_lossãæå°ã«ãªãã¢ãã«ãä¿åããã)ã
EarlyStopping
ã¯æåéãearly stoppingã®ããã®callbackã§ãããç£è¦å¯¾è±¡ã®å¤ãæ¹è¯ããªãå ´åãå¦ç¿ãã¹ããããã¦ããã¾ãããã®ï¼ã¤ã®callbacksãTrainerã®å¼æ°ã«å
¥ãè¾¼ãã ãã§ãã¢ãã«ã®ä¿åã¨early stoppingãç°¡åã«å®è£
ãããã¨ãå¯è½ã«ãªãã¾ãã
ãã®ä»ãBuilt in callbackã«ã¤ãã¦ã¯å ¬å¼ã®ããã¥ã¡ã³ããã覧ãã ããã
ãµã¤ã¨ã³ã¹ä»¥å¤ã®é¨åã®ã³ã¼ãã®æ¸ãæ¹(GPU /TPU /IPUã§ã®å¦ç¿)
GPU, TPUã§å¦ç¿é度ãä¸ãã
Deep learningã®ã¢ãã«ã¯cpuã§å¦ç¿ãããã«ã¯éå¸¸ã«æéããããã¾ãã䏿¹GPU, TPUãç¨ããã¨ãå¦ç¿æéãæ°å~æ°ååç¨åº¦å éããããããGPU, TPUã§å¦ç¿ãããã¨ãä¸è¬çã ã¨èãããã¾ã (å³ï¼ï¼)ã
䏿¹PyTorchãç¨ãã¦GPU, TPUã§å¦ç¿ããããã¨ãèããã¨ãè³ãæã«.to(divice)
ãæ¸ãå¿
è¦ããããå¯èªæ§ãä¸ããã ãã§ãªããä¸å¿
è¦ãªã¨ã©ã¼ãçºçããåå ã«ãªãã¾ãã
Lightningã§ã®GPU, TPUã§å©ç¨æ³
LightningModuleã§ã¯to(device)
ã®ã³ã¼ããä¸åæ¸ããã¨ãªãå¦ç¿ã«ã¼ããå®è£
ãã¾ããã§ã¯ãLightningã§ã¯ã©ã®æ§ã«GPU/TPU/IPUã§å¦ç¿ãããã¨ãã§ããã®ã§ããããï¼
çãã¯é常ã«ç°¡åã§ãTrainerã®gpus/tpu_cores/ipusã§å©ç¨ããGPU/TPU/IPUãæå®ããã¨æå®ããããã¤ã¹ã§å¦ç¿ãéå§ããã¾ã (å³ï¼ï¼)ã
ããã§ãä¾ãã°ãgpus
ã®å¼æ°ã«list
åãå
¥ããã¨ãå¦ç¿ã«ç¨ããGPUã®ããã¤ã¹ãè©³ç´°ã«æå®ãããã¨ãã§ãã¾ããä¸ã¤ã®è¦ç´ ããç¡ãlist
ãå
¥ããã¨GPUï¼å°ã§ã®å¦ç¿ã«ãªãã¾ãããè¤æ°ã®è¦ç´ ã®list
ãå
¥ãããã¾ãã¯ï¼ä»¥ä¸ã®int
ãå
¥ããã¨è¤æ°GPUã§ã®ä¸¦åå¦ç¿ãå¯è½ã«ãªãã¾ãããã詳細ã¯å
¬å¼ã®ããã¥ã¡ã³ãã御覧ãã ããã
Colabã§ã®TPUå©ç¨ã«ã¤ãã¦
google colabã§TPUã®å©ç¨ãããå ´åã¯ã以ä¸ã®ã³ãã³ããæã£ã¦xlaãã¤ã³ã¹ãã¼ã«ããå¿ è¦ãããã¾ãã
!pip install cloud-tpu-client==0.10 https://storage.googleapis.com/tpu-pytorch/wheels/torch_xla-1.9-cp37-cp37m-linux_x86_64.whl
(ããã§ãtorch_xla-1.9
ã®1.9ã¯å©ç¨ãã¦ããTorch ã®Versionãæå®ãã¦ãã ãã)
ãã®å¾Tranerã®tpu_coresã®å¼æ°ãæå®ãããã¨ã§ãTPUã§ã®å¦ç¿ãéå§ããã¾ãã
PyTorch Lightningããä¸ä½ã®ã©ããã¼ (PyTorch Lightning Flash)
ããã¾ã§ç´¹ä»ãã¦ããã¨ããPyTorch Lightningã¯PyTorchã®ã©ããã¼ã§ã³ã¼ãã£ã³ã°ã«ãããæéãæå°éã«ãããµã¤ã¨ã³ã¹ã«ãããæéãæå¤§åãã¦ããã¾ããã
ããã§ã¯PyTorch Lightningã®ããé«ä½ã©ããã¼ã§ããPyTorch Lightning Flashã«ã¤ãã¦ãç´¹ä»ããã¦ããã ãã¾ãï¼
PyTorch Lightning Flashã¯é«ã¬ãã«ã®AIãã¬ã¼ã ã¯ã¼ã¯ã§ããããã®ã©ã¤ãã©ãªãç¨ãããã¨ã§ãå³ï¼ï¼ã®ãããªå ¸åçãªã¿ã¹ã¯ã§ããã°ãåæ°è¡ã®ã³ã¼ãã§è§£æ±ºãããã¨ãã§ãã¾ããã¾ããPyTorch Lightningã®ã©ããã¼ã§ãããããPytorch Lightningã§å©ç¨ã§ããæ©è½(callbackã, loggingãªã©)ããã®ã¾ã¾å©ç¨ãããã¨ãã§ãã¾ãã
ãµã³ãã«ã³ã¼ãã®ååã«PyTorch Lightningã§è¡ã£ãç»ååé¡ã¿ã¹ã¯ãå¾åã®PyTorch Lightning Flashã§å®è£ ãã¦ãã¾ãï¼èå³ãããæ¹ã¯ãã¡ãã触ã£ã¦ã¿ã¦ãã ããã
Lightning Flashãã§ããã¿ã¹ã¯ã«ã¤ãã¦ã¯ãã¡ãã御覧ãã ããã
PyTorch Lightning Flashã®å人çãªå©ç¨æ¹æ³
PyTorch Lightning Flashã¯æ°è¡ã®ã³ã¼ãã§æ©æ¢°å¦ç¿ã¿ã¹ã¯ãå®çµããåé¢ãæè»æ§ã«ä¹ãããã¿ã¹ã¯ç®çã«åããã工夫ãå°é£ã§ãã
ãããã£ã¦ãå人çã«ã¯PyTorch Lightning Flashã§ãã¼ã¹ã©ã¤ã³ãæ§ç¯ãã精度ãååãªããã®ã¾ã¾å©ç¨ãã¾ãã䏿¹ãã¿ã¹ã¯ã«åãããå·¥å¤«ãæ±ããããã¨ãã«ã¯PyTorch Lightningã®ãã³ãã¬ã¼ãã³ã¼ããåºã«å®é¨ãè¡ãã¾ããPyTorchã®å©ç¨ã¯æçµææ®µã ã¨æã£ã¦ãã¦ãLightningåä½ã§å®è£ ã§ããªãæå 端ã®å·¥å¤«ããããæã«å©ç¨ããã¨æãã¾ãï¼
æã ã¨ã¨ãã«ææ¦ãã仲éãæ±ãã¦ãã¾ã
æã ã¨ã¨ãã«æé·ããªãããããè¯ã社ä¼ã®ããã®MLãéçºããã仲éã社å¡ã»ã¤ã³ã¿ã¼ã³åããç©æ¥µçã«åéãã¦ãã¾ãï¼ã¾ããMLã¨ã³ã¸ãã¢ã¯ãã¡ãããããããè·ç¨®ã®ã¨ã³ã¸ãã¢ãæ±ãã¦ãã¾ãï¼
æ£ç¤¾å¡ãã¤ã³ã¿ã¼ã³ãããããå ¥ç¤¾ãªã©ãªã©ï¼ã»ãã®å°ãã§ãèå³ãæãããæ¹ã¯ãã¡ããè¦ãã¦ã¿ã¦ãã ããï¼
æ¥æ¬ã§PyTorch Lightningãçãä¸ãã¦ããããï¼
å人çã«ãæ¥æ¬ã§PyTorch Lightningãçãä¸ãã¦ããããï¼ã¨æã£ã¦ãã¾ãã
PyTorch Lightningãããã¾ã§ä½¿ã£ã¦ããæ¹ããããã使ãããã¨æã£ã¦ããæ¹ã質åãããæ¹ï¼ç©æ¥µçã«ç§ã®twitter, ã¾ãã¯Facebookã«ãé£çµ¡ãã ããï¼