设置disable_tqdm=True后HuggingFace Trainer仍显示进度条,如何移除?
问题描述
在使用HuggingFace Trainer对EleutherAI/gpt-j-6B模型微调时,已在TrainingArguments中配置disable_tqdm=True,但界面仍显示进度条(见下图)。如何移除这些进度条?
配置代码如下:
training_args = TrainingArguments( disable_tqdm=True, output_dir='./checkpoints', save_total_limit=10, logging_dir='/content/logs', num_train_epochs=config["N_EPOCHS"], evaluation_strategy='epoch' save_strategy='steps', save_steps=30, logging_steps=10, overwrite_output_dir=True, per_device_train_batch_size=4, per_device_eval_batch_size=4, gradient_accumulation_steps=4, eval_accumulation_steps=4, gradient_checkpointing=True, max_grad_norm=0.5, lr_scheduler_type="cosine", learning_rate=1e-4, warmup_ratio=0.05, weight_decay=0.1, fp16_full_eval=True fp16=True, fp16_opt_level='O1', report_to=['tensorboard'] )

解决方案
disable_tqdm=True仅控制Trainer自身的进度条,底层组件(如数据集加载器、依赖库)的进度条不受该参数影响,可通过以下方式解决:
禁用数据集加载器的进度条
在加载数据集时直接传入disable_tqdm=True,避免数据集加载阶段的进度条:train_dataset = load_dataset("your_dataset_name", split="train", disable_tqdm=True) eval_dataset = load_dataset("your_dataset_name", split="test", disable_tqdm=True)若自定义了DataLoader,初始化时添加
disable_tqdm=True参数:from torch.utils.data import DataLoader train_dataloader = DataLoader( train_dataset, batch_size=training_args.per_device_train_batch_size, shuffle=True, disable_tqdm=True )全局禁用tqdm
在代码开头添加全局配置,强制关闭所有tqdm进度条:import tqdm tqdm.disable = True升级transformers依赖库
旧版本transformers存在disable_tqdm参数不生效的bug,升级到最新稳定版可解决:pip install --upgrade transformers datasets accelerate
额外注意
你的TrainingArguments代码存在两处语法错误,会导致代码无法运行,需先修正:
evaluation_strategy='epoch'末尾缺少逗号fp16_full_eval=True末尾缺少逗号
内容的提问来源于stack exchange,提问作者BlackHawk
相关产品推荐
相关产品推荐

