สถาปัตยกรรมที่แท้จริงคืออะไร
เป็น Vision Transformer ที่แปลงเป็น ONNX และบีบอัดเหลือประมาณ 40 MB โดยแบ่งเป็นสองส่วนเพื่อให้แต่ละส่วนมีขนาดไม่เกินขีดจำกัดของแพลตฟอร์มโฮสติ้ง จากนั้นจึงนำมาประกอบใหม่ในเบราว์เซอร์และตรวจสอบ Checksum ก่อนเริ่มทำงาน
การอนุมานผล (Inference) เกิดขึ้นผ่าน WebAssembly ซึ่งช่วยให้ Runtime ที่คอมไพล์แล้วสามารถทำงานด้วยความเร็วใกล้เคียงกับ Native ภายในแท็บเบราว์เซอร์ ตัว Runtime เองคือไฟล์ WASM binary ขนาดเล็กที่โหลดมาพร้อมกับ Weights
ไม่มีอะไรที่เป็นเรื่องแปลกใหม่อีกต่อไป สิ่งที่เคยเป็นเพียงการสาธิตเชิงวิจัยในปี 2021 ปัจจุบันได้กลายเป็นวิธีปกติในการใช้งานโมเดล และเบราว์เซอร์ส่วนใหญ่ก็ได้ทำงานเหล่านั้นมาแล้ว
สิ่งที่ได้มา
| อสังหาริมทรัพย์ | ในเบราว์เซอร์ | บนเซิร์ฟเวอร์ |
|---|---|---|
| รูปภาพออกจากอุปกรณ์ของคุณ | No เป็นไปไม่ได้ | Yes จำเป็น |
| ต้นทุนต่อการตรวจสอบ | Yes ศูนย์ | No ใช้การประมวลผลจริง |
| ต้องมีข้อตกลงการประมวลผลข้อมูล | No | Yes |
| ทำงานได้โดยไม่ต้องใช้เครือข่ายหลังจากโหลดเสร็จ | Yes | No |
| สามารถเก็บโมเดลไว้เป็นส่วนตัวได้ | No มันถูกดาวน์โหลดมา | Yes |
| การตรวจสอบครั้งแรกทันที | No โมเดลดาวน์โหลดเพียงครั้งเดียว | Yes |
แถวแรกคือเหตุผลที่ส่วนที่เหลือมีอยู่จริง เนื่องจากไม่มีจุดสิ้นสุดสำหรับการอัปโหลด จึงไม่มีที่เก็บรวมรูปภาพของคนอื่น ไม่มีนโยบายการเก็บรักษาที่ต้องเขียน ไม่มีเหตุการณ์ข้อมูลรั่วไหลที่ต้องเปิดเผย และไม่มีอะไรต้องส่งมอบตามคำขอ
แถวที่สองคือเหตุผลที่บริการนี้ฟรีได้โดยไม่มีมาตรวัดการใช้งาน การตรวจสอบแต่ละครั้งไม่มีค่าใช้จ่ายในการให้บริการ จึงไม่มีต้นทุนต่อภาพที่ต้องเรียกคืน ซึ่งเปลี่ยนรูปแบบของราคาไปโดยสิ้นเชิง
สิ่งที่ต้องแลก
สามข้อแลกเปลี่ยนที่แท้จริง ซึ่งระบุไว้อย่างตรงไปตรงมา เพราะหน้าเว็บที่ระบุแต่ข้อดีนั้นก็คือการโฆษณา
- การตรวจสอบครั้งแรกจะช้า โมเดลขนาดสี่สิบเมกะไบต์ต้องมาถึงก่อนถึงจะทำอะไรได้ ในการเชื่อมต่อที่เร็วจะใช้เวลาเพียงไม่กี่วินาที แต่ในการเชื่อมต่อที่แย่กว่านั้นจะใช้เวลานานขึ้น การตรวจสอบครั้งถัดไปจะนำโมเดลที่อยู่ในแคชมาใช้และเริ่มทำงานได้ทันที
- อุปกรณ์เก่าอาจทำงานลำบาก การอนุมานผลต้องการหน่วยความจำและการประมวลผลที่โทรศัพท์อายุห้าปีอาจรองรับได้ไม่ดีนัก เซิร์ฟเวอร์จะไม่สนใจว่าคุณกำลังใช้อุปกรณ์อะไร
- โมเดลเป็นสาธารณะ อะไรก็ตามที่ดาวน์โหลดมายังเบราว์เซอร์สามารถเก็บไว้ได้ โมเดลฝั่งเซิร์ฟเวอร์อาจเป็นแบบกรรมสิทธิ์ แต่โมเดลนี้ไม่สามารถทำได้ และ Weights เหล่านี้ก็เป็น Open Research Checkpoint อยู่แล้ว
จุดที่สามนี้ควรพูดให้ตรงไปตรงมา การส่งโมเดลไปที่ไคลเอนต์หมายถึงการแจกจ่ายโมเดลนั้น นั่นเป็นสิ่งที่ยอมรับได้ในที่นี้เพราะ Weights เหล่านี้ถูกเผยแพร่อยู่แล้ว และงานที่ทำให้เครื่องมือนี้มีประโยชน์คือการปรับเทียบ (Calibration), การแบ่งส่วน (Tiling) และการตีความที่สร้างขึ้นรอบๆ โมเดลเหล่านั้น
ปัญหาทางวิศวกรรมที่ควรทราบ
การแบ่งไฟล์ขนาดใหญ่
แพลตฟอร์มโฮสติ้งแบบ Static จำกัดขนาดไฟล์แต่ละไฟล์ โมเดลขนาด 40 MB เกินขีดจำกัดดังกล่าว จึงส่งออกมาเป็นสองส่วนที่กำหนดไว้ตายตัว ซึ่งจะถูกนำมาประกอบใหม่ในเบราว์เซอร์และตรวจสอบกับ Manifest Hash ก่อนใช้งาน ส่วนที่เสียหายหรือถูกแทนที่จะแจ้งเตือนความผิดพลาดออกมา แทนที่จะสร้างคะแนนที่ผิดโดยไม่มีการแจ้งเตือน
ไม่โหลดอะไรเลยจนกว่าจะจำเป็น
โมเดล, Runtime และเครื่องมืออ่านข้อมูลรับรองจะไม่ถูกเรียกใช้เมื่อโหลดหน้าเว็บ พวกมันจะมาถึงเมื่อมีการใช้งานจริง ดังนั้นคนที่แค่อ่านบทความจะไม่ดาวน์โหลดอะไรเลย สิ่งนี้ทำให้หน้าเว็บทำงานรวดเร็วสำหรับผู้เยี่ยมชมส่วนใหญ่ที่ไม่เคยทำการตรวจสอบ
การถอดรหัสรูปแบบไฟล์ที่ซับซ้อน
ไฟล์ HEIC จาก iPhone, AVIF, TIFF และ JPEG XL ทั้งหมดจำเป็นต้องถอดรหัสก่อนการให้คะแนน ปัจจุบันเบราว์เซอร์รองรับไฟล์เหล่านี้ส่วนใหญ่แบบ Native แล้ว ซึ่งช่วยขจัดสิ่งที่เคยเป็นงานหนักที่สุดฝั่งไคลเอนต์ในเครื่องมือประเภทนี้ออกไป
เมื่อสถาปัตยกรรมนี้ไม่ใช่ตัวเลือกที่ถูกต้อง
มันไม่ได้ดีกว่าในทุกกรณี เซิร์ฟเวอร์สมเหตุสมผลกว่าเมื่อโมเดลเป็นแบบกรรมสิทธิ์และต้องได้รับการปกป้อง, เมื่อโมเดลมีขนาดใหญ่เกินกว่าจะส่งผ่านเบราว์เซอร์, เมื่อคุณต้องการผลลัพธ์ใน Backend Pipeline แทนที่จะเป็นหน้าจอผู้ใช้, หรือเมื่อคุณต้องการเวลาตอบสนองที่รับประกันได้ไม่ว่าจะเป็นอุปกรณ์ใดก็ตาม
สำหรับเครื่องมือที่คนเปิดขึ้นมาเพื่อตรวจสอบรูปภาพที่น่าสงสัยเพียงรูปเดียว ข้อจำกัดเหล่านี้ไม่มีผล และคุณสมบัติด้านความเป็นส่วนตัวมีค่ามากกว่าทุกสิ่งที่เซิร์ฟเวอร์จะเพิ่มเข้ามาได้
สิ่งที่สถาปัตยกรรมนี้ตัดออกไป
การเลือกฝั่งไคลเอนต์มีผลที่ตามมานอกเหนือจากความเป็นส่วนตัว และบางอย่างก็เป็นข้อจำกัดที่ควรระบุชื่อไว้มากกว่าจะเรียกว่าเป็นฟีเจอร์
ไม่มีประวัติการใช้งาน ผลลัพธ์จะมีอยู่แค่ในแท็บที่สร้างมันขึ้นมาเท่านั้น ดังนั้นจึงไม่สามารถค้นย้อนหลังได้หากไม่ได้ส่งออกข้อมูล นี่คือต้นทุนโดยตรงของการไม่มีบัญชีผู้ใช้ และเป็นสิ่งที่ถูกร้องขอเข้ามามากที่สุดข้อหนึ่งที่สถาปัตยกรรมนี้ทำให้ทำได้ยาก
ไม่มีการใช้สถานะร่วมกัน สองคนไม่สามารถเห็นคิวงานเดียวกัน และทีมงานไม่สามารถตรวจสอบงานของกันและกันได้ ลิงก์ที่แชร์จะแสดงผลลัพธ์เพียงชุดเดียว ซึ่งครอบคลุมแค่การสนทนาแต่ไม่ใช่ Workflow
ไม่มี API สิ่งใดที่ทำงานในแท็บเบราว์เซอร์ไม่สามารถถูกเรียกจาก Backend Pipeline ได้ ซึ่งตัดการใช้งานที่มีปริมาณการประมวลผลสูงออกไปโดยสิ้นเชิง นี่คือช่องว่างที่แท้จริง และท่าทีที่ซื่อสัตย์คือสิ่งเหล่านี้คือราคาที่ต้องแลกกับคุณสมบัติที่สำคัญกว่า