模型代码地址:https://github.com/qiyuan-chen/Yaya-Moss-Alpaca-LoRA
1、代码文件操作
1.1、下载zip形式的代码
1.2、解压zip文件
1.3、上传到实验室A6000集群中
2、集群中程序运行前期操作
2.1、打开Terminal,进入Yaya-Moss-Alpaca-LoRA-main文件夹。
2.2、构建以YayaMOSS为名称的虚拟环境
```python
conda create -n YayaMOSS python=3.8
2.3、查看虚拟环境是够构建成功
```python
conda env list
2.4、激活YayaMOSS虚拟环境
conda activate YayaMOSS
3、程序运行
3.1、安装requirements文件
pip install -r requirements.txt
注意:我安装时原requirements.txt文件中的peft==0.3.0.dev0
和torch==2.0.0+cu118
安装不成功,因为没有这两个版本的包,我换成了peft==0.3.0
和torch==2.0.0
。换了之后还是会报错:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
gcs-oauth2-boto-plugin 3.0 requires pyOpenSSL>=0.13, which is not installed.
gsutil 5.21 requires pyOpenSSL>=0.13, which is not installed.
因此,还需要安装一下pyOpenSSL包。
pip install pyOpenSSL
3.2、由于训练代码保存在src/train.ipynb
中,而运行.ipynb文件需要安装jupyter。
pip install jupyter notebook
注意:安装慢的可以将pip的源改成国内的源
3.3、运行jupyter
jupyter notebook
到这一步之后如果集群可以用超链接访问,可以直接用http://127.0.0.1:8888/?token=77423bd178cf44a38d74dbaa1e5bbd4f4d94c30c09f63eee
网址进入jupyter。127.0.0.1
换成集群的IP。
然而,我们的集群不行,给出的报错信息是:
询问同实验室同学得知,遇到这种情况可以先用jupyter lab
试一下,提示没有,那就先安装jupyter lab
:
pip install jupyterlab
安装完成后用jupyter-lab打开jupyter:
jupyter-lab --no-browser --port=8014 --ip=127.0.0.1
结果还是得通过链接访问:
用自己的台式机输入链接:http://192.168.50.237:8014/lab?token=84a26770f41122bef40309ee65c9ab262147cf8e5a01106c,结果还是拒绝连接
这种情况是因为集群拒绝外网访问jupyter,因此只能通过远程连接jupyter的方法。可以参考:https://blog.csdn.net/MuziZZ/article/details/101703604/
3.4、远程连接jupyter
首先,先别执行jupyter notebook
jupyter notebook --generate-config
# 生成配置文件,假设其地址为config.py
jupyter notebook password
# 键入自己设置的密码, 假设其生成文件地址为config.json
打开config_json,复制秘钥。
vi jupyter_notebook_config.json
随后,打开配置文件config_py,发现里面有大量的注释信息。找到如下五条并将其赋值信息修改如下:
c.NotebookApp.allow_remote_access = True # 允许远程访问,第174行
c.NotebookApp.ip = '*' # 允许任意ip地址访问,第350行
c.NotebookApp.open_browser = False # 禁止启动时自动打开浏览器,第458行
c.NotebookApp.password = u'sha1:d3c690fbd44e:9e877c612c054679fb121e8605aa572354c2cfc2' # 复制双引号内的加密信息,第469行
c.NotebookApp.port = 20180 # 期望的端口号,第482行
补充:vi
命令查看完文件之后,先Ctrl+C
退出Insert
模式,然后:wq!
退出文件。
随后,在服务端执行jupyter notebook
即可在本地实现对服务端Jupyter的访问。但仍出现访问被拒绝的问题。
原因是,出于防火墙(存疑)设置问题,配置完成后仍无法正常访问Jupyter。
解决思路:
将服务器的20180端口通过ssh远程映射本地的2018端口。
具体实现:
在本地运行:
ssh -p port_num server_account@ip_addr -N -L localhost:2018:localhost:20180
但是我的一直不行,总是提示上边的链接不上,听实验室同学说是因为需要开放A6000的jupyter的访问权限或者是什么的,我也正在寻找方法:
方法一:
ssh -N -f -L localhost:20180:localhost:2018 b519@192.168.50.237
方法不行,未连通。
其中一个师弟跟我说了另一个方法:把 c.NotebookApp.ip = '*' # 允许任意ip地址访问,第350行
修改成:
c.NotebookApp.ip = '0.0.0.0' # 允许任意ip地址访问,第350行
我还没有尝试,是否成功未知。
方法三:又有一个师弟提出了新的方法:
可以直接不用jupyter跑,直接把原来的train.ipynb文件中的内容复制出来,放到train.py中,直接python train.py
就可以运行训练过程,亲测好用。需要这个过程需要注意的就是一定要每段每段的复制,如果大段复制就会出各种各样的问题。训练时需要下载模型,如果想节省时间,可以提前下载,修改模型路径,我没有提前下载,所以训练下载模型时非常慢。
持续更新中。。。