aiXcoder-7B 代码大语言模型
🏠 官网|🛠 VS Code插件|🛠 Jetbrains插件|Github项目
欢迎访问aiXcoder-7B代码大语言模型官方仓库。本模型旨在理解并生成多种编程语言的代码,在代码补全、理解、生成等编程语言相关任务中提供最先进的性能表现。
目录
- 模型介绍
- 快速开始
- 许可协议
- 致谢
模型介绍
随着代码大模型能力的逐步发掘,aiXcoder始终在思考如何让这些模型在实际开发场景中发挥更大价值。为此,我们开源了经过1.2T独特代码数据训练的aiXcoder 7B Base模型,其预训练任务及上下文信息均针对真实代码生成场景进行了独特设计。
在代码补全场景中,aiXcoder 7B Base是同参数量级模型中最具效果的模型,同时在多语言nl2code基准测试的平均表现上超越了codellama 34B和StarCoder2 15B等主流大模型。
在我们持续探索代码大模型应用的过程中,aiXcoder 7B Base的发布是一个重要里程碑。当前版本的aiXcoder 7B Base是一个基础模型,主要聚焦于提升代码补全和代码生成任务的效率与准确性,旨在为开发者在这类场景中提供有力支持。需要注意的是,该版本尚未经过专门的指令微调,这意味着对于测试用例生成、代码调试等特定高阶任务,其表现可能尚未达到最优。
不过,我们已经制定了aiXcoder模型系列的后续发展计划。在不久的将来,我们计划发布经过精心指令微调的新版本模型,这些模型将适用于更广泛的编程任务,包括但不限于测试用例生成和代码调试。通过这些指令微调模型,我们期待能为开发者提供更全面、更深入的编程支持,帮助他们在软件开发的各个环节实现效率最大化。
快速开始
环境要求
方案一:构建环境
运行模型推理代码需要以下环境配置:
- Python 3.8或更高版本
- PyTorch 2.1.0或更高版本
- sentencepiece 0.2.0或更高版本
- transformers 4.34.1或更高版本(如使用transformers库运行推理)
请使用以下命令安装所有依赖项:
conda create -n aixcoder-7b python=3.11
conda activate aixcoder-7b
git clone git@github.com:aixcoder-plugin/aiXcoder-7b.git
cd aiXcoder-7b
pip install -r requirements.txt
requirements.txt
列出了所有必需的库及其版本。
为实现更快的推理速度,特别是对于大型模型,我们建议安装flash attention
。Flash attention
是一种优化的注意力机制,可在不牺牲准确性的情况下显著减少基于transformer模型的计算时间。
在继续之前,请确保您的环境满足CUDA要求,因为flash attention
利用了GPU加速。按照以下步骤安装flash attention
:
git clone git@github.com:Dao-AILab/flash-attention.git
cd flash-attention
MAX_JOBS=8 python setup.py install
方案二:Docker
为获得一致且隔离的环境,我们建议使用Docker运行模型推理代码。以下是设置和使用Docker的方法:
-
安装Docker:如果尚未安装,请在您的机器上安装Docker。
-
拉取Docker镜像:从Docker Hub拉取镜像。
docker pull pytorch/pytorch:2.1.0-cuda11.8-cudnn8-devel
- 运行容器:拉取镜像后,您可以在Docker容器内运行模型。
docker run --gpus all -it -v /dev/shm:/dev/shm --name aix_instance pytorch/pytorch:2.1.0-cuda11.8-cudnn8-devel /bin/bash
pip install sentencepiece
git clone git@github.com:aixcoder-plugin/aiXcoder-7b.git
cd aiXcoder-7b
此命令从pytorch镜像启动一个名为aix_instance的容器。您可以在容器内与模型交互。
为实现更快的推理速度,特别是对于大型模型,我们建议安装flash attention
。
git clone git@github.com:Dao-AILab/flash-attention.git
cd flash-attention
MAX_JOBS=8 python setup.py install
- 模型推理:在Docker容器内,您可以按照"推理示例"部分的描述运行模型推理代码。
使用Docker提供了一个干净、受控的环境,可最大限度减少软件版本和依赖项相关的问题。
模型权重
您可以从以下链接下载模型权重:
推理示例
命令行执行
快速入门,您可以直接从命令行运行模型推理:
torchrun --nproc_per_node 1 sess_megatron.py --model_dir "模型权重目录路径"
将"模型权重目录路径"替换为您下载的模型权重的实际路径。
或使用huggingface的transformers运行推理:
python sess_huggingface.py
Python脚本执行
或者,您可以在Python脚本中以编程方式调用模型。这种方法为将模型集成到您的应用程序或工作流程中提供了更大的灵活性。以下是一个简单的示例:
from sess_megatron import TestInference
infer = TestInference()
res = infer.run_infer(
code_string="""# 快速排序算法""",
later_code="\n",
file_path="test.py",
max_new_tokens=256,
)
print(res)
"""输出:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
less = [i for i in arr[1:] if i <= pivot]
greater = [i for i in arr[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
# 测试
arr = [3, 2, 1, 4, 5]
print(quick_sort(arr)) # [1, 2, 3, 4, 5]
"""
import torch
import sys
from hf_mini.utils import input_wrapper
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained("aiXcoder/aixcoder-7b-base")
model = AutoModelForCausalLM.from_pretrained("aiXcoder/aixcoder-7b-base", torch_dtype=torch.bfloat16)
text = input_wrapper(
code_string="# 快速排序算法",
later_code="\n# 测试\narr = [3, 2, 1, 4, 5]\nprint(quick_sort(arr)) # [1, 2, 3, 4, 5]",
path="test.py"
)
if len(text) == 0:
sys.exit()
inputs = tokenizer(text, return_tensors="pt", return_token_type_ids=False)
inputs = inputs.to(device)
model.to(device)
outputs = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=False))