Hugging Face 欢迎 Qwen2.5-Coder 系列

社区文章 发布于 2024年11月12日

image/png

2024年11月12日(今天),通义千问团队发布了与 GPT-4o 编程能力相媲美的最先进(SoTA)语言模型。这些模型受到了社区的热烈欢迎,我向通义千问团队在研究方面的开放性致敬。

如果您想了解更多关于模型系列或基准测试的信息,请访问官方博客文章。如果您还在阅读本文,那么让我们为即将阅读的内容设置一些背景。在这篇博客文章中,我将分享我对模型发布以及我真正喜欢它的一些想法。

快速链接

  1. Qwen2.5-Coder 系列
  2. Qwen2.5-Coder Assistant Space
  3. Qwen2.5-Coder Artifact Space
  4. 与 Qwen2.5-Coder-32B 的 Hugging Chat

是否应该发布闭源模型?

在 Hugging Face 工作让我坚信开源研究。我全心全意地相信,如果研究以开放的方式进行,它将蓬勃发展,并带来一个更美好、更强大的未来。

虽然我不主张封闭式研究,但我认为在一定程度上是必要的。投入心血进行开放出版的人需要一个超越的基准。这建立了一种竞争情景,在我看来,这将始终有助于加速创新。我的立场和我的工作旨在培养健康的竞争,并限制有害的方面。

Qwen2.5-Coder 系列

Benchmark

现在我已经对竞争和开放性进行了一些背景介绍,我发现通义千问团队正在利用健康的竞争。他们对社区的开放性以及他们与闭源研究竞争的努力确实令人着迷。就我而言,我没想到新的编码器模型系列会如此接近 GPT-4o 的能力。

我个人非常喜欢这个系列所倡导的理念:

  1. 强大:从团队发布的基准测试来看,这些模型在编程任务中表现出色。
  2. 多样化:我们有各种不同参数规模的模型,从 0.5B 到 32B。现在每个人都可以根据自己的具体用例使用这些模型。
  3. 实用:当用作编码助手时,这些模型可以显著提高效率和生产力。

发布随附资源

在本节中,我将重点介绍随发布附带的一些资源

Hugging Face Spaces

Hugging Face Spaces 提供了一种简单的方式,可以直接在您的个人资料或组织资料上托管机器学习演示应用程序。使用 Qwen 团队创建的 Hugging Face Spaces 是使用 Qwen2.5-Coder 系列最快、最简单的方式。

通义千问团队围绕这些模型构建了两个 Space:

  1. Coder Assistant:在这里,您可以与所有经过指令微调的模型进行聊天。这是探索模型理解和根据您的提示生成代码能力的绝佳方式。

    Coder Assistant

  2. Coder Artifact:这是我个人最喜欢的。您可以使用 32B 模型为您创建应用程序。如果您使用过 Claude 及其工件,这会感觉非常熟悉。它是根据高级描述生成代码工件的优秀工具。

    Coder Artifact

一个有趣的方面是这些 Space 是用 Gradio 5 创建的(非常感谢 Gradio 团队的努力)。如果您想了解更多关于 Gradio 以及如何使用它创建机器学习演示的信息,请访问文档

Gradio Interface

Hugging Face Hub 入门

既然您对这些演示印象深刻,您可能希望通过自己的代码与模型进行交互。这就是 🤗 Transformers 发挥作用的地方。

您可以选择使用 `pipeline` API 来抽象分词和模型调用

# Use a pipeline as a high-level helper
from transformers import pipeline

messages = [
    {"role": "user", "content": "Write a quick sort algorithm."},
]
pipe = pipeline("text-generation", model="Qwen/Qwen2.5-Coder-32B-Instruct")
pipe(messages)

或者您可以执行更详细的版本以获得更大的控制权

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/Qwen2.5-Coder-32B-Instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "Write a quick sort algorithm."
messages = [
    {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

部署模型

“这个系列的模型看起来太好了;我敢肯定它不能轻易部署。”让我们来证明您错了。以下是一键部署模型并通过 API 使用它的方法。

Deployment Options

将模型部署到您最喜欢的端点从未如此简单。只需点击几下,您的模型就可以启动并运行,随时为您的应用程序提供服务。

“小模型什么时候发布?”

我们知道人们倾向于本地模型。通义千问团队非常关心社区。他们还发布了 GGUF 模型格式,使模型能够兼容在您的本地系统上运行。这意味着您可以利用 Qwen2.5-Coder 模型的功能,而无需依赖云服务。

以下是在本地运行模型的选项:

Local Deployment Options

微调模型

它已经了解 40 种不同的编程语言,但有时这还不够。您可能希望在训练数据集中代表性较低的编程语言上微调模型,或根据您的特定领域进行定制。

您只需要一个好的数据集,其余的我们都已准备好。使用 SageMaker 或 AutoTrain 选项在您的自定义数据集上微调模型,然后您就可以开始了。

Fine-Tuning Options

结论

Qwen2.5-Coder 系列代表了开源人工智能研究的重大进步,尤其是在代码生成领域。通过开放共享其尖端模型,通义千问团队不仅突破了可能性的界限,还通过协作培养了一个创新蓬勃发展的社区。

他们对开放性、多样性和实用性的承诺为其他人树立了榜样。

开放,如通义千问。

社区

注册登录 发表评论