Coder Social home page Coder Social logo

nlpboss's Introduction

介绍

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 = "[email protected]" # 这个是账号

receive_email = ["[email protected]", "[email protected]", "[email protected]"] # 这个是需要发送给的人

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大哥给包取的名字,🐶

nlpboss's People

Contributors

yuanzhoulvpi2017 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

caoyingfeng

nlpboss's Issues

logging_steps 和 on_log 函数的关系

作者你好,logging_steps是每个多少步打印一次日志,我是不是可以这样理解,每隔logging_steps步就会调用一次on_log的callback函数。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.