这是一个用于计算和分析不同神经网络模型表征相似度的工具集。该项目实现了多种相似度度量方法,可以用来比较不同模型的隐藏层表征之间的关系。
该项目主要用于计算不同模型的隐藏层表征之间的相似度,包含以下几个主要模块:
- 幅度差异度量 (Magnitude Difference)
- 同心度差异度量 (Concentricity Difference)
- 均匀度差异度量 (Uniformity Difference)
- IMD分数计算 (IMD Score)
- Jaccard相似度
- 二阶余弦相似度
- 排序相似度
- 联合排序Jaccard相似度
- RSM范数差异
- 表征相似度分析 (RSA)
- 中心核对齐 (CKA)
- 距离相关性
- 特征空间重叠分数
- GULP分析
- 正交Procrustes中心化归一化
- 正交角度形状度量
- 线性回归
- 对齐余弦相似度
- 软相关匹配
- 硬相关匹配
- 置换Procrustes
- Procrustes大小和形状距离
- 典型相关分析 (CCA)
- SVCCA
- PWCCA
(简便使用、自动化)
- 在配置文件中设置相关参数:
- 任务类型 (task)
- 模型路径
- 语言设置 (lang)
- 需要选择的层数 (num_layers_to_select)
// 在当前文件夹新建config文件夹,配置
// homogeneous config
{
"task": ["textGen_humaneval", "textGen_MBPP", "codeSummary_CSearchNet", "line_completion"],
"lang": "python",
"prefix_model_path_idx1": ["/newdisk/public/wws/model_dir/Qwen2.5-Coder/Qwen2.5-Coder-1.5B"],
"prefix_model_path_idx2": "/newdisk/public/wws/model_dir/Qwen2.5-Coder/Qwen2.5-Coder-1.5B-Instruct"
},
// non-homogeneous config
{
"task": ["textGen_humaneval", "textGen_MBPP", "codeSummary_CSearchNet", "line_completion"],
"lang": "python",
"num_layers_to_select": 10, // 对于 non-homogeneous 非同源模型需要此参数
"prefix_model_path_idx1": ["/newdisk/public/wws/model_dir/codellama/codeLlama-7b-Python"],
"prefix_model_path_idx2": "/newdisk/public/wws/model_dir/MagiCoder/magicoder-CL-7b"
},- 运行主程序:
python CAL-Integration-non-homogeneous_all_pt.py- 支持多种相似度度量方法
- 可以灵活配置比较的模型层数
- 结果自动保存为Parquet、Excel等格式
- 使用装饰器实现运行时间统计
- 支持代码、NLP、多模态、三大模型任务
- 代码任务:humaneval、mbpp、CodeCompletion、CodesearchNet、CodeRefinement
- NLP任务:SST2、MRPC、MNLI
- 多模态任务:VQAv2、Flickr30k、FHM
- torch
- numpy
- json5
- tqdm
- rich
- repsim