Skip to content

yuanzhoulvpi2017/nlpboss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

介绍

huggingfacetransformers包的Trainer类,写的一个可以通过QQ邮箱📮发送训练log的callback函数。

背景

  1. 经常,有时候,训练一个模型,要几十个小时,训练的时间特别久。
  2. 但是我又不可能一直在机器旁边。
  3. 我也不太愿意去远程电脑,感觉太麻烦了。
  4. 但是,我又希望当达到模型训练达到一定steps的时候,可以通知我一下。

于是我写了一个callback函数,实现这个功能。 当达到一定的steps之后,解析logs,转换成html,通过邮箱发送。

效果

  1. 第一个表为训练集上的表现
  2. 第二个表为测试集上的表现
  3. 第三个表为训练结束后,整体的表现

操作

1. 安装nlpboss

pip install nlpboss==1.0.0 -i https://pypi.org/simple

2. QQ邮箱📮生成授权码教程

这里提供一个QQ邮箱的生成授权码的教程:https://zhuanlan.zhihu.com/p/356769096

3. 初始化callback

from nlpboss.callback import SendEmailCallback

send_key = "fmlkaxxxxxxxjfjh" # 这个是生成授权码
send_email = "1582034172@qq.com" # 这个是账号

receive_email = ["yuanxxxxxx@outlook.com", "huxxxxxxx@icloud.com", "1582034172@qq.com"] # 这个是需要发送给的人

mlc = SendEmailCallback(password=send_key, account=send_email, receive_email=receive_email)

4. 把callback放到Trainer的里面

from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer

# 注意这里的`eval_steps`、`logging_steps`、`save_steps`都是为100,也就是说,每隔100次,我们这`callback`就会被唤起,然后发送信息
training_args = TrainingArguments(
    evaluation_strategy="steps",
    eval_steps=100,
    logging_steps=100,
    save_steps=100,
    save_total_limit=3,  
    jit_mode_eval=True,
    fp16=True,
)
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_text["train"],
    eval_dataset=tokenized_text["test"],
    tokenizer=tokenizer,
    data_collator=data_collator,
    compute_metrics=compute_metrics,
    callbacks=[mlc]  #<------------------------------------ 在这里写上实例化的对象
)

trainer.train()

注意⚠️

  1. 当前只支持QQ邮箱.
  2. 不建议邮箱发送的过于频繁。
  3. QQ邮箱给的QQ邮箱发送的时候,展示效果最好,发送给别的域名的邮箱,展示效果一般,而且延迟很高。

最后

  1. 本包的一些功能其实都是我自己使用的。说白了,就是图一乐🤪,且我觉得适合我的。后面会继续完善相关nlp小功能。
  2. 感谢chensaics大哥给包取的名字,🐶

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages