项目简介
随着大型代码模型的能力逐渐被挖掘出来,aiXcoder 一直在思考如何让这些模型在实际开发场景中更加有益。为此,我们开源了 aiXcoder 7B Base,它经过了 1.2T Unique Token 的广泛训练,模型的预训练任务以及上下文信息都是针对真实世界的代码生成上下文而设计的。
在所有参数大小相似的模型中,aiXcoder 7B Base 是代码完成场景中最有效的模型,在多语言 nl2code 基准测试中的平均性能也超过了 codellama 34B 和 StarCoder2 15B 等主流模型。
在我们不断探索应用大型代码模型的过程中,aiXcoder 7B Base 的发布代表了一个重要的里程碑。当前版本的aiXcoder 7B Base是一个基础模型,专注于提高代码完成和代码生成任务的效率和准确性,旨在为开发者在这些场景下提供强大的支持。需要注意的是,此版本尚未经过特定的指令调整,这意味着它可能尚未为专门的高级任务(如测试用例生成和代码调试)提供最佳性能。
但是,我们已经计划进一步开发 aiXcoder 模型系列。在不久的将来,我们的目标是发布该模型的新版本,这些版本经过精心指导,适用于更广泛的编程任务,包括但不限于测试用例生成和代码调试。通过这些指令调整模型,我们希望为开发人员提供更全面、更深入的编程支持,帮助他们在软件开发的每个阶段最大限度地提高效率。
aiXcoder 7B 在 nl2code 基准测试中超越了主流型号。aiXcoder-7B 是 aiXcoder-7B-Base 的增强功能,对十万个数据条目进行了微调,类似于一个纪元的 Evol-instruct。
快速入门
环境要求
选项 1:构建环境
若要运行模型推理代码,需要以下环境设置:
请确保使用以下命令安装所有依赖项:
conda create -n aixcoder-7b python=3.11
conda activate aixcoder-7b
git clone [email protected]: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 [email protected]:Dao-AILab/flash-attention.git
cd flash-attention
MAX_JOBS=8 python setup.py install
选项 2:Docker
对于一致且隔离的环境,我们建议使用 Docker 运行模型推理代码。下面介绍了如何为我们的模型设置和使用 Docker:
-
安装 Docker:如果尚未安装,请在计算机上安装 Docker。
-
拉取 Docker 镜像:从 Docker Hub 拉取 Docker 镜像。
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 [email protected]:aixcoder-plugin/aiXcoder-7b.git
cd aiXcoder-7b
此命令从 pytorch 映像启动名为 aix_instance 的容器。您可以与此容器中的模型进行交互。
为了实现更快的推理速度,尤其是对于大型模型,我们建议安装 flash attention .
git clone [email protected]:Dao-AILab/flash-attention.git
cd flash-attention
MAX_JOBS=8 python setup.py install
-
模型推理:在 Docker 容器中,您可以运行模型推理代码,如推理示例部分所述。
使用 Docker 提供了一个干净、可控的环境,可最大程度地减少与软件版本和依赖项相关的问题。