【发布时间】:2021-12-16 23:06:04
【问题描述】:
我有一个包含大型 PyTorch 模型检查点的 Python 包。我尝试在我的setup.py 中包含这些内容
package_data = {'mypackage': ['model_weights/*', 'model_weights/sequential_models*']},
现在的问题是,每当我尝试通过pip install mypackage/ --no-cache-dir 从源安装时,我都会得到MemoryError。我尝试使用--verbose 进行调试,发现这发生在
creating '/tmp/pip-wheel-bs29bp6a/tmpp0itbxn1/mypackage-1.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'mypackage/model_weights/distilled_model.pt'
adding 'mypackage-1.0.dist-info/RECORD'
Traceback (most recent call last):
...
File "/zhome/1d/8/153438/miniconda3/envs/testenv/lib/python3.9/zipfile.py", line 1127, in write
data = self._compressor.compress(data)
MemoryError
Building wheel for mypackage (PEP 517) ... error
ERROR: Failed building wheel for mypackage
我真的只希望安装将model_weights/ 中的文件复制到安装目录。将它们包括在轮子中似乎是不可能的。
在运行pip install 时有没有办法抑制这一步?该包只会作为源分发,绝不会在 PyPI 上分发,因为无论如何model_weights 文件都太大了。
【问题讨论】:
-
我认为从架构的角度来看,最好不要将模型包含在源代码中。有点像您使用许多其他 ML 和 NLP 包。它们包含逻辑但不包含要采取行动的数据。以后使用包时需要用户自己获取。
-
知道如何最好地实现它吗?我没有办法托管它们以按需缓存,这就是为什么我将它们包含在包源中以供下载。
-
我不确定它是否适合您,但过去我曾在 GitHub 存储库和 Google Drive 中托管过大型文件,例如预先训练的模型权重。
-
我不推荐它,可能有更好的方法,也可能现在不再起作用,但短期内可能会有所帮助:stackoverflow.com/a/58290113
标签: python pip pytorch setuptools