全部產品
Search
文件中心

Platform For AI:服務模型所有相關參數說明

更新時間:Dec 06, 2024

您可以使用EASCMD工具建立EAS服務,建立服務前需要佈建服務相關資訊的JSON檔案。本文為您介紹JSON檔案內的參數說明資訊。

說明

如何使用EASCMD工具,詳情請參見下載並認證用戶端

參數說明

JSON檔案參數說明如下表所示。

參數

是否必選

描述

name

服務名稱,必須在同一地區內唯一。

token

表示訪問鑒權的Token字串。如果未指定,則系統自動產生。

model_path

model_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_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,則直接在此指定Processor Code即可。Processor在eascmd中使用的Code請參見預置Processor使用說明

  • 如果使用自訂Processor,則無需配置該參數,只需要配置processor_pathprocessor_entryprocessor_mainclassprocessor_type參數。

processor_path

Processor相關的檔案包路徑,可以參見model_path參數的描述資訊。

processor_entry

Processor的主檔案。例如libprocessor.soapp.py,其中包含了預測所需的initialize()函數和process()函數的實現。

processor_typecpppython時,必須指定該參數。

processor_mainclass

Processor的主檔案,JAR包中的mainclass。例如com.aliyun.TestProcessor

processor_typejava時,必須指定該參數。

processor_type

processor實現的語言,取值如下:

  • cpp

  • java

  • python

warm_up_data_path

用於模型預熱的請求檔案路徑。更多關於模型預熱功能的介紹,詳情請參見模型服務預熱

runtime.enable_crash_block

當服務執行個體因Processor代碼異常發生Crash後,服務執行個體是否會自動重啟。取值如下:

  • true:表示服務執行個體不自動重啟,以保留現場進行問題排查。

  • false:預設值,表示服務執行個體自動重啟。

cloud

使用公用資源群組部署服務時,請務必使用cloud.computing.instance_type欄位來指定執行個體使用的機型。

"cloud":{
      "computing":{
          "instance_type":"ecs.gn6i-c24g1.6xlarge"
      }
  }

具體參數配置詳情,請參見公用資源群組使用說明

autoscaler

表示模型服務自動水平擴縮容的配置資訊。具體參數配置,詳情請參見水平自動擴縮容功能

containers

表示使用自訂鏡像部署服務時的容器資訊。具體參數配置,詳情請參見服務部署:自訂鏡像

storage

表示服務儲存掛載等相關資訊。

metadata

表示服務的Meta資訊。具體參數配置,詳情請參見表1.metadata參數說明

features

表示服務的特殊功能配置。具體參數配置,詳情請參見表2.features參數說明

networking

表示服務的調用配置。具體參數配置,詳情請參見表3.networking參數說明

表1.metadata參數說明

參數

是否必選

描述

一般參數

instance

服務啟動的執行個體數量。

workspace_id

設定工作空間ID參數後,服務將只能在指定的PAI工作空間之內使用。例如:1405**

cpu

每個執行個體需要的CPU數量。

memory

每個執行個體需要的記憶體數量,取值為整型,單位為MB。例如,"memory": 4096表示每個執行個體需要4 GB記憶體。

gpu

每個執行個體需要的GPU數量。

gpu_memory

每個執行個體所需的GPU顯存數量,取值為整型,單位為GB。

系統支援執行個體按顯存進行調度,實現單卡共用多執行個體功能。如果使用顯存調度,則需要將gpu欄位配置為0。當gpu欄位配置為1時,表示執行個體獨佔整張GPU卡,此時gpu_memory 欄位會被忽略。

重要

當前未開啟顯存的嚴格隔離,您需自行控制各執行個體的顯存使用量,不能超出申請量,避免出現顯存記憶體溢出。

gpu_core_percentage

每個執行個體所需的單個GPU算力比例,取值為1~100之間的整數,單位為百分比。例如填寫10,代表的是單個GPU的10%算力。

系統支援執行個體按算力進行調度,實現單卡共用多執行個體功能。另外指定該參數時,必須指定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模型加速,僅支援預置processor模式。取值如下:

  • false:預設值,關閉Server端Batching。

  • true:開啟Server端Batching。

rpc.keepalive

單個請求的最長處理時間。如果請求處理時間長度超過該值,則服務端返回408逾時並關閉串連。預設值為5000,單位為毫秒。

說明

當使用自訂Processor時,還需額外在代碼中配置allspark參數,詳情請參見使用Python開發自訂Processor

rpc.io_threads

每個執行個體用於處理網路IO的線程數量,預設值為4。

rpc.max_batch_size

每個Batch的最大Size,預設值為16,僅支援預置processor模式。僅rpc.batching取值為true時,該參數生效。

rpc.max_batch_timeout

每個Batch的最大Timeout,預設值為50毫秒,僅支援預置processor模式。僅rpc.batching取值為true時,該參數生效。

rpc.max_queue_size

隊列大小,預設值為64。隊列滿時,服務端返回450並關閉串連。為保證服務端不會壓力過載,隊列可以提前通知用戶端向其他執行個體進行重試。對於RT較長的服務隊列,可以適當減小隊列長度,以避免請求在隊列中堆積導致大量請求逾時。

rpc.worker_threads

每個執行個體中用於並發處理請求的線程數,預設值為5,僅支援預置processor模式。

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:按照預設策略進行調度,無主動打散的邏輯。

rpc.enable_sigterm

取值如下:

  • false(預設值):執行個體進入退出狀態時不會發送SIGTERM訊號。

  • true:在服務執行個體進入退出狀態時,系統會立即向主進程發送SIGTERM訊號,服務內進程收到該訊號後需要在訊號處理函數中進行自訂的優雅退出操作,若不處理該訊號可能導致主進程收到訊號後直接退出,從而使優雅退出失敗。

resource_rebalancing

取值如下:

  • false(預設值):不啟用該功能。

  • true:EAS會周期性地在高優先順序資源上建立探針執行個體。如果探針執行個體調度成功,則會以指數增長方式建立更多探針執行個體,直至調度失敗。同時,成功調度的探針執行個體完成初始化並且進入就緒狀態後,會替換低優先順序資源上的執行個體。

該功能可以解決以下問題:

  • 在服務變換過程中,正在終止的執行個體仍會佔用資源,導致新建立執行個體啟動在公用資源群組上,由於公用資源限制,後續新執行個體會重新調度回專屬資源群組上。

  • 當同時使用競價執行個體和常規執行個體時,系統會定期檢查競價執行個體是否可用,如果可用,則會將常規執行個體遷移至競價執行個體上。

表2.features參數說明

參數

是否必選

描述

eas.aliyun.com/extra-ephemeral-storage

當免費額度的系統硬碟容量不能滿足您的業務需求時,額外需要配置的系統硬碟記憶體大小。取值為正整數,單位為GB,取值範圍為0~2000 GB。

表3.networking參數說明

參數

是否必選

描述

disable_internet_endpoint

預設為false,將該參數設定為true後,會禁用服務的公網調用方式。

表4.containers參數說明

參數

是否必選

描述

image

用於部署模型服務的鏡像地址。

env

name

鏡像執行時的環境變數名稱。

value

鏡像執行時的環境變數取值。

command

二者必選其一

鏡像的入口命令,只支援單一命令形式,不支援複雜指令碼,如:cd xxx && python app.py,這種形式請使用下面的script參數來指定,command欄位適應於鏡像中無/bin/sh命令的情境。

script

鏡像的入口執行的指令碼,可指定較為複雜的指令碼形式,多行以\n或分號分隔。

port

容器連接埠。

重要
  • 由於EAS引擎監聽固定的8080/9090連接埠,因此容器連接埠需要避開8080/9090連接埠。

  • 該連接埠一定要和command中的xxx.py檔案配置的連接埠保持一致。

prepare

pythonRequirements

執行個體啟動前安裝的python requirements列表,要求鏡像中在系統路徑中存在python和pip命令,list格式,如:

"prepare": {
  "pythonRequirements": [
    "numpy==1.16.4",
    "absl-py==0.11.0"
  ]
}

pythonRequirementsPath

執行個體啟動前安裝的python requirements.txt檔案地址,要求鏡像中在系統路徑中存在Python和pip命令,requirements.txt可直接打在鏡像中,也可以由外部儲存掛載的方式掛載到服務執行個體中,如:

"prepare": {
  "pythonRequirementsPath": "/data_oss/requirements.txt"
}

使用樣本

上述參數在JSON檔案中的配置樣本如下:

{
  "name": "test_eascmd",
  "token": "****M5Mjk0NDZhM2EwYzUzOGE0OGMx****",
  "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"
      }
    },
    "resource_rebalancing": false
  },
  "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
    }
  ]
}