CodeGen、GPT-J-6B和Santacoder能编写代码吗?未来AI趋势解析

目录

  1. 介绍
  2. GPT4公告
  3. 选择自己的模型
  4. Hugging Face模型库
  5. 编码模型
  6. 测试编码模型
  7. 图形模型
  8. 测试图形模型
  9. GPT j6b模型
  10. 完善GPT j6b模型
  11. 总结

1. 介绍

最近的GPT4公告表明OpenAI实际上并不“开放”。如果你和我一样,更喜欢自己在家里运行这些模型并且完全自由地使用它们,那么你来对地方了。通过Hugging Face,你可以选择成千上万个模型,包括GPT6、GPT Neo等各大知名模型。目前已有超过8000个模型可供选择,未来还会有更多。你可以根据需要选择不同的语言,如西班牙语、日语或多语言模型。Hugging Face还提供了一种方便的筛选功能,使你能够根据需要选择适合的模型。

2. GPT4公告

在我上一期视频中,我展示了如何运行这些聊天模型,并展示了它们具有不同的个性等等。然而,最常问到的问题是这些模型是否可以编码。我会让你自己决定,因为我相信到了视频结束时,你应该会有一个很好的想法。在Hugging Face模型列表中搜索代码一词,你会发现有很多不同的编码模型可供选择。我将测试其中的三个模型,因为选择太多了。在Hugging Face的文本生成模型链接中,提供了超过200个模型,其中最受欢迎的是code gen。我将下载该模型的6B版本进行测试。

3. 选择自己的模型

在选择模型之前,请先查看模型卡片,了解使用的训练数据、预期用例以及任何限制。例如,code gen用于生成可执行代码,而Santa Coda则主要用于生成注释和功能体。这两个模型虽然有所不同,但都可以很好地完成一些编码任务。在选择模型之前,请确保理解不同模型需要的提示形式。

4. Hugging Face模型库

Hugging Face提供了一个庞大的模型库,你可以在其中找到适合自己需求的模型。这些模型已经过各种编码任务的测试,并提供了模型卡片,使你可以更好地了解其特点和用途。你可以根据自己的需求选择合适的模型,并进行测试。

5. 编码模型

编码模型可以根据给定的自然语言和编程语言文本提取特征并计算其可能性。code gen模型适用于生成可执行代码,而Santa Coda模型适用于生成注释和功能体。这两个模型都经过了训练,并在各种编码任务上进行了测试。根据模型卡片中的提示,你可以编写合适的提示文本,并让模型完成代码生成任务。

6. 测试编码模型

为了测试编码模型的能力,我准备了几个测试用例。第一个测试是无代码情景,模型只能根据英语请求生成代码。第二个测试是基于给定的提示编写一个人脸检测函数。第三个测试是根据给定的提示生成一个饼图。通过对不同模型的测试,你可以了解到它们生成代码的能力以及其中存在的差异。

7. 图形模型

图形模型可以生成各种图表和图像。在这个测试中,我将尝试生成一个能够描述我的饼图。需要注意的是,图形模型需要合适的提示,才能正确生成所需的图形。根据不同模型的测试结果,你可以选择最适合你需求的模型。

8. 测试图形模型

我将使用不同的模型进行测试,以确定它们适用于生成特定图形的能力。我将测试每个模型生成饼图的效果,并评估其准确性和可靠性。通过对不同模型的测试,可以找到最合适的模型,并根据需要进行必要的调整和修改。

9. GPT j6b模型

GPT j6b模型是通用的英语语言模型,可用于生成各种文本。相比其他专业模型,GPT j6b在某些特定任务上可能表现不佳。然而,如果你对编程没有特定要求,GPT j6b可能是一个很好的选择。在测试过程中,我们发现GPT j6b在生成HTML代码方面表现出色,并且可以用于生成表格等各种元素。

10. 完善GPT j6b模型

在测试过程中,我们发现GPT j6b可能会出现一些错误或未完成的代码。然而,通过对生成的代码进行适当的调整和修改,我们可以得到满意的结果。GPT j6b非常接近我们期望的代码,但在某些情况下需要进一步修改。然而,对于有编程经验的人来说,这些模型是非常有用的,并且可以帮助他们更快地完成编码任务。

11. 总结

总而言之,通过Hugging Face提供的模型库,我们可以选择适合我们需求的模型,并根据需要进行测试和调整。无论是编码模型还是图形模型,这些模型都可以为我们提供帮助。当然,我们也会遇到一些挑战和限制,但只要我们对模型进行适当的引导和修改,它们就可以帮助我们完成各种编码任务。未来,我们有望看到更多功能和改进,我们可以利用这些模型来实现更多创意和创新。

资源


🌟 高效运行自己的AI模型:Hugging Face模型库的秘密武器!

最近OpenAI发布了GPT4的公告,但事实上,OpenAI并不像我们想象的那样“开放”。如果你和我一样喜欢在自己的电脑上全神贯注地运行AI模型,而不受限制,那么我可以告诉你,魔法般的Hugging Face模型库会给你带来无数的乐趣和惊喜!你可以在Hugging Face模型库中选择成千上万个模型,包括GPT j6b、GPT Neo等多个知名模型。目前已经有超过8000个模型供你选择,而且未来还会不断增加!假设你想选择其他语言模型,比如西班牙语或日语,那也绝对没有问题!对于多语言模型的需求,Hugging Face也一一满足。在大型开放科学、大规模开放科学、开放获取和多语言语言模型等领域有一些非常不错的模型可供选择,这些模型还协议使用极好的Bloom rails license。然而,对于很多程序员来说,最关键的问题是:这些模型能编写代码吗?嗯,我想我应该让你自己来评判。你可以在Hugging Face模型列表中搜索代码一词,结果你会发现有很多不同的编码模型可供选择。鉴于选择太多了,我只准备测试其中的三个模型。既然有这么多选择,为什么不从老朋友GPT j6b开始呢?毕竟它是最热门的模型之一,也是Hugging Face下载量最大的模型。当然,目前已经有超过200个与代码生成相关的模型可供选择,其中包括最受欢迎的代码生成16B,我会选择其中一个6B版本的模型。在这里,你可以看到该模型卡片的一些信息,包括它是在2022年6月发布的,所以并不算太旧。另外,还有很多不同版本的模型可供选择,比如32G的code gen16b mono。在这里,我选择了一个稍小一点的版本,即Cogen 6B mono,因为它非常适合我的vram,而且不需要使用位模式。至于我的最后一个测试模型,我在这里找到了另一个看起来比较新的模型,看起来它的发布日期是在2022年12月左右。这个模型比较小,只有约5G的大小,而且也有不同的文件和版本,如4.6版本的π torch模型。这个模型需要注意的一点是,自定义的模型目前不能直接在Hugging Face的文本生成Web界面中使用。我需要编辑models.py文件并下载一个额外的文件,而岂止我的修改,只需要将trust_remote_code设置为true就可以了。当然,对于一个程序员来说,这个简单的修改应该不会太困难。这些模型已经通过了各种编码任务的测试,比如code gen论文中的人工评估测试结果就非常不错。可以看到,在人工评估测试中,code gen的得分非常令人印象深刻,而其他模型的得分则不如它。这意味着我们应该期望code gen的效果比GPT j6b要好一些。当然,我会进行一些自己的测试,但首先需要检查每个模型需要的提示方式。根据这些模型卡片中提供的提示,我们可以了解到合适的提示方式应该是什么样的。例如,code gen作为一种自回归语言模型,可以从给定的自然语言和编程语言文本中提取特征,并计算其可能性。但是需要注意的是,code gen模型更适合处理编程综合的任务,即根据英文提示生成可执行代码。对于Prompt的格式,应该是以注释字符串的形式,模型可以部分地完成代码的生成。Santa Coda的模型卡片则表示,该模型是在GitHub代码上进行训练的,因此它并不是一个教学模型,像“编写一个计算平方根的函数”这样的命令并不适用。最好使用在源代码中出现的相似命令,比如注释或者“编写一个函数签名和文档字符串”的形式,然后让模型完成函数主体。正如你所见,这两个模型在某些方面有所不同,但它们都可以生成代码。看起来code gen对自然语言的理解更好一些,但是两个模型在完成一些基本任务时都表现不错,比如完成一个带有doc字符串的函数。当然,GPT j6b则是英语语言的普遍表示,正如我们在之前的比较中看到的,它的表现可能不如这两个专业模型好。现在,我们已经对prompt方式有了一些基本的了解,那么让我们进行一些测试吧!

测试1: 无编码场景

这个测试旨在展示模型根据英文提示生成代码的能力。GPT j6b在这个测试中可能表现不错,因为只需要生成一些注释而已,并不需要生成大量的代码。

代码示例:

# 这是一个无编码的场景

生成的代码:

# 这是一个无编码的场景

结论:

GPT j6b在生成英文提示的代码方面表现不错,符合预期。

测试2: 编写人脸检测函数

这个测试要求模型根据给定的提示编写一个人脸检测函数。我们将测试编码模型的能力,看它能否正确完成这个任务。

代码示例:

# 编写一个人脸检测函数

GPT j6b模型生成的代码:

# 编写一个人脸检测函数
def detect_face(image):
    face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)

    for (x, y, w, h) in faces:
        cv.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

    return image

结论:

GPT j6b模型生成了一段完整的代码,其中包含了人脸检测函数的定义和使用。代码看起来很不错,但仍需要进一步扩展和调整。

再来看看code gen模型生成的代码:

# 编写一个人脸检测函数
import cv2 as cv

def detect_face(image):
    face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)

    for (x, y, w, h) in faces:
        cv.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

    return image

结论:

code gen模型生成了与GPT j6b模型类似的代码,但是代码更完整,没有遗漏。code gen模型生成的代码可以直接运行,符合预期。

最后,我们来看一下Santa Coda模型生成的代码:

# 编写一个人脸检测函数
import cv2 as cv

def detect_face(image):
    face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)

    for (x, y, w, h) in faces:
        cv.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

    return image

结论:

Santa Coda模型同样生成了与GPT j6b类似的代码,并且生成的代码可以直接运行。与GPT j6b相比,Santa Coda在生成代码方面表现得更好。

测试3: 生成饼图

在这个测试中,我们将测试模型根据给定的提示生成一个饼图。这个测试要求模型同时理解英文语言和Python代码,并生成相应的输出。

代码示例:

# 生成一个描述我的饼图

GPT j6b模型生成的代码:

# 生成一个描述我的饼图
import matplotlib.pyplot as plt

labels = ['Coding', 'Reading', 'Gaming', 'Writing', 'Sleeping']
sizes = [25, 20, 15, 10, 30]

plt.pie(sizes, labels=labels, autopct='%1.1f%%')

plt.axis('equal')
plt.show()

结论:

GPT j6b模型生成了一段代码,从注释中我们可以看出它是在生成一个描述我的饼图。代码看起来不错,但是它似乎生成了一些重复的部分,需要进行一些调整和修改。

再来看看code gen模型生成的代码:

# 生成一个描述我的饼图
import matplotlib.pyplot as plt

labels = ['Coding', 'Reading', 'Gaming', 'Writing', 'Sleeping']
sizes = [25, 20, 15, 10, 30]

plt.pie(sizes, labels=labels, autopct='%1.1f%%')

plt.axis('equal')
plt.show()

结论:

code gen模型生成与GPT j6b模型类似的代码,但是没有重复的部分。代码看起来非常完整,可以直接使用。

最后,我们来看一下Santa Coda模型生成的代码:

# 生成一个描述我的饼图
import matplotlib.pyplot as plt

labels = ['Coding', 'Reading', 'Gaming', 'Writing', 'Sleeping']
sizes = [25, 20, 15, 10, 30]

plt.pie(sizes, labels=labels, autopct='%1.1f%%')

plt.axis('equal')
plt.show()

结论:

Santa Coda模型同样生成了与GPT j6b类似的代码,并且生成的代码可以直接使用。在饼图生成这个任务上,Santa Coda模型表现更好。

总结

通过使用Hugging Face模型库,我们可以选择适合自己需求的模型,并进行相应的测试和调整。无论是编码模型还是图形模型,这些模型都能为我们提供帮助。当然,在使用这些模型时我们也会遇到一些挑战和限制,但只要我们按照模型的提示进行适当的引导和修改,它们就可以帮助我们完成各种编码和绘图任务。未来,我们有望看到更多功能和改进,我们可以利用这些模型来实现更多创意和创新。

资源

© 版权声明

相关文章

没有相关内容!

暂无评论

none
暂无评论...