ฝึกฝนโมเดล Multimodal Embedding & Reranker ด้วย Sentence Transformers

ในโลกของปัญญาประดิษฐ์ที่ก้าวหน้าอย่างรวดเร็ว โมเดลภาษาขนาดใหญ่ (Large Language Models - LLMs) ได้แสดงศักยภาพอันน่าทึ่งในการทำความเข้าใจและสร้างข้อความ แต่การทำความเข้าใจโลกจริงนั้นไม่ได้จำกัดอยู่แค่ข้อความเท่านั้น การผสมผสานข้อมูลจากหลายรูปแบบ (Multimodal) เช่น ข้อความ รูปภาพ วิดีโอ และเสียง กลายเป็นกุญแจสำคัญในการสร้างระบบ AI ที่มีความสามารถรอบด้านมากขึ้น

ในบทความนี้ เราจะเจาะลึกถึงวิธีการฝึกฝนและปรับแต่ง (Finetune) โมเดล Multimodal Embedding และ Reranker โดยใช้ไลบรารี Sentence Transformers ซึ่งเป็นเครื่องมือที่ทรงพลังและใช้งานง่ายสำหรับการสร้างโมเดลสำหรับการค้นหาข้อมูลและการเปรียบเทียบความคล้ายคลึงกันของข้อความ

ทำไมต้อง Multimodal?

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

ลองนึกภาพงาน Visual Document Retrieval (VDR) ที่มีเป้าหมายคือการค้นหาหน้าเอกสารที่เกี่ยวข้อง (เช่น รูปภาพที่มีแผนภูมิ ตาราง และการจัดวางที่สมบูรณ์) จากชุดเอกสารจำนวนมาก โดยอาศัยคำค้นหาที่เป็นข้อความ งานนี้ต้องการความเข้าใจที่ลึกซึ้งเกี่ยวกับโครงสร้างเอกสาร แผนภูมิ ตาราง และข้อความ ซึ่งแตกต่างจากการจับคู่รูปภาพรองเท้ากับคำอธิบายสินค้า

การปรับแต่งโมเดลด้วยข้อมูลเฉพาะทาง (Domain-specific data) จะช่วยให้โมเดลเรียนรู้รูปแบบที่ซับซ้อนเหล่านั้นได้ ในการทดลองของเรา การปรับแต่งโมเดลทำให้ประสิทธิภาพ NDCG@10 เพิ่มขึ้นจาก 0.888 เป็น 0.947 ซึ่งสูงกว่าโมเดล Multimodal อื่นๆ ที่เราทดสอบทั้งหมด รวมถึงโมเดลที่มีขนาดใหญ่กว่าถึง 4 เท่า

องค์ประกอบสำคัญในการฝึกฝนโมเดล Multimodal

การฝึกฝนโมเดล Sentence Transformer แบบ Multimodal นั้นมีองค์ประกอบหลักเหมือนกับการฝึกฝนโมเดลแบบ Text-only ดังนี้:

  • Model: โมเดล Multimodal ที่ต้องการฝึกฝนหรือปรับแต่ง
  • Dataset: ข้อมูลที่ใช้สำหรับการฝึกฝนและการประเมินผล
  • Loss Function: ฟังก์ชันที่ใช้วัดประสิทธิภาพของโมเดลและนำทางการปรับปรุง
  • Training Arguments (Optional): พารามิเตอร์ที่ส่งผลต่อประสิทธิภาพการฝึกฝนและการติดตามผล
  • Evaluator (Optional): เครื่องมือสำหรับประเมินโมเดลก่อน ระหว่าง และหลังการฝึกฝน
  • Trainer: เครื่องมือที่รวบรวมโมเดล ชุดข้อมูล ฟังก์ชัน Loss และองค์ประกอบอื่นๆ เพื่อเริ่มการฝึกฝน

การเลือกและเตรียมโมเดล

โดยทั่วไปแล้ว เรามักจะเลือกปรับแต่งโมเดล Multimodal Embedding ที่มีอยู่แล้ว หรือเริ่มต้นจากโมเดล Vision-Language Model (VLM) ไลบรารี Sentence Transformers จะตรวจจับรูปแบบข้อมูลที่รองรับจาก Processor ของโมเดลโดยอัตโนมัติ

หากต้องการปรับแต่งโมเดล Multimodal Embedding ที่มีอยู่แล้ว (เช่น โมเดลที่มีไฟล์ modules.json) คุณสามารถส่งค่า processorkwargs และ modelkwargs เพื่อควบคุมการประมวลผลล่วงหน้าและการโหลดโมเดลตามลำดับ

ในกรณีที่ต้องการเริ่มต้นจาก VLM Checkpoint ที่ยังไม่เคยถูกฝึกฝนเพื่อสร้าง Embedding มาก่อน Sentence Transformers จะพยายามจดจำสถาปัตยกรรม Infer รูปแบบข้อมูลที่รองรับจาก Processor และตั้งค่า Forward Method และ Output Handling ที่เหมาะสม หากการตรวจจับอัตโนมัติไม่สมบูรณ์แบบสำหรับโมเดลใดโมเดลหนึ่ง คุณสามารถแก้ไขการตั้งค่าในไฟล์ sentencebertconfig.json เพื่อปรับแต่งการตั้งค่า Modality, Forward Methods และการจัดการ Output ได้

การสร้างชุดข้อมูล (Dataset)

สำหรับตัวอย่าง Visual Document Retrieval เราใช้ชุดข้อมูล tomaarsen/llamaindex-vdr-en-train-preprocessed ซึ่งเป็นชุดข้อมูลภาษาอังกฤษที่ผ่านการประมวลผลล่วงหน้าแล้ว โดยชุดข้อมูลต้นฉบับถูกเผยแพร่พร้อมกับบทความ Visual Document Retrieval Goes Multilingual โดย LlamaIndex ประกอบด้วยตัวอย่าง Query-Image แบบหลายภาษาประมาณ 500,000 รายการ ที่รวบรวมจาก PDF สาธารณะบนอินเทอร์เน็ต พร้อม Query ที่สร้างขึ้นสังเคราะห์โดยใช้ VLM

รูปแบบของชุดข้อมูลจะต้องสอดคล้องกับ Loss Function ที่เลือก โดยมีกฎดังนี้:

  • หาก Loss Function ต้องการ Label ชุดข้อมูลต้องมีคอลัมน์ชื่อ "label" หรือ "score"
  • คอลัมน์อื่นๆ นอกเหนือจาก "label" หรือ "score" จะถือเป็น Inputs และจำนวนคอลัมน์ต้องตรงกับจำนวน Inputs ที่ถูกต้องสำหรับ Loss Function ที่เลือก

สำหรับชุดข้อมูล Multimodal Inputs สามารถประกอบด้วย:

  • Image: รูปภาพ PIL, พาธไฟล์, URL หรือ Array ของ NumPy/Torch
  • Audio: พาธไฟล์, Array ของ NumPy/Torch หรือ Dict ที่มีคีย์ "array" และ "sampling_rate"
  • Video: พาธไฟล์, Array ของ NumPy/Torch หรือ Dict ที่มีคีย์ "array" และ "video_metadata"
  • **Mult

ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/train-multimodal-sentence-transformers

ฝึกฝนโมเดล Multimodal Embedding & Reranker ด้วย Sentence Transformersในโลกของปัญญาประดิษฐ์ที่ก้าวหน้าอย่างรวดเร็ว โมเดลภาษาขนาดใหญ่ (Large Language Models - LLMs) ได้แสดงศักยภาพอันน่าทึ่งในการทำความเข้าใจและสร้างข้อความ แต่การทำความเข้าใจโลกจริงนั้นไม่ได้จำกัดอยู่แค่ข้อความเท่านั้น การผสมผสานข้อมูลจากหลายรูปแบบ (Multimodal) เช่น ข้อความ รูปภาพ วิดีโอ และเสียง กลายเป็นกุญแจสำคัญในการสร้างระบบ AI ที่มีความสามารถรอบด้านมากขึ้นในบทความนี้ เราจะเจาะลึกถึงวิธีการฝึกฝนและปรับแต่ง (Finetune) โมเดล Multimodal Embedding และ Reranker โดยใช้ไลบรารี Sentence Transformers ซึ่งเป็นเครื่องมือที่ทรงพลังและใช้งานง่ายสำหรับการสร้างโมเดลสำหรับการค้นหาข้อมูลและการเปรียบเทียบความคล้ายคลึงกันของข้อความทำไมต้อง Multimodal?โมเดลทั่วไปที่ถูกฝึกฝนบนข้อมูลที่หลากหลายมักจะทำงานได้ดีในหลายๆ ด้าน เช่น การจับคู่รูปภาพกับข้อความ การตอบคำถามเชิงภาพ หรือการทำความเข้าใจเอกสาร แต่ความเก่งกาจนี้มักแลกมาด้วยการที่โมเดลนั้นไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับงานเฉพาะทางใดงานหนึ่งลองนึกภาพงาน Visual Document Retrieval (VDR) ที่มีเป้าหมายคือการค้นหาหน้าเอกสารที่เกี่ยวข้อง (เช่น รูปภาพที่มีแผนภูมิ ตาราง และการจัดวางที่สมบูรณ์) จากชุดเอกสารจำนวนมาก โดยอาศัยคำค้นหาที่เป็นข้อความ งานนี้ต้องการความเข้าใจที่ลึกซึ้งเกี่ยวกับโครงสร้างเอกสาร แผนภูมิ ตาราง และข้อความ ซึ่งแตกต่างจากการจับคู่รูปภาพรองเท้ากับคำอธิบายสินค้าการปรับแต่งโมเดลด้วยข้อมูลเฉพาะทาง (Domain-specific data) จะช่วยให้โมเดลเรียนรู้รูปแบบที่ซับซ้อนเหล่านั้นได้ ในการทดลองของเรา การปรับแต่งโมเดลทำให้ประสิทธิภาพ NDCG@10 เพิ่มขึ้นจาก 0.888 เป็น 0.947 ซึ่งสูงกว่าโมเดล Multimodal อื่นๆ ที่เราทดสอบทั้งหมด รวมถึงโมเดลที่มีขนาดใหญ่กว่าถึง 4 เท่าองค์ประกอบสำคัญในการฝึกฝนโมเดล Multimodalการฝึกฝนโมเดล Sentence Transformer แบบ Multimodal นั้นมีองค์ประกอบหลักเหมือนกับการฝึกฝนโมเดลแบบ Text-only ดังนี้:Model: โมเดล Multimodal ที่ต้องการฝึกฝนหรือปรับแต่งDataset: ข้อมูลที่ใช้สำหรับการฝึกฝนและการประเมินผลLoss Function: ฟังก์ชันที่ใช้วัดประสิทธิภาพของโมเดลและนำทางการปรับปรุงTraining Arguments (Optional): พารามิเตอร์ที่ส่งผลต่อประสิทธิภาพการฝึกฝนและการติดตามผลEvaluator (Optional): เครื่องมือสำหรับประเมินโมเดลก่อน ระหว่าง และหลังการฝึกฝนTrainer: เครื่องมือที่รวบรวมโมเดล ชุดข้อมูล ฟังก์ชัน Loss และองค์ประกอบอื่นๆ เพื่อเริ่มการฝึกฝนการเลือกและเตรียมโมเดลโดยทั่วไปแล้ว เรามักจะเลือกปรับแต่งโมเดล Multimodal Embedding ที่มีอยู่แล้ว หรือเริ่มต้นจากโมเดล Vision-Language Model (VLM) ไลบรารี Sentence Transformers จะตรวจจับรูปแบบข้อมูลที่รองรับจาก Processor ของโมเดลโดยอัตโนมัติหากต้องการปรับแต่งโมเดล Multimodal Embedding ที่มีอยู่แล้ว (เช่น โมเดลที่มีไฟล์ modules.json) คุณสามารถส่งค่า processorkwargs และ modelkwargs เพื่อควบคุมการประมวลผลล่วงหน้าและการโหลดโมเดลตามลำดับในกรณีที่ต้องการเริ่มต้นจาก VLM Checkpoint ที่ยังไม่เคยถูกฝึกฝนเพื่อสร้าง Embedding มาก่อน Sentence Transformers จะพยายามจดจำสถาปัตยกรรม Infer รูปแบบข้อมูลที่รองรับจาก Processor และตั้งค่า Forward Method และ Output Handling ที่เหมาะสม หากการตรวจจับอัตโนมัติไม่สมบูรณ์แบบสำหรับโมเดลใดโมเดลหนึ่ง คุณสามารถแก้ไขการตั้งค่าในไฟล์ sentencebertconfig.json เพื่อปรับแต่งการตั้งค่า Modality, Forward Methods และการจัดการ Output ได้การสร้างชุดข้อมูล (Dataset)สำหรับตัวอย่าง Visual Document Retrieval เราใช้ชุดข้อมูล tomaarsen/llamaindex-vdr-en-train-preprocessed ซึ่งเป็นชุดข้อมูลภาษาอังกฤษที่ผ่านการประมวลผลล่วงหน้าแล้ว โดยชุดข้อมูลต้นฉบับถูกเผยแพร่พร้อมกับบทความ Visual Document Retrieval Goes Multilingual โดย LlamaIndex ประกอบด้วยตัวอย่าง Query-Image แบบหลายภาษาประมาณ 500,000 รายการ ที่รวบรวมจาก PDF สาธารณะบนอินเทอร์เน็ต พร้อม Query ที่สร้างขึ้นสังเคราะห์โดยใช้ VLMรูปแบบของชุดข้อมูลจะต้องสอดคล้องกับ Loss Function ที่เลือก โดยมีกฎดังนี้:หาก Loss Function ต้องการ Label ชุดข้อมูลต้องมีคอลัมน์ชื่อ "label" หรือ "score"คอลัมน์อื่นๆ นอกเหนือจาก "label" หรือ "score" จะถือเป็น Inputs และจำนวนคอลัมน์ต้องตรงกับจำนวน Inputs ที่ถูกต้องสำหรับ Loss Function ที่เลือกสำหรับชุดข้อมูล Multimodal Inputs สามารถประกอบด้วย:Image: รูปภาพ PIL, พาธไฟล์, URL หรือ Array ของ NumPy/TorchAudio: พาธไฟล์, Array ของ NumPy/Torch หรือ Dict ที่มีคีย์ "array" และ "sampling_rate"Video: พาธไฟล์, Array ของ NumPy/Torch หรือ Dict ที่มีคีย์ "array" และ "video_metadata"**Multhttps://huggingface.co/blog/train-multimodal-sentence-transformers
Shared content
HUGGINGFACE.CO
Training and Finetuning Multimodal Embedding & Reranker Models with Sentence Transformers
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
1 Comments 0 Shares 669 Views 0 Reviews