spinny:~/writing $ less webgpu-on-device-ai-browser.md
12เป็นเวลาหลายปีที่เบราว์เซอร์เป็นหน้าตาที่สวยงามของแอปพลิเคชัน และระบบคลาวด์คือจุดที่เรื่องยากๆ เกิดขึ้น ผู้ใช้เขียน คลิก อัพโหลดไฟล์ ส่วนหน้าส่งทุกอย่างไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์เรียกโมเดล คำตอบกลับมา34โครงการนี้ยังคงมีประโยชน์มาก แต่ก็ไม่ฟรี การโทรทุกครั้งทำให้เกิดความล่าช้า ค่าใช้จ่าย การพึ่งพาเครือข่าย และคำถามเกี่ยวกับความเป็นส่วนตัว หากผู้ใช้เขียนประโยคและต้องการคำแนะนำ ให้ใช้เวลาครึ่งวินาที หากคุณจำแนกปัจจัยการผลิตเล็กๆ น้อยๆ นับพันเพนนีก็จะกลายเป็นเงินจริง หากข้อความมีความละเอียดอ่อน การส่งออกจากอุปกรณ์ก็ไม่ใช่ทางเลือกที่เป็นกลาง56นั่นเป็นเหตุผลว่าทำไม WebGPU และ AI บนอุปกรณ์ถึงได้รับความนิยม ไม่ใช่เพราะเราจะเรียกใช้ทุกรุ่นในเบราว์เซอร์พรุ่งนี้ เพราะฟีเจอร์อัจฉริยะบางอย่างสามารถเข้าใกล้ผู้ใช้ได้มากขึ้น78## ไม่ใช่ทุกอย่างจะต้องกลายเป็นท้องถิ่น910อาร์กิวเมนต์เวอร์ชันเด็กๆ คือ: "คลาวด์กับอุปกรณ์" เวอร์ชันที่มีประโยชน์คือไฮบริด1112งานบางอย่างดูดีบนอุปกรณ์: สรุปสั้นๆ, การตรวจจับภาษา, การเขียนแสงใหม่, การจำแนกประเภทอย่างง่าย, ฟิลเตอร์ภาพ, โมเดลการมองเห็นขนาดเล็ก, ประสบการณ์ที่สร้างสรรค์พร้อมการตอบรับทันที1314งานอื่นๆ ยังคงดีกว่าในระบบคลาวด์: การใช้เหตุผลที่ซับซ้อน โมเดลขอบเขต ข้อมูลฝั่งเซิร์ฟเวอร์ การตรวจสอบจากส่วนกลาง คุณภาพที่สม่ำเสมอ ขั้นตอนการทำงานที่คุณต้องควบคุมแต่ละขั้นตอนอย่างระมัดระวัง1516สถาปัตยกรรมที่ดีจะตัดสินใจที่รันไทม์:1718```mermaid19flowchart TD20 User[ผู้ใช้] --> Browser[เบราว์เซอร์]21 Browser --> Detect[การตรวจจับคุณสมบัติ]22 Detect -->|รองรับ| Local[การอนุมานเฉพาะที่]23 Detect -->|ไม่รองรับ| Cloud[ทางเลือกของคลาวด์]24 Local --> UX[การตอบสนองที่รวดเร็ว]25 Cloud --> UX26 UX --> Metrics[ตัวชี้วัดและคุณภาพ]27```2829เบราว์เซอร์ไม่จำเป็นต้องเอาชนะระบบคลาวด์ จะต้องช่วยให้คลาวด์ไม่ต้องทำงานที่ไม่จำเป็นต้องทำที่นั่น3031## เหตุใด WebGPU จึงมีความสำคัญ3233WebGPU เป็น API ที่ทันสมัยสำหรับการใช้ GPU จากเบราว์เซอร์ ไม่ใช่เพียงเพื่อกราฟิก 3D ที่สวยงามยิ่งขึ้นเท่านั้น นอกจากนี้ยังเป็นสิ่งสำคัญเนื่องจากจะเปิดเผยสิ่งพื้นฐานที่เหมาะสมสำหรับการประมวลผล: ปริมาณงานแบบขนาน, เชเดอร์, ไปป์ไลน์ที่ใกล้เคียงกับสิ่งที่ GPU ทำได้ดี3435สำหรับ AI การสร้างภาพทางวิทยาศาสตร์ โปรแกรมแก้ไข 3 มิติ ตัวกรองวิดีโอ และเครื่องมือสร้างสรรค์ รู้สึกถึงความแตกต่างนี้ได้ WebGL ทำประโยชน์มากมายให้กับเว็บ แต่ WebGPU เกิดมาพร้อมกับโมเดลที่เหมาะกับปัจจุบันมากกว่า3637สิ่งแรกที่ต้องเขียนไม่ใช่เชเดอร์ เป็นการตรวจจับคุณสมบัติที่เงียบขรึม:3839```typescript40export async function requestWebGpuDevice() {41 if (!('gpu' in navigator)) {42 return null;43 }4445 const adapter = await navigator.gpu.requestAdapter({46 powerPreference: 'high-performance',47 });4849 if (!adapter) {50 return null;51 }5253 return adapter.requestDevice();54}55```5657คุณลักษณะนี้กล่าวถึงสิ่งสำคัญอย่างหนึ่ง: WebGPU ไม่ได้รับการอนุญาตในทุกอุปกรณ์ เป็นความสามารถที่จะตรวจสอบได้ เบราว์เซอร์บางตัวไม่รองรับอย่างเต็มที่, GPU บางตัวมีข้อจำกัด, สภาพแวดล้อมองค์กรบางอย่างปิดการใช้งานคุณสมบัติ, ผู้ใช้บางคนใช้ฮาร์ดแวร์เพียงเล็กน้อย5859## AI ในตัว: เมื่อเบราว์เซอร์นำโมเดลมา6061Chrome กำลังผลักดัน API ในตัวสำหรับงานต่างๆ เช่น ข้อความแจ้งในเครื่อง การสรุป การเขียน การเขียนใหม่ การแปล การตรวจหาภาษา และการพิสูจน์อักษร แนวคิดนี้น่าสนใจมาก: เบราว์เซอร์จัดการโมเดล ความพร้อมใช้งาน และการอัปเดต แอปใช้ API ใกล้กับแพลตฟอร์มมากขึ้น6263ถ้ามันทำงานได้ดีก็เปลี่ยนแปลงไปมาก:6465- การเรียกเซิร์ฟเวอร์น้อยลงสำหรับงานง่ายๆ66- ข้อมูลที่อาจยังคงอยู่ในอุปกรณ์67- เวลาแฝงที่ต่ำกว่า;68- ประสบการณ์ออฟไลน์หรือกึ่งออฟไลน์69- UX ที่เป็นธรรมชาติมากขึ้นสำหรับการเขียนและการแปล7071แต่ควรถือเป็นการเพิ่มประสิทธิภาพแบบก้าวหน้า API บางตัวมีเสถียรภาพ ส่วนบางตัวอยู่ในช่วงทดลองใช้หรือดูตัวอย่างจากต้นทาง ส่วนบางตัวยังคงขึ้นอยู่กับเวอร์ชัน ภาษา และอุปกรณ์7273```typescript74type LocalCapability = 'available' | 'downloadable' | 'unsupported';7576export async function getLocalSummarizerCapability(): Promise<LocalCapability> {77 const SummarizerApi = (globalThis as any).Summarizer;7879 if (!SummarizerApi?.availability) {80 return 'unsupported';81 }8283 const availability = await SummarizerApi.availability();8485 if (availability === 'available') return 'available';86 if (availability === 'downloadable') return 'downloadable';8788 return 'unsupported';89}90```9192รหัสเฉพาะจะเปลี่ยนแปลง แต่รูปแบบยังคงอยู่: คุณตรวจสอบความพร้อมใช้งาน อธิบายการดาวน์โหลด เสนอทางเลือกสำรอง และวัดคุณภาพ9394## ทางเลือกสำรองไม่ใช่แผน B ที่น่าเศร้า9596Cloud Fallback ไม่ใช่ความพ่ายแพ้ เป็นส่วนหนึ่งของผลิตภัณฑ์9798```typescript99interface AiRequest {100 task: 'summarize' | 'rewrite' | 'classify';101 input: string;102}103104interface AiResult {105 output: string;106 runtime: 'local' | 'cloud';107}108109export async function runAiTask(request: AiRequest): Promise<AiResult> {110 const local = await tryLocalAi(request);111112 if (local) {113 return { output: local, runtime: 'local' };114 }115116 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());121122 return { output: cloud.output, runtime: 'cloud' };123}124```125126สถาปัตยกรรมนี้ช่วยให้คุณปรับปรุงได้อย่างต่อเนื่อง ผู้ที่ได้รับการสนับสนุนในท้องถิ่นจะได้รับเวลาแฝงและความเป็นส่วนตัวที่ดีขึ้น ผู้ที่ไม่มีมันยังคงใช้คุณสมบัตินี้ คุณสามารถวัดเปอร์เซ็นต์ของคำขอภายในเครื่อง เวลา ข้อผิดพลาด หน่วยความจำ คุณภาพที่รับรู้ และต้นทุน127128หากไม่มีการวัดผล AI บนอุปกรณ์ก็จะกลายเป็นตัวเลือกที่สวยงาม ด้วยตัวชี้วัด มันจะกลายเป็นคันโยกผลิตภัณฑ์129130## UX ของโมเดลมีความสำคัญ131132หากเบราว์เซอร์จำเป็นต้องดาวน์โหลดโมเดล ผู้ใช้จะรับรู้ได้ อย่าซ่อนมันไว้ข้างหลังสปินเนอร์ที่คลุมเครือ ให้ชัดเจนดีกว่า: "เราเตรียมโมเดลเพื่อใช้ฟังก์ชันนี้เร็วขึ้นและออฟไลน์ด้วย"133134ประสบการณ์ที่ดี:135136- แสดงสถานะการเตรียมการ137- ไม่ปิดกั้นทั้งหน้า138- ช่วยให้คุณสามารถใช้ระบบคลาวด์สำรองต่อไปได้139- หลีกเลี่ยงแบตเตอรี่และหน่วยความจำที่น่าประหลาดใจ140- จำโมเดลทุกครั้งที่เป็นไปได้141- อธิบายประโยชน์ในประโยคเดียวที่เป็นรูปธรรม142143สิ่งที่แย่ที่สุดคือฟีเจอร์ "อัจฉริยะ" ที่ดูเหมือนจะใช้งานไม่ได้เพราะกำลังดาวน์โหลดบางอย่างอย่างเงียบๆ144145## ความเป็นส่วนตัว: ดีกว่า ไม่ปลอดภัยโดยอัตโนมัติ146147การประมวลผลข้อมูลบนอุปกรณ์อาจเป็นข้อได้เปรียบอย่างมาก อีเมลฉบับร่าง เอกสารภายใน หรือบันทึกส่วนตัวไม่จำเป็นต้องออกจากเบราว์เซอร์เพื่อรับคำแนะนำ148149อย่างไรก็ตาม ท้องถิ่นไม่ได้หมายความว่าปลอดภัยโดยอัตโนมัติ อย่างไรก็ตาม คุณต้องคำนึงถึง:150151- เอสเอสเอส;152- บันทึกโดยไม่ได้ตั้งใจ153- ข้อมูลที่บันทึกไว้ในที่จัดเก็บ154- การฉีดทันทีจากเนื้อหาที่ไม่น่าเชื่อถือ155- การอนุญาตที่มอบให้กับโมเดล156- เอาต์พุตที่ใช้ในการดำเนินการอัตโนมัติ157158หากโมเดลท้องถิ่นสามารถอ่านเว็บเพจแล้วกรอกแบบฟอร์มได้ เพจนั้นก็สามารถพยายามจัดการมันได้ หากสามารถเรียกเครื่องมือได้ จำเป็นต้องมีการยืนยัน หากสร้างเอาต์พุตที่มีโครงสร้าง จะต้องได้รับการตรวจสอบความถูกต้อง ความจริงที่ว่าอุปกรณ์ทำงานบนอุปกรณ์ช่วยลดความเสี่ยงด้านความเป็นส่วนตัว แต่ไม่ได้กำจัดรูปแบบการรักษาความปลอดภัย159160## มันน่าสนใจตรงไหน.161162ข้อความเป็นเพียงจุดเริ่มต้น WebGPU ทำให้ประสบการณ์การใช้งานเว็บมีความน่าเชื่อถือจนเมื่อไม่นานมานี้ดูเหมือนเป็นแอปแบบเนทีฟ:163164- โปรแกรมแก้ไข 3D ที่ซับซ้อน165- การสาดแบบเกาส์ในเบราว์เซอร์166- ตัวกรองวิดีโอแบบเรียลไทม์167- CAD น้ำหนักเบา;168- การสร้างภาพข้อมูลทางวิทยาศาสตร์169- เครื่องมือสร้างสรรค์พร้อมดูตัวอย่างทันที170- การอนุมานการมองเห็นใกล้กับ UI;171- เกมเบราว์เซอร์ที่ทะเยอทะยานมากขึ้น172173ส่วนหน้า กราฟิก และการเรียนรู้ของเครื่องเริ่มผสมผสานกันที่นี่ มันเป็นพื้นที่ที่ค่อนข้างอึดอัด แต่ก็อุดมสมบูรณ์เช่นกัน เบราว์เซอร์กลับมาเป็นแพลตฟอร์มแอปพลิเคชันที่จริงจัง ไม่ใช่แค่ที่ที่เราวางแบบฟอร์มและแดชบอร์ด174175## รายการตรวจสอบก่อนการผลิต176177ก่อนที่จะแสดงคุณสมบัติบนอุปกรณ์ต่อหน้าผู้ใช้ ฉันจะตรวจสอบ:1781791. กำหนดเป้าหมายเบราว์เซอร์และอุปกรณ์1802. Cloud fallback หรือการเสื่อมสภาพที่สวยงาม1813. เวลาในการดาวน์โหลดและแคชโมเดล1824. หน่วยความจำและแบตเตอรี่บนฮาร์ดแวร์โดยเฉลี่ย1835. คุณภาพเมื่อเทียบกับเวอร์ชันคลาวด์1846. นโยบายความเป็นส่วนตัวและข้อความของผู้ใช้1857. การทดสอบด้วยอินพุตที่ไม่เป็นมิตร1868. แยกเมตริกสำหรับรันไทม์ในเครื่องและบนคลาวด์1879. วางแผนที่จะอัปเดตหรือปิดใช้งานเทมเพลต188189มันเป็นรายการที่เป็นรูปธรรมเพราะปัญหาเป็นรูปธรรม คุณลักษณะ AI ที่ช้า เปราะบาง หรือทึบแสงไม่ได้ดีขึ้นเพียงเพราะมันทำงานในเบราว์เซอร์190191## การประนีประนอมที่ถูกต้อง192193ฉันไม่เชื่อว่าอนาคตคือ "ทุกสิ่งบนอุปกรณ์" และฉันไม่คิดว่าคลาวด์จะยังคงเป็นเพียงที่เดียวที่สมเหตุสมผลสำหรับการอนุมานเช่นกัน อนาคตที่เป็นไปได้มากที่สุดคือการผสมผสาน: ในท้องถิ่นเมื่อปรับปรุงเวลาแฝง ความเป็นส่วนตัว หรือต้นทุน คลาวด์เมื่อจำเป็นต้องมีคุณภาพ ข้อมูลที่อัปเดต และการควบคุมแบบรวมศูนย์194195WebGPU, WebNN และ AI API ในตัวไม่ได้ทำให้เบราว์เซอร์มีอำนาจทุกอย่าง พวกเขาทำให้เขาเป็นผู้ใหญ่มากขึ้น และสำหรับผู้ที่สร้างผลิตภัณฑ์บนเว็บ นี่เป็นข่าวใหญ่196197## แหล่งข้อมูลที่เป็นประโยชน์198199- [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 ในตัว - Chrome สำหรับนักพัฒนา](https://developer.chrome.com/docs/ai/built-in)202- [AI API ในตัว - Chrome สำหรับนักพัฒนา](https://developer.chrome.com/docs/ai/built-in-apis)203- [เว็บเอ็นเอ็นเอพีไอ](https://webnn.io/)204
:WebGPU และ AI บนอุปกรณ์: เบราว์เซอร์กำลังกลายเป็นรันไทม์ที่ร้ายแรงlines 1-204 (END) — press q to close