You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TQDM进度条卡在0%无变化,训练迭代无进展求助

训练进程卡住问题排查

尝试执行10轮训练,但全程无进展,当前卡在第1轮训练,终端输出如下:

Training...
0%| | 0/563 [00:00<?, ?it/s]

等待20分钟后进度条仍无任何变动,训练函数代码如下:

# 训练函数返回所有已完成迭代的训练损失值列表
# 执行训练迭代的函数
def train(train_data_loader, model):
    print('Training...')
    global train_itr
    global train_loss_list
     
    # 初始化tqdm进度条
    prog_bar = tqdm(train_data_loader, total=len(train_data_loader))
    
    for i, data in enumerate(prog_bar):
        optimizer.zero_grad()
        images, targets = data
        
        images = list(image.to(DEVICE) for image in images)
        targets = [{k: v.to(DEVICE) for k, v in t.items()} for t in targets]
        loss_dict = model(images, targets)
        losses = sum(loss for loss in loss_dict.values())
        loss_value = losses.item()
        train_loss_list.append(loss_value)
        train_loss_hist.send(loss_value)
        losses.backward()
        optimizer.step()
        train_itr += 1
    
        # 在进度条旁更新每轮迭代的损失值
        prog_bar.set_description(desc=f"Loss: {loss_value:.4f}")
    return train_loss_list 

排查方向

  • 数据加载阻塞:单独测试train_data_loader的遍历,检查是否存在数据集路径错误、单样本体积过大、IO性能瓶颈或预处理逻辑死循环。
  • 设备迁移异常:验证image.to(DEVICE)和目标数据的设备迁移操作,检查GPU驱动、CUDA版本与PyTorch的兼容性,排除硬件层面的阻塞。
  • 模型前向传播故障:取单个batch数据单独执行模型前向传播,排查模型结构是否存在无限循环、权重文件损坏或依赖外部资源的情况。
  • 全局变量干扰:train_itr和train_loss_list为全局变量,尝试改为函数内部维护或参数传入,排除全局状态冲突导致的异常。
  • tqdm显示延迟:在循环内部添加打印语句(如print(f"完成第{i}次迭代")),确认是真卡住还是终端显示问题。
  • 反向传播阶段问题:临时注释losses.backward()和optimizer.step(),观察循环是否能推进,定位梯度计算或优化器更新环节的阻塞点。

内容的提问来源于stack exchange,提问作者Sai Eshwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:40:27