全部产品
云市场

EASCMD客户端使用手册

更新时间:2019-10-14 13:46:06

通过客户端工具eascmd可对服务进行管理,包括创建服务,删除服务,查看服务状态,修改服务等,eascmd可通过下面的链接下载:

下载完成后将eascmd修改成可执行文件,例如:

  1. chmod +x eascmd64

用户认证

预测服务使用阿里云ak进行身份认证,提交任务时需要使用阿里云提供的AccessKeyId和AccessKeySecret。

使用如下命令为eascmd配置ak信息(将eascmd命令替换为根据系统环境实际下载的客户端工具名,例如在linux64下执行):

  1. ./eascmd64 config -i <AccessKeyId> -k <AccessKeySecret>

默认指向的region为cn-shanghai,如果需要将模型部署至其它region,

或者您是在DSW产品内使用,可使用-e参数指定region对应的endpoint

,示例如下,可以指定后续的命令行操作均在北京region进行:

  1. ./eascmd64 config -i <AccessKeyId> -k <AccessKeySecret> -e pai-eas.cn-beijing.aliyuncs.com

目前公共云支持的region的endpoint如下:

Region Endpoint
华东2(上海) pai-eas.cn-shanghai.aliyuncs.com
华北2(北京) pai-eas.cn-beijing.aliyuncs.com
华东2(DSW内部署至上海) pai-eas-share.cn-shanghai.aliyuncs.com
华北2(DSW内部署至北京) pai-eas-share.cn-beijing.aliyuncs.com
政务云-华北2(DSW内部署至政务云华北) pai-eas.cn-north-2-gov-1.aliyuncs.com
华东1(杭州-暂未开通) pai-eas.cn-hangzhou.aliyuncs.com

文件上传

创建服务时,需要将model或processor以http或oss地址的形式给出,EAS为每个用户提供了oss仓库来上传这些数据,通过eascmd的upload命令可直接上传并获取到上传后的oss地址:

  1. eascmd upload [filename]

如果您在DSW内执行上传命令,需要增加--inner参数

  1. eascmd upload [filename] --inner

下面的示例将一个打包好的savedmodel模型上传到oss:

  1. $ eascmd upload savedmodel_example/savedmodel_example.tar.gz --inner
  2. [OK] oss endpoint: [http://oss-cn-shanghai.aliyuncs.com]
  3. [OK] oss target path: [oss://eas-model-shanghai/1828488879222746/savedmodel_example/savedmodel_example.tar.gz]
  4. Succeed: Total num: 1, size: 33,013. OK num: 1(upload 1 files).

可使用上述示例中的输出的地址用于服务部署:oss://eas-model-shanghai/1828488879222746/savedmodel_example/savedmodel_example.tar.gz

创建服务

通过create命令可以创建服务,创建服务时资源(model/processor)需以可访问的http地址的形式给出,可以资源上传至oss,并获取oss提供的http地址。

  1. eascmd create [service_desc_json]

部署服务时仅需要通过一个json文件来描述服务相关的信息(模型的存储位置,使用的资源等),这个service_desc_json中包含了服务相关的信息,metadata部分指定了资源信息或一些高级配置,如下:

  1. {
  2. "name": "mnist_saved_model_example",
  3. "generate_token": "true",
  4. "model_path": "http://eas-data.oss-cn-shanghai.aliyuncs.com/models%2Fmnist_saved_model.tar.gz",
  5. "processor": "tensorflow_cpu",
  6. "metadata": {
  7. "instance": 1,
  8. "cpu": 1,
  9. }
  10. }

上述各字段含义如下:

key value
name 服务名称,在同一个region内全局唯一
generate_token 是否生成token,若为true,则访问预测服务时需要在http头中加上token信息,若为false则为public的服务,不需要授权即可访问
token [可选]指定用于访问鉴权的token字符串,若不指定则按generate_token自动生成
model_path 模型相关的文件,详细说明见表格下方的描述
model_entry [可选]模型的入口文件,若不指定,则使用model_path中的文件名,可以包含任意文件,主文件的路径会传递给processor中的Load()函数
model_config [可选]模型的配置,可以是任意文本,会传递给processor中LoadWithConfig()的第二个参数
processor [可选] 使用系统内置的processor进行预测,当该选项指定时,会忽略processor_path,processor_entry,processor_mainclass,processor_type字段
metadata 服务的meta信息

注意:model_path与processor_path为model和processor的输入数据源的地址,支持http地址和oss地址两种方式,对于使用test命令进行本地调试时,还支持本地路径。当使用http地址时,所需的文件需要打成tar.gz,tar.bz2,zip等压缩包

metadata描述表:

一般参数
workers 可选,默认值为5,每个instance中用于并发处理请求的线程数
instance 服务启动的instance数目
cpu 每个instance需要的cpu数目
gpu 每个instance需要的gpu数目
resource 资源组名称,cpu服务可忽略,gpu服务支持”P4_4CORE”与”P4_8CORE”两个资源组
高级参数(慎重调整)
rpc.batching 可选,默认 false,是否开启 server端 batching, 用于GPU模型加速;
rpc.keepalive 可选,默认值为5000,单位为ms,单个请求的最长处理时间,超过该时间后服务端会返回408超时并关闭连接
rpc.io_threads 可选,默认值为4,每个 instance用于处理网络 IO的线程数;
rpc.max_batch_size 可选,默认值为16,只在开启 batching时生效,每个 batch的最大 size
rpc.max_batch_timeout 可选,默认值为50ms,只在开启 batching时生效,每个 batch的最大 timeout
rpc.max_queue_size 可选,默认值为64,队列大小,当队列满时服务端返回450并关闭连接;队列可保护服务端不会因压力过载,也可提前通知客户端向其他 instance重试;对于RT很长服务队列长度可以适当调小,防止请求在队列中堆积导致大量请求超时;
rpc.worker_threads 可选,默认值为5,每个instance中用于并发处理请求的线程数,与参数workers含义相同
示例 {

“metadata”: {
“cpu”: 4,
“rpc.max_queue_size”: 32,

}
}

示例:

  1. $ eascmd create pmml.json
  2. [RequestId]: 1651567F-8F8D-4A2B-933D-F8D3E2DDEB2D
  3. +-------------------+----------------------------------------------------------------------------+
  4. | Intranet Endpoint | http://pai-eas-vpc.cn-shanghai.aliyuncs.com/api/predict/savedmodel_exanple |
  5. | Token | YjQxZDYzZTBiZTZjMzQ5ZmE0MzczZjIxMGZiNzZmMDBkY2VjMDg4MQ== |
  6. +-------------------+----------------------------------------------------------------------------+
  7. [OK] Creating api gateway
  8. [OK] Building image [registry-vpc.cn-shanghai.aliyuncs.com/eas/savedmodel_exanple_cn-shanghai:v0.0.1-20190224001315]
  9. [OK] Pushing image [registry-vpc.cn-shanghai.aliyuncs.com/eas/savedmodel_exanple_cn-shanghai:v0.0.1-20190224001315]
  10. [OK] Waiting [Total: 1, Pending: 1, Running: 0]
  11. [OK] Waiting [Total: 1, Pending: 1, Running: 0]
  12. [OK] Service is running

修改配置

对于进程(instnace),cpu,memory等metadata项的修改,可直接使用modify命令的-D参数进行修改:

  1. eascmd modify [service_name] -Dmetadata.[attr_name]=[attr_value]

如,将instance个数设置为10个

  1. eascmd modify service_test -Dmetadata.instance=10

也支持同时设置多个属性,如将instance个数设置为10,且每个instance中的quota数设置为5(5core,20G)

  1. eascmd modify service_test -Dmetadata.instance=10 -Dmetadata.cpu=5

修改服务

通过modify命令可以对已部署的服务进行修改

  1. eascmd modify [service_name] -s [service_desc_json]

注:若仅需修改服务的资源使用情况,则在服务描述文件中仅指定metadata部分即可。

删除服务

通过delete命令可以删除服务,只能删除当前region的服务

  1. eascmd delete [service_name]

示例:

  1. $ eascmd delete savedmodel_exanple
  2. Are you sure to delete the service [savedmodel_exanple] in [cn-shanghai]? [Y/n]
  3. [RequestId]: 1651567F-8F8D-4A2B-933D-F8D3E2DDEB2D
  4. [OK] Service [savedmodel_exanple] in region [cn-shanghai] is terminating
  5. [OK] Service is terminating
  6. [OK] Service is terminating
  7. [OK] Service was deleted successfully

切换版本

通过desc命令可以查看到当前服务的最新版本和当前版本,使用version命令可以在最新版本之前的任意版本之间进行切换,使用如下命令:

  1. eascmd version [service_name] [version_id]

查看服务列表

使用list(ls)命令可以查看当前用户已经部署的服务列表

  1. $ eascmd ls
  2. [RequestId]: 83945D4E-ED3E-4D35-A989-831E36BBA39F
  3. +---------------------------+-------------+----------+---------------------+---------------------+---------+--------+----------------------------------------+
  4. | SERVICENAME | REGION | INSTANCE | CREATETIME | UPDATETIME | STATUS | WEIGHT | SERVICEPATH |
  5. +---------------------------+-------------+----------+---------------------+---------------------+---------+--------+----------------------------------------+
  6. | 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 |
  7. +---------------------------+-------------+----------+---------------------+---------------------+---------+--------+----------------------------------------+

查看服务信息

通过desc命令可以查看已部署服务的详情信息

  1. eascmd desc [service_name]

示例如下:

  1. $ eascmd desc mnist_saved_model_example
  2. +---------------------+--------------------------------------------------------------------------------------------------------------+
  3. | Status | Running |
  4. | ServiceName | mnist_saved_model_example |
  5. | Region | cn-shanghai |
  6. | CreateTime | 2019-02-21 16:35:41 |
  7. | UpdateTime | 2019-02-21 16:35:41 |
  8. | AccessToken | |
  9. | PrivateToken | ZWNjMTNkNDExMmExNjZkYTM4YWQ5YTY0YmFjNjk3YWYzZTRjM2Y2ZA== |
  10. | TotalInstance | 1 |
  11. | RunningInstance | 1 |
  12. | PendingInstance | 0 |
  13. | CPU | 1 |
  14. | GPU | 0 |
  15. | Memory | 1000M |
  16. | Image | registry-vpc.cn-shanghai.aliyuncs.com/eas/mnist_saved_model_example_cn-shanghai:v0.0.1-20190221163541 |
  17. | Weight | 0 |
  18. | LatestVersion | 1 |
  19. | CurrentVersion | 1 |
  20. | Message | Service start successfully |
  21. | APIGatewayUrl | 1c3b37ea83c047efa0dc6df0cacb70d3-cn-shanghai.alicloudapi.com/EAPI_1828488879222746_mnist_saved_model_example |
  22. | APIGatewayAppKey | 25641710 |
  23. | APIGatewayAppSecret | 12562a7b8858bbba2c2e9c4517ff5da5 |
  24. | IntranetEndpoint | http://pai-eas-vpc.cn-shanghai.aliyuncs.com/api/predict/mnist_saved_model_example |
  25. | ServiceConfig | { |
  26. | | "generate_token": "false", |
  27. | | "metadata": { |
  28. | | "cpu": 1, |
  29. | | "instance": 1, | |
  30. | | "region": "cn-shanghai" |
  31. | | }, |
  32. | | "model_path": |
  33. | | "http://eas-data.oss-cn-shanghai.aliyuncs.com/models%2Fmnist_saved_model.tar.gz", |
  34. | | "name": |
  35. | | "mnist_saved_model_example", |
  36. | | "processor": |
  37. | | "tensorflow_cpu" |
  38. | | } |
  39. +---------------------+--------------------------------------------------------------------------------------------------------------+

查看服务进程

通过showworkers(w)命令可查看服务正在运行的进程状态。

  1. eascmd w [service_name]

示例如下:

  1. $ eascmd w mnist_saved_model_example
  2. [RequestId]: 4E905404-E617-4BD8-85D6-EC5C6A0D0211
  3. +--------------+----------------+---------------------+----------+---------+-------+--------+
  4. | INNERIP | HOSTIP | STARTAT | RESTARTS | STATUS | READY | REASON |
  5. +--------------+----------------+---------------------+----------+---------+-------+--------+
  6. | 172.24.5.183 | 192.168.65.121 | 2019-02-21 16:35:58 | 0 | Running | [1/1] | |
  7. +--------------+----------------+---------------------+----------+---------+-------+--------+

预测使用

在进行预测调用时,可以根据创建服务时生成的http url对服务进行预测访问,预测服务的输入输出格式完全processor自定义,详细可以查看 通用processor服务请求数据构造 章节