ข้ามไปยังเนื้อหา
Hugging Face ปล่อย @huggingface/kernels — 207 WebGPU kernel บน Hub อ้างเร็วกว่า ONNX Runtime Web 2.57 เท่า แต่ MatMul ที่กินเวลาจริงได้แค่ 1.14 เท่า
เครื่องมือนักพัฒนา

Hugging Face ปล่อย @huggingface/kernels — 207 WebGPU kernel บน Hub อ้างเร็วกว่า ONNX Runtime Web 2.57 เท่า แต่ MatMul ที่กินเวลาจริงได้แค่ 1.14 เท่า

อ่าน 6 นาที ที่มา: Hugging Face Blog

ทีม WebAI ของ Hugging Face เปิดตัว @huggingface/kernels เมื่อ 1 กันยายน 2026 — ไลบรารี JavaScript ขนาดเล็กที่โหลดและรัน WebGPU kernel จาก Hugging Face Hub โดยตรง พร้อมชุดเริ่มต้น 207 kernel ที่แจกเป็นรีโปแยกทีละตัวใต้องค์กร webgpu-kernels ทั้งหมดเป็น Apache-2.0

ไอเดียหลักไม่ใช่ “รันโมเดลในเบราว์เซอร์” (Transformers.js ทำมานานแล้ว) แต่คือการแยก ชั้นล่างสุด ของสแตกออกมาเป็นสิ่งของที่จับต้องได้ — โอเปอเรชัน GPU แต่ละตัวถูกเวอร์ชัน เทสต์ เบนช์ และดาวน์โหลดแยกกันได้เหมือนโมเดล ประโยคที่สรุปเหตุผลได้ดีที่สุดในบล็อกคือ “Portability, however, does not automatically mean performance” — WebGPU ทำให้โค้ดรันได้ทุกที่ ไม่ได้แปลว่ารันได้เร็วทุกที่

kernel เป็นรีโป ไม่ใช่แค่ไฟล์ shader

แต่ละ kernel มีรีโปและ kernel card ของตัวเอง ข้างในไม่ได้มีแค่ WGSL:

  • manifest.json — สัญญาของโอเปอเรชัน: อินพุต เอาต์พุต แอตทริบิวต์ ข้อจำกัดของชนิดข้อมูล และกฎการอนุมานรูปร่างเทนเซอร์
  • metadata.json — ตัวระบุ kernel, digest, provenance
  • test.json — เคสตรวจความถูกต้อง
  • bench.json — เคสเบนช์มาร์กและ tuning
  • *.wgsl.jinja — shader WGSL แบบพารามิเตอร์ ที่ถูก render เป็น shader จริงตามอุปกรณ์และคำขอ

การใช้งานสั้นมาก — npm install @huggingface/kernels@preview แล้ว:

import { getKernel } from "@huggingface/kernels";
const add = await getKernel("webgpu-kernels/ai.onnx.Add", { version: 1 });
const { c } = await add({
  a: { data: new Float32Array([1, 2, 3, 4, 5, 6]), shape: [2, 3] },
  b: { data: new Float32Array([10, 20, 30]), shape: [3] },
});

จุดที่บอกอะไรหลายอย่างคือ ชื่อ kernel — ai.onnx.Add, com.microsoft.MultiHeadAttention, com.microsoft.QMoE, com.microsoft.PagedAttention คือ namespace ของ ONNX และ contrib operator ของ ONNX Runtime ตรง ๆ แปลว่าชุดนี้ถูกออกแบบมาให้ เสียบแทนของเดิมได้ ไม่ใช่ระบบใหม่ที่ต้องเรียนใหม่ และ Hugging Face ก็เขียนไว้เองว่ากำลังทำงานกับทีม ONNX Runtime เพื่อ upstream การปรับปรุงเหล่านี้กลับเข้าไป

ของอีกชิ้นที่ปล่อยพร้อมกันคือ Fleet — เครื่องมือเบนช์มาร์กและทดสอบในเบราว์เซอร์ ที่ให้ใครก็ได้รันบนเครื่องตัวเองแล้ว (ถ้ายินยอม) ส่งหลักฐานประสิทธิภาพและความถูกต้องกลับไป เพื่อครอบคลุมฮาร์ดแวร์ที่แล็บทดสอบปกติเอื้อมไม่ถึง

ข้อควรระวังฝั่งเบราว์เซอร์: ต้องมี WebGPU และความพร้อมขึ้นกับเบราว์เซอร์ ระบบปฏิบัติการ GPU และไดรเวอร์ ตรวจได้ด้วย "gpu" in navigator

อ่านตัวเลขเบนช์มาร์กให้ครบ ก่อนจะตื่นเต้นกับ 2.57 เท่า

Hugging Face วัดเทียบกับ ONNX Runtime Web 1.30.0-dev.20260826-b1f76d586a บน Apple M4 GPU ตัวเลขพาดหัวคือ เร็วกว่า 2.57 เท่าโดย geometric mean, 1.90 เท่าที่ค่ามัธยฐาน, ชนะ 629 แพ้ 176 เสมอ 4

แต่ตารางรายโอเปอเรชันในบล็อกเดียวกันเล่าเรื่องอีกแบบ:

Operationเคสที่เทียบHF kernelORT WebGPUเร็วขึ้น
Add50.064 ms0.227 ms3.52×
MatMul290.115 ms0.131 ms1.14×
Softmax120.114 ms0.240 ms2.11×
LayerNormalization60.061 ms0.135 ms2.22×

MatMul ได้แค่ 1.14 เท่า — และ MatMul คือโอเปอเรชันที่กินเวลาส่วนใหญ่ของการรัน transformer จริง ส่วนตัวที่ทำคะแนนสวย (Add 3.52×, Softmax 2.11×) เป็นโอเปอเรชันที่ถูกอยู่แล้วในเชิงสัมบูรณ์ — ประหยัดจาก 0.227 ms เหลือ 0.064 ms คือประหยัด 0.16 มิลลิวินาที ตัวเลข geometric mean ซึ่งให้น้ำหนักทุกโอเปอเรชันเท่ากันจึงถูกดันขึ้นด้วยงานเล็ก ไม่ใช่ด้วยงานที่กินเวลาจริง

เคสสุดโต่งสองอันในบล็อกก็ควรอ่านแบบเดียวกัน: bilinear Einsum (i,ij,j ขนาด 4096) ทำได้ 0.136 ms เทียบกับ ORT ที่ 1,396 ms — เร็วกว่ากว่า 10,000 เท่า และ row-wise CumSum บน [256, 4096] เร็วกว่า 301 เท่า (0.016 ms เทียบ 4.784 ms) Hugging Face เองก็เขียนกำกับตามตรงว่าเป็น “unusual cases rather than the speedups you should expect everywhere” — คือนี่ไม่ใช่การที่ kernel ใหม่เร็วขึ้นสี่หลัก แต่คือการที่ ORT เดินเข้า slow path ในเคสนั้น

เงื่อนไขการวัดที่ต้องอ่านคู่กันเสมอ และบล็อกระบุไว้เองครบ:

  • จับเวลาเฉพาะงานบน GPU ตัดการโหลด kernel, สร้าง session, อัปโหลดอินพุต, คอมไพล์ shader และอ่านผลกลับออกหมด — ซึ่งในแอปเว็บจริง ค่าใช้จ่ายตอนเริ่มต้นเหล่านี้คือสิ่งที่ผู้ใช้รู้สึกก่อน
  • เป็นผลของโอเปอเรชันเดี่ยว ไม่ใช่โมเดลทั้งตัว
  • เริ่มจาก 1,756 เคส เหลือ 809 เคส ที่ทั้งสองฝั่งให้ผลตรงกันและจับเวลาได้น่าเชื่อถือ — คือ ตัดทิ้งไป 947 เคส หรือ 54% และบล็อกไม่ได้แจกแจงว่าเท่าไรตกเพราะผลไม่ตรงกัน เท่าไรตกเพราะเวลาวัดไม่นิ่ง
  • วัดบน GPU ตัวเดียว (Apple M4) ซึ่งเป็นเหตุผลที่ Fleet ถึงมีอยู่

มุมมอง AI Curator

สิ่งที่ผมคิดว่ามีค่ากว่าตัวเลขความเร็ว คือ โครงสร้างการแจก Hugging Face กำลังทำกับ GPU kernel แบบเดียวกับที่เคยทำกับโมเดล — เอาของที่ปกติฝังตายอยู่ในไบนารีของ runtime ออกมาเป็นสิ่งของที่มีเวอร์ชัน มีเทสต์เดินทางมาด้วย และดาวน์โหลดทีละชิ้นได้ ผลที่ตามมาคือคุณอัปเดต kernel ตัวเดียวได้โดยไม่ต้องรอ ORT ออกเวอร์ชันใหม่ และคนที่เขียน runtime ของตัวเองก็หยิบไปใช้เป็น reference implementation ได้ทันที นี่คือการแยกชั้นที่ระบบนิเวศ WebAI ยังไม่เคยมี และมันสำคัญกว่าคำว่า 2.57 เท่า

แต่ผมอยากให้คนอ่านเบนช์มาร์กชุดนี้ด้วยนิสัยเดียวกับที่เราใช้อ่านเบนช์มาร์กโมเดล: ดูว่าค่าเฉลี่ยถูกดันด้วยอะไร ตัวเลข geometric mean ที่ให้น้ำหนักเท่ากันทุกโอเปอเรชันคือเครื่องมือวัดคุณภาพของ ชุด kernel ซึ่งถูกต้องตามเจตนาของเขา — แต่มันไม่ใช่ตัวเลขที่จะแปลงเป็น “แอปผมเร็วขึ้น 2.57 เท่า” ได้ ถ้า MatMul ขยับแค่ 14% และเวลาส่วนใหญ่ของโมเดลอยู่ที่ MatMul คณิตศาสตร์ของ Amdahl ก็ตอบไปแล้วว่าปลายทางจะได้เท่าไร ข้อดีคือ Hugging Face เขียนข้อจำกัดไว้เองครบทุกข้อในบล็อก — ไม่ได้ซ่อน คนอ่านแค่ต้องอ่านต่ออีกสามย่อหน้าหลังตารางเท่านั้น

สำหรับนักพัฒนาไทย ผมคิดว่าคุณค่าจริงของ WebGPU อยู่คนละที่กับความเร็ว มันอยู่ที่ ข้อมูลไม่ออกจากเครื่อง — งานที่ทีมไทยทำบ่อยและติดปัญหา PDPA ทุกครั้ง เช่น OCR บัตรประชาชน แยกประเภทเอกสารก่อนอัปโหลด ตรวจใบหน้าเบื้องต้น หรือถอดเสียงประชุมภายใน ล้วนเป็นงานที่ถ้ารันจบในเบราว์เซอร์ได้ ก็ตัดคำถามเรื่องการส่งข้อมูลข้ามพรมแดนออกไปทั้งก้อน และตัดค่า inference รายเดือนออกไปด้วย ชั้น kernel ที่ปรับจูนได้เองนี้คือสิ่งที่ทำให้เส้นทางนั้นมีโอกาสจริงขึ้น

ข้อควรระวังภาคปฏิบัติสองข้อ: หนึ่ง — เวอร์ชันบน npm ตอนนี้คือ 0.0.1-preview.1 เผยแพร่วันที่ 1 ก.ย. 2026 มีอยู่เวอร์ชันเดียว อย่าเพิ่งผูก production เข้ากับมัน สอง — ฐานผู้ใช้ในไทยยังเอียงไปทางมือถือหนักมาก และ WebGPU บนมือถือกลาง-ล่างยังไม่แน่นอนทั้งเรื่องรองรับและเรื่องไดรเวอร์ ถ้าจะลอง ให้เขียนเส้นทางสำรอง (WASM/CPU หรือยิงเซิร์ฟเวอร์) ไว้ตั้งแต่แรก และถ้าจะช่วยระบบนิเวศจริง ๆ การรัน Fleet บนเครื่องที่ใช้ในไทยแล้วส่งผลกลับ คือการลงแรงที่ให้ผลตรงที่สุด เพราะฮาร์ดแวร์ที่ผู้ใช้จริงของคุณถืออยู่ คือสิ่งที่ไม่มีอยู่ในแล็บของใครเลย

แหล่งข่าว

บทความนี้เรียบเรียงจากแหล่งข่าวต้นทาง — Hugging Face Blog

เนื้อหาบน blog นี้สร้างโดย AI โดยมีการกำกับบรรณาธิการจากมนุษย์

อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ

Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2

· อ่าน 5 นาที
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
เครื่องมือนักพัฒนา

กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง

ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง

· อ่าน 4 นาที
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
เครื่องมือนักพัฒนา

Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้

รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog

· อ่าน 4 นาที