以下为学习百度AIstudio的一个NER教程的记录,源代码地址为:
https://aistudio.baidu.com/aistudio/projectdetail/5930239?forkThirdPart=1
在云端跑的很顺,然后想放到本地跑……
首先在线跑通了,然后在BML里面新建终端,导出环境里面所需要的包,打算去本地新建一个虚拟环境
pip freeze > requirements.txt
python --version
然后在本地新建一个虚拟环境
pip install -r requirements.txt
遇到了这个问题
Processing g:\tmp\output\deps\ipykernel-6.9.1-py3-none-any.whl
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '\\tmp\\output\\deps\\ipykernel-6.9.1-py3-none-any.whl'
chatgpt的回答如下
这个错误信息表明,pip 在尝试安装 ipykernel-6.9.1-py3-none-any.whl
包时,无法找到该包所在的目录。通常这个问题是由于 pip 缓存目录设置不当或者目录权限问题引起的。
解决这个问题的方法有两种:
清除 pip 缓存并重新安装:
这个方法会清除 pip 的缓存目录,然后重新下载安装包并进行安装。在终端中运行以下命令:
pip cache purge
pip install --no-cache-dir ipykernel==6.9.1
这个命令会清除 pip 缓存目录,然后重新下载安装 ipykernel-6.9.1-py3-none-any.whl
包。
检查目录权限:
这个方法会检查目录权限是否设置正确。在终端中运行以下命令:
ls -l /tmp/output/deps/ipykernel-6.9.1-py3-none-any.whl
这个命令会列出 ipykernel-6.9.1-py3-none-any.whl
包的详细信息,包括所有者和权限。如果该文件的所有者不是当前用户或者当前用户没有足够的权限读取该文件,则需要使用 chown
和 chmod
命令更改文件的所有者和权限。例如,以下命令会将 ipykernel-6.9.1-py3-none-any.whl
的所有者设置为当前用户:
sudo chown $USER /tmp/output/deps/ipykernel-6.9.1-py3-none-any.whl
然后,你可以再次运行 pip install ipykernel==6.9.1
命令进行安装。
尝试后无果
然后去看了下 requirements.txt
看到有两个@的
jupyter-server @ file:///tmp/output/deps/jupyter_server-1.16.0-py3-none-any.whl
ipykernel @ file:///tmp/output/deps/ipykernel-6.9.1-py3-none-any.whl
把@后面的删掉了,果真可以正常pip install了
但是pip install完成之后…
ERROR: Ignored the following versions that require a different python version: 0.1.0b0 Requires-Python >=3.8; 0.40.0rc1 Requires-Python >=3.8; 0.57.0rc1 Requires-Python >=3.8; 1.22.0 Requires-Python >=3.8; 1.22.1 Requires-Python >=3.8; 1.22.2 Requires-Python >=3.8; 1.22.3 Requires-Python >=3.8; 1.22.4 Requires-Python >=3.8; 1.23.0 Requires-Python >=3.8; 1.23.0rc1 Requires-Python >=3.8; 1.23.0rc2 Requires-Python >=3.8; 1.23.0rc3 Requires-Python >=3.8; 1.23.1 Requires-Python >=3.8; 1.23.2 Requires-Python >=3.8; 1.23.3 Requires-Python >=3.8; 1.23.4 Requires-Python >=3.8; 1.23.5 Requires-Python >=3.8; 1.24.0 Requires-Python >=3.8; 1.24.0rc1 Requires-Python >=3.8; 1.24.0rc2 Requires-Python >=3.8; 1.24.1 Requires-Python >=3.8; 1.24.2 Requires-Python >=3.8; 2.0.0 Requires-Python >=3.8; 2.0.0rc4 Requires-Python >=3.8; 2.0.0rc5 Requires-Python >=3.8; 2.0.0rc6 Requires-Python >=3.8; 2.0.0rc7 Requires-Python >=3.8; 2.0.0rc8 Requires-Python >=3.8; 2.0.1 Requires-Python >=3.8; 2.0.2 Requires-Python >=3.8; 2.0.3 Requires-Python >=3.8; 2.0.4 Requires-Python >=3.8; 2.0.5 Requires-Python >=3.8; 2.0.6 Requires-Python >=3.8; 2.0.7 Requires-Python >=3.8; 2.1.0 Requires-Python >=3.8; 2.2.0 Requires-Python >=3.8; 2.2.1 Requires-Python >=3.8; 2.3.0 Requires-Python >=3.8; 2.4.0 Requires-Python >=3.8; 2.5.0 Requires-Python >=3.8; 2.7 Requires-Python >=3.8; 2.7.1 Requires-Python >=3.8; 2.7rc1 Requires-Python >=3.8; 2.8 Requires-Python >=3.8; 2.8.1 Requires-Python >=3.8; 2.8.1rc1 Requires-Python >=3.8; 2.8.2 Requires-Python >=3.8; 2.8.3 Requires-Python >=3.8; 2.8.4 Requires-Python >=3.8; 2.8.5 Requires-Python >=3.8; 2.8.6 Requires-Python >=3.8; 2.8.7 Requires-Python >=3.8; 2.8.8 Requires-Python >=3.8; 2.8rc1 Requires-Python >=3.8; 2023.3.0 Requires-Python >=3.8; 2023.4.0 Requires-Python >=3.8; 3.0 Requires-Python >=3.8; 3.0b1 Requires-Python >=3.8; 3.0rc1 Requires-Python >=3.8; 3.1 Requires-Python >=3.8; 3.1rc0 Requires-Python >=3.8; 3.6.0 Requires-Python >=3.8; 3.6.0rc1 Requires-Python >=3.8; 3.6.0rc2 Requires-Python >=3.8; 3.6.1 Requires-Python >=3.8; 3.6.2 Requires-Python >=3.8; 3.6.3 Requires-Python >=3.8; 3.7.0 Requires-Python >=3.8; 3.7.0rc1 Requires-Python >=3.8; 3.7.1 Requires-Python >=3.8; 4.0.0a33 Requires-Python >=3.8; 4.0.0a34 Requires-Python >=3.8; 4.0.0a35 Requires-Python >=3.8; 4.0.0a36 Requires-Python >=3.8; 4.0.0a37 Requires-Python >=3.8; 4.0.0b0 Requires-Python >=3.8; 4.0.0b1 Requires-Python >=3.8; 4.18.0a1 Requires-Python >=3.8; 4.18.0a2 Requires-Python >=3.8; 4.18.0a3 Requires-Python >=3.8; 5.0.0 Requires-Python >=3.8; 5.1.0 Requires-Python >=3.8; 5.1.1 Requires-Python >=3.8; 5.1.2 Requires-Python >=3.8; 5.1.3 Requires-Python >=3.8; 5.1.4 Requires-Python >=3.8; 5.1.5 Requires-Python >=3.8; 5.12.0 Requires-Python >=3.8.0; 5.2.0 Requires-Python >=3.8; 5.3.0 Requires-Python >=3.8; 6.0.0 Requires-Python >=3.8.1; 6.17.0 Requires-Python >=3.8; 6.17.1 Requires-Python >=3.8; 6.18.0 Requires-Python >=3.8; 6.18.1 Requires-Python >=3.8; 6.18.2 Requires-Python >=3.8; 6.18.3 Requires-Python >=3.8; 6.19.0 Requires-Python >=3.8; 6.19.1 Requires-Python >=3.8; 6.19.2 Requires-Python >=3.8; 6.19.3 Requires-Python >=3.8; 6.19.4 Requires-Python >=3.8; 6.20.0 Requires-Python >=3.8; 6.20.1 Requires-Python >=3.8; 6.20.2 Requires-Python >=3.8; 6.21.0 Requires-Python >=3.8; 6.21.1 Requires-Python >=3.8; 6.21.2 Requires-Python >=3.8; 6.21.3 Requires-Python >=3.8; 6.22.0 Requires-Python >=3.8; 7.0.0a12 Requires-Python >=3.8; 7.0.0a13 Requires-Python >=3.8; 7.0.0a14 Requires-Python >=3.8; 7.0.0a15 Requires-Python >=3.8; 7.0.0a16 Requires-Python >=3.8; 7.0.0a17 Requires-Python >=3.8; 7.0.0a18 Requires-Python >=3.8; 7.0.0b0 Requires-Python >=3.8; 8.0.0 Requires-Python >=3.8; 8.0.0a1 Requires-Python >=3.8; 8.0.0a2 Requires-Python >=3.8; 8.0.0a3 Requires-Python >=3.8; 8.0.0a4 Requires-Python >=3.8; 8.0.0b0 Requires-Python >=3.8; 8.0.0b1 Requires-Python >=3.8; 8.0.0b2 Requires-Python >=3.8; 8.0.0b3 Requires-Python >=3.8; 8.0.0rc0 Requires-Python >=3.8; 8.0.0rc1 Requires-Python >=3.8; 8.0.1 Requires-Python >=3.8; 8.0.2 Requires-Python >=3.8; 8.0.3 Requires-Python >=3.8; 8.1.0 Requires-Python >=3.8; 8.1.1 Requires-Python >=3.8; 8.10.0 Requires-Python >=3.8; 8.11.0 Requires-Python >=3.8; 8.12.0 Requires-Python >=3.8; 8.2.0 Requires-Python >=3.8; 8.3.0 Requires-Python >=3.8; 8.4.0 Requires-Python >=3.8; 8.5.0 Requires-Python >=3.8; 8.6.0 Requires-Python >=3.8; 8.7.0 Requires-Python >=3.8; 8.8.0 Requires-Python >=3.8; 8.9.0 Requires-Python >=3.8
ERROR: Could not find a version that satisfies the requirement paddlepaddle-gpu==2.1.2.post101 (from versions: 1.4.0, 1.4.1, 1.5.0.post87, 1.5.0.post97, 1.5.1.post87, 1.5.1.post97, 1.5.2.post87, 1.5.2.post97, 1.5.2.post107, 1.6.0.post107, 1.6.1.post97, 1.6.1.post107, 1.6.2.post97, 1.6.2.post107, 1.6.3.post97, 1.7.0.post97, 1.7.0.post107, 1.7.1.post97, 1.7.1.post107, 1.7.2.post97, 1.7.2.post107, 1.8.0.post97, 1.8.0.post107, 1.8.1.post97, 1.8.1.post107, 1.8.2.post97, 1.8.2.post107, 1.8.3.post97, 1.8.3.post107, 1.8.4.post97, 1.8.4.post107, 1.8.5.post97, 1.8.5.post107, 2.0.0a0, 2.0.0rc1, 2.0.0, 2.0.1, 2.0.2, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.2.0rc0, 2.2.0, 2.2.1, 2.2.2, 2.3.0rc0, 2.3.0, 2.3.1, 2.3.2, 2.4.0rc0, 2.4.0, 2.4.1, 2.4.2)
ERROR: No matching distribution found for paddlepaddle-gpu==2.1.2.post101
可是我当时在云环境看python版本的时候就是3.7啊,所以conda create的时候安装了3.7
all right,升级一下
mamba install python==3.8
然后发现因为之前是3.7,好多requirements.txt里面的东西都没装上,包括ipykernel
mamba install ipykernel
(也有可能是升级了python版本,然后就是得重新装??)
然后再运行一次 pip install -r requirements.txt
然后又报了一堆错,不管了,只安装需要import的包…
呃,还是报错…… 麻了,重开吧
删掉虚拟环境 ,重新建一个,重新安装…
(难蚌,安装paddle是要pip install paddlepaddle而不是pip install paddle…在这一步浪费好多时间)
还有就是
pip install paddlepaddle-gpu==2.1.2.post101
ERROR: Could not find a version that satisfies the requirement paddlepaddle-gpu==2.1.2.post101 (from versions: 1.8.5.post97, 1.8.5.post107, 2.0.0rc1, 2.0.0, 2.0.1, 2.0.2, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.2.0rc0, 2.2.0, 2.2.1, 2.2.2, 2.3.0rc0, 2.3.0, 2.3.1, 2.3.2, 2.4.0rc0, 2.4.0, 2.4.1, 2.4.2)
ERROR: No matching distribution found for paddlepaddle-gpu==2.1.2.post101
这个把.post101
去掉就ok
突然发现vscode中,点开requirements.txt文件,会有创建环境按钮,有conda和venv选项
太折磨了,尤其最后400多MB的 paddlepaddle-gpu==2.1.2
,重新冲了五六次才成功……
何时要使用—user
在使用pip安装Python库时,如果你没有管理员权限,那么就需要使用–user选项来将库安装到你的用户目录下,而不是全局安装到系统目录。这个选项会将Python库安装到~/.local/lib/pythonX.X/site-packages/目录下,其中X.X是你的Python版本号。当你在没有管理员权限的环境中安装Python库时,使用–user选项是一种很常见的做法。例如,在使用Jupyter Notebook或Google Colab时,因为你没有管理员权限,你就需要使用–user选项来安装Python库。
还有遇到一个paddlenlp的报错
cannot import name 'einsum' from 'paddle’
,按照GitHub的issue升级到2.3.0,ok了
心态真的崩了
各种小问题不断解决
终于到了最后一步,结果怎么都搞不好啊啊啊啊啊啊啊
> 2097 outs = getattr(self, mode + '_batch')(*_inputs)
2099 if self._metrics and self._loss:
2100 metrics = [[l[0] for l in outs[0]]]
File d:\Anaconda3\envs\BaiduBilstm\lib\site-packages\paddle\hapi\model.py:1093, in Model.train_batch(self, inputs, labels, update)
1045 def train_batch(self, inputs, labels=None, update=True):
...
10402 if isinstance(x, Variable) and x.desc.type(
10403 ) == core.VarDesc.VarType.LOD_TENSOR_ARRAY:
ValueError: (InvalidArgument) The DataType of stack Op's duplicable or different slot Variable X must be consistent or reigster GetExpectedKernelType. The current variable type is (int), but the previous variable type is (int64_t). (at ..\paddle\fluid\framework\operator.cc:2049)
[operator < stack > error]
chatgpt帮我解决了这个,
这个错误信息提示在执行 stack
操作时,输入的数据类型不一致。当前变量类型是 int
,但之前的变量类型是 int64_t
。为了解决这个问题,请确保所有传递给 stack
操作的数据类型都是一致的。
在您的代码中,这个问题可能出现在数据预处理部分。在数据集类 NSR
的 __getitem__
方法中,确保返回的数据类型是一致的。例如,将返回的数据类型都转换为 int64
类型:
def __getitem__(self,index):
# 把token转为id,并按crf和decoder要求,多输出一个实际句长(后面会进行pad操作,只能在这里求实际句长)
cn_words = self.data_list.text_a[index]
labels = self.data_list.label[index]
return np.array(cn_vocab.to_indices(cn_words), dtype=np.int64), np.array([len(cn_words)], dtype=np.int64), np.array(label_vocab.to_indices(labels), dtype=np.int64)
这里,我使用了 np.array
并指定了 dtype=np.int64
以确保返回的数据类型是 int64
。
在解决数据类型不一致问题之后,您可能需要根据新的返回类型更新后续的数据处理代码。 例如,您可能需要更新 batch_fn
中的 Pad
和 Stack
操作以处理新的数据类型。
结果又来了下一个
**ValueError**
: (InvalidArgument) The number of elements (2) of 'shape' for expand_v2 op must be greater than or equal to the rank (3) of the input.
[Hint: Expected expand_shape.size() >= static_cast(x_dims.size()), but received expand_shape.size():2 < static_cast(x_dims.size()):3.] (at ..\paddle\phi\infermeta\unary.cc:462)
[operator < expand_v2 > error]
这次直接 根据 requirements.txt里面的版本 ,pip install paddlepaddle-gpu 、 paddlenlp 等
关于cudnn和cuda
去phind里面查了一下
paddlepaddle-gpu 2.3.0对应的cuda和cudnn版本
ANSWER
根据 PaddlePaddle 官方文档,PaddlePaddle-GPU 2.3.0 支持的 CUDA 和 cuDNN 版本如下:
CUDA 10.2
cuDNN 7.6.5
于是我在终端里面
mamba install cudnn=7.6.5
安装ok
Updating specs:
- cudnn=7.6.5
- ca-certificates
- certifi
- openssl
Package Version Build Channel Size
---------------------------------------------------------------------------------------------------------
Install:
---------------------------------------------------------------------------------------------------------
+ cudatoolkit 10.2.89 h74a9793_1 mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64 Cached
+ cudnn 7.6.5 cuda10.2_0 mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64 Cached
Summary:
Install: 2 packages
Total download: 0 B
---------------------------------------------------------------------------------------------------------
目前有时候找答案会局限于chatgpt,有时候还是别忘了以前的搜索习惯(GitHub issues,google,csdn,StackOverflow等等)