YaLM 100B เป็นโครงข่ายประสาทเทียมที่มีลักษณะคล้าย GPT สำหรับการสร้างและประมวลผลข้อความ นักพัฒนาและนักวิจัยจากทั่วทุกมุมโลกสามารถนำไปใช้ได้อย่างอิสระ
โมเดลนี้ใช้ประโยชน์จากพารามิเตอร์ 100 พันล้านตัว ใช้เวลา 65 วันในการฝึกโมเดลบนคลัสเตอร์กราฟิกการ์ด A100 จำนวน 800 ใบ และข้อความออนไลน์ หนังสือ และแหล่งข้อมูลอื่นๆ อีกนับไม่ถ้วนทั้งภาษาอังกฤษและรัสเซีย
รายละเอียดการฝึกอบรมและแนวทางปฏิบัติที่ดีที่สุดในการเร่งความเร็วและความเสถียรสามารถพบได้ในบทความ Medium (ภาษาอังกฤษ) และ Habr (ภาษารัสเซีย)
เราใช้ DeepSpeed เพื่อฝึกโมเดลและรับแรงบันดาลใจจากตัวอย่าง Megatron-LM อย่างไรก็ตาม รหัสใน repo นี้ไม่ใช่รหัสเดียวกับที่ใช้ในการฝึกโมเดล แต่เป็นตัวอย่างหุ้นจาก DeepSpeed repo ที่มีการเปลี่ยนแปลงเพียงเล็กน้อยเพื่ออนุมานโมเดลของเรา
ตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างในดิสก์ 200GB ก่อนที่จะดาวน์โหลดตุ้มน้ำหนัก โมเดล (โค้ดอิงจาก microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3) ควรจะทำงานบน GPU หลายตัวที่มีความขนานของเทนเซอร์ ได้รับการทดสอบบน GPU 4 ตัว (A100 80g) และ 8 (V100 32g) แต่สามารถทำงานกับการกำหนดค่าที่แตกต่างกันด้วยหน่วยความจำ GPU รวม 200GB ซึ่งแบ่งขนาดน้ำหนักได้อย่างถูกต้อง (เช่น 16, 64, 128)
bash download/download.sh
เพื่อดาวน์โหลดน้ำหนักโมเดลและคำศัพท์./yalm100b_checkpoint/weights/
weights/ และคำศัพท์จะถูกดาวน์โหลดไปที่ ./yalm100b_checkpoint/vocab/
yalm100b_checkpoint/vocab/docker/pull.sh
ใช้ได้กับ A100 และ V100docker/build.sh
(ซึ่งจะสร้างอิมเมจนักเทียบท่าจาก docker/Dockerfile
)docker/run.sh
(สามารถเปลี่ยนปริมาตร ชื่อ และพารามิเตอร์อื่นๆ ได้) คุณสามารถเริ่มต้นด้วยสคริปต์ต่อไปนี้:
examples/generate_interactive.sh
: การสร้างเชิงโต้ตอบจากบรรทัดคำสั่ง วิธีที่ง่ายที่สุดในการลองใช้โมเดลexamples/generate_conditional_sampling.sh
: การสร้างตามเงื่อนไขด้วยกลยุทธ์การสุ่มตัวอย่าง โดยค่าเริ่มต้นจะใช้ Top-p คุณสามารถเปลี่ยนอุณหภูมิหรือใช้ top-k ได้ตามใจชอบ อินพุตคือ jsonlines (ตัวอย่าง: examples/example_cond_input.json
) เอาต์พุตจะเป็น jsonlines เดียวกันกับที่มีการเพิ่มฟิลด์ข้อความที่สร้างขึ้นลงในแต่ละบรรทัดexamples/generate_conditional_greedy.sh
: เหมือนกับรุ่นก่อนหน้า แต่รุ่นนั้นโลภ เหมาะกับการแก้ปัญหาเรื่องการยิงไม่กี่ครั้งexamples/generate_unconditional.sh
: การสร้างแบบไม่มีเงื่อนไข ไม่มีการใช้อินพุต เอาต์พุตจะเป็น jsonlines แบบจำลองนี้เผยแพร่ภายใต้ใบอนุญาต Apache 2.0 ซึ่งอนุญาตทั้งการวิจัยและการใช้งานเชิงพาณิชย์ Megatron-LM ได้รับอนุญาตภายใต้ใบอนุญาต Megatron-LM
ชุดข้อมูลที่ใช้สำหรับการฝึก YaLM-100B ประกอบด้วยส่วนต่างๆ ต่อไปนี้ (เปอร์เซ็นต์คร่าวๆ วัดเป็นโทเค็นที่โมเดลเห็น):
25% The Pile — ชุดข้อมูลภาษาอังกฤษแบบเปิดโดยทีม Eleuther AI
75% ข้อความเป็นภาษารัสเซียที่รวบรวมโดยทีมงานของเรา (ระบุเปอร์เซ็นต์ของชุดข้อมูลทั้งหมด)
หน้าเว็บรัสเซีย 49% จากดัชนี Yandex Search กรองจาก ~100Tb ถึง ~1Tb โดยการวิเคราะห์ต่อไปนี้:
12% ข่าวจากแหล่งต่าง ๆ จากดัชนี Yandex Search
หนังสือ 10% จากชุดข้อมูลที่ใช้ใน Thesarus Distributional รัสเซีย
ข้อความเบ็ดเตล็ด 3% จากชุดข้อมูล Taiga
1.5% บทสนทนาจากโซเชียลมีเดียที่ประมวลผลล่วงหน้าในลักษณะคล้ายกับวิธีการประมวลผล Reddit ใน The Pile
0.5% ส่วนรัสเซียของวิกิพีเดีย
ชุดย่อยบางชุดถูกเคลื่อนที่มากถึง 3 ครั้งในระหว่างการฝึก
แบบจำลองได้รับการฝึกฝนบนคลัสเตอร์ 800 A100 เป็นเวลาประมาณ 65 วัน ในเวลานั้นมันใช้โทเค็นไป 300B คุณสามารถดู TensorBoard พร้อม LR และกำหนดการเพิ่มขึ้น เมตริกการฝึก และ "เทอร์โมมิเตอร์" ของเราได้ที่หน้า HF