spinny:~/writing $ vim webgpu-on-device-ai-browser.md
1~2برسوں سے براؤزر ایپلی کیشن کا اچھا چہرہ تھا اور کلاؤڈ وہ جگہ تھی جہاں مشکل چیزیں ہوتی تھیں۔ صارف لکھتا ہے، کلک کرتا ہے، فائل اپ لوڈ کرتا ہے۔ فرنٹ اینڈ سب کچھ سرور کو بھیجتا ہے۔ سرور ایک ماڈل کو کال کرتا ہے۔ جواب واپس آتا ہے.3~4یہ اسکیم بہت مفید ہے، لیکن یہ مفت نہیں ہے۔ ہر کال تاخیر، لاگت، نیٹ ورک پر انحصار، اور رازداری کے سوالات لاتی ہے۔ اگر صارف کوئی جملہ لکھ رہا ہے اور کوئی تجویز چاہتا ہے تو نصف سیکنڈ کا وزن ہے۔ اگر آپ ہزاروں چھوٹے آدانوں کی درجہ بندی کر رہے ہیں، تو پیسے حقیقی رقم بن جاتے ہیں۔ اگر متن حساس ہے، تو اسے آلہ سے بھیجنا غیر جانبدار انتخاب نہیں ہے۔5~6یہی وجہ ہے کہ WebGPU اور آن ڈیوائس AI hype میں ہیں۔ اس لیے نہیں کہ ہم کل براؤزر میں ہر ماڈل کو چلائیں گے۔ کیونکہ کچھ ذہین خصوصیات صارف کے قریب جا سکتی ہیں۔7~8## ضروری نہیں کہ ہر چیز مقامی بن جائے۔9~10دلیل کا بچکانہ ورژن ہے: "کلاؤڈ بمقابلہ ڈیوائس"۔ مفید ورژن ہائبرڈ ہے۔11~12ڈیوائس پر کچھ کام بہت اچھے لگتے ہیں: مختصر خلاصے، زبان کا پتہ لگانا، ہلکی تحریریں، سادہ درجہ بندی، تصویری فلٹرز، چھوٹے وژن ماڈل، فوری تاثرات کے ساتھ تخلیقی تجربات۔13~14دوسرے کام بادل میں بہتر رہتے ہیں: پیچیدہ استدلال، فرنٹیئر ماڈل، سرور سائیڈ ڈیٹا، سنٹرلائزڈ آڈٹ، یکساں معیار، ورک فلو جہاں آپ کو ہر قدم کو احتیاط سے کنٹرول کرنا ہوتا ہے۔15~16صحت مند فن تعمیر رن ٹائم پر فیصلہ کرتا ہے:17~18```mermaid19flowchart TD20 User[صارف] --> Browser[براؤزرز]21 Browser --> Detect[خصوصیت کا پتہ لگانا]22 Detect -->|حمایت یافتہ| Local[مقامی اندازہ]23 Detect -->|تعاون یافتہ نہیں۔| Cloud[کلاؤڈ فال بیک]24 Local --> UX[تیز ردعمل]25 Cloud --> UX26 UX --> Metrics[میٹرکس اور معیار]27```28~29براؤزر کو بادل کے خلاف جیتنے کی ضرورت نہیں ہے۔ اسے بادل کو ایسے کام کرنے سے بچانا چاہیے جو وہاں کرنے کی ضرورت نہیں ہے۔30~31## WebGPU کیوں اہمیت رکھتا ہے۔32~33WebGPU براؤزر سے GPU استعمال کرنے کے لیے ایک جدید API ہے۔ یہ صرف اچھے 3D گرافکس کے لیے نہیں ہے۔ یہ اس لیے بھی اہم ہے کیونکہ یہ کمپیوٹنگ کے لیے موزوں پرائمٹیوز کو بے نقاب کرتا ہے: متوازی کام کے بوجھ، شیڈرز، پائپ لائنیں جو GPUs اچھی کارکردگی کا مظاہرہ کرتی ہیں۔34~35AI، سائنسی تصور، 3D ایڈیٹرز، ویڈیو فلٹرز اور تخلیقی ٹولز کے لیے یہ فرق محسوس کیا جاتا ہے۔ WebGL نے ویب کے لیے بہت کچھ کیا ہے، لیکن WebGPU ایک ایسے ماڈل کے ساتھ پیدا ہوا جو موجودہ وقت کے لیے بہتر ہے۔36~37تاہم، لکھنے کی پہلی چیز شیڈر نہیں ہے۔ یہ ایک پرسکون خصوصیت کا پتہ لگانا ہے:38~39```typescript40export async function requestWebGpuDevice() {41 if (!('gpu' in navigator)) {42 return null;43 }44~45 const adapter = await navigator.gpu.requestAdapter({46 powerPreference: 'high-performance',47 });48~49 if (!adapter) {50 return null;51 }52~53 return adapter.requestDevice();54}55```56~57یہ فیچر ایک اہم بات کہتا ہے: WebGPU ہر ڈیوائس پر دیا جانے والا حق نہیں ہے۔ یہ تصدیق کرنے کی صلاحیت ہے۔ کچھ براؤزر اس کی مکمل حمایت نہیں کرتے ہیں، کچھ GPU کی حدود ہیں، کچھ انٹرپرائز ماحول خصوصیات کو غیر فعال کرتے ہیں، کچھ صارفین معمولی ہارڈ ویئر پر ہیں۔58~59## بلٹ ان AI: جب براؤزر ماڈل لاتا ہے۔60~61کروم مقامی اشارے، خلاصہ، تحریر، دوبارہ لکھنا، ترجمہ، زبان کا پتہ لگانے، اور پروف ریڈنگ جیسے کاموں کے لیے بلٹ ان APIs کو آگے بڑھا رہا ہے۔ خیال بہت دلچسپ ہے: براؤزر ماڈل، دستیابی اور اپ ڈیٹس کا انتظام کرتا ہے۔ ایپ پلیٹ فارم کے قریب ایک API استعمال کرتی ہے۔62~63اگر یہ اچھی طرح سے کام کرتا ہے، تو یہ بہت بدل جاتا ہے:64~65- آسان کاموں کے لیے کم سرور کالز؛66- وہ ڈیٹا جو آلہ پر رہ سکتا ہے۔67- کم تاخیر؛68- آف لائن یا نیم آف لائن تجربات؛69- تحریر اور ترجمہ کے لیے مزید قدرتی UX۔70~71لیکن اسے ترقی پسند اضافہ سمجھا جانا چاہیے۔ کچھ APIs مستحکم ہیں، دیگر اصل آزمائش یا پیش نظارہ میں ہیں، دیگر اب بھی ورژن، زبان اور ڈیوائس پر منحصر ہیں۔72~73```typescript74type LocalCapability = 'available' | 'downloadable' | 'unsupported';75~76export async function getLocalSummarizerCapability(): Promise<LocalCapability> {77 const SummarizerApi = (globalThis as any).Summarizer;78~79 if (!SummarizerApi?.availability) {80 return 'unsupported';81 }82~83 const availability = await SummarizerApi.availability();84~85 if (availability === 'available') return 'available';86 if (availability === 'downloadable') return 'downloadable';87~88 return 'unsupported';89}90```91~92مخصوص کوڈ بدل جائے گا، لیکن پیٹرن باقی رہتا ہے: آپ دستیابی کی جانچ کرتے ہیں، کسی بھی ڈاؤن لوڈ کی وضاحت کرتے ہیں، فال بیکس پیش کرتے ہیں، اور معیار کی پیمائش کرتے ہیں۔93~94## فال بیک کوئی افسوسناک منصوبہ بی نہیں ہے۔95~96کلاؤڈ فال بیک شکست نہیں ہے۔ یہ پروڈکٹ کا حصہ ہے۔97~98```typescript99interface AiRequest {100 task: 'summarize' | 'rewrite' | 'classify';101 input: string;102}103~104interface AiResult {105 output: string;106 runtime: 'local' | 'cloud';107}108~109export async function runAiTask(request: AiRequest): Promise<AiResult> {110 const local = await tryLocalAi(request);111~112 if (local) {113 return { output: local, runtime: 'local' };114 }115~116 const cloud = await fetch('/api/ai', {117 method: 'POST',118 headers: { 'Content-Type': 'application/json' },119 body: JSON.stringify(request),120 }).then((res) => res.json());121~122 return { output: cloud.output, runtime: 'cloud' };123}124```125~126یہ فن تعمیر آپ کو آہستہ آہستہ بہتر بنانے کی اجازت دیتا ہے۔ مقامی سپورٹ کے حامل افراد بہتر تاخیر اور رازداری حاصل کرتے ہیں۔ جن کے پاس یہ نہیں ہے وہ اب بھی اس فیچر کو استعمال کرتے ہیں۔ آپ مقامی درخواستوں، اوقات، غلطیوں، یادداشت، سمجھے جانے والے معیار اور لاگت کے فیصد کی پیمائش کر سکتے ہیں۔127~128میٹرکس کے بغیر، آلے پر موجود AI ایک جمالیاتی انتخاب بن جاتا ہے۔ میٹرکس کے ساتھ، یہ ایک پروڈکٹ لیور بن جاتا ہے۔129~130## ماڈل کا UX اہمیت رکھتا ہے۔131~132اگر براؤزر کو ماڈل ڈاؤن لوڈ کرنے کی ضرورت ہے، تو صارف اسے سمجھتا ہے۔ اسے مبہم اسپنر کے پیچھے نہ چھپائیں۔ واضح ہونا بہتر ہے: "ہم اس فنکشن کو تیز تر اور آف لائن استعمال کرنے کے لیے ماڈل تیار کرتے ہیں۔"133~134ایک اچھا تجربہ:135~136- تیاری کی حیثیت کو ظاہر کرتا ہے؛137- پورے صفحے کو بلاک نہیں کرتا؛138- آپ کو کلاؤڈ فال بیک کے ساتھ جاری رکھنے کی اجازت دیتا ہے۔139- بیٹری اور میموری کی حیرت سے بچیں؛140- جب بھی ممکن ہو ماڈل کو یاد رکھیں؛141- ایک ٹھوس جملے میں فائدے کی وضاحت کریں۔142~143سب سے بری چیز ایک "سمارٹ" خصوصیت ہے جو ٹوٹی ہوئی نظر آتی ہے کیونکہ یہ خاموشی سے کچھ ڈاؤن لوڈ کر رہا ہے۔144~145## رازداری: بہتر، خود بخود محفوظ نہیں۔146~147ڈیوائس پر ڈیٹا کو پروسیس کرنا ایک بہت بڑا فائدہ ہو سکتا ہے۔ ایک مسودہ ای میل، اندرونی دستاویز، یا ذاتی نوٹ کو تجویز موصول کرنے کے لیے آپ کے براؤزر کو چھوڑنے کی ضرورت نہیں ہے۔148~149تاہم، مقامی کا مطلب خود بخود محفوظ نہیں ہے۔ تاہم، آپ کو اس کے بارے میں سوچنے کی ضرورت ہے:150~151- XSS؛152- حادثاتی نوشتہ جات؛153- اسٹوریج میں محفوظ کردہ ڈیٹا؛154- ناقابل اعتماد مواد سے فوری انجکشن؛155- ماڈل کو دی گئی اجازت؛156- خودکار کارروائیوں میں استعمال ہونے والے آؤٹ پٹ۔157~158اگر کوئی مقامی ماڈل کسی ویب صفحہ کو پڑھ سکتا ہے اور پھر ایک فارم کو پُر کر سکتا ہے، تو وہ صفحہ اس میں ہیرا پھیری کرنے کی کوشش کر سکتا ہے۔ اگر یہ ٹول کو کال کرسکتا ہے تو تصدیق کی ضرورت ہے۔ اگر یہ سٹرکچرڈ آؤٹ پٹ پیدا کرتا ہے، تو اس کی توثیق ہونی چاہیے۔ حقیقت یہ ہے کہ یہ ڈیوائس پر چلتا ہے کچھ رازداری کے خطرات کو کم کرتا ہے، لیکن سیکیورٹی ماڈل کو ختم نہیں کرتا ہے۔159~160## جہاں یہ واقعی دلچسپ ہو جاتا ہے۔161~162متن صرف آغاز ہے۔ WebGPU ویب تجربات کو قابل اعتبار بناتا ہے جو حال ہی میں ایک مقامی ایپ کی طرح لگتا تھا:163~164- پیچیدہ 3D ایڈیٹرز؛165- براؤزر میں گاوسی اسپلٹنگ؛166- ریئل ٹائم ویڈیو فلٹرز؛167- ہلکا پھلکا CAD؛168- سائنسی تصورات؛169- فوری پیش نظارہ کے ساتھ تخلیقی ٹولز؛170- UI کے قریب وژن کا اندازہ؛171- مزید مہتواکانکشی براؤزر گیمز۔172~173یہاں فرنٹ اینڈ، گرافکس اور مشین لرننگ آپس میں ملنا شروع ہو جاتے ہیں۔ یہ ایک قدرے عجیب و غریب علاقہ ہے، لیکن یہ ایک زرخیز بھی ہے: براؤزر ایک سنجیدہ ایپلیکیشن پلیٹ فارم کی طرف لوٹتا ہے، نہ صرف وہ جگہ جہاں ہم فارم اور ڈیش بورڈ ڈالتے ہیں۔174~175## پیداوار سے پہلے چیک لسٹ176~177صارفین کے سامنے آن ڈیوائس فیچر رکھنے سے پہلے، میں چیک کروں گا:178~1791. براؤزرز اور آلات کو ہدف بنائیں۔1802. کلاؤڈ فال بیک یا خوبصورت انحطاط۔1813. وقت اور ماڈل کیشے ڈاؤن لوڈ کریں۔1824. اوسط ہارڈ ویئر پر میموری اور بیٹری۔1835. کلاؤڈ ورژن کے مقابلے میں معیار۔1846. رازداری کی پالیسی اور صارف کے پیغامات۔1857. مخالف آدانوں کے ساتھ جانچ۔1868. مقامی اور کلاؤڈ رن ٹائم کے لیے الگ الگ میٹرکس۔1879. ٹیمپلیٹ کو اپ ڈیٹ یا غیر فعال کرنے کا منصوبہ بنائیں۔188~189یہ ایک ٹھوس فہرست ہے کیونکہ مسئلہ ٹھوس ہے۔ ایک سست، نازک، یا مبہم AI خصوصیت صرف اس لیے بہتر نہیں ہوتی کہ یہ براؤزر میں چلتی ہے۔190~191## صحیح سمجھوتہ192~193مجھے یقین نہیں ہے کہ مستقبل "آلہ پر سب کچھ" ہے۔ اور مجھے نہیں لگتا کہ بادل ہی اندازہ لگانے کے لیے واحد معقول جگہ رہے گا۔ سب سے زیادہ امکان مستقبل ایک مرکب ہے: مقامی جب یہ تاخیر، رازداری، یا قیمت کو بہتر بناتا ہے؛ کلاؤڈ جب کوالٹی، اپ ڈیٹ ڈیٹا اور سنٹرلائزڈ کنٹرول کی ضرورت ہوتی ہے۔194~195WebGPU، WebNN اور بلٹ ان AI APIs براؤزر کو قادر مطلق نہیں بناتے ہیں۔ وہ اسے زیادہ بالغ بناتے ہیں۔ اور ویب پروڈکٹس بنانے والوں کے لیے، یہ بہت بڑی خبر ہے۔196~197## مفید ذرائع198~199- [WebGPU API - MDN](https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API)200- [WebGPU تفصیلات - W3C](https://www.w3.org/TR/webgpu/)201- [بلٹ ان AI - ڈویلپرز کے لیے کروم](https://developer.chrome.com/docs/ai/built-in)202- [بلٹ ان AI APIs - کروم فار ڈیولپرز](https://developer.chrome.com/docs/ai/built-in-apis)203- [WebNN API](https://webnn.io/)204~
NORMAL · webgpu-on-device-ai-browser.md [readonly]204 lines · :q to close