我有一个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任务使用的所有核心包更新为最新版本,现在运行时是一样的.虽然我仍然不知道哪个包裹是负责的,现在可能不重要了.

MS Excel comparison of package versions comparison of package versions

推荐答案

这很可能是由于两种环境的差异.

You can run %pip list in the notebook and the equivalent of pip list in the other environment and compare.
One of them may be has flawed code or doesn't work optimally with the other versions of the involved packages.

Python相关问答推荐

Locust请求中的Python和参数

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

如何比较numPy数组中的两个图像以获取它们不同的像素

如何从具有不同len的列表字典中创建摘要表?

Python—从np.array中 Select 复杂的列子集

如何保持服务器发送的事件连接活动?

dask无groupby(ddf. agg([min,max])?''''

在极中解析带有数字和SI前缀的字符串

Maya Python脚本将纹理应用于所有对象,而不是选定对象

Flask Jinja2如果语句总是计算为false&

如何在海上配对图中使某些标记周围的黑色边框

通过追加列表以极向聚合

在极点中读取、扫描和接收有什么不同?

无法在盐流道中获得柱子

具有不匹配列的2D到3D广播

在聚合中使用python-polars时如何计算模式

Scipy.linprog的可行性有问题吗?(A_ub@x0<;=b_ub).all()为True-但是-linprog(np.zeros_like(X0),A_ub=A_ub,b_ub=b_ub)不可行

如何通过特定导入在类中执行Python代码

Groupby并在组内比较单独行上的两个时间戳

按最大属性值Django对对象进行排序