🚀 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},
}