【今日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目录
温馨提示:数据集要和任务匹配,别拿狗粮喂猫。模型也要选合适的,别拿捕鼠夹训练金鱼。
咱今天就唠到这儿,下次再聊别的。
领取专属 10元无门槛券
私享最新 技术干货