يحتوي هذا الريبو على وظائف مختلفة لتحويل جزء التشفير من نموذج RoBerta المسبق إلى محولات التسلسل الطويلة.
ينمو استهلاك الذاكرة ووقت تشغيل نماذج اللغة مع الفانيليا الذاتية من الناحية التربيعية إلى طول تسلسل الإدخال. تم اقتراح نماذج مختلفة للاسترخاء هذه المشكلة إما عن طريق استخدام أنماط الاهتمام المتفرقة أو المحلية أو تقريب مصفوفة الاهتمام الكامل مع طرق التحلل. يحتوي هذا المستودع على بعض الوظائف لتهيئة بعض هذه النماذج مع الأوزان من نقطة تفتيش RoBerta المسبقة ، وبالتالي ، يمكن أن يكون مفيدًا لإنشاء نماذج جديدة لمهام الوثيقة الطويلة بكفاءة.
لاحظ أن تهيئة هذه النماذج بأوزان مسبقة لا تجعلها قابلة للاستخدام مباشرة ، ناهيك عن المنافسة. في معظم الحالات ، يلزم ما لا يقل عن بضعة آلاف من الخطوات المستمرة "التي تستمر" لتحقيق نتائج مرضية في أي مهمة مجرى النهر.
تحويل نماذج RoBerta المسبق إلى طرز Longformer
يحل نموذج Longformer (Beltagy ، I. ، Peters ، Me ، & Cohan ، A. (2020).) محل آلية الاهتمام الكاملة مع أنماط الاهتمام المحلية والاهتمام العالمي الخاص بالمهمة. بصرف النظر عن ذلك ، تستخدم نماذج Longformer RoBerta (Liu ، Y. ، Ott ، M. ، Goyal ، et. (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. وبالتالي ، ليست هناك حاجة للتعامل مع أنماط الاهتمام الخاصة ، مما يجعل هذه النماذج ، من الناحية النظرية ، تنطبق على مجموعة واسعة من المهام. بالمقارنة مع نماذج 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/" )
...