首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 Hugging Face 进行预训练模型微调:NLP任务轻松搞定!

【今日python】用HuggingFace进行预训练模型微调:NLP任务轻松搞定!

咱今天唠唠HuggingFace,这玩意儿好用,能帮你快速搞定NLP任务。啥是NLP?自然语言处理呗,让电脑理解人话的玩意儿。以前训练NLP模型,那叫一个费劲,现在有了预训练模型,咱稍微调教调教就能用了,就像训猫,已经会抓老鼠了,你再教它握手就行。

##安装Transformers库

首先,得装上transformers库,就像给猫买个猫爬架。

pipinstalltransformersdatasets

装完就完事了,简洁明了。

##选择预训练模型

HuggingFace就像个模型动物园,啥品种都有。咱得选个合适的,比如bert、roberta啥的,就像挑猫,看你喜欢橘猫还是英短。这里咱用bert-base-uncased练练手。

##准备数据集

数据就像猫粮,模型得吃数据才能长大。HuggingFace的datasets库能方便地加载各种数据集,就像自动猫粮机,省心。

fromdatasetsimportload_dataset

dataset=load_dataset("glue","mrpc")#用glue的mrpc数据集做例子

这数据集是判断两句话是不是一个意思的,挺有意思的。

##数据预处理

数据拿到手,得洗洗干净才能喂给模型,就像猫粮得泡软了再给小猫吃。这里用到Tokenizer,把句子变成模型能理解的数字。

fromtransformersimportAutoTokenizer

tokenizer=AutoTokenizer.from_pretrained("bert-base-uncased")

deftokenize_function(examples):

returntokenizer(examples["sentence1"],examples["sentence2"],truncation=True)

tokenized_datasets=dataset.map(tokenize_function,batched=True)

tokenizer就像个粉碎机,把句子打碎成一个个小块儿。truncation=True是说句子太长了就砍掉一部分,省得模型消化不良。

##微调模型

重头戏来了,微调!就像教猫握手,得给点奖励,让它知道啥是正确的。这里用Trainer,这玩意儿把训练过程都封装好了,方便得很。

fromtransformersimportAutoModelForSequenceClassification,TrainingArguments,Trainer

model=AutoModelForSequenceClassification.from_pretrained("bert-base-uncased",num_labels=2)#2表示二分类

training_args=TrainingArguments(output_dir="test_trainer",evaluation_strategy="epoch")

trainer=Trainer(

model=model,

args=training_args,

train_dataset=tokenized_datasets["train"],

eval_dataset=tokenized_datasets["validation"],

)

trainer.train()

num_labels=2是因为咱是二分类问题,TrainingArguments里可以设置各种训练参数,就像调节猫粮的口味和份量。

##评估模型

模型训练好了,得看看它学得咋样,就像看看猫握手练得咋样。

importevaluate

metric=evaluate.load("glue","mrpc")

defcompute_metrics(eval_pred):

predictions,labels=eval_pred

predictions=np.argmax(predictions,axis=1)

returnmetric.compute(predictions=predictions,references=labels)

trainer=Trainer(

model=model,

args=training_args,

train_dataset=tokenized_datasets["train"],

eval_dataset=tokenized_datasets["validation"],

compute_metrics=compute_metrics,#评估指标

)

trainer.evaluate()

用evaluate库来评估,就像用逗猫棒测试猫的反应速度。

##保存模型

最后,把训练好的模型保存下来,下次就能直接用了,就像把训练好的猫放进猫包里,随时可以带出去溜达。

trainer.save_model("my_fine_tuned_model")#保存到my_fine_tuned_model目录

温馨提示:数据集要和任务匹配,别拿狗粮喂猫。模型也要选合适的,别拿捕鼠夹训练金鱼。

咱今天就唠到这儿,下次再聊别的。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OfqKAW-9XmtWcAG3xwbnnZGQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券