LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略

news2024/12/28 3:24:44

LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略

导读:2023年08月25日(北京时间),Meta发布了Code Llama,一个可以使用文本提示生成代码的大型语言模型(LLM)。Code Llama是最先进的公开可用的LLM代码任务,并有潜力使工作流程更快,更有效的为当前的开发人员和降低进入门槛的人正在学习代码。Code Llama有潜力作为一种生产力和教育工具来帮助程序员编写更健壮、文档更完善的软件。

Code Llama在Llama 2的基础上增强了编码能力。它可以从代码和自然语言提示(例如,“给我写一个输出斐波那契数列的函数。”)中生成代码和关于代码的自然语言。它也可以用于代码完成和调试。它支持许多当今最流行的语言,包括Python、c++、Java、PHP、Typescript (Javascript)、c#和Bash。

>> Code Llama是一个开源的、最先进的LLM,能够从代码和自然语言提示中生成代码和关于代码的自然语言。它专注于生成代码和理解自然语言代码说明,其性能优于当前公开的其他代码生成LLM,为编程带来支持,其开源训练方法有助于社区建立更多创新工具。

>> Code Llama有三个尺寸的版本,参数量分别为7B、13B和34B,并支持多种编程语言。它稳定支持了最高10万个token的上下文生成。这三个参数版本的Code Llama模型都使用了500B的代码tokens和代码相关数据进行训练。7B和13B版本的模型还经过了FIM(fill-in-the-middle)训练,可以将代码插入到现有代码中,支持开箱即用的代码补全等任务。不同的服务和延迟要求可以选择适合的模型版本。例如,7B模型适合在单个GPU上运行,而34B模型提供了更好的编码辅助和最佳结果,但速度较慢。对于低延迟任务,比如实时代码补全,较小的7B和13B模型速度更快。

>> Code Llama建立在Llama 2的基础上,并通过在代码特定数据集上进行进一步训练来提升编码能力。除了基础模型外,还有针对Python优化的Code Llama - Python和理解自然语言指令优化的Code Llama - Instruct版本。在代码生成基准测试中,Code Llama表现优于其他公开可用的代码专用语言模型,性能与ChatGPT相当。

目录

Code Llama的简介

1、《Code Llama: Open Foundation Models for Code》翻译与解读

2、模型评估效果对比:HumanEval、MBPP、MHEval

3、基于Code Llama的衍生模型

(1)、Phind团队:Phind-CodeLlama-34B-v1、Phind-CodeLlama-34B-Python-v1

(2)、WizardLM团队:WizardCoder

Code Llama的安装

1、模型部署与推理

第1步,获取Meta 官网授权

第2步,sh脚本下载

第3步,模型推理

2、预训练

3、代码填充

4、微调指令模型

Code Llama的使用方法


Code Llama的简介

2023年08月25日,Meta发布了基于的Llama2用于专攻代码生成的基础模型 Code Llama。Code Llama 是基于 Llama 2 的一系列面向代码的大型语言模型,提供了在开放模型中领先的性能,填充能力,支持大型输入上下文,以及用于编程任务的零-shot指令跟随能力。

该项目提供多个版本以覆盖广泛的应用领域:基础模型(Code Llama),Python 专用模型(Code Llama - Python),以及指令跟随模型(Code Llama - Instruct),分别具有7B、13B和34B的参数。所有模型都是在16k标记的序列上进行训练的,并在最多100k标记的输入上显示出改进。7B和13B的 Code Llama 和 Code Llama - Instruct 变体支持基于周围内容的填充。

Code Llama 是通过对 Llama 2 进行代码的更高采样来进行微调开发的。与 Llama 2 一样,我们对模型的微调版本应用了相当大的安全措施。有关模型训练、架构和参数、评估、负责人工智能和安全的详细信息,请参阅我们的研究论文。由 Llama Materials 的代码生成功能生成的输出,包括 Code Llama,在内可能受第三方许可证的约束,包括但不限于开源许可证。

我们正在释放大型语言模型的强大能力,我们的最新版本 Code Llama 现在可以让个人、创作者、研究人员和各个规模的企业获得使用权限,以便他们可以负责地进行实验、创新和扩展他们的想法。此发布包括预训练和微调 Llama 语言模型的模型权重和初始代码,参数范围从7B到34B。该存储库旨在作为一个最小的示例,用于加载 Code Llama 模型并进行推理。

Code Llama 是一项带有潜在风险的新技术。到目前为止进行的测试未能覆盖所有情况。为了帮助开发人员应对这些风险,我们已创建了《负责任使用指南》。更多详细信息可以在我们的研究论文中找到。

GitHub官网:GitHub - facebookresearch/codellama: Inference code for CodeLlama models

论文地址:https://ai.meta.com/research/publications/code-llama-open-foundation-models-for-code/

官网文章:https://ai.meta.com/blog/code-llama-large-language-model-coding/

1、《Code Llama: Open Foundation Models for Code》翻译与解读

摘要

我们发布了Code Llama,这是一系列基于Llama 2面向代码的大型语言模型,具有开放模型中最先进的性能、填充能力、支持大型输入上下文以及零-shot指令跟随能力,可用于编程任务。我们提供多种版本以覆盖广泛的应用领域:基础模型(Code Llama)、Python专用模型(Code Llama - Python)和指令跟随模型(Code Llama - Instruct),分别具有7B、13B和34B个参数。所有模型都是在16k个标记的序列上进行训练,并在最多100k个标记的输入上显示出改进效果。7B和13B的Code Llama和Code Llama - Instruct变种支持基于周围内容的填充。Code Llama在几个代码基准测试中达到了开放模型的最先进性能,分别在HumanEvalMBPP上获得了53%和55%的得分。值得注意的是,Code Llama - Python 7B在HumanEval和MBPP上的表现超过了Llama 2 70B,而我们的所有模型在MultiPL-E上都优于其他公开可用的模型。我们以宽松的许可证发布Code Llama,既允许研究使用,也允许商业使用。

结论

我们发布了一系列专注于代码的Llama 2模型,称为Code Llama,包含三个主要变种,我们以三种规模(7B、13B和34B个参数)发布:Code Llama、Code Llama - Python和Code Llama - Instruct。考虑到实际应用,我们训练了7B和13B的模型以支持填充,并让所有模型能够利用大型上下文。我们在推理中测试它们在最多100K个标记(图4a)的情况下的稳定性。大型上下文微调和填充在标准基准测试中(表10)的基于从左到右的代码生成基准测试中有一定的代价,这些测试都基于短序列(即函数级别)。尽管如此,我们的30B模型在标准Python完成基准测试中是公开模型中最先进的,而我们的其他模型与具有相似参数数量的模型相比具有竞争力。在多语言基准测试中,即使是我们最小的模型(Code Llama 7B)也优于其他任何公开模型。

Code Llama - Instruct模型经过训练,为Code Llama提供了零-shot指令能力。在这种进一步的微调中,我们在一定程度上提炼了Llama 2-Chat,不仅注重更直接的帮助(图5c),还努力提供更安全的模型供使用和部署(第4节)。遵循指令并过于安全可能会在评估中损失一些得分(例如表2中34B模型在HumanEval上的情况),如图14所示。需要进一步的工作让LLM能够理解上下文和指令中的细微差别。

2、模型评估效果对比:HumanEval、MBPP、MHEval

Code Llama表现优异

3、基于Code Llama衍生模型

(1)、Phind团队:Phind-CodeLlama-34B-v1Phind-CodeLlama-34B-Python-v1

 Phind 团队利用内部Phind数据集调优CodeLlama-34B和CodeLlama-34B-Python模型,在HumanEval上超越GPT-4的表现。在该内部数据集上,两模型分别获得67.6%和69.5%的通过率,高于原始模型的48.8%和53.7% 。调优后模型Phind-CodeLlama-34B-v1和Phind-CodeLlama-34B-Python-v1在HumanEval上分别获得67.6%和69.5%的通过率。显然都超越了原始 GPT-4 的 67%。

时间

2023年8月27日(北京时间)

作者

Phind团队

地址

地址:https://www.phind.com/blog/code-llama-beats-gpt4

原文章

通过对CodeLlama-34B和CodeLlama-34B-Python进行微调,我们在内部的Phind数据集上取得了令人瞩目的成绩。CodeLlama-34B在HumanEval上的一次通过率为48.8%,而CodeLlama-34B-Python则为53.7%。根据OpenAI在三月份的官方技术报告,GPT-4的通过率为67%。为确保结果的有效性,我们对数据集应用了OpenAI的去污染方法。

昨天发布的CodeLlama模型在HumanEval上展现出了出色的性能。

>> Phind-CodeLlama-34B-v1在HumanEval上的一次通过率为67.6%

>> Phind-CodeLlama-34B-Python-v1在HumanEval上的一次通过率为69.5%。

我们将这两个模型在一个拥有大约80,000个高质量编程问题和解决方案的专有数据集上进行了微调。与HumanEval在结构上不同的是,该数据集采用了指令-答案对而不是代码补全示例。

我们对Phind模型进行了两个时期的训练,总共约160,000个示例。我们没有使用LoRA,这两个模型都经过了本机的微调。我们使用DeepSpeed ZeRO 3Flash Attention 2,在32个A100-80GB的GPU上进行训练,序列长度为4096个标记,训练时间为三个小时

此外,我们还应用了OpenAI的去污染方法来确保结果的有效性,并且没有发现任何受污染的示例。该方法如下所示:

>> 对于每个评估示例,我们随机抽样了三个50个字符的子字符串,如果示例少于50个字符,则使用整个示例。

>> 如果任何抽样的子字符串是处理过的训练示例的子字符串,则认为存在匹配。

有关去污染方法的更多信息,请参阅OpenAI技术报告附录C。下面是我们在微调模型中实现的一次通过率得分

>> Phind-CodeLlama-34B-v1在HumanEval上的一次通过率为67.6%。

>> Phind-CodeLlama-34B-Python-v1在HumanEval上的一次通过率为69.5%。

(2)、WizardLM团队:WizardCoder

 WizardLM 团队发布了基于Code Llama的最新WizardCoder-34B。WizardCoder-34B在HumanEval上的一次通过率(pass@1)达到了惊人的 73.2%超越了原始 GPT-4ChatGPT-3.5 以及 Claude 2、Bard。

为了开发我们的WizardCoder模型,我们首先采用了Evol-Instruct方法,专门针对编码任务进行了适应。这包括将提示信息定制与代码相关的指令领域。随后,我们使用新创建的指令跟随训练集对Code LLama的模型进行了微调,包括StarCoder或Code LLama。

时间

2023年8月27日(北京时间)

作者

WizardLM 团队

地址

GitHub地址:https://github.com/nlpxucan/WizardLM/tree/main/WizardCoder

测试地址:WizardCoder-Python-34B-V1.0

Code Llama的安装

1、模型部署与推理

第1步,获取Meta 官网授权

为了下载模型权重和分词器,请访问 Meta AI 网站并接受我们的许可协议。

一旦您的请求获得批准,您将收到一封带有签名的电子邮件链接。

第2步,sh脚本下载

下载脚本

然后运行 download.sh 脚本,在提示时传递提供的 URL 开始下载。请确保复制 URL 文本本身,不要使用右键单击 URL 时的“复制链接地址”选项。如果复制的 URL 文本以 https://download.llamameta.net开头,则复制正确。如果复制的 URL 文本以 https://l.facebook.com开头,则复制错误。

先决条件

先决条件:确保您已安装 wget 和 md5sum。然后运行脚本:bash download.sh。

请注意,链接在24小时后和一定数量的下载后会过期。如果您开始看到诸如 403:Forbidden 的错误,您始终可以重新请求链接。

设置

在具有 PyTorch / CUDA 的 conda 环境中,克隆存储库并在顶级目录中运行:

pip install -e .

第3步,模型推理

不同的模型需要不同的模型并行(MP)值

Model

MP

7B

1

13B

2

34B

4

所有模型都支持长达100,000标记的序列长度,但我们根据 max_seq_len 和 max_batch_size 值预先分配缓存。因此根据您的硬件和用例设置这些值。

2、预训练

Code Llama 和 Code Llama - Python 模型没有经过微调以遵循指令。它们应该通过提示来获取期望的答案,即提示的自然延续。请参考 example_completion.py 查看一些示例。为了说明,查看下面的命令,以使用 CodeLlama-7b 模型运行它(nproc_per_node 需要设置为 MP 值):

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

预训练的代码模型包括:Code Llama 模型 CodeLlama-7b、CodeLlama-13b、CodeLlama-34b,以及 Code Llama - Python 模型 CodeLlama-7b-Python、CodeLlama-13b-Python、CodeLlama-34b-Python。

3、代码填充

Code Llama 和 Code Llama - Instruct 7B 和 13B 模型能够根据周围上下文填充代码

请参考 example_infilling.py 查看一些示例。可以使用以下命令运行 CodeLlama-7b 模型以进行填充(nproc_per_node 需要设置为 MP 值):

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

预训练的填充模型包括:Code Llama 模型 CodeLlama-7b 和 CodeLlama-13b,以及 Code Llama - Instruct 模型 CodeLlama-7b-Instruct、CodeLlama-13b-Instruct。

4、微调指令模型

Code Llama - Instruct 模型经过微调以遵循指令。为了获得预期的特性和性能,需要遵循 chat_completion 中定义的特定格式,包括 INST 和 <<SYS>> 标签,BOS 和 EOS 标记,以及之间的空格和换行符(我们建议在输入上调用 strip() 以避免双空格)。

您还可以部署附加分类器,以过滤出被认为不安全的输入和输出。请参阅 llama-recipes 存储库,了解如何将安全检查器添加到推理代码的输入和输出中的示例。

使用 CodeLlama-7b-Instruct 的示例:

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

经过微调的指令跟随模型包括:Code Llama - Instruct 模型 CodeLlama-7b-Instruct、CodeLlama-13b-Instruct、CodeLlama-34b-Instruct。

Code Llama的使用方法

更新中……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/946396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

会玩这10个Linux命令,一定是个有趣的IT男!

Linux当中有很多比较有趣的命令&#xff0c;可以动手看看&#xff0c;很简单的。 1、rev命令 一行接一行地颠倒所输入的字符串。 运行&#xff1a; $rev 如输入&#xff1a;shiyanlou shiyanlou 2、asciiview命令 1)先安装aview $sudo apt-get install aview 2)再安装…

第八周第二天学习总结 | MySQL入门及练习学习第四天

实操练习&#xff1a; 1.建立一个员工表和与之对应的部门表 2.建立外键约束 3.使用多表查询&#xff0c;直接查询部门表和员工表 发现&#xff1a;有很多多余的因笛卡尔乘积而带来的多余输出内容 我想要的到简单明了的数据结果&#xff0c;要消除多于因笛卡尔乘积带来的输出…

3d激光slam建图与定位(2)_aloam代码阅读

1.常用的几种loam算法 aloam 纯激光 lego_loam 纯激光 去除了地面 lio_sam imu激光紧耦合 lvi_sam 激光视觉 2.代码思路 2.1.特征点提取scanRegistration.cpp&#xff0c;这个文件的目的是为了根据曲率提取4种特征点和对当前点云进行预处理 输入是雷达点云话题 输出是 4种特征点…

【Apollo学习笔记】——规划模块TASK之PATH_ASSESSMENT_DECIDER

文章目录 前言PATH_ASSESSMENT_DECIDER功能简介PATH_ASSESSMENT_DECIDER相关信息PATH_ASSESSMENT_DECIDER总体流程1. 去除无效路径2. 分析并加入重要信息给speed决策SetPathInfoSetPathPointType 3. 排序选择最优的路径4. 更新必要的信息 前言 在Apollo星火计划学习笔记——Ap…

信息系统项目管理师(第四版)教材精读思维导图-第七章项目立项管理

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 ​ 目录 7.1 项目建议与立项申请 7.2 项目可…

【洛谷】P1873 EKO / 砍树

原题链接&#xff1a;https://www.luogu.com.cn/problem/P1873 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路&#xff1a;二分答案 设置一个变量highest来记录最高的树的高度&#xff0c;sum记录切下的木头的长度。令左边界l0&#xff0c…

java八股文面试[多线程]——公平锁

一个线程启动时刚好碰到另外的线程释放锁&#xff0c;则该线程会获取到锁&#xff0c;其他等待队列中的线程不会获取到锁。好处&#xff1a;减少线程状态切换&#xff08;不用在start()之后进入阻塞&#xff09;&#xff0c;提高吞吐量。 非公平锁 非公平锁是多个线程加锁时直接…

高通开发系列 - QTI守护进程服务介绍

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 代码位置和依赖关系功能介绍代码逻辑讲解外设节点关注的目录socket服务端初始化DPM客户端监听守护关键的数据结构体…

C# char曲线控件

一、char曲线显示随机数数据 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; using Syst…

【JS案例】JS实现手风琴效果

JS案例手风琴 &#x1f31f;效果展示 &#x1f31f;HTML结构 &#x1f31f;CSS样式 &#x1f31f;实现思路 &#x1f31f;具体实现 1.绑定事件 2.自定义元素属性 3.切换菜单 &#x1f31f;完整JS代码 &#x1f31f;写在最后 &#x1f31f;效果展示 &#x1f31f;HTML…

如何使用pytest进行自动化测试

Pytest作为广泛使用的Python测试框架之一&#xff0c;可以用于单元测试、功能测试、性能测试等场合。自动化测试是功能测试的一种形式&#xff0c;可以使用Pytest编写并管理自动化测试用例&#xff0c;再执行相应的自动化测试。 功能测试通常包括接口测试和Web测试两种类型&am…

服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写的参考笔记

2023/8/29 19:21:11 服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写 2023/8/29 19:22:25 在服务器端使用Django WebSocket和客户端使用Uniapp的情况下&#xff0c;以下是代码示例来实现服务器端和客户端之间的群组互发消息。 …

使用GoLand进行远程调试

对部署进行配置 在此配置远程服务器地址&#xff0c;映射&#xff0c;是否自动上传(更新)等 选择SFTP类型 选择上传 另外给自动上传选项打钩 此时在本地修改某个文件&#xff0c;远程机器相应目录的文件&#xff0c;也会被同步修改 对远程调试进行配置 远程机器需要安装delve 而…

桃子叶片病害识别(图像连续识别和视频识别,Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)

桃子叶片病害识别&#xff08;图像连续识别和视频识别&#xff0c;Python代码&#xff0c;pyTorch框架&#xff0c;深度卷积网络模型&#xff0c;很容易替换为其它模型&#xff0c;带有GUI识别界面&#xff09;_哔哩哔哩_bilibili 1.数据集分为三类 健康的桃子叶片 &#xff0c…

LeetCode(力扣)530. 二叉搜索树的最小绝对差Python

LeetCode530. 二叉搜索树的最小绝对差 题目链接代码 题目链接 https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 代码 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # …

React【React是什么?、创建项目 、React组件化、 JSX语法、条件渲染、列表渲染、事件处理】(一)

文章目录 React是什么&#xff1f; 为什么要学习React React开发前准备 创建React项目 React项目结构简介 React组件化 初识JSX 渲染JSX描述的页面 JSX语法 JSX的Class与Style属性 JSX生成的React元素 条件渲染&#xff08;一&#xff09; 条件渲染 &#xff0…

浅谈卫星通信技术

目录 1.卫星的概念 2.卫星的具体作用 3.利用卫星进行通信的优势 4.卫星通信带来的技术变革 1.卫星的概念 卫星是指在地球轨道上运行的天体或人造物体。一般来说&#xff0c;我们所说的卫星主要指人造卫星&#xff0c;它是由人类设计、制造并送入轨道的人造宇宙飞行器。 人造…

海思SS528V100 开发环境搭建记录

1.拿到厂家的SDK 解压rar压缩包(aarch64-mix210-linux.tga 要用tar -zxvf命令解压)之后会得到三个文件夹 如下图高亮了 2.安装交叉编译工具链 tar -zxf aarch64-mix210-linux.tgz 解压文件&#xff0c;进入 aarch64-mix210-linux 目录&#xff0c;运行 chmod x aarch64-mix2…

如何实现Python自动化测试

Python自动化测试常用于Web应用、移动应用、桌面应用等的测试&#xff0c;在这我也准备了一份软件测试面试视频教程&#xff08;含接口、自动化、性能等&#xff09;&#xff0c;需要的可以直接在下方观看&#xff0c;你也直接点击文末小卡片免费领取资料文档 软件测试面试视频…

clion +espidf 搭建开发环境

1.离线安装esp32idf的环境后&#xff0c;将idf_frameworks的路径添加至环境变量如下图所示 2.打开powershell&#xff0c;输入export.ps1&#xff0c;如图所示 3.输入$env:Path&#xff0c;并将导出的环境变量复制到clion environment中 建立环境变量 如图所示