Skip to content

PaddleCloud 开发文档

gongweibao edited this page Sep 7, 2017 · 16 revisions

一些概念

  • PaddleCloud Server: 基于Django开发的WebServer,包括网站页面的serve,提交Kubernetes的逻辑实现
  • PaddleCloud Client:基于Go语言开发的命令行程序,实现了提交PaddleCloud集群任务的逻辑,同时也是PaddleCloud File System(PFS)的客户端,可以在本地操作云端数据。
  • PFS Server:PaddleCloud提供的云端文件存储,实现了对大文件的上传/下载/上传等操作。

主要目录结构说明

|--demo                      // 提交PaddleCloud集群训练的Demo代码
|--doc                       // 一些Design Doc和使用文档
|--docker                    // 用来构建Job/PFS-Server的Docker Image的一些脚本
|--go
  |-- paddlecloud             // PaddleCloud客户端源码
  |-- filemanager             // PFS客户端/服务端源码
  `-- cmd
    |-- paddlecloud           // PaddleCloud客户端主函数入口(包括PFS的客户端)
    `-- pfsserver             // PFS Server的主函数入口 
|-- k8s                       // 一些k8s的启动脚本
`-- paddlecloud               // PaddleCloud Server源码,基于Django REST Framework实现的WebServer.
  |-- static                  // 全局静态文件存储目录,包括css,js以及图片等
  |-- notebook                // Jupyter Notebook相关的API实现以及用户注册/登录等相关API的实现。
  |-- paddlejob               // 在Kubernetes集群启动PaddlePaddle Job相关的源码
  `-- paddlecloud
    |-- settings.py           // Django的配置文件
    `-- templates             // HTML模板文件,包括首页,Footer等。
   

如何添加新的API

  • 创建新的View实例,并实现不同HTTP请求(get/post/put/update/...)的处理逻辑,例如:
    class JobsView(APIView):
    permission_classes = (permissions.IsAuthenticated,) // 表示需要认证的API
    
    def get(self, request, format=None):  // 处理GET请求
        ...
  • padlecloud/paddlecloud/urls.py中添加新的URL并绑定到上一步创建的View中:
    url(r"^api/v1/jobs/", paddlejob.views.JobsView.as_view()),
  • 更多Django REST Framework的文档详见:http://www.django-rest-framework.org

部署/构建方法

  • PaddleCloud Server
  • PaddleCloud Client
    cd <project_root>/go/cmd/paddlecloud && go build
  • PFSServer
    • 构建PFS Server端的Docker Image:
      cd <project_root>/go/cmd/paddlecloud && GOOS=linux GOARCH=amd64 go build
      cd <project_root>/go && docker build . -t <pfs-docker-image-name>
    • 基于Kubernets的部署: 首先需要改动pfs_service.yamlpfs_deployment.yaml里边的配置项目,然后在启动,如
      kubectrl create -f pfs_service.yaml
      kubectrl create -f pfs_deployment.yaml
      ```
      配置文件模板在:<project_root>/k8s/
      
Clone this wiki locally