🚀 Nova:用于汇编代码的生成式语言模型
本项目提出的 Nova 模型,借助分层注意力机制和对比学习目标,有效应对汇编代码的独特挑战,在二进制代码反编译和相似度检测等任务中展现出卓越性能,为汇编代码处理提供了强大的工具。
🚀 快速开始
环境配置
可以通过以下两种方式配置运行环境:
使用 conda 环境
conda create -n nova python=3.10
conda activate nova
pip install -r requirements.txt
使用 Docker 镜像
docker pull jiang719/nova
docker run --gpus all -it jiang719/nova
✨ 主要特性
应对汇编代码挑战
二进制代码分析是安全领域关键任务的基础,但汇编代码存在信息密度低和优化多样的独特挑战,现有大语言模型难以直接应用。本项目提出分层注意力机制,构建注意力摘要以更有效地捕捉语义,并设计对比学习目标,训练大语言模型学习汇编优化。
性能卓越
基于这些技术开发的 Nova 模型,在二进制代码反编译任务中,Pass@1 和 Pass@10 比现有技术高出 14.84 - 21.58%;在最新的二进制代码相似度检测技术中,Recall@1 高出 6.17%,在汇编生成和理解任务中均展现出强大能力。
📚 详细文档
Nova 模型介绍
Nova 从 DeepSeek - Coder 检查点开始,以语言建模为目标进行预训练,使用来自 AnghaBench 的反汇编代码和从 The - Stack 编译的 C/C++ 程序。
本仓库为 Nova 的基础模型,参数规模为 67 亿。该系列的其他模型如下:
- [Nova - 1.3b](https://huggingface.co/lt - asset/nova - 1.3b):参数规模为 13 亿的二进制代码基础模型。
- [Nova - 1.3b - bcr](https://huggingface.co/lt - asset/nova - 1.3b - bcr):针对二进制代码恢复进行进一步指令调优的 Nova - 1.3b 模型。
- [Nova - 6.7b - bcr](https://huggingface.co/lt - asset/nova - 6.7b - bcr):针对二进制代码恢复进行进一步指令调优的 Nova - 6.7b 模型。
📄 许可证
本项目采用 BSD 3 - 条款清晰许可证(BSD 3 - Clause Clear License)。
📚 引用
如果您在研究中使用了本项目,请引用以下论文:
@misc{jiang2024nova,
title={Nova: Generative Language Models for Assembly Code with Hierarchical Attention and Contrastive Learning},
author={Nan Jiang and Chengxiao Wang and Kevin Liu and Xiangzhe Xu and Lin Tan and Xiangyu Zhang},
year={2024},
eprint={2311.13721},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2311.13721},
}