逼近GPT-4,AI编程要革命!Meta开源史上最强代码工具CodeLlama

OpenCV学堂 2023-08-28 11:02



点击上方↑↑↑OpenCV学堂”关注我

来源:公众号 新智元 授权


【导读】史上最强开源代码工具Code Llama上线了,Llama-2唯一的编程短板被补平,34B参数的模型已接近GPT-4。

凭借开源Llama杀疯的Meta,今天又放大招了!

专用编程版的Code Llama正式开源上线,可以免费商用和研究。

Code Llama是从Llama-2基础模型微调而来,共有三个版本:基础版、Python版、以及指令遵循。

每个版本都有3种参数:7B、13B、34B。值得一提的是,单个GPU就能跑7B模型。

在评测基础上,Code Llama的性能与GPT-3.5打平,同时34B参数的模型在HumanEval基准上,接近GPT-4。

不知道,大家有没有注意到其中一个模型:Unnatural Code Llama。

OpenAI科学家Karpathy,乍一看,非常nice!

但是关于这个Unnatural Code Llama,有着神秘名字,含糊的描述、秘而不宣、碾压其他所有模型,多么诱人啊!

Code Llama发布后,LeCun也是疯狂点赞转发自家的科研成果。

英伟达科学家Jim Fan称,Llama-2几乎达到了GPT-3.5的水平,但在编程方面却大大落后,这真的很让人失望。现在,Code Llama终于弥补了与GPT-3.5之间的这一差距!

编程无疑是最重要的LLM任务。它是强大推理引擎和像Voyager这样的强大AI智能体的基石。

Code Llama的横空出世,标志着AI在编程中的重大飞跃,人人都可以利用这个模型进行复杂精确的编程开发任务。

另外,值得一提的,Perplexity的聊天工具,现在就可以用上Code Llama了。

快来一试:

https://labs.perplexity.ai/?utm_content=first_codellama&s=u&utm_source=twitter&utm_campaign=labs

Code Llama是如何练成的?


Meta宣称,在代码任务中,Code Llama是目前公开可用的LLM中最先进的模型。它能够使开发人员的工作流程更加快速高效,并降低学习编程的门槛。

Code Llama可以作为生产力和教育工具,帮助程序员编写更加稳定、更加符合编码规范的软件。

Meta认为开源策略能够促进AI领域的创新,是开发安全和负责任的AI工具的最佳途径。

所以Code Llama与Llama2的社区许可协议是完全相同的,学术和商用都免费。

Code Llama是Llama 2强化了代码能力的版本。

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

Meta从训练Llama 2代码能力的数据集中提取了更多的数据,训练了更长的时间,得到了Code Llama。

它可以根据代码和自然语言提示(比如「编写一个输出斐波那契数列的函数」)生成代码和与代码有关的自然语言描述。

它还可以用于代码补全和Debug,支持当今最流行的编程语言,包括Python、C++、Java、PHP、Typescript(Javascript)、C#和Bash。

Meta发布了三个不同规模的Code Llama,分别拥有7B、13B和34B的参数。

每个模型都使用了500B token的代码和与代码相关的数据进行训练。

其中,7B和13B的基础模型以及Instruct模型还经过了Fill-In-the-Middle(FIM)能力的训练,使它们能够将代码插入到现有代码中,使得它们能够完成代码补全相关的任务。

这三个模型可以满足不同的服务场景和延迟的需求。

7B模型单个GPU就能跑。

34B模型生成结果最好,编码辅助的效果也最好。但规模较小的7B和13B的模型运行速度更快,更适合需要低延迟的任务,比如实时的代码补全。

Code Llama模型能稳定支持最多10万token的上下文。而且所有模型都是基于16k的token序列进行训练的,在最高10万token的输入中显示出了改进效果。

拥有更长的上下文能力除了能生成更长的程序,还为代码大语言模型带来了许多新的用途。

它使得用户能向模型喂更长的代码库上下文,让生成的结果与原先的代码相关性更高。

这也使得模型在「Debug大型代码库」这样的场景中能发挥更大的作用。

因为在这种情况下,想要跟踪「与某个具体问题相关」的所有代码,对于开发人员来说是一项很令人头疼的任务。

当开发人员需要Debug大量代码时,他们可以将整个代码片段的直接喂给模型。

此外,Meta还进一步微调了Code Llama的两个子版本:

Code Llama - Python和Code Llama - Instruct。

Code Llama - Python是用Code Llama在100B的Python代码token上进一步微调的产物。

由于Python是代码生成任务中最常用的语言,并且Python和PyTorch在AI社区中具有举足轻重的地位,专门训练一个能对Python提供更好支持的模型能够大大增强模型的实用性。

而Code Llama - Instruct则是经过指令微调和对齐的Code Llama。

Meta将「自然语言指令」喂给了模型,并且给出了期望的输出。这个过程使得模型更擅长理解人类提示的预期结果。

Meta建议在使用Code Llama-Instruct进行代码生成任务,因为Code Llama - Instruct经过微调后,可以生成更加有用且更加安全的自然语言回复。

Meta不建议直接使用Code Llama或Code Llama - Python来执行一般的自然语言任务,因为这两个模型的设计初衷都不是遵循自然语言指令。

而且Code Llama也只专门用于代码相关的任务,不适合作为其他任务的基础模型。

刷新SOTA,碾压开源专用代码模型


Code Llama表现如何?

Meta采用了了两个流行的编码基准测试:HumanEval和Mostly Basic Python Programming(MBPP)。

HumanEval是测试模型根据文档字符串完成代码的能力,而MBPP测试模型根据描述编写代码的能力。

结果显示,Code Llama的性能优于开源代码专用LLM,并且超越了Llama 2。

Code Llama 34B在HumanEval上得分为53.7%,在MBPP上得分为56.2%,与ChatGPT几乎打平。

同样,Code Llama作为大模型,同样存在不可知的风险。

为了负责任地构建AI模型至关,Meta在发布Code Llama之前,采取了多项措施,包括红队测试。

研究人员对Code Llama生成恶意代码的风险进行了定量评估。

通过创建试图引导生成具有明确意图的恶意代码的提示,将Code Llama对这些提示的响应与ChatGPT(GPT3.5 Turbo)的响应进行了评分比较。

结果表明,Code Llama 给出了更安全的响应。

代码开源


今天,Meta也发布了Code Llama源代码,由此整个社区都可以评估其能力,发现问题,并修复漏洞。

模型下载

要下载模型权重和标记器,请访问Meta AI网站并接受许可。

一旦请求被批准,将会在电子邮件收到一个URL。然后运行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环境中,克隆repo并在顶级目录中运行:

pip install -e .

推理

不同的模型需要不同的MP值:

所有模型都支持高达100,000个token的序列长度,但Meta会根据max_seq_len和max_batch_size值预先分配缓存。

因此,请根据你的硬件和用例进行设置。

预训练代码模型

Code Llama和Code Llama-Python模型没有微调指令遵循。在提示时,应使预期答案成为提示的自然延续。

有关一些示例,请参阅example_completion.py。为了说明,请参阅下面的命令以使用CodeLlama-7b模型运行它(nproc_per_node需要设置为MP值):

torchrun --nproc_per_node 1 example_code_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。

代码填充

Code Llama和Code Llama-Instruct7B和13B模型能够根据周围环境填充代码。

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

torchrun --nproc_per_node 1 example_text_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。

指令微调模型

Code Llama-指令模型经过微调遵循指令。

要获得预期的功能和性能,需要遵循chat_completion中定义的特定格式,包括INST和<>标记、BOS和EOS token,以及中间的空格和换行符(建议在输入上调用strip()以避免双格)。

你还可以部署额外的分类器来过滤掉被认为不安全的输入和输出。有关如何将安全检查器添加到推理代码的输入和输出的示例,请参阅llama-recipe存储库。

使用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 models CodeLlama-7b-Instruct、CodeLlama-13b-Instruct 、 CodeLlama-34b-Instruct 。

负责任使用


Meta的研究论文披露了更多的Code Llama开发细节,以及进行基准测试的具体方法。

论文还包括了模型现有局限的具体信息,遇到的已知挑战,以及Meta采取的应对措施和未来的挑战。

Meta还更新了负责任使用指南,其中包括如何负责地开发下游模型的指导,包括:

  1. 定义内容策略和缓解措施
  2. 准备数据
  3. 对模型进行微调
  4. 评估和改进性能
  5. 解决输入和输出级别的风险
  6. 在用户互动中建立透明度和报告机制


开发人员应该使用代码特定的评估基准来评估他们的模型,并对代码特定用例,针对生成恶意软件、计算机病毒或恶意代码等问题进行安全性研究。

编码生成式AI的未来


Code Llama的设计目标是辅助各个领域的软件工程师的日常工作,可以在研究、工业、开源项目、非营利组织和企业中发挥重要作用。
但是,基础模型和Instruct模型能够发挥作用的领域还远不止这些。
Meta希望Code Llama能激发大众对于Llama 2的进一步开发,成为研究和商业产品创建新的创造性工具。

网友操刀


Code Llama一发布后,已经有人迫不及待跑开了。
Code Llama-34B在4个3090显卡上跑,49ms每token。
以下是使用最新的llama.cpp在M2 Ultra上对Code Llama不同参数大小模型进行推理的一些数据。
除了代码补全和代码生成,它还能帮助你查找错误或程序配对。
参考资料:
https://ai.meta.com/blog/code-llama-large-language-model-coding/

OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 84浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 44浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 70浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 65浏览
  •         霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子
    锦正茂科技 2024-12-10 11:07 64浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 45浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 78浏览
  • 本文介绍Linux系统(Ubuntu/Debian通用)挂载exfat格式U盘的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。修改对应的内核配置文件# 进入sdk目录cdrk3562_linux# 编辑内核配置文件vi./kernel-5.10/arch/arm64/configs/rockchip_linux_defconfig注:不清楚内核使用哪个defc
    Industio_触觉智能 2024-12-10 09:44 90浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 68浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦