repo นี้มีฟังก์ชั่นต่าง ๆ เพื่อแปลงส่วนของตัวเข้ารหัสของ RoBerta -model ที่ได้รับการฝึกฝนให้เป็นหม้อแปลงมานาน
การใช้หน่วยความจำและรันไทม์ของโมเดลภาษาที่มีการควบคุมด้วยตนเองของวานิลลาเพิ่มขึ้นเป็นสองเท่าตามความยาวของลำดับอินพุต มีการเสนอแบบจำลองต่าง ๆ เพื่อผ่อนคลายปัญหานี้โดยใช้รูปแบบความสนใจแบบกระจัดกระจายหรือในท้องถิ่น ที่เก็บนี้มีฟังก์ชั่นบางอย่างเพื่อเริ่มต้นโมเดลเหล่านี้ด้วยน้ำหนักจากจุดตรวจสอบ RoBerta ที่ผ่านการฝึกฝนมาก่อนและดังนั้นจึงมีประโยชน์ในการสร้างโมเดลใหม่สำหรับงานที่มีเอกสารยาวอย่างมีประสิทธิภาพ
โปรดทราบว่าการเริ่มต้นโมเดลเหล่านี้ด้วยน้ำหนักที่ได้รับการฝึกฝนนั้นไม่ได้ทำให้สามารถใช้งานได้โดยตรง ในกรณีส่วนใหญ่ขั้นตอนอย่างน้อยไม่กี่พันขั้นตอน "การป้องกันอย่างต่อเนื่อง" จะต้องใช้เพื่อให้ได้ผลลัพธ์ที่น่าพอใจในงานดาวน์สตรีมใด ๆ
แปลงรุ่น RoBerta ที่ผ่านการฝึกอบรมให้เป็นรุ่น Longformer
รุ่น Longformer (Beltagy, I. , Peters, Me, & Cohan, A. (2020)) แทนที่กลไกการแทรกอย่างเต็มรูปแบบด้วยรูปแบบความสนใจในท้องถิ่นและความสนใจทั่วโลกเฉพาะงาน นอกเหนือจากนั้นรุ่น Longformer ใช้ RoBerta (Liu, Y. , Ott, M. , Goyal, et. Al (2019).) สถาปัตยกรรม ดังนั้นจึงเป็นไปได้อย่างง่ายดายที่จะโหลดน้ำหนักของโมเดล RoBerta ที่ผ่านการฝึกฝนไว้ใน Longformer
from roberta2longformer import convert_roberta_to_longformer
from transformers import RobertaModel , RobertaTokenizerFast
from transformers import LongformerModel , LongformerTokenizerFast
roberta_model = RobertaModel . from_pretrained ( "uklfr/gottbert-base" )
roberta_tokenizer = RobertaTokenizerFast . from_pretrained ( "uklfr/gottbert-base" )
longformer_model , longformer_tokenizer = convert_roberta_to_longformer (
roberta_model = roberta_model ,
roberta_tokenizer = roberta_tokenizer ,
longformer_max_length = 8192
)
print ( list ( longformer_model . encoder . state_dict (). items ())[ 0 ])
print ( list ( roberta_model . encoder . state_dict (). items ())[ 0 ])
inputs = longformer_tokenizer ( "Er sah eine irdische Zentralregierung, und er erblickte Frieden, Wohlstand und galaktische Anerkennung."
"Es war eine Vision, doch er nahm sie mit vollen Sinnen in sich auf."
"Im Laderaum der STARDUST begann eine rätselhafte Maschine zu summen."
"Die dritte Macht nahm die Arbeit auf."
"Da lächelte Perry Rhodan zum blauen Himmel empor."
"Langsam löste er die Rangabzeichen von dem Schulterstück seiner Kombination." ,
return_tensors = "pt" )
outputs = longformer_model ( ** inputs )
# Or to finetune the model on a task:
from transformers import LongformerForSequenceClassification
longformer_model . save_pretrained ( "tmp/longformer-gottbert" )
longformer_tokenizer . save_pretrained ( "tmp/longformer-gottbert" )
seqclass_model = LongformerForSequenceClassification . from_pretrained ( "tmp/longformer-gottbert/" )
... Nyströmformer -architecture (Xiong et. al (2021)) ใกล้เคียงกับกลไกการดูแลตนเองโดยใช้Nyström Matrix-Decomposition ดังนั้นจึงไม่จำเป็นต้องจัดการกับรูปแบบความสนใจเป็นพิเศษทำให้โมเดลเหล่านี้ในทางทฤษฎีใช้กับงานที่หลากหลาย เมื่อเปรียบเทียบกับรุ่น Longformer Nyströmformers ดูเหมือนจะใช้หน่วยความจำมากขึ้น
from roberta2nyströmformer import convert_roberta_to_nystromformer
from transformers import RobertaModel , RobertaTokenizerFast
from transformers import NystromformerTokenizerFast , NystromformerModel
roberta_model = RobertaModel . from_pretrained ( "uklfr/gottbert-base" )
roberta_tokenizer = RobertaTokenizerFast . from_pretrained ( "uklfr/gottbert-base" )
nystromformer_model , nystromformer_tokenizer = convert_roberta_to_nystromformer (
roberta_model = roberta_model ,
roberta_tokenizer = roberta_tokenizer ,
nystromformer_max_length = 8192
)
print ( list ( nystromformer_model . encoder . state_dict (). items ())[ 0 ])
print ( list ( roberta_model . encoder . state_dict (). items ())[ 0 ])
inputs = nystromformer_tokenizer ( "Er sah eine irdische Zentralregierung, und er erblickte Frieden, Wohlstand und galaktische Anerkennung."
"Es war eine Vision, doch er nahm sie mit vollen Sinnen in sich auf."
"Im Laderaum der STARDUST begann eine rätselhafte Maschine zu summen."
"Die dritte Macht nahm die Arbeit auf."
"Da lächelte Perry Rhodan zum blauen Himmel empor."
"Langsam löste er die Rangabzeichen von dem Schulterstück seiner Kombination." ,
return_tensors = "pt" )
outputs = nystromformer_model ( ** inputs )
# Or to finetune the model on a task:
from transformers import NystromformerForSequenceClassification
nystromformer_model . save_pretrained ( "tmp/nystromformer-gottbert" )
nystromformer_model . save_pretrained ( "tmp/nystromformer-gottbert" )
seqclass_model = NystromformerForSequenceClassification . from_pretrained ( "tmp/nystromformer-gottbert/" )
...