File size: 2,805 Bytes
60b4efc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
# 快速测试单个checkpoint - 验证测试流程是否正确

export CUDA_DEVICE_MAX_CONNECTIONS=1

# 设置NPU驱动库路径
export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64/stub:$LD_LIBRARY_PATH

# 设置Python路径
export PYTHONPATH=/mnt/models/CODE/MindSpeed-LLM-v2.3.0:$PYTHONPATH

# TOKENIZER_PATH="/mnt/data1/models/Qwen3-0.6B"
TOKENIZER_PATH="/mnt/models/wh/data/minimind-master/model"
# CHECKPOINT应该指向模型目录,而不是iter_*子目录
# 系统会根据latest_checkpointed_iteration.txt自动加载最新的
CHECKPOINT="${1:-/mnt/models/wh/models/qwen_200m_0615}"
TASK="${2:-batch_test}"

echo "=========================================="
echo "快速测试脚本"
echo "=========================================="
echo "模型目录: ${CHECKPOINT}"
echo "测试任务: ${TASK}"
echo "=========================================="

# 显示最新的checkpoint
if [ -f "${CHECKPOINT}/latest_checkpointed_iteration.txt" ]; then
    ITER=$(cat ${CHECKPOINT}/latest_checkpointed_iteration.txt)
    echo "最新checkpoint: iter_${ITER}"
fi

MASTER_ADDR=localhost
MASTER_PORT=6000
NPUS_PER_NODE=1
SEQ_LENGTH=4096

DISTRIBUTED_ARGS="
    --nproc_per_node $NPUS_PER_NODE \
    --nnodes 1 \
    --node_rank 0 \
    --master_addr $MASTER_ADDR \
    --master_port $MASTER_PORT
"

LOG_FILE="/mnt/models/CODE/MindSpeed-LLM-v2.3.0/logs/test_$(basename ${CHECKPOINT})_${TASK}.log"

cd /mnt/models/wh/code/MindSpeed-LLM-v2.3.0/examples/mcore/qwen3/

torchrun $DISTRIBUTED_ARGS inference_batch_test.py \
    --use-mcore-models \
    --tensor-model-parallel-size 1 \
    --pipeline-model-parallel-size 1 \
    --expert-model-parallel-size 1 \
    --load ${CHECKPOINT} \
    --spec mindspeed_llm.tasks.models.spec.qwen3_spec layer_spec \
    --kv-channels 64 \
    --qk-layernorm \
    --num-layers 28 \
    --hidden-size 768 \
    --use-rotary-position-embeddings \
    --num-attention-heads 12 \
    --ffn-hidden-size 1536 \
    --max-position-embeddings 4096 \
    --seq-length ${SEQ_LENGTH} \
    --make-vocab-size-divisible-by 1 \
    --padded-vocab-size 6400 \
    --rotary-base 1000000 \
    --micro-batch-size 1 \
    --disable-bias-linear \
    --swiglu \
    --tokenizer-type PretrainedFromHF \
    --tokenizer-name-or-path ${TOKENIZER_PATH} \
    --normalization RMSNorm \
    --position-embedding-type rope \
    --norm-epsilon 1e-6 \
    --hidden-dropout 0 \
    --attention-dropout 0 \
    --max-new-tokens 256 \
    --no-gradient-accumulation-fusion \
    --attention-softmax-in-fp32 \
    --no-masked-softmax-fusion \
    --group-query-attention \
    --num-query-groups 4 \
    --seed 42 \
    --bf16 \
    --task ${TASK} \
    2>&1 | tee ${LOG_FILE}

echo ""
echo "日志保存至: ${LOG_FILE}"