สถานะ: เก็บถาวร (รหัสมีให้ตามที่คาดหวังว่าจะมีการอัปเดต)
Bert-Keras
การใช้งาน Keras ของ Google Bert (การเป็นตัวแทนของตัวเข้ารหัสแบบสองทิศทางจาก Transformers) และ LM Transformer ของ OpenAI ที่สามารถโหลดโมเดลที่ผ่านการฝึกอบรมได้ด้วย API Finetuning
อัปเดต : ด้วยการสนับสนุน TPU ทั้งสำหรับการอนุมานและการฝึกอบรมเช่นโน๊ตบุ๊ค colab นี้ขอบคุณ @highcwu
ใช้อย่างไร?
# this is a pseudo code you can read an actual working example in tutorial.ipynb or the colab notebook
text_encoder = MyTextEncoder ( ** my_text_encoder_params ) # you create a text encoder (sentence piece and openai's bpe are included)
lm_generator = lm_generator ( text_encoder , ** lm_generator_params ) # this is essentially your data reader (single sentence and double sentence reader with masking and is_next label are included)
task_meta_datas = [ lm_task , classification_task , pos_task ] # these are your tasks (the lm_generator must generate the labels for these tasks too)
encoder_model = create_transformer ( ** encoder_params ) # or you could simply load_openai() or you could write your own encoder(BiLSTM for example)
trained_model = train_model ( encoder_model , task_meta_datas , lm_generator , ** training_params ) # it does both pretraing and finetuning
trained_model . save_weights ( 'my_awesome_model' ) # save it
model = load_model ( 'my_awesome_model' , encoder_model ) # load it later and use it!
หมายเหตุ
- แนวคิดทั่วไปของห้องสมุดนี้คือการใช้รูปแบบการเรียนรู้ของ OpenAI/Google สำหรับการถ่ายโอนการเรียนรู้
- เพื่อดูว่าโมเดลเบิร์ตทำงานอย่างไรคุณสามารถตรวจสอบโน้ตบุ๊ก colab นี้ได้
- เพื่อให้เข้ากันได้กับทั้ง Bert และ Openai ฉันต้องถือว่าการสั่งซื้อมาตรฐานสำหรับคำศัพท์ฉันใช้ OpenAI's ดังนั้นในฟังก์ชั่นการโหลดของ Bert มีส่วนหนึ่งในการเปลี่ยนการสั่งซื้อ แต่นี่คือรายละเอียดการใช้งานและคุณสามารถเพิกเฉยได้!
- การโหลดโมเดล OpenAI ได้รับการทดสอบด้วยทั้ง Tensorflow และ Theano เป็นแบ็กเอนด์
- การโหลดโมเดลเบิร์ตเป็นไปไม่ได้ในแบ็กเอนด์ Theano แต่เวอร์ชัน TF ใช้งานได้และได้รับการทดสอบ
- การฝึกอบรมและการปรับแต่งแบบจำลองเป็นไปไม่ได้ด้วยแบ็กเอนด์ Theano แต่ทำงานได้ดีอย่างสมบูรณ์แบบกับ TensorFlow
- คุณสามารถใช้ตัวสร้างข้อมูลและข้อมูลเมตางานสำหรับงาน NLP ส่วนใหญ่และคุณสามารถใช้งานได้ในเฟรมเวิร์กอื่น ๆ
- มีการทดสอบหน่วยสำหรับทั้งชุดข้อมูลและโมเดลหม้อแปลง (อ่านหากคุณไม่แน่ใจเกี่ยวกับบางสิ่งบางอย่าง)
- แม้แต่ยากฉันก็ไม่ชอบรหัส Keras ของฉันมันอ่านได้ :)
- คุณสามารถใช้ตัวเข้ารหัสอื่น ๆ เช่น LSTM หรือ BIQRNN สำหรับการฝึกอบรมหากคุณทำตามสัญญาแบบจำลอง (มีอินพุตและเอาต์พุตเดียวกันกับตัวเข้ารหัสหม้อแปลง)
- ทำไมฉันต้องใช้สิ่งนี้แทนการเปิดตัวอย่างเป็นทางการครั้งแรกอันนี้อยู่ใน Keras และที่สองมันมีนามธรรมที่ดีในระดับโทเค็นระดับและระดับประโยค NLP ซึ่งเป็นเฟรมเวิร์กอิสระ
- ทำไม Keras? เวอร์ชัน Pytorch หมดแล้ว! (BTW คุณสามารถใช้เครื่องกำเนิดข้อมูลนี้สำหรับการฝึกอบรมและปรับแต่งโมเดลนั้นได้เช่นกัน)
- ฉันขอแนะนำให้คุณอ่านบทช่วยสอน IPYNB (ฉันไม่ชอบสมุดบันทึกดังนั้นนี่เป็นสมุดบันทึกที่ออกแบบมาไม่ดี แต่อ่านต่อไป)
แนวคิดรหัสสำคัญ
- ภารกิจ: มีงานทั่วไปสองงานงานระดับประโยค (เช่น IS_NEXT และการวิเคราะห์ความเชื่อมั่น) และงานระดับโทเค็น (เช่น POS และ NER)
- ประโยค: ประโยคแสดงถึงตัวอย่างที่มีป้ายกำกับและทุกอย่างสำหรับแต่ละงานจะให้เป้าหมาย (หนึ่งเดียวสำหรับงานระดับประโยคและฉลากต่อโทเค็นสำหรับงานระดับโทเค็น) และหน้ากากสำหรับระดับโทเค็นที่เราไม่เพียง แต่ไม่เพียง แต่เริ่มต้น ใน Bert Paepr)
- TaskweightsCheduler: สำหรับการฝึกอบรมเราอาจต้องการเริ่มต้นด้วยการสร้างแบบจำลองภาษาและย้ายไปยังการจัดหมวดหมู่อย่างราบรื่นพวกเขาสามารถนำไปใช้กับคลาสนี้ได้อย่างง่ายดาย
- atternest_mask: ด้วยสิ่งนี้คุณสามารถ 1. ทำโมเดลของคุณสาเหตุ 2. การพายเรือลงไป 3. ความคิดที่บ้าคลั่งของคุณ: D
- Special_tokens: pad, start, end, delimiter, mask
ความเป็นเจ้าของ
Neiron