ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ปรับแต่งโมเดลภาษาของหม้อแปลงไฟฟ้าเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker

ปัจจุบันมีการใช้ภาษาประมาณ 7,000 ภาษา แม้จะมีความพยายามในปลายศตวรรษที่ 19 ในการประดิษฐ์ภาษาที่สร้างขึ้นเช่น Volapük หรือ Esperanto แต่ก็ไม่มีสัญญาณของการรวมเป็นหนึ่ง ผู้คนยังคงเลือกสร้างภาษาใหม่ (นึกถึงตัวละครในภาพยนตร์ที่คุณชื่นชอบที่พูดภาษาคลิงออน Dothraki หรือ Elvish)

ทุกวันนี้ ตัวอย่างการประมวลผลภาษาธรรมชาติ (NLP) ถูกครอบงำโดยภาษาอังกฤษ ซึ่งเป็นภาษาแม่เพียง 5% ของประชากรมนุษย์และพูดเพียง 17%

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

ในโพสต์นี้ เราสรุปความท้าทายของภาษาทรัพยากรต่ำและทดลองกับแนวทางการแก้ปัญหาต่างๆ ที่ครอบคลุมกว่า 100 ภาษาโดยใช้ตัวแปลง Hugging Face บน Amazon SageMaker

เราปรับแต่งโมเดลภาษาต่างๆ ที่ใช้หม้อแปลงไฟฟ้าที่ได้รับการฝึกฝนมาล่วงหน้าสำหรับงานคำถามและคำตอบ เราใช้ภาษาตุรกีในตัวอย่าง แต่คุณสามารถใช้วิธีนี้กับภาษาอื่นๆ ที่รองรับได้ เรามุ่งเน้นที่ BERT [1] ตัวแปร, เนื่องจากคุณลักษณะที่ยอดเยี่ยมของ BERT คือสถาปัตยกรรมแบบครบวงจรสำหรับงานต่างๆ

เราแสดงให้เห็นประโยชน์หลายประการของการใช้หม้อแปลง Hugging Face บน อเมซอน SageMakerเช่น การฝึกอบรมและการทดลองในวงกว้าง เพิ่มประสิทธิภาพการทำงานและประหยัดต้นทุน

ภาพรวมของ NLP

มีการพัฒนาที่สำคัญหลายประการใน NLP ตั้งแต่ปี 2017 การเกิดขึ้นของสถาปัตยกรรมการเรียนรู้เชิงลึก เช่น หม้อแปลง [2] เทคนิคการเรียนรู้แบบไม่มีผู้ดูแลเพื่อฝึกแบบจำลองดังกล่าวบนชุดข้อมูลขนาดใหญ่มาก และการเรียนรู้แบบถ่ายโอนได้ปรับปรุงสถานะของ ศิลปะในการเข้าใจภาษาธรรมชาติ การมาถึงของฮับแบบจำลองที่ได้รับการฝึกอบรมล่วงหน้าทำให้การเข้าถึงความรู้โดยรวมของชุมชน NLP เป็นไปอย่างเป็นประชาธิปไตยมากขึ้น ทำให้ไม่จำเป็นต้องเริ่มต้นจากศูนย์

โมเดลภาษาคือโมเดล NLP ที่เรียนรู้การคาดเดาคำถัดไป (หรือคำที่ปกปิด) ตามลำดับ ความงามที่แท้จริงของโมเดลภาษาที่เป็นจุดเริ่มต้นมีสามเท่า: ประการแรก การวิจัยแสดงให้เห็นว่าโมเดลภาษาที่ได้รับการฝึกจากข้อมูลคลังข้อความขนาดใหญ่จะเรียนรู้ความหมายของคำที่ซับซ้อนกว่าวิธีการก่อนหน้านี้ ตัวอย่างเช่น เพื่อให้สามารถคาดเดาคำถัดไปในประโยคได้ โมเดลภาษาจะต้องเข้าใจบริบท ความหมาย และไวยากรณ์ได้ดี ประการที่สอง ในการฝึกโมเดลภาษา ข้อมูลที่มีป้ายกำกับ—ซึ่งหายากและมีราคาแพง— ไม่จำเป็นระหว่างการเตรียมการฝึกอบรม นี่เป็นสิ่งสำคัญเนื่องจากข้อมูลข้อความที่ไม่มีป้ายกำกับจำนวนมหาศาลถูกเปิดเผยต่อสาธารณะบนเว็บในหลายภาษา ประการที่สาม แสดงให้เห็นว่าเมื่อแบบจำลองภาษาฉลาดพอที่จะคาดเดาคำถัดไปสำหรับประโยคที่กำหนด การทำงาน NLP อื่นๆ ได้ค่อนข้างง่าย เช่น การวิเคราะห์ความคิดเห็นหรือการตอบคำถามด้วยข้อมูลที่มีป้ายกำกับเพียงเล็กน้อย เนื่องจากการปรับแต่งแบบละเอียดจะนำกลับมาใช้ใหม่ การแสดงจากแบบจำลองภาษาที่ผ่านการฝึกอบรมมาแล้ว [3]

บริการ NLP ที่มีการจัดการเต็มรูปแบบยังช่วยเร่งการนำ NLP ไปใช้อีกด้วย เข้าใจ Amazon เป็นบริการที่มีการจัดการเต็มรูปแบบที่ช่วยให้การวิเคราะห์ข้อความสามารถดึงข้อมูลเชิงลึกจากเนื้อหาของเอกสาร และสนับสนุนภาษาต่างๆ Amazon Comprehend รองรับการจัดประเภทแบบกำหนดเองและการรู้จำเอนทิตีแบบกำหนดเอง และช่วยให้คุณสร้างแบบจำลอง NLP แบบกำหนดเองที่เจาะจงกับความต้องการของคุณ โดยไม่จำเป็นต้องมีความเชี่ยวชาญ ML ใดๆ

ความท้าทายและวิธีแก้ปัญหาสำหรับภาษาทรัพยากรต่ำ

ความท้าทายหลักสำหรับภาษาจำนวนมากคือ พวกเขามีข้อมูลค่อนข้างน้อยสำหรับการฝึกอบรม เหล่านี้เรียกว่า ภาษาทรัพยากรต่ำ. กระดาษ m-BERT [4] และกระดาษ XLM-R [7] อ้างถึงภาษาอูรดูและสวาฮิลีว่าเป็นภาษาทรัพยากรต่ำ

รูปต่อไปนี้ระบุรหัส ISO ของกว่า 80 ภาษา และความแตกต่างของขนาด (ในมาตราส่วนบันทึก) ระหว่างสองขั้นตอนก่อนการฝึกอบรมที่สำคัญ [7] ในวิกิพีเดีย (สีส้ม) มีเพียง 18 ภาษาที่มีมากกว่า 1 ล้านบทความและ 52 ภาษาที่มีมากกว่า 1,000 บทความ แต่ 164 ภาษามีเพียง 1–10,000 บทความเท่านั้น [9] CommonCrawl corpus (สีน้ำเงิน) เพิ่มปริมาณข้อมูลสำหรับภาษาทรัพยากรต่ำโดยลำดับความสำคัญสองระดับ อย่างไรก็ตาม ภาษาเหล่านี้ยังค่อนข้างเล็กเมื่อเทียบกับภาษาที่มีทรัพยากรสูง เช่น อังกฤษ รัสเซีย หรือเยอรมัน

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ในแง่ของหมายเลขบทความ Wikipedia ภาษาตุรกีเป็นอีกภาษาหนึ่งในกลุ่มเดียวกันซึ่งมีบทความมากกว่า 100,000 บทความ (28) ร่วมกับ Urdu (54) เมื่อเทียบกับภาษาอูรดู ภาษาตุรกีจะถือเป็นภาษากลางทรัพยากร ภาษาตุรกีมีลักษณะเฉพาะที่น่าสนใจ ซึ่งอาจทำให้แบบจำลองภาษามีประสิทธิภาพมากขึ้นโดยการสร้างความท้าทายบางประการในด้านภาษาศาสตร์และการสร้างโทเค็น มันเป็นภาษาผสม มีลำดับคำฟรี สัณฐานวิทยาที่ซับซ้อน หรือกาลที่ไม่มีภาษาอังกฤษเทียบเท่า วลีที่ประกอบด้วยคำหลายคำในภาษาต่างๆ เช่น ภาษาอังกฤษ สามารถแสดงได้ด้วยรูปแบบคำเดียว ดังแสดงในตัวอย่างต่อไปนี้

ตุรกี ภาษาอังกฤษ
แมว แคท
แมวเลอ แคทs
แมวGilเลอ ครอบครัวของ แมว
แมววัน เป็นของ ครอบครัวแมว
แมวleştirebileceklerimizdenmişçesineyken เมื่อดูเหมือนว่าสิ่งนั้นคือสิ่งที่เราสามารถทำได้ แมว

แนวทางแก้ไขปัญหาหลักสองวิธีคือแบบจำลองเฉพาะภาษาหรือแบบจำลองหลายภาษา (มีหรือไม่มีการควบคุมข้ามภาษา):

  • โมเดลภาษาเดียว – วิธีแรกคือการใช้ตัวแปร BERT กับภาษาเป้าหมายเฉพาะ ยิ่งมีข้อมูลการฝึกอบรมมากเท่าใด ประสิทธิภาพของโมเดลก็จะยิ่งดีขึ้นเท่านั้น
  • โมเดลภาษาที่สวมหน้ากากหลายภาษา – อีกวิธีหนึ่งคือการฝึกโมเดลหม้อแปลงขนาดใหญ่ล่วงหน้าในหลายภาษา การสร้างแบบจำลองภาษาหลายภาษามีจุดมุ่งหมายเพื่อแก้ปัญหาการขาดความท้าทายด้านข้อมูลสำหรับภาษาทรัพยากรต่ำโดยการฝึกอบรมล่วงหน้าในภาษาจำนวนมาก เพื่อให้งาน NLP ที่เรียนรู้จากภาษาหนึ่งสามารถถ่ายโอนไปยังภาษาอื่นได้ โมเดลภาษามาสก์หลายภาษา (MLM) ได้ผลักดันความล้ำหน้าในงานทำความเข้าใจข้ามภาษา สองตัวอย่างคือ:
    • BERT . หลายภาษา – โมเดล BERT หลายภาษาได้รับการฝึกฝนในภาษาต่างๆ 104 ภาษาโดยใช้คลังข้อมูล Wikipedia อย่างไรก็ตาม มีการแสดงให้เห็นแล้วว่าสามารถสรุปได้ดีเฉพาะในโครงสร้างทางภาษาที่คล้ายคลึงกันและลักษณะการจำแนกประเภท (เช่น ภาษาที่มีลำดับคำใกล้เคียงกัน) หลายภาษาของมันลดลงโดยเฉพาะอย่างยิ่งสำหรับภาษาที่มีลำดับคำต่างกัน (เช่น หัวเรื่อง/วัตถุ/กริยา) [4]
    • XLM-R – โมเดลภาษาข้ามภาษา (XLM) ได้รับการฝึกอบรมโดยมีวัตถุประสงค์ข้ามภาษาโดยใช้ชุดข้อมูลคู่ขนาน (ข้อความเดียวกันในสองภาษาที่แตกต่างกัน) หรือไม่มีวัตถุประสงค์ข้ามภาษาโดยใช้ชุดข้อมูลเดียว [6] การวิจัยแสดงให้เห็นว่าภาษาที่ใช้ทรัพยากรต่ำได้ประโยชน์จากการปรับขนาดเป็นภาษาต่างๆ มากขึ้น XLM-RoBERTa เป็นโมเดลที่ใช้หม้อแปลงไฟฟ้าซึ่งได้รับแรงบันดาลใจจาก RoBERTa [5] และจุดเริ่มต้นของมันคือข้อเสนอที่ BERT และ XLM หลายภาษาไม่ได้รับการปรับแต่ง มีการฝึกอบรมใน 100 ภาษาโดยใช้ทั้งคลังข้อมูล Wikipedia และ CommonCrawl ดังนั้นปริมาณข้อมูลการฝึกอบรมสำหรับภาษาทรัพยากรต่ำจึงมีขนาดใหญ่กว่าประมาณสองอันดับเมื่อเทียบกับ m-BERT [7]

ความท้าทายอีกประการของแบบจำลองภาษาหลายภาษาสำหรับภาษาที่ใช้ทรัพยากรต่ำคือขนาดคำศัพท์และการสร้างโทเค็น เนื่องจากทุกภาษาใช้คำศัพท์ที่ใช้ร่วมกันเดียวกันในแบบจำลองภาษาหลายภาษา จึงมีการแลกเปลี่ยนระหว่างการเพิ่มขนาดคำศัพท์ (ซึ่งเพิ่มข้อกำหนดในการคำนวณ) กับการลด (คำที่ไม่มีอยู่ในคำศัพท์จะถูกทำเครื่องหมายว่าไม่รู้จัก หรือใช้อักขระ แทนที่จะใช้คำพูดเพราะโทเค็นจะไม่สนใจโครงสร้างใดๆ) อัลกอริธึม tokenization word-piece รวมประโยชน์ของทั้งสองวิธี ตัวอย่างเช่น มันจัดการคำที่ไม่อยู่ในคำศัพท์ได้อย่างมีประสิทธิภาพโดยแยกคำออกเป็นคำย่อยจนกว่าจะมีอยู่ในคำศัพท์หรือจนกว่าจะถึงอักขระแต่ละตัว การใช้โทเค็นตามอักขระไม่ได้มีประโยชน์มากนัก ยกเว้นบางภาษา เช่น ภาษาจีน มีเทคนิคเพื่อจัดการกับความท้าทายสำหรับภาษาทรัพยากรต่ำ เช่น การสุ่มตัวอย่างด้วยการกระจายแบบบาง [6]

ตารางต่อไปนี้แสดงให้เห็นว่าโทเคนไนเซอร์ที่ต่างกันสามตัวทำงานอย่างไรสำหรับคำว่า “เคดิเลริ” (หมายถึง “แมวของมัน”) สำหรับงานบางภาษาและ NLP สิ่งนี้จะสร้างความแตกต่างได้ ตัวอย่างเช่น สำหรับงานตอบคำถาม โมเดลจะคืนค่าช่วงของดัชนีโทเค็นเริ่มต้นและดัชนีโทเค็นสิ้นสุด การส่งคืน "kediler" ("cats") หรือ "kedileri" ("แมวของแมว") จะสูญเสียบริบทบางอย่างและนำไปสู่ผลการประเมินที่แตกต่างกันสำหรับเมตริกบางอย่าง

โมเดลฝึกหัด ขนาดคำศัพท์ Tokenization สำหรับ “Kedileri”*
dbmdz/bert-base-turkish-uncased 32,000 ราชสกุล [ซีแอลเอส] แมว ##ผม [ก.ย.]
อินพุต IDs 2 23714 1023 3
bert-base-พูดได้หลายภาษา-uncased 105,879 ราชสกุล [ซีแอลเอส] เกด ##อิเลอร์ ##ผม [ก.ย.]
อินพุต IDs 101 30210 33719 10116 102
deepset/xlm-roberta-base-squad2 250,002 ราชสกุล เก di s
อินพุต IDs 0 1345 428 1341 .
*ในภาษาอังกฤษ: (ของ) แมว

ดังนั้น แม้ว่าภาษาที่ใช้ทรัพยากรต่ำจะได้รับประโยชน์จากแบบจำลองภาษาหลายภาษา แต่การใช้โทเค็นในคำศัพท์ที่ใช้ร่วมกันอาจเพิกเฉยต่อคุณลักษณะทางภาษาบางอย่างสำหรับบางภาษา

ในส่วนถัดไป เราจะเปรียบเทียบสามวิธีโดยปรับแต่งพวกมันสำหรับงานตอบคำถามโดยใช้ชุดข้อมูล QA สำหรับตุรกี: BERTurk [8], BERT หลายภาษา [4] และ XLM-R [7]

ภาพรวมโซลูชัน

ขั้นตอนการทำงานของเรามีดังนี้:

  1. เตรียมชุดข้อมูลใน an สตูดิโอ Amazon SageMaker สภาพแวดล้อมของโน้ตบุ๊กและอัปโหลดไปที่ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (อเมซอน เอส3).
  2. เริ่มงานการฝึกอบรมแบบคู่ขนานบนคอนเทนเนอร์การเรียนรู้เชิงลึกของการฝึกอบรม SageMaker โดยจัดเตรียมสคริปต์การปรับแต่งอย่างละเอียด
  3. รวบรวมข้อมูลเมตาจากการทดสอบแต่ละครั้ง
  4. เปรียบเทียบผลลัพธ์และระบุรูปแบบที่เหมาะสมที่สุด

ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมโซลูชัน

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโน้ตบุ๊ก Studio โปรดดูที่ เจาะลึกสถาปัตยกรรมโน้ตบุ๊กของ Amazon SageMaker Studio. สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการรวม Hugging Face กับ SageMaker โปรดดูที่ AWS และ Hugging Face ร่วมมือกันเพื่อลดความซับซ้อนและเร่งการนำโมเดลการประมวลผลภาษาธรรมชาติมาใช้.

เตรียมชุดข้อมูล

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

data_files = {}
data_files["train"] = 'data/train.json'
data_files["validation"] = 'data/val.json' ds = load_dataset("json", data_files=data_files) print("Number of features in dataset: n Train = {}, n Validation = {}".format(len(ds['train']), len(ds['validation'])))

มีตัวอย่างประมาณ 9,000 ตัวอย่าง

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ชุดข้อมูลอินพุตถูกแปลงเล็กน้อยให้อยู่ในรูปแบบที่คาดไว้โดยโมเดลที่ฝึกอบรมล่วงหน้า และมีคอลัมน์ต่อไปนี้:

df = pd.DataFrame(ds['train'])
df.sample(1)

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
คำแปลภาษาอังกฤษของผลลัพธ์มีดังนี้:

  • สิ่งแวดล้อม – Resit Emre Kongar (เกิด 13 ตุลาคม พ.ศ. 1941 อิสตันบูล) นักสังคมวิทยาชาวตุรกี ศาสตราจารย์
  • คำถาม – ชื่อวิชาการของ Emre Kongar คืออะไร?
  • คำตอบ - ศาสตราจารย์

สคริปต์ปรับแต่ง

ไลบรารี Hugging Face Transformers มีโค้ดตัวอย่างเพื่อปรับแต่งโมเดลสำหรับงานตอบคำถามที่เรียกว่า run_qa.py. รหัสต่อไปนี้เริ่มต้นผู้ฝึกสอน:

 # Initialize our Trainer trainer = QuestionAnsweringTrainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset, eval_examples=eval_examples, tokenizer=tokenizer, data_collator=data_collator, post_process_function=post_processing_function, compute_metrics=compute_metrics, )

มาทบทวนการสร้างบล็อคในระดับสูงกัน

tokenizer

สคริปต์โหลดตัวสร้างโทเค็นโดยใช้ AutoTokenizer ชั้นเรียน AutoTokenizer class ดูแลการส่งคืน tokenizer ที่ถูกต้องซึ่งสอดคล้องกับรุ่น:

tokenizer = AutoTokenizer.from_pretrained( model_args.model_name_or_path, cache_dir=model_args.cache_dir, use_fast=True, revision=model_args.model_revision, use_auth_token=None, )

ต่อไปนี้คือตัวอย่างการทำงานของ tokenizer:

from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("deepset/xlm-roberta-base-squad2") input_ids = tokenizer.encode('İstanbulun en popüler hayvanı hangisidir? Kedileri', return_tensors="pt")
tokens = tokenizer('İstanbulun en popüler hayvanı hangisidir? Kedileri').tokens()

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

รุ่น

สคริปต์โหลดโมเดล AutoModel ชั้นเรียน (เช่น AutoModelForQuestionAnswering) สร้างคลาสโดยตรงด้วยน้ำหนัก การกำหนดค่า และคำศัพท์ของสถาปัตยกรรมที่เกี่ยวข้อง โดยให้ชื่อและเส้นทางไปยังโมเดลที่ฝึกไว้ล่วงหน้า ต้องขอบคุณสิ่งที่เป็นนามธรรมโดย Hugging Face คุณสามารถเปลี่ยนไปใช้รุ่นอื่นได้อย่างง่ายดายโดยใช้รหัสเดียวกัน เพียงแค่ระบุชื่อรุ่น ดูโค้ดตัวอย่างต่อไปนี้:

 model = AutoModelForQuestionAnswering.from_pretrained( model_args.model_name_or_path, config=config, cache_dir=model_args.cache_dir, revision=model_args.model_revision, )

การประมวลผลล่วงหน้าและการฝึกอบรม

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

ป้อนข้อมูลฟิลด์ชุดข้อมูล ฟิลด์ชุดข้อมูลการฝึกอบรมที่ประมวลผลล่วงหน้าสำหรับการตอบคำถามผู้ฝึกสอน
id input_ids
ชื่อเรื่อง Attention_mask
สิ่งแวดล้อม start_positions
คำถาม end_positions
คำตอบ { answer_start, answer_text } .

การประเมินผล

พื้นที่ compute_metrics() วิธีดูแลการคำนวณเมตริก เราใช้เมตริกยอดนิยมต่อไปนี้สำหรับงานตอบคำถาม:

  • คู่ที่เหมาะสม – วัดเปอร์เซ็นต์ของการคาดคะเนที่ตรงกับคำตอบของความจริงพื้นๆ ข้อใดข้อหนึ่ง
  • คะแนน F1 – วัดค่าเฉลี่ยคาบเกี่ยวกันระหว่างการทำนายและคำตอบของความจริงพื้นๆ คะแนน F1 เป็นค่าเฉลี่ยฮาร์โมนิกของความแม่นยำและการเรียกคืน:
    • ความแม่นยำ – อัตราส่วนของจำนวนคำที่แบ่งปันต่อจำนวนคำทั้งหมดในการทำนาย
    • จำ – อัตราส่วนของจำนวนคำที่แบ่งปันกับจำนวนคำทั้งหมดในความจริงพื้นฐาน

จัดการการฝึกอบรมเกี่ยวกับ SageMaker

การตั้งค่าและจัดการสภาพแวดล้อมการเรียนรู้ของเครื่อง (ML) แบบกำหนดเองอาจใช้เวลานานและยุ่งยาก กับ คอนเทนเนอร์การเรียนรู้เชิงลึกของ AWS (DLC) สำหรับไลบรารี Hugging Face Transformers เรามีสิทธิ์เข้าถึงเฟรมเวิร์กการเรียนรู้เชิงลึกที่บรรจุไว้ล่วงหน้าและปรับให้เหมาะสม ซึ่งทำให้ง่ายต่อการเรียกใช้สคริปต์ของเราในงานฝึกอบรมหลายงานด้วยโค้ดเพิ่มเติมเพียงเล็กน้อย

เราเพียงแค่ต้องใช้ ตัวประมาณการกอดใบหน้า มีอยู่ใน SageMaker Python SDK พร้อมอินพุตต่อไปนี้:

# Trial configuration
config['model'] = 'deepset/xlm-roberta-base-squad2'
config['instance_type'] = 'ml.p3.16xlarge'
config['instance_count'] = 2 # Define the distribution parameters in the HuggingFace Estimator config['distribution'] = {'smdistributed':{'dataparallel':{ 'enabled': True }}}
trial_configs.append(config) # We can specify a training script that is stored in a GitHub repository as the entry point for our Estimator, # so we don’t have to download the scripts locally.
git_config = {'repo': 'https://github.com/huggingface/transformers.git'} hyperparameters_qa={ 'model_name_or_path': config['model'], 'train_file': '/opt/ml/input/data/train/train.json', 'validation_file': '/opt/ml/input/data/val/val.json', 'do_train': True, 'do_eval': True, 'fp16': True, 'per_device_train_batch_size': 16, 'per_device_eval_batch_size': 16, 'num_train_epochs': 2, 'max_seq_length': 384, 'pad_to_max_length': True, 'doc_stride': 128, 'output_dir': '/opt/ml/model' } huggingface_estimator = HuggingFace(entry_point='run_qa.py', source_dir='./examples/pytorch/question-answering', git_config=git_config, instance_type=config['instance_type'], instance_count=config['instance_count'], role=role, transformers_version='4.12.3', pytorch_version='1.9.1', py_version='py38', distribution=config['distribution'], hyperparameters=hyperparameters_qa, metric_definitions=metric_definitions, enable_sagemaker_metrics=True,) nlp_training_job_name = f"NLPjob-{model}-{instance}-{int(time.time())}" training_input_path = f's3://{sagemaker_session_bucket}/{s3_prefix_qa}/' test_input_path = f's3://{sagemaker_session_bucket}/{s3_prefix_qa}/' huggingface_estimator.fit( inputs={'train': training_input_path, 'val': test_input_path}, job_name=nlp_training_job_name, experiment_config={ "ExperimentName": nlp_experiment.experiment_name, "TrialName": nlp_trial.trial_name, "TrialComponentDisplayName": nlp_trial.trial_name,}, wait=False, )

ประเมินผล

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

  • แบบจำลองภาษาเดียว – รูปแบบที่ได้รับการฝึกฝนมาล่วงหน้าซึ่งได้รับการปรับแต่งอย่างละเอียดในข้อความตอบคำถามภาษาตุรกีเรียกว่า bert-base-turkish-uncased [8]. ได้คะแนน F1 ที่ 75.63 และคะแนนการจับคู่ที่ตรงกันทั้งหมด 56.17 ในเวลาเพียงสองยุคและด้วยรายการที่มีป้ายกำกับ 9,000 รายการ อย่างไรก็ตาม แนวทางนี้ไม่เหมาะสำหรับภาษาทรัพยากรต่ำเมื่อไม่มีโมเดลภาษาที่ผ่านการฝึกอบรมมาก่อน หรือมีข้อมูลเพียงเล็กน้อยสำหรับการฝึกตั้งแต่เริ่มต้น
  • แบบจำลองภาษาหลายภาษาพร้อม BERT . หลายภาษา – รุ่นพรีเทรน เรียกว่า bert-base-พูดได้หลายภาษา-uncased. กระดาษ BERT หลายภาษา [4] ได้แสดงให้เห็นว่าสามารถสรุปได้ดีในภาษาต่างๆ เมื่อเทียบกับรุ่นที่ใช้ภาษาเดียว มันทำงานได้แย่กว่า (คะแนน F1 71.73 ตรงทั้งหมด 50:45) แต่โปรดทราบว่าโมเดลนี้รองรับภาษาอื่น ๆ กว่า 100 ภาษา ทำให้มีที่ว่างน้อยลงสำหรับการแสดงภาษาตุรกี
  • โมเดลหลายภาษาพร้อม XLM-R – รุ่นพรีเทรน เรียกว่า xlm-roberta-base-squad2. กระดาษ XLM-R แสดงให้เห็นว่าเป็นไปได้ที่จะมีแบบจำลองขนาดใหญ่เพียงตัวเดียวสำหรับกว่า 100 ภาษาโดยไม่ลดทอนประสิทธิภาพในแต่ละภาษา [7] สำหรับงานตอบคำถามภาษาตุรกีนั้น มีประสิทธิภาพดีกว่าคะแนน BERT หลายภาษาและ BERT F1 ในภาษาเดียว 5% และ 2% ตามลำดับ (คะแนน F1 77.14 ตรงกันทุกประการ 56.39)

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

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

การทดลองเพิ่มเติม

สมุดบันทึกที่ให้มามีตัวอย่างการทดลองเพิ่มเติม

SageMaker มีอินสแตนซ์การฝึกอบรมหลากหลายประเภท เราปรับแต่งโมเดล XLM-R อย่างละเอียดบน p3.2xlarge (GPU: Nvidia V100 GPU, สถาปัตยกรรม GPU: Volta (2017)), p3.16xlarge (GPU: 8 Nvidia V100 GPUs) และ g4dn.xlarge (GPU: Nvidia T4 GPU, สถาปัตยกรรม GPU: Turing (2018)) และสังเกตสิ่งต่อไปนี้:

  • ระยะเวลาการฝึกอบรม – จากการทดลองของเรา โมเดล XLM-R ใช้เวลาประมาณ 24 นาทีในการฝึกบน p3.2xlarge และ 30 นาทีบน g4dn.xlarge (นานกว่าประมาณ 23%) เรายังดำเนินการปรับละเอียดแบบกระจายบนอินสแตนซ์ p3.16xlarge สองอินสแตนซ์ และเวลาการฝึกลดลงเหลือ 10 นาที สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการฝึกอบรมแบบกระจายของแบบจำลองที่ใช้หม้อแปลงบน SageMaker โปรดดูที่ กระจายการปรับแต่งแบบจำลอง BERT ขนาดใหญ่สำหรับงานตอบคำถามโดยใช้ Hugging Face Transformers บน Amazon SageMaker.
  • ค่าอบรม – เราใช้ AWS Pricing API เพื่อดึงราคาตามต้องการของ SageMaker เพื่อคำนวณได้ทันที จากการทดลองของเรา การฝึกอบรมมีค่าใช้จ่ายประมาณ 1.58 เหรียญสหรัฐสำหรับ p3.2xlarge และลดลงประมาณสี่เท่าสำหรับ g4dn.xlarge (0.37 เหรียญสหรัฐ) การฝึกอบรมแบบกระจายบนอินสแตนซ์ p3.16xlarge สองอินสแตนซ์โดยใช้ GPU 16 ตัวมีราคา $9.68

โดยสรุป แม้ว่า g4dn.xlarge จะเป็นเครื่องที่มีราคาถูกที่สุด แต่ก็ใช้เวลาในการฝึกฝนนานกว่าประเภทอินสแตนซ์ที่ทรงพลังที่สุดที่เราทดลองด้วยประมาณสามเท่า (p3.16xlarge สองตัว) คุณสามารถเลือกประเภทอินสแตนซ์การฝึกอบรม SageMaker ได้หลากหลายประเภท ทั้งนี้ขึ้นอยู่กับลำดับความสำคัญของโปรเจ็กต์ของคุณ

สรุป

ในโพสต์นี้ เราสำรวจการปรับโมเดลภาษาที่ใช้หม้อแปลงไฟฟ้าล่วงหน้าที่ได้รับการฝึกฝนมาอย่างดีสำหรับงานตอบคำถามสำหรับภาษากลางทรัพยากร (ในกรณีนี้คือ ภาษาตุรกี) คุณสามารถใช้แนวทางนี้กับภาษาอื่นๆ กว่า 100 ภาษาโดยใช้แบบจำลองเดียว ในการเขียน การขยายแบบจำลองเพื่อให้ครอบคลุมภาษาทั้งหมด 7,000 ภาษาทั่วโลกยังคงเป็นสิ่งต้องห้าม แต่ขอบเขตของ NLP เปิดโอกาสให้เราเปิดโลกทัศน์ให้กว้างขึ้น

ภาษาเป็นวิธีการหลักในการสื่อสารของมนุษย์ และเป็นวิธีการสื่อสารค่านิยมและแบ่งปันความงดงามของมรดกทางวัฒนธรรม ความหลากหลายทางภาษาช่วยเสริมสร้างการเจรจาระหว่างวัฒนธรรม และสร้างสังคมที่ครอบคลุม

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

Hugging Face ผสานรวมกับ SageMaker เพื่อช่วยให้นักวิทยาศาสตร์ด้านข้อมูลพัฒนา ฝึกฝน และปรับแต่งโมเดล NLP ที่ล้ำสมัยได้รวดเร็วและง่ายดายยิ่งขึ้น เราแสดงให้เห็นประโยชน์หลายประการของการใช้หม้อแปลง Hugging Face บน Amazon SageMaker เช่น การฝึกอบรมและการทดลองตามขนาด และเพิ่มประสิทธิภาพการทำงานและประหยัดต้นทุน

คุณสามารถทดลองกับงาน NLP ในภาษาที่คุณต้องการได้ใน SageMaker ในทุกภูมิภาคของ AWS ที่ SageMaker พร้อมให้บริการ ตัวอย่างรหัสสมุดบันทึกมีอยู่ใน GitHub.

หากต้องการเรียนรู้วิธีที่ Amazon SageMaker Training Compiler สามารถเร่งการฝึกอบรมโมเดลการเรียนรู้เชิงลึกได้มากถึง 50% โปรดดูที่ ใหม่ – ขอแนะนำ SageMaker Training Compiler.

ผู้เขียนขอแสดงความขอบคุณอย่างสุดซึ้งต่อ Mariano Kamp และ Emily Webber สำหรับการทบทวนร่างและให้คำแนะนำ

อ้างอิง

  1. J. Devlin et al., “BERT: Pre-Training of Deep Bidirectional Transformers for Language Understanding”, (2018)
  2. A. Vaswani et al. “ความสนใจคือสิ่งที่คุณต้องการ” (2017)
  3. J. Howard และ S. Ruder, “การปรับรูปแบบภาษาสากลอย่างละเอียดสำหรับการจำแนกประเภทข้อความ”, (2018)
  4. T. Pires et al., “BERT หลายภาษาเป็นอย่างไร”, (2019)
  5. Y. Liu et al., “RoBERTa: แนวทางก่อนการฝึกอบรม BERT ที่ปรับให้เหมาะสมอย่างแข็งแกร่ง”, (2019)
  6. G. Lample และ A. Conneau “Cross-Lingual Language Model Pretraining”, (2019)
  7. A. Conneau et al., “การเรียนรู้การเป็นตัวแทนข้ามภาษาแบบไม่มีผู้ดูแลตามขนาด”, (2019)
  8. สเตฟาน ชเวเตอร์. BERTurk – รุ่น BERT สำหรับตุรกี (2020)
  9. สถิติ Wiki หลายภาษา https://en.wikipedia.org/wiki/Wikipedia:Multilingual_statistics

เกี่ยวกับผู้เขียน

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.อาร์นาฟ แคร์ เป็น Principal Solutions Architect สำหรับบริการทางการเงินระดับโลกที่ AWS เป้าหมายหลักของเขาคือการช่วยให้สถาบันการเงินสร้างและออกแบบแอปพลิเคชัน Analytics และ Machine Learning ในระบบคลาวด์ Arnav สำเร็จการศึกษาระดับปริญญาโทด้านปัญญาประดิษฐ์จากมหาวิทยาลัยเอดินบะระ และมีประสบการณ์ในอุตสาหกรรม 18 ปี ตั้งแต่บริษัทสตาร์ทอัพขนาดเล็กที่เขาก่อตั้งไปจนถึงองค์กรขนาดใหญ่ เช่น Nokia และ Bank of America นอกเวลางาน อาร์นาฟชอบใช้เวลากับลูกสาวสองคน หาร้านกาแฟอิสระใหม่ๆ อ่านหนังสือ และท่องเที่ยว คุณสามารถหาฉันได้ที่ LinkedIn และในเซอร์รีย์ สหราชอาณาจักรในชีวิตจริง

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ฮาซัน-บาศรี อากิรมัก (BSc และ MSc ในสาขาวิศวกรรมคอมพิวเตอร์และ MBA สำหรับผู้บริหารใน Graduate School of Business) เป็นสถาปนิกโซลูชันอาวุโสที่ Amazon Web Services เขาเป็นนักเทคโนโลยีธุรกิจที่ให้คำแนะนำลูกค้ากลุ่มองค์กร ความเชี่ยวชาญพิเศษของเขาคือการออกแบบสถาปัตยกรรมและกรณีธุรกิจบนระบบประมวลผลข้อมูลขนาดใหญ่และโซลูชันแมชชีนเลิร์นนิง Hasan ได้ส่งมอบการพัฒนาธุรกิจ การบูรณาการระบบ การจัดการโปรแกรมสำหรับลูกค้าในยุโรป ตะวันออกกลาง และแอฟริกา ตั้งแต่ปี 2016 เขาได้ให้คำปรึกษาแก่ผู้ประกอบการหลายร้อยรายในโครงการบ่มเพาะสตาร์ทอัพ pro-bono

ปรับแต่งโมเดลภาษาของ Transformer อย่างละเอียดเพื่อความหลากหลายทางภาษาด้วย Hugging Face บน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ไฮโกะ ฮ็อตซ์ เป็นสถาปนิกโซลูชันอาวุโสสำหรับ AI & Machine Learning และเป็นผู้นำชุมชน Natural Language Processing (NLP) ภายใน AWS ก่อนหน้าที่จะรับตำแหน่งนี้ เขาเป็นหัวหน้าฝ่ายวิทยาศาสตร์ข้อมูลสำหรับฝ่ายบริการลูกค้าในสหภาพยุโรปของ Amazon Heiko ช่วยให้ลูกค้าของเราประสบความสำเร็จในการเดินทาง AI/ML บน AWS และได้ทำงานร่วมกับองค์กรในหลายอุตสาหกรรม รวมถึงการประกันภัย บริการทางการเงิน สื่อและความบันเทิง การดูแลสุขภาพ ยูทิลิตี้ และการผลิต ในเวลาว่าง Heiko เดินทางให้มากที่สุด

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS