Google Cloud实例中安装sentence-transformers与torch时遇资源错误求助
看起来你在Google Cloud实例上安装sentence-transformers和PyTorch时碰到了挺闹心的资源问题,我来帮你梳理下原因和解决办法~
首先先来拆解你遇到的两个核心错误:
unsuccessful initial attempt using frozen solve. Retrying with flexible solve.
unsuccessful attempt using repodata from current_repodata.json retrying with next repodata source
collecting package metadata (repodata.json): \Killed
这个Killed提示大概率是内存不足导致系统强制终止了conda的进程;而后来换N2实例后出现的:
ERROR: Could not install packages due to an EnvironmentError: [Errno 28] No space left on device
则是明确的磁盘空间不足问题——Google Cloud的默认启动盘通常只有10GB左右,装PyTorch、sentence-transformers这类依赖较多的机器学习包完全不够用,哪怕你换了更高配置的实例,磁盘没扩容还是会出问题。
下面是具体的解决步骤:
第一步:先确认当前资源使用情况
先通过SSH登录实例,用两个命令排查问题根源:
- 查看磁盘空间:
df -h,重点看根目录(/)的可用空间,如果Used占比超过90%就是磁盘不够 - 查看内存使用:
free -h,如果Mem的available接近0,说明内存不足
第二步:扩展实例的磁盘空间(最关键)
- 先停止你的Google Cloud实例(控制台操作:进入VM实例页面,选中目标实例,点击顶部的「停止」按钮)
- 切换到「磁盘」标签页,找到该实例对应的启动盘,点击「编辑」
- 修改「磁盘大小」,建议至少改成50GB以上(机器学习包占用空间不小),然后保存
- 重新启动实例,登录后执行命令扩展分区(以Ubuntu系统为例):
sudo resize2fs /dev/sda1(如果你的磁盘路径不是/dev/sda1,可以用lsblk命令确认)
第三步:针对不同安装方式的优化方案
如果你想用conda安装:
- 先更新conda到最新版本,避免旧版本的bug:
conda update -n base -c defaults conda - 如果还是碰到内存不足被kill的情况,可以临时创建swap分区(虚拟内存):
sudo fallocate -l 16G /swapfile # 创建16GB的swap文件,可按需调整 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - 再尝试安装:
conda install -c conda-forge sentence-transformers pytorch
如果你想用pip安装(不用conda):
- 先升级pip:
pip install --upgrade pip - 安装时加上
--no-cache-dir参数,避免缓存安装包占用额外空间:pip install --no-cache-dir sentence-transformers torch
额外推荐:用Google Cloud深度学习镜像
如果你经常做机器学习任务,直接创建基于Deep Learning VM Image的实例会更省心——这类镜像已经预装了PyTorch、sentence-transformers以及常用的依赖库,而且默认配置了足够的磁盘空间,不用自己折腾安装。
备注:内容来源于stack exchange,提问作者User 19826

