รูปที่ 1: ภาพประกอบการตัดแต่งคำศัพท์เป็นภาษาเกาหลีและฝรั่งเศส
การตัดคำศัพท์ (VT) เป็นเทคนิคการบีบอัดแบบจำลอง ซึ่งจะลดคำศัพท์ LM หลายภาษาให้เป็นภาษาเป้าหมายโดยการลบโทเค็นที่ไม่เกี่ยวข้องออกจากคำศัพท์ (ดูรูปที่ 1) พื้นที่เก็บข้อมูลนี้มี vocabtrimmer
python-library ซึ่งจะลบโทเค็นที่ไม่เกี่ยวข้องออกจากคำศัพท์ LM หลายภาษาสำหรับภาษาเป้าหมาย
รูปที่ 2: อัตราส่วนของเมทริกซ์การฝังต่อจำนวนพารามิเตอร์โมเดลทั้งหมดสำหรับ LM หลายภาษาแต่ละรายการและเมทริกซ์การฝังหลัง VT ที่มีคำศัพท์ 60 อันดับแรก
แรงจูงใจเบื้องหลัง VT คือ LM ที่พูดได้หลายภาษามีคำศัพท์มากมายที่จะครอบคลุมทุกภาษา ซึ่งส่งผลให้มีโมเดลขนาดใหญ่ (ดูรูปที่ 2) อย่างไรก็ตาม เราไม่ต้องการคำศัพท์เหล่านั้นจำนวนมาก เมื่อเราปรับแต่ง LM หลายภาษาในงานที่ใช้ภาษาเดียวในทางปฏิบัติ ดังนั้นเราจึงสามารถลบคำศัพท์ที่ไม่ได้ใช้ออกไปเพื่อลดขนาดโมเดลได้
ตามทฤษฎี VT สามารถบีบอัด LM หลายภาษาที่มีอยู่เพื่อสร้าง LM ภาษาเดียวในภาษาใดๆ ที่ครอบคลุมโดย LM หลายภาษา ในการทดลองของเรา เราแสดงให้เห็นว่า VT สามารถรักษาประสิทธิภาพดั้งเดิมของ LM หลายภาษาได้ ในขณะที่มีขนาดเล็กกว่า (โดยทั่วไปประมาณ 50% ของขนาดคำศัพท์ดั้งเดิมก็เพียงพอแล้ว) กว่า LM หลายภาษาดั้งเดิม การประเมินจะดำเนินการผ่านงาน NLP สี่งาน (งานสร้าง 2 งานและงานจำแนกงาน 2 งาน) ท่ามกลาง LM หลายภาษาที่ใช้กันอย่างแพร่หลายสี่งานในเจ็ดภาษา สุดท้ายนี้ เราแสดงให้เห็นว่าวิธีการนี้สามารถรักษาสิ่งที่ดีที่สุดของโลกทั้งแบบภาษาเดียวและหลายภาษาโดยการรักษาขนาดที่เล็กไว้เป็นแบบจำลองภาษาเดียวโดยไม่จำเป็นต้องฝึกอบรมใหม่โดยเฉพาะ และแม้แต่จำกัดอคติทางสังคมที่อาจเป็นอันตราย โปรดตรวจสอบผลการทดลองเหล่านั้นรวมถึงรายละเอียดทางเทคนิคในรายงานของเรา "การบีบอัดโมเดลภาษาหลายภาษาที่มีประสิทธิภาพผ่านการตัดคำศัพท์, 2023" หากต้องการทำซ้ำผลลัพธ์ในรายงานของเรา โปรดตรวจสอบที่นี่
ข่าว: บทความของเราเรื่อง "An Efficient Multilingual Language Model Compression via Vocabulary Trimming, 2023" ได้รับการยอมรับจากผลการวิจัยของ EMNLP 2023
มาติดตั้ง lmqg
ผ่าน pip ก่อน
pip install vocabtrimmer
vocabtrimmer
รูปที่ 3: การเปรียบเทียบระหว่าง Pre-FT และ Post-FT ในตัวอย่างการปรับแต่งงานในภาษาฝรั่งเศส
ตามค่าเริ่มต้น VT อาศัย mC4 เพื่อค้นหาชุดโทเค็นเฉพาะภาษาและความถี่ของแต่ละโทเค็น การใช้งานจริงของ VT คือนำไปใช้กับ LM หลายภาษาก่อนการปรับแต่งแบบละเอียด (pre-FT VT) หรือหลังการปรับแบบละเอียด (หลัง FT VT) โดยทั่วไปแล้ว ทั้งสองควรทำงานได้ดี แต่หลัง VT จะมีประสิทธิภาพมากกว่าและเหมาะสม หากคุณมีแบบจำลองอยู่แล้ว เนื่องจากไม่จำเป็นต้องมีการฝึกอบรมเพิ่มเติม มิฉะนั้น pre-FT VT จะเป็นตัวเลือกเนื่องจากอาจช่วยลดเวลาในการปรับแต่งโมเดลได้ ดูการเปรียบเทียบก่อน/หลัง FT VT ในเอกสารของเรา
vocabtrimmer
มีอินเทอร์เฟซบรรทัดคำสั่งต่อไปนี้เพื่อตัดคำศัพท์ LM หลายภาษา
vocabtrimmer-trimming -m MODEL -l LANGUAGE -p PATH_TO_SAVE [-v TARGET_VOCAB_SIZE] [--repo-id REPO_ID]
arguments:
-m, --model, model name on huggingface or path to local model
-l, --language, language code of tokens to keep
-p, --path-to-save, directly to save model
-v, --target-vocab-size, [optinoal] vocab size after mining
--repo-id, [optinoal] huggingface repo id to push after trimming
คำสั่งต่อไปนี้จะตัดคำศัพท์ของ google/mt5-small
เป็นภาษาฝรั่งเศสด้วยคำศัพท์ยอดนิยมกว่า 60,000 คำ
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
ขนาดคำศัพท์ของ LM หลายภาษามักจะอยู่ที่ 250k (XLM-R, mBART, mT5) และเราแนะนำให้ตั้งค่าขนาดคำศัพท์เป้าหมายเป็น 60k ซึ่งเป็นขนาดคำศัพท์ที่มีประสิทธิภาพ ขนาดคำศัพท์ที่น้อยกว่า 60k อาจทำให้ประสิทธิภาพการทำงานลดลง แต่สามารถรักษาประสิทธิภาพเดิมได้ในบางกรณี (ตรวจสอบเอกสารของเรา) หากไม่ได้ระบุขนาดคำศัพท์เป้าหมาย จะใช้คำศัพท์ทั้งหมดที่ปรากฏในชุดข้อมูล mC4 หรือคลังข้อมูลเป้าหมายที่ระบุ
vocabtrimmer
จัดเตรียม API เพื่อตัด LM หลายภาษาผ่าน python คำสั่งต่อไปนี้จะตัดคำศัพท์ของ google/mt5-small
เป็นภาษาฝรั่งเศสด้วยคำศัพท์ยอดนิยมกว่า 60,000 คำ
import vocabtrimmer
trimmer = vocabtrimmer . VocabTrimmer ( "google/mt5-small" )
trimmer . trim_vocab (
path_to_save = "ckpts/mt5-small-trimmed-fr-60000" ,
language = "fr" ,
target_vocab_size = 60000 )
โปรดอ้างอิงเอกสารต่อไปนี้หากคุณใช้ทรัพยากรใดๆ และดูโค้ดเพื่อสร้างแบบจำลองหากจำเป็น
@inproceedings{ushio2023efficient,
title = "An Efficient Multilingual Language Model Compression through Vocabulary Trimming",
author = "Ushio, Asahi and
Zhou, Yi and
Camacho-Collados, Jose",
booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing (EMNLP): Findings",
month = Dec,
year = "2023",
address = "",
publisher = "Association for Computational Linguistics",
}