下载
中文
注册

配置参数说明

配置项取值请参考《MindIE安装指南》中“配置MindIE > 配置MindIE Server > 单机推理”章节的步骤3。系统读取配置文件时,会先校验文件大小,若文件大小范围不在(0MB, 10MB],将读取失败。

配置文件参数说明

配置项

取值类型

取值范围

配置说明

Version

std::string

"1.0.0"

标注配置文件版本,当前版本指定为1.0.0,不支持修改。

LogConfig

map

-

日志相关配置。详情请参见LogConfig参数说明

ServerConfig

map

-

服务端相关配置,例如ip:port、网络请求、网络安全等。详情请参见ServerConfig参数说明

BackendConfig

map

-

模型后端相关配置,包含调度、模型相关配置。详情请参见BackendConfig参数说明

LogConfig参数说明

配置项

取值类型

取值范围

配置说明

logLevel

std::string

  • "Verbose"
  • "Info"
  • "Warning"
  • "Warn"
  • "Error"
  • "Debug"
  • "Verbose":打印Verbose、Info、Warning和Error级别的日志。
  • "Info":打印Info、Warning和Error级别的日志。
  • "Warning":打印Warning和Error级别的日志。
  • "Warn":打印Warning和Error级别的日志。
  • "Error":打印Error级别的日志。
  • "Debug":打印Verbose、Info、Warning和Error级别的日志。

必填,默认值:"Info"。

此配置不感知大小写、支持热更新。

logFileSize

uint32_t

[0, 500]

日志最大文件大小,单位MB。

取值为0时表示不产生日志。

选填,默认值:20。

logFileNum

uint32_t

[0, 64]

历史日志文件最多保存数量。

取值为0时表示不产生日志。

选填,默认值:20。

logPath

std::string

日志文件路径,长度<=4096。

日志路径设置限制与操作系统有关,且会受到spdlog三方库约束。因此建议配置的最大长度为1024,且符合目录规范。

支持绝对路径和相对路径。如果配置为相对路径,则代码中会取安装目录,最后拼接而成。

例如,假设MindIE Service的安装路径为“/opt/Ascend-mindie-service_{version}_linux-x86_64/”,当logPath=“logs/mindservice.log”,则其实际日志生成路径为“/opt/Ascend-mindie-service_{version}_linux-x86_64/logs/mindservice.log”

若配置路径不满足要求,则使用默认路径。

必填,默认值:"logs/mindservice.log"。

ServerConfig参数说明

配置项

取值类型

取值范围

配置说明

ipAddress

std::string

IPv4地址。

EndPoint提供的业务面RESTful接口绑定的IP地址。

  • 如果存在环境变量MIES_CONTAINER_IP,则优先取环境变量值作为业务面IP地址。
  • 如果不存在环境变量MIES_CONTAINER_IP,则取该配置值。

必填,默认值:"127.0.0.1"。

说明:

全零侦听会导致三面隔离失效,不满足安全配置要求,故默认禁止绑定IP地址为0.0.0.0。若仍需绑定IP地址为0.0.0.0,那么在保证安全前提下,需要将配置文件中的“allowAllZeroIpListening”设置为true。

managementIpAddress

std::string

IPv4地址。

EndPoint提供的管理面RESTful接口绑定的IP地址。

  • 如果该环境变量MIES_CONTAINER_MANAGEMENT_IP存在,则直取环境变量值作为管理面IP地址。
  • 如果“managementIpAddress”字段存在,则取字段本身值;否则取“ipAddress”字段的值作为管理面IP地址。
  • 如果采用多IP地址的方案,对“ipAddress”“managementIpAddress”的初始值都需要做相应的修改。

选填,默认值:"127.0.0.2"。

说明:

全零侦听会导致三面隔离失效,不满足安全配置要求,故默认禁止绑定IP地址为0.0.0.0。若仍需绑定IP地址为0.0.0.0,那么在保证安全前提下,需要将配置文件中的“allowAllZeroIpListening”设置为true。

port

int32_t

[1024, 65535]

EndPoint提供的业务面RESTful接口绑定的端口号。

如果采用物理机/宿主机IP地址通信,请自行保证端口号无冲突。

必填,默认值:1025。

managementPort

int32_t

[1024, 65535]

EndPoint提供的管理面(管理面接口请参见表1)接口绑定的端口号。

业务面与管理面可采用四种方案:
  • 多IP地址多端口号(推荐)
  • 多IP地址单端口号
  • 单IP地址多端口号
  • 单IP地址单端口号

选填,默认值:1026。

metricsPort

int32_t

[1024, 65535]

服务监控指标接口(普罗格式)端口号。可以与“managementPort”值相同或不同。

选填,默认值:1027。

allowAllZeroIpListening

bool

  • true
  • false

是否支持全零侦听IP配置。

  • true:支持全零侦听IP配置。
  • false:不支持全零侦听IP配置。

必填,默认值:false,建议值:false。取值为true时,会存在全零侦听风险,用户环境需要自行保证具备全零侦听的防护能力。

maxLinkNum

uint32_t

[1, 1000]

RESTful接口请求并发处理数,EndPoint支持的最大并发请求处理数。

表示有maxLinkNum个请求正在并发处理,此外有2*maxLinkNum个请求在队列中等待。因此第3*maxLinkNum+1个请求会被拒绝。

必填,默认值:1000。

httpsEnabled

bool

  • true
  • false

是否开启HTTPS通信安全认证。

  • true:开启HTTPS通信。
  • false:关闭HTTPS通信。

必填,默认值:true,建议值:true,取值为false时,忽略后续HTTPS通信相关参数。

fullTextEnabled

bool

  • true
  • false

是否开启流式接口全量返回历史结果。

  • true:开启流式接口全量返回历史结果。
  • false:关闭流式接口全量返回历史结果。

选填,默认值:false。

tlsCaPath

std::string

文件绝对路径长度范围为[1,4096]。实际路径为工程路径+tlsCaPath。

根证书路径,只支持软件包安装路径下的相对路径。

“httpsEnabled”=true生效,生效后必填,默认值:"security/ca/"。

tlsCaFile

std::set<std::string>

文件绝对路径长度范围为[1,4096]。列表元素个数最小为1,最大为3。

业务面根证书名称列表。

“httpsEnabled”=true生效,生效后必填,默认值:["ca.pem"]。

tlsCert

std::string

文件绝对路径长度范围为[1,4096]。实际路径为工程路径+tlsCert。

业务面服务证书文件路径,只支持软件包安装路径下的相对路径。

“httpsEnabled”=true生效,生效后必填,默认值:"security/certs/server.pem"。

tlsPk

std::string

文件绝对路径长度范围为[1,4096]。实际路径为工程路径+tlsPk。

业务面服务证书私钥文件路径,只支持软件包安装路径下的相对路径,证书私钥的长度要求>=3072。

“httpsEnabled”=true生效,生效后必填,默认值:"security/keys/server.key.pem"。

tlsPkPwd

std::string

文件绝对路径长度范围为[0,4096]。实际路径为工程路径+tlsPkPwd。

业务面服务证书私钥加密密钥文件路径,只支持软件包安装路径下的相对路径。

“httpsEnabled”=true生效,生效后选填,默认值:"security/pass/key_pwd.txt"。

若私钥经过加密但是未提供此文件,系统启动时会要求用户在交互窗口输入私钥加密口令。

tlsCrlPath

std::string

tlsCrlPath+tlsCrlFiles路径长度范围为[0,4096]。实际路径为工程路径+tlsCrlPath。

业务面服务证书吊销列表文件夹路径,只支持软件包安装路径下的相对路径。

  • “httpsEnabled”=true生效,生效后选填,默认值:"security/certs/"。
  • “httpsEnabled”=false不启用吊销列表。

tlsCrlFiles

std::set<std::string>

tlsCrlPath+tlsCrlFiles路径长度范围为[1,4096]。列表元素个数最小为1,最大为3。

业务面吊销列表名称列表。

“httpsEnabled”=true生效,生效后选填,默认值:["server_crl.pem"]。

managementTlsCaFile

std::set<std::string>

建议tlsCaPath+managementTlsCaFile路径长度范围为[0,4096]。列表元素个数最小为1,最大为3。

管理面根证书名称列表,当前管理面证书和业务面证书放在同一个路径(tlsCaPath)下。

“httpsEnabled”=true且“ipAddress”!=“managementIpAddress”生效,生效后必填,默认值:["management_ca.pem"]。

managementTlsCert

std::string

文件路径长度范围为[1,4096]。实际路径为工程路径+managementTlsCert。

管理面服务证书文件路径,只支持软件包安装路径下的相对路径。

“httpsEnabled”=true且“ipAddress”!=“managementIpAddress”生效,生效后必填,默认值:"security/certs/management/server.pem"。

managementTlsPk

std::string

文件路径长度范围为[1,4096]。实际路径为工程路径+managementTlsPk。

管理面服务证书私钥文件路径,只支持软件包安装路径下的相对路径,证书私钥的长度要求>=3072。

“httpsEnabled”=true且“ipAddress”!=“managementIpAddress”生效,生效后必填,默认值:"security/keys/management/server.key.pem"。

managementTlsPkPwd

std::string

文件路径长度范围为[0,4096]。实际路径为工程路径+managementTlsPkPwd。

管理面服务证书私钥加密密钥文件路径。

“httpsEnabled”=true且“ipAddress”!=“managementIpAddress”生效,生效后选填,默认值:"security/pass/management/key_pwd.txt"。

若私钥经过加密但是未提供此文件,系统启动时会要求用户在交互窗口输入私钥加密口令。

managementTlsCrlPath

std::string

managementTlsCrlPath+managementTlsCrlFiles路径长度范围为[1,4096]。实际路径为工程路径+managementTlsCrlPath。

管理面证书吊销列表文件夹路径,只支持软件包安装路径下的相对路径。

  • “httpsEnabled”=true且“ipAddress”!=“managementIpAddress”生效,生效后选填,默认值:"security/management/certs/"。
  • “httpsEnabled”=false不启用吊销列表。

managementTlsCrlFiles

std::set<std::string>

managementTlsCrlPath+managementTlsCrlFiles路径长度范围为[1,4096]。列表元素个数最小为1,最大为3。

管理面吊销列表名称列表。

“httpsEnabled”=true生效,生效后选填,默认值:["server_crl.pem"]。

kmcKsfMaster

std::string

文件路径长度范围为[1,4096]。实际路径为工程路径+kmcKsMaster。

KMC密钥库文件路径,只支持软件包安装路径下的相对路径。

“httpsEnabled”=true生效,生效后必填,默认值:"tools/pmt/master/ksfa"。

kmcKsfStandby

std::string

文件路径长度范围为[1,4096]。实际路径为工程路径+kmcKsStandby1。

KMC密钥库备份文件路径,只支持软件包安装路径下的相对路径。

“httpsEnabled”=true生效,生效后必填,默认值:"tools/pmt/standby/ksfb"。

inferMode

std::string

  • standard
  • dmi

标识是否PD分离。

  • standard:表示PD混部模式;
  • dmi:表示PD分离模式。

默认值:standard。

interCommTLSEnabled

bool

  • true
  • false

集群内部实例间的通信是否启用TLS。

  • true:启用
  • false:不启用

选填,默认值:true,需要配置证书相关内容。

取值为false或“inferMode”“standard”时,忽略后续集群内部通信相关参数。

interCommPort

uint16_t

[1024, 65535]

集群内部实例间的通信端口。

选填,默认值:1121。

interCommTlsCaPath

std::string

interCommTlsCaPath+interCommTlsCaFiles路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommTlsCaPath。

集群内部实例间的通信如果启用TLS,则使用此参数指定CA文件所在路径。

选填,默认值:"security/grpc/ca/"。

interCommTlsCaFiles

std::set<std::string>

interCommTlsCaPath+interCommTlsCaFiles路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommTlsCaFiles。

集群内部实例间的通信如果启用TLS,则使用此参数指定CA文件名称。

选填,默认值:["ca.pem"]。

interCommTlsCert

std::string

文件路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommTlsCert。

集群内部实例间的通信如果启用TLS,则使用这里指定的文件作为证书。

选填,默认值:"security/grpc/certs/server.pem"。

interCommPk

std::string

文件路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommPk取决于操作系统配置(Linux为PATH_MAX)。

集群内部实例间的通信如果启用TLS,则使用这里指定的文件作为私钥。

选填,默认值:"security/grpc/keys/server.key.pem"。

interCommPkPwd

std::string

文件路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommPkPwd。

集群内部实例间的通信如果启用TLS,则使用这里指定的文件作为私钥的密码。

选填,默认值:"security/grpc/pass/key_pwd.txt"。

interCommTlsCrlPath

std::string

interCommTlsCrlPath+interCommTlsCrlFiles路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommTlsCrlPath。

集群内部实例间的通信如果启用TLS,则使用此参数指定证书吊销列表文件所在路径。

选填,默认值:"security/grpc/certs/"。

interCommTlsCrlFiles

std::set<std::string>

interCommTlsCrlPath+interCommTlsCrlFiles路径长度取决于操作系统配置(Linux为PATH_MAX)。实际路径为工程路径+interCommTlsCrlFiles。

集群内部实例间的通信如果启用TLS,则使用此参数指定证书吊销列表文件名称。

选填,默认值:["server_crl.pem"]。

openAiSupport

std::string

字符串

是否启用vLLM兼容的OpenAI。选填,默认值:"vllm"。

  • 取值为"vllm"或者配置字段缺失时,代表/v1/chat/completions接口使用vLLM兼容的OpenAI接口版本。
  • 取值为其他字符时,代表/v1/chat/completions接口使用原生OpenAI接口版本。

此配置支持热更新。

  • 如果网络环境不安全,不开启HTTPS通信,即“httpsEnabled”=“false”时,会存在较高的网络安全风险。
  • 如果推理服务所在的计算节点的网络为跨公网和局域网,绑定0.0.0.0的IP地址可能导致网络隔离失效,存在较大安全风险。故该场景下默认禁止EndPoint的IP地址绑定为0.0.0.0。若用户仍需要使用0.0.0.0,请在环境具备全零监听防护能力的前提下,通过设置配置项“allowAllZeroIpListening”=true手动打开允许配置0.0.0.0的IP地址开关,启用全零监听的安全风险由用户自行承担。
  • 如果配置了相同的管理面和业务面的IP地址,会导致隔离失效。

BackendConfig参数说明

配置项

取值类型

取值范围

配置说明

backendName

std::string

长度1~50,只支持小写字母和下划线。且不以下划线作为开头和结尾。

推理后端名称,可以通过该参数获得后端实例。

必填,目前只支持:"mindieservice_llm_engine"。

modelInstanceNumber

uint32_t

[1, 10]

模型实例个数。

必填,默认值:1。

单模型多机推理场景,该值需为1。

npuDeviceIds

std::vector<std::set<size_t>>

根据模型和环境的实际情况来决定。

表示启用哪几张卡。对于每个模型实例分配的npuIds,使用芯片逻辑ID表示。

  • 在未配置ASCEND_RT_VISIBLE_DEVICES环境变量时,每张卡对应的逻辑ID可使用"npu-smi info -m"指令进行查询。
  • 若配置ASCEND_RT_VISIBLE_DEVICES环境变量时,可见芯片的逻辑ID按照ASCEND_RT_VISIBLE_DEVICES中配置的顺序从0开始计数。

    例如:

    ASCEND_RT_VISIBLE_DEVICES=1,2,3,4

    则以上可见芯片的逻辑ID按顺序依次为0,1,2,3。

    多机推理场景下该值无效,每个节点上使用的npuDeviceIds根据ranktable计算获得。

必填,默认值:[[0,1,2,3]]。

tokenizerProcessNumber

uint32_t

[1, 32]

tokenizer进程数。必填,默认值:8。

在CPU核较多时,可以适当调大该值,tokenizer性能会更好。

multiNodesInferEnabled

bool

  • true
  • false
  • false:单机推理
  • true:多机推理

选填,默认值:false。

multiNodesInferPort

int32_t

[1024, 65535]

跨机通信的端口号,多机推理场景使用。

选填,默认值:1120。

interNodeTLSEnabled

bool

  • true
  • false

多机推理时,跨机通信是否开启证书安全认证。

  • true:开启证书安全认证。
  • false:关闭证书安全认证。

选填,默认值:true。取值为false时,忽略后续参数。

interNodeTlsCaPath

std::string

建议interNodeTlsCaPath+interNodeTlsCaFiles路径长度<=4096。实际路径为工程路径+interNodeTlsCaPath,上限与操作系统有关,最小值为1。

根证书名称路径,只支持软件包安装路径下的相对路径。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"security/grpc/ca/"。

interNodeTlsCaFiles

std::set<std::string>

建议interNodeTlsCaPath+interNodeTlsCaFiles路径长度<=4096。实际路径为工程路径+interNodeTlsCaFiles,上限与操作系统有关,最小值为1。

根证书名称列表。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:["ca.pem"]。

interNodeTlsCert

std::string

建议文件路径长度<=4096。实际路径为工程路径+interNodeTlsCert,上限与操作系统有关,最小值为1。

服务证书文件路径,只支持软件包安装路径下的相对路径。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"security/grpc/certs/server.pem"。

interNodeTlsPk

std::string

建议文件路径长度<=4096。实际路径为工程路径+interNodeTlsPk,上限与操作系统有关,最小值为1。

服务证书私钥文件路径,只支持软件包安装路径下的相对路径。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"security/grpc/keys/server.key.pem"。

interNodeTlsPkPwd

std::string

建议文件路径长度<=4096。支持为空;若非空,则实际路径为工程路径+interNodeTlsPkPwd,上限与操作系统有关,最小值为1。

服务证书私钥加密密钥文件路径,只支持软件包安装路径下的相对路径。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"security/grpc/pass/mindie_server_key_pwd.txt"。

interNodeTlsCrlPath

std::string

建议interNodeTlsCrlPath+interNodeTlsCrlFiles路径长度<=4096。实际路径为工程路径+interNodeTlsCrlPath,上限与操作系统有关,最小值为1。

服务证书吊销列表文件夹路径。“interNodeTLSEnabled”=true生效。

选填,默认值:"security/grpc/certs/"。

interNodeTlsCrlFiles

std::set<std::string>

建议interNodeTlsCrlPath+interNodeTlsCrlFiles路径长度<=4096。实际路径为工程路径+interNodeTlsCrlFiles,上限与操作系统有关,最小值为1。

服务证书吊销列表名称列表。“interNodeTLSEnabled”=true生效。

选填,默认值:["server_crl.pem"]。

interNodeKmcKsfMaster

std::string

建议文件路径长度<=4096。实际路径为工程路径+interNodeKmcKsfMaster,上限与操作系统有关,最小值为1。

KMC密钥库文件路径,只支持软件包安装路径下的相对路径。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"tools/pmt/master/ksfa"。

interNodeKmcKsfStandby

std::string

建议文件路径长度<=4096。实际路径为工程路径+interNodeKmcKsfStandby,上限与操作系统有关,最小值为1。

KMC密钥库备份文件路径,只支持软件包安装路径下的相对路径。

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"tools/pmt/standby/ksfb"。

ModelDeployConfig

map

-

模型部署相关配置。详情请参见ModelDeployConfig参数说明

ScheduleConfig

map

-

调度相关配置。详情请参见ScheduleConfig参数说明

ModelDeployConfig参数说明

配置项

取值类型

取值范围

配置说明

maxSeqLen

uint32_t

上限根据显存和用户需求来决定,最小值需大于0。

最大序列长度。请根据推理场景选择合适的maxSeqLen。

如果maxSeqLen大于模型支持的最大序列长度,可能会影响推理精度。

必填,默认值:2560。

maxInputTokenLen

uint32_t

[1, 4194304]

输入token id最大长度。

必填,默认值:2048。

maxInputTokenLen = min(maxInputTokenLen, maxSeqLen -1)

  • 当truncation=true时:

    请求的输入长度inputLen会自动截断,请求的实际输入长度inputLen = min(inputLen, maxInputLen)。

  • 当truncation=false时:

    若请求的输入长度inputLen > maxInputTokenLen,会返回Error。

truncation

bool

  • true
  • false

是否进行参数合理化校验拦截。

  • false:校验
  • true:不校验

选填,默认值:false。

maxInputTokenLen = min(maxInputTokenLen, maxSeqLen -1)

  • 当truncation=true时:

    请求的输入长度inputLen会自动截断,请求的实际输入长度inputLen = min(inputLen, maxInputLen)。

  • 当truncation=false时:

    若请求的输入长度inputLen > maxInputTokenLen,会返回Error。

ModelConfig

map

-

模型相关配置,包括后处理参数。详情请参见ModelConfig参数说明

ModelConfig参数说明

配置项

取值类型

取值范围

配置说明

modelInstanceType

std::string

  • "Standard"
  • "StandardMock"

模型类型。

  • "Standard":普通推理
  • "StandardMock":假模型(此模式下不加载模型,仅运行Server)

选填,默认值:"Standard"。

modelName

string

由大写字母、小写字母、数字、中划线、点和下划线组成,且不以中划线、点和下划线作为开头和结尾,字符串长度小于或等于256。

模型名称。

必填,默认值:"llama_65b"。

modelWeightPath

std::string

文件绝对路径长度的上限与操作系统的设置(Linux为PATH_MAX)有关,最小值为1。

模型权重路径。程序会读取该路径下的config.json中torch_dtype和vocab_size字段的值,需保证路径和相关字段存在。

必填,默认值:"/data/atb_testdata/weights/llama1-65b-safetensors"。

该路径会进行安全校验,需要和执行用户的属组和权限保持一致。

worldSize

uint32_t

根据模型实际情况来决定。每一套模型参数中worldSize必须与使用的NPU数量相等。

启用几张卡推理。目前llama-65b至少启用四张NPU卡。

多机推理场景下该值无效,worldSize根据ranktable计算获得。

PD分离场景下需要与下发身份设置的卡数一致。

必填,默认值:4。

cpuMemSize

uint32_t

上限根据显存和用户需求来决定。只有当maxPreemptCount为0时,才可以取值为0。

单个CPU中可以用来申请KV Cache的size上限。

必填,默认值:5,建议值:5,单位:GB。

npuMemSize

int32_t

  • -1
  • 整型数字,取值范围:(0, 2147483647]

单个NPU中可以用来申请KV Cache的size上限。

必填,默认值:-1,建议值:-1,单位:GB。

  • 自动分配KV Cache:当配置值为-1时,kv cache会根据可用显存自动进行分配。

    KV Cache快速计算公式:npuMemSize=单卡总内存*内存分配比例-单卡权重占用内存-运行时相关变量占用内存-系统占用内存

    • 单卡总内存:通过npu-smi info命令查看总显存。
    • 内存分配比例:默认值0.8;可通过环境变量NPU_MEMORY_FRACTION控制;当出现权重加载OOM情况时,可适当调高分配比例或使用更多显卡进行推理
    • 单卡权重占用内存:约等于权重大小*类型大小(浮点为2,int8类型为1)/ 卡数;以实际加载权重为准。
    • 运行时相关变量占用内存:模型输入变量、输出变量、中间变量等内存。
    • 系统占用内存:通过npu-smi info命令查看静息状态下使用显存。
  • 手动分配KV Cache:当配置值大于0时,根据设置值会固定分配KV Cache大小。
说明:
  • 为快速确定最佳显存参数取值范围,提供了快速计算公式。该公式计算的结果仅作为取值参考,为了达到最佳性能,可以适当向上调整该值并进行性能压力测试。
  • 如果设置的“npuMemSize”参数超过系统可分配最大显存值,会出现推理服务启动失败、推理服务启动卡死等异常现象,需要减小该值并重试。
  • PD分离部署场景中,当“backendType”选择“atb”时该参数才可以设置为-1。

backendType

std::string

  • "atb"
  • "ms"

对接的后端类型。

  • atb:推理引擎后端为加速库。
  • ms:推理引擎后端为MindSpore。

必填,默认值:"atb"。

说明:

如果选择"ms"作为对接的推理引擎后端,需要提前安装MindSpore和MindFormers,以及修改MindIE启动配置信息,详情请参见链接

trustRemoteCode

bool

  • true
  • false

是否信任远程代码。

  • false:不信任远程代码。
  • true:信任远程代码。

选填,默认值:false。

说明:

如果设置为true,会存在信任远程代码行为,可能会导致恶意代码注入风险,请自行保障代码注入安全风险。

ScheduleConfig参数说明

由于重计算调度策略调整,各版本间性能在相同调度参数下可能有波动,若想获取最佳性能,详情请参见性能调优

配置项

取值类型

取值范围

配置说明

templateType

std::string

  • "Standard"
  • "Mix"

推理类型。

  • Standard:PD混部场景,Prefill请求和Decode请求各自组batch。
  • Mix:Splitfuse特性相关参数,Prefill请求和Decode请求可以一起组batch。

PD分离场景下该字段配置不生效。

必填,默认值:"Standard"。

templateName

std::string

当前取值只能为:"Standard_LLM"

调度工作流名称。

必填,默认值:"Standard_LLM"。

cacheBlockSize

uint32_t

[1, 128]

KV Cache block的size大小。

必填,默认值:128,建议值:128,其他值建议取为2的n次幂。

maxPrefillBatchSize

uint32_t

[1, maxBatchSize]

最大prefill batch size。maxPrefillBatchSize和maxPrefillTokens谁先达到各自的取值就完成本次组batch。

该参数主要是在明确需要限制Prefill阶段batch size的场景下使用,否则可以设置为0(此时引擎将默认取maxBatchSize值)或与maxBatchSize值相同。

必填,默认值:50。

maxPrefillTokens

uint32_t

[1,4194304],且必须大于或等于maxInputTokenLen的取值。

每次Prefill时,当前batch中所有input token总数,不能超过maxPrefillTokens。maxPrefillTokens和maxPrefillBatchSize谁先达到各自的取值就完成本次组batch。

不建议设置过大,若显存溢出可适当调小。

必填,默认值:8192。

prefillTimeMsPerReq

uint32_t

[0, 1000]

与decodeTimeMsPerReq一起参与计算当前应该选择Prefill还是decode。单位:ms,当supportSelectBatch”设置为“true”时有效。其调度策略流程图请参见图1

必填,默认值:150。

  • PD混部场景,通过计算以下参数来选择下一次推理是Prefill还是Decode:
    • prefillWaitTime = prefillTimeMsPerReq * decodeReqNum,表示如果选择Prefill,Decode请求需要等待的时间。
    • accumulatedDecodeWasteTime = accumulatedDecodeWasteTime + decodeTimeMsPerReq * (maxBatchSize - decodeReqNum),表示连续执行多次Decode浪费的时间。

    比较计算结果,确定下一次推理:

    • 当prefillWaitTime > accumulatedDecodeWasteTime时,表示Decode请求积压过多,则下一次推理是Decode。
    • 当prefillWaitTime <= accumulatedDecodeWasteTime时,表示连续多次Decode浪费的时间过多,则下一次推理是Prefill。
  • PD分离场景,该参数无效;如果当前实例是Prefill实例,则优先Prefill计算;如果当前实例是Decode实例,则优先Decode计算。

prefillPolicyType

uint32_t

  • 0
  • 1
  • 2
  • 3

Prefill阶段的调度策略。其调度策略流程图请参见图2

  • 0:FCFS,先来先服务。
  • 1:STATE,Prefill阶段等同于FCFS策略。
  • 2:PRIORITY,优先级队列。
  • 3:MLFQ,多级反馈队列。

其中,3是0/1的组合。

必填,默认值:0。

decodeTimeMsPerReq

uint32_t

[0, 1000]

与prefillTimeMsPerReq一起参与计算当前应该选择Prefill还是Decode。单位:ms,当“supportSelectBatch”设置为“true”时有效。其调度策略流程图请参见图1

必填,默认值:50。

  • PD混部场景,通过计算以下参数来选择下一次推理是Prefill还是Decode:
    • prefillWaitTime = prefillTimeMsPerReq * decodeReqNum,表示如果选择Prefill,Decode请求需要等待的时间。
    • accumulatedDecodeWasteTime = accumulatedDecodeWasteTime + decodeTimeMsPerReq * (maxBatchSize - decodeReqNum),表示连续执行多次Decode浪费的时间。

    比较计算结果,确定下一次推理:

    • 当prefillWaitTime > accumulatedDecodeWasteTime 时,表示Decode请求积压过多,则下一次推理是Decode;
    • 当prefillWaitTime <= accumulatedDecodeWasteTime 时,表示连续多次Decode浪费的时间过多,则下一次推理是Prefill。
  • PD分离场景,该参数无效:如果当前实例是Prefill实例,则优先Prefill计算;如果当前实例是Decode实例,则优先Decode计算。

decodePolicyType

uint32_t

  • 0
  • 1
  • 2
  • 3

Decode阶段的调度策略。其调度策略流程图请参见图2

  • 0:FCFS,先来先服务。
  • 1:STATE,Decode阶段优先执行未被抢占和换出的请求。
  • 2:PRIORITY,优先级队列。
  • 3:MLFQ,多级反馈队列。

其中,3是0/1的组合。

必填,默认值:0。

maxBatchSize

uint32_t

[1, 5000],且必须大于或等于maxPreemptCount参数的取值。

最大decode batch size。

  1. 首先计算block_num:Total Block Num = Floor(NPU显存/(模型网络层数*cacheBlockSize*模型注意力头数*注意力头大小*Cache类型字节数*Cache数)),其中,Cache数=2;在tensor并行的情况下,block_num*world_size为实际的分配block数。

    如果是多卡,公式中的模型注意力头数*注意力大小的值需要均摊在每张卡上,即“模型注意力头数*注意力大小/卡数”。

    公式中的Floor表示计算结果向下取整。

  2. 为每个请求申请的block数量Block Num=Ceil(输入Token数/cacheBlockSize)+Ceil(最大输出Token数/Block Size)。输入Token数:输入(字符串)做完tokenizer后的tokenID个数;最大输出Token数:模型推理最大迭代次数和最大输出长度之间取较小值。

    公式中的Ceil表示计算结果向上取整。

  3. maxBatchSize=Total Block Num/Block Num。

必填,默认值:200。

maxIterTimes

uint32

[1, maxSeqLen]

模型全局最大输出长度。与请求级最大输出token个数max_tokens(或max_new_tokens)取较小值作为最大可生成长度。

必填,默认值:512。

请求的最大输出长度maxOutputLen=min(maxIterTimes, max_tokens, max_new_tokens)

请求的实际输出长度outputLen = min(maxSeqLen - inputLen, maxOutputLen)

maxPreemptCount

uint32_t

[0, maxBatchSize],当取值大于0时,cpuMemSize取值不可为0。

每一批次最大可抢占请求的上限,即限制一轮调度最多抢占请求的数量,最大上限为maxBatchSize,取值大于0则表示开启可抢占功能。

必填,默认值:0。

supportSelectBatch

bool

  • true
  • false

batch选择策略。

PD分离场景下该字段不生效。

  • false:表示每一轮调度时,优先调度和执行Prefill阶段的请求。
  • true:表示每一轮调度时,根据当前Prefill与Decode请求的数量,自适应调整Prefill和Decode阶段请求调度和执行的先后顺序。

必填,默认值:false。

maxQueueDelayMicroseconds

uint32_t

[500, 1000000]

在队列中的请求数量达到最大BatchSize或maxPrefillTokens前,请求在队列中的最大等待时间,单位:us。

只要等待时间达到该值,即使请求数量未达到最大BatchSize或maxPrefillTokens,也要进行下一次推理。

必填,默认值:5000。

图1 调度策略和执行先后顺序流程图
图2 Prefill和Decode阶段的调度策略流程图