Ollama 应用实践:如何选择合适的 Coding 模型 ?

选择一个合适的 Coding 模型对于提高开发效率和确保代码质量至关重要。Ollama 提供了多种 Coding 模型,每种模型都针对不同的编程需求进行了优化。以下是如何选择合适的 Coding 模型的一些关键因素:

1. 确定编程需求

  • 语言支持:确保模型支持您使用的编程语言,特别是当您的项目涉及多种编程语言时。
  • 特定任务优化:选择那些为特定任务,如SQL查询生成或代码翻译等,进行了优化的模型。

2. 模型性能

  • 基准测试表现:选择在相关基准测试中表现出色的模型,这些测试结果可以作为模型性能的参考。

3. 上下文理解能力

  • 长上下文支持:如果您需要处理大量代码和数据,选择能够支持长上下文的模型,这有助于模型更好地理解复杂的代码结构。

4. 模型特性

  • 代码生成:选择能够生成高质量、易于维护的代码的模型。
  • 代码理解:选择能够深入理解现有代码并提供改进建议的模型。

5. 社区和文档

  • 活跃社区:选择那些拥有活跃社区和详尽文档的模型,这有助于快速解决问题并充分利用模型的能力。

推荐的 Coding 模型

模型 参数大小 说明
CodeGeeX4 9B 适合需要高性能代码生成能力的场景
DeepSeek-Coder-V2 8B 开源 MoE 代码语言模型,适合中英文双语编程任务
CodeQwen 1.5 8B 适合长上下文编程任务和多语言支持需求
CodeGemma 9B 轻量级模型,专注于代码生成和自然语言理解
Code Llama 16B 支持多种编程语言的代码生成和讨论
StarCoder2 9B 透明训练的开放代码 LLM,多种参数大小可选
Replete-Coder-Qwen2 3.8B 通用模型,专门训练于 100 多种编码语言
SQLCoder-8B 8B 专注于 Postgres、Redshift 和 Snowflake 的文本到 SQL 生成。

CodeGeeX4

CodeGeeX4 是一个开源的多语言代码生成模型,在 GLM-4-9B 上持续训练,显著增强了其代码生成能力。
CodeGeeX4-ALL-9BBigCodeBenchNaturalCodeBench 等公开基准测试中取得了极具竞争力的表现,是目前性能最强的 10B 参数以内的代码生成模型,甚至超越了比它大很多的通用模型,在推理速度和模型性能上取得了最佳平衡。

ollama run codegeex4

DeepSeek-Coder-V2

DeepSeek-Coder-V2 是一个开源的混合专家 (MoE) 代码语言模型,在代码特定任务中实现了与 GPT4-Turbo 相当的性能。DeepSeek-Coder-V2 是使用来自高质量多源语料库的 6 万亿个 token 从 DeepSeek-Coder-V2-Base 进一步预训练的。

:此模型为中英文双语。

该模型有两种尺寸:
  • 16B Lite:ollama run deepseek-v2:16b
  • 236B:ollama run deepseek-v2:236b
ollama run deepseek-coder-v2

CodeQwen 1.5

CodeQwen 1.5 是一个在大量代码数据上进行预训练的大型语言模型。

CodeQwen1.5 基于 Qwen1.5,基于3万亿个token的代码数据进行训练,主要特点包括:

  • 强大的代码生成能力和一系列基准测试中的竞争性能

  • 支持长上下文理解和生成,最大上下文长度为 64K 个 token

  • 支持 92 种编码语言

  • 在文本到 SQL、修复错误和其他编码用例方面表现出色。

  • 文档地址:https://ollama.com/library/codeqwen

ollama run codeqwen

CodeGemma

CodeGemma 是一组功能强大的轻量级模型,可以执行各种编码任务,如填入中间代码完成、代码生成、自然语言理解、数学推理和指令遵循。

变体

  • instruct 针对自然语言到代码聊天和指令跟踪的 7b 指令调整变体
  • code 7b 预训练变体,专门用于从代码前缀和/或后缀完成代码和生成代码
  • 2b 最先进的 2B 预训练变体,可提供高达 2 倍的代码完成速度

优点

  • 智能代码完成和生成:无论您是在本地工作还是使用 Google Cloud 资源,都可以完成行、功能,甚至生成整个代码块。
  • 增强准确性:通过对来自网络文档、数学和代码的 5000 亿个主要为英语的语言数据进行训练,CodeGemma 模型生成的代码不仅在语法上更正确,而且在语义上更有意义,从而减少了错误和调试时间。
  • 多语言能力:支持Python、JavaScript、Java、Kotlin、C++、C#、Rust、Go等语言。
  • 简化的工作流程:将 CodeGemma 模型集成到您的开发环境中,以减少样板代码的编写,并更快地专注于重要且差异化的代码。

ollama run codegemma

Code Llama

Code Llama 是一个基于Llama 2构建的生成和讨论代码的模型。它旨在让开发人员的工作流程更快、更高效,让人们更容易学习编码。它可以生成代码和关于代码的自然语言。Code Llama 支持当今使用的许多最流行的编程语言,包括 Python、C++、Java、PHP、Typescript (Javascript)、C#、Bash 等。

ollama run codellama:7b

StarCoder2

StarCoder2 是下一代透明训练的开放代码 LLM,有三种大小:3B、7B 和 15B 参数。

StarCoder2 支持最多 16,384 个标记的上下文窗口,是下一代透明训练的开放代码 LLM。

  • starcoder2:instruct(新):遵循自然和人类书面指令的 15B 模型
  • starcoder2:15b 接受了 600 多种编程语言和 4+ 万亿个标记的训练。
  • starcoder2:7b 接受了 17 种编程语言和 3.5+ 万亿个标记的训练。
  • starcoder2:3b 接受了 17 种编程语言和 3+ 万亿个标记的训练。

StarCoder2-15B 是同类产品中最好的,在很多评估中与 33B+ 模型相匹配。StarCoder2-3B 的性能与 StarCoder1-15B 相当。

ollama run starcoder2

Replete-Coder-Qwen2

Replete-Coder-Qwen2-1.5b 是一个通用模型,专门针对 100 多种编码语言的编码进行了训练。用于训练该模型的数据包含 25% 的非代码指令数据和 75% 的编码指令数据,总计多达 390 万行,约 10 亿个标记,或 7.27GB 的指令数据。用于训练此模型的数据在训练之前是 100% 未经审查的,然后完全去重。

Replete-Coder 模型(包括 Replete-Coder-llama3-8b 和 Replete-Coder-Qwen2-1.5b)具有以下特点:

  • 超过 100 种编码语言的高级编码功能
  • 高级代码翻译(语言之间)
  • 安全及漏洞防范相关编码能力
  • 一般用途
  • 未经审查的使用
  • 函数调用
  • 高等数学的运用
  • 在低端 (8b) 和移动 (1.5b) 平台上使用

注意:Replete-Coder 系列模型是在 8192 个 token 的上下文窗口上进行微调的。超出此上下文窗口的性能无法保证。

ollama run rouge/replete-coder-qwen2-1.5b

Demoing SQLCoder-8B

一种适用于 Postgres、Redshift 和 Snowflake 的文本到 SQL 生成的强大的语言模型,可与最强大的通用前沿模型相媲美。

ollama run mannix/defog-llama3-sqlcoder-8b

结论

选择正确的 Coding 模型可以显著提升开发效率和代码质量。Ollama 提供的多样化 Coding 模型能够满足从多语言支持到特定编程任务的广泛需求。通过考虑项目需求、模型性能、上下文理解能力和社区支持,您可以为您的项目选择最合适的模型。

作者:Jeebiz  创建时间:2024-07-09 11:57
最后编辑:Jeebiz  更新时间:2024-08-29 20:42