Running the Installation Command
Before You Start
- Before using MindCluster Ascend Deployer for installation, ensure that the drive storage space of the MindCluster Ascend Deployer executor is greater than 16 GB.
- Some components have runtime dependencies. For example, PyTorch requires the Toolkit or NNAE to provide runtime dependencies. In Atlas A2 training products, PyTorch requires kernels. TensorFlow requires Toolkit or NNAE to provide runtime dependencies when using NPU resources. MindSpore requires NNAE or Toolkit for installation and kernels to provide runtime dependencies.
- If Ansible has been installed in the environment, ensure that its version is later than or equal to the default version. You can view the default version in the downloader/ansible_reqs.json file.
Prerequisites
- You have downloaded required software packages. See Downloading Ascend Software.
- The installation user is the root user and has the execute permission on the install.sh script.
- Prepare a running user in the installation environment. When MindCluster Ascend Deployer runs the installation command, the default running user HwHiAiUser is automatically created. If you need to create another user, see Manually Creating a Running User.
Procedure
- Log in to the target device as the installation user of the software package.
- Run the installation command.
- Run the ascend-deployer command in any directory on the local host when MindCluster Ascend Deployer is installed using pip.
ascend-deployer --install=<package_name_1>,<package_name_2>
- Run the bash install.sh command in the ascend_deployer directory when MindCluster Ascend Deployer is installed by decompressing the downloaded ZIP package.
bash install.sh --install=<package_name_1>,<package_name_2>
See Table 1 for the example.
For details about the value range of <package_name_x>, see Supported Installation and Upgrade Scenarios or run the bash install.sh --help command to view all available parameters.
Install the packages in the following sequence: sys_pkg > Python > NPU > CANN, MindIE, and MindCluster (performance test, fault diagnosis, and cluster scheduling components) > deepseek_pd and deepseek_cntr. During the installation, the version of the CANN package in the resources directory must match that of the NPU.
When you run the installation command, MindCluster Ascend Deployer checks whether the environment meets the installation requirements by default. If any error information is displayed, determine whether to add the --skip_check option to skip the check and continue the installation. Example:bash install.sh --install=<package_name_1>,<package_name_2> --skip_check
Table 1 Installation commands Installation Type
Installation Command
OS initialization
(sys_pkg installation)
bash install.sh --install=sys_pkg # When running the --install command, do not install sys_pkg repeatedly.
OS initialization
(Python installation)
bash install.sh --install=python
NPU firmware and driver
(either of the listed commands)
bash install.sh --install=npu
bash install.sh --install=driver,firmware
CANN
(training, inference, and development and debugging)
bash install.sh --install=kernels,toolkit
CANN
(edge inference)
bash install.sh --install=nnrt,kernels
CANN
(training and inference)
bash install.sh --install=nnae,kernels
MindCluster cluster scheduling
bash install.sh --install=ascend-device-plugin,ascend-docker-runtime,noded,npu-exporter,volcano,ascend-operator,clusterd,resilience-controller
MindCluster cluster scheduling (MindIO)
bash install.sh --install=mindio
MindCluster performance test
bash install.sh --install=toolbox
MindCluster fault diagnosis
bash install.sh --install=fault-diag
MindIE inference engine
bash install.sh --install=mindie_image
DeepSeek P/D instance deployment
bash install.sh --install=deepseek_pd
DeepSeek deployment in a Docker environment
bash install.sh --install=deepseek_cntr
Note
- For details about the restrictions on installing the preceding software packages, see Table 1.
- For details about all available values of <package_name_x>, see Software Packages That Can Be Installed and Upgraded.
- Run the ascend-deployer command in any directory on the local host when MindCluster Ascend Deployer is installed using pip.
- (Optional) If CANN and ToolBox need to be installed, sign Huawei Enterprise End User License Agreement (EULA) to proceed to the installation process and enter y or Y to accept the agreement (entering any other character means a refusal). After you accept the agreement, the installation automatically starts.
If the current language environment does not meet the requirements, run the following command to configure the default language environment:
- Chinese
export LANG=zh_CN.UTF-8
- English
export LANG=en_US.UTF-8
- Chinese
- (Optional) If the driver and firmware need to be installed, restart the system immediately after the installation is complete.To restart the single-server system, run the reboot command. For batch installation, run the following command to restart all devices.
- If MindCluster Ascend Deployer is deployed on a target server for software installation, you need to mask the IP address of the local server in inventory_file, as shown in the following information in bold. Otherwise, during execution of step 4.b, the local server may have been restarted before the restart command is sent to other servers. As a result, other servers are not restarted. If MindCluster Ascend Deployer is deployed on a general-purpose server, skip this step.
#IP address of the local server ansible_ssh_user="root" # Mask the IP address of the local server.
- Restart other servers.
ansible -i inventory_file all -m shell -a 'reboot'
- After other servers are restarted, unmask the local IP address in inventory_file and run the reboot command to restart the local server.
- If MindCluster Ascend Deployer is deployed on a target server for software installation, you need to mask the IP address of the local server in inventory_file, as shown in the following information in bold. Otherwise, during execution of step 4.b, the local server may have been restarted before the restart command is sent to other servers. As a result, other servers are not restarted. If MindCluster Ascend Deployer is deployed on a general-purpose server, skip this step.
- (Optional) When deploying DeepSeek P/D instances, place the MindIE deployment script in the following path on the [master][0] node:
/root/.ascend_deployer/mindie_pd/kubernetes_deploy_scripts/
- To restart DeepSeek P/D instances, go to the MindIE deployment script path and run the following command:
# For the Atlas 800I A2 inference products, the command is: source /usr/local/ascendrc && python3 deploy_ac_job.py # For the Atlas 800I A3 SuperPoD Server, the command is: source /usr/local/ascendrc && python3 deploy_ac_job.py --user_config_path user_config_base_A3.json
- Run the following command to check the status of the DeepSeek P/D instances:
kubectl get pod -A -owide | grep mindie # Replace mindie with job_id entered when the service is started.
If the status is Running, the pod nodes corresponding to the P/D instances have been started, as shown in the following figure.

- Perform a question answering test to check whether the P/D instances are normal:
# Replace the IP address of the master node with the actual IP address. curl http://Master node IP address:31015/v1/chat/completions -X POST -d'{"model": "ds_r1","messages": [{"role": "user","content": "You are a helpful assistant."}],"stream": false,"presence_penalty": 1.03,"frequency_penalty": 1.0,"repetition_penalty": 1.0,"temperature": 0.5,"top_p": 0.95,"top_k": 1,"seed": 1,"max_tokens": 500}'Wait for about 1 minute. If information similar to the following content in bold is displayed (the content may vary), the instance status is normal.
{"id":"******","object":"chat.completion","created":1747295960,"model":"dsv3_w8a8","choices":[{"index":0,"message":{"role":"assistant","tool_calls":null,"content":"<think>\nOkay, the user wants me to act as a helpful assistant. Let me start by understanding what that entails. Being helpful means providing accurate, clear, and concise information. I need to make sure I address their queries effectively without unnecessary fluff.\n\nFirst, I should consider different types of questions they might ask—factual, how-to, troubleshooting, etc. For each type, my approach might vary. Factual questions require quick answers with reliable sources. How-to guides need step-by-step instructions. Troubleshooting might involve asking follow-up questions to diagnose issues.\n\nI also need to be cautious about potential misunderstandings. If a question is ambiguous or unclear, it's better to ask for clarification rather than assume. That way, I can provide the most relevant assistance possible.\n\nAnother aspect is maintaining a friendly and approachable tone. Even though the user hasn't specified this explicitly since they mentioned \"helpful,\" which usually implies a positive interaction style.\n\nAdditionally, I should stay updated on current information if needed but remember my knowledge cutoff is October 2023. So if there's a time-sensitive question post that date, I should inform them about the limitation.\n\nLastly, ensuring responses are well-structured. Using bullet points or numbered lists when appropriate can enhance readability. Avoiding technical jargon unless necessary, and explaining terms if used.\n</think>\n\nHello! I'm here to help you with any questions, tasks, or information you need—just let me know how I can assist you today! Whether it's explaining concepts solving problems, offering advice, or brainstorming ideas, feel free to ask. ... - To delete DeepSeek P/D instances, go to the MindIE deployment script path and run the following command:
bash delete.sh mindie # Replace mindie with job_id entered when the service is started.
- To restart DeepSeek P/D instances, go to the MindIE deployment script path and run the following command:
- (Optional) When deploying DeepSeek in a Docker environment, place the MindIE Server configuration file in the following path:
/usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
- Start mindieservice_daemon, access the container, and run the following command:
# Source the environment variables in /usr/local/Ascend/mindie/latest/mindie-service/scripts/. # After all environment variables are sourced, run the following command to start mindieservice_daemon. The daemon needs to be started with core binding. For the 800I A2 server with typical configurations, you can use the lscpu command to verify the CPU core range of the first NUMA node (commonly 0 to 31). taskset -c 0-31 /usr/local/Ascend/mindie/latest/mindie-service/bin/mindieservice_daemon
- If "Daemon start success!" is displayed in the command output, the service is started successfully.
- Perform a question answering test to check whether the inference service is normal.
In a two-node system, replace 127.0.0.1 in the command with the IP address of the MindIE master node.
curl 127.0.0.1:1025 -X POST -d '{"inputs":"You are a helpful assistant.","parameters":{"max_new_tokens":250, "temperature":0.3, "top_p":0.3, "top_k":5, "do_sample":true, "repetition_penalty":1.05, "seed":128}}'Wait for about 1 minute. If information similar to the following content in bold is displayed (the content may vary), the service status is normal.
{"id":"******","object":"chat.completion","created":1747295960,"model":"dsv3_w8a8","choices":[{"index":0,"message":{"role":"assistant","tool_calls":null,"content":"<think>\nOkay, the user wants me to act as a helpful assistant. Let me start by understanding what that entails. Being helpful means providing accurate, clear, and concise information. I need to make sure I address their queries effectively without unnecessary fluff.\n\nFirst, I should consider different types of questions they might ask—factual, how-to, troubleshooting, etc. For each type, my approach might vary. Factual questions require quick answers with reliable sources. How-to guides need step-by-step instructions. Troubleshooting might involve asking follow-up questions to diagnose issues.\n\nI also need to be cautious about potential misunderstandings. If a question is ambiguous or unclear, it's better to ask for clarification rather than assume. That way, I can provide the most relevant assistance possible.\n\nAnother aspect is maintaining a friendly and approachable tone. Even though the user hasn't specified this explicitly since they mentioned \"helpful,\" which usually implies a positive interaction style.\n\nAdditionally, I should stay updated on current information if needed but remember my knowledge cutoff is October 2023. So if there's a time-sensitive question post that date, I should inform them about the limitation.\n\nLastly, ensuring responses are well-structured. Using bullet points or numbered lists when appropriate can enhance readability. Avoiding technical jargon unless necessary, and explaining terms if used.\n</think>\n\nHello! I'm here to help you with any questions, tasks, or information you need—just let me know how I can assist you today! Whether it's explaining concepts solving problems, offering advice, or brainstorming ideas, feel free to ask. ... - To stop mindieservice_daemon, run the following commands:
pkill -9 -f "mindieservice_daemon" pkill -9 -f mindie_llm_back
- Start mindieservice_daemon, access the container, and run the following command:
Checking the Installation Report and Status Information
After the installation is complete, the report directory is generated in the current path, containing the report.csv and report.json files. The report files record the IP address and status of each server.
The installation progress information file deployer_progress_output.json is generated in ~/.ascend_deployer/deploy_info. You can view the installation process and status information in the file.
