แม้ว่าวิธีการทำความเข้าใจตารางที่ใช้ LLM ในปัจจุบันจะก้าวหน้าไปมาก แต่ก็อาศัยสมมติฐานที่ว่าตารางที่กำหนดจะต้องถูกแปลงเป็นลำดับข้อความบางอย่าง (เช่น Markdown หรือ HTML) เพื่อทำหน้าที่เป็นอินพุตโมเดล อย่างไรก็ตาม เป็นเรื่องยากที่จะเข้าถึงการแสดงตารางข้อความคุณภาพสูงในสถานการณ์จริงบางอย่าง เช่น เอกสารที่สแกนและภาพหน้าจอของหน้าเว็บ และรูปภาพตารางก็สามารถเข้าถึงได้ง่ายกว่ามาก ดังนั้น วิธีทำความเข้าใจตารางโดยตรงโดยใช้ข้อมูลภาพที่เข้าใจง่ายจึงเป็นความท้าทายที่สำคัญและเร่งด่วนสำหรับการพัฒนาแอปพลิเคชันที่ใช้งานได้จริงมากขึ้น
เมื่อเผชิญกับความท้าทายข้างต้น เราเสนอปัญหาการทำความเข้าใจตารางแบบหลายรูปแบบ โดยที่แบบจำลองจำเป็นต้องสร้างการตอบสนองที่ถูกต้องต่อคำขอที่เกี่ยวข้องกับตารางที่แตกต่างกัน (เช่น คำถาม) ในลักษณะ end-to-end ตามภาพตาราง ในทำนองเดียวกัน เราสร้าง MMTab ซึ่งเป็นชุดข้อมูลโอเพ่นซอร์สขนาดใหญ่ชุดแรกสำหรับปัญหาการทำความเข้าใจตารางหลายรูปแบบ ซึ่งสามารถรองรับทั้งการฝึกอบรมและการประเมิน MLLM ทั่วไปต่อการทำความเข้าใจตารางหลายรูปแบบ จากชุดข้อมูล MMTab ที่คัดสรรมา เราได้พัฒนา MLLM แบบตารางอเนกประสงค์ชื่อ Table-LLaVA พร้อมด้วยกระบวนทัศน์การฝึกอบรมสองขั้นตอนที่ได้รับการปรับปรุงของ LLaVA v1.5 Table-LLaVA เหนือกว่าเกณฑ์มาตรฐาน MLLM ที่แข็งแกร่งในเกณฑ์มาตรฐานที่ถือเข้า 17 รายการและเกณฑ์มาตรฐานที่ถือไว้ 6 รายการ และยังแข่งขันกับ GPT-4V อันทรงพลังในเกณฑ์มาตรฐาน 14 รายการภายใต้ชุดย่อยของตัวอย่างทดสอบ รูปด้านขวาแสดงการเปรียบเทียบตามสัญชาตญาณของ Table LLaVA 7B และ MLLM ที่มีอยู่ในเกณฑ์มาตรฐานการทำความเข้าใจตารางแบบหลายรูปแบบ
เราสร้าง MMTab โดยใช้ชุดข้อมูลตารางที่เปิดเผยต่อสาธารณะ 14 ชุดจาก 8 โดเมน เราออกแบบสคริปต์อย่างระมัดระวังเพื่อแปลงตารางข้อความต้นฉบับในชุดข้อมูลเหล่านี้เป็นภาพตารางที่เน้นความครอบคลุมของโครงสร้างและสไตล์ของตารางในวงกว้าง และแปลงตัวอย่างเฉพาะงานทั้งหมดให้เป็นตัวอย่างการปรับแต่งคำสั่งแบบหลายรูปแบบด้วยรูปแบบรวมของ <table image, input request, output response>
ชุดข้อมูลผลลัพธ์ประกอบด้วยสามส่วนและสามารถดาวน์โหลดได้จากชุดข้อมูล Hugging Face ในระหว่างการสร้างชุดข้อมูล มีการใช้การเพิ่มข้อมูลในหลายระดับ (เช่น ระดับตาราง ระดับงาน) เพื่อปรับปรุงความหลากหลายของข้อมูลให้ดียิ่งขึ้น
การแยกชุดข้อมูล | #ภาพตาราง | #ตัวอย่าง |
---|---|---|
MMTab-pre | 97ก | ตัวอย่างการจดจำตาราง 150K สำหรับการฝึกอบรมล่วงหน้า |
MMTab-คำสั่ง | 82K | ตัวอย่าง 2.32,000 รายการจาก 14 งานตามตารางสำหรับการปรับแต่งคำสั่ง |
MMTab-ประเมินผล | 23ก | ตัวอย่าง 45K จากการวัดประสิทธิภาพที่จัดขึ้น 17 รายการ และตัวอย่าง 4K จากการวัดประสิทธิภาพที่จัดขึ้น 7 รายการสำหรับการประเมิน |
ตัวอย่างชุดข้อมูลแสดงในรูปต่อไปนี้ และตัวอย่างเพิ่มเติมแสดงในภาคผนวก A ในเอกสารต้นฉบับ
ตาราง LLaVA เป็นไปตามสถาปัตยกรรม LLaVA v1.5 โดยมี CLIP-ViT-L-336px เป็นตัวเข้ารหัสภาพ (ความละเอียดภาพ 336*336), Vicuna-v1.5-7B หรือ Vicuna-v1.5-13B เป็น LLM พื้นฐานและ MLP สองชั้นเป็นตัวเชื่อมต่อภาษาการมองเห็น จุดตรวจสอบโมเดลที่บันทึกไว้สามารถดาวน์โหลดได้จาก Hugging Face Repository ต่อไปนี้:
เวอร์ชัน | ขนาด | กำหนดการ | ฐาน LLM | ตัวเข้ารหัสการมองเห็น | ชั้นฉายภาพ | จุดตรวจ |
---|---|---|---|---|---|---|
ตาราง LLaVA | 7B | full_finetune-1_epoch | วิคูน่า-v1.5-7B | คลิป-ViT-L-336px | MLP-2x | สเปอร์สโกซีมี่/ตาราง-ลาวา-v1.5-7b |
ตาราง LLaVA | 13B | full_finetune-1_epoch | วิคูน่า-v1.5-13B | คลิป-ViT-L-336px | MLP-2x | สเปอร์สโกซีมี่/ตาราง-ลาวา-v1.5-13b |
pretrained_mm_projector ของ Table LLaVA 7B | 5ม | full_finetune-1_epoch | วิคูน่า-v1.5-7B | คลิป-ViT-L-336px | MLP-2x | SpursgoZmy/table-llava-v1.5-pretrained_mm_projector |
pretrained_mm_projector ของ Table LLaVA 13B | 5ม | full_finetune-1_epoch | วิคูน่า-v1.5-13B | คลิป-ViT-L-336px | MLP-2x | SpursgoZmy/table-llava-v1.5-pretrained_mm_projector |
หมายเหตุ: จุดตรวจสอบ Table-LLaVA ข้างต้นได้รับการบันทึกจากพื้นที่เก็บข้อมูล LLaVA ดั้งเดิม ซึ่งเข้ากันไม่ได้กับ Transformers โดยตรง กล่าวคือ ไม่สามารถโหลดได้โดยตรงในลักษณะเดียวกับ LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. ปัญหานี้ถูกกล่าวถึงในปัญหา GitHub นี้ ฉันจะลองใช้สคริปต์การแปลงที่ให้มาเพื่อทำให้จุดตรวจสอบ Table-LLaVa เข้ากันได้กับ Transformers และอัปโหลดจุดตรวจสอบใหม่ไปยังฮับใหม่ แต่สำหรับตอนนี้ จุดตรวจสามารถโหลดได้เฉพาะกับที่เก็บ LLaVA เช่นนี้ แทนที่จะโหลดโดยตรงจาก HuggingFace ขออภัยในความไม่สะดวกนี้!
เราใช้ฐานโค้ดของ LLaVA v1.5 สำหรับการฝึกโมเดลและการอนุมาน ดังนั้น Table LLaVA จึงสามารถใช้เป็นโมเดล LLaVA v1.5 ปกติได้ และสามารถติดตั้งสภาพแวดล้อมได้ในลักษณะเดียวกัน โปรดทราบว่าโค้ดฐานของเราจะถูกดาวน์โหลดในเดือนธันวาคม 2023 และอาจไม่ใช่เวอร์ชันล่าสุด โปรดดู GitHub LLaVA v1.5 อย่างเป็นทางการสำหรับการอัปเดตล่าสุด
git clone https://github.com/SpursGoZmy/Table-LLaVA.git
cd Table-LLaVA
conda create -n table_llava python=3.10 -y
conda activate table_llava
pip install --upgrade pip # enable PEP 660 support
pip install -e .
การฝึกอบรม Table LLaVA ประกอบด้วยสองขั้นตอน: (1) ขั้นตอนก่อนการฝึกอบรม: ตัวเชื่อมต่อภาษาการมองเห็น (MLP สองชั้น) ได้รับการฝึกอบรมเพื่อเชื่อมต่อตัวเข้ารหัสการมองเห็นที่ได้รับการฝึกฝนล่วงหน้าแบบแช่แข็ง (ViT) กับ LLM ที่ถูกแช่แข็ง (Vicuna v1.5) ; (2) ขั้นตอนการปรับแต่งคำสั่ง: ตัวเชื่อมต่อภาษาการมองเห็นและ LLM พื้นฐานได้รับการฝึกอบรมให้ปฏิบัติตามคำสั่งต่อเนื่องหลายรูปแบบ
ข้อมูลการฝึกอบรมของแต่ละขั้นตอนแสดงไว้ด้านล่าง:
ขั้นตอนการฝึกอบรม | คำอธิบายข้อมูล | ขนาดข้อมูล | ชุดข้อมูลกอดใบหน้า |
---|---|---|---|
การฝึกอบรมล่วงหน้า | ข้อมูลก่อนการฝึก LLaVA-1.5 ดั้งเดิม 558K | 558K | blip_laion_cc_sbu_558k.json |
ข้อมูลการจดจำตาราง 150K (MMTab-pre) | 150K | MMTab-pre_pretrain_data_llava_format_150K.json | |
คำแนะนำ การปรับแต่งอย่างละเอียด | ข้อมูลการปรับแต่ง LLaVA-1.5 ดั้งเดิม 665K | 665K | llava_v1_5_mix665k.json |
ข้อมูลการปรับแต่งคำสั่งต่อเนื่องหลายรูปแบบ 232K ของงานแบบตาราง 14 งาน (คำสั่ง MMTab) | 232K | MMTab-instruct_sft_data_llava_format_232K.json |
ข้อมูลการเตรียมการฝึกและการปรับแต่งคำแนะนำที่ผสานรวมกันในรูปแบบข้อมูล LLaVA สามารถพบได้ในชุดข้อมูล MMTab เช่น enhanced_llava_pretrain_data_708K.json
และ enhanced_llava_sft_data_898K.json
ซึ่งสามารถนำมาใช้โดยตรงในการฝึก Table LLaVA
Table LLaVA ได้รับการฝึกฝนเกี่ยวกับ A800 GPU จำนวน 8 ตัวพร้อมหน่วยความจำ 80GB เราใช้ชุดไฮเปอร์พารามิเตอร์ที่คล้ายกันเป็น LLaVA v1.5 ยกเว้นว่าเราเพิ่มความยาวลำดับสูงสุดจาก 2048 เป็น 2560 เพื่อรองรับลำดับข้อความที่ยาวขึ้น ไฮเปอร์พารามิเตอร์ที่ใช้ในการฝึกล่วงหน้าและการปรับแต่งมีดังต่อไปนี้
เวที | ตุ้มน้ำหนักที่ผ่านการฝึกอบรม | ขนาดแบตช์ทั่วโลก | อัตราการเรียนรู้ | ยุค | ความยาวสูงสุด | น้ำหนักลด | อัตราส่วนการอุ่นเครื่อง | เวที Deepspeed |
---|---|---|---|---|---|---|---|---|
การฝึกอบรมล่วงหน้า | ตัวเชื่อมต่อภาษาวิสัยทัศน์ | 256 | 1e-3 | 1 | 2560 | 0 | 0.03 | ซีโร-2 |
คำแนะนำ การปรับแต่งอย่างละเอียด | LLM พื้นฐานและตัวเชื่อมต่อภาษาการมองเห็น | 128 | 2e-5 | 1 | 2048 | 0 | 0.03 | ซีโร-3 |
images.zip
จากที่นี่ วางไว้ใต้ ./LLaVA-Pretrain/images
แล้วแตกไฟล์MMTab-instruct_table_images_82K.zip
และ MMTab-pre_table_images_part_2_16K.zip
จากชุดข้อมูล MMTab วางไว้ใต้ ./LLaVA-Pretrain/images
images แล้วแตกไฟล์ออกมา เปลี่ยนชื่อ IID_train_image
dir เป็น table_pretrain_part_1
enhanced_llava_pretrain_data_708K.json
จากชุดข้อมูล MMTab ไปที่ ./LLaVA-Pretrain
Pretrain LLaVA-Pretrain
├── images
│ ├── table_pretrain_part_1
| ├── table_pretrain_part_2
| ├── 00453
| ├── 00019
| ├── ...
| └── 00095
└── enhanced_llava_pretrain_data_708K.json
pretrain_table_llava.sh
หากคุณไม่สามารถดาวน์โหลดโมเดล Vicuna v1.5 และ ViT พื้นฐานผ่าน HuggingFace ได้โดยอัตโนมัติ คุณสามารถดาวน์โหลดโมเดลเหล่านี้ได้ด้วยตนเอง และตั้งค่าพารามิเตอร์บรรทัดคำสั่งที่เกี่ยวข้อง ( model_name_or_path
และ vision_tower
) ให้กับพาธโมเดลในเครื่อง เมื่อการฝึกอบรมล่วงหน้าเสร็จสิ้น เครื่องฉายภาพภาษาที่ได้รับการฝึกอบรมจะถูกบันทึกที่ output_dir
ที่ระบุ./LLaVA-Finetune/images
images ที่มีชื่อเป็น coco
, gqa
, ocr_vqa
, textvqa
และ vg
ตามลำดับ ทำตามคำแนะนำจากที่นี่เพื่อดาวน์โหลดรูปภาพจากชุดข้อมูล 5 ชุดเหล่านี้สำหรับการปรับแต่ง LLaVA v1.5 แบบละเอียด วางไฟล์ zip ลงในโฟลเดอร์ที่เกี่ยวข้องแล้วแตกไฟล์ออกMMTab-instruct_table_images_82K.zip
จากชุดข้อมูล MMTab วางไว้ใต้ ./LLaVA-Finetune/images/table_instructV
images/table_instructV แล้วแตกไฟล์ออกมา เปลี่ยนชื่อ IID_train_image
dir ที่เป็นผลลัพธ์เป็น images
enhanced_llava_sft_data_898K.json
จากชุดข้อมูล MMTab ไปที่ . ./LLaVA-Finetune
LLaVA-Finetune
├── images
│ ├── coco
| | └── train2017
| ├── gqa
| | └── images
| ├── ocr_vqa
| | └── images
| ├── textvqa
| | └── train_images
| ├── vg
| | ├── VG_100K
| | └── VG_100K_2
| ├── table_instructV
| | └── images
└── enhanced_llava_sft_data_898K.json
continue_sft_table_llava.sh
ตั้งค่าพารามิเตอร์ pretrain_mm_mlp_adapter
เป็นพาธของโปรเจ็กเตอร์ภาษาวิชั่นที่ผ่านการฝึกอบรมมาแล้ว เช่น ./pretrained_mm_projector/llava-v1.5-7b-with-table-pretrain/mm_projector.bin
โมเดล llava ของตารางที่ผ่านการฝึกอบรมจะถูกบันทึกที่ output_dir
ที่ระบุ ข้อมูลการอนุมานควรถูกจัดเก็บในรูปแบบ jsonl ของ LLaVA แต่ละบรรทัดในไฟล์อินพุตสอดคล้องกับตัวอย่างอินพุต ซึ่งเป็นสตริง JSON (สร้างโดย json.dumps()
) ของ Python dict รูปแบบตัวอย่างควรมีลักษณะดังนี้:
{ "question_id" : "TSD_test_item_17" , # item_id
"image" : "TABMWP_24663.jpg" , # corresponding image file
"text" : "This image displays a table. Could you provide me ..." , # input text
"category" : "TABMWP_for_TSD" # {dataset_name}_for_{task_type}, which can be used to separate data of different benchmarks.
}
สำหรับการอนุมานใน MMTab-eval ให้ดาวน์โหลดตัวอย่างการทดสอบ 49K MMTab-eval ในรูปแบบ jsonl (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) และไฟล์รูปภาพ (MMTab-eval_table_images_23K.zip) จากนั้นสร้างโฟลเดอร์ชื่อ 'LLaVA-Inference' และจัดระเบียบข้อมูลดังนี้:
LLaVA-Inference
├── MMTab-eval_test_data_49K_llava_jsonl_format.jsonl
└── all_test_image
การอนุมานบน multi-GPU: start_multicard_inference.sh
คุณยังสามารถอนุมานข้อมูลของคุณเองได้ อย่าลืมปรับพารามิเตอร์เช่น ' question-file
' (เส้นทางไฟล์อินพุต), ' image-folder
' (เส้นทางโฟลเดอร์รูปภาพ) ใน table_llava_inference.sh
ผลลัพธ์การอนุมาน ( merge.jsonl
) จะถูกจัดเก็บไว้ในพาธของพารามิเตอร์ ' answers-file
' เช่น . ./eval_results/answers/MMTab_eval/table-llava-v1.5-7b/merge.jsonl
ด้วยสคริปต์การอนุมานอย่างเป็นทางการ รูปแบบผลลัพธ์การอนุมานใน merge.jsonl
ควรมีลักษณะดังนี้:
{ 'question_id' : 'TABMWP_8' , # item_id
'prompt' : 'Problem: n Hannah baked cookies each day ...' , # input_prompt
'text' : 'Find the numbers in the table. n n Saturday: ...' , # model_output
'answer_id' : 'jELcxSPcXHBj3xvHfm5r8T' , # answer_id
'model_id' : 'table-llava-7b' , # model_id
'category' : 'TABMWP_for_TQA'
} # item category
สคริปต์การประเมินผลจะถูกจัดเก็บไว้ในโฟลเดอร์ MMTab-eval_evaluation
ขั้นแรก cd MMTab-eval_evaluation
และ pip install -r eval_requirements.txt
เพื่อติดตั้งแพ็คเกจที่จำเป็น เช่น 'Sacrebleu' สำหรับการประเมินผล สำหรับงานการจดจำตาราง เราใช้สคริปต์คำนวณ TEDS ของ PubTabNet สำหรับการประเมินผล จากนั้น ดาวน์โหลดข้อมูลการทดสอบ MMTab-eval (MMTab-eval_test_data_49K.json) และตารางทดสอบ (MMTab-eval_test_tables_23K.json) และใส่ลงในโฟลเดอร์ MMTab-eval_evaluation
พร้อมด้วยผลการอนุมานของ LLaVA ( merge.jsonl
) ใช้สมุดบันทึก MMTab_evalue.ipynb สำหรับการประเมินอัตโนมัติ
สำหรับการประเมินชุดทดสอบ ToTTo คุณจะต้องจัดระเบียบเอาต์พุตโมเดลเป็นไฟล์ txt และอัปโหลดไปยังกระดานผู้นำ ToTTo อย่างเป็นทางการ
LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
ปัญหานี้ถูกกล่าวถึงในฉบับนี้ @misc { zheng2024multimodal ,
title = { Multimodal Table Understanding } ,
author = { Mingyu Zheng and Xinwei Feng and Qingyi Si and Qiaoqiao She and Zheng Lin and Wenbin Jiang and Weiping Wang } ,
year = { 2024 } ,
eprint = { 2406.08100 } ,
archivePrefix = { arXiv } ,
}
}