下载
中文
注册

配置参数说明

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

表1 OtherParam参数

配置项

取值类型

取值范围

配置说明

ResourceParam

cacheBlockSize

uint32_t

[1, 128]

kvcache block的size大小。

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

LogParam

logLevel

std::string

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

必填,默认值:"Info"。

logPath

std::string

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

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

例如,假设MindIE Service的安装路径为“/opt/Ascend-mindie-service_{version}_linux-x86_64/”,则默认的日志绝对路径为“/opt/Ascend-mindie-service_{version}_linux-x86_64/logs/mindservice.log”

若配置路径不满足要求,则使用默认路径:“工程路径/logs/mindservice.log”

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

ServeParam

ipAddress

std::string

IPv4地址。

EndPoint提供的业务面RESTful接口绑定的IP地址。全零侦听会导致三面隔离失效,不满足安全配置要求,禁止绑定IP地址为0.0.0.0。

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

必填,默认值:"127.0.0.1"。

managementIpAddress

std::string

IPv4地址。

EndPoint提供的管理面RESTful接口绑定的IP地址。全零侦听会导致三面隔离失效,不满足安全配置要求,禁止绑定IP地址为0.0.0.0。

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

选填,默认值:"127.0.0.2"。

port

int32_t

[1024, 65535]

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

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

必填,默认值:1025。

managementPort

int32_t

[1024, 65535]

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

  • 业务面与管理面可采用四种方案:
    • 单IP地址单端口号(推荐)
    • 单IP地址多端口号
    • 多IP地址单端口号
    • 多IP地址多端口号
  • 在单卡节点中,不能使用多IP地址单端口号的方案,会因端口号占用而无法启动。

选填,默认值:1026。

maxLinkNum

uint32_t

[1, 1000]

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

必填,默认值:1000。

httpsEnabled

bool

  • true
  • false

是否开启https通信。

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

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

tlsCaPath

std::string

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

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

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

tlsCaFile

std::set<std::string>

建议tlsCaPath+tlsCaFile路径长度<=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文件。

kmcKsMaster

std::string

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

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

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

kmcKsStandby

std::string

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

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

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

multiNodesInferPort

uint32_t

[1024, 65535]

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

选填,默认值:1120。

interNodeTLSEnabled

bool

  • true
  • false

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

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

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

interNodeTlsCaFile

std::string

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

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

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

interNodeTlsCert

std::string

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

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

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

interNodeTlsPk

std::string

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

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

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

interNodeTlsPkPwd

std::string

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

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

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

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"。

  • 如果网络环境不安全,不开启https通信,即“httpsEnabled”=“false”时,会存在较高的网络安全风险。
  • 如果推理服务所在的计算节点的网络为跨公网和局域网,绑定0.0.0.0的IP地址可能导致网络隔离失效,存在较大安全风险。故该场景下禁止EndPoint的IP地址绑定为0.0.0.0。
  • 如果配置了相同的管理面和业务面的IP地址,会导致隔离失效。
表2 WorkFlowParam参数

配置项

取值类型

取值范围

配置说明

TemplateParam

templateType

std::string

当前取值只能为:"Standard"

普通推理。

必填,默认值:"Standard"。

templateName

std::string

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

工作流名称。

必填,默认值:"Standard_llama"。

表3 ModelDeployParam参数

配置项

取值类型

取值范围

配置说明

engineName

std::string

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

根据engineName找对应的so文件。

必填,默认值:"mindieservice_llm_engine"。

modelInstanceNumber

uint32_t

[1, 10]

模型实例个数。

必填,默认值:1。

tokenizerProcessNumber

uint32_t

[1, 32]

tokenizer进程数。

选填,默认值:8。

maxSeqLen

uint32_t

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

最大序列长度。输入的长度+输出的长度<=maxSeqLen,用户根据自己的推理场景选择maxSeqLen。

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

必填,默认值:2560。

npuDeviceIds

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

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

表示启用哪几张卡。对于每个模型实例分配的npuIds。

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

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

multiNodesInferEnabled

bool

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

选填,默认值:false。

ModelParam

modelInstanceType

std::string

  • "Standard"
  • "StandardMock"

模型类型。

  • "Standard":普通推理。
  • "StandardMock":假模型。

选填,默认值:"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计算获得。

必填,默认值:4。

cpuMemSize

uint32_t

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

CPU中可以用来申请kv cache的size上限。

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

npuMemSize

uint32_t

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

NPU中可以用来申请kv cache的size上限。

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

快速计算公式:npuMemSize=(单卡总空闲-权重/NPU卡数-后处理占用)*系数,其中系数取0.8。

backendType

std::string

  • "atb"
  • "ms"

对接的后端类型。

必填,默认值:"atb"。

pluginParams

std::string

根据并行解码实际所需填写一个json字符串。

选填,默认值:""。

表4 ScheduleParam参数

配置项

取值类型

取值范围

配置说明

maxPrefillBatchSize

uint32_t

[1, maxBatchSize]

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

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

必填,默认值:50。

maxPrefillTokens

uint32_t

[5120, 512000],且必须大于或等于maxSeqLen的取值。

每次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
  • 3

prefill阶段的调度策略,其调度策略流程图请参见图2

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

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

必填,默认值:0。

decodeTimeMsPerReq

uint32_t

[0, 1000]

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

必填,默认值:50。

decodePolicyType

uint32_t

  • 0
  • 1
  • 3

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

  • 0:FCFS,先来先服务。
  • 1:STATE,decode阶段优先执行未被抢占和换出的请求。
  • 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。

maxPreemptCount

int32_t

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

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

必填,默认值:0。

supportSelectBatch

bool

  • true
  • false

batch选择策略。

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

必填,默认值:false。

maxQueueDelayMicroseconds

uint32_t

[500, 1000000]

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

必填,默认值:5000。

图1 调度策略和执行先后顺序流程图
图2 prefill和decode阶段的调度策略流程图
  • “npuDeviceIds”参数使用规则:
    1. 执行下列命令,设置设备上加速库可见卡(此操作需在启动MindIE Server之前执行)
      export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
    2. “npuDeviceIds”表示在上述可见卡中,按ASCEND_RT_VISIBLE_DEVICES设置的顺序,选取对应的卡。
    3. “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。

  • “npuMemSize”参数使用规则:
    • 为快速确定最佳显存参数取值范围,提供了快速计算公式。该公式计算的结果仅作为取值参考,为了达到最佳性能,可以适当向上调整该值并进行性能压力测试。
    • 如果设置的“npuMemSize”参数超过系统可分配最大显存值,会出现推理服务启动失败、推理服务启动卡死等异常现象,需要减小该值并重试。
  • 如需配置最优性能,请参考性能调优流程章节。