lintoai/linto-platform-punctuationLinTO-platform-punctuation是LinTO平台的标点预测服务,可从原始文本或转录内容中预测标点。该服务既可作为独立标点服务使用,也可部署为微服务。
先决条件
部署
使用方法
许可证
标点服务依赖于训练好的重排和标点预测模型。以下语言的模型基于Common Crawl训练,可在recasepunc获取:
标点服务需要Docker环境。如需GPU支持,还需安装nvidia-container-toolkit。
任务模式下的标点服务通过Celery在REDIS消息代理上接收任务。
linto-platform-punctuation支持两种部署方式:
1- 第一步:构建镜像
bashgit clone [***] cd linto-platform-punctuation docker build . -t linto-platform-punctuation:latest
或直接拉取镜像:
bashdocker pull registry.linto.ai/lintoai/linto-platform-punctuation:latest
2- 下载模型
将标点模型准备在<MODEL_PATH>路径下。
1- 配置.env文件
bashcp .env_default .env
填写.env文件参数:
参数说明:
| 变量名 | 描述 | 示例 |
|---|---|---|
| SERVICE_NAME | 服务名称 | my_punctuation_service |
| CONCURRENCY | 工作进程数 | > 1 |
2- Docker运行
bashdocker run --rm \ -v <MODEL_PATH>:/usr/src/app/model-store/model \ -p HOST_SERVING_PORT:80 \ --env-file .env \ linto-platform-punctuation:latest
如需启用GPU,添加--gpus all选项。容器将在主机的HOST_SERVING_PORT端口提供HTTP API服务。
LinTO-platform-punctuation可部署为微服务,以Celery工作进程形式等待任务队列中的标点任务。任务模式下需要配置REDIS代理。
需在MY_SERVICE_BROKER地址运行消息代理,通常通过Docker Swarm使用docker compose部署:
1- 配置.env文件
bashcp .env_default .env
填写.env文件参数:
参数说明:
| 变量名 | 描述 | 示例 |
|---|---|---|
| SERVICES_BROKER | 服务代理URI | redis://my_redis_broker:6379 |
| BROKER_PASS | 服务代理密码(无密码则留空) | my_password |
| QUEUE_NAME | (可选)覆盖生成的队列名称 | my_queue |
| SERVICE_NAME | 服务名称 | punctuation-ml |
| LANGUAGE | BCP-47语言代码 | en-US 或 * 或用"|"分隔的多语言 |
| MODEL_INFO | 模型可读描述 | "基于Bert的法语标点预测模型" |
| CONCURRENCY | 工作进程数(1进程=1CPU) | >1 |
SERVICE_NAME和语言参数请勿使用空格或"_"字符。
2- 配置docker-compose.yml
#docker-compose.yml
yamlversion: '3.7' services: punctuation-service: image: linto-platform-punctuation:latest volumes: - /my/path/to/models/punctuation.mar:/usr/src/app/model-store/model env_file: .env deploy: replicas: 1 networks: - your-net networks: your-net: external: true
3- 启动服务
bashdocker stack deploy --resolve-image always --compose-file docker-compose.yml your_stack
队列名称:
默认队列名称格式为punctuation_{LANGUAGE}_{SERVICE_NAME},可通过QUEUE_NAME环境变量覆盖。
服务发现:
微服务模式下,实例会在服务注册中心注册自身信息,以JSON格式存储在Redis db0中,键为service:{HOST_NAME}。注册信息如下:
json{ "service_name": $SERVICE_NAME, "host_name": $HOST_NAME, "service_type": "punctuation", "service_language": $LANGUAGE, "queue_name": $QUEUE_NAME, "version": "1.2.0", # 仓库版本 "info": "法语标点预测模型", "last_alive": 65478213, "concurrency": 1 }
返回API状态
方法:GET
健康检查通过时返回"1"。
标点预测API
json{ "sentences": [ "this is sentence 1", "is that a second sentence", "yet an other sentence" ] }
返回带标点的文本,JSON结构如下:
json{ "punctuated_sentences": [ "This is sentence 1", "Is that a second sentence ?", "Yet an other sentence" ] }
提供OpenAPI/swagger接口文档。
标点工作进程接受带以下参数的Celery任务:
text: Union[str, List[str]]
根据输入参数类型返回字符串或字符串列表。
可使用curl测试HTTP API:
bashcurl -X POST "[***]" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"sentences\": [ \"this is sentence 1\", \"is that a second sentence\", \"yet an other sentence\" ]}"
本项目基于AGPLv3许可证开发(详见LICENSE)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务