训练模型时,wandb关闭问题。你以为加了一句 wandb = None 就能关闭了吗?

wandb关闭问题

最近在训练模型的时候,总是弹出让我登录wandb官网,先暂且不谈使用wandb的好处。

第一次就把wandb注册了,记得好像需要挂VPN才可以访问。

但是后来才发现,每一次进行训练都会出现wandb: Currently logged in as: liudawei. Use `wandb login --relogin` to force relogin.这就意味着每次都得登录一下,虽说登录可以看到训练的状态,是个非常好的工具,但每次都登录有点浪费时间了。

其他博客说明 这么关闭wandb

在网上找了好多好多篇博客,几乎每一片都是说明在两处代码的地方加上wandb = None

第一处:utils/loggers/wandb/wandb_utils.py

try:
    import wandb

    assert hasattr(wandb, '__version__')  # verify package import not local dir
except (ImportError, AssertionError):
    wandb = None
# 添加以下语句
wandb = None

第二处:utils/loggers/ __init __.py

try:
    import wandb

    assert hasattr(wandb, '__version__')  # verify package import not local dir
    if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in {0, -1}:
        try:
            wandb_login_success = wandb.login(timeout=30)
        except wandb.errors.UsageError:  # known non-TTY terminal issue
            wandb_login_success = False
        if not wandb_login_success:
            wandb = None
except (ImportError, AssertionError):
    wandb = None
# 添加以下语句
wandb = None

然而我发现并没有解决问题。

其实是这么关闭wandb

第一处:utils/loggers/wandb/wandb_utils.py

# try:
#     import wandb
# 
#     assert hasattr(wandb, '__version__')  # verify package import not local dir
# except (ImportError, AssertionError):
#     wandb = None
# 添加以下语句
wandb = None

第二处:utils/loggers/ __init __.py

# try:
#     import wandb
# 
#     assert hasattr(wandb, '__version__')  # verify package import not local dir
#     if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in {0, -1}:
#         try:
#             wandb_login_success = wandb.login(timeout=30)
#         except wandb.errors.UsageError:  # known non-TTY terminal issue
#             wandb_login_success = False
#         if not wandb_login_success:
#             wandb = None
# except (ImportError, AssertionError):
#     wandb = None
# 添加以下语句
wandb = None
### 集成WandB与Transformers库进行模型训练 为了在使用Hugging Face的Transformers库进行训练集成WandB(Weight and Biases),可以遵循以下方法来记录实验数据并监控训练过程。这不仅有助于跟踪超参数和损失函数的变化,还能可视化模型性能。 #### 安装必要的软件包 首先,确保安装了`transformers`以及`wandb`这两个Python包: ```bash pip install transformers wandb datasets ``` 接着,在启动新的训练脚本之前初始化WandB项目,并配置环境以便于后续操作能够自动上传日志信息到指定平台。 #### 初始化WandB项目 通过调用`wandb.init()`函数设置项目的名称和其他选项,比如实体名(团队或个人账户)、组别标签等。此步骤通常放置于整个程序入口处附近的位置执行一次即可。 ```python import wandb wandb.init(project="my_transformer_project", entity="your_entity_name") ``` #### 使用Trainer类中的回调机制 当采用Hugging Face提供的高级API——即`Trainer`接口来进行微调或其他形式的学习任务,可以通过定义自定义回调的方式轻松入对WandB的支持。具体做法是在创建`Trainer`实例的候传入一个包含了特定逻辑处理的对象列表作为参数之一。 下面是一个完整的例子展示怎样将上述提到的功能组合起来完成一项简单的文本分类工作流: ```python from transformers import TrainerCallback, TrainingArguments, Trainer from transformers import AutoModelForSequenceClassification, AutoTokenizer from datasets import load_dataset class WandBCallback(TrainerCallback): def on_log(self, args, state, control, logs=None, **kwargs): if self.trainer.is_world_process_zero(): wandb.log(logs) model_checkpoint = "distilbert-uncased" tokenizer = AutoTokenizer.from_pretrained(model_checkpoint) model = AutoModelForSequenceClassification.from_pretrained( model_checkpoint, num_labels=2) dataset = load_dataset('glue', 'mrpc') tokenized_datasets = dataset.map(lambda examples: tokenizer(examples['sentence1'], examples['sentence2'], truncation=True), batched=True) training_args = TrainingArguments(output_dir="./results", evaluation_strategy="epoch", per_device_train_batch_size=8, logging_steps=10) trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_datasets["train"], eval_dataset=tokenized_datasets["validation"], callbacks=[WandBCallback()] ) trainer.train() ``` 这段代码片段展示了如何利用`TrainerCallback`子类实现了一个专门用于向WandB发送更新消息的小部件;每当框架内部触发相应的事件(例如每轮迭代结束)就会激活此类内的相应方法从而把最新状态同步给远程服务器[^3]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值