Ubuntu配置Torchserve环境,并在线发布你的深度学习模型

本文指导如何在Ubuntu 20系统上配置Torchserve环境,包括docker安装、JAVA设置、模型打包与部署,以PyTorch为基础,适合初学者快速部署模型。
部署运行你感兴趣的模型镜像

一、申请Ubuntu云服务器

你可以从阿里云、百度云、腾讯云等多个云服务器厂商购买一个在线云服务器。我采用的是百度云的轻量级的云服务器,装的是Ubuntu20系统。

二、在Ubuntu上配置Torchserve环境

Torchserve是Facebooke公司开发的在线深度学习模型部署框架,它可以很方便的部署pytorch的深度学习模型,读者可以访问Github地址获取最新功能和详细说明:官方地址https://github.com/pytorch/serve/blob/master/docs/README.md

2.1、利用docker一键式安装

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,上述解释来源于百度百科。其实,简单的说,docker就是把Torchserve的所有运行环境都打包在一个容器里,你只要通过docker的接口就可以调用相应环境运行你的程序。所以,为了方便,直接用docker安装。
1.进入ubutu系统
file
2.更新ubutu的所有环境

sudo apt-get update

3.卸载旧版本的docker,如果没有安装过,可以省略

sudo apt remove docker docker-engine docker.io containerd runc

4.安装新版本docker
读者可以参考文章(06-Ubuntu 20 安装docker

5.测试一下docker是否安装成功

docker --version

file
出现上述版本号,表示你已经安装docker成功了,恭喜你完成了第一步。

2.2、安装java运行环境

因为Torchserve是基于JAVA运行的,所以,我们需要在Ubutu上安装最新的JAVA开发环境。

1.执行命令

sudo apt-get -y install openjdk-11-jdk

2.检查是否安装成功

java --version

file
显示这个就表示安装成功了,当然你可能会遇见各种问题,JAVA的详细安装可以参考文章ubuntu20.04安装Java。专业的工作交给专业的人嘛。

2.3、安装torchserve环境

Torchserve提供了方便且快捷的docker安装方式,我们只要在Ubuntu中输入命令就行,开不开心,激不激动。命令代码如下所示:

  • 拉取CPU的镜像(表示运行在CPU环境的框架)
docker pull pytorch/torchserve:latest

等运行好了,运行成功就可以通过docker中的pytorch/torchserve创建一个容器实例了,这个容器包含了torchserve运行的所有环境。

2.4、安装screen

Screen的安装不是必须的,可以根据自己的需要安装,当启动Torchser的时候Ubuntu当前的命令行变得不可用,因为它会不停的打印logs信息,所以我们用screen把当前命令窗口后台化,并重新打开一个命令行窗口。接下来用命令行安装screen:

sudo apt install screen

screen的命令有很多,作者可以参考这篇文章screen 命令详解
这样,我们所有的准备工作都已经做完了,那么我们怎么部署深度学习模型呢?接着往下看!

三、在Ubuntu上部署你的深度学习模型

部署模型其实是非常简单的事情,只是几条命令的事情,最困难的事情是训练模型和打包模型。训练模型不言而喻,最主要的是打包模型。Torchserve提供了一个整体的框架,方便的部署,但是你必须严格按照他们的部署规则。这个时候,就需要你训练的模型打包成符合Torchserve规则的输入模型。为了方便,我们把打包模型部署模型分开操作,也就是说Ubuntu服务器只负责部署模型。打包模型我们在线下完成后上传给Ubuntu系统。这样实现了线上和线下的分离,方便模型版本控制。

3.1、线下环境(Windows)

在我的笔记本电脑上进行训练模型和打包模型,我采用的是Windows系统,同时采用Anaconda作为虚拟环境。下述所有都是在cmd命令行中完成。

1.首先我们通过,Anaconda创建一个虚拟的开发环境,安装一下包:
python3.8
pip
pytorch

2.同时,安装JAVA的开发环境
并配置为windows的环境变量(电脑上可以随时调用JAVA开发环境),读者可以参考文章windows安装jdk
你可以在Windows的CMD命令行中,通过以下命令检查是否安装配置成功:

java --version

file
显示这样就是表示已经安装成功了

3.此外,你也可以把Anaconda配置为环境变量

这样你在CMD中就可以通过命令行使用conda命令进行操作python环境了,读者可以参考anaconda环境配置和常用命令.

通过命令查看conda是否安装和配置成功:

conda --version

file
图中显示安装成功。

4.通过conda环境创建一个torchserve的开发环境:

conda create -n "torchserve" python=3.8

5.进入torchserve环境:

conda activate torchserve

file
这时候就显示已经进入了我们创建的torchserve环境中了。

6.在该环境中利用pip安装torchserver的包:

pip install torchserve torch-model-archiver torch-workflow-archiver

file
显示出这些包都已经安装好,表示我们可以使用torchserve了。

此外,我们需要从github上下载torchserve的整个文件,这样可以采用里面的一些现成的例子,我们可以通过命令行,利用git来下载,同时读者也可以直接进官网下载。

7.安装git包,这样我们可以采用git命令来下载github上的文件:

conda install git

file
查看到我们已经安装成功。

8.下载torchserve的整个文件,执行以下命令:

git clone https://github.com/pytorch/serve.git

这时候一个serve文件会被下载到你的用户文件夹中,我的是存在C:\Users\Lcy中。

命令行中执行cd命令,进入到serve文件目录下:

cd serve

执行命令:

pip install .

安装完再执行:

cd model-archiver

继续执行安装命令:

pip install .

完成之后,接下来就开始打包我们的模型了,期待吧。

3.2、打包模型(以官方例子为准)

这里的话,我们就以官方提供的mnist模型例子作为打包模型的方法,具体可以参考官方文档

1.命令行cd到serve文件夹中:

 cd serve

file
2.执行打包命令:

torch-model-archiver --model-name mnist --version 1.0 --model-file examples/image_classifier/mnist/mnist.py --serialized-file examples/image_classifier/mnist/mnist_cnn.pt --handler  examples/image_classifier/mnist/mnist_handler.py --extra-files examples/image_classifier/mnist/mnist.ts.json

其中:

  • –model-name: 模型的名称,后来的接口名称和管理的模型名称都是这个(本例中是mnist)
  • –model-file: 模型采用的类别,也就是模型是采用什么网络结构的(本例中是mnsit.py)
  • –serialized-file: 模型环境及代码及参数的打包文件(模型权重文件pth或pt)(本例中是mnist_cnn.pt)
  • –handler: 打包模型后模型的执行流程,主要包括预处理、预测和后处理的流程。(本例中采用mnist_handler.py)
  • –extra-files:这个暂时不知道是干什么的(例子中用mnist.ts.json),这个是可有可无的,不是必要文件,知道读者可以可以留言

3.执行完这个语句后会在serve文件夹中生成一个新的文件,文件名为mnist.mar:

恭喜你,你的模型已经打包完成,处理的流程,权重被打包成mnist.mar中,你只要有这个文件,接下来,你就可以把他部署到Ubuntu的云服务器中。

读者就要问了,我想要打包自己的模型怎么办,不用担心,我另外写了一个打包自己模型的文章(读者可访问地址:Torchserve打包和部署你训练的深度学习模型)。

3.3、部署模型

接下来就是部署模型了,也就是本章最后的步骤了。

1.打开你的Ubuntu云服务器,进入root界面:
file
2.输入启动torchserve的命令:

#2.1.创建新窗口
screen -S torch
#2.2.在新窗口开启docker容器
docker run --rm -it -p 3000:8080 -p 3001:8081 pytorch/torchserve

其中–rm表示的是读写,-t让docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开,简单讲就是保持容器运行。-p是端口映射,torchserve默认8081端口负责后台管理模型,你可以理解为管理员端口;8080端口是开放端口,负责用户对模型的访问,理解为用户端口。那么-p的意思就是说,把8081端口改成3001,;8080的改成3000。pytorch/torchserve表示的就是torchserve环境,利用该环境生成一个容器。

#2.3.切换新窗口到后台
按快捷键:ctrl+a+d

*3.查看容器是否生成,执行指令:

docker ps

file
显示上图结果,表示你的容器正在已经成功开启。其中ID就是f78012109930,是唯一标识符;最后的NAMES就是festive_knuth,表示容器的名字,记住它,我们以后调用容器就用它。

4.把本地windows中的minist.mar文件传到ubuntu云服务器中:

首先现在ubuntu系统中,创建一个文件夹,用来存上传的mar格式模型:

mkdir model

查看一个是否创建成功:

ls

file
上图表示已经有model文件夹了。

接下来,我们利用scp命令把本地文件上传ubuntu云服务器中,在你的windows中,打开命令行,输入:

scp mnist.mar root@ip:/root/model

最后,在ubuntu系统上行查看是否上传成功,输入命令:

cd model
ls

file
可以看到我的model文件夹里有两个mar文件,分别是我刚上传的mnist.mar,另外一个是我之前上传的。

5.把model文件夹中的mar文件拷贝到容器特定文件夹中:

步骤3我们已经生成了一个容器,名字是festive_knuth,这时候需要我们把mdk文件放在容器的特定文件夹中,这也是torchserve规则化规定的,没有为什么,执行以下命令:

docker cp /root/model/mnist.mar festive_knuth:/home/model-server/model-store

命令很好理解,docker cp实现了主机和容器之间的数据拷贝。该条命令就是把root/model中的mnist.mar文件拷贝到festive_knuth容器中model-store文件夹中。

拷贝完成可以执行以下命令查看拷贝是否完成:

docker exec festive_knuth ls -a /home/model-server/model-store

file
上图显示我们成功把mnist.mar文件拷贝到容器中了,需要注意的是,一旦容器停止,文件夹中东西也会消失,因为容器本身就是一个虚拟环境。

6.注册模型

我们目前仅仅把mar文件放置到了它应该放的位置,但是并没有告诉容器你怎么去调用它,这时候,我们就需要注册模型来告诉容器,你可以通过这个链接访问我的mar文件,执行以下命令:

curl -X POST "http://localhost:3001/models?url=mnist.mar"

file
因为注册模型是管理员的任务,所以我们通过3001端口进入,这样不影响3000端口的正常使用;显示上图就表示模型注册成功了,上边提示我们需要非配一个工作线程去处理这个api;意思就是注册好了,分配几个线程去专门处理来自这个模型的访问。

7.分配线程

读者根据自己需要来分配不同数量的工作线程,执行的命令如下所示:

curl -v -X PUT "http://localhost:3001/models/mnist?min_worker=1&synchronous=true"

file
我们暂时分配了一个,上图是执行之后的结果,状态显示打工人正在为你的模型工作,哈哈哈。

8.测试一下

在你的windows的cmd命令行中输入命令:

curl http://IP地址:3000/predictions/mnist -T 0.png

其中IP地址表示你申请云服务器的公网IP,这里保护我的隐私,我就不挂出来了。-T后面的0.png是你本地的图片,是一个手写字0。这时候的返回结果如下所示:
file
上图显示识别结果为0,识别正确,搭建完成。图中我的ip用了马赛克,读者根据自己IP进行书写就好了。

9.模型注销

最后一步告诉你们一下,怎么注销吧,执行以下命令(在ubuntu云服务器上):

curl -X DELETE http://localhost:3001/models/mnist/

file
显示已经取消注册了。

你们学会了么!快快把你们的模型部署起来吧!

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>嗯,用户问的是深度学习需要配置什么。首先,我得考虑他们可能是在准备搭建一个深度学习环境,可能是刚入门的新手,不太清楚需要哪些硬件和软件。可能需要从硬件开始,比如GPU的重要性,因为深度学习训练很耗资源。然后可能还要提到CPU、内存、存储这些。不过得注意别太技术化,用他们能理解的话解释。 接下来是软件部分,操作系统的话,Linux可能更常用,但也要提到Windows和macOS的情况。然后是深度学习框架,像TensorFlow、PyTorch这些,还有编程语言主要是Python。可能需要解释为什么选择这些框架,比如社区支持、易用性等。 然后是开发工具,比如CUDA和cuDNN,这些是配合GPU使用的,必须正确安装版本。还有Python环境管理,用Anaconda或者虚拟环境,避免依赖冲突。IDE的话,PyCharm、VS Code这些,可能用户已经知道,但提一下也没坏处。 数据集和预处理工具,可能用户需要考虑数据存储和处理,比如HDF5或者TFRecord格式。数据增强库像Albumentations,这些能帮助他们提升模型效果。还有分布式训练,如果要做大规模训练,可能需要多GPU或者云服务,比如AWS、GCP。 优化和部署部分,模型优化工具如TensorRT、OpenVINO,部署框架比如TensorFlow Serving、TorchServe。这些可能对新手来说有点高级,但至少让他们知道有这些工具存在。 最后,实践建议,比如从云服务开始,逐步构建硬件,社区资源的重要性。可能用户预算有限,所以云服务是个好的起点,避免一开始投入太多硬件成本。 需要检查有没有遗漏的部分,比如是否提到了软件版本兼容性,CUDA和框架版本的匹配,这点很重要,容易出错。另外,是否需要强调环境隔离,比如用conda管理不同项目的环境,避免冲突。 结构方面,按硬件、软件、开发工具、数据集、分布式、优化部署、实践建议这样的顺序应该比较清晰。用户可能需要一步步来,先确保硬件到位,再安装软件和工具,处理数据,最后部署。可能还要提醒他们注意驱动版本的安装,比如NVIDIA驱动,CUDA版本,cuDNN版本,这些都需要对应起来,否则会出问题。 有没有可能用户想问的是具体的配置参数,比如GPU需要多少显存,内存需要多大?可能需要给出一些常见的推荐配置,比如至少RTX 3060,内存16GB以上,存储用SSD等。但可能不同任务需求不同,比如图像处理需要更大的显存,而NLP模型可能更注重内存和行计算。 还要提到软件环境配置的步骤,比如安装CUDA,然后安装框架,可能用pip或者conda安装。需要注意框架版本和CUDA版本的对应关系,比如PyTorch官网有对应的命令,可以查表选择。 另外,数据存储部分,如果处理大型数据集,可能需要高速存储,比如NVMe SSD,这对数据加载速度有帮助,尤其是在训练时避免IO瓶颈。 分布式训练可能对新手来说有点远,但提一下可以让他们知道扩展的可能性。云服务的优缺点,比如按需付费,弹性扩展,但长期使用可能成本更高。 最后,强调社区资源和文档的重要性,遇到问题可以查GitHub、Stack Overflow,官方文档通常有详细指南。可能用户会遇到环境配置的问题,所以良好的错误排查能力也很重要,比如查看日志,版本检查等。 总的来说,要覆盖硬件、软件、工具链、数据处理、部署优化,以及实践建议,确保回答全面但不过于复杂,分步骤说明,帮助用户逐步搭建他们的深度学习环境。</think>深度学习环境配置需要从硬件、软件和工具链三方面进行规划。以下为详细步骤说明: --- ### 一、硬件配置 #### 1. 核心计算单元 - **GPU**:建议选择NVIDIA显卡(RTX 3060及以上),因其支持CUDA加速 关键指标:显存容量(≥8GB)、CUDA核心数、带宽 示例:NVIDIA RTX 4090 (24GB显存) 适合大型模型训练 - **CPU**:多核处理器(如Intel i7/i9或AMD Ryzen 7/9) - **内存**:≥32GB DDR4,用于数据预处理和模型加载 - **存储**:NVMe SSD(≥1TB),高速读写缓解I/O瓶颈 #### 2. 扩展需求 - 多GPU配置:通过NVLink实现GPU互联(如4x A100集群) - 散热系统:高功率GPU需匹配水冷/强力风冷 --- ### 二、软件环境 #### 1. 操作系统 - **Linux**:Ubuntu 20.04/22.04 LTS(对GPU驱动支持最佳) - 备选方案:Windows WSL2或macOS(需注意CUDA兼容性) #### 2. 深度学习框架 | 框架 | 适用场景 | 安装命令示例 | |------------|---------------------------|------------------------------| | PyTorch | 研究/动态计算图 | `conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia` | | TensorFlow | 生产部署/静态计算图 | `pip install tensorflow[and-cuda]==2.13.0` | #### 3. 基础依赖 - **CUDA工具包**:需与GPU驱动版本严格匹配(如CUDA 12.1) - **cuDNN**:NVIDIA深度神经网络加速库 - **Python**:3.8-3.11版本,通过`conda`或`pyenv`管理多环境 --- ### 三、开发工具链 #### 1. 环境管理 ```bash # 创建隔离环境 conda create -n dl_env python=3.10 conda activate dl_env # 安装核心库 pip install numpy pandas matplotlib scikit-learn jupyterlab ``` #### 2. 辅助工具 - **版本控制**:Git + GitHub/GitLab - **IDE**:VS Code(推荐Jupyter插件)或PyCharm Professional - **监控工具**:`nvidia-smi`、`gpustat`、TensorBoard --- ### 四、进阶配置建议 1. **分布式训练** - 使用Horovod或PyTorch DDP - 配置NCCL通信库 2. **容器化部署** ```dockerfile FROM nvidia/cuda:12.1.1-base RUN pip install torch==2.1.0+cu121 -f https://download.pytorch.org/whl/torch_stable.html ``` 3. **云平台方案** - AWS EC2 (p4d实例) - Google Cloud TPU - 阿里云GN7系列 --- ### 五、验证配置 运行以下测试代码检查GPU是否可用: ```python import torch print(f"PyTorch版本: {torch.__version__}") print(f"CUDA可用: {torch.cuda.is_available()}") print(f"GPU数量: {torch.cuda.device_count()}") print(f"当前GPU: {torch.cuda.get_device_name(0)}") ``` --- ### 六、成本优化策略 1. 初学者:优先使用Google Colab免费GPU资源 2. 中小型项目:按需购买云服务竞价实例 3. 长期需求:自建服务器(投资回报周期约12-18个月) 注:具体配置需根据任务规模调整,图像类任务侧重显存容量,NLP任务需关注显存带宽。建议首次配置时预留30%的性能冗余。
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值