下载
中文
注册

配置参数说明

配置项取值请参考《MindIE安装指南》中“配置MindIE > 配置MindIE Server > 单机推理”章节的步骤3。

配置文件参数说明

配置项

取值类型

取值范围

配置说明

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"
  • "Error"
  • "None"
  • "Verbose":打印Verbose、Info、Warning和Error级别的日志。
  • "Info":打印Info、Warning和Error级别的日志。
  • "Warning":打印Warning和Error级别的日志。
  • "Error":打印Error级别的日志。
  • "None":不打印日志。

必填,默认值:"Info"。

此配置支持热更新。

logFileSize

uint32_t

[0, 500]

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

选填,默认值:20。

logFileNum

uint32_t

[0, 64]

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

选填,默认值: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”“managementAddress”的初始值都需要做相应的修改。

选填,默认值:"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]

EndPoint提供的性能指标监控接口绑定的端口号。

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

必填,默认值: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

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

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

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

tlsCaFile

std::set<std::string>

文件绝对路径长度<=4096。不可为空,并且tlsCaPath+tlsCaFile路径长度上限与操作系统有关,最小值为1。

业务面根证书名称列表。

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

tlsCert

std::string

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

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

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

tlsPk

std::string

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

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

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

tlsPkPwd

std::string

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

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

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

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

tlsCrl

std::string

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

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

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

“tlsCrl”的值只能配套“tlsCaFile”文件列表中的第一个CA文件。

managementTlsCaFile

std::set<std::string>

建议tlsCaPath+managementTlsCaFile路径长度<=4096。不可为空,并且tlsCaPath+managementTlsCaFile路径长度上限与操作系统有关,最小值为1。

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

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

managementTlsCert

std::string

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

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

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

managementTlsPk

std::string

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

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

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

managementTlsPkPwd

std::string

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

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

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

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

managementTlsCrl

std::string

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

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

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

“managementTlsCrl”的值只能配套“managementTlsCaFile”文件列表中的第一个CA文件。

kmcKsfMaster

std::string

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

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

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

kmcKsfStandby

std::string

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

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,需要配置证书相关内容。

interCommPort

uint16_t

[1024, 65535]

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

选填,默认值:1121。

interCommTlsCaFile

std::string

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

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

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

interCommTlsCert

std::string

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

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

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

interCommPk

std::string

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

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

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

interCommPkPwd

std::string

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

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

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

interCommTlsCrl

std::string

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

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

选填,默认值:"security/grpc/certs/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。

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

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

说明:
  1. 执行下列命令,设置设备上加速库可见卡(此操作需在启动MindIE Server之前执行)
    export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
  2. “npuDeviceIds”表示在上述可见卡中,按ASCEND_RT_VISIBLE_DEVICES设置的顺序,选取对应的卡。
例如:
  • ASCEND_RT_VISIBLE_DEVICES=7,0,1,2,3,4,5,6
  • npuDeviceIds:[[0,1,3,4]]

    则最终分配的卡为7,0,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时,忽略后续参数。

interNodeTlsCaFile

std::string

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

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

“interNodeTLSEnabled”=true生效,生效后必填,默认值:"security/grpc/ca/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"。

interNodeTlsCrl

std::string

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

服务证书吊销列表文件路径。

“interNodeTLSEnabled”=true生效,生效后选填,默认值:"security/grpc/certs/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

(0, 4294967295]

输入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。

ModelConfig

map

-

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

ModelConfig参数说明

配置项

取值类型

取值范围

配置说明

modelInstanceType

std::string

  • "Standard"
  • "StandardMock"

模型类型。

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

选填,默认值:"Standard"。

modelName

string

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

模型名称。

必填,默认值:"llama_65b"。

modelWeightPath

std::string

文件绝对路径长度的上限与操作系统有关,最小值为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启动配置信息,详情请参见链接

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

[5120,2097152],且必须大于或等于maxInputTokenLen的取值。

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

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

必填,默认值:8192。

prefillTimeMsPerReq

uint32_t

[0, 1000]

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

必填,默认值:150。

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。

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数/Block Size)+Ceil(最大输出Token数/Block Size)。输入Token数:输入(字符串)做完tokenizer后的tokenID个数;最大输出Token数:模型推理最大迭代次数和最大输出长度之间取较小值。

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

  3. maxBatchSize=Total Block Num/Block Num。

必填,默认值:200。

maxIterTimes

uint32_t

[1, maxSeqLen-1]

模型全局最大输出长度。与请求级最大输出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]

请求的队列等待时间,单位:us。

必填,默认值:5000。

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