首先要拥有Linux服务器一台(云服务器或者本地服务器均可)
Linux系统上需要安装好cuda与cudnn
查看cuda或者显卡信息:
nvidia-smi
安装好Anaconda
下一步,配置conda环境
conda create -n 环境名 python=3.x
下载依赖包
conda install xxx
注意这一步,类似于torch,paddlepaddle等依赖包,均需要下载gpu版本,具体可以到官网去复制下载命令,防止下载错误,有一种方式比较稳妥根据cuda版本,到Pytorch官网Start Locally | PyTorch,寻找对应cuda版本的Pytorch,可以直接从官网下载torch,torchaudio,torchvision三件套,然后把下载下来的whl文件通过后面的wget传给服务器,这样可以保证不会因为源的问题出现下载问题~
在linux上可以直接使用以下命令安装whl依赖包,不会出现下载问题~
pip install torch-1.13.0+cu116-cp37-cp37m-linux_x86_64.whl
pip install torchaudio-0.13.0+cu116-cp37-cp37m-linux_x86_64.whl
pip install torchvision-0.14.0+cu116-cp37-cp37m-linux_x86_64.whl
将训练代码以及需要安装的依赖包打包发送到服务器端
我采用的是7-zip压缩软件,将训练代码先压缩为.tar,再压缩成.gz的格式,放置到static下
![](https://i-blog.csdnimg.cn/blog_migrate/99e2fc3b14ae9900952f03d1c9fbd08e.png)
其中app.py如下
from flask import Flask
app = Flask(__name__)
@app.route('/')
def tansfer():
return "Transfer Files"
def main():
"""Run the app."""
app.run(host="0.0.0.0", port=8000, debug=True)
if __name__ == '__main__':
main()
传输文件,我采用的方式是从在运行的Flask服务上,下载文件:
wget ip/static/File.tar.gz
wget可以配合Flask服务使用,也可以直接从网页上下载文件
在linux下解压.tar.gz格式的文件,.tar.gz格式文件可以由7-zip进行tar压缩后再进行gzip压缩完成:
tar -zxvf File.tar.gz
ls即可查看到解压后的文件夹了,cd进入该文件夹,选择指定的训练文件train.py进行训练即可:
python train.py
后台挂起运行程序,不会因为关闭终端而停止进程
nohup python train.py &
查看输出日志的最后100行
tail -n 100 nohup.out
提前终止后台进程
查看该进程的pid
ps -aux
根据pid杀死该进程
kill -9 pid
批量删除保存的多余pth模型文件
ls | grep -P "u2net_bce_itr_[0-9]+_train_[0-1]?\.?[0-9]+_tar_[0-1]?\.?[0-9]+\.?pth" | xargs -d"\n" rm
ls获取所有文件名,通过管道符 | 传给grep进行正则化过滤,grep -P "正则表达式",传给xargs进行二次过滤换行符,最后rm删除
"u2net_bce_itr_[0-9]+_train_[0-1]?\.?[0-9]+_tar_[0-1]?\.?[0-9]+\.?pth"解析,u2net_bce_itr_任意长度的数字_train_0或1.任意长度的数字_tar_0或1.任意长度的数字.pth,综上就是匹配一个如下字符串:
"u2net_bce_itr_674000_train_0.175474_tar_0.012131.pth",就可以将这样的pth文件批量删除了,有别的格式的文件,只需要修改正则表达式即可。
查看端口
ps -aux
其中pid就是端口号,如果有端口占用可以根据pid杀死指定进程
kill -9 pid
进一步地,后台启动服务并生成日志
nohup python train.py --dataroot ./datasets/watermark2clean --name watermark2clean_cyclegan --model cycle_gan --gpu_ids 1,2,3 --batch_size 16 > train.log 2>&1 &
分解就是:nohup 启动服务命令 > 日志文件名 2>&1 &,注意,后面的2>&1 &是不变的
正序查看日志100行
cat -n 100 train.log
监控显存使用情况,每五秒刷新一次显存占用:
watch -n 5 nvidia-smi
将G_A.pth文件复制到/Transfer/static文件夹中:
cp /CycleGan/G_A.pth /Transfer/static
从服务器下载文件,也是在服务器上启动Flask服务进行本地下载:
curl -o "latest_net_G_A.pth" "http://10.19.9.72:8000/static/latest_net_G_A.pth"