同样的Python代码在Jupyter Notebook中比命令行慢20倍
我有一段Python代码,使用Hugging Face的Transformers库来处理一个PDF文档的自然语言处理任务。当我在Jupyter Notebook中运行这段代码时,花了超过1.5小时才完成。然后我把同样的代码设置在一个本地的Streamlit网页应用上运行,结果让我惊讶,它只用了不到5分钟就完成了!
我觉得我比较的情况是一样的,因为:
- 我在每种情况下分析的都是同一个PDF文档。
- 因为Streamlit应用是本地运行的,所以所有计算都是在我的笔记本电脑的CPU上进行的。我没有使用任何Hugging Face的虚拟资源。HF模型是下载到我的电脑上的。
- Jupyter Notebook也是在我的电脑上本地运行的。
- 这个
.py
文件是通过' streamlit-juypter'从Jupyter Notebook生成的,它只是把笔记本中的Python代码提取出来,并添加了一些Streamlit的语句。
所以,基本上是同样的代码在同样的数据和硬件上运行。
我能想到的唯一可能解释这个现象的不同之处是:
- Streamlit是从命令行运行一个
.py
的Python文件,而不是.ipynb
的笔记本。 - Streamlit是在一个虚拟环境中运行,而不是在我的主Python安装中。
有没有人遇到过类似的情况?从命令行运行同样的Python代码真的能让速度提高20倍吗?
编辑:根据@Wayne的建议,我比较了我的主Python安装和虚拟环境中的pip list
输出,发现了一些差异。所以我把自然语言处理任务中使用的所有核心包更新到了最新版本,现在运行时间是一样的。虽然我仍然不知道是哪个包导致的,但现在可能也不重要了。
1 个回答
暂无回答