我有一个Python代码,它使用拥抱Face Transformers在PDF文档上运行NLP任务.当我在Objyter Notebook中运行此代码时,它需要超过1.5小时才能完成.然后我设置了相同的代码,通过本地托管的Streamlit Web应用程序运行.令我惊讶的是,它运行了不到5分钟!
我认为我把苹果与苹果进行比较是因为:
- 我在每种情况下分析相同的PDF文档
- 由于Streamlit应用程序是本地托管的,所有计算都在我的笔记本电脑CPU上运行.我没有使用任何拥抱脸虚拟资源.高频模型正在下载到我的电脑上.
- 在我的计算机上,
- 这个
.py
文件是使用'streamlit—juypter'从CompanyterNotebook中生成的,它只是在Notebook中获取Python代码,并添加一些Streamlit语句,
因此,本质上相同的代码使用相同的硬件在相同的数据上运行.
我能想到的唯一差异可以解释这一点是:
- Streamlit正在从命令行运行一个
.py
Python文件,而不是.ipynb
笔记本. - Streamlit正在虚拟环境中运行,而不是我的Python安装
有人经历过这样的事情吗?从命令行运行相同的python代码是否会导致速度提高20倍?
Edit:按照@ Wayne的建议,我比较了Python主安装和venv之间的输出pip list
,发现了一些差异.因此,我将NLP任务使用的所有核心包更新为最新版本,现在运行时是一样的.虽然我仍然不知道哪个包裹是负责的,现在可能不重要了.