您可以使用EASCMD工具创建EAS服务,创建服务前需要配置服务相关信息的JSON文件。本文为您介绍JSON文件内的参数说明信息。
如何使用EASCMD工具,详情请参见下载并认证客户端。
参数说明
JSON文件参数说明如下表所示。
参数 | 是否必选 | 描述 |
name | 是 | 服务名称,必须在同一地域内唯一。 |
token | 否 | 表示访问鉴权的Token字符串。如果未指定,则系统自动生成。 |
model_path | 是 | model_path和processor_path分别为模型和Processor的输入数据源地址,均支持以下格式的地址:
|
oss_endpoint | 否 | OSS的Endpoint,例如oss-cn-beijing.aliyuncs.com。其他取值请参见OSS地域和访问域名。 说明 默认无需指定该参数,会使用当前地域的内网OSS地址,来进行模型文件或Processor文件的下载。当跨地域访问OSS时,需要指定该参数。例如:当您在杭州地域部署服务时,model_path中填写了北京地域的OSS地址,则需要使用该参数来指定北京地域的OSS公网访问地址。 |
model_entry | 否 | 表示模型的入口文件,可以包含任意文件。如果未指定,则使用model_path中的文件名。主文件路径会传递给Processor中的initialize()函数。 |
model_config | 否 | 表示模型的配置,支持任意文本。该参数值会传递给Processor中Initialize()函数的第二个参数。 |
processor | 否 |
|
processor_path | 否 | Processor相关的文件包路径,可以参见model_path参数的描述信息。 |
processor_entry | 否 | Processor的主文件。例如libprocessor.so或app.py,其中包含了预测所需的 当processor_type为cpp或python时,必须指定该参数。 |
processor_mainclass | 否 | Processor的主文件,JAR包中的mainclass。例如com.aliyun.TestProcessor。 当processor_type为java时,必须指定该参数。 |
processor_type | 否 | processor实现的语言,取值如下:
|
warm_up_data_path | 否 | 用于模型预热的请求文件路径。更多关于模型预热功能的介绍,详情请参见模型服务预热。 |
runtime.enable_crash_block | 否 | 当服务实例因Processor代码异常发生Crash后,服务实例是否会自动重启。取值如下:
|
cloud | 否 | 使用公共资源组部署服务时,请务必使用cloud.computing.instance_type字段来指定实例使用的机型。
具体参数配置详情,请参见公共资源组使用说明。 |
autoscaler | 否 | 表示模型服务自动水平扩缩容的配置信息。具体参数配置,详情请参见水平自动扩缩容功能。 |
containers | 否 | 表示使用自定义镜像部署服务时的容器信息。具体参数配置,详情请参见服务部署:自定义镜像。 |
storage | 否 | 表示服务存储挂载等相关信息。 |
metadata | 是 | 表示服务的Meta信息。具体参数配置,详情请参见表1.metadata参数说明。 |
features | 否 | 表示服务的特殊功能配置。具体参数配置,详情请参见表2.features参数说明。 |
networking | 否 | 表示服务的调用配置。具体参数配置,详情请参见表3.networking参数说明。 |
使用示例
上述参数在JSON文件中的配置示例如下:
{
"name": "test_eascmd",
"processor": "tensorflow_cpu_1.12",
"model_path": "oss://examplebucket/exampledir/",
"oss_endpoint": "oss-cn-beijing.aliyuncs.com",
"model_entry": "",
"model_config": "",
"processor": "",
"processor_path": "",
"processor_entry": "",
"processor_mainclass": "",
"processor_type": "",
"warm_up_data_path": "",
"runtime": {
"enable_crash_block": false
},
"cloud": {
"computing": {
"instance_type": "ecs.gn6i-c24g1.6xlarge"
}
},
"autoscaler": {
"min": 2,
"max": 5,
"strategies": {
"qps": 10
}
},
"storage": [
{
"mount_path": "/data_oss",
"oss": {
"endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
"path": "oss://bucket/path/"
}
}
],
"metadata": {
"resource": "eas-r-9lkbl2jvdm0puv****",
"instance": 1,
"workspace_id": 1405**,
"gpu": 0,
"cpu": 1,
"memory": 2000,
"gpu_memory": 10,
"gpu_core_percentage": 10,
"qos": "",
"cuda": "11.2",
"enable_grpc": false,
"enable_webservice": false,
"rpc": {
"batching": false,
"keepalive": 5000,
"io_threads": 4,
"max_batch_size": 16,
"max_batch_timeout": 50,
"max_queue_size": 64,
"worker_threads": 5,
"rate_limit": 0,
"enable_sigterm": false
},
"rolling_strategy": {
"max_surge": 1,
"max_unavailable": 1
},
"eas.termination_grace_period": 30,
"scheduling": {
"spread": {
"policy": "host"
}
}
},
"features": {
"eas.aliyun.com/extra-ephemeral-storage": "100Gi"
},
"networking": {
"disable_internet_endpoint": false
},
"containers": [
{
"image": "registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz",
"prepare": {
"pythonRequirements": [
"numpy==1.16.4",
"absl-py==0.11.0"
]
},
"command": "python app.py",
"port": 8000
}
]
}