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

这篇具有很好参考价值的文章主要介绍了LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

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

个人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结果如下:

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

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)的训练方式,使其能够将代码插入到现有代码中,这意味着可以直接支持诸如代码填充之类的任务。

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

这三种模型适用于不同延迟要求和服务场景。比如,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」这三类模型之间的关系如下:

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

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

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

先直接剧透下结论:

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

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 True
    return 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 True
    return False

# define a function, Check whether numbers exist
def check_num(test_str):
    for c in test_str:
        if '0' <= c <= '9':
            return True
    return 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 True
    return 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 += c
    return 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?

输出:

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

上述代码测试,报错:

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

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

输出结果:

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测,llama,LLM,人工智能

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

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,从开放式的方法中受益最大。无论是在创新还是在安全性方面,公开可用的代码专用模型可以促进新技术的发展,从而改善人们的生活。未来可期!文章来源地址https://www.toymoban.com/news/detail-722095.html

到了这里,关于LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【LLM系列之底座模型对比】LLaMA、Palm、GLM、BLOOM、GPT模型结构对比

    【LLM系列之底座模型对比】LLaMA、Palm、GLM、BLOOM、GPT模型结构对比

    LLama [GPT3] 使用RMSNorm(即Root Mean square Layer Normalization)对输入数据进行标准化,RMSNorm可以参考论文:Root mean square layer normalization。 [PaLM]使用激活函数SwiGLU, 该函数可以参考PALM论文:Glu variants improve transformer。 [GPTNeo]使用Rotary Embeddings进行位置编码,该编码可以参考论文 Rofo

    2024年02月09日
    浏览(9)
  • LLM系列 | 02: Vicuna简介及模型部署实测

    LLM系列 | 02: Vicuna简介及模型部署实测

    月黑见渔灯,孤光一点萤。微微风簇浪,散作满河星。小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖钢丝球的小男孩。今天这篇小作文主要介绍Vicuna模型、基于官方模型13B模型部署服务及对话实测。 更多、更新文章欢迎关注 微信公众号 : 小窗幽记机器学习

    2024年02月06日
    浏览(11)
  • LLM大模型推理加速实战:vllm、fastllm与llama.cpp使用指南

    随着人工智能技术的飞速发展,大型语言模型(LLM)在诸如自然语言处理、智能问答、文本生成等领域的应用越来越广泛。然而,LLM模型往往具有庞大的参数规模,导致推理过程计算量大、耗时长,成为了制约其实际应用的关键因素。为了解决这个问题,一系列大模型推理加

    2024年04月13日
    浏览(7)
  • LLMs之Code:Code Llama的简介(衍生模型如Phind-CodeLlama/WizardCoder)、安装、使用方法之详细攻略

    LLMs之Code:Code Llama的简介(衍生模型如Phind-CodeLlama/WizardCoder)、安装、使用方法之详细攻略

    LLMs之Code:Code Llama的简介(衍生模型如Phind-CodeLlama/WizardCoder)、安装、使用方法之详细攻略 导读 :2023年08月25日(北京时间),Meta发布了Code Llama,一个可以使用 文本提示生成代码 的大型语言模型(LLM)。Code Llama是最先进的公开可用的LLM代码任务,并有潜力 使工作流程更快 ,更有

    2024年02月08日
    浏览(12)
  • 【llm 微调code-llama 训练自己的数据集 一个小案例】

    根据情况改就行了,jsonl格式,三个字段:context, answer, question 主要参考 https://zhuanlan.zhihu.com/p/660933421

    2024年01月21日
    浏览(9)
  • Code Llama 简介:编码未来的综合指南

    Code Llama 简介:编码未来的综合指南

    在不断发展的技术领域,Meta 推出的 Code Llama 标志着一次重大飞跃。这种最先进的大型语言模型 (LLM) 不仅仅是开发人员武器库中的另一个工具;它也是开发人员的工具之一。它改变了游戏规则。让我们深入了解 Code Llama 提供的功能、它与DemoGPT的合作,以及它对未来编码的潜力

    2024年02月09日
    浏览(7)
  • MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)

    MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)

    我的 ChatRWKV 学习笔记和使用指南 这篇文章是学习RWKV的第一步,然后学习了一下之后决定自己应该做一些什么。所以就在RWKV社区看到了这个将RWKV World系列模型通过MLC-LLM部署在各种硬件平台的需求,然后我就开始了解MLC-LLM的编译部署流程和RWKV World模型相比于MLC-LLM已经支持的

    2024年02月10日
    浏览(4)
  • LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略

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

    LLMs之Code:Code Llama的简介(衍生模型如Phind-CodeLlama/WizardCoder)、安装、使用方法之详细攻略 导读 :2023年08月25日(北京时间),Meta发布了Code Llama,一个可以使用 文本提示生成代码 的大型语言模型(LLM)。Code Llama是最先进的公开可用的LLM代码任务,并有潜力 使工作流程更快 ,更有

    2024年02月10日
    浏览(12)
  • 【LLM系列之LLaMA2】LLaMA 2技术细节详细介绍!

    【LLM系列之LLaMA2】LLaMA 2技术细节详细介绍!

    Llama 2 发布! Meta 刚刚发布了 LLaMa 2,它是 LLaMA 的下一代版本,具有商业友好的许可证。🤯😍 LLaMA 2 有 3 种不同的尺寸:7B、13B 和 70B。 7B 13B 使用与 LLaMA 1 相同的架构,并且是商业用途的 1 对 1 替代🔥 🧮 7B、13B 70B 参数版本 🧠 70B模型采用分组查询注意力(GQA) 🛠 聊天模

    2024年02月16日
    浏览(10)
  • 《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇

    《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇

    我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fiddler也可以录制Jmter脚本(而且有些页面,由于安全设置等原因,使用Jmeter直接无法打开录制时,这时就需要用到Fiddler这个专业的抓包工具了。今天宏哥就讲解一下:如何使用Fiddler生成Jmeter脚

    2024年02月14日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包