ä»é¶å¼å§ç¨çº¯Pythonå®ç°GPT | AIçæåç¿»è¯
é®é¢ï¼ 请解é Andrej Karpathy æä¾ç Python èæ¬ï¼è¯¥èæ¬ä»é¶å¼å§å®ç° GPT 模åï¼ä¸ä¸ä¾èµä»»ä½å¤é¨åºã
åçï¼ è¿ä¸ªèæ¬æ¯ä¸é¨âæå¦æ°ä½âï¼å°å¤§åè¯è¨æ¨¡åï¼LLMï¼å¥ç¦»å°ææ ¸å¿çç»ä»¶ãå®ä» ä½¿ç¨ Python æ ååºå®ç°äºçæå¼é¢è®ç»åæ¢å¨ï¼GPTï¼ï¼æ²¡æ PyTorchãNumPy æ TensorFlowã
以䏿¯å®ç°è¯¥åè½çæ ¸å¿ç»ä»¶åè§£ï¼
1. âå¾®åèªå¨å¾®åâ弿ï¼class Valueï¼
任使·±åº¦å¦ä¹ 模åçæ ¸å¿é½æ¯ååä¼ æã
- é»è¾ï¼ ç±äºèæ¬æ²¡æä½¿ç¨ PyTorchï¼å®å®ä¹äºä¸ä¸ª
Valueç±»ï¼åå¨ä¸ä¸ªæ éï¼å个æ°å¼ï¼åå ¶å¯¼æ°ï¼gradï¼ã - é¾å¼æ³åï¼ æ¯ä¸ªæ°å¦è¿ç®ï¼
+ã*ãexpãlogï¼é½è¢«éè½½ï¼ä»¥æå»ºâ计ç®å¾âãå½è°ç¨loss.backward()æ¶ï¼ä»£ç ä¼ååéå该å¾ï¼è®¡ç®æ¯ä¸ªåæ°å¯¹è¯¯å·®çè´¡ç®ã
2. GPT æ¶æ
该模åéµå¾ª GPT-2 设计ï¼ä½ç®åäºé¨åç»ä»¶ï¼ä¾å¦ä½¿ç¨ RMSNorm ä»£æ¿ LayerNormï¼ä½¿ç¨ ReLU ä»£æ¿ GeLUï¼ã
- åµå
¥å±ï¼ 使ç¨ä¸¤ä¸ªæ¥æ¾è¡¨ï¼
wteï¼Token åµå ¥ï¼è¡¨ç¤ºå符å«ä¹ï¼wpeï¼ä½ç½®åµå ¥ï¼è¡¨ç¤ºå符å¨å符串ä¸çä½ç½®ã - å¤å¤´æ³¨æåæºå¶ï¼ 模åçâ大èâï¼å 许å½åå符âå顾âåé¢çå符以确å®ä¸ä¸æãå®ä¸ºæ¯ä¸æ¥è®¡ç® Query (Q)ãKey (K) å Value (V) åéã
- åé¦ç¥ç»ç½ç»ï¼MLPï¼: ä¸ä¸ªç®åç两å±ç¥ç»ç½ç»ï¼å¤ç注æå头æ¶éçä¿¡æ¯ã
3. è®ç»ä¸ä¼å
èæ¬å¨ååæ°æ®éï¼names.txtï¼ä¸è®ç»æ¨¡åã
- ç®æ ï¼ æ¨¡åæ§è¡ä¸ä¸ä¸ª Token 颿µãä¾å¦ç»å®âA-N-D-Râï¼å®ä¼å°è¯é¢æµâEâã
- æå¤±å½æ°ï¼ 使ç¨äº¤åçµæå¤±ï¼éè¿
logåsoftmax计ç®ï¼ï¼é¢æµç»æä¸å®é å符ç¸å·®è¶è¿ï¼æ©ç½è¶ä¸¥éã - Adam ä¼åå¨ï¼ æå¨å®ç° Adam ä¼åç®æ³ï¼æ´æ°æéï¼å æ¬å¨éåå¦ä¹ çè¡°åçç¹æ§ã
4. æ¨çï¼âè¡è¨ä¹±è¯âï¼
è®ç»å®æåï¼æ¨¡åçææ°ææ¬ãå®ä»ç¹æ®ç BOSï¼åºåèµ·å§ï¼ Token å¼å§ï¼è¯·æ±æ¨¡åç»åºä¸ä¸ä¸ªåç¬¦çæ¦çåå¸ï¼ç¶åæ ¹æ®æ¸©åº¦è®¾ç½®ä»è¯¥åå¸ä¸âéæ ·âï¼çæåå§å表ä¸ä¸åå¨çååã
æ»ç»è¡¨ï¼ç¡¬ä»¶ vs. 软件
ä½ æ¯å¦å¸ææè¯¦ç»è§£é注æåæºå¶å¨æ¬ä»£ç ä¸å¦ä½è®¡ç®å符ä¹é´çå ³ç³»ï¼
