ml-platform-client


Nameml-platform-client JSON
Version 0.3.19 PyPI version JSON
download
home_page
Summaryemotibot ml platform client for python
upload_time2021-04-09 03:51:32
maintainer
docs_urlNone
authorJeremyXin
requires_python>=3.6
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## Machine Learning Platform client SDK for python


## 使用说明

此SDK目标为了方便算法接入mlp,推荐使用此SDK实现算法服务

1. SDK提供什么功能?

    - 启动web服务,并封装对接mlp的接口
    - 提供好用的util类,如log类、minio访问类等
    - 提供大部分算法都会碰到的问题的解决方案,比如多副本信息同步,python多开进程进行模型预测,训练任务排队等等

    如果有需要的功能sdk没有实现,建议提给mlp小组加以实现,因为别人可能有一样的需求,尽量标准化

2. 哪些功能需要算法模块实现?

    算法模块主要关注训练,预测这两个功能

    其他工程问题如模型加载内存控制,模型版本管理等,请交给mlp

    所以请把算法服务设计得尽量轻量,一般情况下不要依赖其他中间件如mysql(除非算法部分需要依赖,比如依赖es做搜索等)


### 1. 实现对接mlp的接口
继承AlgorithmBase类和PredictorBase类实现相应方法

包括train, load, unload, status, predict, generate_model_id方法

(0.3.18及之后版本一般情况下只需实现train, load, predict即可,unload,status,generate_model_id都有默认实现)

通过register函数注册到到app上即可,SDK自动实现对接mlp的接口

可参考example目录下的示例


#### train方法
train方法接受训练数据和参数,生成模型并存储到minio(可为逻辑模型,即预测所依赖的数据都可称为模型)

0.3.18及之后版本,训练方法会被异步调用,方法内部无需显式开启线程/进程,如果训练失败,抛出异常或返回False,正常返回认为训练成功, 要自定义model_id请通过generate_model_id方法

之前版本需要手动在train方法内部开启异步,train方法结束后训练接口才会返回,train方法如果返回值,认为是自定义model_id

|字段名|说明|
|---|---|
|data_config.location|训练数据文件minio路径,格式为tsv,没有header,具体列名按照算法类别不同而不同,格式:/path/to/your/data,不带桶信息,固定为ml-platform-data|
|model_id|mlp指定的模型id,也可自己生成,在train方法中返回即可|
|model_path|此版本没有用上|
|parameter|训练超参,dict类型,可在mlp上配置,也可在调用mlp训练接口时传入|
|parameter.pretrain_model|预训练模型minio存储路径,格式:bucket/path/to/your/data,带有桶信息|
|extend|扩展字段|


### generate_model_id方法
默认随机生成uuid作为model_id并传入train方法,如果需要自定义,可以自行实现此方法。

|字段名|说明|
|---|---|
|extend|扩展字段|


#### load和unload方法
加载/卸载完成后才返回,不要使用异步方式加载。load方法返回的是Predictor对象,用来预测,把预测时依赖的数据全部加载起来放入Predictor对象

unload时,sdk会在内存释放load方法返回的对象,如果没有特别需要无需实现unload方法

|字段名|说明|
|---|---|
|model_id|模型加载起来后的使用id|
|model_path|待加载模型文件存储的位置,如果不为None则从此路径加载,带有桶名|


#### predict方法
模型预测时调用的方法,不同类型算法需返回格式不同

|字段名|说明|
|---|---|
|features|特征,dict类型,不同算法类别有不同特征|
|params|预测时参数,dict类型,标准预测参数有threshold和top_n|


#### status方法
!0.3.18及之后版本有默认实现,即train方法正常返回认为训练完成,抛出异常或返回False认为训练失败,如无特别需要,无需实现此方法

训练状态查询,通过model_id查询训练状态,可接受的状态有 init, training, error, completed, unknown

|字段名|说明|
|---|---|
|model_id|模型id|


### 2. 说明
扩展字段内容:

|字段名|说明|
|---|---|
|extend.remote_ip|调用方ip,即训练数据文件,预训练模型,以及最终生成的模型的存储地址|
|extend.dict_location|字典文件minio路径,格式不限|
|extend.extra_location|额外数据文件minio路径,格式不限|
|extend.app_id|机器人id,如果不属于某机器人则为None|

**如果需要一个算法服务为多个mlp提供服务,在连接minio时都需要通过extend.remote_ip获取调用方ip,连接此ip上的minio,不要直接去连接本地minio**

minio数据包括训练数据,预训练模型,生成的模型的存储路径

### 3. tips

- 推荐通过ml_platform_client.logger.log来输出日志,可使格式标准并可以输出请求uuid,方便排错
- 推荐通过ml_platform_client.minio_accessor.MinIOAccessor来访问minio文件,此类会在本地建立本地文件缓存,提升minio访问效率,如有必要还可把本地缓存路径挂载到docker外


## 不同算法格式说明


### 1. 分类算法

#### 训练数据表头
|字段名|说明|
|---|---|
|sentence|输入语料|
|label|预测标签|
|posneg|正例反例,1表示正例,0表示反例|

#### 预测格式

```json
[
    {
        "label":"标签", //预测标签
        "score":100, //预测分数在0-100之间
        "other_info": [ //其他信息(如果不需要可不填)
            {
                "key": "xxx",
                "value": "xxx"
            }
        ]
    }
]
```

### 2. 序列标注算法:

#### 训练数据表头:
|字段名|说明|
|---|---|
|sentence|输入语料,样例:\<START:PER\>特朗普\<END\>是\<START:LOC\>美国\<END\>总统。

#### 预测格式

```json
[
    {
        "score": 100, //分数
        "entity_list": [ //抽取到的实体
            {
                "name": "特朗普",
                "start_pos": 0,
                "end_pos": 2,
                "label": "PER",
                "score": 100
            },
            {
                "name": "美国",
                "start_pos": 4,
                "end_pos": 5,
                "label": "LOC",
                "score": 100
            }
        ]
    }
]
```


## 更新日志

- 0.3.16: 

    - 训练接口extend中加入remote_ip

    - 优化日志,打印更详细的日志信息

    - 修复ml_platform_client.logger.log日志工具,解决日志打印多遍问题

    - 接口异常时返回200而不是500,仅用status字段区分

    - 修复load和unload时可能出现的数据不一致的bug,从而导致predict失败

- 0.3.18:

    - 异步方式调用train方法,无需在train方法内再开启异步,train方法结束即认为训练完成,抛出异常认为训练失败

    - 提供默认status方法实现,无特殊需求不用自己实现,默认实现即看train方法是否结束

    - (向下不兼容)注意train方法返回model_id方式弃用,如需自定义model_id,请实现generate_model_id方法

- 0.3.19:

    - 增加训练任务排队,通过环境变量MLP_TRAIN_TASK_NUM配置允许同时运行多少任务

## 版本适配

0.3.9及以下适配2.1.6或以下mlp

0.3.16及以上的0.3.X适配2.1.7 mlp

0.4.X适配2.1.8及以上mlp

推荐版本:0.3.18

0.4.X仍在开发中


## 安装

通过pip安装

    pip install ml-platform-client

推荐安装稳定版本,比如

    pip install ml-platform-client==0.3.16

或者是升级到指定的稳定版本

    pip install -U ml-platform-client==0.3.16


## SDK todo list
1. 模型加载时,需处理同时发来的其他对此模型的加载请求,避免重复加载
2. 增加一个worker加载一个模型的加载模式(为解决tf无法释放内存的问题)


## FAQ

1. 不依赖mysql如何持久化模型信息?

    mlp负责记录模型的训练记录和模型信息,算法服务只需提供基本的训练功能,即把数据集转化为模型文件,并存入minio指定位置

2. 多副本如何同步模型加载信息?

    SDK中提供ml_platform_client.load_checker.Checker类来完成,可参考example

    Checker通过查询mlp的mysql表获取需要加载哪些模型的信息

    注意:未来会推出mlp集群模式,此模式下不能使用Checker,完全托付给mlp服务端来调用

3. 内置模型如何管理?

    最佳实践为把内置模型上传至mlp模型仓库(YOLO仓库完成后直接上传至YOLO),交付给mlp托管

    如果此内置模型无法通过模型文件加载(如意图内置模型),需要到mlp页面接入,并配置为不可加载/卸载,此方案不推荐

4. 算法需要使用GPU怎么办?

    目前mlp不参与GPU管理,需要算法实现时自主连接GPU

5. 无需生成模型的算法如聚类如何接入?

    mlp流程目前包含训练、预测两个阶段。针对聚类算法,可在训练阶段持久化所有配置到minio,加载时从minio读取到内存,预测阶段执行真正的聚类逻辑



            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "ml-platform-client",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "JeremyXin",
    "author_email": "chengjiexin@emotibot.com",
    "download_url": "https://files.pythonhosted.org/packages/a2/d2/7ecd63748d9c527a7ba33d6ec13fc6a72a1cd7812434ff947fe4080607c1/ml-platform-client-0.3.19.tar.gz",
    "platform": "",
    "description": "## Machine Learning Platform client SDK for python\n\n\n## \u4f7f\u7528\u8bf4\u660e\n\n\u6b64SDK\u76ee\u6807\u4e3a\u4e86\u65b9\u4fbf\u7b97\u6cd5\u63a5\u5165mlp\uff0c\u63a8\u8350\u4f7f\u7528\u6b64SDK\u5b9e\u73b0\u7b97\u6cd5\u670d\u52a1\n\n1. SDK\u63d0\u4f9b\u4ec0\u4e48\u529f\u80fd\uff1f\n\n    - \u542f\u52a8web\u670d\u52a1\uff0c\u5e76\u5c01\u88c5\u5bf9\u63a5mlp\u7684\u63a5\u53e3\n    - \u63d0\u4f9b\u597d\u7528\u7684util\u7c7b\uff0c\u5982log\u7c7b\u3001minio\u8bbf\u95ee\u7c7b\u7b49\n    - \u63d0\u4f9b\u5927\u90e8\u5206\u7b97\u6cd5\u90fd\u4f1a\u78b0\u5230\u7684\u95ee\u9898\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u6bd4\u5982\u591a\u526f\u672c\u4fe1\u606f\u540c\u6b65\uff0cpython\u591a\u5f00\u8fdb\u7a0b\u8fdb\u884c\u6a21\u578b\u9884\u6d4b\uff0c\u8bad\u7ec3\u4efb\u52a1\u6392\u961f\u7b49\u7b49\n\n    \u5982\u679c\u6709\u9700\u8981\u7684\u529f\u80fdsdk\u6ca1\u6709\u5b9e\u73b0\uff0c\u5efa\u8bae\u63d0\u7ed9mlp\u5c0f\u7ec4\u52a0\u4ee5\u5b9e\u73b0\uff0c\u56e0\u4e3a\u522b\u4eba\u53ef\u80fd\u6709\u4e00\u6837\u7684\u9700\u6c42\uff0c\u5c3d\u91cf\u6807\u51c6\u5316\n\n2. \u54ea\u4e9b\u529f\u80fd\u9700\u8981\u7b97\u6cd5\u6a21\u5757\u5b9e\u73b0\uff1f\n\n    \u7b97\u6cd5\u6a21\u5757\u4e3b\u8981\u5173\u6ce8\u8bad\u7ec3\uff0c\u9884\u6d4b\u8fd9\u4e24\u4e2a\u529f\u80fd\n\n    \u5176\u4ed6\u5de5\u7a0b\u95ee\u9898\u5982\u6a21\u578b\u52a0\u8f7d\u5185\u5b58\u63a7\u5236\uff0c\u6a21\u578b\u7248\u672c\u7ba1\u7406\u7b49\uff0c\u8bf7\u4ea4\u7ed9mlp\n\n    \u6240\u4ee5\u8bf7\u628a\u7b97\u6cd5\u670d\u52a1\u8bbe\u8ba1\u5f97\u5c3d\u91cf\u8f7b\u91cf\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4e0d\u8981\u4f9d\u8d56\u5176\u4ed6\u4e2d\u95f4\u4ef6\u5982mysql\uff08\u9664\u975e\u7b97\u6cd5\u90e8\u5206\u9700\u8981\u4f9d\u8d56\uff0c\u6bd4\u5982\u4f9d\u8d56es\u505a\u641c\u7d22\u7b49\uff09\n\n\n### 1. \u5b9e\u73b0\u5bf9\u63a5mlp\u7684\u63a5\u53e3\n\u7ee7\u627fAlgorithmBase\u7c7b\u548cPredictorBase\u7c7b\u5b9e\u73b0\u76f8\u5e94\u65b9\u6cd5\n\n\u5305\u62ectrain, load, unload, status, predict, generate_model_id\u65b9\u6cd5\n\n\uff080.3.18\u53ca\u4e4b\u540e\u7248\u672c\u4e00\u822c\u60c5\u51b5\u4e0b\u53ea\u9700\u5b9e\u73b0train, load, predict\u5373\u53ef\uff0cunload\uff0cstatus\uff0cgenerate_model_id\u90fd\u6709\u9ed8\u8ba4\u5b9e\u73b0\uff09\n\n\u901a\u8fc7register\u51fd\u6570\u6ce8\u518c\u5230\u5230app\u4e0a\u5373\u53ef\uff0cSDK\u81ea\u52a8\u5b9e\u73b0\u5bf9\u63a5mlp\u7684\u63a5\u53e3\n\n\u53ef\u53c2\u8003example\u76ee\u5f55\u4e0b\u7684\u793a\u4f8b\n\n\n#### train\u65b9\u6cd5\ntrain\u65b9\u6cd5\u63a5\u53d7\u8bad\u7ec3\u6570\u636e\u548c\u53c2\u6570\uff0c\u751f\u6210\u6a21\u578b\u5e76\u5b58\u50a8\u5230minio\uff08\u53ef\u4e3a\u903b\u8f91\u6a21\u578b\uff0c\u5373\u9884\u6d4b\u6240\u4f9d\u8d56\u7684\u6570\u636e\u90fd\u53ef\u79f0\u4e3a\u6a21\u578b\uff09\n\n0.3.18\u53ca\u4e4b\u540e\u7248\u672c\uff0c\u8bad\u7ec3\u65b9\u6cd5\u4f1a\u88ab\u5f02\u6b65\u8c03\u7528\uff0c\u65b9\u6cd5\u5185\u90e8\u65e0\u9700\u663e\u5f0f\u5f00\u542f\u7ebf\u7a0b/\u8fdb\u7a0b\uff0c\u5982\u679c\u8bad\u7ec3\u5931\u8d25\uff0c\u629b\u51fa\u5f02\u5e38\u6216\u8fd4\u56deFalse\uff0c\u6b63\u5e38\u8fd4\u56de\u8ba4\u4e3a\u8bad\u7ec3\u6210\u529f, \u8981\u81ea\u5b9a\u4e49model_id\u8bf7\u901a\u8fc7generate_model_id\u65b9\u6cd5\n\n\u4e4b\u524d\u7248\u672c\u9700\u8981\u624b\u52a8\u5728train\u65b9\u6cd5\u5185\u90e8\u5f00\u542f\u5f02\u6b65\uff0ctrain\u65b9\u6cd5\u7ed3\u675f\u540e\u8bad\u7ec3\u63a5\u53e3\u624d\u4f1a\u8fd4\u56de\uff0ctrain\u65b9\u6cd5\u5982\u679c\u8fd4\u56de\u503c\uff0c\u8ba4\u4e3a\u662f\u81ea\u5b9a\u4e49model_id\n\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|data_config.location|\u8bad\u7ec3\u6570\u636e\u6587\u4ef6minio\u8def\u5f84\uff0c\u683c\u5f0f\u4e3atsv\uff0c\u6ca1\u6709header\uff0c\u5177\u4f53\u5217\u540d\u6309\u7167\u7b97\u6cd5\u7c7b\u522b\u4e0d\u540c\u800c\u4e0d\u540c\uff0c\u683c\u5f0f\uff1a/path/to/your/data\uff0c\u4e0d\u5e26\u6876\u4fe1\u606f\uff0c\u56fa\u5b9a\u4e3aml-platform-data|\n|model_id|mlp\u6307\u5b9a\u7684\u6a21\u578bid\uff0c\u4e5f\u53ef\u81ea\u5df1\u751f\u6210\uff0c\u5728train\u65b9\u6cd5\u4e2d\u8fd4\u56de\u5373\u53ef|\n|model_path|\u6b64\u7248\u672c\u6ca1\u6709\u7528\u4e0a|\n|parameter|\u8bad\u7ec3\u8d85\u53c2\uff0cdict\u7c7b\u578b\uff0c\u53ef\u5728mlp\u4e0a\u914d\u7f6e\uff0c\u4e5f\u53ef\u5728\u8c03\u7528mlp\u8bad\u7ec3\u63a5\u53e3\u65f6\u4f20\u5165|\n|parameter.pretrain_model|\u9884\u8bad\u7ec3\u6a21\u578bminio\u5b58\u50a8\u8def\u5f84\uff0c\u683c\u5f0f\uff1abucket/path/to/your/data\uff0c\u5e26\u6709\u6876\u4fe1\u606f|\n|extend|\u6269\u5c55\u5b57\u6bb5|\n\n\n### generate_model_id\u65b9\u6cd5\n\u9ed8\u8ba4\u968f\u673a\u751f\u6210uuid\u4f5c\u4e3amodel_id\u5e76\u4f20\u5165train\u65b9\u6cd5\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\uff0c\u53ef\u4ee5\u81ea\u884c\u5b9e\u73b0\u6b64\u65b9\u6cd5\u3002\n\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|extend|\u6269\u5c55\u5b57\u6bb5|\n\n\n#### load\u548cunload\u65b9\u6cd5\n\u52a0\u8f7d/\u5378\u8f7d\u5b8c\u6210\u540e\u624d\u8fd4\u56de\uff0c\u4e0d\u8981\u4f7f\u7528\u5f02\u6b65\u65b9\u5f0f\u52a0\u8f7d\u3002load\u65b9\u6cd5\u8fd4\u56de\u7684\u662fPredictor\u5bf9\u8c61\uff0c\u7528\u6765\u9884\u6d4b\uff0c\u628a\u9884\u6d4b\u65f6\u4f9d\u8d56\u7684\u6570\u636e\u5168\u90e8\u52a0\u8f7d\u8d77\u6765\u653e\u5165Predictor\u5bf9\u8c61\n\nunload\u65f6\uff0csdk\u4f1a\u5728\u5185\u5b58\u91ca\u653eload\u65b9\u6cd5\u8fd4\u56de\u7684\u5bf9\u8c61\uff0c\u5982\u679c\u6ca1\u6709\u7279\u522b\u9700\u8981\u65e0\u9700\u5b9e\u73b0unload\u65b9\u6cd5\n\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|model_id|\u6a21\u578b\u52a0\u8f7d\u8d77\u6765\u540e\u7684\u4f7f\u7528id|\n|model_path|\u5f85\u52a0\u8f7d\u6a21\u578b\u6587\u4ef6\u5b58\u50a8\u7684\u4f4d\u7f6e\uff0c\u5982\u679c\u4e0d\u4e3aNone\u5219\u4ece\u6b64\u8def\u5f84\u52a0\u8f7d\uff0c\u5e26\u6709\u6876\u540d|\n\n\n#### predict\u65b9\u6cd5\n\u6a21\u578b\u9884\u6d4b\u65f6\u8c03\u7528\u7684\u65b9\u6cd5\uff0c\u4e0d\u540c\u7c7b\u578b\u7b97\u6cd5\u9700\u8fd4\u56de\u683c\u5f0f\u4e0d\u540c\n\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|features|\u7279\u5f81\uff0cdict\u7c7b\u578b\uff0c\u4e0d\u540c\u7b97\u6cd5\u7c7b\u522b\u6709\u4e0d\u540c\u7279\u5f81|\n|params|\u9884\u6d4b\u65f6\u53c2\u6570\uff0cdict\u7c7b\u578b\uff0c\u6807\u51c6\u9884\u6d4b\u53c2\u6570\u6709threshold\u548ctop_n|\n\n\n#### status\u65b9\u6cd5\n\uff010.3.18\u53ca\u4e4b\u540e\u7248\u672c\u6709\u9ed8\u8ba4\u5b9e\u73b0\uff0c\u5373train\u65b9\u6cd5\u6b63\u5e38\u8fd4\u56de\u8ba4\u4e3a\u8bad\u7ec3\u5b8c\u6210\uff0c\u629b\u51fa\u5f02\u5e38\u6216\u8fd4\u56deFalse\u8ba4\u4e3a\u8bad\u7ec3\u5931\u8d25\uff0c\u5982\u65e0\u7279\u522b\u9700\u8981\uff0c\u65e0\u9700\u5b9e\u73b0\u6b64\u65b9\u6cd5\n\n\u8bad\u7ec3\u72b6\u6001\u67e5\u8be2\uff0c\u901a\u8fc7model_id\u67e5\u8be2\u8bad\u7ec3\u72b6\u6001\uff0c\u53ef\u63a5\u53d7\u7684\u72b6\u6001\u6709 init, training, error, completed, unknown\n\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|model_id|\u6a21\u578bid|\n\n\n### 2. \u8bf4\u660e\n\u6269\u5c55\u5b57\u6bb5\u5185\u5bb9\uff1a\n\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|extend.remote_ip|\u8c03\u7528\u65b9ip\uff0c\u5373\u8bad\u7ec3\u6570\u636e\u6587\u4ef6\uff0c\u9884\u8bad\u7ec3\u6a21\u578b\uff0c\u4ee5\u53ca\u6700\u7ec8\u751f\u6210\u7684\u6a21\u578b\u7684\u5b58\u50a8\u5730\u5740|\n|extend.dict_location|\u5b57\u5178\u6587\u4ef6minio\u8def\u5f84\uff0c\u683c\u5f0f\u4e0d\u9650|\n|extend.extra_location|\u989d\u5916\u6570\u636e\u6587\u4ef6minio\u8def\u5f84\uff0c\u683c\u5f0f\u4e0d\u9650|\n|extend.app_id|\u673a\u5668\u4ebaid\uff0c\u5982\u679c\u4e0d\u5c5e\u4e8e\u67d0\u673a\u5668\u4eba\u5219\u4e3aNone|\n\n**\u5982\u679c\u9700\u8981\u4e00\u4e2a\u7b97\u6cd5\u670d\u52a1\u4e3a\u591a\u4e2amlp\u63d0\u4f9b\u670d\u52a1\uff0c\u5728\u8fde\u63a5minio\u65f6\u90fd\u9700\u8981\u901a\u8fc7extend.remote_ip\u83b7\u53d6\u8c03\u7528\u65b9ip\uff0c\u8fde\u63a5\u6b64ip\u4e0a\u7684minio\uff0c\u4e0d\u8981\u76f4\u63a5\u53bb\u8fde\u63a5\u672c\u5730minio**\n\nminio\u6570\u636e\u5305\u62ec\u8bad\u7ec3\u6570\u636e\uff0c\u9884\u8bad\u7ec3\u6a21\u578b\uff0c\u751f\u6210\u7684\u6a21\u578b\u7684\u5b58\u50a8\u8def\u5f84\n\n### 3. tips\n\n- \u63a8\u8350\u901a\u8fc7ml_platform_client.logger.log\u6765\u8f93\u51fa\u65e5\u5fd7\uff0c\u53ef\u4f7f\u683c\u5f0f\u6807\u51c6\u5e76\u53ef\u4ee5\u8f93\u51fa\u8bf7\u6c42uuid\uff0c\u65b9\u4fbf\u6392\u9519\n- \u63a8\u8350\u901a\u8fc7ml_platform_client.minio_accessor.MinIOAccessor\u6765\u8bbf\u95eeminio\u6587\u4ef6\uff0c\u6b64\u7c7b\u4f1a\u5728\u672c\u5730\u5efa\u7acb\u672c\u5730\u6587\u4ef6\u7f13\u5b58\uff0c\u63d0\u5347minio\u8bbf\u95ee\u6548\u7387\uff0c\u5982\u6709\u5fc5\u8981\u8fd8\u53ef\u628a\u672c\u5730\u7f13\u5b58\u8def\u5f84\u6302\u8f7d\u5230docker\u5916\n\n\n## \u4e0d\u540c\u7b97\u6cd5\u683c\u5f0f\u8bf4\u660e\n\n\n### 1. \u5206\u7c7b\u7b97\u6cd5\n\n#### \u8bad\u7ec3\u6570\u636e\u8868\u5934\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|sentence|\u8f93\u5165\u8bed\u6599|\n|label|\u9884\u6d4b\u6807\u7b7e|\n|posneg|\u6b63\u4f8b\u53cd\u4f8b\uff0c1\u8868\u793a\u6b63\u4f8b\uff0c0\u8868\u793a\u53cd\u4f8b|\n\n#### \u9884\u6d4b\u683c\u5f0f\n\n```json\n[\n    {\n        \"label\":\"\u6807\u7b7e\", //\u9884\u6d4b\u6807\u7b7e\n        \"score\":100, //\u9884\u6d4b\u5206\u6570\u57280-100\u4e4b\u95f4\n        \"other_info\": [ //\u5176\u4ed6\u4fe1\u606f\uff08\u5982\u679c\u4e0d\u9700\u8981\u53ef\u4e0d\u586b\uff09\n            {\n                \"key\": \"xxx\",\n                \"value\": \"xxx\"\n            }\n        ]\n    }\n]\n```\n\n### 2. \u5e8f\u5217\u6807\u6ce8\u7b97\u6cd5\uff1a\n\n#### \u8bad\u7ec3\u6570\u636e\u8868\u5934\uff1a\n|\u5b57\u6bb5\u540d|\u8bf4\u660e|\n|---|---|\n|sentence|\u8f93\u5165\u8bed\u6599\uff0c\u6837\u4f8b\uff1a\\<START:PER\\>\u7279\u6717\u666e\\<END\\>\u662f\\<START:LOC\\>\u7f8e\u56fd\\<END\\>\u603b\u7edf\u3002\n\n#### \u9884\u6d4b\u683c\u5f0f\n\n```json\n[\n    {\n        \"score\": 100, //\u5206\u6570\n        \"entity_list\": [ //\u62bd\u53d6\u5230\u7684\u5b9e\u4f53\n            {\n                \"name\": \"\u7279\u6717\u666e\",\n                \"start_pos\": 0,\n                \"end_pos\": 2,\n                \"label\": \"PER\",\n                \"score\": 100\n            },\n            {\n                \"name\": \"\u7f8e\u56fd\",\n                \"start_pos\": 4,\n                \"end_pos\": 5,\n                \"label\": \"LOC\",\n                \"score\": 100\n            }\n        ]\n    }\n]\n```\n\n\n## \u66f4\u65b0\u65e5\u5fd7\n\n- 0.3.16: \n\n    - \u8bad\u7ec3\u63a5\u53e3extend\u4e2d\u52a0\u5165remote_ip\n\n    - \u4f18\u5316\u65e5\u5fd7\uff0c\u6253\u5370\u66f4\u8be6\u7ec6\u7684\u65e5\u5fd7\u4fe1\u606f\n\n    - \u4fee\u590dml_platform_client.logger.log\u65e5\u5fd7\u5de5\u5177\uff0c\u89e3\u51b3\u65e5\u5fd7\u6253\u5370\u591a\u904d\u95ee\u9898\n\n    - \u63a5\u53e3\u5f02\u5e38\u65f6\u8fd4\u56de200\u800c\u4e0d\u662f500\uff0c\u4ec5\u7528status\u5b57\u6bb5\u533a\u5206\n\n    - \u4fee\u590dload\u548cunload\u65f6\u53ef\u80fd\u51fa\u73b0\u7684\u6570\u636e\u4e0d\u4e00\u81f4\u7684bug\uff0c\u4ece\u800c\u5bfc\u81f4predict\u5931\u8d25\n\n- 0.3.18:\n\n    - \u5f02\u6b65\u65b9\u5f0f\u8c03\u7528train\u65b9\u6cd5\uff0c\u65e0\u9700\u5728train\u65b9\u6cd5\u5185\u518d\u5f00\u542f\u5f02\u6b65\uff0ctrain\u65b9\u6cd5\u7ed3\u675f\u5373\u8ba4\u4e3a\u8bad\u7ec3\u5b8c\u6210\uff0c\u629b\u51fa\u5f02\u5e38\u8ba4\u4e3a\u8bad\u7ec3\u5931\u8d25\n\n    - \u63d0\u4f9b\u9ed8\u8ba4status\u65b9\u6cd5\u5b9e\u73b0\uff0c\u65e0\u7279\u6b8a\u9700\u6c42\u4e0d\u7528\u81ea\u5df1\u5b9e\u73b0\uff0c\u9ed8\u8ba4\u5b9e\u73b0\u5373\u770btrain\u65b9\u6cd5\u662f\u5426\u7ed3\u675f\n\n    - \uff08\u5411\u4e0b\u4e0d\u517c\u5bb9\uff09\u6ce8\u610ftrain\u65b9\u6cd5\u8fd4\u56demodel_id\u65b9\u5f0f\u5f03\u7528\uff0c\u5982\u9700\u81ea\u5b9a\u4e49model_id\uff0c\u8bf7\u5b9e\u73b0generate_model_id\u65b9\u6cd5\n\n- 0.3.19:\n\n    - \u589e\u52a0\u8bad\u7ec3\u4efb\u52a1\u6392\u961f\uff0c\u901a\u8fc7\u73af\u5883\u53d8\u91cfMLP_TRAIN_TASK_NUM\u914d\u7f6e\u5141\u8bb8\u540c\u65f6\u8fd0\u884c\u591a\u5c11\u4efb\u52a1\n\n## \u7248\u672c\u9002\u914d\n\n0.3.9\u53ca\u4ee5\u4e0b\u9002\u914d2.1.6\u6216\u4ee5\u4e0bmlp\n\n0.3.16\u53ca\u4ee5\u4e0a\u76840.3.X\u9002\u914d2.1.7 mlp\n\n0.4.X\u9002\u914d2.1.8\u53ca\u4ee5\u4e0amlp\n\n\u63a8\u8350\u7248\u672c\uff1a0.3.18\n\n0.4.X\u4ecd\u5728\u5f00\u53d1\u4e2d\n\n\n## \u5b89\u88c5\n\n\u901a\u8fc7pip\u5b89\u88c5\n\n    pip install ml-platform-client\n\n\u63a8\u8350\u5b89\u88c5\u7a33\u5b9a\u7248\u672c\uff0c\u6bd4\u5982\n\n    pip install ml-platform-client==0.3.16\n\n\u6216\u8005\u662f\u5347\u7ea7\u5230\u6307\u5b9a\u7684\u7a33\u5b9a\u7248\u672c\n\n    pip install -U ml-platform-client==0.3.16\n\n\n## SDK todo list\n1. \u6a21\u578b\u52a0\u8f7d\u65f6\uff0c\u9700\u5904\u7406\u540c\u65f6\u53d1\u6765\u7684\u5176\u4ed6\u5bf9\u6b64\u6a21\u578b\u7684\u52a0\u8f7d\u8bf7\u6c42\uff0c\u907f\u514d\u91cd\u590d\u52a0\u8f7d\n2. \u589e\u52a0\u4e00\u4e2aworker\u52a0\u8f7d\u4e00\u4e2a\u6a21\u578b\u7684\u52a0\u8f7d\u6a21\u5f0f(\u4e3a\u89e3\u51b3tf\u65e0\u6cd5\u91ca\u653e\u5185\u5b58\u7684\u95ee\u9898)\n\n\n## FAQ\n\n1. \u4e0d\u4f9d\u8d56mysql\u5982\u4f55\u6301\u4e45\u5316\u6a21\u578b\u4fe1\u606f\uff1f\n\n    mlp\u8d1f\u8d23\u8bb0\u5f55\u6a21\u578b\u7684\u8bad\u7ec3\u8bb0\u5f55\u548c\u6a21\u578b\u4fe1\u606f\uff0c\u7b97\u6cd5\u670d\u52a1\u53ea\u9700\u63d0\u4f9b\u57fa\u672c\u7684\u8bad\u7ec3\u529f\u80fd\uff0c\u5373\u628a\u6570\u636e\u96c6\u8f6c\u5316\u4e3a\u6a21\u578b\u6587\u4ef6\uff0c\u5e76\u5b58\u5165minio\u6307\u5b9a\u4f4d\u7f6e\n\n2. \u591a\u526f\u672c\u5982\u4f55\u540c\u6b65\u6a21\u578b\u52a0\u8f7d\u4fe1\u606f\uff1f\n\n    SDK\u4e2d\u63d0\u4f9bml_platform_client.load_checker.Checker\u7c7b\u6765\u5b8c\u6210\uff0c\u53ef\u53c2\u8003example\n\n    Checker\u901a\u8fc7\u67e5\u8be2mlp\u7684mysql\u8868\u83b7\u53d6\u9700\u8981\u52a0\u8f7d\u54ea\u4e9b\u6a21\u578b\u7684\u4fe1\u606f\n\n    \u6ce8\u610f\uff1a\u672a\u6765\u4f1a\u63a8\u51famlp\u96c6\u7fa4\u6a21\u5f0f\uff0c\u6b64\u6a21\u5f0f\u4e0b\u4e0d\u80fd\u4f7f\u7528Checker\uff0c\u5b8c\u5168\u6258\u4ed8\u7ed9mlp\u670d\u52a1\u7aef\u6765\u8c03\u7528\n\n3. \u5185\u7f6e\u6a21\u578b\u5982\u4f55\u7ba1\u7406\uff1f\n\n    \u6700\u4f73\u5b9e\u8df5\u4e3a\u628a\u5185\u7f6e\u6a21\u578b\u4e0a\u4f20\u81f3mlp\u6a21\u578b\u4ed3\u5e93\uff08YOLO\u4ed3\u5e93\u5b8c\u6210\u540e\u76f4\u63a5\u4e0a\u4f20\u81f3YOLO\uff09\uff0c\u4ea4\u4ed8\u7ed9mlp\u6258\u7ba1\n\n    \u5982\u679c\u6b64\u5185\u7f6e\u6a21\u578b\u65e0\u6cd5\u901a\u8fc7\u6a21\u578b\u6587\u4ef6\u52a0\u8f7d\uff08\u5982\u610f\u56fe\u5185\u7f6e\u6a21\u578b\uff09\uff0c\u9700\u8981\u5230mlp\u9875\u9762\u63a5\u5165\uff0c\u5e76\u914d\u7f6e\u4e3a\u4e0d\u53ef\u52a0\u8f7d/\u5378\u8f7d\uff0c\u6b64\u65b9\u6848\u4e0d\u63a8\u8350\n\n4. \u7b97\u6cd5\u9700\u8981\u4f7f\u7528GPU\u600e\u4e48\u529e\uff1f\n\n    \u76ee\u524dmlp\u4e0d\u53c2\u4e0eGPU\u7ba1\u7406\uff0c\u9700\u8981\u7b97\u6cd5\u5b9e\u73b0\u65f6\u81ea\u4e3b\u8fde\u63a5GPU\n\n5. \u65e0\u9700\u751f\u6210\u6a21\u578b\u7684\u7b97\u6cd5\u5982\u805a\u7c7b\u5982\u4f55\u63a5\u5165\uff1f\n\n    mlp\u6d41\u7a0b\u76ee\u524d\u5305\u542b\u8bad\u7ec3\u3001\u9884\u6d4b\u4e24\u4e2a\u9636\u6bb5\u3002\u9488\u5bf9\u805a\u7c7b\u7b97\u6cd5\uff0c\u53ef\u5728\u8bad\u7ec3\u9636\u6bb5\u6301\u4e45\u5316\u6240\u6709\u914d\u7f6e\u5230minio\uff0c\u52a0\u8f7d\u65f6\u4eceminio\u8bfb\u53d6\u5230\u5185\u5b58\uff0c\u9884\u6d4b\u9636\u6bb5\u6267\u884c\u771f\u6b63\u7684\u805a\u7c7b\u903b\u8f91\n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "emotibot ml platform client for python",
    "version": "0.3.19",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "f6ee418ef8addb1419bbe26c9bde47d0",
                "sha256": "feaac137c1183f78a4b66ba2f7572f3e9affc2f534ee5f114ff2f1fcb826f42d"
            },
            "downloads": -1,
            "filename": "ml_platform_client-0.3.19-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f6ee418ef8addb1419bbe26c9bde47d0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 41399,
            "upload_time": "2021-04-09T03:51:31",
            "upload_time_iso_8601": "2021-04-09T03:51:31.235448Z",
            "url": "https://files.pythonhosted.org/packages/00/b5/7e0a1cfe2284db5350944ec06339fdb7b4291cf5656c52c069d23fceadeb/ml_platform_client-0.3.19-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "2777ff028a2704b80af624336624116e",
                "sha256": "f51d24f7153e873b235d61b6899a8d0452ec586360a83fdc13cb1049ceee025e"
            },
            "downloads": -1,
            "filename": "ml-platform-client-0.3.19.tar.gz",
            "has_sig": false,
            "md5_digest": "2777ff028a2704b80af624336624116e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 26849,
            "upload_time": "2021-04-09T03:51:32",
            "upload_time_iso_8601": "2021-04-09T03:51:32.889862Z",
            "url": "https://files.pythonhosted.org/packages/a2/d2/7ecd63748d9c527a7ba33d6ec13fc6a72a1cd7812434ff947fe4080607c1/ml-platform-client-0.3.19.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-04-09 03:51:32",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "ml-platform-client"
}
        
Elapsed time: 0.24888s