కేవలం 3.2 GB RAM మాత్రమే ఉన్న ఒక లాప్టాప్పై 284 బిలియన్ పారామీటర్ల లాంగ్వేజ్ మోడల్ను, కేవలం plain C99 మరియు NVMe డ్రైవ్ను ఉపయోగించి రన్ చేయగలిగాను. మొత్తం 160 GB చెక్పాయింట్ను మెమరీలోకి లోడ్ చేసే బదులు, మోడల్ యొక్క ఎక్స్పర్ట్ వెయిట్స్ను (expert weights) స్ట్రీమ్ చేయడం ద్వారా ఇది సాధ్యమైంది. దీనివల్ల అతిపెద్ద mixture-of-experts (MoE) మోడల్లను కూడా సాధారణ వినియోగదారుల హార్డ్వేర్పై నడపవచ్చని నిరూపితమైంది.
ఇది ఎందుకు ముఖ్యం
లార్జ్ లాంగ్వేజ్ మోడల్స్ (LLMs) కోడ్ జనరేషన్, రీసెర్చ్ అసిస్టెన్స్ మరియు మరెన్నో పనులకు శక్తినిస్తాయి, కానీ వాటి పరిమాణం వల్ల సాధారణంగా వినియోగదారులు ఖరీదైన మల్టీ-GPU సర్వర్లను లేదా నాణ్యతను దెబ్బతీసే హెవీ క్వాంటైజేషన్ (heavy quantisation) పద్ధతులను ఉపయోగించాల్సి వస్తుంది. 284 B-పారామీటర్ల MoE మోడల్ను కేవలం కొన్ని గిగాబైట్ల RAMతో రన్ చేయవచ్చని చూపడం ద్వారా, హాబీయిస్ట్లు, చిన్న స్టార్టప్లు మరియు బడ్జెట్ పరిమితులు ఉన్న పరిశోధకులు నాణ్యతను తగ్గించకుండా అత్యాధునిక మోడల్స్తో ప్రయోగాలు చేసే అవకాశం లభిస్తుంది.
మోడల్ మరియు హార్డ్వేర్ అడ్డంకి (bottleneck)
DeepSeek-V4-Flash ప్రతి ట్రాన్స్ఫార్మర్ లేయర్లో 256 ఎక్స్పర్ట్ల ద్వారా 284 B పారామీటర్లను నిల్వ చేస్తుంది. దీని అసలు చెక్పాయింట్ డిస్క్లో సుమారు 160 GB ఆక్రమిస్తుంది—ఇది సాధారణ లాప్టాప్లోని 3.2 GB RAM కంటే చాలా పెద్దది. సాంప్రదాయ ఇన్ఫరెన్స్ పైప్లైన్లు మొత్తం చెక్పాయింట్ను మెమరీలోకి మ్యాప్ చేయడానికి ప్రయత్నిస్తాయి, దీనివల్ల RAM త్వరగా అయిపోయి సిస్టమ్ క్రాష్ అవుతుంది.
ఎక్స్పర్ట్ వెయిట్స్ను స్ట్రీమింగ్ చేయడం: ప్రధాన ఆలోచన
MoE ఆర్కిటెక్చర్లు ప్రతి టోకెన్ కోసం ఎక్స్పర్ట్ల యొక్క అతి తక్కువ ఉపసమితిని (subset) మాత్రమే యాక్టివేట్ చేస్తాయి. DeepSeek-V4-Flashలో, రూటర్ ప్రతి లేయర్లో 256 ఎక్స్పర్ట్లలో ఆరు ఎక్స్పర్ట్లను ఎంచుకుంటుంది. కంప్యూటేషన్ ఎప్పుడూ ఉపయోగించని (dormant) ఎక్స్పర్ట్లను తాకదు కాబట్టి, ఇన్ఫరెన్స్ ఇంజిన్ వాటిని లోడ్ చేయకుండా వదిలేయవచ్చు.
ఈ ఇంప్లిమెంటేషన్ చెక్పాయింట్ను ఒక స్ట్రీమింగ్ సోర్స్గా పరిగణిస్తుంది. ప్రస్తుత టోకెన్ కోసం ఏ ఎక్స్పర్ట్లు అవసరమో రూటర్ నిర్ణయించినప్పుడు, ఇంజిన్ ఆ వెయిట్ బ్లాక్లను NVMe డ్రైవ్ నుండి RAMలో ఉండే LRU (least-recently-used) క్యాష్లోకి తీసుకువస్తుంది. క్యాష్ తగినంత పెద్దదిగా ఉంటే, వరుస టోకెన్ల కోసం అదే ఎక్స్పర్ట్లను మళ్లీ ఉపయోగించవచ్చు (cache hits); క్యాష్ చాలా చిన్నదిగా ఉంటే, ఇంజిన్ తరచుగా డిస్క్ నుండి చదువుతుంది. దీని ఫలితంగా, ఫుల్-ప్రిసిషన్ వెయిట్స్ను అలాగే ఉంచుతూ మరియు ఎటువంటి GPU యాక్సిలరేషన్ అవసరం లేకుండానే, లాప్టాప్ పరిమితులకు లోబడి కేవలం 3.23 GB గరిష్ట మెమరీ వినియోగంతో (peak memory footprint) ఇది పనిచేస్తుంది.
ఇంప్లిమెంటేషన్ నుండి నేర్చుకున్న కఠినమైన పాఠాలు
1. ఫ్లూయెంట్ అవుట్పుట్ అనేది ఖచ్చితత్వానికి నిదర్శనం కాదు మోడల్ యొక్క లాంగ్వేజ్ ప్యాటర్న్లు సంఖ్యాపరమైన లోపాలను (numerical errors) కప్పిపుచ్చేటప్పుడు, ఒక బగ్ ఉన్న కెర్నల్ కూడా నమ్మశక్యంగా కనిపించే వాక్యాలను ఇవ్వవచ్చు. నేను ప్రతి 14 క్రిటికల్ ఆపరేషన్లను కొత్త PyTorch రిఫరెన్స్తో పోల్చి చూశాను, సంఖ్యాపరమైన తేడా చాలా తక్కువగా ఉండేలా చూసుకున్నాను. ఈ దశను వదిలేసి ఉంటే, సూక్ష్మమైన తేడాలు (subtle drift) బయటపడకుండా మిగిలిపోయేవి.
2. ఉమ్మడి వైఫల్య విధానాలు (Shared failure modes) మీ పరీక్షలను మోసం చేయవచ్చు మెమరీ-కరప్షన్ బగ్ వల్ల రూటింగ్ ఎంపికలు కేవలం కొన్ని ఎక్స్పర్ట్లకే పరిమితమయ్యాయి, దీనివల్ల క్యాష్-హిట్ రేటు 52% నుండి 95%కి పెరిగి, వేగం విపరీతంగా పెరిగినట్లు భ్రమ కలిగించింది. టెస్ట్ సూట్ ఒకే బగ్ ఉన్న కోడ్లోని రెండు వెర్షన్లను పోల్చడం వల్ల, ఈ సమస్యను గుర్తించలేకపోయింది. దీనికి పరిష్కారం ఏమిటంటే—ఒక స్వతంత్ర రిఫరెన్స్ పాత్ (independent reference path) జోడించడం. అంటే, ప్రాథమిక ఇంప్లిమెంటేషన్తో ఎటువంటి లాజిక్ పంచుకోని కోడ్ను ఉపయోగించడం ద్వారా, ఏదైనా ఉమ్మడి లోపం (shared flaw) గుర్తించబడకుండా పోకుండా చూడవచ్చు.
3. ఆప్టిమైజ్ చేసే ముందు కొలవండి (Measure) మెమరీ కాపీకి 1 ms పడుతుందని నేను అనుకుని, దానిని ఆప్టిమైజ్ చేయడానికి సమయం వెచ్చించాను. కానీ ప్రొఫైలింగ్ చేసినప్పుడు, ఆ ఆపరేషన్కు నిజానికి 3.6 ms, అంటే మొత్తం ఇన్ఫరెన్స్ సమయానికి 22% పడుతుందని తెలిసింది. పాఠం ఏమిటంటే: పెర్ఫార్మెన్స్-క్రిటికల్ విభాగాల కోసం ఎప్పుడూ అంతర్ దృష్టి (intuition) మీద ఆధారపడకండి; ఖచ్చితమైన కొలత మాత్రమే నమ్మదగిన మార్గదర్శి.
4. థర్మల్ పరిస్థితులు త్రూపుట్పై (throughput) గణనీయంగా ప్రభావం చూపుతాయి వేడెక్కిన (heat-soaked) లాప్టాప్పై బెంచ్మార్క్లను రన్ చేసినప్పుడు, చల్లని మెషీన్ కంటే మూడు రెట్లు ఎక్కువ సమయం పట్టింది. అధిక ఉష్ణోగ్రతలు NVMe డ్రైవ్ త్రూపుట్ను తగ్గించడమే కాకుండా CPU వేగాన్ని కూడా తగ్గించి, ఫలితాలను తప్పుగా చూపిస్తాయి. మీరు పెర్ఫార్మెన్స్ నంబర్లను ప్రచురించేటప్పుడు సిస్టమ్ యొక్క థర్మల్ స్థితిని కూడా నమోదు చేయండి.
గణాంకాలు ఎలా ఉన్నాయి
- డిస్క్లో మోడల్ సైజు: ~160 GB
- గరిష్ట RAM వినియోగం: 3.23 GB
- టోకెన్ పర్ ఎక్స్పర్ట్: 6 (256లో నుండి)
- క్యాష్-హిట్ రేటు: RAM ని బట్టి మారుతుంది; 3.2 GBతో ఇది హెచ్చుతగ్గులకు లోనవుతుంది.
- క్వాంటైజేషన్ లేదు: ఫుల్-ప్రిసిషన్ వెయిట్స్ను స్ట్రీమ్ చేయడం ద్వారా మోడల్ నాణ్యతను కాపాడటం జరిగింది.
ఒకవేళ RAM బడ్జెట్ 3.21 GB కంటే తగ్గితే, క్యాష్ ఎప్పటికీ నిండదు మరియు ఇంజిన్ ప్రతి టోకెన్కు స్ట్రీమింగ్ చేయాల్సి వస్తుంది, దీనివల్ల పెర్ఫార్మెన్స్ గణనీయంగా తగ్గుతుంది.
సోర్స్ కోడ్ github.com/ronak-create/deepseek-v4-in-c లో పబ్లిక్గా అందుబాటులో ఉంది. ఈ ప్రయోగాన్ని పునరావృతం చేయాలనుకునే లేదా విస్తరించాలనుకునే వారి కోసం t.me/GyaanSetuAi లో కమ్యూనిటీ డిస్కషన్ ఛానెల్ ఉంది.
ముగింపు (Takeaway)
ఒక MoE మోడల్ వాస్తవానికి ఉపయోగించే నిపుణులను (experts) మాత్రమే స్ట్రీమింగ్ చేయడం ద్వారా, క్వాంటైజేషన్ లేదా GPU యాక్సిలరేషన్ లేకుండానే 284 బిలియన్ పారామీటర్ల LLMని ఒక సాధారణ లాప్టాప్పై నడపవచ్చు. తెలివైన డేటా మూవ్మెంట్, కఠినమైన ధృవీకరణ మరియు క్రమబద్ధమైన కొలతల ద్వారా, చాలా మంది మార్చలేనివిగా భావించే హార్డ్వేర్ పరిమితులను అధిగమించవచ్చని ఈ ప్రయోగం నిరూపిస్తోంది.
