单个模型权重过大,单台推理机显存有限,无法容纳整个模型权重参数时,需要采用多个节点进行多机推理。
export LD_LIBRARY_PATH=/usr/local/python3.10.13/lib:$LD_LIBRARY_PATH export PATH=/usr/local/python3.10.13/bin:$PATH
与单机推理的软件包文件清单一致,请参见软件包文件清单。
参数名称 |
参数说明 |
---|---|
MIES_CONTAINER_IP |
容器部署时,请设置成容器的IP地址(如果容器与裸机共用IP地址,应当配置为裸机IP地址),会用于多机间GRPC(Google Remote Procedure Call)通信和EndPoint业务面接收请求。 裸机部署时,不配置。 |
HOST_IP |
裸机部署时(不建议使用裸机部署),请设置成机器的物理机或虚拟机的IP地址。 容器部署时不配置。 |
RANKTABLEFILE |
ranktable json文件的绝对路径。
|
MIES_CONFIG_JSON_PATH |
config.json文件的路径。
|
MindIE Server启动时,会根据“multiNodesInferEnabled”参数判断是单机推理还是多机推理:
当开启多机推理时,config.json中的“npuDeviceIds”和“worldSize”将失效,具体使用卡号及总体Rank数,将根据ranktable文件确定。
ranktable.json文件权限需要设置为640,详细内容请根据以下样例进行配置。(该文件需要用户自行编写)
{ "version": "1.0", "server_count": "2", "server_list": [ { "server_id": "Master节点IP地址", "container_ip": "Master节点容器IP地址", "device": [ { "device_id": "0", "device_ip": "10.20.0.2", "rank_id": "0" }, { "device_id": "1", "device_ip": "10.20.0.3", "rank_id": "1" }, { "device_id": "2", "device_ip": "10.20.0.4", "rank_id": "2" }, { "device_id": "3", "device_ip": "10.20.0.5", "rank_id": "3" }, { "device_id": "4", "device_ip": "10.20.0.6", "rank_id": "4" }, { "device_id": "5", "device_ip": "10.20.0.7", "rank_id": "5" }, { "device_id": "6", "device_ip": "10.20.0.8", "rank_id": "6" }, { "device_id": "7", "device_ip": "10.20.0.9", "rank_id": "7" } ] }, { "server_id": "Slave节点IP地址", "container_ip": "Slave节点容器IP地址", "device": [ { "device_id": "0", "device_ip": "10.20.0.10", "rank_id": "8" }, { "device_id": "1", "device_ip": "10.20.0.11", "rank_id": "9" }, { "device_id": "2", "device_ip": "10.20.0.12", "rank_id": "10" }, { "device_id": "3", "device_ip": "10.20.0.13", "rank_id": "11" }, { "device_id": "4", "device_ip": "10.20.0.14", "rank_id": "12" }, { "device_id": "5", "device_ip": "10.20.0.15", "rank_id": "13" }, { "device_id": "6", "device_ip": "10.20.0.16", "rank_id": "14" }, { "device_id": "7", "device_ip": "10.20.0.17", "rank_id": "15" } ] } ], "status": "completed" }
参数说明:
Master节点和Slave节点上均需执行以下操作。
以下启动命令仅供参考,可根据需求自行修改。
docker run -it -d --net=host --shm-size=1g \ --name container_name --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \ -v /usr/local/sbin:/usr/local/sbin:ro \ -v /path-to-weights:/path-to-weights:ro \ mindie:1.0.RC3-800I-A2-aarch64
cd ../conf vim config.json
配置项 |
配置说明 |
---|---|
multiNodesInferPort |
跨机通信的端口号。 |
interNodeTLSEnabled |
跨机通信是否开启证书安全认证。
|
interNodeTlsCaFile |
根证书名称路径。“interNodeTLSEnabled” : true生效。 |
interNodeTlsCert |
服务证书文件路径。“interNodeTLSEnabled” : true生效。 |
interNodeTlsPk |
服务证书私钥文件路径。“interNodeTLSEnabled” : true生效。 |
interNodeTlsPkPwd |
服务证书私钥加密密钥文件路径。“interNodeTLSEnabled” : true生效。 |
interNodeTlsCrl |
服务证书吊销列表文件路径。“interNodeTLSEnabled”: true生效。 |
interNodeKmcKsfMaster |
KMC密钥库文件路径。“interNodeTLSEnabled” : true生效。 |
interNodeKmcKsfStandby |
KMC密钥库备份文件路径。“interNodeTLSEnabled” : true生效。 |
证书文件 |
默认目标路径 |
说明 |
---|---|---|
根证书 |
mindie-service/security/grpc/ca/ |
开启“interNodeTLSEnabled” : true后必选。 |
服务证书 |
mindie-service/security/grpc/certs/ |
开启“interNodeTLSEnabled” : true后必选。 |
服务证书私钥 |
mindie-service/security/grpc/keys/ |
支持私钥文件加密场景。 开启“interNodeTLSEnabled” : true后必选。 |
服务证书吊销列表 |
mindie-service/security/grpc/certs/ |
必选。 |
服务证书私钥的加密口令 |
mindie-service/security/pass/ |
必选。 |
chmod 400 mindie-service/security/grpc/ca/* chmod 400 mindie-service/security/grpc/certs/* chmod 400 mindie-service/security/grpc/keys/* chmod 400 mindie-service/security/grpc/pass/*
export MIES_CONTAINER_IP=Master节点IP地址 export RANKTABLEFILE=${path}/ranktable.json
export MIES_CONTAINER_IP=Slave节点IP地址 export RANKTABLEFILE=${path}/ranktable.json
nohup ./bin/mindieservice_daemon > output.log 2>&1 &
在标准输出流捕获到的文件中,打印如下信息说明启动成功
Daemon start success!
./bin/mindieservice_daemon
回显如下则说明启动成功。
Daemon start success!
find /dev/shm -name '*llm_backend_*' -type f -delete find /dev/shm -name 'llm_tokenizer_shared_memory_*' -type f -delete