LLMs之Code:Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略
目录
Qwen2.5-Coder的简介
1、Qwen2.5-Coder 特点
Qwen2.5-Coder的安装和使用方法
1、安装
2、使用方法
Qwen2.5-Coder的案例应用
1、基础用法
Qwen2.5-Coder的简介
2024年11月,发布Qwen2.5-Coder 是阿里云Qwen团队开发的Qwen2.5大型语言模型系列的代码版本。它是一个强大的、多样化的、实用的开源代码大型语言模型 (Open CodeLLM)。此前被称为 CodeQwen1.5。
1、Qwen2.5-Coder 特点
强大 (Powerful):Qwen2.5-Coder-32B-Instruct 成为当前最先进的开源代码模型,其编码能力可与 GPT-4o 相媲美。它展现出强大且全面的编码能力,同时具备良好的通用和数学能力。
多样 (Diverse):在之前开源的 1.5B/7B 两个尺寸的基础上,此次发布增加了四个模型尺寸,包括 0.5B/3B/14B/32B。目前,Qwen2.5-Coder 涵盖了六个主流模型尺寸,以满足不同开发者的需求。
实用 (Practical):该项目探索了 Qwen2.5-Coder 在代码助手和 Artifacts 两种场景中的实用性,并提供了一些示例,展示了 Qwen2.5-Coder 在现实世界场景中的潜在应用。
长上下文理解和生成:支持 128K tokens 的上下文长度。
支持多种编程语言:支持 92 种编程语言 (具体语言列表见原文)。
保留了基础模型的数学和通用能力优势。
Qwen2.5-Coder的安装和使用方法
1、安装
需要 Python 3.9 或更高版本以及 transformers>4.37.0 (因为 transformers 从 4.37.0 版本开始集成 Qwen2 代码)。可以使用以下命令安装所需的包:pip install -r requirements.txt
使用方法:主要通过 transformers 库进行调用。 使用方法根据任务类型不同而有所区别,
2、使用方法
(1)、与 Qwen2.5-Coder-32B-Instruct (指令模型) 进行对话
使用 AutoModelForCausalLM 和 AutoTokenizer 加载模型和分词器,并使用 apply_chat_template 函数将消息转换为模型可理解的格式,然后使用 generate 方法进行对话。 max_new_tokens 参数控制响应的最大长度。 代码示例见原文。
(2)、使用 Qwen2.5-Coder-32B (基础模型) 进行代码补全
加载模型和分词器,使用 generate 方法进行代码补全。 max_new_tokens 参数控制输出的最大长度。 代码示例见原文。
(3)、处理长文本 (超过 32,768 tokens):
使用 YaRN 技术来处理超过 32,768 tokens 的长输入。 需要在 config.json 文件中添加相应的配置。
(4)、文件级代码补全 ("fill-in-the-middle")
使用 <|fim_prefix|>, <|fim_suffix|>, 和 <|fim_middle|> 这三个特殊标记来表示代码结构的不同部分。 代码示例见原文。
(5)、仓库级代码补全
使用 <|repo_name|> 和 <|file_sep|> 这两个特殊标记来表示仓库结构。 代码示例见原文。
重要提示:Qwen2.5-Coder-[0.5-32]B-Instrcut 是用于聊天的指令模型;Qwen2.5-Coder-[0.5-32]B 是基础模型,通常用于代码补全,并且是微调的更好起点。 模型更新了特殊标记及其对应的标记 ID,以保持与 Qwen2.5 的一致性。新的特殊标记及其 ID 见原文。
Qwen2.5-Coder的案例应用
1、基础用法
>> 代码助手:作为代码助手,可以根据提示生成代码,进行代码补全,以及处理长文本和文件级的代码补全任务。
>> Artifacts:项目探索了在Artifacts场景下的应用,但具体细节未在提供的文本中详细说明。
>> Gradio 接口:提供了 Gradio 接口,方便用户使用 (包含聊天模式和 Artifacts 模式)。 运行方法见原文。
>> vLLM 部署:支持使用 vLLM 进行部署,包括离线批量推理和多 GPU 分布式服务。 示例代码见原文。
>> 模型下载:模型可以在 Hugging Face 和 ModelScope 上下载。 不同尺寸和类型的模型 (base, instruct, 以及不同量化方式的模型) 均可下载,具体见原文表格。