配置MindIE-Server
前提条件
MindIE-Server对于Python的环境要求为Python3.10,如果环境中的Python3.10不是默认版本,需要参考如下方法添加环境变量(Python路径根据实际路径进行修改)。
export LD_LIBRARY_PATH=/usr/local/python3.10.13/lib:$LD_LIBRARY_PATH export PATH=/usr/local/python3.10.13/bin:$PATH
软件包文件清单
MindIE-Server软件包Ascend-mindie-service_{version}_linux-{arch}.run解压后包含的文件如表1所示。
目录 |
文件 |
说明 |
---|---|---|
bin |
ibis |
model wrapper的输入管理模块Python文件存放目录,该目录下的文件仅由model_wrapper模块调用,无需用户手动执行。 |
utils |
model wrapper的Python工具类文件存放目录,该目录下文件仅由model_wrapper模块调用,无需用户手动执行。 |
|
infer_engine-0.0.1-py3-none-any.whl |
benchmark Python接口包。 |
|
llm_engine_test |
性能测试工具。 |
|
mindieclient-{version}-py3-none-any.whl |
MindIE-Client工具安装包。 |
|
mindieserver_backend_connector |
进程间通信模块。 |
|
mindieservice_daemon |
主程序。 |
|
model.py |
模型匹配文件。该文件仅由推理服务主进程调用,无需用户手动执行。 |
|
ock_hntc-{version}-cp310-cp310-linux_{arch}.whl |
加速库模型安装包。 |
|
seceasy_encrypt |
加密工具。 |
|
standard_model.py |
普通推理模型。该文件仅由model wrapper模块调用,无需用户手动执行。 |
|
standard_model_mock.py |
普通推理的假模型。该文件仅由model wrapper模块调用,无需用户手动执行。 |
|
tokenizer.py |
文本和token id的互转工具。该文件仅由推理服务主进程调用,无需用户手动执行。 |
|
version |
版本信息。 |
|
conf |
config.json |
配置文件。 |
include |
backend |
头文件。 |
sdk |
头文件。 |
|
lib |
libconfig_manager.so |
推理服务so文件。 |
libcrypto.so |
||
libhse_authorization.so |
||
libhse_cryption.so |
||
libmindieserver_backend.so |
||
libmindieserver_common.so |
||
libmindieservice_endpoint.so |
||
libmindieserver_engine.so |
||
libmindieserver_ibis.so |
||
libssl.so |
||
logs |
- |
日志文件。 |
scripts |
config_mindie_server_tls_cert.py |
密钥口令加密工具。 |
security |
ca |
根证书目录。 |
certs |
服务证书和服务证书吊销列表目录。 |
|
keys |
服务证书私钥目录。 |
|
pass |
密钥口令加密文件目录。 |
操作步骤
- 组件包的默认路径在MindIE的子路径下/usr/local/Ascend/mindie/latest/mindie-service。
chmod +x ./Ascend-mindie-service_{version}_linux-{arch}.run ./Ascend-mindie-service_{version}_linux-{arch}.run --install(--install-path=${用户指定路径}) cd /usr/local/Ascend/mindie/latest/
- 执行以下命令,修改软件安装文件用户,以准备安装用户创建的安装用户为例。
chown -R username:username mindie-service
- 执行以下命令,修改软件安装文件权限。
chmod 750 mindie-service chmod -R 550 mindie-service/bin chmod -R 550 mindie-service/lib chmod -R 550 mindie-service/include/ chmod -R 550 mindie-service/scripts/ chmod 750 mindie-service/logs chmod 750 mindie-service/conf chmod 640 mindie-service/conf/config.json chmod 750 mindie-service/security/ chmod -R 700 mindie-service/security/*
- 根据用户需要设置配置参数。
- 进入conf目录,打开“config.json”文件。
cd ../conf vim config.json
配置文件config.json格式如下。
{ "OtherParam": { "ResourceParam" : { "cacheBlockSize" : 128, "preAllocBlocks" : 4 }, "LogParam" : { "logLevel" : "Info", "logPath" : "/logs/mindservice.log" }, "ServeParam" : { "ipAddress" : "127.0.0.1", "port" : 1025, "maxLinkNum" : 300, "httpsEnabled" : true, "tlsCaPath" : "security/ca/", "tlsCaFile" : ["ca.pem"], "tlsCert" : "security/certs/server.pem", "tlsPk" : "security/keys/server.key.pem", "tlsPkPwd" : "security/pass/mindie_server_key_pwd.txt", "kmcKsfMaster" : "tools/pmt/master/ksfa", "kmcKsfStandby" : "tools/pmt/standby/ksfb", "tlsCrl" : "security/certs/server_crl.pem" } }, "WorkFlowParam": { "TemplateParam" : { "templateType": "Standard", "templateName" : "Standard_llama", "pipelineNumber" : 1 } }, "ModelDeployParam": { "maxSeqLen" : 2560, "npuDeviceIds" : [[0,1,2,3]], "ModelParam" : [ { "modelInstanceType": "Standard", "modelName" : "llama_65b", "modelWeightPath" : "/data/atb_testdata/weights/llama1-65b-safetensors", "worldSize" : 4, "cpuMemSize" : 5, "npuMemSize" : 8, "backendType": "atb" } ] }, "ScheduleParam": { "maxPrefillBatchSize" : 50, "maxPrefillTokens" : 8192, "prefillTimeMsPerReq" : 150, "prefillPolicyType" : 0, "decodeTimeMsPerReq" : 50, "decodePolicyType" : 0, "maxBatchSize" : 200, "maxIterTimes" : 512, "maxPreemptCount" : 200, "supportSelectBatch" : false, "maxQueueDelayMicroseconds" : 5000 } }
- 按“i”进入编辑模式,根据用户需要修改配置参数,参数详情请参见《MindIE-Service开发指南》中的 章节。
- 如果网络环境不安全,不开启https通信,即“httpsEnabled”=“false”时,会存在较高的网络安全风险。
- “modelWeightPath”参数配置路径下的{modelWeightPath}/config.json文件,需保证其用户组和用户名与当前用户一致,并且为非软链接,文件权限不高于640。
- 按“Esc”键,输入“:wq!”,按“Enter”保存并退出编辑。
- 进入conf目录,打开“config.json”文件。
- (可选)若开启了https认证(“httpsEnabled”=“true”,默认开启),则将对应证书文件拷贝到默认目标路径,并对config.json文件进行配置,详情如下。
证书文件
默认目标路径
备注
开启https后是否必选
根证书
软件包解压目录/security/ca/。
支持多个CA证书。
开启https后必选。
服务证书
软件包解压目录/security/cert/。
-
开启https后必选。
服务证书私钥
软件包解压目录/security/keys/。
支持私钥文件加密场景。
开启https后必选。
服务证书吊销列表
软件包解压目录/security/cert/。
-
可选。
- 打开“config.json”文件。
vim config.json
- 按“i”进入编辑模式。
- 将根证书名称配置到config.json文件的“tlsCaFile”根证书名称列表中。
- 修改其他证书文件对应参数的值,使证书文件名与config.json文件中的保持一致。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令,修改证书文件的用户和权限。
chown -R HwHiAiUser:HwHiAiUser mindie-service/security chmod 400 mindie-service/security/ca/* chmod 400 mindie-service/security/cert/* chmod 400 mindie-service/security/keys/* chmod 400 mindie-service/security/cert/*
- 打开“config.json”文件。
- (可选)进入软件包安装目录,切换安装用户,对加密私钥文件的密钥进行加密存储。
su HwHiAiUser python3 scripts/config_mindie_server_tls_cert.py 软件包解压目录
证书文件
默认目标路径
是否必选
备注
密钥口令加密文件目录
软件包解压目录/security/pass/。
若服务证书私钥文件启用了密钥加密,必选。
服务证书私钥文件的加密密钥,由“软件包解压目录/security/config_mindie_server_tls_cert.py”脚本生成。
KMC密钥库文件
软件包解压目录/tools/pmt/master/。
若服务证书私钥文件启用了密钥加密,必选。
由“软件包解压目录/scripts/config_mindie_server_tls_cert.py”脚本生成。
KMC密钥库文件备份文件
软件包解压目录/tools/pmt/standby/。
若服务证书私钥文件启用了密钥加密,必选。
由“软件包解压目录/scripts/config_mindie_server_tls_cert.py”脚本生成。
- 准备环境配置文件。
- 直接使用安装后的mindie-service软件包中的环境变量。
set_env.sh环境配置文件如下所示,详情请参见《MindIE-Service开发指南》中“附录 > 环境变量”章节。
- 样例是llama-65b的环境变量,请用户根据实际的模型设置环境变量。
- 为避免安装和使用时容器不一致或用户不一致导致服务不能正常使用,建议在set_env.sh中添加以下三个环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh # CANN source /usr/local/Ascend/mindie/latest/mindie-rt/mindie-atb/set_env.sh # ATB source /home/package/atb_models/set_env.sh # atb_models路径
path="${BASH_SOURCE[0]}" mies_path=$(cd $(dirname $path); pwd ) export MIES_INSTALL_PATH=${mies_path}/latest export LD_LIBRARY_PATH=${MIES_INSTALL_PATH}/lib:${LD_LIBRARY_PATH} export PYTHONPATH=${MIES_INSTALL_PATH}/bin:${PYTHONPATH} export PYTHONDONTWRITEBYTECODE=1 # 服务启动会在bin目录下生成__pycache__目录,bin目录没有写入权限,需要关闭生成__pycache__目录 export MIES_CONTINUOUS_BATCHING=1 export ATB_OPERATION_EXECUTE_ASYNC=1 export TASK_QUEUE_ENABLE=1 export HCCL_BUFFSIZE=120 # 运行时日志 export ASCEND_SLOG_PRINT_TO_STDOUT=0 export ASCEND_GLOBAL_LOG_LEVEL=3 export ASCEND_GLOBAL_EVENT_ENABLE=0 # 加速库日志 export ATB_LOG_TO_FILE=0 export ATB_LOG_TO_FILE_FLUSH=0 export ATB_LOG_TO_STDOUT=0 export ATB_LOG_LEVEL=ERROR # 模型库日志 export ASDOPS_LOG_TO_FILE=0 export ASDOPS_LOG_TO_STDOUT=0 export ASDOPS_LOG_LEVEL=ERROR # OCK后处理日志 export OCK_LOG_LEVEL=ERROR export OCK_LOG_TO_STDOUT=0 # Python日志 export MIES_PYTHON_LOG_TO_FILE=0 export MIES_PYTHON_LOG_TO_STDOUT=0 export MIES_PYTHON_LOG_PATH=/workspace/log/pythonlog.log export MIES_PYTHON_LOG_LEVEL=INFO
- 按“i”进入编辑模式,拷贝7.a中的环境变量配置内容,并根据实际情况进行修改。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 直接使用安装后的mindie-service软件包中的环境变量。
- 将模型权重文件拷贝到4.a中模型配置参数“modelWeightPath”指定的目录下。
cp 模型权重文件所在路径 /data/atb_testdata/weights/llama1-65b-safetensors
- 切换到运行用户,加载环境变量。
su HwHiAiUser source set_env.sh
- 启动服务。启动命令需在/{MindIE安装目录}/latest/mindie-service目录中执行。
./bin/mindieservice_daemon
Ascend-cann-toolkit工具会在执行服务启动的目录下生成kernel_meta_temp_xxxx目录,该目录为算子的cce文件保存目录。因此需要在当前用户拥有写权限目录下(例如Ascend-mindie-service_{version}_linux-{arch}目录,或者用户在Ascend-mindie-service_{version}_linux-{arch}目录下自行创建临时目录)启动推理服务。
回显如下则说明启动成功。
Daemon start success!