æå±å€§åŠã«ãŠ9æã«1æ¥ã§æ©æ¢°åŠç¿ãªããããããç¶æ ããçæã¢ãã«ãçµããããã«ãªãããšããã¯ãŒã¯ã·ã§ããããããæ®éã«èããŠåå è åŽã®èŠç¹ã«ç«ã£ããç¡çãªãã ã, ãŸããšã«ããããããã€ãã³ãããã£ãããã£ãŠã¿ããšãã, ãäœè©±ããŠãã®ãããããããšããææ³ãå€ã倧絶è³ã ã£ã(åçããŠããŸã)ã
ãã ã¯ãŒã¯ã·ã§ããäžã«ãã質åãçµæ§èªåãæåã®ããã¯èºãããšããã ãªãããšãããã®ãå€ã, ã¯ãŒã¯ã·ã§ããäžã«ãã質åç¹ããŸãšããŠããã°æ¡å€çæAIããã«ã¹ã¯ã©ããã§äœããæè¡è ã«ãªãããã®Tipséãäœããã®ã§ã¯ãªãããšæã, ãã®èšäºãæžãããšã«ããããã æ£çŽ, èªåãåŠã³ããŠã®é ããããTipséãèªãã§çè§£ããããšèšããšããã§ã¯ãªãæ°ãããã®ã§, èªè ã®çæ§ã«é¢ããŠã¯ããžããããªã®ãããã ããšããæãã§èªãã§ããã ã, å®éã«ãã®Tipsã§ã®åé¡ãèµ·ãã£ãæã«æãåºããŠããã ãããã
éèŠåºŠå¥ã«âäœåã¿ãããªæãã§çºè¡šããŠããããšãæã£ãã, ãªãã ããã ç¡æèã«äœ¿ãç¥èãå€ãã®ã§ã€ããªãã§çºè¡šãè¡ãã
Tips 1: ãŸãDeep Learningãšã¯äœã
ããã¯ãŸããŸãç¥èœãã©ããããã®ãã©ããããšããè©±ã«æã£ãŠããããšãã§ãããã§ãã, æè¡è ç ç©¶è , ã¢ã€ã·ã¢ãœãªããä¿¡è ãšããŠã¯Deep Learningã¯é¢æ°è¿äŒŒè«ãšããèããé²ããŠãããã
Deep LearningãåŠãã§ãããšé³å£°, èšèª, ç»åãæ°åã®çŸ åãšããŠã¢ãã«åããŠ, ãããå ¥åãšããŠåºåãèšç®ã, 人éã«ãšã£ãŠããããããåœ¢ã«æ»ããšããããšãããŠããããšãããã£ãŠãããšæãããšããããã§å°ãªããšãèªåã¯æ°å€åããå ¥åã«å¯ŸããŠæ¬²ããåºåãèšç®ãã颿°ãäœãã®ãDeep Learningã ãšæã£ãŠããŸããé¢é£ãã話ãšããŠ, MLPã®Universal approximation theoremããããŸãã
Tips 2: ããããã®ããŒã¿ã®è¡šçŸã®ä»æ¹
ãããã€ãŸãããšããããªãšæããŸããããŒãã«ããŒã¿ã®å Žåã¯ããŒã¿æ°ãšç¹åŸŽéã®2次å é åã§ããããããã§ããç»åãããŒã¿æ°, RGBãªã©ã®ãã£ã³ãã«æ°, é«ã, å¹ ãšèããã°4次å é åãªã®ã¯ãããããšæããŸãã
ãããèšèªãšãã¯ã©ããªã£ãŠããã®ããšãããš, å®ã¯Deep Learningã§ã¯ç³»åããŒã¿ãšããŠæ±ãããšãå€ãã§ãã
ããã¯ã©ãããããšããšãããš, äŸãã°ãI have a pen.ãã¿ãããªæç« ãèããæ, åèªããšã«åºåããš[I, have, a, pen, .]ã¿ãããª5ã€ã«åããããŸãããããI->have->a->pen->.ã®æç³»åé ã«åèªãåºçŸãããšèããŠæ¬¡å
ã®ç³»åããŒã¿ã«ããŸãããããŠãšãã倿ãçµãŠããããã®åèªã®æ°åã§è¡šãããå²ãšãŒããããšããæå³ã¿ãããªã®ãE次å
ã®ãã¯ãã«ã§è¡šçŸããŸãã
ãªã®ã§,
$$
\text{I have a pen.} \rightarrow \text{[I, have, a, pen, .]} \rightarrow \text{(5, E)ã®2次å
é
å}
$$
ã¿ãããªæãã§å€æããŠããŸããé·ãLã®æç« ãªã(L, E)ã®2次å
é
åã«ãªããŸãããã®ãããªæç« ãBåãããšèããŠ, æç« ããŒã¿ã¯(B, L, E)ã®3次å
é
åã«ãªããŸããæç« ã§è¡šçŸãããªã, ããŒã¿æ°, ç³»åé·, ããŒã¯ã³ã衚ããã¯ãã«ã¿ãããªæãã§ããããŒã¯ã³ãšããèšèãã§ãŠããŸãããä»åã¯[I, have, a, pen, .]ãšããæç« ãåèªã§åºåããŸããã, åèªä»¥å€ã§åºåãããšãèããããŸããäŸãã°extra, extraordinary, extraordinarilyãªã©ã®åèªã¯åèªã§åºåããããextraordinaryã¯ãextra, ordinaryã, extraordinarilyã¯ãextra, ordinarilyãã®ããã«å
±ééšåã®extraãåºããŠããŸããšãã£ãæ¹æ³ããããŸãããã®åå²ããã1åäœãããŒã¯ã³ãšãããŸãã
ãšããããããŒã¿ããããã衚çŸã«ããŠãããšèšãã®ã¯èŠããŠãããŸãããããã 説æãããŠããããã«ãããã®ã¯ãããã«ããã®ã§, ãã®èŸºãã¯ã³ãŒãã£ã³ã°ããã®ãäžçªã ãšæããŸãã
ããšã³ãŒãã£ã³ã°äžã®æ³šæãšããŠã¯, 深局åŠç¿ã®çè«æ¬ã解説èšäºã¯1ããŒã¿ã«é¢ããæ°åŒããããŠãã, å®éã®åŠçãšã¯éãæ°åŒãæžããŠããŸããäŸãã°MLPã¯çè«æ¬ã ãš
$$
y = Ax + b
$$
ã®ããã«æžãããã¡ã§ãã, Pytorchã®nn.Linearã®ããã¥ã¡ã³ãã§ã¯
$$
y = xA^T + b
$$
ã®ããã«æžãããŸãããã®éãã¯ãªãã§ãããã? 詳ããã¯æåãæžããèšäºã§ãåç
§ããŠãã ãã
Tips 3: Python
Pythonã¯ã¯ã©ã¹ç¶æ¿ãšåºæ¬çãªæ§æã¯ãããããš, ããšNumpyã®æåã¯ãã£ããåŠãã§ãã ããç¹ã«, ãããŒããã£ã¹ãæ©èœã«ã¯æ £ããŠãããŸãããã
ããšã¯å€§èŠæš¡ãªã³ãŒãããŒã¹ãèªãã§ã©ãã§ãšã©ãŒãèµ·ãã£ãŠããããçè§£ã§ããããã«ãªã£ãŠãããæ¹ãããããªãšæããŸããTransformersã©ã€ãã©ãªã¯å ãªããžããªãŸã§èŠã«è¡ããªããšãã¡ãªãšã©ãŒãå€ãã§ãã
ããšããªãå人çã«å€§äºãªããšãšããŠããªã¢ãŒãã£ãºã ãšã€ã³ã¿ãŒãã§ãŒã¹ã®æŠå¿µã¯MLãšã³ãžãã¢ãç¥ã£ãŠãããŠæ¬²ãããšæããŸããç¹ã«çæAIã¯Transformersã©ã€ãã©ãªã®ã¯ã©ã¹ãšã¡ãœãããç¶æ¿ããããšãå€ããã§ãã, ãããæèããªãã³ãŒããæžããšç°¡åã«å€ãªåäœãåŒããŸãã
çµå±ãªãã ããã æ®éã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®ã¡ã³ã¿ã«ã¢ãã«ããããšäœæ¥ããããã§ãã
Tips 4: 確ççµ±èš
深局åŠç¿ã«ç¢ºççµ±èšãå¿ èŠã ãšãã話ãèããããšã®ãã人ã¯å€ãããšæããŸããå人çã«äžçªãããæŽ»ããã®ã¯æå€±é¢æ°ã®éžå®ã®æã ãšæããŸããäŸãã°, åé¡åé¡ãè§£ãæã«äœæ CrossEntropyLossã䜿ãã®ã説æã§ããŸãã?ãã説æã§ããªããã°ä»ãã確ççµ±èšã尀床æšå®ãŸã§åŠãã§, 以äžã®èšäºãèªãã§ãã ããã
ããšã¯èª€å·®éäŒææ³ãäžåã¯æ°åŒã远ã£ãæ¹ãè¯ãçµéšã«ãªããšã¯æããŸããããšæ¥æ¬ã¯æµãŸããŠããŠ, ãŒãã€ã3å·»ãPytorchã0ããäœããããªå 容ã«ãªã£ãŠããŸãããã¡ããäœè£ãããã°äœéšããŠãããŸãããã
ãããŸã§ãäžè¬çãªDeep Learningã«ã倧äœéãã話ã§ã¯ãªãã§ãããã, ããããã¯èšèªã¢ãã«ãšãçæAIãšãã«èžã¿èŸŒãã§ãããŸãã
Tips 5: Deep Learningã§èªç¶èšèªåŠçãæ±ãæã®çšèªãçè§£ãã
äž»ã«ä»¥äžãäœãããŠããã®ã, ã©ãããåŠçãªã®ã, ã©ãèšãçš®é¡ããããã説æã§ããããã«ãªã£ãŠãã ããã
- Tokenize
- Encode(Tokenã«IDãæ¯ãåããäœæ¥)
- Embedding
åèã«ãªããªãã©ããªæ¬ã§ãèšäºã§ãè¯ãã§ããW&Bã®è³æãšãããããŸãšãŸã£ãŠãããšæããŸãããã èšèã§èª¬æã§ããããã«ãªãã ããããã³ãŒãã£ã³ã°ã¯ããæ¹ãè¯ããšæããŸããç解床ãå šç¶éããŸãã
Tips 6: OSãšäžŠååŠçãçè§£ãã
ãããŸã§ãããšã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®ç¥èããéããããšã¯ã§ããŸãããæ®éã«ããœã³ã³ãæ±ã£ãŠãæã¯èµ·ããªããããªã¡ã¢ãªãªãŒããŒãªäœæ¥ãå€ãå«ãŸããããã«ãªã£ãŠããããã§ãããŸãOSã¯ã¹ã¬ãã, ããã»ã¹ã®éããçè§£ã, ä»®æ³èšæ¶ã·ã¹ãã , mmapãªã©ã®ã·ã¹ãã ã³ãŒã«ã®æåãçè§£ããŸãããã岩波ã®OSã¬ãã«ãŸã§èªãå¿
èŠã¯ãªãã§ãã, 倧åŠã®è¬çŸ©è³æãªã©ãããããã§ã¯ãªãããšæããŸãããšã«ãã, ã©ã®äœæ¥ã§ç©çã¡ã¢ãªãå²ãåœãŠããããããšããããšã¯ç¥ã£ãŠãããªããšäžæã«ã¡ã¢ãªãé£ãåŠçãããããšã«ãªããŸãã
ã¹ã¬ãã, ããã»ã¹ãOpenMP, MPIãªã©ã§ããã°ã©ãã³ã°ããŠãããŸããããMPIã¯ãã¡ãã®ãªããžããªãããããã§ãã
äœè£ãããã°GPUã䜿ã£ãŠCUDAããã°ã©ãã³ã°ãããŠã¿ãŠãã ããã
Tips 7: Attention is all you need. ãèªãã
Tips 7ã®åã«æ¬ãªã©ãåèã«ããŠMLP, Conv2d, LSTMãªã©ã§ã¢ãã«ãçµãã§ã¿ãŠãã ããããã®ããšãŸãã¯Attention is all you need.ãèªã¿ãŸããããããã¯èªãã æ¹ãããã§ããAttentionãLSTMãªã©ã®å®æéèšç®ã®é ãã®æ¹åãšæ§èœãäž¡ç«ããããã®ã§ããããšãªã©ã宿ããŸããããããšäœè£ãããã°Transformerãçµãã§ããéŠèš³ã®æ¬ãèªãã ãããŠåè«æã®å®è£ ãåçŸããŸãããã
Tips 8: 忣åŠçãçè§£ãã
倧ããªã¢ãã«ãå¹çããèšç·Žããããã«ã¯è€æ°å°ã®èšç®æ©ã«ãŸããã£ãŠèšç®ãè¡ããŸãã以äžã®èšäºã«ç®ãéã, Data parallelism, Pipeline parallelism, Tensor parallelismã®æŠå¿µã¯ããçè§£ããŠãããŸãããããã®èšäºãçè§£ããããã«Tips 6ã§MPIããã°ã©ãã³ã°ãããå¿ èŠããã£ããã§ããã
ããšDeepspeedãšããã©ã€ãã©ãªãç®ãéãããšããå§ãããŸããç¹ã«ZeRO, ZeRO Offloadã¯çè§£ããŠãããŸããããäœè£ããã£ããMegatron-LMãšããã¿ãŠã¿ãŸãããã
Tips 9: nanoGPTãåçµãã
nanoGPTã¯åŒ·ååŠç¿ãªãã®GPTãå®è£ ãããªããžããªã§ããTips 7ã®Scaled dot attentionã®å®è£ ç·Žç¿ã, Tips 8ã®Data Parallelismã®å®è£ ãªã©ã®è¯ãæŒç¿ã«ãªããŸãããããŸã§æ¥ãã°ãªããšããªãã¯ä»ã®å€§èŠæš¡ã¢ãã«ã®åºç€ãäœãããšãã§ããããã«ãªã£ãŠããŸãã
Tips 10: Huggingface Tutorial
Tips 9ã§æºè¶³ããŠããããã§ãã, ãã¯ãææ°ã®AIã«è¿œãã€ãããã§ããããããããå ã¯PytorchãJAXãé¢ããŠHuggingfaceã®Transformersã©ã€ãã©ãªã䜿ã£ãŠã¢ãã«ããã¡ã€ã³ãã¥ãŒãã³ã°ããããšãå¢ããŠããããšæããŸãããã®ããã«ãŸãã¯HuggingfaceãåŠã³ãŸããããNLP Courseãªã©ãããããã§ããHuggingfaceã¯ãšã©ãŒãåããããœãŒã¹ã³ãŒããŸã§ãªãã©ãèŠçŽãããšãããããããŸãããã®ããã«ãTips 3ã§PythonãåŠã¶å¿ èŠããããŸããã
Huggingface AccelerateãHuggingfaceã§DeepspeedãåŒã³åºãæ¹æ³ãåŠãã§ãããŸãããã䜿ãããªãã°å€§èŠæš¡ã¢ãã«ãèªåã§èšç·Žããããã®åŒ·åãªããŒã«ãšãªããŸãã
Tips 11: Huggingfaceã§èªå奜ã¿ã®ããŒã¿ã䜿ã£ãŠäºåŸåŠç¿ããã
äºåŸåŠç¿çšã©ã€ãã©ãªãšããŠHuggingface TRLãªã©ããããŸããTRLããã 䜿ãã ãã§ã¯ãªãæ¯éäžèº«ã®åŠçãèŠãŠã¿ãããšããå§ãããŸãããããŸã§ããã°çæAIãšã³ãžãã¢ãåä¹ã£ãŠãããã¯åœãããªãããããªãããšèããŠããŸãã
çµãã
åŠãã ããšãšã¯ãŒã¯ã·ã§ããäžã«è³ªåãããããšããŸãšããŠã¿ãŸããã, ãã®1幎ã§ãããªã«åŠãã ãã ãªãšããæ°æã¡ã§äžæ¯ã§ãã質åã»ææãªã©ãããã°ãé¡ãããŸãã