您可以使用EASCMD工具创建PAI-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地址,来进行模型文件或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,其中包含了预测所需的initialize() 函数和process() 函数的实现。当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 | 否 | 表示在公共资源组中部署服务时的实例类型和网络等信息。具体参数配置,详情请参见公共资源组使用说明。 |
autoscaler | 否 | 表示模型服务自动水平扩缩容的配置信息。具体参数配置,详情请参见水平自动扩缩容功能。 |
containers | 否 | 表示使用自定义镜像部署服务时的容器信息。具体参数配置,详情请参见服务部署:自定义镜像。 |
storage | 否 | 表示服务存储挂载等相关信息。 |
metadata | 是 | 表示服务的Meta信息。具体参数配置,详情请参见 metadata 参数说明。 |
features | 否 | 表示服务的特殊功能配置。具体参数配置,详情请参见 features 参数说明。 |
参数 | 是否必选 | 描述 | |
---|---|---|---|
一般参数 | instance | 是 | 服务启动的实例数量。 |
cpu | 否 | 每个实例需要的CPU数量。 | |
memory | 否 | 每个实例需要的内存数量,取值为整型,单位为MB。例如,"memory": 4096 表示每个实例需要4 GB内存。 | |
gpu | 否 | 每个实例需要的GPU数量。 | |
gpu_memory | 否 | 每个实例所需的GPU显存数量,取值为整型,单位为GB。 系统支持实例按显存进行调度,实现单卡共享多实例功能。如果使用显存调度,则需要将gpu字段配置为0。当gpu字段配置为1时,表示实例独占整张GPU卡,此时gpu_memory 字段会被忽略。 重要 当前未开启显存的严格隔离,您需自行控制各实例的显存使用量,不能超出申请量,避免出现显存内存溢出。 | |
qos | 否 | 实例的服务质量,可选参数值为空或BestEffort。当qos指定为BestEffort时,表示进入CPU共享模式。使实例完全按照显存和内存进行调度,不再受节点的CPU数量限制,节点上的所有实例共享CPU。此时cpu字段表示,按CPU共享模式时,单个实例能使用的最大配额。 | |
resource | 否 | 资源组ID,配置策略如下:
| |
cuda | 否 | 服务需要使用的cuda版本。服务运行时,会自动将指定版本的cuda挂载到实例的/usr/local/cuda 目录中。目前支持的cuda版本为:8.0,9.0,10.0,10.1,10.2,11.0,11.1,11.2。使用示例为: | |
enable_grpc | 否 | 表示是否开启服务网关的GRPC连接,取值如下:
说明 如果使用自定义镜像部署服务时,镜像中的服务端实现为GRPC,则需要通过该参数将网关的协议切换成GRPC。 | |
enable_webservice | 否 | 表示是否开启webserver,从而部署为一个AI-Web应用:
| |
高级参数 重要 请您慎重调整。 | rpc.batching | 否 | 是否开启Server端Batching,用于GPU模型加速。取值如下:
|
rpc.keepalive | 否 | 单个请求的最长处理时间。如果请求处理时长超过该值,则服务端返回408超时并关闭连接。默认值为5000,单位为毫秒。 | |
rpc.io_threads | 否 | 每个实例用于处理网络IO的线程数量,默认值为4。 | |
rpc.max_batch_size | 否 | 每个Batch的最大Size,默认值为16。仅rpc.batching取值为true时,该参数生效。 | |
rpc.max_batch_timeout | 否 | 每个Batch的最大Timeout,默认值为50毫秒。仅rpc.batching取值为true时,该参数生效。 | |
rpc.max_queue_size | 否 | 队列大小,默认值为64。队列满时,服务端返回450并关闭连接。为保证服务端不会压力过载,队列可以提前通知客户端向其他实例进行重试。对于RT较长的服务队列,可以适当减小队列长度,以避免请求在队列中堆积导致大量请求超时。 | |
rpc.worker_threads | 否 | 每个实例中用于并发处理请求的线程数,默认值为5。 | |
rpc.rate_limit | 否 | 表示开启QPS限流功能,并限制实例处理的最大QPS。默认为0,表示关闭QPS限流功能。 例如:该参数配置为2000,当QPS高于2000时,会拒绝请求并返回429(Too Many Requests)。 | |
rolling_strategy.max_surge | 否 | 服务滚动更新过程中,多于指定实例数,最多可以额外创建的实例个数。该参数可以为正整数,表示实例个数;也可以为百分比,例如2%。默认比例为2%。增大该参数可以提高服务更新速度。 例如:服务实例个数指定为100,该参数配置为20,则服务更新开始后会立即创建20个新实例。 | |
rolling_strategy.max_unavailable | 否 | 服务滚动更新过程中,最大不可用的实例个数。该参数可以在服务更新过程中,为新实例释放资源,避免服务因空闲资源不足而更新卡住。目前在专有资源组中,该参数默认为1;在公共资源组中,该参数默认为0。 例如:该参数为N,则服务更新开始时会立即停止N个实例。 说明 如果空闲资源充足,可以将该参数配置为0。该参数配置过大可能会影响服务稳定性。因为在服务更新瞬间,可用实例个数会减少,则单实例承载的流量会变大。您需要权衡服务稳定性和资源情况来配置该参数。 | |
eas.termination_grace_period | 否 | 表示实例的优雅退出时间,单位为秒,默认为30秒。 EAS服务采用滚动更新的策略,实例会先进入Terminating状态,服务会先将流量从要退出的实例上切走,实例等待30秒后将已收到的请求处理完成后退出。如果请求处理时间很长,为保证服务更新时,状态为in progress的请求都能被处理完,您可以将该参数值适当调大。 重要 如果将该参数值调小则会影响服务稳定性,将该参数配置过大则会导致服务更新速度过慢,如果无特别需求请不要配置该参数。 | |
scheduling.spread.policy | 否 | 服务实例调度时的打散策略,支持以下几种策略:
|
参数 | 是否必选 | 描述 |
---|---|---|
eas.aliyun.com/extra-ephemeral-storage | 否 | 当免费额度的系统盘容量不能满足您的业务需求时,额外需要配置的系统盘内存大小。取值为正整数,单位为GB,取值范围为0~2000 GB。 |