开发者进阶参考

SDK文件结构

SDK的主体逻辑在 anylearn 包内,大致分为如下几个部分:

  • anylearnctl.py :命令行接口(CLI)定义。

  • config.py :SDK配置相关的类和接口。

  • applications 目录:高度封装的特色功能,如“超参数自动调优”。

  • interfaces 目录:对后端RESTful API的细粒度封装。

  • storage 目录:SDK本地存储相关。

  • utils 目录:共性工具类。

具体文件结构如下:

注解

为了结构简洁, docs 目录和 examples 目录未在此列出。

Anylearn-sdk
├── anylearn
│   ├── __init__.py
│   ├── anylearnctl.py
│   ├── applications
│   │   ├── __init__.py
│   │   ├── hpo.py
│   │   ├── quickstart.py
│   │   └── tracking.py
│   ├── config.py
│   ├── interfaces
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── mirror.py
│   │   ├── project.py
│   │   ├── resource
│   │   │   ├── __init__.py
│   │   │   ├── algorithm.py
│   │   │   ├── dataset.py
│   │   │   ├── file.py
│   │   │   ├── model.py
│   │   │   ├── resource.py
│   │   │   ├── resource_downloader.py
│   │   │   └── resource_uploader.py
│   │   ├── service
│   │   │   ├── __init__.py
│   │   │   ├── record.py
│   │   │   └── service.py
│   │   ├── train_task.py
│   │   └── user.py
│   ├── storage
│   │   ├── __init__.py
│   │   ├── db
│   │   │   ├── __init__.py
│   │   │   ├── db.py
│   │   │   ├── migrations
│   │   │   │   ├── README
│   │   │   │   ├── __init__.py
│   │   │   │   ├── alembic.ini
│   │   │   │   ├── env.py
│   │   │   │   ├── script.py.mako
│   │   │   │   └── versions
│   │   │   │       ├── 848203d98d73_recreate_resource_tables_for_checksum.py
│   │   │   │       ├── __init__.py
│   │   │   └── models.py
│   │   └── file
│   │       └── __init__.py
│   └── utils
│       ├── __init__.py
│       ├── api.py
│       ├── errors.py
│       └── singleton.py
├── pyproject.toml
├── requirements.txt
├── requirements_dev.txt
├── setup.py
└── tests
    ├── __init__.py
    ├── applications
    │   ├── __init__.py
    │   ├── fake_algo_ko
    │   │   └── main.py
    │   ├── fake_algo_ok
    │   │   ├── anylearn_tools.py
    │   │   ├── main.py
    │   │   └── requirements.txt
    │   ├── fake_dset
    │   │   └── test.txt
    │   ├── fake_model
    │   │   └── test.model
    │   └── test_quick_train.py
    ├── base_test_case.py
    ├── components
    ├── config.py
    ├── interfaces
    │   ├── __init__.py
    │   ├── resource
    │   │   ├── __init__.py
    │   │   ├── test_algorithm.py
    │   │   ├── test_dataset.py
    │   │   ├── test_file.py
    │   │   ├── test_model.py
    │   │   ├── test_resource.py
    │   │   ├── test_resource_downloader.py
    │   │   └── test_resource_uploader.py
    │   ├── service
    │   │   ├── test_service.py
    │   │   └── test_service_record.py
    │   ├── test_db.py
    │   ├── test_mirror.py
    │   ├── test_project.py
    │   ├── test_train_task.py
    │   └── test_user.py
    └── utils
        └── __init__.py

SDK对后端RESTful API的封装

SDK对Anylearn后端接口进行了细粒度的封装, 包括 用户管理、 项目管理、 训练任务管理、 验证任务管理、 模型在线服务管理、 资源管理(算法、数据集、模型、其他文件) 以及镜像列表。 其中部分接口属于技术性接口, 仅供后端内部实现使用, 故SDK不予封装。

SDK封装的后端接口

资源表述

接口功能

HTTP方法

接口路径

用户
user

用户注册

POST

/api/user/registry

获取用户信息

GET

/api/user

编辑用户信息

PUT

/api/user

删除用户

DELETE

/api/user

获取用户列表

GET

/api/user/list

用户名查重

GET

/api/user/check

多用户集合信息查询

GET

/api/user/collection

用户登录

POST

/api/user/login

令牌单点登录(DWF)

POST

/api/user/tokenlogin

获取用户权限(DWF)

GET

/api/user/permissions

修改密码

PUT

/api/user/password

镜像
mirror

获取镜像列表

GET

/api/mirror/list

训练任务
train_task

新增训练任务

POST

/api/train_task/add

获取训练任务日志

GET

/api/train_task/log

获取训练任务状态

GET

/api/train_task/status

修改训练任务状态

POST

/api/train_task/status

删除训练任务

DELETE

/api/train_task/delete

获取训练任务列表

GET

/api/train_task/list

获取训练任务信息

GET

/api/train_task/query

编辑训练任务信息

PUT

/api/train_task/update

结束训练任务

POST

/api/train_task/finish

模型服务
service

新增模型服务

POST

/api/service/add

重启模型服务

GET

/api/service/restart

伸缩模型服务

GET

/api/service/scale

获取模型服务日志

GET

/api/service/log

获取模型服务状态

GET

/api/service/status

停止模型服务

GET

/api/service/stop

删除模型服务

DELETE

/api/service/delete

获取模型服务列表

GET

/api/service/list

获取模型服务信息

GET

/api/service/query

获取模型服务记录

GET

/api/service/record

编辑模型服务信息

PUT

/api/service/update

模型服务记录
service_record

新增模型服务记录

POST

/api/service_record/add

获取模型服务记录信息

GET

/api/service_record/query

编辑模型服务记录信息

POST

/api/service_record/update

拉取模型服务结果

GET

/api/service_record/pull

算法资源
algorithm

获取算法列表

GET

/api/algorithm/list

获取算法信息

GET

/api/algorithm/query

编辑算法信息

PUT

/api/algorithm/update

删除算法

DELETE

/api/algorithm/delete

新增算法

POST

/api/algorithm/add

资源操作
operation

获取资源文件目录

GET

/api/resource/listdir

上传资源文件

POST

/api/resource/upload

结束上传资源文件

POST

/api/resource/upload_finish

模型资源
model

获取模型列表

GET

/api/model/list

获取模型信息

GET

/api/model/query

编辑模型信息

PUT

/api/model/update

新增模型

POST

/api/model/add

删除模型

DELETE

/api/model/delete

数据集资源
dataset

获取数据集列表

GET

/api/dataset/list

获取数据集信息

GET

/api/dataset/query

编辑数据集信息

PUT

/api/dataset/update

删除数据集

DELETE

/api/dataset/delete

新增数据集

POST

/api/dataset/add

其他文件资源
file

获取其他文件列表

GET

/api/file/list

获取其他文件信息

GET

/api/file/query

编辑其他文件信息

PUT

/api/file/update

新增其他文件

POST

/api/file/add

删除其他文件

DELETE

/api/file/delete

项目
project

获取项目列表

GET

/api/project/list

获取项目信息

GET

/api/project/query

编辑项目信息

PUT

/api/project/update

删除项目

DELETE

/api/project/delete

新建项目

POST

/api/project/add

获取项目运行中的训练任务列表

GET

/api/project/running_tasks

获取项目已完结的训练任务列表

GET

/api/project/all_tasks

SDK暂不提供封装的后端接口

资源表述

接口功能

HTTP方法

接口路径

镜像
mirror

获取镜像信息

GET

/api/mirror/query

编辑镜像信息

PUT

/api/mirror/update

新增镜像

POST

/api/mirror/add

资源操作
operation

下载资源文件

GET

/api/resource/download

模型资源
model

将训练结果转存为模型文件

POST

/api/model/transform

算法树节点
algorithm_tree

新增算法树节点

POST

/api/algorithm_tree/add

更新算法树节点

POST

/api/algorithm_tree/update

获取算法树根节点

GET

/api/algorithm_tree/root

获取算法树子节点

GET

/api/algorithm_tree/child