การฝึกอบรมรูปแบบภาษา Transformer GPT-2 บน corpora ของคุณเองด้วยการทำให้เป็นโทเค็นประโยค
repo นี้มีการใช้งาน pytorch ของ GPT-2 ซึ่งสนับสนุนการฝึกอบรมหลาย GPU นอกจากนี้ยังมีการใช้งาน tensorflow ใน lm/gpt_2_tf แต่ไม่ได้พัฒนาอีกต่อไป พวกเขาแบ่งปันสคริปต์การเตรียมข้อมูลเดียวกัน คำสั่งการฝึกอบรม TF คือ gpt-2-tf-train และต้องการ TensorFlow 1.13 เอกสารด้านล่างนี้มีไว้สำหรับรุ่น Pytorch
สารบัญ
Python 3.6+ เป็นสิ่งจำเป็นด้วยคบเพลิงทุกคืนหรือ 1.6.0+ การทำงานใน VirtualEnV จะถือว่าด้านล่าง ติดตั้ง pytorch เวอร์ชันที่เหมาะสมก่อนแล้ว:
PIP Install -r rechent.txt Python setup.py พัฒนา
คำแนะนำอยู่ด้านล่าง ดูเพิ่มเติม test/test_shakespeare.sh สำหรับการสาธิตไปป์ไลน์ที่สมบูรณ์ในคลังข้อมูลขนาดเล็ก (ใช้เวลาหนึ่งนาทีใน CPU)
รูปแบบคอร์ปัส: ไดเรกทอรีที่มี train ระดับบนสุด, โฟลเดอร์ valid และ test แต่ละโฟลเดอร์ระดับบนสุดอาจมีโฟลเดอร์ย่อย ภายในพวกเขาจะต้องมีไฟล์ข้อความที่เข้ารหัส UTF-8 ด้วยส่วนขยาย .txt
คำสั่งในการฝึกอบรมโมเดลชิ้นประโยคและเข้ารหัส Corpus Support Corpora หลายตัวในตัวอย่างด้านล่างเราคิดว่าพวกเขาสามารถแสดงรายการเป็น data/corpora-*
โมเดลชิ้นประโยครถไฟ ( sp-text.txt สามารถลบออกได้หลังจากวิ่ง) สิ่งนี้สามารถใช้หน่วยความจำจำนวนมากปรับอาร์กิวเมนต์ชิ้นประโยคตามที่แนะนำหากจำเป็น (ไม่ได้รับการสนับสนุนในคำสั่ง sp-train โดยตรง):
SP-Train Data/Corpora-* sp-text.txt sp-model
เข้ารหัส Corpora ผลิตไฟล์ numpy:
ข้อมูล SP-encode/corpora-* sp-model.model data/encoded
ตัวอย่างคำสั่ง:
GPT-2 Run-Root Data/encoded SP-model.model
run-root จะมีจุดตรวจสอบรุ่นและบันทึก JSON-LINES ซึ่งสามารถพล็อตในสมุดบันทึก Jupyter ด้วย json_log_plots.plot("run-root") โดยมีจำนวนโทเค็นที่เห็นในแกน X
HyperParameters เริ่มต้นสอดคล้องกับรุ่น "Small" GPT-2 ที่ปล่อยออกมา
เมื่อมี GPU หลายตัวพวกเขาจะถูกใช้สำหรับการฝึกอบรมด้วยความช่วยเหลือของ torch.distributed
หากเส้นทางที่มีอยู่และ --clean คีย์ทำความสะอาดไม่ผ่านการฝึกอบรมจะกลับมาทำงานต่อ โปรดทราบว่าพารามิเตอร์ทั้งหมดยังคงต้องระบุและพารามิเตอร์แบบจำลองจำเป็นต้องจับคู่
หมายเหตุเกี่ยวกับพารามิเตอร์การฝึกอบรม:
--batch-size เป็นต่อ GPU ดังนั้นคุณไม่จำเป็นต้องปรับแต่งอีกครั้งเมื่อเปลี่ยนจำนวน GPU เพียงแค่ใช้สูงสุดที่เหมาะกับหน่วยความจำ--g-accum-gradients เป็นจำนวนการสะสมระดับโลกทั่วโลกมันจะต้องหารด้วยจำนวน GPU ขนาดแบทช์ทั่วโลกที่มีประสิทธิภาพมักจะเป็น batch_size * g_accum_gradients--lr ไม่จำเป็นต้องเปลี่ยนแปลงเมื่อเปลี่ยน --batch-size หรือ --g-accum-gradients หรือจำนวน GPU หรือ --n-ctx : การสูญเสียได้รับการปรับขนาดอย่างเหมาะสมแล้วตัวอย่างคำสั่ง:
GPT-2-Gen Run-Root "ปัญญาประดิษฐ์"
run-root จะมีจุดตรวจสอบแบบจำลอง "Artificial intelligence" เป็นคำนำหน้าข้อความที่ใช้เป็นจุดเริ่มต้นสำหรับการสร้างโทเค็น
หมายเหตุเกี่ยวกับพารามิเตอร์การอนุมาน:
--tokens-to-generate : จำนวนโทเค็นที่จะสร้างค่าเริ่มต้นคือ 42--top-k : จำนวนผู้สมัครโทเค็นที่จะสร้างสำหรับแต่ละตำแหน่ง (ความกว้างของลำแสง), ค่าเริ่มต้นคือ 8 ใบอนุญาตคือ MIT
รุ่น Tensorflow GPT-2 นำมาจาก https://github.com/openai/gpt-2/blob/master/src/model.py และ tensorflow gpt- 2
พอร์ต Pytorch ขึ้นอยู่กับรหัส OpenAI ดั้งเดิม
ทดสอบเช็คสเปียร์ภายใต้ tests/shakespeare มาจาก http://shakespeare.mit.edu ภายใต้โดเมนสาธารณะ
ดูกระดาษและบล็อก OpenAI GPT-2