ขอแนะนำ Packed BERT สำหรับการฝึกอบรมที่เร็วขึ้น 2 เท่าในการประมวลผลภาษาธรรมชาติ

โหนดต้นทาง: 1062065

ขอแนะนำ Packed BERT สำหรับการฝึกอบรมที่เร็วขึ้น 2 เท่าในการประมวลผลภาษาธรรมชาติ

คีย์เวิร์ด: BERT, NLP, หลาม, การฝึกอบรม

ดูอัลกอริธึมการบรรจุใหม่ของ BERT เพื่อการฝึกอบรมที่มีประสิทธิภาพยิ่งขึ้น


By ดร.มาริโอ ไมเคิล เครล, หัวหน้าฝ่ายการเรียนรู้ของเครื่องที่ Graphcore & มาเตจ โคเซค, AI Applications Specialist ที่ Graphcore


ภาพส่วนหัว
รูปภาพโดยผู้เขียน

 

ด้วยการใช้อัลกอริธึมการบรรจุใหม่ เราได้เร่งการประมวลผลภาษาธรรมชาติมากกว่า 2 เท่าขณะฝึก BERT-Large เทคนิคการบรรจุแบบใหม่ของเราช่วยขจัดช่องว่างภายใน ทำให้การคำนวณมีประสิทธิภาพมากขึ้นอย่างเห็นได้ชัด

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

เราแนะนำอัลกอริธึม Non-Negative Least Squares Histogram-Packing (หรือ NNLSHP) ที่มีประสิทธิภาพสูงของ Graphcore รวมถึงอัลกอริทึม BERT ของเราที่ใช้กับลำดับที่บรรจุในกระดาษใหม่ [1]

ของเสียจากการคำนวณใน NLP เนื่องจากการเติมตามลำดับ

 
 
เราเริ่มสำรวจวิธีการใหม่ๆ ในการเพิ่มประสิทธิภาพการฝึกอบรม BERT ในขณะทำงานล่าสุดของเรา การส่งเกณฑ์มาตรฐานไปยัง MLPerf™. เป้าหมายคือการพัฒนาการเพิ่มประสิทธิภาพที่มีประโยชน์ซึ่งสามารถนำไปใช้ในแอปพลิเคชันในโลกแห่งความเป็นจริงได้อย่างง่ายดาย BERT เป็นตัวเลือกที่เป็นธรรมชาติเนื่องจากเป็นหนึ่งในโมเดลที่มุ่งเน้นการเพิ่มประสิทธิภาพเหล่านี้ เนื่องจากมีการใช้กันอย่างแพร่หลายในอุตสาหกรรมและโดยลูกค้าของเราจำนวนมาก

ทำให้เราประหลาดใจมากที่ได้เรียนรู้ว่าในแอปพลิเคชันการฝึกอบรม BERT-Large ของเราเองโดยใช้ชุดข้อมูล Wikipedia นั้น 50% ของโทเค็นในชุดข้อมูลนั้นเป็นช่องว่างภายใน ส่งผลให้มีการคำนวณที่สูญเปล่าจำนวนมาก

ลำดับการเติมเพื่อจัดแนวทั้งหมดให้มีความยาวเท่ากันเป็นแนวทางทั่วไปที่ใช้กับ GPU แต่เราคิดว่ามันคุ้มค่าที่จะลองใช้แนวทางอื่น

ลำดับมีความยาวต่างกันมากด้วยเหตุผลสองประการ:

  1. ข้อมูลวิกิพีเดียพื้นฐานแสดงรูปแบบความยาวเอกสารที่หลากหลาย
  2. การประมวลผลล่วงหน้าของ BERT นั้นสุ่มลดขนาดของเอกสารที่แยกออกมาซึ่งรวมกันเพื่อสร้างลำดับการฝึกอบรม

การกรอกความยาวสูงสุด 512 ส่งผลให้ 50% ของโทเค็นทั้งหมดเป็นโทเค็นเสริม การแทนที่ 50% ของการเติมด้วยข้อมูลจริงอาจส่งผลให้มีการประมวลผลข้อมูลเพิ่มขึ้น 50% โดยใช้ความพยายามในการคำนวณแบบเดียวกัน และทำให้ความเร็วเพิ่มขึ้น 2 เท่าภายใต้สภาวะที่เหมาะสม



รูปที่ 1: การกระจายชุดข้อมูล Wikipedia รูปภาพโดยผู้เขียน

 

นี่เป็นข้อมูลเฉพาะสำหรับ Wikipedia หรือไม่ เลขที่.

แล้วมันเจาะจงภาษาหรือเปล่าคะ? เลขที่.

อันที่จริง การกระจายความยาวเบ้พบได้ทุกที่: ในภาษา จีโนม และการพับของโปรตีน รูปที่ 2 และ 3 แสดงการแจกแจงสำหรับชุดข้อมูล SQUAAD 1.1 และชุดข้อมูล GLUE



รูปที่ 2: SQUAAD 1.1 BERT ฮิสโตแกรมลำดับความยาวชุดข้อมูลก่อนการฝึกอบรมสำหรับความยาวลำดับสูงสุด 384 รูปภาพโดยผู้เขียน

 


รูปที่ 3: ฮิสโทแกรมความยาวลำดับชุดข้อมูล GLUE สำหรับความยาวลำดับสูงสุด 128 รูปภาพโดยผู้เขียน

 

เราจะจัดการกับความยาวที่แตกต่างกันได้อย่างไรในขณะที่หลีกเลี่ยงการสูญเสียจากการคำนวณ

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

วิธีนี้ต้องใช้ส่วนผสมหลักสามประการ:

  1. อัลกอริธึมที่มีประสิทธิภาพในการตัดสินใจว่าจะรวบรวมตัวอย่างใดเพื่อให้เหลือช่องว่างให้น้อยที่สุด
  2. การปรับโมเดล BERT เพื่อประมวลผลแพ็คแทนการเรียงลำดับ
  3. และปรับไฮเปอร์พารามิเตอร์

การบรรจุ

 
 
ในตอนแรก ดูเหมือนไม่น่าเป็นไปได้ที่คุณจะสามารถแพ็คชุดข้อมูลขนาดใหญ่ เช่น Wikipedia ได้อย่างมีประสิทธิภาพมาก ปัญหานี้มักเรียกว่า bin-packing แม้ว่าการบรรจุจะถูกจำกัดไว้ที่สามลำดับหรือน้อยกว่านั้น ปัญหาที่ได้จะยังคงเป็น NP-complete อย่างแน่นหนา ขาดโซลูชันอัลกอริธึมที่มีประสิทธิภาพ อัลกอริธึมการบรรจุฮิวริสติกที่มีอยู่ไม่ได้มีแนวโน้มเพราะว่ามีความซับซ้อนอย่างน้อย O(ไม่มีบันทึก(n)) ที่ไหน n คือจำนวนลำดับ (~16M สำหรับ Wikipedia) เรามีความสนใจในแนวทางที่สามารถปรับขนาดได้ดีเป็นลำดับนับล้าน

กลเม็ดสองข้อช่วยให้เราลดความซับซ้อนลงได้อย่างมาก:

  1. จำกัดจำนวนลำดับในแพ็คเป็นสามชุด (สำหรับแนวทางแก้ไขปัญหาแรกของเรา)
  2. ใช้งานบนฮิสโตแกรมของความยาวลำดับเพียงอย่างเดียวโดยมีถังเดียวสำหรับแต่ละความยาวที่เกิดขึ้น

ความยาวลำดับสูงสุดของเราคือ 512 ดังนั้น การย้ายไปยังฮิสโตแกรมจึงลดขนาดและความซับซ้อนจาก 16 ล้านลำดับเหลือ 512 จำนวนความยาว การอนุญาตให้มีลำดับสูงสุดสามลำดับในชุดจะลดจำนวนชุดค่าผสมความยาวที่อนุญาตเป็น 22K ซึ่งรวมถึงเคล็ดลับที่ต้องใช้ลำดับในการจัดเรียงตามความยาวในชุด ทำไมไม่ลอง 4 ซีเควนซ์ล่ะ? เพิ่มจำนวนชุดค่าผสมจาก 22K เป็น 940K ซึ่งมากเกินไปสำหรับวิธีการสร้างแบบจำลองครั้งแรกของเรา นอกจากนี้ ความลึก 3 ยังมีประสิทธิภาพการบรรจุที่สูงอย่างน่าทึ่งแล้ว

เดิมที เราคิดว่าการใช้ลำดับมากกว่าสามชุดในหนึ่งชุดจะเพิ่มค่าใช้จ่ายในการคำนวณและส่งผลต่อพฤติกรรมการบรรจบกันระหว่างการฝึก อย่างไรก็ตาม เพื่อสนับสนุนแอปพลิเคชันต่างๆ เช่น การอนุมาน ซึ่งต้องใช้การแพ็คแบบเรียลไทม์ที่รวดเร็วยิ่งขึ้นไปอีก เราได้พัฒนาอัลกอริธึม Non-Negative Least Squares Histogram-Packing (NNLSHP) ที่มีประสิทธิภาพสูง

ฮิสโตแกรมการบรรจุสี่เหลี่ยมน้อยที่สุดที่ไม่เป็นลบ (NNLSHP)

 
 
การบรรจุในถังขยะมักถูกกำหนดให้เป็นปัญหาการปรับให้เหมาะสมทางคณิตศาสตร์ อย่างไรก็ตาม ด้วย 16 ล้านซีเควนซ์ (หรือมากกว่านั้น) วิธีนี้ใช้ไม่ได้ผล ตัวแปรปัญหาเพียงอย่างเดียวจะเกินหน่วยความจำของเครื่องส่วนใหญ่ โปรแกรมทางคณิตศาสตร์สำหรับวิธีการอิงฮิสโตแกรมค่อนข้างเรียบร้อย เพื่อความง่าย เราตัดสินใจใช้วิธีกำลังสองน้อยที่สุด (ขวาน=b) ด้วยเวกเตอร์ฮิสโตแกรม b. เราขยายมันโดยขอเวกเตอร์กลยุทธ์ x ให้ไม่เป็นค่าลบและเพิ่มน้ำหนักเพื่อให้มีช่องว่างภายในเล็กน้อย

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



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

 

ในตอนท้าย เราต้องแก้ไขตัวอย่างบางส่วนที่ไม่ได้รับมอบหมายกลยุทธ์ แต่มีเพียงเล็กน้อย เรายังได้พัฒนาตัวแก้ไขตัวแปรที่บังคับให้แต่ละลำดับได้รับการบรรจุ อาจมีช่องว่างภายใน และมีน้ำหนักขึ้นอยู่กับช่องว่างภายใน ใช้เวลานานกว่านั้นมาก และการแก้ปัญหาก็ไม่ดีขึ้นมากนัก

การบรรจุฮิสโตแกรมที่สั้นที่สุด-แพ็ค-แรก

 
 
NNLSHP นำเสนอแนวทางการบรรจุที่เพียงพอสำหรับเรา อย่างไรก็ตาม เราสงสัยว่าในทางทฤษฎีแล้วเราจะสามารถหาแนวทางออนไลน์ที่เร็วกว่าเดิมได้หรือไม่ และขจัดข้อจำกัดในการรวม 3 ลำดับเข้าด้วยกัน

ดังนั้นเราจึงได้รับแรงบันดาลใจจากอัลกอริธึมการบรรจุที่มีอยู่ แต่ยังคงเน้นที่ฮิสโตแกรม

มีส่วนผสมสี่อย่างสำหรับอัลกอริธึมแรกของเรา Shortest-pack-first histogram-packing (SPFHP):

  1. ดำเนินการตามจำนวนฮิสโตแกรมจากลำดับที่ยาวที่สุดไปยังลำดับที่สั้นที่สุด
  2. หากความยาวของลำดับปัจจุบันไม่พอดีกับแพ็กใดๆ ให้เริ่มชุดใหม่ของ packs
  3. หากมีหลายแบบ ให้นำชุดที่ผลรวมของความยาวลำดับสั้นที่สุดมาแก้ไขการนับตามลำดับ
  4. ตรวจสอบความพอดีของการนับที่เหลืออีกครั้ง

วิธีนี้เป็นวิธีที่ตรงไปตรงมาที่สุดในการนำไปใช้และใช้เวลาเพียง 0.02 วินาที

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



วิธีการทำงานของการบรรจุฮิสโตแกรมแบบ shortest-pack-first แอนิเมชั่นโดยผู้เขียน

 

Wikipedia, SQUAD 1.1, ผลการบรรจุ GLUE

 
 
ตารางที่ 1, 2 และ 3 แสดงผลการบรรจุของสองอัลกอริธึมที่เราเสนอ ความลึกของการบรรจุ อธิบายจำนวนสูงสุดของลำดับที่บรรจุ ความลึกของการบรรจุ 1 คือการใช้งาน BERT พื้นฐาน ความลึกของการบรรจุสูงสุดที่เกิดขึ้น ไม่มีการจำกัดถูกกำหนดด้วย “สูงสุด” เพิ่มเติม NS จำนวนแพ็ค อธิบายความยาวของชุดข้อมูลที่แพ็กใหม่ อย่างมีประสิทธิภาพ คือเปอร์เซ็นต์ของโทเค็นจริงในชุดข้อมูลที่บรรจุ NS ปัจจัยการบรรจุ อธิบายผลลัพธ์ที่อาจเกิดขึ้นได้ในการเร่งความเร็วเมื่อเปรียบเทียบกับความลึกของการบรรจุ 1

เรามีข้อสังเกตหลักสี่ประการ:

  1. ยิ่งการแจกจ่ายเบ้มากเท่าไร ประโยชน์ของการบรรจุก็ยิ่งสูงขึ้นเท่านั้น
  2. ชุดข้อมูลทั้งหมดได้รับประโยชน์จากการบรรจุ บางคนถึงกับมากกว่า 2 เท่าด้วยซ้ำ
  3. SPFHP จะมีประสิทธิภาพมากขึ้นเมื่อความลึกของบรรจุภัณฑ์ไม่จำกัด
  4. สำหรับลำดับการแพ็กสูงสุด 3 ลำดับ ยิ่ง NNLSHP ซับซ้อนมากเท่าใด ก็ยิ่งมีประสิทธิภาพมากขึ้นเท่านั้น (99.75 เทียบกับ 89.44)



ตารางที่ 1: ผลการปฏิบัติงานที่สำคัญของอัลกอริธึมการบรรจุที่เสนอ (SPFHP และ NNLSHP) บนวิกิพีเดีย รูปภาพโดยผู้เขียน

 


ตารางที่ 2: ผลการปฏิบัติงานของอัลกอริธึมการบรรจุที่เสนอสำหรับ SQUAD 1.1 BERT ก่อนการฝึกอบรม รูปภาพโดยผู้เขียน

 


ตารางที่ 3: ผลการปฏิบัติงานของอัลกอริธึมการบรรจุที่เสนอสำหรับชุดข้อมูล GLUE เฉพาะค่าพื้นฐานและผลลัพธ์การบรรจุ SPFHP โดยไม่จำกัดความลึกของบรรจุภัณฑ์เท่านั้นที่จะแสดง รูปภาพโดยผู้เขียน

 

การปรับการประมวลผลของ BERT

 
 
สิ่งที่น่าสนใจเกี่ยวกับสถาปัตยกรรม BERT คือการประมวลผลส่วนใหญ่เกิดขึ้นในระดับโทเค็น ซึ่งหมายความว่าจะไม่รบกวนการบรรจุของเรา มีเพียงสี่องค์ประกอบที่ต้องการการปรับเปลี่ยน: มาสก์ความสนใจ, การสูญเสีย MLM, การสูญเสีย NSP และความแม่นยำ

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

ตัวอย่างโค้ดมาสก์ความสนใจ


 


รูปที่ 5: ตัวอย่าง Zero-one mask

 

สำหรับการคำนวณการสูญเสีย โดยหลักการแล้ว เราจะแกะลำดับและคำนวณการสูญเสียที่แยกจากกัน ในที่สุดก็ได้ค่าเฉลี่ยของการสูญเสียเหนือลำดับ (แทนที่จะเป็นแพ็ค)

สำหรับการสูญเสีย MLM โค้ดจะมีลักษณะดังนี้:

ตัวอย่างรหัสคำนวณการสูญเสีย


 

สำหรับการสูญเสีย NSP และความแม่นยำ หลักการก็เหมือนกัน ในตัวอย่างสาธารณะของเรา คุณสามารถหาโค้ดที่เกี่ยวข้องได้จากในบริษัท กรอบ PopART.

ค่าโสหุ้ยวิกิพีเดียและการประมาณการเร่งความเร็ว

 
 
ด้วยการปรับเปลี่ยน BERT เรามีคำถามสองข้อ:

  1. มันนำมาซึ่งค่าโสหุ้ยเท่าไหร่?
  2. ค่าโสหุ้ยขึ้นอยู่กับจำนวนสูงสุดของลำดับที่ประกอบกันเป็นแพ็คเท่าใด

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



ตารางที่ 4: การเปรียบเทียบการเร่งความเร็วโดยประมาณของอัลกอริธึมการบรรจุที่เสนอ (SPFHP และ NNLSHP) บน Wikipedia รูปภาพโดยผู้เขียน

 

ต้องขอบคุณเทคนิค vectorization ที่ทำให้โอเวอร์เฮดมีขนาดเล็กอย่างน่าประหลาดใจ และไม่มีข้อเสียใด ๆ จากการรวมหลายๆ ลำดับเข้าด้วยกัน

การปรับไฮเปอร์พารามิเตอร์

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



รูปที่ 6: เปรียบเทียบเส้นโค้งการเรียนรู้สำหรับการประมวลผลแบบแพ็คและแบบแยกส่วนกับ ลดขนาดแบทช์ สำหรับแนวทางที่อัดแน่น รูปภาพโดยผู้เขียน

 

ความถูกต้องตรงกัน: การสูญเสียการฝึกอบรม MLM อาจแตกต่างกันเล็กน้อยในตอนเริ่มต้น แต่จะตามทันอย่างรวดเร็ว ความแตกต่างเบื้องต้นนี้อาจมาจากการปรับชั้นความสนใจเล็กน้อย ซึ่งอาจมีอคติต่อลำดับสั้นๆ ในการฝึกครั้งก่อน

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



รูปที่ 7: เปรียบเทียบเส้นโค้งการเรียนรู้สำหรับการประมวลผลแบบแพ็คและแบบแยกส่วนกับ การวิเคราะห์พฤติกรรม สมัครแล้ว. รูปภาพโดยผู้เขียน

 

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

ตอนนี้คำถามคือถ้าในสถานการณ์จริง เราได้รับความเร็วที่คาดหวังไว้จริง ๆ หรือไม่?



รูปที่ 8: การเปรียบเทียบเส้นโค้งการเรียนรู้สำหรับการประมวลผลแบบแพ็กและแบบไม่แพ็กใน การตั้งค่าที่เหมาะสมที่สุด. รูปภาพโดยผู้เขียน

 

ใช่พวกเราทำ! เราได้รับความเร็วเพิ่มขึ้นเนื่องจากเราบีบอัดการถ่ายโอนข้อมูล

สรุป

 
 
การรวมประโยคเข้าด้วยกันสามารถประหยัดความพยายามในการคำนวณและสิ่งแวดล้อม เทคนิคนี้สามารถนำไปใช้ในกรอบงานใดก็ได้ รวมถึง PyTorch และ TensorFlow เราได้รับความเร็วที่เพิ่มขึ้นอย่างชัดเจนถึง 2 เท่า และระหว่างทาง เราได้ขยายความทันสมัยในอัลกอริธึมการบรรจุ

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

อ่านกระดาษ

เข้าถึงรหัสบน GitHub

ขอขอบคุณ

 
 
ขอขอบคุณเพื่อนร่วมงานของเราในทีมวิศวกรรมแอปพลิเคชันของ Graphcore Sheng Fu และ Mrinal Iyer ที่มีส่วนร่วมในงานนี้ และขอขอบคุณ Douglas Orr จากทีมวิจัยของ Graphcore สำหรับความคิดเห็นอันมีค่าของเขา

อ้างอิง

 
 
[1] M. Kosec, S. Fu, MM Krell, การบรรจุ: มุ่งสู่การเร่งความเร็ว NLP BERT 2 เท่า (2021), arXiv

 
ดร.มาริโอ ไมเคิล เครล เป็นหัวหน้าฝ่ายการเรียนรู้ของเครื่องที่ Graphcore Mario ทำการวิจัยและพัฒนาอัลกอริธึมแมชชีนเลิร์นนิงมานานกว่า 12 ปี โดยสร้างซอฟต์แวร์สำหรับอุตสาหกรรมที่หลากหลาย เช่น หุ่นยนต์ ยานยนต์ โทรคมนาคม และการดูแลสุขภาพ ที่ Graphcore เขามีส่วนทำให้เราประทับใจ ส่ง MLPerf และมีความปรารถนาที่จะเร่งสร้างโมเดลใหม่ที่ไม่ได้มาตรฐาน เช่น การคำนวณแบบเบย์โดยประมาณสำหรับการวิเคราะห์ข้อมูลโควิด-19 ทางสถิติ

มาเตจ โคเซค เป็นผู้เชี่ยวชาญด้านแอปพลิเคชัน AI ที่ Graphcore ในพาโลอัลโต ก่อนหน้านี้เขาเคยทำงานเป็นนักวิทยาศาสตร์ AI ด้านการขับรถอัตโนมัติที่ NIO ในซานโฮเซ และสำเร็จการศึกษาระดับปริญญาโทด้านวิชาการบินและอวกาศจากมหาวิทยาลัยสแตนฟอร์ด

Original. โพสต์ใหม่โดยได้รับอนุญาต

ที่เกี่ยวข้อง



เรื่องเด่นใน 30 วันที่ผ่านมา
เป็นที่นิยม
  1. ความแตกต่างระหว่างนักวิทยาศาสตร์ข้อมูลและวิศวกร ML
  2. 3 เหตุผลที่คุณควรใช้แบบจำลองการถดถอยเชิงเส้นแทนโครงข่ายประสาทเทียม
  3. คำถามและคำตอบในการสัมภาษณ์วิทยาศาสตร์ข้อมูลทั่วไปส่วนใหญ่
  4. GitHub Copilot โอเพ่นซอร์สทางเลือก
  5. คำแนะนำสำหรับการเรียนรู้ Data Science จากผู้อำนวยการฝ่ายวิจัยของ Google
แบ่งปันมากที่สุด
  1. ความแตกต่างระหว่างนักวิทยาศาสตร์ข้อมูลและวิศวกร ML
  2. วิธีค้นหาดาต้าเฟรมของ Pandas
  3. ทำไมคุณควรเรียนรู้ "Productive Data Science" และอย่างไร
  4. ไม่เพียงแต่สำหรับ Deep Learning เท่านั้น: GPUs เร่งความเร็ว Data Science & Data Analytics ได้อย่างไร
  5. การเขียนแอปพลิเคชัน Python แบบกระจายครั้งแรกของคุณด้วย Ray

ที่มา: https://www.kdnuggets.com/2021/08/packed-bert-training-speed-up-natural-language-processing.html

ประทับเวลา:

เพิ่มเติมจาก KD นักเก็ต