EnnengYang / AdaMerging

AdaMerging: Adaptive Model Merging for Multi-Task Learning. ICLR, 2024.
https://openreview.net/pdf?id=nZP6NgD3QY
MIT License
40 stars 2 forks source link

About merging cofficient #2

Closed sasgkhgw closed 5 months ago

sasgkhgw commented 5 months ago

首先,感谢您分享了这个令人兴奋的项目和研究成果。我对AdaMerging方法的实现特别感兴趣,特别是关于如何确定不同任务权重(ralpha)的部分。在阅读代码和论文后,我对这个过程有一些疑问,希望能得到您的帮助。 例如,在代码中,任务向量权重被直接指定为:ralpha = [[1.0000, 0.2202, 0.1413, 0.2826, 0.3284, 0.2841, 0.4003, 0.1978, 0.1692]] 这些权重值是基于某种优化过程(训练)确定的,还是通过实验调整得到的最佳值? 如果这些权重是通过自动化方法得到的,能否分享一下具体的过程和步骤?这对于理解模型的整体性能提升机制非常重要。 是否有推荐的方法或实践,用于确定在其他数据集或任务上合并模型时的类似权重? 再次感谢您的工作和分享。

EnnengYang commented 5 months ago

您好,

首先,AdaMerging的目标就是利用无标签的测试数据来自动学习模型融合权重。所以任务向量权重ralpha = [[1.0000, 0.2202, 0.1413, 0.2826, 0.3284, 0.2841, 0.4003, 0.1978, 0.1692]] 是训练后的合并系数,这个系数的初始值是ralpha = [[1.0000, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3]]。

然后,该系数的学习过程就是main_task_wise_adamerging.py这个代码,学习过程的系数变化在日志log_20230921_202228_Task_wise_AdaMerging.txt中。

最后,AdaMerging可以轻松的扩展到其他数据集或任务上合并模型时的类似权重训练,只需要将main_task_wise_adamerging.py适配到你的任务/数据上即可。当然,Layer-wise版本的AdaMerging性能会更好(main_layer_wise_adamerging.py),它为每个任务向量的每个层学习一个合并系数。

希望能解决您的疑问。

祝一切顺利