你瘦不下来但大模型可以:量化原理了解一下
ä½ ç¦ä¸ä¸æ¥ä½å¤§æ¨¡åå¯ä»¥ï¼éååçäºè§£ä¸ä¸
èå çDX 2026-08-18 0 é 读7å鿏©é¦¨æç¤ºï¼å¦æé å¥è§é¢çï¼é带å¾è§£æ¼ç¤ºï¼è§æä¸åï¼æ¬¢è¿å°å大è§é¢å¹³å°æç´¢ååæ é¢æãèå ç说è¯ã
ä»ä¹æ¯éåï¼
丹尼å°ï¼èå ï¼æè¿å¨æè ¾å¤§æ¨¡åæ¬å°é¨ç½²ï¼ç»å¸¸éå° "éå" è¿ä¸ªè¯ï¼ä¸ç´æ²¡ææå°åºæ¯ä»ä¹
èå çï¼å°±æ¯ç¨å¤§æ¨¡åéå交æåï¼æé±ï¼
丹尼å°ï¼ççï¼
èå çï¼(ಡÏಡ) ååï¼ååãæ¤éåéå½¼éåå¦
丹尼å°ï¼é¢ï¼é£å°åºä»ä¹æ¯éåï¼
èå çï¼æä¸ªæ¯æ¹å§ââéåå°±åæ 4K 髿¸ è§é¢åæ 720Pï¼æä»¶å°äºï¼ç¡¬ççäºï¼å åä¹çäºãè½ç¶ç»è´¨æç¹æå¤±ï¼ä½å¤§é¨åæ¶åä½ çå§æ ¹æ¬æè§ä¸å°å·®å«
éåçåºæ¬åç
丹尼å°ï¼å¦ï¼åæ¥æ¯ç»å¤§æ¨¡å"ç¦èº«"åï¼é£å ·ä½æ¯æä¹å缩çå¢ï¼
èå çï¼æ ¸å¿æè·¯å°±æ¯æä½æ°å¤çæµ®ç¹æ°ï¼æ¯å¦ FP16ï¼ï¼æ 尿使°æ´å°çæ´æ°ï¼æ¯å¦ INT8ãINT4ï¼æ¥åå¨ï¼ä¸äºè§£ FP16 çåå¦ï¼å¯ä»¥å å»åå¤§å¹³å°æç´¢ ã大模ååæ°å卿 ¼å¼æç§ï¼BF䏿¯ç·æåã补个åºç¡ï¼
丹尼å°ï¼å¦ï¼é£å¦ä½æ å°ï¼
èå
çï¼å设æä¸ç»æµ®ç¹æ°ï¼[-0.20, -0.14, -0.09, -0.05, -0.02, 0.00, 0.03, 0.07, 0.11, 0.15, 0.18, 0.20]ï¼å¼èå´æ¯ [-0.2, 0.2]ãç°å¨è¦æå®ä»¬æ å°å° 5 ä¸ªæ´æ°ç¼ç -2ã-1ã0ã1ã2ï¼ä½ 伿ä¹åï¼
丹尼å°ï¼(ï¿£.ï¿£) 容ææèçå»...ï¼ç®äºï¼ä½ è¿æ¯ç´æ¥è¯´çæ¡å§
èå
çï¼å
æ [-0.2, 0.2] è¿ä¸ªåºé´äºçåï¼æ¯ä»½äº¤çå¤æä¸ªå»åº¦ï¼åç»æ¯ä¸ªå»åº¦è´´ä¸æ´æ°æ ç¾ï¼
| å»åº¦ä½ç½® | â0.2 | â0.1 | 0 | 0.1 | 0.2 |
|---|---|---|---|---|---|
| æ´æ°æ ç¾ | -2 | -1 | 0 | 1 | 2 |
éåçè§åå¾ç®åï¼æ¯ä¸ªæµ®ç¹æ°çèªå·±ç¦»åªä¸ªå»åº¦æè¿ï¼å°±è´´ä¸é£ä¸ªå»åº¦çæ´æ°æ ç¾
| åå§æµ®ç¹ | æè¿çå»åº¦ | è´´ä¸æ ç¾ |
|---|---|---|
| -0.20 | â0.2 | -2 |
| -0.14 | â0.1 | -1 |
| -0.09 | â0.1 | -1 |
| -0.05 | â0.1 | -1 |
| -0.02 | 0 | 0 |
| 0.00 | 0 | 0 |
| 0.03 | 0 | 0 |
| 0.07 | 0.1 | 1 |
| 0.11 | 0.1 | 1 |
| 0.15 | 0.2 | 2 |
| 0.18 | 0.2 | 2 |
| 0.20 | 0.2 | 2 |
丹尼å°ï¼å, amazingï¼è¿æ ·åå¨ç¡®å®çäºä¸å°ç©ºé´ãä½æä¹ææ´æ°è¿åææµ®ç¹æ°å¢ï¼
èå çï¼å¤§æ¨¡åæ¨çæ¶ï¼å¤§é¨åæ åµä¸çç¡®æ¯éè¦ææ´æ°æé"åéå"åæµ®ç¹æ°æ¥è®¡ç®ï¼å°æ°æ åµä¸æ¯å¯ä»¥ç´æ¥ç¨æ´æ°è®¡ç®çï¼ï¼è¿ä¸ªç讲å°å ¬å¼æ¶åç»è
对称 INT4 / INT8 éå
丹尼å°ï¼åç大æ¦å¬æäºï¼å¯ä»¥åæ·±å ¥ä¸ç¹
èå çï¼éåæ¹æ¡æå¾å¤ï¼GPTQ / AWQ / llama.cpp çï¼ï¼ä½å®ä»¬å ±äº«åä¸ä¸ªåºå±åºç³ï¼å¯¹ç§° INT4 / INT8 éåãä¸é¢æéè¿ä¸ä¸ªå®æ´çæ¼ç®ç¤ºä¾å¸¦ä½ èµ°ä¸é
丹尼å°ï¼çè´´å¿ï¼èµ¶ç´§å¼è®²
èå
çï¼å设æä»¬æä¸ç» FP16 æ ¼å¼çæéåæ°ï¼èå´æ¯ w â [â0.2, 0.2]ãåå¤ç¨ INT4 éåã4 bit æç¬¦å·æ´æ°ç¨äºè¿å¶è¡¥ç 表示ï¼ç¼ç èå´æ¯ q â [â8, â7, ... 0 ... 6, 7]
丹尼å°ï¼ççï¼ä¸ºä»ä¹æ¯ [â8, â7, ... 0 ... 6, 7]ï¼è䏿¯ [â7, ... 0 ... 6, 7, 8]
èå çï¼è¿æ¯äºè¿å¶è¡¥ç 硬件æ åï¼èªè¡é® AI å»å§ï¼è¿éä¸å±å¼è®²äº
丹尼å°ï¼å¥½å¥½ï¼æ¨ç»§ç»
èå
çï¼é¶åç§» zâ = 0ï¼è¿æ£æ¯ã对称ãçå«ä¹ï¼0 轴两侧çç¼ç èå´ç¸å¯¹é¶ç¹å®å
¨å¯¹ç§°æ å°ï¼ãæä»¬çç®æ åªæä¸ä¸ªï¼ç®åº scaleï¼éè¿å®æè½è®© INT4 è· FP16 ä¹é´äºè½¬
丹尼å°ï¼ç®å为æ¢ï¼äºéé¾éç
èå çï¼å«æ¥ï¼ä¸æ¥æ¥æ¥
æ¥éª¤ 1ï¼ç»è®¡åå§æéæå¼
èå çï¼ç¬¬ä¸æ¥ç®åï¼å æ¾åºæéåæ°çæå¤§å¼åæå°å¼
丹尼å°ï¼è¿ä¸ªä¾åæ¯ wâáµ¢â = â0.2ï¼wâââ = 0.2
æ¥éª¤ 2ï¼è®¡ç®æå¤§ç»å¯¹å¼ A
èå çï¼å¥½å©æãç¬¬äºæ¥ï¼æ±ä¸¤ä¸ªåå§æéæå¼çæå¤§ç»å¯¹å¼ A
丹尼å°ï¼è¿æä¹ä¼ï¼A = max(|wâââ|, |wâáµ¢â|) = max(0.2, 0.2) = 0.2
æ¥éª¤ 3ï¼è®¡ç® scale
èå
çï¼ç¬¬ä¸æ¥ï¼éç¨è¡ä¸æ åå
¬å¼ s = A / 7
丹尼å°ï¼ççï¼ä¸ºå¥æ¯ 7ï¼INT4 ç¼ç 䏿¯ â8 å° 7 åï¼
èå çï¼å ³é®å°±å¨è¿ââ7 æ¯æå¤§çæ£ç¼ç ï¼æä»¬æ³è®©æå¤§çæµ®ç¹æ°æé A å®ç¾å¯¹åºå° q = 7ï¼è¿æ ·æ£æ¹å䏿µªè´¹ä»»ä½ç¼ç 空é´
丹尼å°ï¼æ²¡å¬æ
èå
çï¼å¥å
¬å¼çç s = 0.2 / 7
éªè¯ä¸ä¸ï¼q = 7 â ŵ = 7 à s = 7 à 0.2 / 7 = 0.2ï¼å好对ä¸ãè¿å°±æ¯åéåï¼åé¢åè
丹尼å°ï¼é£ä¸ºä»ä¹ä¸è½æ¿ â8 æ¥ç® scaleï¼æ¯å¦ s = A / 8ï¼
èå
çï¼é®å¾å¥½ãæä»¬æ¥è¯ä¸æ s = 0.2 / 8 = 0.025ãæ£åæå¤§ç¼ç è¿æ¯ 7ï¼7 à 0.025 = 0.175ã使们ç宿éæå¤§å¼æ¯ 0.2ï¼0.2 > 0.175ï¼æ£åç´æ¥æº¢åºï¼æéç´æ¥å¤±ç
丹尼å°ï¼æç½äº
èå
çï¼scale æ¿å°äºï¼æä»¬ç®ä¸æå
³é®çï¼æå°å¼ q = â8 对åºå¤å°ï¼â8 à 0.0285714 â â0.22857
丹尼å°ï¼ä¸é â0.22857 æ¯ â0.2 è¿å¤åºæ¥ä¸æªï¼
èå çï¼æ²¡éï¼â8 è¿ä¸ªç¼ç æ¡£ä½å ¶å®æ¯é²ç½®çï¼å 为没ææéåæ°ä¼è½å°è¿ä¸ªåºé´ãè¿å°±æ¯å¯¹ç§°éåçä¸ä¸ªå°ä»£ä»·ï¼æ£æ°ä¾§æå¤§å¯ç¨ç¼ç åªæ 7ï¼scale 忝åªè½ç¨ 7ï¼å¯¼è´å¿ ç¶æä¸ä¸ªç¼ç ç¨ä¸ä¸
æ¥éª¤ 4ï¼éå â æµ®ç¹è½¬æ´æ°
丹尼å°ï¼å¥½åæç¹çè§£ scale äºï¼å®æç¹åä¸æå°ºåä¸çå»åº¦ä¹é´çè·ç¦»ï¼ç¸é»å»åº¦ä¹é´çè·ç¦»å°±æ¯ scale
èå çï¼æ©ï¼çè§£å¾å¾å°ä½ãæäº scaleï¼å°±å¯ä»¥æ¥è®¡ç®æµ®ç¹æ°å°æ´æ°ç¼ç ç转æ¢äºãå ¬å¼å¦ä¸ï¼
w_int = clip( round(w_float / scale), Qmin, Qmax )
丹尼å°ï¼ä¸çå ¬å¼å°±å¤´ç¼
èå çï¼å ¶å®å¾ç®åï¼å°±ä¸æ¥ï¼é¤ scale â åèäºå ¥ â æªæã
é¤ scaleï¼ææµ®ç¹å¼æ scale ååï¼ç®åºå®è½å¨åªä¸æ¡£
åèäºå
¥ï¼å¯ä»¥ç®åºå®ç¦»è¿ä¸æ®µçä¸¤ä¸ªå¤´å°¾çæ´æ°ç¼ç åªä¸ªæ´è¿
æªæï¼é²å¾¡æ§ç¼ç¨ï¼ç¡®å®ç»æè½å°åæ³çèå´ï¼æ¯å¦ INT4 çåæ³åºé´å°±æ¯ [â8, 7]ï¼ï¼å°äºæå°å¼å°±åæå°å¼ï¼å¤§äºæå¤§å¼å°±åæå¤§å¼ã对称éåçåºæ¯ä¸ï¼æªæåºæ¬ä¸ä¼è§¦å
丹尼å°ï¼ä½ è¿æ¯ä¸¾ä¸äºä¾åå§
èå çï¼æ£è´ä¸¤ä¸ªæµ®ç¹æ°ï¼åä¸ä¸ªç¤ºä¾å§
ä¾ 1ï¼w = 0.1
â é¤ scaleï¼`w / s = 0.1 ÷ 0.0285714 â 3.5`
â¡ åèäºå
¥ï¼`q = round(3.5) = 4`
â¢ æªæè³ [â8, 7]ï¼4 å¨åºé´å
ï¼æ éæªæ
ä¾ 2ï¼w = â0.18
â é¤ scaleï¼`w / s = â0.18 ÷ 0.0285714 â â6.3`
â¡ åèäºå
¥ï¼`q = round(â6.3) = â6`
â¢ æªæè³ [â8, 7]ï¼â6 å¨åºé´å
ï¼æ éæªæ
æ¥éª¤ 5ï¼åéå â æ´æ°è½¬åæµ®ç¹
丹尼å°ï¼çæç½äºãé£éåå®åï¼æ¨çæ¶æä¹ææ´æ°ååæµ®ç¹æ°å¢ï¼
èå
çï¼ç´æ¥ç¨é建å
¬å¼ ŵ = q à sï¼ä¸æ¥æå®
ä¾ 1 åéåï¼Åµ = 4 à 0.0285714 â 0.11428
ä¾ 2 åéåï¼Åµ = â6 à 0.0285714 â â0.17143
丹尼å°ï¼å¦ï¼0.1 åå»åæ 0.11428ï¼â0.18 åæ â0.17143ï¼è¯¯å·®è¿ä¸å°ï¼
èå çï¼è¿å°±æ¯éåç代价å (â.â||)ãINT4 æ»å ±å°± 16 个å弿¡£ä½ï¼ç²¾åº¦æéãæ¯å¦ 0.1 æ°å¥½è½å¨ q=3 å q=4 çæ£ä¸é´ï¼å¾ 4 é å°±æäºè¿ä¸ªè¯¯å·®
åå¨ä»ä¹é®é¢ï¼
丹尼å°ï¼è¿ç§éåæ¹å¼ä¼æåªäºé®é¢å¢ï¼
èå çï¼æä¸äº
æ¯å¦æéåå¸å¦æä¸ç¸å¯¹ 0 轴对称ââå [0, 0.2] è¿ç§å
¨æ¯æ£æ°çï¼å¯¹ç§°éåä¼è®© â8 å° â1 è¿ 8 个ç¼ç ç´æ¥èåºæãè¿æ¶å°±å¾ç¨é对称éåäº
忝妿ééæ··è¿äºæç«¯ç¦»ç¾¤å¼ï¼æ¯å¦ [0.10, 0.12, 0.08, 0.11, 0.09, 0.80]ï¼å
¨å± scale ä¼è¢« 0.8 æå¤§ï¼0.1 éè¿çåæ°å
¨æ¤å°å䏿¡£ãè§£å³æ¹æ¡æ¯åç»éåï¼åç»ç¬ç«ç®èªå·±ç scaleï¼ææç«¯å¼ç影忧å¶å¨ä¸ä¸ªå°ç»å
丹尼å°ï¼æè§èè¢å¿«è¦è£ ä¸ä¸äºâ¦â¦
èå çï¼æè§å¾ä¸æ¢ä½ ï¼æ£å¨çè¿ç¯æç« çæå们ï¼åºè¯¥ä¹å¿«æç¹äº (â.â||)ãä»å¤©å°±å°è¿ï¼æç¼åèï¼
丹尼å°ï¼ææï¼
å卿å
亲们ï¼é½å°è¿äºï¼è¦ä¸ï¼ç¹èµ / æ¶è / å ³æ³¨æ¯æä¸æå o(ï¿£â½ï¿£)ï½
Aitishiku.com