大二时候学习了深度学习后,开始上手自己训练模型。在训练过几个模型后,觉得使用自己的笔记本训练模型算力实在是吃紧 (后来还导致笔记本烧主板),于是租用了 AWS 服务器进行模型训练。

AWS 服务器训练深度学习模型 (以 Yolov5 为例)

参考了李沐老师的视频

现在回过头来看,还是用 Google 的 Colab 会员训练似乎更划算一些,能租到 A100 和 T4,费用也不算太离谱

购买 AWS 服务器

  1. 注册 AWS 账号

    AWS Console 控制台_亚马逊云管理控制台 - AWS 云服务

  2. 配置服务器类型

    系统 Ubuntu

    选择系统类型

    较便宜 GPU 类型:g4dn

    选择实例类型

    存储从 8GB 改为 20GB 或者更大

    选择存储

    选择密钥 (没有密匙的话可以新建一个)

    选择密匙

复制 ip 地址

登陆服务器并配置环境

登陆服务器

  • SSH 连接到服务器

    先修改权限 连接服务器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #更改密钥权限
    chmod 400 Downloads/key.pem
    #连接服务器
    ssh -i Downloads/key.pem ubuntu@***.***.***
    #更新软件源
    sudo apt-get update
    #安装必要依赖包
    sudo apt-get install build-essential
    sudo apt-get install unzip

安装 CUDA 环境

去英伟达官网下载 cuda

CUDA Toolkit 11.7 Downloads

1
2
3
4
5
6
7
#安装cuda
sudo sh cuda.***.run
#选择accept然后install
vim .bashrc #我倾向于使用vim来编辑,选择一个自己熟悉的文本编辑器即可
#shift+g “G”跳到最后一行
LD_library_PATH=/usr/local/cuda-11.2/lib64

安装 miniconda

去 miniconda 官网获取安装链接 (根据服务器的架构选择对应的安装包,一般 x86 的 linux 机器选择 linux64bit 即可,arm 则对应 aarch64)

Miniconda - Conda documentation

1
2
3
4
5
6
7
8
#运行sh文件 安装
bash Miniconda3 Linux py39_4.9.2-linu-x86_64.sh
#按q跳过阅读 全程输入yes同意协议
#激活环境
bash
#新建环境
conda create -n yolo python=3.8 pip
conda activate yolo

安装 pytorch

去官网获取 pytorch 下载链接(Stable -Linux-Pip-python-CUDA11.*)

PyTorch

1
2
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
pip install -U jupyter

上传代码

git 下载 Yolov5 代码 上传 jupyter notebook 代码

GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

1
2
3
4
5
git https://github.com/ultralytics/yolov5.git
pip install -r requirements.txt
jupyter notebook
ssh -i Downloads/key.pem -L888:locahost:8888 ubuntu@****.****.***
#上传代码即可开始训练

开始训练

接下来就是开始训练模型了,第一次训练模型的时候完全不懂怎么训练,使用了质量不高的 Dataset,导致模型在测试集上的表现一直提不上去,就算使用了 Data Augment 和 Dropout 这些方法也无济于事,此外也尝试过使用迁移学习的一些方法,冻结部分网络结构的权重再进行针对性的训练,但是最终结果都还是不够理想。

后来发现了 Roboflow 这个网站上有大量的图像数据集,而且有 Health Check 功能,可以提前判断数据集的质量。最终找到一个质量还算比较好的数据集,最后还是训练出了比较满意的结果 (不过和那些 SOTA 模型还是没法比的 hhhh)