您可以使用eascmd管理PAI-EAS服务。本文为您介绍如何使用eascmd客户端上传文件、创建服务、修改服务配置信息、切换服务版本、删除服务、查看服务列表、查看服务详细信息、查看服务进程及配置资源组网络的相关命令。
操作命令合集
上传文件
- 功能
PAI-EAS为每位用户提供了OSS仓库,通过eascmd的
upload
命令,您可以直接上传模型或Processor,并获取上传后的OSS地址。 - 格式
eascmd upload <filename> [--inner]
- 参数
- <filename>:待上传的文件名称。
- [--inner]:如果在PAI-DSW内执行上传命令,则需要增加该参数。
- 示例
在PAI-DSW内,将打包好的SavedModel模型文件savedmodel_example/savedmodel_example.tar.gz上传至OSS。
系统输出如下类似结果。eascmd upload savedmodel_example/savedmodel_example.tar.gz --inner
其中[OK] oss endpoint: [http://oss-cn-shanghai.aliyuncs.com] [OK] oss target path: [oss://eas-model-shanghai/182848887922****/savedmodel_example/savedmodel_example.tar.gz] Succeed: Total num: 1, size: 33,013. OK num: 1(upload 1 files).
oss://eas-model-shanghai/182848887922****/savedmodel_example/savedmodel_example.tar.gz
为存储模型的OSS地址,可以用于服务部署。
创建服务
- 功能
通过
create
命令创建服务。创建服务时,需要提供资源(模型或Processor)的HTTP或OSS地址,您可以将资源上传至OSS,并获取上传后的OSS地址。 - 命令
eascmd create <service_desc_json>
- 参数
service_desc_json表示描述服务相关信息(模型存储位置及资源规格等)的JSON文件,该文件的示例如下。
服务相关信息JSON文件内的参数解释如下表所示。{ "name": "mnist_saved_model_example", "generate_token": "true", "model_path": "http://eas-data.oss-cn-shanghai.aliyuncs.com/models%2Fmnist_saved_model.tar.gz", "processor": "tensorflow_cpu", "metadata": { "instance": 1, "cpu": 1 } }
参数 是否必选 描述 name 是 服务名称,必须在同一地域内唯一。 token 否 表示访问鉴权的Token字符串。如果未指定,则系统自动生成。 model_path 是 model_path与processor_path分别为模型和Processor的输入数据源地址,支持以下格式的地址: - HTTP地址:所需文件必须为TAR.GZ、TAR、BZ2或ZIP等压缩包。
- OSS地址:地址链接可以是具体文件路径或文件夹路径。同时,还需要提供参数oss_endpoint,示例如下。
"model_path":"oss://wowei-beijing-tiyan/alink/", "oss_endpoint":"oss-cn-beijing.aliyuncs.com",
- 本地路径:如果使用
test
命令进行本地调试,则可以使用本地路径。
oss_endpoint 否 OSS的Endpoint,例如oss-cn-beijing.aliyuncs.com其他取值请参见访问域名和数据中心。如果model_path使用OSS地址,则必须指定该参数。 model_entry 否 表示模型的入口文件,可以包含任意文件。如果未指定,则使用model_path中的文件名。主文件路径会传递给Processor中的Load()函数。 model_config 否 表示模型的配置,支持任意文本。该参数值会传递给Processor中LoadWithConfig()函数的第二个参数。 processor 否 如果使用官方提供的预置Processor,则直接在此指定Processor Code即可。Processor在eascmd中使用的Code请参见预置Processor使用说明。
如果使用自定义Processor,则无需配置该参数,只需要配置processor_path、processor_entry、processor_mainclass及processor_type参数。
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实现的语言,取值范围如下: - cpp
- java
- python
metadata 是 服务的Meta信息,详细参数请参见表 1。 表 1. metadata参数解释 参数 是否必选 描述 一般参数 workers 否 每个Instance中用于并发处理请求的线程数,默认值为5。 instance 是 服务启动的Instance数量。 cpu 否 每个Instance需要的CPU数量。 gpu 否 每个Instance需要的GPU数量。 resource 否 资源组ID,配置策略如下: - 如果服务部署在公共资源组,则可以忽略该参数,此时服务进行按量付费。
- 如果服务部署在专属资源组,则配置该参数为资源组ID。例如eas-r-6dbzve8ip0xnzte5rp。
高级参数(慎重调整) rpc.batching 否 是否开启Server端Batching,用于GPU模型加速。取值范围如下: - false:默认值,关闭Server端Batching。
- true:开启Server端Batching。
rpc.keepalive 否 单个请求的最长处理时间。如果请求处理时长超过该值,则服务端返回408超时并关闭连接。默认值为5000,单位为ms。 rpc.io_threads 否 每个Instance用于处理网络IO的线程数量,默认值为4。 rpc.max_batch_size 否 每个Batch的最大Size,默认值为16。仅rpc.batching取值为true时,该参数生效。 rpc.max_batch_timeout 否 每个Batch的最大Timeout,默认值为50 ms。仅rpc.batching取值为true时,该参数生效。 rpc.max_queue_size 否 队列大小,默认值为64。队列满时,服务端返回450并关闭连接。为保证服务端不会压力过载,队列可以提前通知客户端向其他Instance进行重试。对于RT较长的服务队列,可以适当减小队列长度,以避免请求在队列中堆积导致大量请求超时。 rpc.worker_threads 否 每个Instance中用于并发处理请求的线程数,与参数workers含义相同,默认值为5。 - 示例(假设描述服务相关信息的JSON文件为pmml.json)
系统输出如下类似结果。eascmd create pmml.json
[RequestId]: 1651567F-8F8D-4A2B-933D-F8D3E2DD**** +-------------------+----------------------------------------------------------------------------+ | Intranet Endpoint | http://pai-eas-vpc.cn-shanghai.aliyuncs.com/api/predict/savedmodel_exanple | | Token | YjQxZDYzZTBiZTZjMzQ5ZmE0MzczZjIxMGZiNzZmMDBkY2VjMDg4**** | +-------------------+----------------------------------------------------------------------------+ [OK] Creating api gateway [OK] Building image [registry-vpc.cn-shanghai.aliyuncs.com/eas/savedmodel_exanple_cn-shanghai:v0.0.1-20190224001315] [OK] Pushing image [registry-vpc.cn-shanghai.aliyuncs.com/eas/savedmodel_exanple_cn-shanghai:v0.0.1-20190224001315] [OK] Waiting [Total: 1, Pending: 1, Running: 0] [OK] Waiting [Total: 1, Pending: 1, Running: 0] [OK] Service is running
修改配置
- 功能
对于Instnace和CPU等metadata信息,可以直接使用
modify
命令的-D
参数进行修改。 - 命令
支持同时配置多个参数,详情请参见示例。eascmd modify <service_name> -Dmetadata.<attr_name>=<attr_value>
- 参数
- <service_name>:服务名称。
- <attr_name>:参数名称。
- <attr_value>:参数取值。
- 示例
将Instance数量配置为10,且每个Instance中的Quota数量为5(5核+20 GB)。
扩缩容时,可以只修改服务的metadata.instance参数。如果指定的Instance数量大于服务当前的Instance数量,则系统启动新的Instance,以达到要求的Instance数量,原有实例的运行不受影响。如果指定的Instance数量小于当前Instance数量,则系统停止部分Instance,以达到要求的Instance数量,其他实例的运行不受影响。eascmd modify service_test -Dmetadata.instance=10 -Dmetadata.cpu=5
说明 只修改Instance的更新操作与全量更新不同,前者不会触发服务的滚动更新。
更新服务
- 功能
通过
modify
命令可以对已部署的服务进行修改。 - 命令
eascmd modify <service_name> -s <service_desc_json>
- 参数
- <service_name>:服务名称。
- <service_desc_json>:服务描述文件。
说明 如果仅修改服务的资源使用情况,则在服务描述文件中修改metadata部分即可。
停止服务
- 功能
通过
stop
命令可以停止一个运行中的服务。 - 命令
eascmd stop <service_name>
- 参数
<service_name>表示待停止的服务名称。
启动服务
- 功能
通过
start
命令可以重新启动一个已停止的服务。 - 命令
eascmd start <service_name>
- 参数
<service_name>表示待启动的服务名称。
删除服务
- 功能
通过
delete
命令可以删除服务,但是只能删除当前地域的服务。 - 命令
eascmd delete <service_name>
- 参数
<service_name>表示待删除的服务名称。
- 示例
假设服务名称为savedmodel_exanple,删除该服务的步骤如下:
- 执行删除服务的命令。
系统输出如下类似结果。eascmd delete savedmodel_exanple
Are you sure to delete the service [savedmodel_exanple] in [cn-shanghai]? [Y/n]
- 输入Y。系统输出如下类似结果。
[RequestId]: 1651567F-8F8D-4A2B-933D-F8D3E2DD**** [OK] Service [savedmodel_exanple] in region [cn-shanghai] is terminating [OK] Service is terminating [OK] Service is terminating [OK] Service was deleted successfully
- 执行删除服务的命令。
蓝绿发布
- 功能
通过
create -r
命令可以对一个已存在的服务创建一个关联服务,再使用release
命令根据需求随时切换流量比例,从而进行蓝绿发布。新服务的信息描述JSON文件中的name必须与旧服务同名,其它字段根据需求自由配置。系统会自动在旧服务名基础上增加随机后缀,从而得到新服务名。如果删除新服务,则流量会全部切换至旧服务。如果删除旧服务,则全部流量切换至新服务。蓝绿发布之前,最原始服务的Endpoint会成为后续发布迭代的流量入口,无论后续在这个基础上进行多少次蓝绿发布迭代,该入口的Endpoint始终保持不变(例如下面示例中的{domain}/api/predict/savedmodel_example),您无须修改客户端调用代码。说明 蓝绿发布不适用于网络直连访问的方式。 - 命令
- 创建关联服务
eascmd create <service_desc_json> -r
- 对蓝绿服务进行切流。
eascmd release <service_name> -w <weight>
- 创建关联服务
- 参数
- <service_desc_json>:服务信息描述的JSON文件。
- <service_name>:创建的新服务名称。
- <weight>:新服务承载的流量百分比。
- 示例(假设服务信息描述文件为pmml.json)
- 创建关联服务
系统输出以下类似信息。eascmd create pmml.json -r
上述输出表示创建了一个名为savedmodel_example_9c16a222的服务,且两个服务分别有独立的流量入口,可以被单独调用。您对新服务可以进行独立测试,不会影响已有服务的线上运行,测试完成后,可以对服务进行切流操作。[RequestId]: 1651567F-8F8D-4A2B-933D-F8D3E2DD**** +-------------------+----------------------------------------------------------------------------+ | Intranet Endpoint | http://xxx.cn-shanghai.pai-eas.aliyuncs.com/api/predict/savedmodel_example_9c16a222 | | Token | YjQxZDYzZTBiZTZjMzQ5ZmE0MzczZjIxMGZiNzZmMDBkY2VjMDg4**** | +-------------------+----------------------------------------------------------------------------+ [OK] Building image [registry-vpc.cn-shanghai.aliyuncs.com/eas/savedmodel_exanple_9c16a222_cn-shanghai:v0.0.1-20190224001315] [OK] Pushing image [registry-vpc.cn-shanghai.aliyuncs.com/eas/savedmodel_exanple_9c16a222_cn-shanghai:v0.0.1-20190224001315] [OK] Waiting [Total: 1, Pending: 1, Running: 0] [OK] Waiting [Total: 1, Pending: 1, Running: 0] [OK] Service is running
- 对蓝绿服务进行流量切换。
eascmd release savedmodel_example_9c16a222 -w 20
上述命令表示切换20%的流量到新服务savedmodel_example_9c16a222,其余80%的流量在旧服务savedmodel_example上。此时,新服务的独立访问Endpoint({domain}/api/predict/savedmodel_example_9c16a222)关闭,旧服务Endpoint({domain}/api/predict/savedmodel_example)流量的20%会进入新服务,80%进入旧服务。
系统输出如下类似结果。Confirmed to release this service at weight [20%]? [Y/n]
- 输入Y,并单击Enter键,系统输出如下类似结果。
[RequestId]: 9258EEDE-6F99-4C3B-841B-B6E9774F**** [OK] Service [savedmodel_example_9c16a222] is weighted to 20% now
- 创建关联服务
切换版本
- 功能
您可以先通过
desc
命令查看服务的最新版本和当前版本,再通过version
命令切换服务至最新版本之前的任意版本。 - 命令
eascmd version <service_name> <version_id>
- 参数
- <service_name>:服务名称。
- <version_id>:待切换服务的版本ID。
查看服务列表
- 功能
使用
list
(或缩写ls
)命令可以查看当前用户已部署的服务列表。 - 命令
eascmd ls
- 参数
无
- 示例
系统输出如下类似结果。eascmd ls
[RequestId]: 83945D4E-ED3E-4D35-A989-831E36BB**** +---------------------------+-------------+----------+---------------------+---------------------+---------+--------+----------------------------------------+ | SERVICENAME | REGION | INSTANCE | CREATETIME | UPDATETIME | STATUS | WEIGHT | SERVICEPATH | +---------------------------+-------------+----------+---------------------+---------------------+---------+--------+----------------------------------------+ | mnist_saved_model_example | cn-shanghai | 1 | 2019-02-21 16:35:41 | 2019-02-21 16:35:41 | Running | 0 | /api/predict/mnist_saved_model_example | +---------------------------+-------------+----------+---------------------+---------------------+---------+--------+----------------------------------------+
查看服务信息
- 功能
通过
desc
命令可以查看已部署服务的详情信息。 - 命令
eascmd desc <service_name>
- 参数
<service_name>表示服务名称。
- 示例
系统输出如下类似结果。eascmd desc mnist_saved_model_example
$ eascmd desc mnist_saved_model_example +---------------------+--------------------------------------------------------------------------------------------------------------+ | Status | Running | | ServiceName | mnist_saved_model_example | | Region | cn-shanghai | | CreateTime | 2019-02-21 16:35:41 | | UpdateTime | 2019-02-21 16:35:41 | | AccessToken | | | PrivateToken | ZWNjMTNkNDExMmExNjZkYTM4YWQ5YTY0YmFjNjk3YWYzZTRjM2Y2**** | | TotalInstance | 1 | | RunningInstance | 1 | | PendingInstance | 0 | | CPU | 1 | | GPU | 0 | | Memory | 1000M | | Image | registry-vpc.cn-shanghai.aliyuncs.com/eas/mnist_saved_model_example_cn-shanghai:v0.0.1-20190221163541 | | Weight | 0 | | LatestVersion | 1 | | CurrentVersion | 1 | | Message | Service start successfully | | APIGatewayUrl | 1c3b37ea83c047efa0dc6df0cacb****-cn-shanghai.alicloudapi.com/EAPI_182848887922****_mnist_saved_model_example | | APIGatewayAppKey | 2564**** | | APIGatewayAppSecret | 12562a7b8858bbba2c2e9c4517ff**** | | IntranetEndpoint | http://pai-eas-vpc.cn-shanghai.aliyuncs.com/api/predict/mnist_saved_model_example | | ServiceConfig | { | | | "generate_token": "false", | | | "metadata": { | | | "cpu": 1, | | | "instance": 1, | | | | "region": "cn-shanghai" | | | }, | | | "model_path": | | | "http://eas-data.oss-cn-shanghai.aliyuncs.com/models%2Fmnist_saved_model.tar.gz", | | | "name": | | | "mnist_saved_model_example", | | | "processor": | | | "tensorflow_cpu" | | | } | +---------------------+--------------------------------------------------------------------------------------------------------------+
查看服务进程
- 功能
通过
showworkers(w)
(或缩写w
)命令可以查看服务正在运行的进程状态。 - 命令
eascmd w <service_name>
- 参数
<service_name>表示服务名称。
- 示例
系统输出如下类似结果。eascmd w mnist_saved_model_example
[RequestId]: 4E905404-E617-4BD8-85D6-EC5C6A0D**** +--------------+----------------+---------------------+----------+---------+-------+--------+ | INNERIP | HOSTIP | STARTAT | RESTARTS | STATUS | READY | REASON | +--------------+----------------+---------------------+----------+---------+-------+--------+ | 172.24.XX.XX | 192.168.XX.XXX | 2019-02-21 16:35:58 | 0 | Running | [1/1] | | +--------------+----------------+---------------------+----------+---------+-------+--------+
查看资源组列表
- 功能
通过
resource list
(或缩写resource ls
)命令可以查看当前账户下的资源组列表。 - 命令
eascmd resource ls
- 参数
无
- 示例
系统输出如下类似结果。eascmd resource ls
+--------------------------+-------------+---------------+----------+----------+------------------+---------------------+---------------+ | RESOURCENAME | CLUSTERID | INSTANCECOUNT | GPUCOUNT | CPUCOUNT | OWNERUID | CREATETIME | STATUS | +--------------------------+-------------+---------------+----------+----------+------------------+---------------------+---------------+ | eas-r-lzo32vrdbtukr7te3i | cn-shanghai | 1 | 0 | 16 | 182848887922**** | 2020-03-18 13:09:24 | ResourceReady | +--------------------------+-------------+---------------+----------+----------+------------------+---------------------+---------------+
查看资源组详情
- 功能
通过
resource desc
命令可以查看某个资源组的详细信息。 - 命令
eascmd resource desc <resource_id>
- 参数
<resource_id>表示待查看的资源组ID,即
resource list(ls)
命令返回结果中的RESOURCENAME字段。 - 示例
系统输出如下类似结果。eascmd -c ~/.eas/shanghai2.conf resource desc eas-r-lzo32vrdbtukr7te3i
+---------+-----------------+----------------------------------------------------------+ | Basic | ResourceName | eas-r-lzo32vrdbtukr7te3i | | | Region | cn-shanghai | | | CpuCount | 16 | | | GpuCount | 0 | | | instanceCount | 1 | | | CreateTime | 2020-03-18 13:09:24 | | | LastStatus | ResourceReady | | | Message | Resource is ready | | | RoleArn | acs:ram::xxx:role/AliyunPAIAccessingENIRole | | Network | VpcId | vpc-uf6s9pv47nu03srne**** | | | VSwitchId | vsw-uf6voq53e893k56ws**** | | | SecurityGroupId | sg-uf6c5twkfar8l06c**** | | | DestinationCIDR | | | | AuxVSwitchList | [] | +---------+-----------------+----------------------------------------------------------+
查看资源组实例列表
- 功能
通过
resource list_instance
(或缩写为resource li
)命令可以查看某个资源组的实例列表及每个实例的资源使用情况。 - 命令
eascmd resource list_instance <resource_id>
- 参数
<resource_id>表示待查看的资源组ID,即
resource list(ls)
命令返回结果中的RESOURCENAME字段。 - 示例
系统输出如下类似结果。eascmd resource li eas-r-lzo32vrdbtukr7te3i
+------------------------------------+--------------+--------+----------------+----------------+-------------------+---------------------+----------------+------------+ | INSTANCENAME | INSTANCEIP | STATUS | TOTAL/USED CPU | TOTAL/USED GPU | TOTAL/USED MEMORY | CREATETIME | INSTANCETYPE | CHARGETYPE | +------------------------------------+--------------+--------+----------------+----------------+-------------------+---------------------+----------------+------------+ | cn-shanghai.i-uf6dj71ir6mh3gjmaz3a | 10.224.XX.XX | Ready | 16/6 | 0/0 | 62240M/4200M | 2020-03-18 13:09:34 | ecs.g6.4xlarge | PostPaid | +------------------------------------+--------------+--------+----------------+----------------+-------------------+---------------------+----------------+------------+
配置资源组网络
- 功能
通过
resource network
命令可以设置某个资源组的直连情况,用于连通PAI-EAS VPC和用户VPC之间的网络。一方面可以在用户VPC内以直连软负载的方式调用PAI-EAS服务,另一方面可以在PAI-EAS Processor中反向访问用户VPC中的内网资源(例如RDS、Redis等)。 - 命令
eascmd resource network <resource_id> -s <network_cfg.json>
- 参数
- <resource_id>:表示查待看的资源组ID,即
resource list(ls)
命令返回结果中的RESOURCENAME字段。 - <network_cfg.json>:网络配置文件,该文件格式如下所示。
各参数的含义如下表所示。{ "Action":"create", "VSwitchId": "vsw-8vbsunr5bkcbyxh94****", "SecurityGroupId": "sg-8vbhwowdxzx5fjcx****", "VSwitchIdList": ["vsw-8xbsunr5abcbyqh93****", "vsw-8xbs1y7gu6cxbvqzw****"], "DestinationCIDR": "192.XX.XX.XX/16" }
参数 描述 是否必选 默认值 Action 网络设置的操作,取值范围如下: - create:开通直连。
- delete:关闭直连,此时无需配置其他参数。
是 无 VSwitchId 待连通的目标主VSwitch ID,PAI-EAS会自动在该VSwitch中创建ENI弹性网卡,请不要主动删除该ENI,否则会导致网络连通性问题。 是 无 SecurityGroupId 客户端ECS所在的安全组ID。 说明 客户端ECS必需归属于该安全组中,否则会导致网络连通性问题。是 无 VSwitchIdList 待打通的附属VSwitch列表,必须与主VSwitch在同一个VPC中,这些VSwitch的IP网段会自动被加入到PAI-EAS的路由表规则中。 否 空数组([]) DestinationCIDR 待打通的客户端目标网段,必须与主VSwitch在同一个VPC中,该网段会被自动加入到PAI-EAS的路由表规则中。 否 空字符串("") 说明 VSwitchIdList与DestinationCIDR原理相同,均是为了连通PAI-EAS集群与用户某个网段的网络。如果需要连通多个指定VSwitch,则使用VSwitchIdList。如果需要连通一个大网段(例如整个VPC),则使用DestinationCIDR字段。建议不要使用10.0.0.0/8、10.224.0.0/16或10.240.0.0/16网段,否则会导致网络冲突问题。如果有其他需求,可以提工单。
- <resource_id>:表示查待看的资源组ID,即
预测
进行预测调用时,可以根据创建服务时生成的HTTP URL访问服务。预测服务的输入输出格式由Processor自定义,详细请参见模型服务调用章节中的通用Processor服务请求数据构造部分。
在文档使用中是否遇到以下问题
更多建议
匿名提交