已合并
更新 python 版本表述,保留 Python311,部分位置保留 Python310,其他旧版本表述清理 #831
徐驰创建于 4月11日
更新 python 版本表述,保留 Python311,部分位置保留 Python310,其他旧版本表述清理 #831
已合并
共 6 个文件变更+67-69
| @@ -68,7 +68,7 @@ chat接口激活的专家分布更均衡,但单卡激活的专家数更多, | |||
| 68 | ``` | 68 | ``` |
| 69 | 69 | ||
| 70 | - 通过环境变量设置: | 70 | - 通过环境变量设置: |
| 71 | - | 71 | + |
| 72 | ```bash | 72 | ```bash |
| 73 | export MASTER\_ADDR=localhost | 73 | export MASTER\_ADDR=localhost |
| 74 | 74 | ||
| @@ -76,7 +76,7 @@ chat接口激活的专家分布更均衡,但单卡激活的专家数更多, | |||
| 76 | 76 | ||
| 77 | ``` | 77 | ``` |
| 78 | 78 | ||
| 79 | -## 服务侧拉起模型时出现“Max retries exceeded with url”报错 | 79 | +## 服务侧拉起模型时出现“Max retries exceeded with url”报错 |
| 80 | 80 | ||
| 81 | ### 问题现象描述 | 81 | ### 问题现象描述 |
| 82 | 82 | ||
| @@ -245,7 +245,7 @@ export ATB_STREAM_SYNC_EVERY_OPERATION_ENABLE=1 | |||
| 245 | 通信算子: | 245 | 通信算子: |
| 246 | 246 | ||
| 247 | ```bash | 247 | ```bash |
| 248 | - export LCCL_DETERMINISTIC=1 | 248 | + export LCCL_DETERMINISTIC=1 |
| 249 | export HCCL_DETERMINISTIC=true | 249 | export HCCL_DETERMINISTIC=true |
| 250 | ``` | 250 | ``` |
| 251 | 251 | ||
| @@ -415,12 +415,12 @@ fi | |||
| 415 | ####################################################################################### | 415 | ####################################################################################### |
| 416 | # Check /health/timed-3 | 416 | # Check /health/timed-3 |
| 417 | ####################################################################################### | 417 | ####################################################################################### |
| 418 | - | 418 | + |
| 419 | # 读取PD混部服务化配置参数中的管理面端口,赋值到management_port变量 | 419 | # 读取PD混部服务化配置参数中的管理面端口,赋值到management_port变量 |
| 420 | config_file="/home/HwHiAiUser/Ascend/mindie/latest/mindie-service/conf/config.json" | 420 | config_file="/home/HwHiAiUser/Ascend/mindie/latest/mindie-service/conf/config.json" |
| 421 | management_port=$(grep '"managementPort"' "$config_file" | sed 's/[^0-9]*//g') | 421 | management_port=$(grep '"managementPort"' "$config_file" | sed 's/[^0-9]*//g') |
| 422 | HEALTH_CHECK_URL="https://127.0.0.2:$management_port/health/timed-3" | 422 | HEALTH_CHECK_URL="https://127.0.0.2:$management_port/health/timed-3" |
| 423 | - | 423 | + |
| 424 | # 调用PD混部健康探针接口:/health/timed-${TIMEOUT} | 424 | # 调用PD混部健康探针接口:/health/timed-${TIMEOUT} |
| 425 | # 并把结果写入到response_file文件中 | 425 | # 并把结果写入到response_file文件中 |
| 426 | # 0.0.0.0需要修改为PD混部服务化配置参数中的管理面IP | 426 | # 0.0.0.0需要修改为PD混部服务化配置参数中的管理面IP |
| @@ -437,24 +437,24 @@ fi | |||
| 437 | ####################################################################################### | 437 | ####################################################################################### |
| 438 | # Check npu-smi info | 438 | # Check npu-smi info |
| 439 | ####################################################################################### | 439 | ####################################################################################### |
| 440 | - | 440 | + |
| 441 | npu_id=$(awk 'NR==2 {print $1}' ~/device_info) # 读取NPU卡号 | 441 | npu_id=$(awk 'NR==2 {print $1}' ~/device_info) # 读取NPU卡号 |
| 442 | max_aicore_usage=0 # 存放AICore使用率 | 442 | max_aicore_usage=0 # 存放AICore使用率 |
| 443 | num_samples=4 # 设置采样次数 | 443 | num_samples=4 # 设置采样次数 |
| 444 | lower_limit=10 # AICore使用率的判断阈值,本样例为10 | 444 | lower_limit=10 # AICore使用率的判断阈值,本样例为10 |
| 445 | - | 445 | + |
| 446 | # 循环重试机制:最多尝试num_samples次 | 446 | # 循环重试机制:最多尝试num_samples次 |
| 447 | for ((i=0; i<num_samples; i++)); do | 447 | for ((i=0; i<num_samples; i++)); do |
| 448 | # npu-smi info -t usages:获取NPU使用率相关信息 | 448 | # npu-smi info -t usages:获取NPU使用率相关信息 |
| 449 | # "$npu_id":NPU卡号 | 449 | # "$npu_id":NPU卡号 |
| 450 | output=$(npu-smi info -t usages -i "$npu_id") | 450 | output=$(npu-smi info -t usages -i "$npu_id") |
| 451 | - | 451 | + |
| 452 | # 提取AICore使用率信息 | 452 | # 提取AICore使用率信息 |
| 453 | # echo "$output":输出NPU使用率相关信息 | 453 | # echo "$output":输出NPU使用率相关信息 |
| 454 | # grep 'Aicore Usage Rate(%):过滤出Aicore Usage Rate(%)字段 | 454 | # grep 'Aicore Usage Rate(%):过滤出Aicore Usage Rate(%)字段 |
| 455 | # awk '{print $NF}' | tr -d '%': 提取最后一个字段并取出百分号% | 455 | # awk '{print $NF}' | tr -d '%': 提取最后一个字段并取出百分号% |
| 456 | aicore_usage=$(echo "$output" | grep 'Aicore Usage Rate(%)' | awk '{print $NF}' | tr -d '%' | sort -nr | head -1) | 456 | aicore_usage=$(echo "$output" | grep 'Aicore Usage Rate(%)' | awk '{print $NF}' | tr -d '%' | sort -nr | head -1) |
| 457 | - | 457 | + |
| 458 | # 如果提取到的值不为空,并且比当前记录的最大值大,就更新最大值 | 458 | # 如果提取到的值不为空,并且比当前记录的最大值大,就更新最大值 |
| 459 | if [[ -n "$aicore_usage" && "$aicore_usage" -gt "$max_aicore_usage" ]]; then | 459 | if [[ -n "$aicore_usage" && "$aicore_usage" -gt "$max_aicore_usage" ]]; then |
| 460 | max_aicore_usage=$aicore_usage | 460 | max_aicore_usage=$aicore_usage |
| @@ -464,7 +464,7 @@ fi | |||
| 464 | sleep 0.1 | 464 | sleep 0.1 |
| 465 | fi | 465 | fi |
| 466 | done | 466 | done |
| 467 | - | 467 | + |
| 468 | # 判断当前AICore使用率是否低于设定值 | 468 | # 判断当前AICore使用率是否低于设定值 |
| 469 | if (( max_aicore_usage < lower_limit )); then | 469 | if (( max_aicore_usage < lower_limit )); then |
| 470 | core_abnormal=true | 470 | core_abnormal=true |
| @@ -479,7 +479,7 @@ fi | |||
| 479 | ####################################################################################### | 479 | ####################################################################################### |
| 480 | # Final conclusion | 480 | # Final conclusion |
| 481 | ####################################################################################### | 481 | ####################################################################################### |
| 482 | - | 482 | + |
| 483 | # 阻塞,确保HTTP请求完成后再处理结果 | 483 | # 阻塞,确保HTTP请求完成后再处理结果 |
| 484 | wait $! | 484 | wait $! |
| 485 | # 读取响应信息 | 485 | # 读取响应信息 |
| @@ -488,44 +488,44 @@ fi | |||
| 488 | response_body=$(echo "$response" | sed -e 's/HTTPSTATUS\:.*//g') | 488 | response_body=$(echo "$response" | sed -e 's/HTTPSTATUS\:.*//g') |
| 489 | # 提取响应码 | 489 | # 提取响应码 |
| 490 | response_code=$(echo "$response" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') | 490 | response_code=$(echo "$response" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') |
| 491 | - | 491 | + |
| 492 | # 如果http请求的返回值正常,则将timed_out标志位至为false | 492 | # 如果http请求的返回值正常,则将timed_out标志位至为false |
| 493 | if [[ "$response_code" -ne 200 ]] || [[ "$response_body" != '{"status":"healthy"}' ]]; then | 493 | if [[ "$response_code" -ne 200 ]] || [[ "$response_body" != '{"status":"healthy"}' ]]; then |
| 494 | timed_out=true | 494 | timed_out=true |
| 495 | else | 495 | else |
| 496 | timed_out=false | 496 | timed_out=false |
| 497 | fi | 497 | fi |
| 498 | - | 498 | + |
| 499 | # 判断服务是否健康 | 499 | # 判断服务是否健康 |
| 500 | # 条件1:HTTP状态码必须为 200 或 响应体内容是 '{"status":"healthy"}' | 500 | # 条件1:HTTP状态码必须为 200 或 响应体内容是 '{"status":"healthy"}' |
| 501 | # 条件2:AICore的使用率高于设定值 | 501 | # 条件2:AICore的使用率高于设定值 |
| 502 | if [[ "$timed_out" == true && "$core_abnormal" == true ]]; then | 502 | if [[ "$timed_out" == true && "$core_abnormal" == true ]]; then |
| 503 | max_aicore_usage=0 | 503 | max_aicore_usage=0 |
| 504 | num_samples=6 | 504 | num_samples=6 |
| 505 | - | 505 | + |
| 506 | # 保底机制:如果服务可能存在异常,则再次检查AICore的使用率 | 506 | # 保底机制:如果服务可能存在异常,则再次检查AICore的使用率 |
| 507 | # 循环重试机制:最多尝试 num_samples 次 | 507 | # 循环重试机制:最多尝试 num_samples 次 |
| 508 | for ((i=0; i<num_samples; i++)); do | 508 | for ((i=0; i<num_samples; i++)); do |
| 509 | output=$(npu-smi info -t usages -i "$npu_id") | 509 | output=$(npu-smi info -t usages -i "$npu_id") |
| 510 | - | 510 | + |
| 511 | aicore_usage=$(echo "$output" | grep 'Aicore Usage Rate(%)' | awk '{print $NF}' | tr -d '%' | sort -nr | head -1) | 511 | aicore_usage=$(echo "$output" | grep 'Aicore Usage Rate(%)' | awk '{print $NF}' | tr -d '%' | sort -nr | head -1) |
| 512 | - | 512 | + |
| 513 | if [[ -n "$aicore_usage" && "$aicore_usage" -gt "$max_aicore_usage" ]]; then | 513 | if [[ -n "$aicore_usage" && "$aicore_usage" -gt "$max_aicore_usage" ]]; then |
| 514 | max_aicore_usage=$aicore_usage | 514 | max_aicore_usage=$aicore_usage |
| 515 | fi | 515 | fi |
| 516 | - | 516 | + |
| 517 | if (( i < num_samples - 1 )); then | 517 | if (( i < num_samples - 1 )); then |
| 518 | sleep 0.1 | 518 | sleep 0.1 |
| 519 | fi | 519 | fi |
| 520 | done | 520 | done |
| 521 | - | 521 | + |
| 522 | # 判断当前AICore使用率是否低于设定值 | 522 | # 判断当前AICore使用率是否低于设定值 |
| 523 | if (( max_aicore_usage < lower_limit )); then | 523 | if (( max_aicore_usage < lower_limit )); then |
| 524 | core_abnormal=true | 524 | core_abnormal=true |
| 525 | else | 525 | else |
| 526 | core_abnormal=false | 526 | core_abnormal=false |
| 527 | fi | 527 | fi |
| 528 | - | 528 | + |
| 529 | # 如果健康接口响应超时且AICore使用率低于设定值,认为服务不健康;否则认为服务健康 | 529 | # 如果健康接口响应超时且AICore使用率低于设定值,认为服务不健康;否则认为服务健康 |
| 530 | if [[ "$timed_out" == true && "$core_abnormal" == true ]]; then | 530 | if [[ "$timed_out" == true && "$core_abnormal" == true ]]; then |
| 531 | echo 501 | 531 | echo 501 |
| @@ -555,7 +555,7 @@ fi | |||
| 555 | - 启动探针(startupProbe):直接调用**/health/time-_$\{TIMEOUT\}_**接口,周期/超时时间大于等于5秒 。 | 555 | - 启动探针(startupProbe):直接调用**/health/time-_$\{TIMEOUT\}_**接口,周期/超时时间大于等于5秒 。 |
| 556 | - port:为MindIE的管理面端口,即MindIE的config.json配置文件中“managementPort“字段的值。 | 556 | - port:为MindIE的管理面端口,即MindIE的config.json配置文件中“managementPort“字段的值。 |
| 557 | 557 | ||
| 558 | -> [!NOTE]说明 | 558 | +> [!NOTE]说明 |
| 559 | > | 559 | > |
| 560 | > - 如果Kubernetes版本太低无法配置启动探针,建议为存活/就绪探针配置“initialDelaySeconds“字段,其值需要大于模型启动时间。 | 560 | > - 如果Kubernetes版本太低无法配置启动探针,建议为存活/就绪探针配置“initialDelaySeconds“字段,其值需要大于模型启动时间。 |
| 561 | > - Kubernetes探针的具体使用方式,详情请参考[Kubernetes官网链接](https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)。 | 561 | > - Kubernetes探针的具体使用方式,详情请参考[Kubernetes官网链接](https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)。 |
| @@ -750,9 +750,9 @@ ibis缺少Python依赖。 | |||
| 750 | 2. 在bashrc文件内添加如下环境变量,保存并退出。 | 750 | 2. 在bashrc文件内添加如下环境变量,保存并退出。 |
| 751 | 751 | ||
| 752 | ```bash | 752 | ```bash |
| 753 | - ## 例如系统使用3.10.13版本,安装目录位于/usr/local/python3.10.13 | 753 | + ## 例如系统使用3.11版本,安装目录位于/usr/local/python3.11 |
| 754 | - export LD_LIBRARY_PATH=/usr/local/python3.10.13/lib:$LD_LIBRARY_PATH | 754 | + export LD_LIBRARY_PATH=/usr/local/python3.11/lib:$LD_LIBRARY_PATH |
| 755 | - export PATH=/usr/local/python3.10.13/bin:$PATH | 755 | + export PATH=/usr/local/python3.11/bin:$PATH |
| 756 | ``` | 756 | ``` |
| 757 | 757 | ||
| 758 | 3. 使用以下命令使环境变量生效。 | 758 | 3. 使用以下命令使环境变量生效。 |
| @@ -764,8 +764,8 @@ ibis缺少Python依赖。 | |||
| 764 | 4. 使用以下命令建立软链接。 | 764 | 4. 使用以下命令建立软链接。 |
| 765 | 765 | ||
| 766 | ```bash | 766 | ```bash |
| 767 | - ln -s /usr/local/python3.10.13/bin/python3.10 /usr/bin/python | 767 | + ln -s /usr/local/python3.11/bin/python3.11 /usr/bin/python |
| 768 | - ln -s /usr/local/python3.10.13/bin/pip3.10 /usr/bin/pip | 768 | + ln -s /usr/local/python3.11/bin/pip3.11 /usr/bin/pip |
| 769 | ``` | 769 | ``` |
| 770 | 770 | ||
| 771 | ## 部署MindIE LLM服务时,找不到tlsCert等路径 | 771 | ## 部署MindIE LLM服务时,找不到tlsCert等路径 |
| @@ -801,7 +801,7 @@ glibc.so本身的bug。 | |||
| 801 | 执行以下命令: | 801 | 执行以下命令: |
| 802 | 802 | ||
| 803 | ```bash | 803 | ```bash |
| 804 | -export LD_PRELOAD=$LD_PRELOAD:/usr/local/python3.10.2/lib/python3.10/site-packages/torch/lib/../../torch.libs/libgomp-6e1a1d1b.so.1.0.0 | 804 | +export LD_PRELOAD=$LD_PRELOAD:/usr/local/python3.11/lib/python3.11/site-packages/torch/lib/../../torch.libs/libgomp-6e1a1d1b.so.1.0.0 |
| 805 | 805 | ||
| 806 | ``` | 806 | ``` |
| 807 | 807 | ||
| @@ -929,7 +929,7 @@ call calnnCat failed, detail:EZ1001: xxxxxxxx dimnum of tensor 5 is [1], should | |||
| 929 | 929 | ||
| 930 | 示例:如果某个算子(如:concat、matmul等),希望这个维度存在并匹配某个值(如:2),那被squeeze删除后shape就会报错。 | 930 | 示例:如果某个算子(如:concat、matmul等),希望这个维度存在并匹配某个值(如:2),那被squeeze删除后shape就会报错。 |
| 931 | 931 | ||
| 932 | ->[!NOTE]说明 | 932 | +>[!NOTE]说明 |
| 933 | >MindIE 2.0之前的版本存该问题,MindIE 2.0版本之后都已修复。 | 933 | >MindIE 2.0之前的版本存该问题,MindIE 2.0版本之后都已修复。 |
| 934 | 934 | ||
| 935 | <br> | 935 | <br> |
| @@ -1054,8 +1054,8 @@ RuntimeError: NPU out of memory. Tried to allocate xxx GiB." | |||
| 1054 | 1. 适当调高NPU\_MEMORY\_FRACTION环境变量的值(代表内存分配比例,默认值为0.8),参考示例如下所示。 | 1054 | 1. 适当调高NPU\_MEMORY\_FRACTION环境变量的值(代表内存分配比例,默认值为0.8),参考示例如下所示。 |
| 1055 | 1055 | ||
| 1056 | ```bash | 1056 | ```bash |
| 1057 | - export NPU_MEMORY_FRACTION=0.96 | 1057 | + export NPU_MEMORY_FRACTION=0.96 |
| 1058 | - export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True | 1058 | + export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True |
| 1059 | export OMP_NUM_THREADS=1 | 1059 | export OMP_NUM_THREADS=1 |
| 1060 | ``` | 1060 | ``` |
| 1061 | 1061 | ||
| @@ -1063,7 +1063,7 @@ RuntimeError: NPU out of memory. Tried to allocate xxx GiB." | |||
| 1063 | - maxPrefillTokens需要大于等于maxInputToken。 | 1063 | - maxPrefillTokens需要大于等于maxInputToken。 |
| 1064 | - maxPrefillTokens会影响到atb初始化阶段的workspace,其值过大时拉起服务后可能直接出现Out of memory报错。 | 1064 | - maxPrefillTokens会影响到atb初始化阶段的workspace,其值过大时拉起服务后可能直接出现Out of memory报错。 |
| 1065 | 1065 | ||
| 1066 | -3. 调整npuMemSize(代表单个NPU可以用来申请KV Cache的size上限,默认值为-1,表示自动分配KV Cahce;大于0表示手动分配,会根据设置的值固定分配KV Cache大小)参数值。 | 1066 | +3. 调整npuMemSize(代表单个NPU可以用来申请KV Cache的size上限,默认值为-1,表示自动分配KV Cache;大于0表示手动分配,会根据设置的值固定分配KV Cache大小)参数值。 |
| 1067 | 1067 | ||
| 1068 | npuMemSize = 单卡总内存 \* 内存分配比例 | 1068 | npuMemSize = 单卡总内存 \* 内存分配比例 |
| 1069 | 1069 | ||
| @@ -1279,7 +1279,7 @@ AttributeError: 'ForkAwareLocal' object has no attribute 'connection‘ | |||
| 1279 | 通信算子: | 1279 | 通信算子: |
| 1280 | 1280 | ||
| 1281 | ```bash | 1281 | ```bash |
| 1282 | -export LCCL_DETERMINISTIC=1 | 1282 | +export LCCL_DETERMINISTIC=1 |
| 1283 | export HCCL_DETERMINISTIC=true #开启归约类通信算子的确定性计算 | 1283 | export HCCL_DETERMINISTIC=true #开启归约类通信算子的确定性计算 |
| 1284 | export ATB_LLM_LCOC_ENABLE=0 | 1284 | export ATB_LLM_LCOC_ENABLE=0 |
| 1285 | ``` | 1285 | ``` |
| @@ -8,23 +8,23 @@ | |||
| 8 | 8 | ||
| 9 | - 若开启HTTPS双向认证,需要提前准备好服务证书、服务器私钥和验签证书等。 | 9 | - 若开启HTTPS双向认证,需要提前准备好服务证书、服务器私钥和验签证书等。 |
| 10 | - 若使用容器化部署启动,要求共享内存设置不小于1GB。 | 10 | - 若使用容器化部署启动,要求共享内存设置不小于1GB。 |
| 11 | -- Server对于Python的环境要求为Python3.10.x或者Python3.11.x。此处以Python3.10.13为例,如果环境中的Python3.10.13不是默认版本,需要参考如下方法添加环境变量(Python路径根据实际路径进行修改)。 | 11 | +- Server对于Python的环境要求为Python3.11.x。此处以Python3.11为例,如果环境中的Python3.11不是默认版本,需要参考如下方法添加环境变量(Python路径根据实际路径进行修改)。 |
| 12 | 12 | ||
| 13 | ```bash | 13 | ```bash |
| 14 | 14 | ||
| 15 | - export LD_LIBRARY_PATH=/usr/local/python3.10.13/lib:$LD_LIBRARY_PATH | 15 | + export LD_LIBRARY_PATH=/usr/local/python3.11/lib:$LD_LIBRARY_PATH |
| 16 | - export PATH=/usr/local/python3.10.13/bin:$PATH | 16 | + export PATH=/usr/local/python3.11/bin:$PATH |
| 17 | 17 | ||
| 18 | ``` | 18 | ``` |
| 19 | 19 | ||
| 20 | ### 操作步骤 | 20 | ### 操作步骤 |
| 21 | 21 | ||
| 22 | 1. 以安装用户进入MindIE安装目录。 | 22 | 1. 以安装用户进入MindIE安装目录。 |
| 23 | - | 23 | + |
| 24 | ```bash | 24 | ```bash |
| 25 | cd {MindIE安装目录}/latest | 25 | cd {MindIE安装目录}/latest |
| 26 | ``` | 26 | ``` |
| 27 | - | 27 | + |
| 28 | 2. 确认目录文件权限是否如下所示,若存在不匹配项,则参考以下命令修改权限。 | 28 | 2. 确认目录文件权限是否如下所示,若存在不匹配项,则参考以下命令修改权限。 |
| 29 | 29 | ||
| 30 | ```bash | 30 | ```bash |
| @@ -124,7 +124,7 @@ | |||
| 124 | "e2eTimeout" : 600, | 124 | "e2eTimeout" : 600, |
| 125 | "distDPServerEnabled": false | 125 | "distDPServerEnabled": false |
| 126 | }, | 126 | }, |
| 127 | - | 127 | + |
| 128 | "BackendConfig": { | 128 | "BackendConfig": { |
| 129 | "backendName" : "mindieservice_llm_engine", | 129 | "backendName" : "mindieservice_llm_engine", |
| 130 | "modelInstanceNumber" : 1, | 130 | "modelInstanceNumber" : 1, |
| @@ -160,7 +160,7 @@ | |||
| 160 | } | 160 | } |
| 161 | ] | 161 | ] |
| 162 | }, | 162 | }, |
| 163 | - | 163 | + |
| 164 | "ScheduleConfig": | 164 | "ScheduleConfig": |
| 165 | { | 165 | { |
| 166 | "templateType": "Standard", | 166 | "templateType": "Standard", |
| @@ -192,7 +192,7 @@ | |||
| 192 | 192 | ||
| 193 | 4. (可选)若开启了HTTPS认证(即“httpsEnabled” : true时,默认开启)。 | 193 | 4. (可选)若开启了HTTPS认证(即“httpsEnabled” : true时,默认开启)。 |
| 194 | 194 | ||
| 195 | - a. 则使用Service的证书导入脚本导入证书,各证书信息如[表1](#table1)所示。 | 195 | + a. 则使用Service的证书导入脚本导入证书,各证书信息如[表1](#table1)所示。 |
| 196 | 196 | ||
| 197 | > [!NOTE]说明 | 197 | > [!NOTE]说明 |
| 198 | > - HTTPS使用三面隔离时,HTTPS的业务面和管理面不建议使用同一套安全证书,使用同一套安全证书会存在较高的网络安全风险。 | 198 | > - HTTPS使用三面隔离时,HTTPS的业务面和管理面不建议使用同一套安全证书,使用同一套安全证书会存在较高的网络安全风险。 |
| @@ -200,7 +200,7 @@ | |||
| 200 | > - 导入证书时,对于用户导入CA证书的脚本权限要求为600,服务证书的脚本权限要求为600,私钥证书的脚本权限要求为400,吊销列表证书的脚本权限要求为600。 | 200 | > - 导入证书时,对于用户导入CA证书的脚本权限要求为600,服务证书的脚本权限要求为600,私钥证书的脚本权限要求为400,吊销列表证书的脚本权限要求为600。 |
| 201 | > - Service的证书导入脚本请参见《MindIE Motor开发指南》中的"配套工具 > MindIE Service Tools > <a href="https://www.hiascend.com/document/detail/zh/mindie/22RC1/mindieservice/servicedev/mindie_service0312.html">CertTools</a>"章节。 | 201 | > - Service的证书导入脚本请参见《MindIE Motor开发指南》中的"配套工具 > MindIE Service Tools > <a href="https://www.hiascend.com/document/detail/zh/mindie/22RC1/mindieservice/servicedev/mindie_service0312.html">CertTools</a>"章节。 |
| 202 | > - 如果导入证书超时,请参考<a href="https://www.hiascend.com/document/detail/zh/mindie/22RC1/envdeployment/instg/mindie_instg_0088.html">启动haveged服务</a>处理。 | 202 | > - 如果导入证书超时,请参考<a href="https://www.hiascend.com/document/detail/zh/mindie/22RC1/envdeployment/instg/mindie_instg_0088.html">启动haveged服务</a>处理。 |
| 203 | - | 203 | + |
| 204 | 表1 证书文件清单 <a id="table1"></a> | 204 | 表1 证书文件清单 <a id="table1"></a> |
| 205 | 205 | ||
| 206 | | 证书文件 | 默认目标路径 | 说明 | | 206 | | 证书文件 | 默认目标路径 | 说明 | |
| @@ -244,7 +244,7 @@ | |||
| 244 | 244 | ||
| 245 | > [!NOTE]说明 | 245 | > [!NOTE]说明 |
| 246 | > 拉起服务前,建议用户使用MindStudio的预检工具进行配置文件字段校验,辅助校验配置的合法性,详情请参见[链接](https://gitcode.com/Ascend/msit/tree/master/msprechecker)。 | 246 | > 拉起服务前,建议用户使用MindStudio的预检工具进行配置文件字段校验,辅助校验配置的合法性,详情请参见[链接](https://gitcode.com/Ascend/msit/tree/master/msprechecker)。 |
| 247 | - | 247 | + |
| 248 | - (推荐)使用后台进程方式启动服务。 | 248 | - (推荐)使用后台进程方式启动服务。 |
| 249 | 249 | ||
| 250 | ```shell | 250 | ```shell |
| @@ -290,11 +290,11 @@ | |||
| 290 | 290 | ||
| 291 | ### 前提条件 | 291 | ### 前提条件 |
| 292 | 292 | ||
| 293 | -- Server对于Python的环境要求为Python3.10.*x*或者Python3.11*.**x*。此处以Python3.10.13为例,如果环境中的Python3.10.13不是默认版本,需要参考如下方法添加环境变量(Python路径根据实际路径进行修改)。 | 293 | +- Server对于Python的环境要求为Python3.11.x。此处以Python3.11为例,如果环境中的Python3.11不是默认版本,需要参考如下方法添加环境变量(Python路径根据实际路径进行修改)。 |
| 294 | 294 | ||
| 295 | ```linux | 295 | ```linux |
| 296 | - export LD_LIBRARY_PATH=/usr/local/python3.10.13/lib:$LD_LIBRARY_PATH | 296 | + export LD_LIBRARY_PATH=/usr/local/python3.11/lib:$LD_LIBRARY_PATH |
| 297 | - export PATH=/usr/local/python3.10.13/bin:$PATH | 297 | + export PATH=/usr/local/python3.11/bin:$PATH |
| 298 | ``` | 298 | ``` |
| 299 | 299 | ||
| 300 | - 服务器或容器环境上已经安装好NPU驱动和固件、CANN包、PyTorch、ATB Models和MindIE。 | 300 | - 服务器或容器环境上已经安装好NPU驱动和固件、CANN包、PyTorch、ATB Models和MindIE。 |
| @@ -342,7 +342,7 @@ ranktable.json文件权限需要设置为640,详细内容请根据以下样例 | |||
| 342 | "server_id": "Master节点IP地址", | 342 | "server_id": "Master节点IP地址", |
| 343 | "container_ip": "Master节点容器IP地址", | 343 | "container_ip": "Master节点容器IP地址", |
| 344 | "device": [ | 344 | "device": [ |
| 345 | - { "device_id": "0", "device_ip": "10.20.0.2", "rank_id": "0" }, | 345 | + { "device_id": "0", "device_ip": "10.20.0.2", "rank_id": "0" }, |
| 346 | { "device_id": "1", "device_ip": "10.20.0.3", "rank_id": "1" }, | 346 | { "device_id": "1", "device_ip": "10.20.0.3", "rank_id": "1" }, |
| 347 | { "device_id": "2", "device_ip": "10.20.0.4", "rank_id": "2" }, | 347 | { "device_id": "2", "device_ip": "10.20.0.4", "rank_id": "2" }, |
| 348 | { "device_id": "3", "device_ip": "10.20.0.5", "rank_id": "3" }, | 348 | { "device_id": "3", "device_ip": "10.20.0.5", "rank_id": "3" }, |
| @@ -435,7 +435,7 @@ ranktable.json文件权限需要设置为640,详细内容请根据以下样例 | |||
| 435 | chmod 700 mindie-service/security | 435 | chmod 700 mindie-service/security |
| 436 | chmod -R 700 mindie-service/security/* | 436 | chmod -R 700 mindie-service/security/* |
| 437 | ``` | 437 | ``` |
| 438 | - | 438 | + |
| 439 | > [!NOTE]说明 | 439 | > [!NOTE]说明 |
| 440 | > 若文件权限不符合要求将会导致Server启动失败。 | 440 | > 若文件权限不符合要求将会导致Server启动失败。 |
| 441 | 441 | ||
| @@ -483,7 +483,7 @@ ranktable.json文件权限需要设置为640,详细内容请根据以下样例 | |||
| 483 | > - 如果导入证书超时,请参考启动haveged服务处理。 | 483 | > - 如果导入证书超时,请参考启动haveged服务处理。 |
| 484 | 484 | ||
| 485 | 表2 证书文件信息 | 485 | 表2 证书文件信息 |
| 486 | - | 486 | + |
| 487 | | 证书文件 | 默认目标路径 | 说明 | | 487 | | 证书文件 | 默认目标路径 | 说明 | |
| 488 | | ---------------------- | ----------------------------------- | ------------------------------------------------------------ | | 488 | | ---------------------- | ----------------------------------- | ------------------------------------------------------------ | |
| 489 | | 根证书 | mindie-service/security/grpc/ca/ | 开启“interNodeTLSEnabled” : true后必选。 | | 489 | | 根证书 | mindie-service/security/grpc/ca/ | 开启“interNodeTLSEnabled” : true后必选。 | |
| @@ -491,7 +491,7 @@ ranktable.json文件权限需要设置为640,详细内容请根据以下样例 | |||
| 491 | | 服务证书私钥 | mindie-service/security/grpc/keys/ | 支持私钥文件加密场景。开启“interNodeTLSEnabled” : true后必选。 | | 491 | | 服务证书私钥 | mindie-service/security/grpc/keys/ | 支持私钥文件加密场景。开启“interNodeTLSEnabled” : true后必选。 | |
| 492 | | 服务证书吊销列表 | mindie-service/security/grpc/certs/ | 必选。 | | 492 | | 服务证书吊销列表 | mindie-service/security/grpc/certs/ | 必选。 | |
| 493 | | 服务证书私钥的加密口令 | mindie-service/security/pass/ | 必选。 | | 493 | | 服务证书私钥的加密口令 | mindie-service/security/pass/ | 必选。 | |
| 494 | - | 494 | + |
| 495 | b. 在{MindIE安装目录}/latest下执行以下命令修改证书文件的用户权限。 | 495 | b. 在{MindIE安装目录}/latest下执行以下命令修改证书文件的用户权限。 |
| 496 | 496 | ||
| 497 | ```shell | 497 | ```shell |
| @@ -530,7 +530,7 @@ ranktable.json文件权限需要设置为640,详细内容请根据以下样例 | |||
| 530 | chmod 400 mindie-service/security/keys/* | 530 | chmod 400 mindie-service/security/keys/* |
| 531 | chmod 400 mindie-service/security/pass/* | 531 | chmod 400 mindie-service/security/pass/* |
| 532 | ``` | 532 | ``` |
| 533 | - | 533 | + |
| 534 | 7. 使用以下命令配置环境变量。 | 534 | 7. 使用以下命令配置环境变量。 |
| 535 | 535 | ||
| 536 | ```bash | 536 | ```bash |
| @@ -539,7 +539,7 @@ ranktable.json文件权限需要设置为640,详细内容请根据以下样例 | |||
| 539 | source /usr/local/Ascend/atb-models/set_env.sh # ATB Models | 539 | source /usr/local/Ascend/atb-models/set_env.sh # ATB Models |
| 540 | ``` | 540 | ``` |
| 541 | 541 | ||
| 542 | -8. 将模型权重文件(由用户自行准备)拷贝到config.json中模型配置参数“modelWeightPath”指定的目录下。 | 542 | +8. 将模型权重文件(由用户自行准备)拷贝到config.json中模型配置参数“modelWeightPath”指定的目录下。 |
| 543 | 543 | ||
| 544 | ```bash | 544 | ```bash |
| 545 | cp -r {模型权重文件所在路径} /data/atb_testdata/weights/llama1-65b-safetensors | 545 | cp -r {模型权重文件所在路径} /data/atb_testdata/weights/llama1-65b-safetensors |
| @@ -138,8 +138,8 @@ | |||
| 138 | 138 | ||
| 139 | | 包名 (其中`${version}`为实际版本) | | 139 | | 包名 (其中`${version}`为实际版本) | |
| 140 | | -------------------------------------------- | | 140 | | -------------------------------------------- | |
| 141 | - | torch-${version}+cpu-cp310-cp310-linux_x86_64.whl | | 141 | + | torch-${version}+cpu-cp311-cp311-linux_x86_64.whl | |
| 142 | - | torch-${version}-cp310-cp10-linux_aarch64.whl | | 142 | + | torch-${version}-cp311-cp311-linux_aarch64.whl | |
| 143 | | ... | | 143 | | ... | |
| 144 | 144 | ||
| 145 | - 根据所使用的环境中的python版本以及cpu类型,选择对应版本的torch安装包。 | 145 | - 根据所使用的环境中的python版本以及cpu类型,选择对应版本的torch安装包。 |
| @@ -147,8 +147,8 @@ | |||
| 147 | - 安装 | 147 | - 安装 |
| 148 | 148 | ||
| 149 | ```bash | 149 | ```bash |
| 150 | - # 安装torch 2.1.0 的python 3.10 的arm版本为例 | 150 | + # 安装torch 2.9.0 的python 3.11 的arm版本为例 |
| 151 | - pip install torch-2.1.0-cp310-cp310-linux_aarch64.whl | 151 | + pip install torch-2.9.0-cp311-cp311-linux_aarch64.whl |
| 152 | ``` | 152 | ``` |
| 153 | 153 | ||
| 154 | #### 1.3.2 安装torch_npu | 154 | #### 1.3.2 安装torch_npu |
| @@ -158,14 +158,13 @@ | |||
| 158 | | 包名 (其中`${version}`为实际版本) | | 158 | | 包名 (其中`${version}`为实际版本) | |
| 159 | | --------------------------- | | 159 | | --------------------------- | |
| 160 | | pytorch_v${version}_py311.tar.gz | | 160 | | pytorch_v${version}_py311.tar.gz | |
| 161 | -| pytorch_v${version}_py310.tar.gz | | ||
| 162 | | ... | | 161 | | ... | |
| 163 | 162 | ||
| 164 | - 安装选择与torch版本以及python版本一致的npu_torch版本 | 163 | - 安装选择与torch版本以及python版本一致的npu_torch版本 |
| 165 | 164 | ||
| 166 | ```bash | 165 | ```bash |
| 167 | -# 安装 torch_npu,以 torch 2.1.0,python 3.10 的版本为例 | 166 | +# 安装 torch_npu,以 torch 2.9.0,python 3.11 的版本为例 |
| 168 | -tar -zxvf pytorch_v2.1.0_py310.tar.gz | 167 | +tar -zxvf pytorch_v2.9.0_py311.tar.gz |
| 169 | pip install torch*_aarch64.whl | 168 | pip install torch*_aarch64.whl |
| 170 | ``` | 169 | ``` |
| 171 | 170 | ||
| @@ -201,7 +200,7 @@ pip install torch*_aarch64.whl | |||
| 201 | - 场景一:获取MindIE的整包进行安装 | 200 | - 场景一:获取MindIE的整包进行安装 |
| 202 | - 下载编译好的包 | 201 | - 下载编译好的包 |
| 203 | - [下载链接](https://www.hiascend.com/developer/download/community/result?module=ie+pt+cann) | 202 | - [下载链接](https://www.hiascend.com/developer/download/community/result?module=ie+pt+cann) |
| 204 | - | 203 | + |
| 205 | | 包名 (其中`${version}`为实际版本) | | 204 | | 包名 (其中`${version}`为实际版本) | |
| 206 | | -------------------------------------- | | 205 | | -------------------------------------- | |
| 207 | | Ascend-mindie_${version}_linux-x86_64_abi{0}.run | | 206 | | Ascend-mindie_${version}_linux-x86_64_abi{0}.run | |
| @@ -244,8 +243,8 @@ pip install torch*_aarch64.whl | |||
| 244 | 243 | ||
| 245 | | 包名 (其中`${version}`为实际版本) | | 244 | | 包名 (其中`${version}`为实际版本) | |
| 246 | | ------------------------------------------------------------ | | 245 | | ------------------------------------------------------------ | |
| 247 | - | Ascend-mindie-atb-models_${version}_linux-aarch64_py310_torch2.1.0-abi0.tar.gz | | 246 | + | Ascend-mindie-atb-models_${version}_linux-aarch64_py311_torch2.9.0-abi0.tar.gz | |
| 248 | - | Ascend-mindie-atb-models_${version}_linux-aarch64_py310_torch2.1.0-abi1.tar.gz | | 247 | + | Ascend-mindie-atb-models_${version}_linux-aarch64_py311_torch2.9.0-abi1.tar.gz | |
| 249 | | ... | | 248 | | ... | |
| 250 | 249 | ||
| 251 | - 将文件放置在/usr/local/Ascend/路径下 | 250 | - 将文件放置在/usr/local/Ascend/路径下 |
| @@ -322,7 +321,7 @@ source /usr/local/Ascend/atb-models/set_env.sh | |||
| 322 | 321 | ||
| 323 | - 确认脚本中没有覆盖日志相关的环境变量 | 322 | - 确认脚本中没有覆盖日志相关的环境变量 |
| 324 | - 确认服务器内存充足 | 323 | - 确认服务器内存充足 |
| 325 | - | 324 | + |
| 326 | ### 日志开关 | 325 | ### 日志开关 |
| 327 | 326 | ||
| 328 | - 模型仓日志 | 327 | - 模型仓日志 |
| @@ -363,7 +362,7 @@ source /usr/local/Ascend/atb-models/set_env.sh | |||
| 363 | - 打开CANN日志 | 362 | - 打开CANN日志 |
| 364 | 363 | ||
| 365 | ```shell | 364 | ```shell |
| 366 | - export ASCEND_SLOG_PRINT_TO_STDOUT=1 #CANN日志是否输出到控制台 | 365 | + export ASCEND_SLOG_PRINT_TO_STDOUT=1 #CANN日志是否输出到控制台 |
| 367 | export ASCEND_GLOBAL_LOG_LEVEL=1 #CANN日志级别 | 366 | export ASCEND_GLOBAL_LOG_LEVEL=1 #CANN日志级别 |
| 368 | export ASCEND_MODULE_LOG_LEVEL=OP=1 #加速库日志级别 | 367 | export ASCEND_MODULE_LOG_LEVEL=OP=1 #加速库日志级别 |
| 369 | # 0:对应DEBUG级别。 | 368 | # 0:对应DEBUG级别。 |
| @@ -1,6 +1,6 @@ | |||
| 1 | [tool.black] | 1 | [tool.black] |
| 2 | line-length = 120 | 2 | line-length = 120 |
| 3 | -target-version = ['py310'] | 3 | +target-version = ['py311'] |
| 4 | skip-string-normalization = false | 4 | skip-string-normalization = false |
| 5 | include = '\.pyi?$' | 5 | include = '\.pyi?$' |
| 6 | exclude = ''' | 6 | exclude = ''' |
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | include_guard(GLOBAL) | 11 | include_guard(GLOBAL) |
| 12 | 12 | ||
| 13 | -find_package(Python3 3.7 COMPONENTS Interpreter) | 13 | +find_package(Python3 3.10 COMPONENTS Interpreter) |
| 14 | set(HI_PYTHON ${Python3_EXECUTABLE}) | 14 | set(HI_PYTHON ${Python3_EXECUTABLE}) |
| 15 | message(STATUS "HI_PYTHON = ${Python3_EXECUTABLE}") | 15 | message(STATUS "HI_PYTHON = ${Python3_EXECUTABLE}") |
| 16 | 16 | ||
| @@ -57,4 +57,4 @@ message(STATUS "HI_PYTHON_INC_TEMP = ${HI_PYTHON_INC_TEMP}") | |||
| 57 | message(STATUS "HI_PYTHON_LIB_TEMP = ${HI_PYTHON_LIB_TEMP}") | 57 | message(STATUS "HI_PYTHON_LIB_TEMP = ${HI_PYTHON_LIB_TEMP}") |
| 58 | 58 | ||
| 59 | set(HI_PYTHON_INC ${HI_PYTHON_INC_TEMP} CACHE STRING "python include path" FORCE) | 59 | set(HI_PYTHON_INC ${HI_PYTHON_INC_TEMP} CACHE STRING "python include path" FORCE) |
| 60 | -set(HI_PYTHON_LIB ${HI_PYTHON_LIB_TEMP} CACHE STRING "python library libpython3.7m.a" FORCE) | 60 | +set(HI_PYTHON_LIB ${HI_PYTHON_LIB_TEMP} CACHE STRING "python library" FORCE) |
| @@ -34,7 +34,7 @@ mk_custom_path() { | |||
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | py_version_check(){ | 36 | py_version_check(){ |
| 37 | - local pyver_set="3.7 3.8 3.9 3.10 3.11" | 37 | + local pyver_set="3.10 3.11" |
| 38 | local cur_date="$(date +"%Y-%m-%d %H:%M:%S")" | 38 | local cur_date="$(date +"%Y-%m-%d %H:%M:%S")" |
| 39 | which python3 > /dev/null 2>&1 | 39 | which python3 > /dev/null 2>&1 |
| 40 | if [ $? -eq 0 ]; then | 40 | if [ $? -eq 0 ]; then |
| @@ -46,8 +46,8 @@ py_version_check(){ | |||
| 46 | return 0 | 46 | return 0 |
| 47 | fi | 47 | fi |
| 48 | done | 48 | done |
| 49 | - | 49 | + |
| 50 | - echo "[Common] [$cur_date] [WARNING]: $python_version is not in Python3.7.x, Python3.8.x, Python3.9.x, Python3.10.x, Python3.11.x." | 50 | + echo "[Common] [$cur_date] [WARNING]: $python_version is not in Python3.10.x, Python3.11.x." |
| 51 | return 1 | 51 | return 1 |
| 52 | else | 52 | else |
| 53 | echo "[Common] [$cur_date] [WARNING]: $python_version cannot be identified as a standard version, please check manually." | 53 | echo "[Common] [$cur_date] [WARNING]: $python_version cannot be identified as a standard version, please check manually." |
| @@ -58,4 +58,3 @@ py_version_check(){ | |||
| 58 | return 1 | 58 | return 1 |
| 59 | fi | 59 | fi |
| 60 | } | 60 | } |
| 61 | - | ||