టైటిల్: ఆ బగ్ ఒక అక్షం (axis) కి సంబంధించినది
PyTorch యొక్క chunked-scan ఇంప్లిమెంటేషన్లో దాగి ఉన్న ఒక బగ్ వల్ల, ఫాస్ట్ ఫ్యూజ్డ్ కెర్నల్స్ (fast fused kernels) లేనప్పుడు కొన్ని హైబ్రిడ్ మోడల్స్ భవిష్యత్తు టోకెన్లను (future tokens) చూడగలుగుతున్నాయి. ఇది Zamba2-1.2B మరియు Nemotron-H-8B వంటి చెక్పాయింట్లను దెబ్బతీస్తుంది. ఈ లోపం తప్పు అక్షం (axis) వెంబడి చేసిన ఒకే ఒక రిడక్షన్ వల్ల ఏర్పడింది, మరియు ఇది చాలా CI పైప్లైన్లు మరియు CPU రన్లు ఆధారపడే ఎగ్జిక్యూషన్ పాత్లో కనిపిస్తుంది.
ఈ బగ్ ఎందుకు ముఖ్యం
హైబ్రిడ్ మరియు స్టేట్-స్పేస్ మోడల్స్ ఇకపై కేవలం అటెన్షన్ (attention) మీద మాత్రమే ఆధారపడవు; అవి లీనియర్ రికరెన్సెస్, స్కాన్స్ మరియు కన్వల్యూషన్స్ను కూడా ఉపయోగిస్తాయి. అటెన్షన్ మ్యాట్రిక్స్లో భవిష్యత్తు టోకెన్లను అడ్డుకునే మాస్కింగ్ ఆపరేషన్, ఆ అదనపు ఆపరేషన్ల కోసం ఆటోమేటిక్గా కాజాలిటీని (causality) గ్యారెంటీ చేయదు. సాధారణంగా స్కాన్ను సరిగ్గా హ్యాండిల్ చేసే ఫాస్ట్ ఫ్యూజ్డ్ కెర్నల్స్ లేనప్పుడు, PyTorch ప్యూర్-పైథాన్ (pure-Python) chunked-scan పాత్కు మారుతుంది. ఆ ఫాల్బ్యాక్లో అక్షరాల కలయిక (axis-mixup) ఉండటం వల్ల, ఇన్ఫరెన్స్ సమయంలో తర్వాతి స్థానాల నుండి సమాచారం వెనక్కి ప్రవహించే అవకాశం ఉంటుంది.
ఈ లీక్ నిశ్శబ్దంగా జరుగుతుంది. ఇది మోడల్ను క్రాష్ చేయదు లేదా స్పష్టమైన ఎర్రర్ను చూపదు. బదులుగా, ఇది లాస్ (loss) మరియు పర్ప్లెక్సిటీ (perplexity) విలువలను కృత్రిమంగా తక్కువగా చూపిస్తుంది, ఎందుకంటే మోడల్ నిజానికి మోసం చేస్తోంది—అంటే అది ఊహించాల్సిన టోకెన్లనే చూస్తోంది. అందువల్ల, ఈ మెట్రిక్స్ను నమ్మే ఏ డౌన్స్ట్రీమ్ ఎవాల్యుయేషన్ అయినా బలహీనమైన పునాదిపై నిర్మించబడినట్లే అవుతుంది.
ఈ సమస్య ఎలా బయటపడింది
పరిశోధకులు ఒకే మోడల్ ద్వారా రెండు ఫార్వర్డ్ పాస్లను పోల్చారు:
- ఒక రాండమ్ టోకెన్ సీక్వెన్స్.
- ఒకే సీక్వెన్స్, కానీ అందులో ఒక టోకెన్ మార్చబడింది.
వారు లేయర్ల వారీగా హిడెన్ స్టేట్స్లో (hidden states) తేడాలను కొలిచారు. మాస్క్ ఇన్స్పెక్షన్ ఏమీ గుర్తించలేదు, కానీ ఫాల్ట్స్ను ఇంజెక్ట్ చేసిన లేయర్-వైజ్ ఆడిట్, ఇంజెక్ట్ చేసిన 192 లో 192 ఎర్రర్లను గుర్తించి, లీక్ను ధృవీకరించింది.
transformers లైబ్రరీని తనిఖీ చేయగా ఈ క్రింది విషయాలు తెలిశాయి:
- Zamba2-1.2B చంక్ సైజ్ (chunk size) 256గా ఉన్నప్పుడు లీక్ అవుతుంది.
- Nemotron-H-8B చంక్ సైజ్ 128 వద్ద లీక్ అవుతుంది.
- మిగిలిన చాలా చెక్పాయింట్లు అదే పరిస్థితుల్లో ఎటువంటి లీకేజీని చూపలేదు.
ఈ లోపం ఆప్షనల్ ఫ్యూజ్డ్ కెర్నల్స్ లేనప్పుడు రన్ అయ్యే chunked-scan కోడ్ పాత్లో ఉంది. అందులో ఇవి కూడా ఉన్నాయి:
- అన్ని CPU ఎగ్జిక్యూషన్లు.
- నిర్దిష్ట ఫ్యూజ్డ్-కెర్నల్ ప్యాకేజీలు లేని GPU ఎన్విరాన్మెంట్లు.
- అదనపు డిపెండెన్సీలు లేని స్టాండర్డ్ PyTorch ఇన్స్టాలేషన్లు.
ఈ కెర్నల్స్ లేనప్పుడు మాత్రమే బగ్ కనిపిస్తుంది కాబట్టి, ఇది CI ఎన్విరాన్మెంట్లలో మరియు CPUలపై బయటపడవచ్చు.
ఎవరికి ప్రమాదం ఉంది మరియు దీని వల్ల కలిగే నష్టం ఏమిటి
ఫ్యూజ్డ్ కెర్నల్స్ లేకుండా హైబ్రిడ్ మోడల్స్ను ట్రైన్ చేసే, ఫైన్-ట్యూన్ చేసే లేదా ఎవాల్యుయేట్ చేసే ఏ టీమ్ అయినా, అతిగా పెంచబడిన పనితీరు సంఖ్యలను (inflated performance numbers) ప్రచురించే ప్రమాదంలో ఉంది. లాస్ లేదా పర్ప్లెక్సిటీలో కనిపిస్తున్న మెరుగుదల కేవలం ఒక భ్రమ మాత్రమే; మోడల్ నిజానికి "ముందుకే చూసింది". పరిశోధన సమూహాలకు (research groups), ఇది స్టేట్-ఆఫ్-ది-ఆర్ట్ ఫలితాల గురించి తప్పుదారి పట్టించే క్లెయిమ్లకు దారితీయవచ్చు. కమర్షియల్ డిప్లాయ్మెంట్ల విషయానికి వస్తే, ఇది నిజంగా నేర్చుకోని జనరేషన్ టాస్క్లలో డౌన్స్ట్రీమ్ ఎర్రర్లకు కారణం కావచ్చు.
ప్రతివాదన (The counter-argument)
సరిగ్గా అప్లై చేసిన కాజల్ మాస్క్ (causal mask) భవిష్యత్తు టోకెన్ లీకేజీని నిరోధించడానికి సరిపోతుందని కొందరు డెవలపర్లు వాదిస్తారు. ఈ బగ్ ఆ భావనను తప్పు అని నిరూపిస్తుంది: స్కాన్స్, కన్వల్యూషన్స్ మరియు కొన్ని నార్మలైజేషన్ లేయర్లు మాస్క్ను పూర్తిగా బైపాస్ చేయగలవు. చంక్ స్కాన్లోని అక్షరాల కలయిక (axis-mixup) ద్వారా, డేటా ప్రవహించే ప్రతిచోటా కాజాలిటీని అమలు చేయాలని తెలుస్తుంది, కేవలం అటెన్షన్ మ్యాట్రిక్స్లో మాత్రమే కాదు.
తదుపరి ఏమి గమనించాలి
- డిపెండెన్సీ హైజీన్ (Dependency hygiene): అన్ని ట్రైనింగ్ మరియు ఇన్ఫరెన్స్ నోడ్స్లో, ముఖ్యంగా CI పైప్లైన్లలో, ఫాస్ట్ ఫ్యూజ్డ్-కెర్నల్ ప్యాకేజీలను ఇన్స్టాల్ చేయండి.
- ఆడిట్ స్క్రిప్ట్లు: కనుగొన్న వారు సూచించిన రెండు-అడుగుల ఆడిట్ను అనుసరించండి:
- పాజిటివ్ కంట్రోల్గా మీరు టెస్ట్ చేస్తున్న చెక్పాయింట్లోకి ఒక తెలిసిన ఫాల్ట్ను ఇంజెక్ట్ చేయండి.
- మోడల్ యొక్క చంక్ లేదా విండో సైజ్ కంటే ఎక్కువ పొడవున్న సీక్వెన్స్లను రన్ చేయండి; చిన్న సీక్వెన్స్లు లీక్ను ఎప్పటికీ బయటపెట్టవు.
చంక్ సైజ్ కంటే ఎక్కువ సీక్వెన్స్ లెంగ్త్తో ఏదైనా హైబ్రిడ్ లేదా స్టేట్-స్పేస్ చెక్పాయింట్పై ఆడిట్ రన్ చేయడం ద్వారా, మోడల్ ఇంకా ప్రమాదంలో ఉందో లేదో తెలుస్తుంది.
ముఖ్య గమనిక (Takeaway): ప్రతి స్టాండర్డ్ టెస్ట్ను పాస్ అయ్యే మోడల్ కూడా, ఎగ్జిక్యూషన్ పాత్ ఒక బగ్ ఉన్న ఇంప్లిమెంటేషన్కు మారినప్పుడు నిశ్శబ్దంగా మోసం చేయవచ్చు. ఫాస్ట్ ఫ్యూజ్డ్ కెర్నల్స్ ఉన్నాయని నిర్ధారించుకోవడం—మరియు అటెన్షన్ మాస్క్ల కంటే మించి లీకేజీ కోసం స్పష్టంగా పరీక్షించడం—ఏ హైబ్రిడ్ మోడల్ మెట్రిక్స్ను నమ్మే ముందు ఇప్పుడు తప్పనిసరి అడుగులు.
