# MindIE-OpenCompass **Repository Path**: gengli8/mindie-opencompass ## Basic Information - **Project Name**: MindIE-OpenCompass - **Description**: mindie-opencompass - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-11 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenCompass 适配 MindIE ## 1. 前提条件 ### 1.1 准备安装 MindIE 的Docker镜像 ### 1.2 安装 OpenCompass - 目前可能一些OpenCompass接口仅仅支持Python3.10,如果使用Python3.11等更高版本可能报错。 - 在镜像中可能缺少相关的包,通过下面命令安装,如果已经是 root 用户,则命令中去掉 `sudo`。 ```bash sudo apt update sudo apt install python3-dev pip install cmake # 使用pip安装 pip install torch==2.1.0 torchvision==0.16 ``` - 下载 [OpenCompass](https://github.com/open-compass/opencompass.git) 并安装其依赖。 ```bash git clone https://github.com/open-compass/opencompass.git cd opencompass pip install -e . ``` ### 1.3 测试 MindIE - 可通过运行下面命令,确认环境中模型是正确安装和运行。 ```bash source /usr/local/Ascend/ascend-toolkit/set_env.sh source /usr/local/Ascend/mindie/set_env.sh source /usr/local/Ascend/llm_model/set_env.sh source /usr/local/Ascend/nnal/atb/set_env.sh export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 # 设置可用的NPU卡号 torchrun --nproc_per_node 2 --master_port 12345 -m examples.run_pa --model_path --max_output_length 30 --input_texts "A B C" "a b c d" ``` `nproc_per_node` 代表每个节点(机器)对应的线程数。对 910 卡,每卡一个线程,则 `nproc_per_node` 指定所用的卡数。`` 改为 `.safetensors` 权重所在的目录。 ## 2. 文件修改 ### 2.1 OpenCompass 开发 进入本文档所在目录,运行命令实现拷贝和替换需要修改的文件。 - 复制文件 ```bash compass_dir= cp -i $(pwd)/opencompass/configs/eval_mindie.py "${compass_dir}/config/" cp -i $(pwd)/opencompass/models/mindie.py "${compass_dir}/opencompass/models/" # 注意:此处所给文件仅仅包含需要增加的1行,使用 cat 添加至源文件末尾 cat $(pwd)/opencompass/models/__init__.py "${compass_dir}/opencompass/models/__init__.py" ``` - 注意,此处仅仅为一个demo示例,可以根据需要更改 `eval_mindie.py` 的模型配置、数据集、运行参数等,也可以修改 `mindie.py` 增加其他功能。 ### 2.2 MindIE 开发 进入本文档所在目录,运行命令实现拷贝和替换需要修改的文件。 - 文件备份 ```bash compass_dir= cp -i /usr/local/Ascend/llm_model/examples/run_pa.py /usr/local/Ascend/llm_model/examples/run_pa.py.bak cp -i /usr/local/Ascend/llm_model/examples/server/generate.py /usr/local/Ascend/llm_model/examples/server/generate.py.bak cp -i /usr/local/Ascend/llm_model/examples/server/request.py /usr/local/Ascend/llm_model/examples/server/request.py.bak cp -i /usr/local/Ascend/llm_model/atb_llm/utils/env.py /usr/local/Ascend/llm_model/atb_llm/utils/env.py.bak ``` - 文件替换 为了实现计算困惑度(perplexity,ppl),需要修改脚本中内,此处直接用修改好的文件进行覆盖。 ```bash cp llm_model_examples/run_pa.py /usr/local/Ascend/llm_model/examples/run_pa.py cp llm_model_examples/server/generate.py /usr/local/Ascend/llm_model/examples/server/generate.py cp llm_model_examples/server/request.py /usr/local/Ascend/llm_model/examples/server/request.py cp atb_llm_utils/env.py /usr/local/Ascend/llm_model/atb_llm/utils/env.py ``` - `flash_causal_.py` 修改 为了计算 ppl,需要修改 `flash_causal_.py` 配置文件,取消 `if lm_head_indices is None` 的判断,使得运行中。例如对于 `LLaMA3-8B`,修改 `/usr/local/Ascend/llm_model/atb_llm/models/llama/flash_causal_llama.py` 第 421-423 行。修改如下: 如果运行其他模型,也做类似的修改。 ## 3. 测试验证 ### 3.1 验证 MindIE - 使用和之前类似的命令,验证修改后的代码是否能正确计算 logprob,命令如下: ```python export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 # 设置可用的NPU卡号 torchrun --nproc_per_node 2 --master_port 12345 -m examples.run_pa --model_path --max_output_length 30 --input_texts "A B C" "a b c d" ``` 如果看到打印 logprob 等信息,说明运行成功。 ### 3.2 联合测试 - 进入 OpenCompass 仓库目录,运行 MindIE。 ```python cd opencompass export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 # 设置可用的NPU卡号 # 运行 mindie python run.py configs/eval_mindie.py ``` - 可以修改 `configs/eval_mindie.py` 中 `datasets` 选择不同的数据集。 - 对 910 机器,opencompass 中 `configs/eval_mindie.py` 的配置中有 `world_size == num_npus == num_procs`。 - 如果运行时间较久,可以根据打屏的日志路径使用 `cat` 或 `tail` 命令查看日志内容。 - 对于 `ceval` 数据集,可以手动下载至 `opencompass/data/ceval/formal_ceval/` 目录下,改目录下有 `dev/`、`test/`和`val/` 三个目录,每个目录内有若干 `.csv` 文件。