OmniInfer: เอนจิ้นหลายแบ็กเอนด์แบบรวมศูนย์ แก้ปัญหาการกระจายตัวของการอนุมานโมเดลภาษาขนาดใหญ่บนอุปกรณ์ปลายทาง

ด้วยการพัฒนาอย่างรวดเร็วของโมเดลภาษาขนาดใหญ่ (LLM) และโมเดลภาษาภาพ (VLM) ในด้านจำนวนพารามิเตอร์และสถาปัตยกรรม สนามรบหลักของแอปพลิเคชัน AI กำลังค่อยๆ ย้ายจากศูนย์คอมพิวเตอร์คลาวด์ไปยังอุปกรณ์ Edge และ End-side

การอนุมานบน End-side สามารถลดการพึ่งพาพลังการคำนวณของเซิร์ฟเวอร์คลาวด์และแรงกดดันด้านแบนด์วิดท์ได้อย่างมีนัยสำคัญ และมอบประสบการณ์การโต้ตอบแบบออฟไลน์ที่มีความหน่วงต่ำภายใต้เงื่อนไขของการปกป้องความเป็นส่วนตัวของข้อมูลผู้ใช้ อย่างไรก็ตาม การนำ LLM/VLM ไปใช้งานจริงบน “อุปกรณ์ทุกเครื่อง” นักพัฒนากำลังเผชิญกับความท้าทายทางวิศวกรรมที่ไม่เคยมีมาก่อน

ปัญหาหลักและจุดที่เจ็บปวด

  1. ความแตกแยกสูงของระบบนิเวศฮาร์ดแวร์: อุปกรณ์ End-side มีหลากหลายประเภท ตั้งแต่พีซี Windows ที่ใช้ GPU ของ NVIDIA อุปกรณ์ macOS ที่ใช้ Apple Silicon ไปจนถึงอุปกรณ์มือถือ Android และ iOS ที่มี NPU เฉพาะ ไม่มีเครื่องมืออนุมานพื้นฐานใดที่สามารถทำงานได้อย่างมีประสิทธิภาพสูงสุดบนฮาร์ดแวร์ทั้งหมดนี้

  2. เครื่องมืออนุมานพื้นฐานต่างทำงานแยกกัน: ชุมชนโอเพ่นซอร์สได้เห็นการเกิดขึ้นของแบ็กเอนด์การอนุมานที่ยอดเยี่ยมมากมาย เช่น llama.cpp ที่เน้นการอนุมานแบบผสมระหว่าง CPU/GPU, MLX ที่ปรับให้เหมาะกับ Apple Silicon โดยเฉพาะ และ MNN ที่มีข้อได้เปรียบบนอุปกรณ์มือถือ เป็นต้น หากนักพัฒนาต้องการให้แอปพลิเคชันทำงานข้ามแพลตฟอร์ม พวกเขาจำเป็นต้องเขียนเลเยอร์การปรับใช้แยกต่างหากสำหรับแต่ละเครื่องมือ จัดการหน่วยความจำและอินเทอร์เฟซที่แตกต่างกัน ทำให้ปริมาณงานวิศวกรรมเพิ่มขึ้นแบบทวีคูณ

  3. มาตรฐานอินเทอร์เฟซไม่เป็นหนึ่งเดียวและความยากในการขยายหลายรูปแบบ: API ของเครื่องมือพื้นฐานแต่ละตัวแตกต่างกันมาก และมักไม่รองรับโหมด “การคิด” ล่าสุดหรืองานหลายรูปแบบเพียงพอ ส่งผลให้แอปพลิเคชันระดับสูงยากที่จะเรียกใช้อย่างเป็นหนึ่งเดียวและแยกส่วนธุรกิจออกจากกัน

OmniInfer: เอนจิ้นหลายแบ็กเอนด์แบบรวมศูนย์ แก้ปัญหาการกระจายตัวของการอนุมานโมเดลภาษาขนาดใหญ่บนอุปกรณ์ปลายทาง แผนภาพสถาปัตยกรรมระบบโดยรวมของ OmniInfer แกนกลางคือโครงสร้างพื้นฐานการอนุมานโมเดลขนาดใหญ่ในเครื่องข้ามแพลตฟอร์ม โดยเครื่องยนต์รองรับทางเข้า CLI/HTTP/Android/iOS หลายทาง จัดการรันไทม์แบบผสม และปรับให้เข้ากับระบบหลายระบบ Linux/Windows/macOS/Android/iOS สถาปัตยกรรมแบ่งออกเป็นห้าชั้นจากบนลงล่าง: ชั้นทางเข้าให้วิธีการเข้าถึงผู้ใช้สี่แบบคือ CLI, เกตเวย์ HTTP, Android, iOS; ชั้นเครื่องยนต์หลักรับผิดชอบการตรวจจับแพลตฟอร์ม การจัดการแบ็กเอนด์ การควบคุมรันไทม์ และการจัดตารางหลักอื่นๆ; ชั้นนามธรรมแพลตฟอร์มทำการผูกมัดการปรับใช้หลายระบบ; ชั้นเครื่องยนต์อนุมานรวม OmniInfer-Native ที่พัฒนาขึ้นเองและแบ็กเอนด์การอนุมานหลายประเภทเช่น llama.cpp, MNN, MLX; ชั้นล่างสุดคือโมเดลขนาดใหญ่ต่างๆ ที่รองรับเช่น Qwen, Llama โดยรวมแล้วทำให้สามารถปรับใช้การอนุมานโมเดลขนาดใหญ่ในเครื่องที่เป็นหนึ่งเดียว ข้ามแพลตฟอร์ม มีหลายทางเข้าและหลายแบ็กเอนด์

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

ประสิทธิภาพ

OmniInfer: เอนจิ้นหลายแบ็กเอนด์แบบรวมศูนย์ แก้ปัญหาการกระจายตัวของการอนุมานโมเดลภาษาขนาดใหญ่บนอุปกรณ์ปลายทาง การทดสอบจริงแสดงให้เห็นว่า บนแพลตฟอร์ม Qualcomm Snapdragon 8 Elite SoC สำหรับโมเดลหลายรูปแบบหลักเช่น Qwen2.5-VL เมื่อเปรียบเทียบกับโซลูชันเช่น llama.cpp, MNN, PowerServe แล้ว OmniInfer-LLM สามารถเพิ่มความเร็วการเติมล่วงหน้าได้สูงสุด 14.94 เท่า และเพิ่มความเร็วการถอดรหัสได้สูงสุด 1.66 เท่า

OmniInfer: เอนจิ้นหลายแบ็กเอนด์แบบรวมศูนย์ แก้ปัญหาการกระจายตัวของการอนุมานโมเดลภาษาขนาดใหญ่บนอุปกรณ์ปลายทาง แผนภาพประสิทธิภาพการอนุมานโมเดลขนาดใหญ่ของการ์ดแสดงผล Radeon 8060S ภายใต้ระบบ Linux โมเดล qwen3.5 4B, 9B ในรูปแบบควอนไทซ์สองแบบ Q4_K_M และ Q8_0 แสดง TPS (โทเค็นต่อวินาที) ของการเติมล่วงหน้าและการถอดรหัส

OmniInfer: เอนจิ้นหลายแบ็กเอนด์แบบรวมศูนย์ แก้ปัญหาการกระจายตัวของการอนุมานโมเดลภาษาขนาดใหญ่บนอุปกรณ์ปลายทาง แผนภาพประสิทธิภาพการอนุมานโมเดลขนาดใหญ่ของการ์ดแสดงผล NVIDIA 3090 ภายใต้ระบบ Windows โมเดล qwen3.5 4B, 9B ในรูปแบบควอนไทซ์สองแบบ Q4_K_M และ Q8_0 แสดง TPS (โทเค็นต่อวินาที) ของการเติมล่วงหน้าและการถอดรหัส

OmniInfer: เอนจิ้นหลายแบ็กเอนด์แบบรวมศูนย์ แก้ปัญหาการกระจายตัวของการอนุมานโมเดลภาษาขนาดใหญ่บนอุปกรณ์ปลายทาง แผนภาพประสิทธิภาพการอนุมานโมเดลขนาดใหญ่ของชิป Apple M4 Pro ภายใต้ระบบ macOS โมเดล qwen3.5 4B, 9B ในรูปแบบควอนไทซ์สองแบบ Q4_K_M และ Q8_0 แสดง TPS (โทเค็นต่อวินาที) ของการเติมล่วงหน้าและการถอดรหัส

เริ่มต้นอย่างรวดเร็ว

การติดตั้ง

สามารถติดตั้งได้ด้วยคำสั่งเดียว:

macOS/Linux:
bash
curl -fsSL https://raw.githubusercontent.com/omnimind-ai/OmniInfer/main/scripts/install.sh | bash

Windows (PowerShell):
powershell
irm https://raw.githubusercontent.com/omnimind-ai/OmniInfer/main/scripts/install.ps1 | iex

สคริปต์ติดตั้งจะตรวจจับแพลตฟอร์มและสภาพแวดล้อมฮาร์ดแวร์ปัจจุบันโดยอัตโนมัติ และแนะนำแบ็กเอนด์ที่ดีที่สุด

การใช้งานพื้นฐาน

หลังจากติดตั้งเสร็จแล้ว สามารถดำเนินการได้อย่างรวดเร็วผ่านเครื่องมือบรรทัดคำสั่ง:

  • ดูแบ็กเอนด์ที่มี: ./omnifiner backend list
  • เลือกแบ็กเอนด์: ./omnifiner select [backend-name]
  • โหลดโมเดล: ./omnifiner model load -m /path/to/your/model.gguf
  • เริ่มการสนทนา: ./omnifiner chat --message "你好"

หากต้องการสร้างจากซอร์สโค้ด โปรดอ้างอิงคำแนะนำการสร้างในที่เก็บโครงการ

สอง การออกแบบหลัก: การจัดตารางที่เป็นหนึ่งเดียวและการรับรู้ฮาร์ดแวร์

เป้าหมายการออกแบบหลักของ OmniInfer คือ: มอบบริการอนุมานโมเดลภาษาขนาดใหญ่และโมเดลภาษาภาพที่ เรียบง่าย รวดเร็ว และเป็นส่วนตัว ให้กับอุปกรณ์ทุกประเภท

2.1 นวัตกรรมหลัก: การจัดตารางที่เป็นหนึ่งเดียวและการสลับแบ็กเอนด์หลายตัวได้อย่างราบรื่น

ความใหม่ของ OmniInfer อยู่ที่ การออกแบบสถาปัตยกรรม ของมัน มันไม่ได้พัฒนาไลบรารีการคำนวณเทนเซอร์ระดับล่างใหม่ แต่ได้แนะนำกลไกการจัดการวงจรชีวิตรันไทม์ที่เป็นหนึ่งเดียวชื่อ RuntimeManager กลไกนี้ เชื่อมต่อกับแบ็กเอนด์เครื่องยนต์อนุมานหลายประเภท เช่น llama.cpp, MNN, MLX, ExecuTorch ด้านล่าง และมอบชุด API RESTful HTTP/SSE ที่เข้ากันได้อย่างสมบูรณ์กับมาตรฐาน OpenAI ด้านบน

ข้อดีของโหมด “เกตเวย์-พร็อกซี” นี้คือ:

  • การเลือกเครื่องยนต์ที่ดีที่สุดแบบไดนามิก: ผู้ใช้หรือแอปพลิเคชันระดับสูงเพียงแค่ระบุโมเดล OmniInfer ก็สามารถกำหนดเส้นทางไปยังแบ็กเอนด์เครื่องยนต์ที่ดีที่สุดโดยอัตโนมัติ (หรือผ่านพารามิเตอร์ที่ชัดเจน) ตามระบบปฏิบัติการและสภาพแวดล้อมฮาร์ดแวร์ปัจจุบัน ตัวอย่างเช่น บน macOS อาจเรียกใช้เครื่องยนต์ MLX ในขณะที่บนอุปกรณ์ x86 จะย้อนกลับไปใช้ llama.cpp โดยอัตโนมัติ
  • การแยกและความทนทานต่อข้อผิดพลาด: เครื่องยนต์ระดับล่างมักเขียนด้วย C++/C ซึ่งมีความเสี่ยงที่กระบวนการจะล่มเนื่องจากหน่วยความจำล้นหรือข้อผิดพลาดในการจัดสรรเทนเซอร์ OmniInfer แยกส่วนควบคุม Python ออกจากส่วนข้อมูลของเครื่องยนต์ระดับล่าง และห่อหุ้มข้อผิดพลาดที่ส่งคืนจากเครื่องยนต์อนุมานแต่ละตัวให้เป็นหนึ่งเดียว จึงรับประกันความเสถียรโดยรวมของบริการ

2.2 การรับรู้ฮาร์ดแวร์และการใช้งานได้ทันที

ในโซลูชันแบบดั้งเดิม การปรับใช้โมเดล End-side มักต้องการให้นักพัฒนาคอมไพล์ไฟล์ไบนารีที่รวมแบ็กเอนด์หลายประเภท เช่น CUDA, Metal, Vulkan ด้วยตนเอง OmniInfer สร้างกลไกการแพ็คเกจและการตรวจจับสภาพแวดล้อมที่ทรงพลัง ซึ่งทำให้ได้ประสบการณ์ที่ใช้งานได้ทันที:

  • ฐานรหัสเดียว คลุมทุกแพลตฟอร์ม: ฐานรหัสเดียวรองรับระบบ Linux, macOS, Windows (เดสก์ท็อปและเซิร์ฟเวอร์) รวมถึง Android, iOS พร้อมกัน
  • การควบคุมฮาร์ดแวร์แบบละเอียด: มอบนามธรรมและการควบคุมที่เป็นหนึ่งเดียวสำหรับความยาวบริบท จำนวนเลเยอร์ GPU ที่ถอดออก กลยุทธ์การจัดสรรหน่วยความจำแคช KV

สาม เฟรมเวิร์กที่พัฒนาขึ้นเอง: OmniInfer-Native

ความสามารถในการพัฒนาด้วยตนเองของ OmniInfer รวมกันเป็นหนึ่งเดียวในเฟรมเวิร์ก OmniInfer-Native ซึ่งเป็นเฟรมเวิร์กการอนุมานข้ามแพลตฟอร์มที่พัฒนาอย่างต่อเนื่อง โดยมีเป้าหมายเพื่อรวมเทคโนโลยีการเพิ่มประสิทธิภาพใหม่ๆ

3.1 ฐานที่เป็นหนึ่งเดียวข้ามแพลตฟอร์มบนพื้นฐานของ llama.cpp

OmniInfer-Native ใช้ llama.cpp เป็นพื้นฐาน ผสานเทคโนโลยีการเพิ่มประสิทธิภาพเช่น Eagle3, TurboQuant และรองรับ Linux, Windows, macOS, Android, iOS อย่างเป็นหนึ่งเดียว จุดสำคัญไม่ใช่การห่อหุ้มแบ็กเอนด์โอเพ่นซอร์สอย่างง่าย แต่เป็นการเพิ่มประสิทธิภาพทางวิศวกรรมอย่างต่อเนื่องบนสแต็กการดำเนินการที่成熟แล้ว ในด้านความหน่วงต่ำ 吞吐สูง การทำงานที่เสถียรเป็นเวลานาน และการปรับใช้ฮาร์ดแวร์หลายประเภท

ฐานที่เป็นหนึ่งเดียวนี้มอบคุณค่าสองประการให้กับ OmniInfer:
1. ด้านเดสก์ท็อปและมือถือสามารถใช้เส้นทางการเพิ่มประสิทธิภาพหลักชุดเดียวกันได้อีกครั้ง หลีกเลี่ยงการบำรุงรักษาสาขาแบ็กเอนด์ที่แยกจากกันในระยะยาว
2. การตั้งชื่อเฟรมเวิร์ก ความสามารถรันไทม์ และทิศทางการพัฒนาต่อไปทั้งหมดรวมกันเป็นหนึ่งเดียวภายใต้ OmniInfer-Native ทำให้สถาปัตยกรรมโดยรวมชัดเจนยิ่งขึ้น

3.2 การเพิ่มประสิทธิภาพแบบกำหนดเองสำหรับแพลตฟอร์ม Qualcomm บน Android

บนแพลตฟอร์ม Qualcomm Android OmniInfer-Native ได้เพิ่มประสิทธิภาพแบบกำหนดเองลึกสำหรับ NPU เพื่อไล่ตามความเร็วการอนุมานสูงสุด

เฟรมเวิร์กรวมแบ็กเอนด์ NPU ใน OmniInfer-Native เพื่อเร่งการอนุมาน LLM เมื่อประมวลผลโมเดลภาษาภาพ OmniInfer-Native ปรับเปลี่ยนเฟรมเวิร์กการอนุมาน ExecuTorch ให้เป็น “คู่หู” ของการอนุมานข้อความ: ใช้อินเทอร์เฟซแบ็กเอนด์ NPU ที่พัฒนาขึ้นเองเพื่อคำนวณ Vision Transformer ใน VLM; จากนั้นผลลัพธ์ภาพจะถูกส่งให้ ExecuTorch รับผิดชอบการอนุมานข้อความต่อไป ข้อดีของการออกแบบนี้คือ ด้านภาพยังคงความยืดหยุ่นของ llama.cpp ในเส้นทางหลายรูปแบบ ในขณะที่ด้านข้อความสามารถใช้ความสามารถการเร่งการคำนวณของ NPU Qualcomm ได้อย่างเต็มที่มากขึ้น

ในขณะเดียวกัน OmniInfer-Native ยังคงความสามารถรันไทม์ดั้งเดิม การประกอบโมเดล และความสามารถในการรวมที่จำเป็นสำหรับด้าน Android รองรับการอธิบายแพ็คเกจโมเดลผ่านไฟล์ omniinfer-native.env จัดระเบียบส่วนประกอบต่างๆ เช่น โทเค็นไนเซอร์ ดีโคเดอร์ เอ็นโคเดอร์ภาพ เป็นหนึ่งเดียว และเข้ากันได้กับโหมดไฟล์ .pte เดียวและโหมดแพ็คเกจแบบสมบูรณ์ เพื่อความสะดวกในการปรับใช้จริงบนอุปกรณ์

OmniInfer-Native ในด้านกว้างสามารถรวมเทคโนโลยีการเพิ่มประสิทธิภาพทั่วไปและที่พัฒนาขึ้นเองได้ ปรับใช้กับทุกแพลตฟอร์ม; ในด้านลึก สามารถเพิ่มประสิทธิภาพสูงสุดสำหรับแพลตฟอร์มเดียวได้ ทำให้ได้ทั้งความกว้างและความลึก

สี่ การวิเคราะห์สถาปัตยกรรมและการไหลของข้อมูล

OmniInfer ใช้สถาปัตยกรรมคลาสสิกแบบแยกชั้น โดยรวมสามารถสรุปเป็นโครงสร้างห้าชั้นที่ก้าวหน้าตามลำดับ: ชั้นทางเข้าเดียว → ชั้นเครื่องยนต์หลัก → ชั้นนามธรรมแพลตฟอร์ม → ชั้นเครื่องยนต์อนุมาน → ชั้นการรองรับโมเดล

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

☕ สนับสนุนค่ากาแฟทีมงาน

หากคุณชอบบทความนี้ สามารถสนับสนุนเราได้ผ่าน PromptPay

PromptPay QR
SCAN TO PAY WITH ANY BANK

本文来自网络搜集,不代表คลื่นสร้างอนาคต立场,如有侵权,联系删除。转载请注明出处:http://www.itsolotime.com/th/archives/30359

Like (0)
Previous 6 hours ago
Next 6 hours ago

相关推荐