Ollama เปิดตัวเอนจินใหม่สำหรับโมเดลมัลติโหมด
(ollama.com)- Ollama เริ่มรองรับโมเดลมัลติโหมด (ข้อความ+ภาพ) ผ่าน เอนจินใหม่
- รองรับโมเดลวิชวลมัลติโหมดหลากหลาย เช่น Llama 4 Scout และ Gemma 3 ทำให้สามารถถาม-ตอบโดยผสานภาพและข้อความเข้าด้วยกันได้
- เอนจินใหม่นี้มีความสามารถด้าน การเพิ่มความเป็นโมดูลของโมเดล, การปรับปรุงความแม่นยำ, การจัดการหน่วยความจำอย่างมีประสิทธิภาพ
- มี ประสิทธิภาพการอนุมานที่รวดเร็ว และการปรับแต่งให้เหมาะกับฮาร์ดแวร์ผ่าน image caching และการใช้ฮาร์ดแวร์เมทาดาทา
- ในอนาคตมีแผนขยายฟีเจอร์เพิ่มเติมอีกหลายด้าน เช่น การรองรับคอนเท็กซ์ที่ยาวขึ้น, tool calling และสตรีมมิง
การรองรับโมเดลมัลติโหมดของ Ollama
Ollama รองรับโมเดลวิชันมัลติโหมดสมัยใหม่ที่จัดการทั้งภาพและข้อความร่วมกัน ผ่านการนำเอนจินมัลติโหมดใหม่มาใช้
ความเข้าใจและการอนุมานมัลติโหมดแบบครอบคลุม
Llama 4 Scout
- Ollama รองรับ Llama 4 Scout (พารามิเตอร์ 109 พันล้าน, โมเดล mixture-of-experts)
- ตัวอย่างเช่น สามารถตั้งคำถามที่อิงตำแหน่งในเฟรมวิดีโอได้
- เช่น ตรวจจับลักษณะต่างๆ ของภาพได้ ไม่ว่าจะเป็นอาคารเฉพาะ จุดเด่นของสภาพแวดล้อม หรือข้อมูลพื้นหลัง
- จากนั้นยังสามารถถามต่อเนื่องได้อย่างเป็นธรรมชาติ
- เช่น "จากอาคารนี้ไป Stanford ไกลแค่ไหน?", "เดินทางอย่างไรดีที่สุด?" และให้ข้อมูลที่แม่นยำได้
- ให้คำตอบที่สอดคล้องกับสถานการณ์จริง เช่น วิธีเดินทางหลายแบบ เส้นทาง และเวลาโดยประมาณ
Gemma 3
- Gemma 3 สามารถรับภาพหลายภาพพร้อมกัน และวิเคราะห์ความสัมพันธ์ระหว่างภาพเหล่านั้นได้
- เช่น ระบุได้อย่างรวดเร็วว่าในภาพ 4 ภาพมีพืชหรือสัตว์ชนิดใดปรากฏร่วมกัน มีฉากบางแบบอยู่หรือไม่ หรือมีสถานการณ์แปลกพิเศษหรือไม่
- ตัวอย่างแนวสนุกคือ วิเคราะห์ว่าใครจะชนะหากเห็นลามะกับโลมากำลังชกมวย โดยพิจารณาคุณลักษณะของแต่ละตัวและความเคลื่อนไหว
การรู้จำและวิเคราะห์เอกสาร
Qwen 2.5 VL
- โมเดล Qwen 2.5 VL ถูกใช้กับงานรู้จำตัวอักษร (OCR) และการดึงข้อมูลข้อความเฉพาะจากภายในภาพ
- ตัวอย่างการใช้งานจริง เช่น ดึงข้อมูลจากเช็ค หรือแปลข้อความแนวตั้งภาษาจีนอย่างคำกลอนคู่รับฤดูใบไม้ผลิเป็นภาษาอังกฤษ
คุณลักษณะของเอนจินมัลติโหมดของ Ollama
- ที่ผ่านมานั้น Ollama พึ่งพาโปรเจกต์ ggml-org/llama.cpp ในการรองรับโมเดล และพัฒนาโดยเน้นที่การใช้งานและ ความสามารถในการพกพาของโมเดล
- ช่วงหลังมีสถาบันวิจัยหลายแห่งเปิดตัวโมเดลมัลติโหมด ทำให้ Ollama เสริมความแข็งแกร่งให้เอนจินของตนเองเพื่อรองรับโมเดลได้กว้างขึ้นตามเป้าหมาย
- เอนจินใหม่นี้ปฏิบัติต่อโมเดลมัลติโหมดในฐานะองค์ประกอบอิสระและเป็นพลเมืองชั้นหนึ่ง พร้อมเพิ่มการมีส่วนร่วมจากพาร์ตเนอร์และชุมชน
ความหมายของพัฒนาการของเอนจิน
- ยกระดับ ความน่าเชื่อถือและความแม่นยำ ของการอนุมานแบบโลคัลของ Ollama และวางรากฐานสำหรับการรองรับงานมัลติโหมดที่หลากหลายในอนาคต (เช่น เสียง, การสร้างภาพ, การสร้างวิดีโอ, การรองรับคอนเท็กซ์ยาว, การใช้เครื่องมือที่ดีขึ้น เป็นต้น)
ความเป็นโมดูลของโมเดล
- ออกแบบให้ “ขอบเขตผลกระทบ” ของแต่ละโมเดลแยกจากกัน เพื่อเพิ่มความน่าเชื่อถือและช่วยให้นักพัฒนาผสานโมเดลใหม่ได้ง่าย
- ggml/llama.cpp เดิมรองรับเฉพาะโมเดลข้อความล้วน ส่วนมัลติโหมดนั้น text decoder และ vision encoder แยกกันและทำงานแยกต่างหาก
- ภาพต้องถูกฝังเป็น embedding ในอัลกอริทึมวิชันก่อนส่งต่อไปยังโมเดลข้อความ จึงทำให้สามารถทำลอจิกเฉพาะของแต่ละโมเดลให้กระชับได้
- ภายใน Ollama โมเดลสามารถแยก embedding projection layer และโครงสร้างที่สอดคล้องกับระบบการฝึกเฉพาะของโมเดลได้เอง
- ผู้สร้างโมเดลจึงโฟกัสกับโมเดลและการฝึกของตนเองได้ โดยไม่ต้องเพิ่มแพตช์เสริมหรือเงื่อนไขแยกซับซ้อน
- ตัวอย่างสถาปัตยกรรมของบางโมเดลสามารถดูได้ใน GitHub repository ของ Ollama
การปรับปรุงความแม่นยำ
- ภาพขนาดใหญ่มีจำนวนโทเค็นมาก จนอาจเกินขนาดแบตช์ได้
- หากภาพเกินแบตช์ ข้อมูลตำแหน่งอาจเสียหายได้
- Ollama เพิ่มเมทาดาทาเพิ่มเติมระหว่างการประมวลผลภาพเพื่อยกระดับความแม่นยำ
- มีการจัดการรายละเอียด เช่น การใช้ causal attention หรือไม่, การแบ่งแบตช์ของ image embedding และการดูแลขอบเขต
- หากจุดแบ่งไม่เหมาะสม คุณภาพของผลลัพธ์อาจลดลง จึงกำหนดเกณฑ์ตามงานวิจัยของแต่ละโมเดล
- แม้เครื่องมืออนุมานแบบโลคัลอื่นจะใช้แนวทางต่างกันไป แต่ Ollama รับประกันคุณภาพด้วยการประมวลผลที่แม่นยำตามการออกแบบและวิธีฝึกของโมเดล
การเพิ่มประสิทธิภาพการจัดการหน่วยความจำ
- Image caching: ภาพที่ประมวลผลแล้วหนึ่งครั้งจะถูกเก็บไว้ในหน่วยความจำต่อเนื่อง ทำให้การประมวลผลพรอมป์ต์ถัดไปเร็วขึ้น ตราบใดที่ยังไม่ถึงขีดจำกัดหน่วยความจำ ภาพจะยังคงถูกเก็บไว้
- การคาดการณ์หน่วยความจำและการปรับปรุง KV cache: ร่วมมือกับผู้ผลิตฮาร์ดแวร์และพาร์ตเนอร์ด้าน OS เพื่อรับรู้ฮาร์ดแวร์เมทาดาทาอย่างแม่นยำและเพิ่มประสิทธิภาพการใช้หน่วยความจำ
- มีการตรวจสอบตามเวอร์ชันเฟิร์มแวร์ และทำ benchmarking สำหรับความสามารถใหม่ๆ
- Ollama ปรับแต่ง causal attention แยกเป็นรายโมเดล ไม่ใช่ในระดับกลุ่ม และให้การตั้งค่าที่เหมาะกับแต่ละโมเดล
- ตัวอย่าง:
- Gemma 3 ของ Google DeepMind: ใช้ sliding window attention เพื่อจัดสรรคอนเท็กซ์เพียงบางส่วน และนำหน่วยความจำที่เหลือไปใช้กับการอนุมานพร้อมกัน เป็นต้น
- Llama 4 Scout, Maverick ฯลฯ ของ Meta: รองรับ chunked attention, 2D rotary embedding และการรองรับคอนเท็กซ์ยาวของโมเดล mixture-of-experts
- ตัวอย่าง:
- ในกรณีของโมเดลที่ยังติดตั้งชั้น attention ไม่ครบถ้วน อาจยัง ‘ทำงาน’ ได้ แต่ระยะยาวอาจทำให้คุณภาพผลลัพธ์ลดลงหรือเกิดผลลัพธ์ผิดปกติได้
แผนในอนาคต
- รองรับความยาวคอนเท็กซ์ที่มากขึ้น
- เสริมความสามารถด้านการอนุมาน/การคิด
- รองรับ tool calling และการตอบกลับแบบสตรีมมิง
- ขยายความสามารถในการใช้งานคอมพิวเตอร์โดยตรง
คำขอบคุณ
- องค์กรและนักวิจัยที่มีส่วนร่วมในการพัฒนาโมเดล
- ขอขอบคุณห้องแล็บและสมาชิกชุมชนจำนวนมากที่ทุ่มเทกับการพัฒนาโมเดลวิชัน เช่น Google DeepMind, Meta Llama, Alibaba Qwen, Mistral, IBM Granite
- GGML
- เทนเซอร์ไลบรารีของทีม GGML เป็นองค์ประกอบหลักที่ขับเคลื่อนเอนจินอนุมานของ Ollama โดยสามารถเข้าถึง GGML ได้โดยตรงจาก Go เพื่อนำไปใช้กับ custom inference graph และการออกแบบสถาปัตยกรรมโมเดลที่ซับซ้อน
- พาร์ตเนอร์ด้านฮาร์ดแวร์
- ขอขอบคุณพาร์ตเนอร์ด้านฮาร์ดแวร์อย่าง NVIDIA, AMD, Qualcomm, Intel, Microsoft ที่ร่วมมือกันยกระดับประสิทธิภาพการอนุมานบนอุปกรณ์หลากหลายประเภท
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
llama.cppใส่ความสามารถด้าน vision ที่เสถียรลงในบรাঞ্চหลักได้สำเร็จหลังจากพยายามกันมานาน จนในที่สุดออกดอกออกผล คาดว่า Ollama เองก็น่าจะเตรียมฟีเจอร์นี้มานานแล้ว และมองว่าการตัดสินใจแยกตัวออกจากการพึ่งพาllama.cppในระยะแรกเพื่อเดินหน้าด้วยตัวเองเป็นการตัดสินใจที่สมเหตุสมผลllama.cppเองก็เป็นโปรเจ็กต์ที่ยอดเยี่ยมมาก ถ้าสร้างเอนจินมาทดแทนได้ก็อยากเห็นตัวอย่างแนวทางการทำงาน คาดว่าไลบรารีเทนเซอร์ GGML น่าจะมีบทบาทสำคัญ และเข้าใจว่าโครงสร้างน่าจะเป็นการเขียนการทำงานของโมเดลโดยตรงในภาษา Go ผ่าน FFI (การเรียกฟังก์ชันข้ามภาษา) เช่น การทำ Gemma3 พร้อมใช้ความสามารถของ GGML มองว่ารายละเอียดทางเทคนิคแบบนี้ควรถูกอธิบายอย่างชัดเจนกว่านี้ในบล็อกทางการ*llamaในโลก LLM ชวนสับสนมาก มีโปรเจ็กต์ชื่อคล้าย llama เต็มไปหมดจนยิ่งทำให้สับสนllama.cppเองllama.cppอย่างเหมาะสม และถึงขั้นมีบางโปรเจ็กต์ที่ใช้llama.cppโดยตรงแต่กลับทำให้คนเข้าใจว่าเครดิตเป็นของ Ollama อีกทั้ง Ollama เองก็ไม่ได้มีการมีส่วนร่วมโดยตรงเสมอไป (แม้จะไม่ใช่ข้อบังคับ) แต่มีฟอร์กที่ดูแลกันภายใน ทำให้คนที่สนใจสามารถนำโค้ดไปใช้ต่อแบบ cherry-pick ได้เมื่ออยากใช้llama.cppอย่างเหมาะสมมาเป็นเวลานานเป็นปัญหา แม้ปัจจุบันจะเริ่มเปิดเผยเครดิตมากขึ้นบ้างแล้วllama.cpp, lmstudio, ramalama ต่างก็พอมองเห็นภาพสถานะของตนได้ชัดกว่า และ ramalama เองก็มีส่วนช่วยโปรเจ็กต์โอเพนซอร์สที่เกี่ยวข้องอยู่มาก พร้อมแชร์ลิงก์ GitHub ไว้ให้อ้างอิงllama.cppแต่กลับไม่แสดงออกหรือยอมรับเรื่องนั้นอย่างตรงไปตรงมา