రాబ్లాక్స్లో 3D సృష్టి కోసం AI ఇన్ఫరెన్స్ను వేగవంతం చేయడం
7.8 రెట్లు వేగవంతమైన, మరింత ప్రతిస్పందించే 3D వస్తువుల సృష్టి

- మరింత ప్రతిస్పందించే పునరావృతి కోసం 3D మెష్ జనరేషన్ను వేగవంతం చేయడానికి రాబ్లాక్స్, CUDA గ్రాఫ్లు మరియు KV క్యాషింగ్ను అమలు చేసింది.
- లాంచ్ సమయంలో, క్యూబ్ 3D మోడల్ 7.8 మిల్లీసెకన్లలో (గతంలో 60.5 మిల్లీసెకన్లు) టోకెన్లను మరియు 4 సెకన్లలో (గతంలో 31 సెకన్లు) పూర్తి వస్తువులను రూపొందించగలిగింది.
ఈ సంవత్సరం ప్రారంభంలో, రాబ్లాక్స్ మా క్యూబ్ 3D ఫౌండేషన్ మోడల్ యొక్క మొదటి సామర్థ్యాన్ని పంచుకుంది. క్యూబ్ 3Dతో, సృష్టికర్తలు టెక్స్ట్ ప్రాంప్ట్ల నుండి నేరుగా 3D మోడల్లు మరియు వాతావరణాలను రూపొందించవచ్చు. ప్రారంభం నుండే, నెమ్మదైన జనరేషన్ సమయాలు సహజంగా పునరావృతమయ్యే ప్రక్రియకు అంతరాయం కలిగిస్తాయని గుర్తించి, మేము లేటెన్సీ ఆప్టిమైజేషన్కు ప్రాధాన్యత ఇచ్చాము. మార్చిలో క్యూబ్ 3D ప్రారంభం కాకముందే, మేము ఇన్ఫరెన్స్ దశను డెవలపర్లు మరియు వినియోగదారుల కోసం 7.8 రెట్లు వేగంగా మరియు మరింత ప్రతిస్పందించేలా చేసాము.
ప్రారంభం నుండి, అనేక ముఖ్యమైన అనుభవాలలో 578,000 కంటే ఎక్కువ వస్తువులు రూపొందించబడ్డాయి. "పిల్లిలు", "బర్గర్లు" మొదలైన టెక్స్ట్ ప్రొంప్ట్లతో అనుభవాలలో 3D వస్తువులను రూపొందించడానికి వినియోగదారులను అనుమతించడంలో డెవలపర్లు కూడా ఆసక్తి చూపారు. ముఖ్యంగా, వాయిస్ చాట్ను ఉపయోగించే ఒక ప్రసిద్ధ హ్యాంగ్అవుట్ గేమ్ అయిన మైక్ అప్, ఆటగాళ్లకు వస్తువులను రూపొందించడానికి ఒక సరదా మరియు ఇంటరాక్టివ్ మార్గాన్ని అందించడానికి క్యూబ్ 3Dని ఉపయోగించుకుంది. వారి అమలులో, ఆటగాళ్ళు AI ఐకాన్తో సహా అదనపు సామర్థ్యాల కోసం ఎడమ-చేతి మెనూను తెరవవచ్చు. ఆ ఐకాన్పై క్లిక్ చేసిన తర్వాత, ఆటగాళ్ళు 3D ఆబ్జెక్ట్ను రూపొందించడానికి టెక్స్ట్ ప్రాంప్ట్ను నమోదు చేయవచ్చు. వినియోగదారుల కోసం, ఎక్కువసేపు జనరేషన్ సమయం తీసుకోవడం అసౌకర్యాన్ని సృష్టిస్తుంది, వారి ఆలోచనలు నిజ సమయంలో 3Dగా మారడాన్ని చూసే అద్భుతాన్ని వారికి దూరం చేస్తుంది.
మేము 3D జనరేషన్ అనుభవాన్ని, ఆపి వేచి ఉండే పరస్పర చర్య నుండి, వేగవంతమైన ప్రయోగాలను సాధ్యం చేస్తూ, ప్రతిస్పందించే మరియు సహజమైన అనుభవంగా మార్చాలనుకున్నాము. ఒక సన్నివేశానికి వస్తువులను త్వరగా జోడించగల సామర్థ్యం డెవలపర్లకు చాలా కీలకం. Cube 3Dని వేగవంతం చేయడానికి, మేము పనితీరులో ఆటంకాలు (bottlenecks) ఏవి ఉన్నాయో గుర్తించడానికి ఇన్ఫెరెన్స్ పైప్లైన్ను మొదట విశ్లేషించాము. శక్తివంతమైన GPUలను ఉపయోగించినప్పటికీ, ఆపరేషన్ల మధ్య గణనీయమైన నిష్క్రియ సమయం (idle time) ఉన్నట్లు మేము కనుగొన్నాము.
CPU-GPU షెడ్యూలింగ్ బాటిల్నెక్ను పరిష్కరించడం
ఆధునిక డీప్ లెర్నింగ్ ఫ్రేమ్వర్క్లు GPUపై ఆపరేషన్లను (లేదా కెర్నెల్స్ను) షెడ్యూల్ చేయడానికి మరియు ప్రారంభించడానికి CPUపై ఆధారపడతాయి. CPU ప్రతి ఆపరేషన్ను సిద్ధం చేసి, దానిని GPUకు పంపి, తదుపరి ఆపరేషన్ను సిద్ధం చేసే ముందు నిర్ధారణ కోసం వేచి ఉంటుంది. ఈ వేచి ఉండటం ఒక షెడ్యూలింగ్ బాటిల్నెక్ను సృష్టిస్తుంది, దీనిలో CPU తదుపరి పని బ్యాచ్ను సిద్ధం చేస్తున్నప్పుడు GPU నిరుపయోగంగా కూర్చోవచ్చు. ఆదర్శవంతంగా, CPU GPU కంటే ముందుగా పని చేయాలని, ఆపరేషన్లను సిద్ధం చేసి క్యూలో ఉంచాలని మనం కోరుకుంటాము, తద్వారా GPUకు ఎల్లప్పుడూ చేయడానికి పని ఉంటుంది.
క్యూబ్ 3డి వంటి ట్రాన్స్ఫార్మర్-రకం మోడళ్లలోని ఆటోరిగ్రెసివ్ డీకోడర్లకు ఇది ప్రత్యేకంగా సమస్యాత్మకం, ఎందుకంటే అవి ఇన్పుట్ను క్రమంగా ప్రాసెస్ చేసి టోకెన్లను ఉత్పత్తి చేయాలి. ఈ మోడళ్లకు ఒకే జనరేషన్ కోసం వేలాది వ్యక్తిగత ఆపరేషన్లు అవసరం, మరియు క్రమంలోని ప్రతి దశతో కంప్యూటేషనల్ ఓవర్హెడ్ పేరుకుపోతుంది.
"మేము నాలుగు-పరిమాణ పరస్పర చర్యను సాధ్యం చేసే దాన్ని నిర్మించాలనుకున్నాము," అని ఇంజనీరింగ్ వైస్ ప్రెసిడెంట్ అనుపమ్ సింగ్, రాబ్లాక్స్ ఎందుకు ఆటోరిగ్రెసివ్ విధానాన్ని ఎంచుకుందో వివరిస్తూ అన్నారు. "మేము కేవలం కారును నిర్మించాలనుకోవడం లేదు; మేము కారు తలుపు తెరిచి, దానిలోకి వెళ్ళగలగాలి కూడా."
ప్రతి ఆపరేషన్ వలన అయ్యే ఖర్చు:
- ప్రతి కెర్నల్ను సిద్ధం చేయడానికి CPU సమయం
- కర్నెల్ను ప్రారంభించడం వల్ల కలిగే అదనపు భారం
- GPU ఎగ్జిక్యూషన్ సమయం (వాస్తవ గణన)
- పూర్తయినదాని కోసం తనిఖీ చేసేటప్పుడు సింక్రొనైజేషన్ ఓవర్హెడ్
GPUపై త్వరగా పూర్తయ్యే చిన్న ఆపరేషన్ల విషయంలో, ఈ ఓవర్హెడ్ ఇన్ఫెరెన్స్ సమయాన్ని అధిగమించగలదు. మొత్తం ఇన్ఫెరెన్స్ సమయంలో GPU కేవలం ఒక చిన్న భాగం మాత్రమే చురుకుగా గణన చేస్తూ ఉండవచ్చు.


CUDA గ్రాఫ్లను అమలు చేయడం: మధ్యవర్తిని తొలగించడం
ఈ అడ్డంకిని అధిగమించడానికి, మేము CUDA గ్రాఫ్లను ఉపయోగించాము—ఇది CPU జోక్యం లేకుండా GPU ఆపరేషన్ల క్రమాలను రికార్డ్ చేయడానికి మరియు మళ్లీ ప్లే చేయడానికి అనుమతించే ఒక ఫీచర్. క్యూబ్ 3D యొక్క నిర్మాణంలోని ఆటోరిగ్రెసివ్ డీకోడర్ కాంపోనెంట్, టెక్స్ట్ ప్రాంప్ట్లను ప్రాసెస్ చేసి, ఒక స్థిర-పొడవు వెక్టర్ ద్వారా షేప్ టోకెన్లను ఉత్పత్తి చేస్తుంది.
సాంప్రదాయ లార్జ్ లాంగ్వేజ్ మోడల్ (LLM)తో క్రియాత్మకంగా సారూప్యంగా ఉన్నప్పటికీ, మా డ్యూయల్-స్ట్రీమ్ డీకోడర్ ఆర్కిటెక్చర్లో ఒక ముఖ్యమైన తేడా ఉంది—ఇది రెండు సమాంతర అటెన్షన్ స్ట్రీమ్లను ఉపయోగిస్తుంది. ఒక స్ట్రీమ్ కండిషన్ టోకెన్ల కోసం మరియు మరొకటి షేప్ టోకెన్ల కోసం కేటాయించబడింది. అందుబాటులో ఉన్న LLM ఇన్ఫెరెన్స్ ఇంజిన్లు మా అవసరాలకు అనుకూలంగా లేవు, మరియు మా నిర్దిష్ట ఆర్కిటెక్చర్కు అనుగుణంగా రూపొందించిన ఒక కస్టమ్ ఇంప్లిమెంటేషన్ మాకు అవసరమైంది.
GPU కోసం ఒక మాక్రోను రికార్డ్ చేయడం లాగా CUDA గ్రాఫ్లను భావించండి. CPU ప్రతి కమాండ్ను విడివిడిగా జారీ చేయడానికి బదులుగా, ఇది GPU ఆపరేషన్ల యొక్క పూర్తి క్రమం (గ్రాఫ్)ను రికార్డ్ చేసి, ఒకే CPU సూచనతో మొత్తం గ్రాఫ్ను ప్రారంభిస్తుంది. ఈ విధానం ఇన్ఫెరెన్స్ సమయంలో ప్రతి ఆపరేషన్ను CPU విడివిడిగా షెడ్యూల్ చేయవలసిన అవసరాన్ని తొలగించడం ద్వారా కెర్నల్ లాంచ్ ఓవర్హెడ్ను గణనీయంగా తగ్గిస్తుంది. గ్రాఫ్ ప్రారంభించబడిన తర్వాత, GPU తదుపరి సూచనల కోసం వేచి ఉండకుండా, స్వయంప్రతిపత్తంగా మొత్తం క్రమాన్ని అమలు చేస్తుంది.
క్యూడా గ్రాఫ్లకు కొన్ని పరిమితులు ఉన్నాయి. గ్రాఫ్ నిర్మాణాన్ని ముందుగానే నిర్ణయించాల్సి రావడం వల్ల, వాటికి స్థిరమైన బ్యాచ్ పరిమాణం మరియు ఇన్పుట్ కొలతలు అవసరం. అంటే, ప్రతి బ్యాచ్ పరిమాణం లేదా ఇన్పుట్ ఆకారానికి ప్రత్యేక గ్రాఫ్లను సృష్టించాల్సి ఉంటుంది. క్యూబ్ 3Dతో మా వినియోగ సందర్భంలో, ఈ పరిమితి ఆమోదయోగ్యంగా ఉంది, ఎందుకంటే మేము సాధారణ ఇన్పుట్ కొలతల చుట్టూ ఇన్ఫెరెన్స్ ప్రక్రియను ప్రామాణీకరించగలిగాము.
మా క్యూబ్ 3D మోడల్ కోసం CUDA గ్రాఫ్లను అమలు చేయడానికి మేము మా విధానాన్ని మార్చుకోవలసి వచ్చింది. సాంప్రదాయ LLMలలో, అటెన్షన్ ఆపరేషన్లు ఎల్లప్పుడూ ఒకే సీక్వెన్స్ పొడవుతో నిర్వహించబడతాయి, ఇది పని చేయడానికి ఒక స్థిరమైన ఆకారాన్ని అందిస్తుంది. అయితే, మా కస్టమ్ డ్యూయల్-స్ట్రీమ్ ఆర్కిటెక్చర్లో, కొన్ని అటెన్షన్ లేయర్లు కేవలం సీక్వెన్స్ పొడవుపై పనిచేస్తాయి, మరికొన్ని సీక్వెన్స్ మరియు కండిషన్ పొడవుల కలయికపై పనిచేస్తాయి.
ఈ సవాళ్లు ఉన్నప్పటికీ, CUDA గ్రాఫ్లను అమలు చేసిన తర్వాత మేము గణనీయమైన ఫలితాలను చూశాము. ఇన్ఫెరెన్స్ సమయంలో ప్రతి టోకెన్ యొక్క జనరేషన్ సమయాన్ని కొలవడానికి మేము టైమ్ పర్ అవుట్పుట్ టోకెన్ (TPOT)ని ఉపయోగిస్తాము. CUDA గ్రాఫ్లను అమలు చేసిన తర్వాత, మా TPOT 60.5 మిల్లీసెకన్ల నుండి 20.5 మిల్లీసెకన్లకు మెరుగుపడింది, ఇది 2.9 రెట్ల మెరుగుదల. మొత్తం జనరేషన్ సమయం 31 సెకన్ల నుండి 10.5 సెకన్లకు, అంటే 66% తగ్గింది.
కెవి క్యాచింగ్: మా విజయంపై నిర్మాణం
ల్యాటెన్సీని మరింత మెరుగుపరచడానికి, మేము KV క్యాషింగ్ను అమలు చేసాము, ఇది LLM ఇన్ఫర్న్స్లో ఒక ప్రామాణిక పద్ధతి మరియు ఇది పరిశ్రమ అంతటా అత్యంత ప్రభావవంతంగా నిరూపించబడింది.
క్యూబ్ 3D వంటి ట్రాన్స్ఫార్మర్-ఆధారిత మోడళ్లలో, ప్రతి టోకెన్ జనరేషన్కు ముందుగా జనరేట్ చేయబడిన అన్ని టోకెన్ల ఆధారంగా కీ (K) మరియు వాల్యూ (V) మాట్రిక్స్లను కంప్యూట్ చేయాలి. క్రమం పెరిగేకొద్దీ, ప్రతి టోకెన్ కోసం ఈ మాట్రిక్స్లను మళ్లీ కంప్యూట్ చేయడం చాలా అసమర్థంగా మారుతుంది.
KV క్యాషింగ్ దీనిని ఈ విధంగా పరిష్కరిస్తుంది:
- ఇంతకుముందు రూపొందించబడిన అన్ని టోకెన్ల కోసం K మరియు V మాత్రికలను నిల్వ చేయడం
- కేవలం కొత్త టోకెన్ల కోసం K మరియు V మాత్రికలను లెక్కించడం
- ఈ కొత్త మాత్రికలను క్యాష్ చేయబడిన విలువలకు జోడించడం
ఈ విధానం అనవసరమైన గణనను తొలగిస్తుంది, ప్రతి కొత్త టోకెన్కు అవసరమైన పనిని తగ్గిస్తుంది. ఉత్పత్తి చేయబడిన క్రమం పొడవుగా పెరిగే కొద్దీ ఇది ప్రత్యేకంగా ప్రభావవంతంగా మారుతుంది.
CUDA గ్రాఫ్ ఇంప్లిమెంటేషన్తో KV క్యాషింగ్ను ఏకీకృతం చేయడంలో మా విధానం సాంప్రదాయ LLM ఇన్ఫెరెన్స్ను పోలి ఉంది. KV క్యాషింగ్ను జోడించడం ద్వారా మా TPOT కేవలం 7.8 మిల్లీసెకన్లకు తగ్గింది. మొత్తం జనరేషన్ సమయం 87% తగ్గింది, అసలు 31 సెకన్ల నుండి కేవలం 4 సెకన్లకు పడిపోయింది. ఈ గణనీయమైన సమయ తగ్గింపు ఈ సాధనాన్ని ఉపయోగించే సృష్టికర్తలకు దీనిని మరింత ప్రభావవంతంగా చేస్తుంది.


డెవలపర్లు మరియు వినియోగదారులపై వాస్తవ ప్రపంచ ప్రభావాన్ని అంచనా వేయడం

మేము ఆప్టిమైజ్ చేయబడిన కెర్నెల్స్, మరింత వేగవంతమైన ఇన్ఫరెన్స్ కోసం మోడల్ క్వాంటిజేషన్, హార్డ్వేర్-నిర్దిష్ట ఆప్టిమైజేషన్లు మరియు పారలల్ టోకెన్ జనరేషన్ వంటి ల్యాటెన్సీని మరింత తగ్గించి, వినియోగదారు అనుభవాన్ని మెరుగుపరిచే పద్ధతులను అన్వేషిస్తున్నాము.
మనం పూర్తి సీన్ జనరేషన్ మరియు అవగాహన వైపు విస్తరించినప్పుడు ఈ పని మరింత సంక్లిష్టంగా మారుతుంది, ఎందుకంటే అక్కడ అనేక 3D అంశాలు ఒక లేఅవుట్లో ఒకదానికొకటి సందర్భోచితంగా కలిసి పనిచేయాల్సి ఉంటుంది. మేము సృష్టించే 3D వస్తువులు మరియు ప్రపంచాలు పూర్తిగా పనిచేసేలా కూడా మేము కోరుకుంటున్నాము, ఉదాహరణకు తలుపులు తెరుచుకుని మూసుకునేలా, చక్రాలు తిరిగేలా మరియు మొదలైనవి. ఆ లక్ష్యాన్ని చేరుకోవడానికి, పూర్తి సీన్లు, పూర్తిగా పనిచేసే వస్తువులు మరియు అవతారాల స్థాయికి విస్తరించడానికి మాకు వేగవంతమైన జనరేషన్ మరియు పునరావృతం అవసరం. మేము మా క్యూబ్ 3D ఫౌండేషన్ మోడల్ను విస్తరిస్తున్నప్పుడు, మరిన్ని మెరుగుదలలను మరియు కొత్త కార్యాచరణను పంచుకోవడానికి—మరియు మా క్రియేటర్ కమ్యూనిటీ వాటితో నిర్మించే లీనమయ్యే ప్రపంచాలను చూడటానికి ఉత్సాహంగా ఉన్నాము.


