与命令行相比,相同的 python 代码在 Jupyter Notebook 中运行速度慢 20 倍

问题描述 投票:0回答:1

我有一个 python 代码,它使用 Hugging Face Transformers 在 PDF 文档上运行 NLP 任务。当我在 Jupyter Notebook 中运行此代码时,需要超过 1.5 小时才能完成。然后,我设置相同的代码以通过本地托管的 Streamlit Web 应用程序运行。令我惊讶的是,它运行了不到 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安装和venv之间的

pip list
的输出,发现了一些差异。因此,我将 NLP 任务使用的所有核心包更新为最新版本,现在运行时是相同的。虽然我仍然不知道是哪个包造成的,但现在可能已经不重要了。

MS Excel 软件包版本比较

python jupyter streamlit
1个回答
0
投票

这很可能是由于两个环境的差异造成的。

您可以在笔记本中运行

%pip list
并在其他环境中运行
pip list
的等效项并进行比较。
其中之一可能存在代码缺陷,或者无法与相关软件包的其他版本完美配合。

© www.soinside.com 2019 - 2024. All rights reserved.