# PaddleX_Restful API --快速搭建私有化训练云服务
* ## 什么是Resetful
* ## PaddleX_Restful API 说明
* ## 如何快速使用PaddleX_Restful API 快速搭建私有化训练云平台
## *什么是Resetful*
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
简单来说就是用户可以起一个远端的服务,客户端通过http形式进行访问。
## *PaddleX_Restful API 说明*
PaddleX RESTful是基于PaddleX开发的RESTful API。对于开发者来说只需要简单的指令便可开启PaddleX RESTful服务。对于哪些有远程训练要求,同时为了数据保密的开发者来说,PaddleX_Restful API简单易用的操作可以很好的满足上述要求。
开启RESTful服务后可以实现如下功能:
* 通过下载基于RESTful API的GUI连接开启RESTful服务的服务端,实现远程深度学习全流程开发。
* 通过使用web demo连接开启RESTful服务的服务端,实现远程深度学习全流程开发。
* 根据RESTful API来开发您自己个性化的可视化界面。
## *如何快速使用PaddleX_Restful API 快速搭建私有化训练云平台*
在该示例中PaddleX_Restful运行在一台带GPU的linux服务器下,用户通过其他电脑连接该服务器进行远程的操作。
### 1 环境准备
在服务器下载PaddlePaddle和PaddleX及其他依赖
* 下载PaddlePaddle
`pip install paddlepaddle-gpu -i `
* 下载PaddleX
pip install paddlex==1.3.11 -i
* 下载pycuda(如果不使用GPU,该项可不进行下载)
pip install pycuda -i
### 2 启动Restful服务
在服务器上启动如下命令,其中端口号是用户自定义的,`workspace_dir`是用户在服务器创建的
`paddlex_restful --start_restful --port [端口号] --workspace_dir [工作空间地址]`
例如开启一个端口为27000,工作路径在`cv/x/resful_space`的一个服务
`paddlex_restful --start_restful --port 27000 --workspace_dir cv/x/resful_space`
出现上述图片所示的内容,即为开启服务成功。
### 3 启动客户端进行远程全流程训练
为了方便大家进行远程调试,PaddleX_Restful提供了两张访问形式,一个是Web图形化界面,另一个是客户端的图形化界面
* ## Web图像化界面
### 3.1 打开Web界面
当用户启动Restful服务后,在Web界面的导航栏只需要输入IP地址和端口号即可。例如当前案例的IP地址是222.95.100.37 端口号是25001
即在导航栏输入 `http://222.95.100.37:25001/` 即可出现如下界面
### 3.2 服务器设置
点击界面中内容,在将服务器进行设置
### 3.3 下载示例项目
用户根据自己的需求,选择是否下载示例项目
最终画面如下图所示
### 3.4 创建数据集
用户如果要自定义训练,首先需要去创建用户自身的数据集,
在此之前,用户首先需要将数据集上传到服务器上。
输入在服务上数据存储的路径,开始导入数据,在服务器上传的数据集,必须是符合PaddleX训练数据的命名格式要求。
数据导入成功后,进行数据集划分
用户在划分完成数据集后,也可对数据集进行可视化观察
### 3.5 开始训练
在数据集创建完成后,用户可创建新项目,并进行训练
配置好相关参数后,点击开始训练,便开始进行训练。
* ## 客户端图形化界面
客户端操作流程和Web界面基本一致,提供了MAC和Windows版本两种,用户可自行下载并操作
- [MAC](https://bj.bcebos.com/paddlex/PaddleX_Remote_GUI/mac/PaddleX_Remote_GUI.zip)
- [Windows](https://bj.bcebos.com/paddlex/PaddleX_Remote_GUI/windows/PaddleX_Remote_GUI.zip)
### 4 Restful 二次开发说明
开发者可以使用PaddleX RESTful API 进行二次开发,按照自己的需求开发可视化界面,详细请参考以下文档
[RESTful API 二次开发简介](../..//gui/restful/restful.md)
[快速开始](../../gui/restful/quick_start.md)
[API 参考文档](../../gui/restful/restful_api.md)
[自定义数据结构](../../gui/restful/data_struct.md)