Hugging Face 欢迎 Qwen2.5-Coder 系列

2024年11月12日(今天),通义千问团队发布了与 GPT-4o 编程能力相媲美的最先进(SoTA)语言模型。这些模型受到了社区的热烈欢迎,我向通义千问团队在研究方面的开放性致敬。
如果您想了解更多关于模型系列或基准测试的信息,请访问官方博客文章。如果您还在阅读本文,那么让我们为即将阅读的内容设置一些背景。在这篇博客文章中,我将分享我对模型发布以及我真正喜欢它的一些想法。
快速链接
- Qwen2.5-Coder 系列
- Qwen2.5-Coder Assistant Space
- Qwen2.5-Coder Artifact Space
- 与 Qwen2.5-Coder-32B 的 Hugging Chat
是否应该发布闭源模型?
在 Hugging Face 工作让我坚信开源研究。我全心全意地相信,如果研究以开放的方式进行,它将蓬勃发展,并带来一个更美好、更强大的未来。
虽然我不主张封闭式研究,但我认为在一定程度上是必要的。投入心血进行开放出版的人需要一个超越的基准。这建立了一种竞争情景,在我看来,这将始终有助于加速创新。我的立场和我的工作旨在培养健康的竞争,并限制有害的方面。
Qwen2.5-Coder 系列
现在我已经对竞争和开放性进行了一些背景介绍,我发现通义千问团队正在利用健康的竞争。他们对社区的开放性以及他们与闭源研究竞争的努力确实令人着迷。就我而言,我没想到新的编码器模型系列会如此接近 GPT-4o 的能力。
我个人非常喜欢这个系列所倡导的理念:
- 强大:从团队发布的基准测试来看,这些模型在编程任务中表现出色。
- 多样化:我们有各种不同参数规模的模型,从 0.5B 到 32B。现在每个人都可以根据自己的具体用例使用这些模型。
- 实用:当用作编码助手时,这些模型可以显著提高效率和生产力。
发布随附资源
在本节中,我将重点介绍随发布附带的一些资源。
Hugging Face Spaces
Hugging Face Spaces 提供了一种简单的方式,可以直接在您的个人资料或组织资料上托管机器学习演示应用程序。使用 Qwen 团队创建的 Hugging Face Spaces 是使用 Qwen2.5-Coder 系列最快、最简单的方式。
通义千问团队围绕这些模型构建了两个 Space:
Coder Assistant:在这里,您可以与所有经过指令微调的模型进行聊天。这是探索模型理解和根据您的提示生成代码能力的绝佳方式。
Coder Artifact:这是我个人最喜欢的。您可以使用 32B 模型为您创建应用程序。如果您使用过 Claude 及其工件,这会感觉非常熟悉。它是根据高级描述生成代码工件的优秀工具。
一个有趣的方面是这些 Space 是用 Gradio 5 创建的(非常感谢 Gradio 团队的努力)。如果您想了解更多关于 Gradio 以及如何使用它创建机器学习演示的信息,请访问文档。
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 使用它的方法。
将模型部署到您最喜欢的端点从未如此简单。只需点击几下,您的模型就可以启动并运行,随时为您的应用程序提供服务。
“小模型什么时候发布?”
我们知道人们倾向于本地模型。通义千问团队非常关心社区。他们还发布了 GGUF 模型格式,使模型能够兼容在您的本地系统上运行。这意味着您可以利用 Qwen2.5-Coder 模型的功能,而无需依赖云服务。
以下是在本地运行模型的选项:
微调模型
它已经了解 40 种不同的编程语言,但有时这还不够。您可能希望在训练数据集中代表性较低的编程语言上微调模型,或根据您的特定领域进行定制。
您只需要一个好的数据集,其余的我们都已准备好。使用 SageMaker 或 AutoTrain 选项在您的自定义数据集上微调模型,然后您就可以开始了。
结论
Qwen2.5-Coder 系列代表了开源人工智能研究的重大进步,尤其是在代码生成领域。通过开放共享其尖端模型,通义千问团队不仅突破了可能性的界限,还通过协作培养了一个创新蓬勃发展的社区。
他们对开放性、多样性和实用性的承诺为其他人树立了榜样。
开放,如通义千问。