现在发现一个问题,就是安装深度学习包的时候,其实你只要是conda install或者pip install,大多数包都是能装上的,装不上你后续继续调整安装都行。
但是安装上并不是就完事,因为深度学习特别是pytorch或者numpy库,他们底层是C或者C++如果出现了内存错误,极易导致运行时崩溃,甚至导致结果错误。毕竟指针是个不安全的东西。
错误:windows因为内存问题自动杀掉进程

安装的时候要注意:
python
conda deactivate
conda remove -n test --all
# 全清:索引缓存+旧安装包压缩包+残留破损包、临时文件
conda clean --all -y
pip cache purge
conda create -n test python=3.11
conda activate test
安装包的时候要优先安装涉及C或C++的库,而且底层涉及C++和C的库一定要用conda装,这样依赖冲突概率较低
python
# 1、GPU框架(官方源,不加forge)
conda install pytorch torchvision pytorch-cuda=11.8 -c pytorch -c nvidia
# 2、数值底层(必加forge)
conda install pandas numpy scipy pyarrow numba -c conda-forge
楼主研究强化学习,直接就安装stable-baseline3,因为安装它直接就会顺带安装了pytorch和numpy这些
python
conda install stable-baselines3
因为有很多不常用包conda不一定有必须pip装,但是pip装的时候又会带上别的依赖,所以conda必须是装,装完再pip装别的包,--no-deps的目的是不安装除spicy之外的别的包,防止污染环境。别的同理
python
#pip包一定要加 --no-deps
pip install --no-deps aaa
#conda装也要--no-update-deps,因为怕污染前面装的pytorch或者numpy环境,但后续装小包建议用pip
conda install aaa conda-forge --no-update-deps
而且像是numpy会有两个版本,一个是MKL,另一个是OpenBLAS,MKL版本会在windows遇到奇葩问题。就是如果装了MKL版本,会线程死锁,直接崩。
python
import numpy as np
# 纯内存无IO测试,能跑=磁盘/保存代码问题,崩=数据/线程问题
x = np.linspace(0,10,10000)
print(x)
y = 2*x**2 + 3*x + np.random.randn(10000)
coef = np.polyfit(x,y,2)
print("拟合系数:",coef)
输出:
[0. 0.11111111 0.22222222 0.33333333 0.44444444 0.55555556
0.66666667 0.77777778 0.88888889 1. ]
MKL版本的numpy并没有输出拟合系数,因为线程死锁卡死了,linux则不会
python
import numpy as np
print(np.__config__.show())
日志输出看openblas configuration": "unknown",如果是unknown则是因为numpy是MKL版本。
坑2
如果想深度学习长期后台运行,则需要电源设置,睡眠改为从不

更高级电源设置,


超级精华
如果当你使用conda混装,还是会出现各种运行时崩溃问题。不解的时候,我建议,全部改为在conda环境中,使用pip安装。
因为conda很多包默认就是mkl模式,所以会跟pip下安装的OpenBLAS包死锁,安装的时候发现不了问题,但是运行时,不知何时就会崩溃。
当还是运行时崩溃,那就全部包pip装。
pip安装大包pip install stable-baseline3,这个包就会补充很多深度学习的依赖
pip通过--no-deps安装小包,防止替换之前大包安装适配好的numpy那些版本,除了大包指令,不加--no-deps,小包指令全部要加,主要为了防止覆盖安装。
以上所说大包,就是你安装的东西自带了很多依赖,他们一起装,毕竟经过验证,会稳定很多
注意:如果出现C相关错误,打开你的conda环境,看是否有vcruntime140.dll和msvc140.dll,这两个包最容易冲突,如果冲突了,请自行查找将其备注加上--backup--nouse,就是不使用它了
