รีวิว Particle Tachyon และทดสอบประสิทธิภาพ AI

Particle Tachyon
Particle Tachyon

สวัสดีครับ วันนี้ผมจะมารีวิว Particle Tachyon ซึ่งเป็นคอมพิวเตอร์บอร์ดเดี่ยว (Single-Board Computer: SBC) ขนาดกะทัดรัดที่ออกแบบมาเพื่อรองรับงาน Edge AI, IoT และการเชื่อมต่อความเร็วสูง โดยภายในใช้ Octa-core Qualcomm Kryo CPU, Adreno GPU และ DSP Hexagon นอกจากนี้ยังรองรับการเชื่อมต่อไร้สายครบครัน ไม่ว่าจะเป็น 5G, Wi-Fi 6E และ Bluetooth 5.2

Particle Tachyon ถูกออกแบบให้มีรูปแบบเดียวกับ Raspberry Pi และมาพร้อมกับพอร์ต I/O หลากหลาย เช่น 40-pin GPIO header ที่รองรับ Raspberry Pi HATs รวมถึงตัวเลือกขยายการเชื่อมต่อสำหรับเซนเซอร์และอุปกรณ์เสริมต่าง ๆ อีกทั้งยังมี Qwiic connector สำหรับใช้งานร่วมกับอุปกรณ์ของ SparkFun และ Adafruit และยังมีพอร์ต MIPI-CSI/DSI สำหรับกล้องและจอแสดงผลอีกด้วย หากต้องการรายละเอียดเพิ่มเติมสามารถดูได้จาก datasheet ของ Particle Tachyon

เปิดกล่อง

พัสดุถูกส่งมาจากฮ่องกงและมาพร้อมกับอุปกรณ์ตามภาพด้านล่างครับ โดยภายในกล่องประกอบด้วย บอร์ด Particle Tachyon, บอร์ดเสริมสำหรับการใช้งานไมโครโฟน, แบตเตอรี่ Li-Po แบบเซลล์เดียว 3.7V พร้อมคอนเน็กเตอร์ JST-PH แบบ 3 พิน และการ์ดต้อนรับขนาดเล็ก

อุปกรณ์ที่ได้รับ
อุปกรณ์ที่ได้รับ

รูปต่อไปนี้เป็นการเปรียบเทียบระหว่างบอร์ด Particle Tachyon, BeagleY-AI, Raspberry Pi 5 และ Raspberry Pi 4 Model B

เปรียบเทียบขนาด Particle Tachyon กับ SBC อื่น ๆ
เปรียบเทียบขนาด Particle Tachyon กับ SBC อื่น ๆ

ติดตั้งระบบปฏิบัติการ

ในการตั้งค่าอุปกรณ์ ผมทำตามขั้นตอนจากหน้า Setting up your Tachyon ของผู้ผลิต เริ่มแรกผมเชื่อมต่อแบตเตอรี่เข้ากับ JST connector บนบอร์ด จากนั้นเสียบสาย USB Type-C เพื่อต่อบอร์ดเข้ากับแล็ปท็อป ซึ่งไฟ LED สีแดงบนอร์ดติดขึ้นทันที แสดงว่าบอร์ดได้รับพลังงานเรียบร้อยแล้ว หลังจากนั้นผมติดตั้งโปรแกรม Particle CLI ลงบนแล็ปท็อป และอัปเดตด้วยคำสั่ง particle update-cli เมื่อตรวจสอบด้วยคำสั่ง particle --version ซึ่งโปรแกรมแสดงข้อมูลเวอร์ชัน 3.38.1 ก็ยืนยันว่าการติดตั้งเสร็จสมบูรณ์ ขั้นตอนถัดไปคือการเข้าสู่โหมด Programming โดยกดปุ่มหลักค้างไว้ประมาณ 3 วินาทีจนกระทั่งไฟ LED เปลี่ยนเป็นกระพริบสีเหลือง จากนั้นผมจึงติดตั้ง USB driver โดยใช้เครื่องมือ Zadig ตามที่ผู้ผลิตแนะนำ

ผมเริ่มใช้งานด้วยการลองติดตั้งแบบ Desktop โดยใช้คำสั่ง particle tachyon setup และทำตามขั้นตอนที่ระบบแนะนำ เมื่อถึงขั้นตอนเลือกซอฟต์แวร์ ผมเลือก Desktop variant ซึ่งมาพร้อมกับสภาพแวดล้อมแบบ GUI เต็มรูปแบบ  โดยตามเอกสารอย่างเป็นทางการของผู้ผลิตนั้นตัวบอร์ดรองรับระบบปฏิบัติการทั้ง Ubuntu 20.04 (legacy support) และ Ubuntu 24.04 (current development) แต่ในช่วงเวลาที่ผมรีวิวนี้ ตัวโปรแกรมติดตั้งได้ติดตั้งระบบปฏิบัติการ Ubuntu 20.04 ให้  โดยการดาวน์โหลดและติดตั้งระบบปฏิบัติการทั้งหมดเสร็จสิ้นอย่างราบรื่นภายในเวลาไม่ถึง 20 นาที


เสร็จแล้วผมเชื่อมต่อจอ, คีย์บอร์ด และเมาส์ให้เรียบร้อย และรีสตาร์ทใหม่ ระบบก็เข้าสู่หน้าต่าง “Welcome to Tachyon” ตามภาพด้านล่างนี้  โดยขั้นตอนที่ 1 ถึง 3 ของกระบวนการนี้ดำเนินไปอย่างราบรื่น แต่ขั้นตอนที่ 4 กลับไม่สามารถเสร็จสิ้นได้ ไม่ว่าจะลองซ้ำกี่ครั้งก็ตาม เมื่อตรวจสอบที่ Particle Console ก็พบว่ามี Device ID แสดงอยู่ในหน้า Devices ได้อย่างถูกต้อง แต่กระบวนการ handshake ระหว่างอุปกรณ์กับเครื่องบริการไม่เคยเสร็จสมบูรณ์

หน้าต่างการติดตั้ง Tachyon ขั้นแรก
หน้าต่างการติดตั้ง Tachyon ขั้นแรก
ขั้นตอน Organize your Particle Device
ขั้นตอน Organize your Particle Device
ไม่พบ handshake ระหว่าง Particle Console กับ Particle Tachyon
ไม่พบ handshake ระหว่าง Particle Console กับ Particle Tachyon

จากการค้นหา ผมพบคำแนะนำของชุมชนที่แนะนำให้ลองติดตั้งแบบ Headless แทนการใช้ Desktop GUI  ดังนั้นผมจึงลองติดตั้งในโหมดนี้ดู โดยการติดตั้งก็ดำเนินไปอย่างราบรื่นเช่นกัน โดยเมื่อติดตั้งเรียบร้อยไฟ LED หลักเปลี่ยนจากกระพริบสีเขียวไปเป็นสี magenta ซึ่งหมายความว่าการเชื่อมต่อ Wi-Fi สำเร็จ แต่อย่างไรก็ตามไฟ LED ไม่เคยเปลี่ยนเป็นสี cyan ที่ควรจะแสดงถึงการเชื่อมต่อเครือข่ายเซลลูลาร์ แต่ถึงอย่างนั้นครั้งนี้ตัวบอร์ด Particle Tachyon ก็สามารถทำ handshake ติดต่อกับ Particle Console ได้สำเร็จ

ทดลองติดตั้งอีกครั้งในแบบ headless
ทดลองติดตั้งอีกครั้งในแบบ headless

ถัดมาผมได้ลองทดสอบการใช้งานด้วยการส่งคำสั่งระยะไกลผ่าน Command-line ของ Particle Console เช่น การรัน htop จาก Terminal panel ซึ่งทำงานได้โดยไม่มีปัญหา จากนั้นผมได้ทำการทดสอบเพิ่มเติมผ่าน Particle Console เพื่อตรวจสอบสถานะอื่น ๆ ของอุปกรณ์ ดังที่แสดงในภาพด้านล่างนี้

Particle Tachyon ติดต่อกับ Particle Console ได้สำเร็จ
Particle Tachyon ติดต่อกับ Particle Console ได้สำเร็จ
ทดสอบรัน htop จากหน้าต่าง Terminal ใน Particle Console
ทดสอบรัน htop จากหน้าต่าง Terminal ใน Particle Console
ตรวจสอบสถานะ Wi-Fi ของ Particle Tachyon จาก Particle Console
ตรวจสอบสถานะ Wi-Fi ของ Particle Tachyon จาก Particle Console
ตรวจสอบสถานะ eSIMs ของ Particle Tachyon จาก Particle Console
ตรวจสอบสถานะ eSIMs ของ Particle Tachyon จาก Particle Console

ตรวจสอบข้อมูลของ Particle Tachyon ด้วย inxi

การทดสอบinxi กับบอร์ด Particle Tachyon แสดงให้เห็นว่ามีระบบปฏิบัติการเป็น Ubuntu 20.04.6 LTS (Focal Fossa) พร้อม kernel 5.4.219 บน Qualcomm SoC แบบ ARM โดย CPU ถูกระบุว่าเป็น 8-core Kryo cluster ที่มีความถี่ระหว่าง 300 MHz ถึง 2.7 GHz ตรงกับแพลตฟอร์ม Qualcomm QCM6490/QCS6490 ที่ระบุไว้ในสเปกของ Particle Tachyon สำหรับการแสดงผลกราฟิกส์นั้นใช้ไดรเวอร์ msm-dai-q6-hdmi บนความละเอียด 1920×1080@60Hz แต่การเรนเดอร์ยังคงใช้ llvmpipe (LLVM 12, Mesa 21.2.6) แทนที่จะใช้การเร่งความเร็วโดยตรงจาก Adreno GPU การตรวจสอบแบตเตอรี่ทำงานได้ตามปกติ และค่าความร้อนก็เสถียรโดยมีอุณหภูมิของ CPU อยู่ที่ประมาณ 28 °C

ในด้านการเชื่อมต่อพบ Qualcomm CNSS PCI Wi-Fi interface ที่ใช้งานอยู่ในชื่อ wlan0 พร้อมด้วยอินเทอร์เฟซเสมือนและเซลลูลาร์ร่วมอยู่ด้วย  ส่วนพื้นที่จัดเก็บข้อมูลเป็นแบบ eMMC ขนาด 116 GB รุ่น KM8L9001JM-B624 และหน่วยความจำที่ใช้งานจริงอยู่ที่ 3.96 GB จากทั้งหมด 7.1 GB RAM โดยรวมแล้วการทดสอบด้วย inxi พบว่าฮาร์ดแวร์ที่รายงานตรงกับสเปกทางการของ Particle Tachyon เพียงแต่ในตอนนี้การประมวลผลกราฟิกยังใช้การเรนเดอร์ด้วยซอฟต์แวร์แทนที่จะเปิดใช้งาน Adreno GPU

ทดสอบประสิทธิภาพด้วย sbc-bench

สำหรับการทดลองนี้ เมื่อผมลองรัน sbc-bench ผมพบว่าสคริปต์ทำงานได้ แต่การทดสอบในภาพรวมนั้นล้มเหลว เนื่องจากสคริปต์ส่งข้อความ error ว่า failed to set pid xxxx’s affinity: Invalid argument ตามที่แสดงใน log ด้านล่าง อย่างไรก็ตามผมยังสามารถรันคำสั่ง sbc-bench -m เพื่อดูข้อมูลการทำงานของ CPU และข้อมูลระบบพื้นฐานได้ตามปกติ ดังที่เห็นใน log ด้านล่าง เราได้โพสต์ปัญหาไว้บน GitHub แต่ไม่สามารถหาทางแก้ไขได้ทันเวลา และเนื่องจากผมไม่มีเวลาวิเคราะห์สาเหตุของ error และต้องการไปทดสอบฟีเจอร์อื่น ๆ ของ Particle Tachyon ผมจึงหยุดการทดสอบ sbc-bench ไว้เพียงเท่านี้


นี่คือผลลัพธ์จากคำสั่ง sbc-bench -m

ทดสอบประสิทธิภาพเครือข่ายด้วย iperf

ผมได้ทดสอบความเร็วการสื่อสารเครือข่ายไร้สายด้วย iperf3 ทั้งบน Wi-Fi 2.4 GHz และ 5 GHz โดยผมเชื่อมต่อบอร์ดกับเราเตอร์ที่บ้าน ผลการทดสอบทั้งหมดนี้ทำขึ้นโดยไม่ได้มีการปรับแต่งใด ๆ รวมทั้งอาจจะมีอุปกรณ์อื่น เช่น ทีวี, โทรศัพท์มือถือ หรืออุปกรณ์อื่น ๆ เชื่อมต่อใช้งาน Wi-Fi พร้อมกันอยู่ด้วย และระยะห่างระหว่างบอร์ด Particle Tachyon กับเราเตอร์นั้นอยู่ที่ประมาณ 6–7 เมตร

สำหรับการตั้งค่าการทดสอบ ผมใช้โน้ตบุ๊กที่ติดตั้งระบบปฏิบัติการ Windows 11 รันเป็นโหมดเซิร์ฟเวอร์ด้วยคำสั่ง iperf -s และผลการทดสอบด้วย iperf3 ระหว่าง Particle Tachyon กับเครื่องโฮสต์ก็แสดงให้เห็นความแตกต่างของประสิทธิภาพระหว่าง Wi-Fi 2.4 GHz และ 5 GHz อย่างชัดเจน ดังแสดงด้านล่างนี้

ทดสอบการรับส่งข้อมูลผ่านเครือข่าย WiFi 2.4 GHz

ส่งข้อมูล


รับข้อมูล


สองทิศทาง


บนคลื่นความถี่ 2.4 GHz ความเร็วเฉลี่ยในโหมดส่งข้อมูลอยู่ที่ประมาณ 13.4 Mbit/s ส่วนโหมดรับข้อมูลทำได้สูงกว่าเล็กน้อยที่ประมาณ 23.5 Mbit/s แต่เมื่อทดสอบในโหมดสองทางประสิทธิภาพลดลง โดยได้ค่าเฉลี่ย 8.2 Mbit/s สำหรับการส่งข้อมูล และ 10.8 Mbit/s สำหรับการรับข้อมูล

ทดสอบการรับส่งข้อมูลผ่านเครือข่าย WiFi 5 GHz

ส่งข้อมูล


รับข้อมูล


สองทิศทาง


เมื่อเปลี่ยนมาทดสอบบนเครือข่าย Wi-Fi 5 GHz พบว่าประสิทธิภาพเพิ่มขึ้นอย่างชัดเจน โดยในโหมดส่งข้อมูลนั้น Particle Tachyon ทำความเร็วได้ค่อนข้างคงที่ที่ประมาณ 102.0 Mbit/s ส่วนโหมดรับข้อมูลจะอยู่ที่ประมาณ 87.3 Mbit/s สำหรับโหมดสองทางพบว่าผลลัพธ์ออกมาค่อนข้างดี โดยได้ค่าเฉลี่ย 41.4 Mbit/s สำหรับการส่งข้อมูล และประมาณ 49.4 Mbit/s สำหรับการรับข้อมูล

โดยรวมแล้วประสิทธิภาพการเชื่อมต่อไร้สายของ Particle Tachyon บนย่านความถี่ 5 GHz ถือว่าดี  แม้ว่าใน log จะพบความไม่เสถียรเล็กน้อย เช่น การสูญเสียแพ็กเก็ตหรือการส่งซ้ำเป็นครั้งคราว ซึ่งอาจเกิดได้จากปัญหาของเครื่องคอมพิวเตอร์ที่ใช้ทดสอบ, สัญญาณรบกวน, หรือแม้แต่ตัวเราเตอร์เอง นอกจากนี้การทดสอบครั้งนี้ผมรัน iperf3 บนเครื่อง Windows 11 ซึ่งอาจไม่ให้ประสิทธิภาพการทดสอบเครือข่ายสูงเท่ากับการใช้ระบบ Linux

ทดสอบประสิทธิภาพระบบไฟล์ด้วย iozone

สำหรับผลการทดสอบ iozone benchmark บนบอร์ด Particle Tachyon นั้นแสดงให้เห็นถึงประสิทธิภาพ I/O ที่ค่อนข้างดี โดยผมกำหนดใช้ไฟล์ทดสอบขนาด 512 MB และขนาดบันทึกที่ 1024 KB และ 16384 KB   ผลลัพธ์ได้ความเร็วการเขียนแบบ Sequential write อยู่ในช่วงระหว่าง 516 – 548 MB/s ส่วนการเขียนซ้ำ (rewrite) ทำได้ใกล้เคียงกันที่ประมาณ 513 – 523 MB/s ในขณะที่การอ่านทำได้เร็วกว่ามาก โดยอยู่ที่ราว 793 MB/s สำหรับข้อมูลขนาด 1 MB และสูงสุดประมาณ 950 MB/s เมื่อใช้ข้อมูลขนาด 16 MB  ในกรณีของการอ่านแบบสุ่มนั้นก็ทำได้ดีเช่นกัน โดยวัดได้ประมาณ 709 MB/s ที่ข้อมูลขนาด 1 MB และได้ความเร็วประมาณ 933 MB/s กับข้อมูลขนาด 16 MB ส่วนด้านการเขียนแบบสุ่มนั้นยังคงทำได้สม่ำเสมออยู่ที่ประมาณ 517 – 520 MB/s


โดยสรุปแล้วผลการทดสอบแสดงให้เห็นว่าระบบจัดเก็บข้อมูลของบอร์ด Particle Tachyon ถูกปรับแต่งดี ประสิทธิภาพเพิ่มขึ้นอย่างชัดเจนเมื่อใช้ block ข้อมูลขนาดใหญ่ โดยเฉพาะในการอ่านที่ทำได้โดดเด่น มีความเร็วการเขียนที่ค่อนข้างคงที่และความเร็วการอ่านแบบลำดับที่สูง สะท้อนให้เห็นว่าหน่วยเก็บข้อมูลบนบอร์ดและคอนโทรลเลอร์ถูกปรับจูนมาเพื่อรองรับงานที่ต้องการสมดุลระหว่างความเร็วและความเสถียร

ทดสอบเว็บเบราเซอร์ด้วย Speedometer 3.1

ผมได้ทดสอบ Speedometer 3.1 ทั้งบนเว็บเบราว์เซอร์ Chromium ที่ติดตั้งมาพร้อมกับระบบปฏิบัติการ และทดสอบบน Firefox ที่ผมติดตั้งเพิ่มใหม่ โดยผลการทดสอบเฉลี่ยของ Firefox ทำได้ 4.80 ซึ่งสูงกว่า Chromium ที่ได้ 3.45  โดยการวิเคราะห์ด้านล่างนี้เป็นการเปรียบเทียบจาก log ของทั้งสองเบราว์เซอร์

นี่คือผลการทดสอบบางส่วนจาก Chromium


นี่คือผลการทดสอบจาก Firefox


ผลการทดสอบ Speedometer 3.1 บน Chromium
ผลการทดสอบ Speedometer 3.1 บน Chromium

ผลการทดสอบ Speedometer 3.1 บน Firefox
ผลการทดสอบ Speedometer 3.1 บน Firefox

สำหรับการรันบน Chromium นั้นพบว่าเฟรมเวิร์กอย่าง Vue, Svelte และ Backbone สามารถประมวลผลงานได้ในช่วงความเร็วประมาณ 100–200 ms แสดงให้เห็นว่าการจัดการงานแบบประสานเวลา (synchronous) ทำได้ลื่นไหล และงานแบบไม่ประสานเวลา (asynchronous) ก็มีการหน่วงเวลาปานกลาง ส่วนเฟรมเวิร์กที่หนักกว่าอย่าง React และ Angular ใช้เวลาประมาณ 200 ms ขณะที่ jQuery และ ES5 baseline ทำงานได้ช้าที่สุด โดยหลายครั้งเกิน 300 ms และบางกรณีอาจนานกว่า 1 วินาที

ในฝั่งของ Firefox นั้นพบว่าประสิทธิภาพดีกว่าแทบทุกเฟรมเวิร์ก โดย Vue และ Svelte ตอบสนองได้เร็วที่สุด สามารถทำงานเพิ่ม/ลบข้อมูลได้เร็วกว่าบน Chromium ส่วน React และ Angular นั้นก็แสดงผลลัพธ์ที่ดีขึ้น โดยมีการหน่วงเวลาน้อยกว่าที่พบใน Chromium และแม้แต่ jQuery ที่ทำงานได้ช้าก็มีอาการหน่วงลดลงเมื่อเทียบกับผลทดสอบบน Chromium

ทดสอบประสิทธิภาพการเล่นวิดีโอ YouTube

ผมได้ทดสอบการเล่นวิดีโอ YouTube บน Particle Tachyon โดยใช้คลิป Norway 4K ในหลายความละเอียดตั้งแต่ 240p จนถึง 2160p โดยเปิดแบบ เต็มจอ (fullscreen) บนเดสก์ท็อปที่ตั้งค่าความละเอียดไว้ที่ 1080p ซึ่งหมายความว่าวิดีโอที่ความละเอียดที่สูงกว่า 1080p จะถูกย่อ (downscale) ให้พอดีกับหน้าจอ

ในการทดสอบที่ความละเอียดต่ำอย่าง 240p, 360p และ 480p นั้นพบว่าบอร์ดสามารถเล่นวิดีโอได้อย่างไม่มีปัญหา การแสดงผลลื่นไหล มีเฟรมดรอปเพียงเล็กน้อย และ buffer health ค่อนข้างคงที่ตลอดการทดสอบ แสดงให้เห็นว่าการสตรีมวิดีโอแบบเบา ๆ สามารถทำงานได้อย่างเสถียรดี

ทดสอบการเล่นวิดีโอขนาด 426x240
ทดสอบการเล่นวิดีโอขนาด 426×240
ทดสอบการเล่นวิดีโอขนาด 640x360
ทดสอบการเล่นวิดีโอขนาด 640×360
ทดสอบการเล่นวิดีโอขนาด 854x480
ทดสอบการเล่นวิดีโอขนาด 854×480
ทดสอบการเล่นวิดีโอขนาด 1280x720
ทดสอบการเล่นวิดีโอขนาด 1280×720
ทดสอบการเล่นวิดีโอขนาด 1920x1080
ทดสอบการเล่นวิดีโอขนาด 1920×1080
ทดสอบการเล่นวิดีโอขนาด 2560x1440
ทดสอบการเล่นวิดีโอขนาด 2560×1440
ทดสอบการเล่นวิดีโอขนาด 3840x2160
ทดสอบการเล่นวิดีโอขนาด 3840×2160

เมื่อปรับความละเอียดขึ้นมาเป็น 720p และ 1080p พบว่าการเล่นวิดีโอยังคงทำงานได้ดี แต่ผมก็เริ่มสังเกตเห็นอาการสะดุดหรือเฟรมดรอปให้เห็นบ้างเป็นบางครั้ง โดยเฉพาะที่ความละเอียดแบบ Full HD ซึ่งดูเหมือนว่าชิปเซ็ตต้องทำงานหนักขึ้น และพอขยับความละเอียดไปที่ 1440p และ 2160p (4K) ก็สังเกตุเห็นข้อจำกัดของบอร์ดได้ชัดเจนมากขึ้น โดยวิดีโอสามารถเล่นได้แต่มีอาการเฟรมดรอปถี่ขึ้น และพบว่าสถานะของ buffer health เริ่มขึ้นลงตามความเร็วการเชื่อมต่อที่พยายามปรับตัวให้ทันกับความต้องการบิตเรตที่สูงกว่า

ประสิทธิภาพการเล่นวิดีโอของ Particle Tachyon
ประสิทธิภาพการเล่นวิดีโอของ Particle Tachyon

ทดสอบการเรนเดอร์สามมิติด้วย WebGL บนเว็บเบราเซอร์

การทดสอบถัดมาของผมคือการเรนเดอร์สามมิติบนเบราว์เซอร์ โดยผมใช้การรัน WebGL Aquarium บน Chromium โดยผมพบว่าเมื่อมีกำหนดให้มีปลาบนหน้าจอเพียงตัวเดียวนั้นวัดค่า FPS ได้เฉลี่ยอยู่ที่ประมาณ 5 fps และเมื่อเพิ่มจำนวนปลาเป็น 100–500 ตัวนั้นประสิทธิภาพยังคงอยู่ที่ราว ๆ 4 fps ต่อมาเมื่อเพิ่มจำนวนปลาเป็น 1000–5000 ตัวพบว่าอัตราการแสดงผลลดลงเหลือเพียง 3–4 fps ส่วนที่โหลดหนักจริง ๆ อย่างการกำหนดจำนวนปลา 10,000–25,000 ตัวทำให้เฟรมเรตตกลงไปอยู่ระหว่าง 2 fps ถึง 1 fps

โดยรวมแล้วอาจจะกล่าวได้ว่าประสิทธิภาพการเรนเดอร์สามมิติบน Chromium ถือว่าค่อนข้างต่ำ ซึ่งสาเหตุหลักน่าจะมาจากการตั้งค่าเริ่มต้นของระบบปฏิบัติการที่ผู้ผลิตเตรียมให้ที่ยังไม่ได้ถูกปรับแต่งให้รองรับการเร่งการทำงานผ่าน GPU ได้อย่างเต็มประสิทธิภาพ  แต่อย่างไรก็ตามผมพบว่าการประมวลผลไม่ได้กดดัน CPU มากนัก ผมยังใช้งานแอปพลิเคชัน GUI อื่น ๆ ได้ดี และไม่เกิดอาการหน่วงมากเหมือนที่ผมเคยเจอบน SBC รุ่นอื่น ๆ ที่เคยทดสอบมาก่อน

particle tachyon webgl chromium 1Fish=1, FPS=5 particle tachyon webgl chromium 100Fish=100, FPS=4
particle tachyon webgl chromium 500Fish=500, FPS=4 particle tachyon webgl chromium 1000Fish=1000, FPS=4
particle tachyon webgl chromium 5000Fish=5000, FPS=3 particle tachyon webgl chromium 10000Fish=10000, FPS=2
particle tachyon webgl chromium 15000Fish=15000, FPS=2 particle tachyon webgl chromium 20000Fish=20000, FPS=2

ทดสอบการเรนเดอร์สามมิติด้วย glmark2

ต่อมาผมได้ทดสอบการเรนเดอร์กราฟิกสามมิติด้วย glmark2 ซึ่งให้ผลคะแนนรวมอยู่ที่ 62 โดยข้อมูลจากใน log แสดงให้เห็นว่าระบบทำงานบน Mesa llvmpipe (LLVM 12.0.0) แทนที่จะใช้ Adreno GPU  สำหรับการทดสอบการแสดงที่ง่ายอย่างเช่น texture filtering และ basic effects นั้นทำอัตราการแสดงผลได้สูงเกิน 100 fps แต่เมื่องานเรนเดอร์ที่ซับซ้อนขึ้นอย่าง shading และ lighting นั้นมีอัตราการแสดงผลลดลงมาอยู่ในช่วง 40–50 fps ส่วนงานเรนเดอร์สามมิติที่หนักมากอย่างเช่น terrain rendering และ refraction นั้นแสดงข้อจำกัดอย่างชัดเจนโดยมีอัตราการแสดงผลเหลือเพียง 4 fps และ 10 fps ตามลำดับ

ทดสอบ glmark2 กับบอร์ด Particle Tachyon
ทดสอบ glmark2 กับบอร์ด Particle Tachyon

ทดสอบประสิทธิภาพ AI

เตรียมตัว

ระหว่างการรีวิวนี้ผมพบว่าผมไม่พบคู่มือแบบพร้อมให้ทำตามหรือตัวอย่างที่ชัดเจนสำหรับการติดตั้งหรือทดสอบ AI บนบอร์ด Particle Tachyon ดังนั้นผมจึงอ้างอิงจากแหล่งข้อมูลที่มีอยู่ใน Qualcomm AI Hub โดยผมได้สมัครบัญชีและสร้าง API_TOKEN มารอใช้งาน จากนั้นผมได้สร้าง virtual environment ด้วย venv เพื่อให้การติดตั้งสะอาดและแยกจากระบบหลัก สำหรับการลองครั้งแรกกับ Python 3.10 นั้นล้มเหลวในขั้นตอนการทดสอบ แต่เมื่อเปลี่ยนมาใช้ Python 3.9 ทุกอย่างก็ผ่านไปอย่างราบรื่น หลังจากนั้นผมก็ได้ติดตั้งแพ็กเกจ Qualcomm AI Hub ด้วยคำสั่ง pip3 install qai-hub

ขั้นตอนต่อมาคือการล็อกอินและตั้งค่าด้วยคำสั่ง qai-hub configure --api_token API_TOKEN ซึ่งเป็นการทำให้สภาพแวดล้อมเชื่อมต่อกับบัญชี Qualcomm AI Hub ได้สำเร็จ จากนั้มจึงทดสอบการทำงานเบื้องต้นด้วยการตรวจอุปกรณ์ด้วยคำสั่ง qai-hub list-devices ซึ่งพบว่าทำงานได้ดี สามารถแสดงรายการอุปกรณ์ที่รองรับได้ตามที่ควรจะเป็น นอกจากนี้ยังได้คำสั่งที่มีประโยชน์อื่น ๆ  เช่น qai-hub list-models และ qai-hub list-exports ที่ช่วยตรวจสอบโมเดลที่รองรับได้สะดวก ก็พบว่าสามารถทำงานได้เช่นเดียวกัน  ดังนั้นโดยรวมแล้วแม้ว่าผมจะต้องผ่านขั้นตอนการลองผิดลองถูกบ้าง แต่เมื่อปรับตัวให้ชินกับคู่มือตัวอย่างและติดตั้งคลังโปรแกรมต่าง ๆ เสร็จเรียบร้อยนั้น เครื่องมือกลุ่มนี้ก็ทำงานได้เสถียรดีและพร้อมสำหรับการทดสอบ AI อื่น ๆ ดังรายการทดสอบต่อไปนี้

ทดสอบทั่วไป

เบื้องต้นผมพบว่ามีโมเดล AI หลายตัวให้เลือกใช้ เช่น MobileNet, FFNet และ YOLO โดยโมเดลเหล่านี้มีให้เลือกนำไปใช้งานได้ที่ https://github.com/quic/ai-hub-models  และสำหรับการทดสอบครั้งแรกนี้ผมได้ทำตามตัวอย่าง real-time selfie segmentation จากหน้า Getting Started ของ Qualcomm AI Hub โดยผมได้ติดตั้งโมเดลด้วยคำสั่ง pip3 install "qai-hub-models[ffnet_40s]" จากนั้นรันสคริปต์ตัวอย่างด้วยคำสั่ง python -m qai_hub_models.models.ffnet_40s.demo และภาพด้านล่างนี้คือผลลัพธ์ของการ Segmentation ครับ


ภาพอินพุตสำหรับการทดสอบ AI
ภาพอินพุตสำหรับการทดสอบ AI

ผลลัพธ์การแบ่งส่วนภาพ (image segmentation)
ผลลัพธ์การแบ่งส่วนภาพ (image segmentation)

ผมยังได้ลองทดสอบการรันโมเดลการตรวจหาวัตถุ YOLO โดยผมได้ติดตั้ง YOLOv7 ด้วยคำสั่ง pip install "qai_hub_models[yolov7]" หลังจากนั้นผมจึงรันสคริปต์ตัวอย่างโดยใช้ภาพที่ผมดาวน์โหลดมาเตรียมไว้ในเครื่อง โดยผมระบุพาธของภาพนี้ด้วยออปชัน --image ../particle_test_logs/data/CrossWalk_640.jpg และมีผลลัพธ์การทำงานตามภาพด้านล่างนี้

particle tachyon ai yolo inputภาพอินพุต particle tachyon ai yolo v7Yolov7
particle tachyon ai yolo 8nYolov8n particle tachyon ai yolo 11nYolov11n

ถัดมาผมได้ทดสอบการทำงานของ AI inferencing ใน Python โดยใช้สคริปต์ตัวอย่างจาก Qualcomm AI Hub ซึ่งการทำงานเป็นไปอย่างราบรื่นไม่มีปัญหาเช่นเดียวกัน


Inference Job บน Qualcomm AI Hub
Inference Job บน Qualcomm AI Hub

ทดสอบการตรวจหาวัตถุ (object detection) กับ USB camera

ในหน้าเว็บอย่างเป็นทางการของ Particle Tachyon นั้นมีการระบุว่าบอร์ดนี้รองรับการเชื่อมต่อกล้องได้สองตัวผ่านพอร์ต CSI1 และ DSI/CSI2 ตามที่แสดงในภาพด้านล่างนี้ ซึ่งในทางทฤษฎีควรจะทำให้เราสามารถใช้งานกล้องสองตัวพร้อมกันได้ อย่างไรก็ตามเมื่อผมลองทดสอบกับ Raspberry Pi Camera Module 3 และ Raspberry Pi AI Camera ที่ใช้พอร์ตแบบ CSI นั้นกลับไม่สามารถทำงานได้ บอร์ดตรวจไม่พบกล้อง หลังจากค้นหาข้อมูลผมพบว่าสาเหตุคือ ณ ขณะที่ผมกำลังรีวิวนี้กล้องของ Raspberry Pi ยังไม่สามารถใช้งานได้บน Particle Tachyon เนื่องจากพึ่งพาเฟิร์มแวร์แบบปิด(closed-source firmware stack) ดังนั้นการทดสอบต่อไปนี้ผมจึงใช้กล้อง USB webcam แทนครับ

CSI Connectors สำหรับเชื่อมต่อกล้อง
CSI Connectors สำหรับเชื่อมต่อกล้อง

สำหรับการเตรียมการทดสอบประสิทธิภาพแบบเวลาจริงนี้ ผมได้ใช้ USB webcam และจับภาพด้วยคลังโปรแกรม OpenCV ที่ผมกำหนดความละเอียดเป็น 640×480 พิกเซล  จากนั้นผมติดตั้งโมเดลตรวจจับวัตถุ YOLOv8 ด้วยคำสั่ง pip install "qai-hub-models[yolov8-det]" ตามคำแนะนำจาก qai-hub-models repository

ในขั้นตอนการเตรียมโมเดลเพื่อนำมาใช้งานนั้น ผมทำการ export โมเดลแบบ quantized ด้วยสคริปต์ที่มีมาให้ แต่จากผมตรวจสอบรายชื่ออุปกรณ์ที่รองรับนั้นผมไม่พบ QCM6490 ในรายการ ดังนั้นผมจึงเลือกใช้ QCS6490 แทน เนื่องจากมีฮาร์ดแวร์แทบจะเหมือนกัน จากนั้นผมจึง export โมเดลผ่าน Qualcomm AI Hub โดยใช้สคริปต์ qai_hub_models.models.yolov8_det.export  โดยตั้งค่าให้รันโมเดลบน Qualcomm QCS6490 proxy chipset รวมถึงตั้งค่าให้ใช้ TensorFlow Lite (TFLite) runtime ในการทำงานที่ความละเอียดเอาต์พุต 512×512 พิกเซล  และผมไม่ได้ระบุพารามิเตอร์สำหรับ quantization เพิ่มเติมเพื่อให้ระบบใช้ค่า default หลังจากนั้นระบบจาก export และสร้างโมเดลที่พร้อมให้เรานำไปใช้ทดสอบต่อไป

ผมสร้าง virtual environment ด้วย Python 3.9 และติดตั้ง TFLite runtime ร่วมกับ NumPy 1.x เพื่อให้ทำงานเข้ากันได้ โดยภายในสภาพแวดล้อมเสริมนี้ ผมทดสอบโมเดล YOLOv8n กับภาพอินพุตจัตุรัสหลายขนาด ประกอบด้วย 512, 256, 128 และ 64 พิกเซล โดยมีจุดประสงค์เพื่อเปรียบเทียบประสิทธิภาพการทำงานระหว่างโมเดลที่ unquantized และ quantized


ทดสอบ YOLOv8n แบบเวลาจริงกับ USB camera
ทดสอบ YOLOv8n แบบเวลาจริงกับ USB camera

ประสิทธิภาพของ YOLOv8n บน Particle Tachyon
ประสิทธิภาพของ YOLOv8n บน Particle Tachyon
เปรียบเทียบประสิทธิภาพของ YOLOv8n บน Particle Tachyon
เปรียบเทียบประสิทธิภาพของ YOLOv8n บน Particle Tachyon

การทดสอบประสิทธิภาพ YOLOv8n บน Particle Tachyon ที่แสดงในภาพข้างบนนี้แสดงให้เห็นความสัมพันธ์ที่ชัดเจนระหว่างความละเอียดอินพุตและ เวลาในการประมวลผล โดยในกรณีของโมเดลแบบ unquantized นั้นพบว่าขั้นตอน inference ใช้เวลามากที่สุดในทุกความละเอียด ซึ่งโมเดลใช้เวลาประมวลผลภาพที่ความละเอียด 512×512 พิกเซลประมาณ 0.69 วินาที แต่เมื่อปรับลดขนาดอินพุตเป็น 256×256 พิกเซลนั้นรันไทม์เกือบลดลงครึ่งหนึ่งเหลือประมาณ 0.37 วินาที และเมื่อปรับลดขนาดภาพลงไปที่ 128×128 และ 64×64 พิกเซลนั้นใช้เวลาประมวลผลลดลงเหลือเพียงประมาณ 0.19 วินาที และ 0.16 วินาที ตามลำดับ จากการสังเกตุในภาพจะพบว่าเวลาที่ใช้ในขั้นตอน preprocessing และ postprocessing นั้นน้อยมากในภาพทุกขนาด ซึ่งค่อนข้างสอดล้องและยืนยันได้ว่าขั้นตอนการ inference น่าจะคือคอขวดหลักของประสิทธิภาพ

ในทางตรงกันข้ามโมเดลที่ผ่านการ quantized นั้นสามารถเร่งความเร็วได้ดี ที่ความละเอียดภาพขนาด 512×512 นั้นใช้เวลาทำงานลดลงจากประมาณ 0.69 วินาที เหลือเพียงประมาณ 0.19 วินาที หรือเร็วขึ้นประมาณ 3.7 เท่า ขณะที่ความละเอียดภาพขนาด 256×256 นั้นใช้เวลาลดลงจากประมาณ 0.37 วินาที เหลือเพียงประมาณ 0.05 วินาที ซึ่งทำงานได้เร็วขึ้นเกือบ 8 เท่า แม้แต่ที่ภาพดอินพุตเล็กสุดขนาด 64×64 พิกเซลนั้น โมเดลเวอร์ชัน quantized ก็ลดเวลาทำงานได้ดีเหลือเพียงประมาณ 0.01 วินาทีต่อเฟรมเท่านั้น ซึ่งใกล้เคียงกับการประมวลผลแบบเวลาจริงได้ดี  ผลลัพธ์เหล่านี้แสดงให้เห็นว่า Qualcomm QCM6490 SoC ของ Particle Tachyon ได้ประโยชน์อย่างมากจากการใช้โมเดลแบบ quantized ทำให้สามารถประมวลผลการตรวจจับวัตถุได้อย่างมีประสิทธิภาพในหลายระดับความละเอียด เหมาะกับงานด้าน หุ่นยนต์, ระบบเฝ้าระวัง และแอปพลิเคชัน Edge AI อื่น ๆ ที่ต้องการค่าดีเลย์ต่ำเป็นสำคัญ

วัดการใช้พลังงานและการกระจายความร้อน

การทดสอบสุดท้ายของผมมุ่งไปที่การวัดการใช้พลังงานและการกระจายความร้อน โดยผมใช้ USB power metering dongle ในการตรวจสอบการใช้พลังงานของบอร์ดภายใต้ 3 สถานการณ์ ได้แก่ โหมด Idle, การเล่นวิดีโอ YouTube 1080p แบบหน้าต่างย่อ และการทำงานที่โหลดสูงสุดด้วยการรัน WebGL (10,000 fishes) ควบคู่ไปพร้อมกับการเล่นวิดีโอ YouTube 4K ในโหมดหน้าต่าง  ผลการวัดการใช้พลังงานทั้งหมดออกมาค่อนข้างคงที่ อยู่ที่ประมาณ 5.32 W ในทุกกรณี  ผมไม่พบการกระชากของพลังงานที่มีนัยสำคัญ ซึ่งอาจเป็นเพราะบอร์ดดึงพลังงานหลักจากสาย USB เพื่อชาร์จแบตเตอรี่ไปด้วยก็เป็นได้

การใช้ทรัพยากรของบอร์ดในขณะ Idle
การใช้ทรัพยากรของบอร์ดในขณะ Idle
การใช้ทรัพยากรของบอร์ดในขณะเล่นวิดีโอ 1080p ในโหมดหน้าต่าง
การใช้ทรัพยากรของบอร์ดในขณะเล่นวิดีโอ 1080p ในโหมดหน้าต่าง
การใช้ทรัพยากรของบอร์ดในขณะเล่นวิดีโอ 4K ในโหมดหน้าต่างและรัน WebGL ไปพร้อมกัน
การใช้ทรัพยากรของบอร์ดในขณะเล่นวิดีโอ 4K ในโหมดหน้าต่างและรัน WebGL ไปพร้อมกัน
ค่าเฉลี่ยการใช้พลังงาน
ค่าเฉลี่ยการใช้พลังงาน

เพื่อสังเกตการกระจายความร้อน ผมได้ใช้กล้องความร้อน FLIR E4 ในการถ่ายภาพความร้อนของบอร์ด ผมทดสอบควบคุมบอร์ดจากระยะไกลผ่าน เครื่องมือ Termial ของ Particle Console โดยผมทดสอบตอนเช้าที่ฝนตก อุณหภูมิห้องอยู่ที่ประมาณ 27–28 °C ภาพความร้อนภาพแรกด้านล่างนี้ผมถ่ายในขณะที่รันคำสั่ง htop โดยในภาพพบอุณหภูมิสูงสุดที่บันทึกได้อยู่ที่ราว 39.7 °C และความร้อนกระจายค่อนข้างสม่ำเสมอ โดยจุดที่ร้อนที่สุดอยู่รอบ ๆ บริเวณโปรเซสเซอร์หลัก  สำหรับภาพความร้อนที่สองนั้นผมถ่ายในขณะที่รันสคริปต์ sbc-bench ไประยะเวลาหนึ่ง ซึ่งแม้ว่าสคริปต์นี้จะรันไม่สำเร็จ แต่รวม ๆ ก็ยังคงใช้พลังงาน CPU มากกว่ากรณีแรก จึงส่งผลให้อุณหภูมิสูงขึ้นเป็นประมาณ 57–58 °C ซึ่งโดยรวมแล้วบอร์ดร้อนขึ้นกว่ากรณีแรกมาก และที่น่าสนใจคือทั้งสองกรณีนั้นอุณหภูมิของ PCB โดยรวมกลับสูงกว่าชิปหลักทั้งสองตัว

การกระจายความร้อนของ Particle Tachyon ขณะ Idle
การกระจายความร้อนของ Particle Tachyon ขณะ Idle
การกระจายความร้อนในขณะรันเต็มที่
การกระจายความร้อนในขณะรันเต็มที่

สรุป

โดยสรุปแล้ว ส่วนตัวผมค่อนข้างชอบการออกแบบโดยรวมของบอร์ด Particle Tachyon และประสิทธิภาพของบอร์ดก็ถือว่าทำได้ดีทีเดียว ขั้นตอนการติดตั้งก็ทำได้ง่าย ไม่ว่าจะเป็นโหมด Desktop OS หรือ Headless อย่างไรก็ตามระหว่างการรีวิวก็พบข้อจำกัดอยู่บ้าง เช่น เอกสารและตัวอย่างสำหรับการทดสอบ AI บนเว็บไซต์ Particle Tachyon ที่ยังไม่ครบถ้วน, การที่เราจะต้องเชื่อมต่อแบตเตอรี่อยู่ตลอดเวลา และ ณ ขณะที่รีวิวนี้ก็ยังไม่มีเอาต์พุตเสียงจาก Desktop OS ครับ

สำหรับผู้ที่สนใจ ตอนนี้ Particle Tachyon วางจำหน่ายในร้านค้าอย่างเป็นทางการ ที่ราคา $299 (~9,600฿) สำหรับรุ่น 8GB RAM / 128GB Flash และ $249 (~8,000฿) สำหรับรุ่น 4GB RAM / 64GB Flash

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
โฆษณา