当前位置: 首页 > news >正文

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测

引言

小伙伴们好,我是《小窗幽记机器学习》的小编:卖热干面的小女孩。

个人CSDN首页:JasonLiu1919_面向对象的程序设计,深度学习,C++-CSDN博客

今天开始以2篇小作文介绍代码大语言模型Code Llama。上篇主要介绍Code Llama的基本情况并基于HuggingFace上部署的Demo快速体验下Code Llama的实战效果,下篇则主要介绍如何在本地部署Code Llama。感兴趣的小伙伴可以关注下!

模型简介

Code Llama是基于Llama 2面向编程领域的大型代码语言模型(即代码大模型),基于该工具可以使用文本提示(Prompt)直接生成或者理解代码。Code Llama具备包括代码补全能力,最长可以生成 100k 个token。此外,Code Llama还具备编程任务的零样本指令遵循能力,即面向自然语言的指令编程。官方宣称Code Llama在公开的编程任务中效果最好,能够使开发人员的工作流程更快速、更高效,并降低编程的学习门槛。Code Llama 在用作生产力和教育工具方面潜力巨大,能够帮助程序员编写更加健壮、有良好文档的软件。

目前(2023年9月12日)代码语言模型的leaderboard结果如下:

Code Llama 是 Llama 2 的代码专用版本,在特定代码数据集上进一步训练 Llama 2 并从同一数据集中采样更多数据,进行更长时间训练。相对于Llama 2,Code Llama的编码能力得到提升,可以根据代码和自然语言提示(例如:“编写一个输出斐波那契数列的函数”)生成代码,也可以进行代码解读。Code Llama还可以用于代码补全和调试。Code Llama支持当下流行的多种编程语言,包括Python、C++、Java、PHP、TypeScript(JavaScript)、C#、Bash等。

此次官方发布了三种参数规模的 Code Llama,分别为 7B、13B 和 34B。这些模型都基于 500B 个tokens的 代码和与代码相关的数据进行训练。7B 和 13B 的Code Llama模型和Code Llama instruct模型还引入with fill-in-the-middle(填充中间,FIM)的训练方式,使其能够将代码插入到现有代码中,这意味着可以直接支持诸如代码填充之类的任务。

这三种模型适用于不同延迟要求和服务场景。比如,7B 模型可以部署在单个GPU上,34B 模型返回结果最佳,可以提供更好地辅助编码,但更小的 7B 和 13B 模型速度更快,更适用于需要低延迟的任务,如实时代码补全。

官方还进一步微调了 Code Llama 的两个变体:Code Llama - Python 和 Code Llama - Instruct。

  • 「Code Llama - Python」 是针对特定语言Python的Code Llama,在 100B个token Python 代码上进行进一步微调。Python是代码生成中最常用的benchmarked语言,且Python和PyTorch在AI社区中扮演着重要角色。Code Llama-Python这个专门的模型可以提供额外的效用。

  • 「Code Llama - Instruct」 是一种经过指令微调和对齐的Code Llama变体。指令微调其实是继续训练,只是目标函数不同。模型会接收自然语言指令作为输入,再输出符合要求的输出。Instruct的方式使得模型在理解人类自然语言形式提示的时候表现更好。在代码生成场景可以优先使用 Code Llama - Instruct。

「Code Llama、Code Llama - Python、Code Llama - Instruct」这三类模型之间的关系如下:

与 Llama 2 一样,官方对模型的微调版本应用了相当大的安全缓解措施。有关模型训练、架构和参数、评估、AI安全性等详细信息,可以参阅研究论文。Meta官方宣称,对AI采取开放的方式,是发展创新、安全和负责任的新AI工具的最佳方式,因此他们将 Code Llama 以相同的社区许可证(与 Llama 2 相同)发布,供研究和商业用途使用。

以下通过 huggingface 上发布的Demo实测Code Llama在代码任务上的效果。

先直接剧透下结论:

功能任务是否正常运行结果是否符合预期总体评估
代码补全(13B版)判断是否存在中文字符yesyes⭐⭐⭐⭐⭐
代码补全(13B版)pandas指定列增加行数据nono⭐⭐
代码填充(13B版)去除非ascii字符yesyes⭐⭐⭐⭐⭐
指令编程(13B版)pandas指定列增加行数据nono⭐⭐
指令编程(33B版)pandas指定列增加行数据yesno⭐⭐⭐

Code Llama实测(13B版):代码补全

为了快速亲测效果,使用官方基于CodeLlama-13b-hf发布的Demo。需要注意的是,这里使用的模型不是Chat版,所以只能用于代码补齐,不能对话方式生成代码。

测试1:判断是否有中文字符

输入:

# define a function, Check whether Chinese characters exist
def check_cn_char(test_str):

输出:

# define a function, Check whether Chinese characters exist
def check_cn_char(test_str):for c in test_str:if u'\u4e00' <= c <= u'\u9fff':return Truereturn False# define a function, Check whether English characters exist
def check_en_char(test_str):for c in test_str:if 'a' <= c <= 'z' or 'A' <= c <= 'Z':return Truereturn False# define a function, Check whether numbers exist
def check_num(test_str):for c in test_str:if '0' <= c <= '9':return Truereturn False# define a function, Check whether special characters exist
def check_special_char(test_str):for c in test_str:if not (u'\u4e00' <= c <= u'\u9fff') and not ('a' <= c <= 'z' or 'A' <= c <= 'Z') and not ('0' <= c <= '9'):return Truereturn False# define a function, Check whether the password

测试check_cn_char函数,能够正常运行,且结果符合预期。

测试2:pandas指定列增加行数据

输入:

# define a function, append pandas column with input test_list
def df_append_rows(test_df,target_column, append_list)

输出结果如下:

# define a function, append pandas column with input test_list
def df_append_rows(test_df,target_column, append_list) :for i in range(len(append_list)) :test_df[target_column] = test_df[target_column].append(append_list[i])return test_df# define a function, append pandas column with input test_list
def df_append_rows_with_index(test_df,target_column, append_list) :for i in range(len(append_list)) :test_df[target_column] = test_df[target_column].append(append_list[i], ignore_index=True)return test_df# define a function, append pandas column with input test_list
def df_append_rows_with_index_and_columns(test_df,target_column, append_list) :for i in range(len(append_list)) :test_df[target_column] = test_df[target_column].append(append_list[i], ignore_index=True, sort=False)return test_df# define a function, append pandas column with input test_

直接测试df_append_rows函数,报错:

TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid

Code Llama实测(13B版):代码填充

由于代码填充功能仅局限于Code Llama和 Code Llama - Instruct的7B 和 13B 版模型中,本文选用Code Llama-13B进行实测,Demo地址进行体验。

输入:

def remove_non_ascii(s: str) -> str:""" <FILL_ME>return result

输出结果:

def remove_non_ascii(s: str) -> str:""" Remove non-ASCII characters from a string.Args:s (str): The string to be processed.Returns:str: The processed string."""result = ""for c in s:if ord(c) < 128:result += creturn result

Code Llama实测(13B版):指令编程

使用官方基于CodeLlama-13b-Instruct-hf发布的Demo进行体验。

输入:

I have a pandas DataFrame df['text'], how can I directly add a list of data test_list to df['text'] to increase the number of rows?

输出:

上述代码测试,报错:

TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid

可以看出,Code Llama对于pandas部分函数的理解有待提高。

Code Llama实测(34B版):指令编程

在 huggingface 上选择codellama/CodeLlama-34b-Instruct-hf

输出结果:

生成的代码能够运行,但是结果不符合预期:

import pandas as pd# create a sample dataframe with one column 'text'
df = pd.DataFrame({'text': ['hello', 'world']})# create a list of new text values to be appended
new_values = ['goodbye', 'cruel world']# append the new values to the 'text' column
df['text'].append(pd.Series(new_values))print(df)

需要人工修正下:

# 以下是人工修改的结果,才可以得到符合预期的结果
tmp_df = df['text'].append(pd.Series(new_values))  # 人工修改
print(tmp_df)

总结

本文简要介绍Code Llama模型概况,同时通过huggingface上的Demo快速实测Code Llama的效果。撇开官方提供的case之后,亲测的几个case,虽然存在一些瑕疵,但整体效果也算还不错,期待后续的优化。

目前很多程序员已经在各种任务中使用LLM来协助开发。这确实使开发者的工作更高效,以便开发者可以专注于最具人本特色的方面,而不是重复性的任务。AI模型,特别是用于编码用途的LLM,从开放式的方法中受益最大。无论是在创新还是在安全性方面,公开可用的代码专用模型可以促进新技术的发展,从而改善人们的生活。未来可期!

相关文章:

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测

引言 小伙伴们好&#xff0c;我是《小窗幽记机器学习》的小编&#xff1a;卖热干面的小女孩。 个人CSDN首页&#xff1a;JasonLiu1919_面向对象的程序设计,深度学习,C-CSDN博客 今天开始以2篇小作文介绍代码大语言模型Code Llama。上篇主要介绍Code Llama的基本情况并基于Hug…...

积分球荧光光谱测试光电检测方式有哪些优点?

积分球荧光光谱测试是一种测量光通量的方法&#xff0c;其基本原理是将待测光源放入积分球中&#xff0c;在积分球内壁涂以白色漫反射层&#xff0c;光源发出的光经球壁多次反射后&#xff0c;使整个球壁上的照度均匀分布&#xff0c;再通过球壁上的孔投射到光电探测器上的光通…...

软考考试时间已出!采用连考形式!

2023年下半年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试批次安排已出&#xff01;下面是具体的考试安排。 通知原文如下&#xff1a;↓↓↓ 按照《2023年下半年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试有关工作调整的通告》&#x…...

深入理解强化学习——学习(Learning)、规划(Planning)、探索(Exploration)和利用(Exploitation)

分类目录&#xff1a;《深入理解强化学习》总目录 学习 学习&#xff08;Learning&#xff09;和规划&#xff08;Planning&#xff09;是序列决策的两个基本问题。 如下图所示&#xff0c;在强化学习中&#xff0c;环境初始时是未知的&#xff0c;智能体不知道环境如何工作&a…...

大模型LLM相关面试题整理-训练集-训练经验-微调

3 大模型&#xff08;LLMs&#xff09;微调 3.1 如果想要在某个模型基础上做全参数微调&#xff0c;究竟需要多少显存&#xff1f; 要确定全参数微调所需的显存量&#xff0c;需要考虑以下几个因素&#xff1a; 模型的大小&#xff1a;模型的大小是指模型参数的数量。通常&…...

qt 实现pdf阅读器

文章目录 概要方案一方案二一、介绍二、编译三、用法本项目代码 概要 在qt程序中&#xff0c;要实现PDF文件浏览&#xff0c;从网上目前找到了两种解决方案&#xff0c;本文主要介绍下着两种方案和适用性。 方案一 这种方法是从https://github.com/develtar/qt-pdf-viewer-l…...

从培训班出来之后找工作的经历,教会了我五件事.....

我是非计算机专业&#xff0c;由于专业不好实习急着就业有过一些失败的工作经历后&#xff0c;跑去参加培训进入IT这行的。 之前在报名学习软件测试之前我也很纠结&#xff0c;不知道怎么选择机构。后面看到有同学在知乎上分享自己的学习经历&#xff0c;当时对我的帮助很大。…...

idea中还原dont ask again

背景 在使用idea打开另外一个项目的时候&#xff0c;一不小心勾选为当前项目而且是不在下次询问&#xff0c;导致后面每次打开新的项目都会把当前项目关闭&#xff0c;如下图所示 下面我们就一起看一下如何把这个询问按钮还原回来 preferences/settings->Appearance&…...

Unity之ShaderGraph如何实现光边溶解

前言 今天我们来实现一个最常见的随机溶剂效果。如下图所示&#xff1a; 光边溶解效果&#xff1a; 无光边效果 主要节点 Simple Noise&#xff1a;根据输入UV生成简单噪声或Value噪声。生成的噪声的大小由输入Scale控制。 Step&#xff1a;对于每个组件&#xff0c;如果输…...

Go语言和Python语言哪个比较好?

目录 1、性能 2、开发效率和易用性 3、社区支持 4、语法 5、其他因素 总结 Go语言和Python语言都是非常优秀的编程语言&#xff0c;它们各自具有不同的优势和适用场景。在选择哪种语言更适合您的项目时&#xff0c;需要考虑多个方面&#xff0c;包括性能、开发效率、可读…...

MAYA教程之模型的UV拆分与材质介绍

什么是UV 模型制作完成后&#xff0c;需要给模型进行贴图&#xff0c;就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器&#xff0c;可以点击打开 创建一个模型&#xff0c;可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…...

vscode调试container(进行rocksdb调试)

vscode调试container&#xff08;进行rocksdb调试&#xff09; 参考链接&#xff1a; https://blog.csdn.net/qq_29809823/article/details/128445308#t5 https://blog.csdn.net/qq_29809823/article/details/121978762#t7 使用vscode中的插件dev containners->点击左侧的…...

从恐怖到商机:2023万圣节跨境电商如何打造鬼魅消费体验?

又到了一年一度的糖果、恐怖装扮和万圣节派对的时候&#xff01;随着10月底的日子临近&#xff0c;人们开始为庆祝万圣节做各种各样的准备。而对于跨境电商来说&#xff0c;这个节日也是一个独特的商机&#xff0c;能够在全球市场上推广各种各样的节日相关商品。Adobe Digital …...

修炼k8s+flink+hdfs+dlink(五:安装dockers,cri-docker,harbor仓库,k8s)

一&#xff1a;安装docker。&#xff08;所有服务器都要安装&#xff09; 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/cent…...

从实时数据库转战时序数据库,他陪伴 TDengine 从 1.0 走到 3.0

关于采访嘉宾 在关胜亮的学生时代&#xff0c;“神童”这个称号如影随形&#xff0c;很多人初听时会觉得这个称谓略显夸张&#xff0c;有些人还会认为这是不是就是一种调侃&#xff0c;但是如果你听说过他的经历&#xff0c;就会理解这一称号的意义所在了。 受到教师母亲的影…...

颠覆传统有线通讯,虹科IO-Link wireless解决方案让智能机床的旋转部件实现可靠低延迟无线通信

作为新工业革命的一部分&#xff0c;传统机床正迅速发展成为智能机床。在工业4.0技术的推动下&#xff0c;新的创新应用使机床的效率和功能达到了更高的水平。要实现这些功能&#xff0c;需要在机床上集成传感器和执行器&#xff0c;以提供实时数据和自动化控制。然而&#xff…...

链表 oj2 (7.31)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 我们通过头插来实现 将链表上的节点取下来&#xff08;取的时候需要记录下一个节点&#xff09;&#xff0c;形成新的链表&#xff0c;对新的链表进行头插。 /*** Definition for singly-linked list.* struct ListNode…...

python案例:六大主流小说平台小说下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 很多小伙伴学习Python的初衷就是为了爬取小说&#xff0c;方便又快捷~ 辣么今天咱们来分享6个主流小说平台的爬取教程~ 一、流程步骤 流程基本都差不多&#x…...

前端已死!转行网络安全,挖漏洞真香!

最近&#xff0c;一个做运维的朋友在学渗透测试。他说&#xff0c;他公司请别人做渗透测试的费用是 2w/人天&#xff0c;一共2周。2周 10w 的收入&#xff0c;好香~ 于是&#xff0c;我也对渗透测试产生了兴趣。开始了探索之路~ 什么是渗透测试 渗透测试这名字听起来有一种敬畏…...

【AI】了解人工智能、机器学习、神经网络、深度学习

深度学习、神经网络的原理是什么&#xff1f; 深度学习和神经网络都是基于对人脑神经系统的模拟。下面将分别解释深度学习和神经网络的原理。深度学习的原理&#xff1a;深度学习是一种特殊的机器学习&#xff0c;其模型结构更为复杂&#xff0c;通常包括很多隐藏层。它依赖于神…...

LeetCode - 53. 最大子数组和

目录 题目 Kadane 算法核心思想 Kadane 算法的步骤分析 读者可能的错误写法 正确的写法 题目 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; Kadane 算法核心思想 定义状态变量: currentSum: 表示以当前元素为结束的子数组的最大和。 maxSum: 记录全局最大…...

QuaggaJS用法详解

QuaggaJS简介 QuaggaJS是一个强大的JavaScript库&#xff0c;专门用于在浏览器环境中进行条形码和二维码识别。它支持多种条形码格式&#xff0c;包括Code 128、Code 39、EAN、QR码等&#xff0c;并且可以直接调用设备摄像头进行实时扫描。 QuaggaJS核心功能与用法 1. 基本配…...

JSON解析崩溃原因及解决方案

问题记录&#xff1a; /************************************************| * 描述: 将ID124执行NFC操作-JSON解析为结构体* 函数名: cJSON_ID124_to_struct* 参数[ I]: *json_string 待解析的指针* 参数[II]: *wireless_rxd 结构体指针* 返回: 成功返回0 失…...

GPU虚拟化

引言 现有如下环境&#xff08;注意相关配置&#xff1a;只有一个k8s节点&#xff0c;且该节点上只有一张GPU卡&#xff09;&#xff1a; // k8s版本 $ kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.7&…...

在WPS中如何启用宏VBA wps.vba.exe下载和安装

首先我们点击导航栏中的【工具】&#xff0c;点击左侧 运行宏&#xff0c;根据提示 点击 立即加载。加载卡在50%时间比较长&#xff0c;耐心等待。 关闭wps重新打开后&#xff0c; word和xls表格都可以使用了。 如果电脑无法联网&#xff0c;需要提前下载 WPS VBA插件 WPS VB…...

UDP:简洁高效的报文结构解析与关键注意事项

UDP&#xff08;User Datagram Protocol&#xff09;以其无连接、低开销的特性&#xff0c;成为实时应用&#xff08;如视频、游戏、DNS&#xff09;的首选传输协议。深入理解其报文结构和注意事项&#xff0c;是高效利用UDP的基础。 一、UDP报文结构&#xff1a;简洁的四段式 …...

【Dv3Admin】系统视图下载中心API文件解析

大文件导出与批量数据下载常常成为后台系统性能瓶颈&#xff0c;合理管理下载任务是保障系统稳定运行的关键。任务化下载机制通过异步处理&#xff0c;避免前端等待阻塞&#xff0c;提升整体交互体验。 围绕 download_center.py 模块&#xff0c;剖析其在下载任务创建、查询、…...

Facebook接入说明

Facebook 原生 Messenger 聊天消息接入到一洽对话中 1、创建 Facebook 主页 进入 https://www.facebook.com/pages/create 页面根据提示创建主页&#xff08;如果已经有待用主页&#xff0c;可跳过&#xff09; 2、授权对话权限 1、向您的一洽负责人获取 Facebook 授权链接 2、…...

AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法

目录 软件架构 关键知识点 第一:PDUR的缓存作用 第二:CANTP的组包拆包功能 第三:流控帧的意义 配置过程 步骤0:ECUC模块中PDU创建 步骤1:SoAD模块维持不变 步骤2:DoIP模块为Gateway功能添加Connection ​步骤3:DoIP模块为Gateway新增LA/TA/SA ​步骤4:PDUR模…...

怎么让自己ip显示外省?一文说清操作

在互联网时代&#xff0c;IP地址不仅关联网络连接&#xff0c;还可能影响IP属地显示。那么&#xff0c;手机和电脑用户怎么让自己IP显示外省&#xff1f;一文说清操作要点。 ‌ 二、4种主流方法详解 要让自己的IP显示为外省地址&#xff0c;主要有以下几种方法&#xff1a; …...