前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在GPU服务器中搭建深度学习应用后端——以YOLOv5为例

在GPU服务器中搭建深度学习应用后端——以YOLOv5为例

原创
作者头像
深度学习小胡
发布2022-04-14 12:02:41
4.9K0
发布2022-04-14 12:02:41
举报

在GPU服务器中搭建深度学习应用后端——以YOLOv5为例

操作步骤

显卡驱动安装, Cuda安装, Cudnn配置

步骤1:显卡驱动安装(对于11.6版本cuda可以跳过此步骤,其他版本建议安装)
  1. 英伟达驱动下载搜索你所选择的显卡和系统。我的服务器系统是ubuntu 18.04,gpu是T4。所以我如下图选择,系统选linux 64-bit即可。
  1. 点击搜索出来的驱动,再点击新页面中的download。
  1. 在新页面中对AGREE & DOWNLOAD点击右键,复制链接地址。
  1. 用ssh连接到服务器,用wget指令下载链接并安装。
代码语言:javascript
复制
wget https://us.download.nvidia.com/tesla/510.47.03/NVIDIA-Linux-x86_64-510.47.03.run
sudo chmod 775 NVIDIA-Linux-x86_64-510.47.03.run
sudo sh NVIDIA-Linux-x86_64-510.47.03.run -no-x-check -no-nouveau-check -no-opengl-files
  1. 验证安装是否成功
代码语言:javascript
复制
nvidia-smi
步骤2:安装cuda
  1. cuda下载官网按照服务器配置选择系统和安装包类型.
  1. 将页面下方的指令全部复制到ssh运行,如果上一步安装了驱动,这一步要把Driver的X取消
代码语言:javascript
复制
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
sudo sh cuda_11.6.2_510.47.03_linux.run
  1. 配置cuda的路径
代码语言:javascript
复制
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64
export PATH=$PATH:/usr/local/cuda-11.6/bin
source ~/.bashrc
  1. 测试安装是否成功
代码语言:javascript
复制
nvcc --version
步骤3:安装和配置cudnn
  1. 英伟达cudnn下载官网下载cudnn,过程需要登录会员。
  1. 选择自己的操作系统对应的安装包,右键复制链接地址
  1. 在服务器上下载安装包,并用FTP传到服务器上
  2. 解压安装包,将头文件和so文件拷贝到cuda目录下即完成安装
代码语言:javascript
复制
sudo apt-get install zlib1g
tar -xvJf cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive.tar.xz
sudo cp cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

安装Anaconda

安装Anaconda
代码语言:javascript
复制
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh
sudo bash Anaconda3-2021.11-Linux-x86_64.sh
source ~/.bashrc
测试安装是否成功
代码语言:javascript
复制
conda info

训练Yolov5

安装YOLOv5
代码语言:javascript
复制
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
基于coco128数据集训练YOLOv5s模型
代码语言:javascript
复制
python train.py --img 640 --batch 16 --epochs 100 --data coco128.yaml --weights yolov5s.pt

训练速度还可以的哈

搭建服务器后端

笔者搭建了一个简单的flask后端用来测试训练好的模型

代码语言:javascript
复制
import argparse
import io
from PIL import Image
import torch
from flask import Flask, request, send_file
from PIL import Image


app = Flask(__name__)


DETECTION_URL = "/v1/object-detection/yolov5s"




@app.route(DETECTION_URL, methods=["POST"])
def predict():
    if not request.method == "POST":
        return


    if request.files.get("image"):
        image_file = request.files["image"]
        image_bytes = image_file.read()
        img = Image.open(io.BytesIO(image_bytes))
        results = model(img, size=640)
        results.render()
        im = Image.fromarray(results.imgs[0])
        imgByteArr = io.BytesIO()
        im.save(imgByteArr,format='PNG')
        imgByteArr = imgByteArr.getvalue()
        return send_file(io.BytesIO(imgByteArr),mimetype='image/png',as_attachment=True,attachment_filename='result.jpg')
	


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Flask API exposing YOLOv5 model")
    parser.add_argument("--port", default=5000, type=int, help="port number")
    opt = parser.parse_args()


    torch.hub._validate_not_a_forked_repo = lambda a, b, c: True


    model = torch.hub.load('/home/ubuntu/yolov5', 'custom', path='/home/ubuntu/yolov5/runs/train/exp3/weights/best.pt', source='local')
    app.run(host="0.0.0.0", port=opt.port)  

主要作用是接收到图片之后,进行预测,然后返回渲染好预测框和概率的图片。

将代码复制保存为api.py 然后运行如下代码启动后端

代码语言:javascript
复制
pip install Flask
python3 api.py --port 5000

测试结果

测试时将带有图片的POST请求发送至ip:5000/v1/object-detection/yolov5s

响应时间和预测结果都还不错

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在GPU服务器中搭建深度学习应用后端——以YOLOv5为例
  • 操作步骤
    • 显卡驱动安装, Cuda安装, Cudnn配置
      • 安装Anaconda
        • 训练Yolov5
          • 搭建服务器后端
            • 测试结果
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com