transer快速入门教程

上传人:d****1 文档编号:120779619 上传时间:2022-07-18 格式:DOCX 页数:9 大小:27.36KB
返回 下载 相关 举报
transer快速入门教程_第1页
第1页 / 共9页
transer快速入门教程_第2页
第2页 / 共9页
transer快速入门教程_第3页
第3页 / 共9页
点击查看更多>>
资源描述
Transformers是一个为NLP的研究人员寻求使用/研究/扩展大型 Transformers 模型的库。该库的设计有两个强烈的目标:尽可能简单和快速使用:我们尽可能限制了要学习的面向对象抽象的类的数量,实际上几乎没有抽象, 每个模型只需要使用三个标准类:配置、模型和tokenizer,所有这些类都可以通过使用公共的from_pretrained()实例化方法从预训练实 例以简单统一的方式初始化,该方法将负责从库中下载,缓存和加载相关类提 供的预训练模型或你自己保存的模型。因此,这个库不是构建神经网络模块的工具箱。如果您想扩展/构建这个库,只 需使用常规的Python/PyTorch模块,并从这个库的基类继承,以重用诸如模型 加载/保存等功能。提供最先进的模型与性能尽可能接近的原始模型: 我们为每个架构提供了至少一个例子,该例子再现了上述架构的官方作者提供 的结果 代码通常尽可能地接近原始代码,这意味着一些PyTorch代码可能不那么 pytorch化,因为这是转换TensorFlow代码后的结果。其他几个目标:尽可能一致地暴露模型的内部:我们使用一个API来访问所有的隐藏状态和注意力权重, 对tokenizer和基本模型的API进行了标准化,以方便在模型之间进行切换。结合一个主观选择的有前途的工具微调/调查这些模型:向词汇表和嵌入项添加新标记以进行微调的简单/一致的方法,简单的方法面具和修剪变压器头。主要概念该库是建立在三个类型的类为每个模型: model类是目前在库中提供的8个模型架构的PyTorch模型(torch.nn.Modules),例如 BertModel configuration类,它存储构建模型所需的所有参数,例如BertConfig。您不 必总是自己实例化这些配置,特别是如果您使用的是未经任何修改的预训练的 模型,创建模型将自动负责实例化配置(它是模型的一部分) tokenizer类,它存储每个模型的词汇表,并在要输送到模型的词汇嵌入索引 列表中提供用于编码/解码字符串的方法,例如BertTokenizer所有这些类都可以从预训练模型来实例化,并使用两种方法在本地保存: from_pretraining。允许您从一个预训练版本实例化一个模型/配置/tokenizer,这个预训练版本可以由库本身提供(目前这里列出了 27个模型), 也可以由用户在本地(或服务器上)存储, save_pre training ()允许您在本地保存模型/配置/t okenizer,以便可以使用 from_pre training。重新加载它。我们将通过一些简单的快速启动示例来完成这个快速启动之旅,看看如何实例 化和使用这些类。其余的文件分为两部分:主要的类详细介绍了三种主要类(配置、模型、tokenizer)的公共功能/方法/属 性,以及一些作为训练工具提供的优化类,包引用部分详细描述了每个模型体系结构的每个类的所有变体,特别是调用它 们时它们期望的输入和输出。快速入门:使用这里有两个例子展示了一些Bert和GPT2类以及预训练模型。BERT示例让我们首先使用BertTokenizer从文本字符串准备一个标记化的输入(要输入 给BERT的标记嵌入索引列表)import torchfrom transfanners import B便tTokenizerj. BertModelj BertForMaskedLN#強如呆您想T磁轴備臥膨以F步舷叭import logginglagging basicConfie (level=logging INFO)#加载濒谶练的模璽燥疋器俩範tokenizer - BertTokenizer. Fromi_pretrained( bert-bsse- uncased )#抹疋繼Atext = rpCLS Who was Zlim Henson ? SEP Jim Henson was a puppeteer SEPtokeniz= tok eni zer. tckeni ze (text)#用他話亡吐柑囉葢我怕试图预阀前拣疋inaEked_ind:ax = Stakenized_tertmaeked_indeic = MASK assert token ized_text = CL51, who, was, im, hen sonR SEP, jinT MASK1,#棒穌疋转换杰词汇索戟indexed_tokens = tokenizer.ton vert_token5_tc_ids(tokenized_text #走去与第一超輕第二貝箱茨的g于A相素金6競近Eegjnent_id = 0, 0扌 &t &r &t 叭 0lt 1_, lj, 1 1# 1, 1#瞰魏入转換卿屮&怅璧tok&rii_tenisor = torch .tens;or( ifideMedl_oken)segment s_t ensors = torch 七亡110 ir(吕EgTHErrts;_ii)让我们看看如何使用BertModel在隐藏状态下对输入进行编码:model 二 BertModel 1FFiDni_piEt:Eiiritcii(btF_t=t3BieLinic:B5iU!dP )#務樓螯鮫豊為评牯模武#在淨姑鬭间有可苒魏曲结果这是餵重要曲fmodel evs丄()#龍果你高GPS耙橫音东胚寵舷在w罰上tokens_tenisor = tokens_tensor 七0( ud日、)se gment: s_t en sors = s egment s_te ns ors 上0(匸11门3)model 七口( tucl 护顾碍丁:尉艙矮竝谿證with torchwna gradO:#眉黃鑰入的坪缁运包 匾諮殛wiMs艾档罕簧畢outputs = nKdle 1 (token s_ten&or, token_ty pe_ids=segments_tensors)沖 Trrm e r餾-逬云程:#盲关橫盲鹽出的悻细這总、礁違屋樓里X侶字鹫击。在我箱的巒子中,券_件五洗自才十横斜潟一层曲觀第捉encoded_layers 二 outputs0#凉加擀怨L/?也瞬廻埃轿折批璧大心、贰爲枚度、議壁塗遵维浅、赣山七心吋assert tuplefencoded_layers 名rp) = (1 len(indexeci_tcRens) f Mode 1 configlii:kcreri_百:Lee)以及如何使用BertForMaskedLM预测屏蔽的标记:#勲载極锻礬樓璽浚垦model = BertForHaskedLM firom_pretrained ( bert-base-uncased1 model亡丫目1()#如果林靑GPU,杷橫肓东站都藏在z曲tokenis_tensor = 七okens_t:enso厂.to( 1 cuda)5Eiments_tenisors = segments_ten5ors.to( cudaF )model.to(cudar)#僉稱廣粪榇远with torrh.no_grad():outputs = model(tokens_tensorf taken_type_ids=segment5_tensars) predictions = outputs0#髓认财7能橫勢hB沁中predicted_ind亡x = torch 冃厂百曲3只(|厂吕(匚:七匚011百0 maskedlrdex) .iizeiniOpredicted_taken = tokenizer 匚onvert_ids_ta_tokens(predicted_index) assert predicted_tckien = 1 hensonOpenAI GPT-2下面是一个快速开始的例子,使用GPT2Tokenizer和GPT2LMHeadModel类以及OpenAI的预训练模型来预测文本提示中的下一个标记。首先,让我们使用GPT2Tokenizerlinp-ort torchfrom tranforme rs import GPIZTokenize.GPT Z LMHe ad Model# 喝 鈿黑懲老了羅发生施信息埔按以F歩勲口翻萤inpcrt loggingLogging. basic 匚 0 nfig (level=loggin g. INFO-)# 加沁燼摟於倔重?tok-en izer =五 PT 2T ok&nj zer from_prt rai ned (1 gp2)te)ct = Htio W33 Jim Hensan ? lim Henson was 目 lndexed_token5. = tokenizer .encode (text)# Torch tensortoik-eri5_tn5or = torch 亡nsorind-eKed_tokeras)让我们看看如何使用GPT2LMHeadModel生成下一个跟在我们的文本后面的token:model = GPT2LMHeadMadel.fram_pretrained(gpt2)#棒模壁養亶为讦洁議武#在评応期風有口再魏前结果这金氟豎要削:model亡33丄)#如黒倦甫GPtA杷橫看东酋熬感左站上tokens_tensor = tokens_tensor七0(tudB)model.to(Rcuda)#磁橫育掠汜with torch.no_grad(:outpjts = mo d el(tok en s_ten sor)predictions = outputs0#很鈕潢巒前下一f于词(在我扪前谶于宁.垂屮世于诃predicted_index = 七orch.argmax(predictions0j:).itemCpredict ed_text = tokeni zer. dec-od e CindeMed_tokEri5 + pre dictel_ index) assert predicted_tewt = Mho vas lim Henson? lim Henson a man1每个模型架构(Bert、GPT、GPT-2、Transformer XL、XLNet 和 XLM)的每个模 型类的示例,可以在文档中找到。使用过去的GPT-2以及其他一些模型(GPT、XLNet、Transfo XL、CTRL),使用 past 或 mems属性,这些属性可用于防止在使用顺序解码时重新计算键/值对。它在生成序列时很有用,因为注意力机制的很大一部分得益于以前的计算。下面是一个使用带past的GPT2LMHeadModel和argmax解码的完整工作示例(只能作为示例,因为argmax decoding引入了大量重复):-From trsnsforniers impc t GPT2 LM-leaddelj GPTZT-okenizer import torciitoken ize r = GPT2T akeniz-er - -Fro rn_pret raj.n亡ti(mEpt2M)model = GP72 LMHea dMode 1 fron_pretrairiedC fiptZ)generated = tokenizeencodedThe Manhattan bridgecon七亡(1 = torch. tensor( g已11已1日七4past = None-For i in r-amge(l&0):print(i)outputpast = mod el(cont ext, pat=pas)tckera = torch.argmsx(outpu-s -1,:gene rated 十=tolce n tolist ()context = token亡亡z亡(軽)sequence = tokenizer. decodefeenerat-ed)print (equenice)由于以前所有标记的键/值对都包含在past,因此模型只需要一个标记作为输 入。Model2Model 示例编码器-解码器架构需要两个标记化输入:一个用于编码器,另一个用于解码 器。假设我们想使用Model2Model进行生成性问答,从标记将输入模型的问答 开始。import torch.from trdns-Foinmers import Beit七Tokenizerj Masd-el2Model#用选:鋤果強禎了鮮摂生曲涪息.報發謝尸步敷。曲import logginglogging basicCon-Fig (level=lQgging-IN FO)#拠栽漲训義模垦 念動tolcenizer = BertTokenizer.fran_pretrained( bert- bse-uncased)#朗鑼A问勘question = Who Dim Henson?emco(led_qije51 io n = token ize enc nde (questio n )#知鹼X (舍案$arsner = Jim Henson was 日 puppeteerpmrnrifl-anidpr = tnkni ?r .prirnrlF(an?wpr)#解融A霽捧为啓帀活酬蛊questionteniscr = torch 七已1:50厂(u门uocifdRuhticjn nswer_tenisoir = tcfrc hi. te n sor( encod e d_an swe r )让我们看看如何使用Model2Model获取与此(问题,答案)对相关联的loss值:非为了计算嶷先,我頼議要向解罔器提嶺送言樓璽掠签模登主威前抵溉心Clm_labels = encod史d_answerlatbels_tensor = torch tEri!Sor(Lii_10bei.51)#那载義训絲無璽破蓟model = ModeliModel于厂0!1_3亡七厂日:1|1亡1(匕亡厂七-13日亡-1111:日亡0assert predicted_token = jim*
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!