您可以使用EASCMD工具创建PAI-EAS服务,创建服务前需要配置服务相关信息的JSON文件。本文为您介绍JSON文件内的参数说明信息。

说明 如何使用EASCMD工具,详情请参见下载并认证客户端
JSON文件参数说明如下表所示。
参数是否必选描述
name服务名称,必须在同一地域内唯一。
token表示访问鉴权的Token字符串。如果未指定,则系统自动生成。
model_pathmodel_pathprocessor_path分别为模型和Processor的输入数据源地址,均支持以下格式的地址:
  • HTTP地址:所需文件必须为TAR.GZTARBZ2ZIP等压缩包。
  • OSS地址:地址链接可以是具体文件路径或文件夹路径。同时,还需要配置参数oss_endpoint,示例如下。
    "model_path":"oss://wowei-beijing-tiyan/alink/",
    "oss_endpoint":"oss-cn-beijing.aliyuncs.com",
  • 本地路径:如果使用test命令进行本地调试,则可以使用本地路径。
oss_endpointOSS的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,则直接在此指定Processor Code即可。Processor在eascmd中使用的Code请参见预置Processor使用说明
  • 如果使用自定义Processor,则无需配置该参数,只需要配置processor_pathprocessor_entryprocessor_mainclassprocessor_type参数。
processor_pathProcessor相关的文件包路径,可以参见model_path参数的描述信息。
processor_entryProcessor的主文件。例如libprocessor.soapp.py,其中包含了预测所需的initialize()函数和process()函数的实现。

processor_typecpppython时,必须指定该参数。

processor_mainclassProcessor的主文件,JAR包中的mainclass。例如com.aliyun.TestProcessor

processor_typejava时,必须指定该参数。

processor_typeprocessor实现的语言,取值如下:
  • cpp
  • java
  • python
warm_up_data_path用于模型预热的请求文件路径。更多关于模型预热功能的介绍,详情请参见高级配置:模型服务预热
runtime.enable_crash_block当服务实例因Processor代码异常发生Crash后,服务实例是否会自动重启。取值如下:
  • true:表示服务实例不自动重启,以保留现场进行问题排查。
  • false:默认值,表示服务实例自动重启。
cloud表示在公共资源组中部署服务时的实例类型和网络等信息。具体参数配置,详情请参见公共资源组使用说明
autoscaler表示模型服务自动水平扩缩容的配置信息。具体参数配置,详情请参见水平自动扩缩容功能
containers表示使用自定义镜像部署服务时的容器信息。具体参数配置,详情请参见服务部署:自定义镜像
storage表示服务存储挂载等相关信息。
metadata表示服务的Meta信息。具体参数配置,详情请参见 metadata 参数说明
features表示服务的特殊功能配置。具体参数配置,详情请参见 features 参数说明
表 1. metadata参数说明
参数是否必选描述
一般参数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,配置策略如下:
  • 如果服务部署在公共资源组,则可以忽略该参数,此时服务进行按量付费。
  • 如果服务部署在专属资源组,则配置该参数为资源组ID。例如eas-r-6dbzve8ip0xnzte5rp
cuda服务需要使用的cuda版本。服务运行时,会自动将指定版本的cuda挂载到实例的/usr/local/cuda目录中。

目前支持的cuda版本为:8.0,9.0,10.0,10.1,10.2,11.0,11.1,11.2。使用示例为:"cuda":"11.2"

enable_grpc表示是否开启服务网关的GRPC连接,取值如下:
  • false:默认值,表示网关不开启GRPC链接,默认支持HTTP请求。
  • true:表示网关开启GRPC连接。
说明 如果使用自定义镜像部署服务时,镜像中的服务端实现为GRPC,则需要通过该参数将网关的协议切换成GRPC。
enable_webservice表示是否开启webserver,从而部署为一个AI-Web应用:
  • false:默认值,表示不开启webserver。
  • true:表示开启webserver。
高级参数
重要 请您慎重调整。
rpc.batching是否开启Server端Batching,用于GPU模型加速。取值如下:
  • false:默认值,关闭Server端Batching。
  • true:开启Server端Batching。
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服务实例调度时的打散策略,支持以下几种策略:
  • host:按照节点来打散,实例尽可能分散在不同的节点上。
  • zone:按照节点所在的可用区来打散,实例尽可能分散在不同的可用区。
  • default:按照默认策略进行调度,无主动打散的逻辑。
表 2. features参数说明
参数是否必选描述
eas.aliyun.com/extra-ephemeral-storage当免费额度的系统盘容量不能满足您的业务需求时,额外需要配置的系统盘内存大小。取值为正整数,单位为GB,取值范围为0~2000 GB。