meta-llamacodellama:面向代码场景的开源大语言模型

0 阅读3分钟

meta-llama/codellama:面向代码场景的开源大语言模型

Meta开源的代码大模型Code Llama,累计获得16330个Star: 正文顶部截图 README区域截图 Code Llama基于Llama 2微调得到,是开源代码大模型中的性能领先方案。支持代码补全、上下文填充、指令跟随等功能,可适配多种编程场景。项目提供三类模型版本,分别是基础版Code Llama、Python优化版Code Llama - Python、指令跟随版Code Llama - Instruct,每个版本包含7B、13B、34B、70B四种参数规格。 所有模型训练时使用16k token长度的序列,实际推理可支持最长100k token的输入。其中7B和13B规格的基础模型与指令模型,额外支持根据周围上下文填充中间代码的功能。 项目仓库包含模型加载与推理的最小实现示例,开发者可基于示例快速上手使用。

下载方式

需要先访问Meta官网提交申请,接受许可协议。申请通过后,用户会收到含签名链接的邮件。运行项目提供的download.sh脚本,输入邮件中的链接即可开始下载。 下载前需确认本地已安装wget和md5sum工具。链接有效期为24小时,超过有效期或下载次数超限后,需要重新提交申请获取新链接。 不同参数规格的模型占用存储空间不同,7B版本约12.55GB,13B版本约24GB,34B版本约63GB,70B版本约131GB。

环境配置

在包含PyTorch和CUDA的conda环境中,克隆项目仓库,在根目录执行以下命令完成安装:

pip install -e .

推理使用

不同参数规格的模型需要的并行数不同,7B版本需要1个进程,13B版本需要2个进程,34B版本需要4个进程,70B版本需要8个进程。 推理时缓存空间根据max_seq_len和max_batch_size参数预分配,开发者可根据自身硬件配置调整对应参数值。 基础版模型和Python优化版模型未经过指令微调,使用时需要构造合适的提示词,引导模型输出预期的代码内容。项目提供example_completion.py作为使用示例,7B版本的运行命令如下:

torchrun --nproc_per_node 1 example_completion.py \
    --ckpt_dir CodeLlama-7b/ \
    --tokenizer_path CodeLlama-7b/tokenizer.model \
    --max_seq_len 128 --max_batch_size 4

支持上下文填充功能的模型,可参考example_infilling.py示例使用,7B版本的运行命令如下:

torchrun --nproc_per_node 1 example_infilling.py \
    --ckpt_dir CodeLlama-7b/ \
    --tokenizer_path CodeLlama-7b/tokenizer.model \
    --max_seq_len 192 --max_batch_size 4

指令微调版模型需要使用指定的prompt格式,项目提供chat_completion()方法自动完成格式处理。example_instructions.py为指令模型的使用示例,7B版本的运行命令如下:

torchrun --nproc_per_node 1 example_instructions.py \
    --ckpt_dir CodeLlama-7b-Instruct/ \
    --tokenizer_path CodeLlama-7b-Instruct/tokenizer.model \
    --max_seq_len 512 --max_batch_size 4

开源地址:github.com/meta-llama/…