如何让transformers的.from_pretrained在Jupyter Notebook稳定显示下载进度
解决transformers from_pretrained进度条在Jupyter Lab内核崩溃后不显示的问题
核心原因
内核崩溃后,tqdm(transformers依赖的进度条库)的全局实例或输出缓冲区状态异常,导致后续调用时无法正常渲染进度条;同时可能伴随transformers的日志/进度条配置被意外修改。
解决方案
强制重置tqdm状态
在调用from_pretrained前添加代码,清除残留的tqdm实例并重置配置:from tqdm import tqdm # 清除所有tqdm实例 tqdm._instances.clear() # 重置tqdm全局设置 tqdm.reset()同时显式启用进度条:
from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("model_name", show_progress_bar=True) model = AutoModelForCausalLM.from_pretrained("model_name", show_progress_bar=True)重置transformers日志与输出配置
内核崩溃可能导致transformers的日志级别被调低,强制开启INFO级日志并重置输出处理器:import transformers transformers.utils.logging.set_verbosity_info() transformers.utils.logging.enable_default_handler() transformers.utils.logging.enable_explicit_format()修复输出缓冲区异常
手动设置标准输出为行缓冲,避免进度条被缓冲无法实时显示:import sys # 将stdout设置为行缓冲 sys.stdout = open(sys.stdout.fileno(), 'w', buffering=1) # 强制刷新缓冲区 sys.stdout.flush() sys.stderr.flush()彻底清理残留内核进程
在远程服务器上执行命令,找到并终止残留的Jupyter内核进程:# 查找相关进程 ps aux | grep python | grep jupyter # 终止进程(替换为实际PID) kill -9 <pid>之后重启Jupyter Lab,新建Notebook重新运行代码。
内容的提问来源于stack exchange,提问作者SensMa
相关产品推荐
相关产品推荐

