我們非常高興地向大家介紹 Seed-Coder,它是一個功能強大、透明、參數高效的 8B 級開源代碼模型系列,包括基礎變體、指導變體和推理變體。Seed-Coder 通過以下亮點促進開放代碼模型的發展。
- 以模型為中心:Seed-Coder主要利用大語言模型(LLMs)而非手工規則進行代碼數據過濾,最大限度地減少了預訓練數據構建中的人工工作量。
- 透明:我們公開分享了以模型為核心的數據管道的詳細見解,包括整理GitHub數據、提交數據和代碼相關網絡數據的方法。
- 強大:Seed-Coder在多種編碼任務中,在同等規模的開源模型中實現了最先進的性能。
Seed-Coder-8B-Base 模型,具備以下特征:
- 類型:因果語言模型
- 訓練階段:預訓練
- 數據來源:GitHub 數據、代碼相關網絡數據
- 訓練標記:6 萬億
- 支持功能:代碼補全、代碼填充(中間填充)
- 上下文長度:32,768
代碼示例
您需要安裝最新版本的 transformers
和accelerate
:
pip install -U transformers accelerate
這是一個簡單的示例,展示了如何使用 Hugging Face 的 pipeline API 加載模型并執行代碼生成:
import transformers
import torchmodel_id = "ByteDance-Seed/Seed-Coder-8B-Base"pipeline = transformers.pipeline("text-generation",model=model_id,model_kwargs={"torch_dtype": torch.bfloat16},device_map="auto",
)output = pipeline("def say_hello_world():", max_new_tokens=100)
print(output[0]["generated_text"])
填充中間部分(FIM)示例
Seed-Coder-8B-Base 原生支持 填充中間部分(FIM) 任務,即模型被提供一個前綴和一個后綴,并要求預測缺失的中間內容。這使得在代碼填充場景中,如完成函數體或在兩段代碼之間插入缺失的邏輯成為可能。
import transformers
import torchmodel_id = "ByteDance-Seed/Seed-Coder-8B-Base"pipeline = transformers.pipeline("text-generation",model=model_id,model_kwargs={"torch_dtype": torch.bfloat16},device_map="auto",
)# You can concatenate a prefix, a special FIM separator token, and a suffix
prefix = "def add_numbers(a, b):\n "
suffix = "\n return result"# Combine prefix and suffix following the FIM format
fim_input = '<[fim-suffix]>' + suffix + '<[fim-prefix]>' + prefix + '<[fim-middle]>'output = pipeline(fim_input, max_new_tokens=512)
print(output[0]["generated_text"])
評估
Seed-Coder-8B-Base 在代碼生成、代碼補全和代碼推理基準測試中進行了評估,在約 8B 的開源模型中實現了最先進的性能。
DeepSeek-Coder-6.7B-Base | OpenCoder-8B-Base | Qwen2.5-Coder-7B | Seed-Coder-8B-Base | |
---|---|---|---|---|
HumanEval | 47.6 | 66.5 | 72.0 | 77.4 |
MBPP | 70.2 | 79.9 | 79.4 | 82.0 |
MultiPL-E | 44.7 | 61.0 | 58.8 | 67.6 |
cruxeval-O | 41.0 | 43.9 | 56.0 | 48.4 |
Seed-Coder-8B-Instruct 模型,具有以下特點:
- 類型:因果語言模型
- 訓練階段:預訓練與后訓練
- 數據來源:公共數據集、合成數據
- 上下文長度:32,768
代碼示例
您需要安裝最新版本的 transformers
和accelerate
:
pip install -U transformers accelerate
這是一個簡單的示例,展示了如何使用 Hugging Face 的 pipeline API 加載模型并執行代碼生成:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torchmodel_id = "ByteDance-Seed/Seed-Coder-8B-Instruct"tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)messages = [{"role": "user", "content": "Write a quick sort algorithm."},
]input_ids = tokenizer.apply_chat_template(messages,tokenize=True,return_tensors="pt",add_generation_prompt=True,
).to(model.device)outputs = model.generate(input_ids, max_new_tokens=512)
response = tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True)
print(response)
評估
Seed-Coder-8B-Instruct 在廣泛的編碼任務中進行了評估,包括代碼生成、代碼推理、代碼編輯和軟件工程,在約 8B 的開源模型中實現了最先進的性能。
Model | HumanEval | MBPP | MHPP | BigCodeBench (Full) | BigCodeBench (Hard) | LiveCodeBench (2410 – 2502) |
---|---|---|---|---|---|---|
CodeLlama-7B-Instruct | 40.9 | 54.0 | 6.7 | 21.9 | 3.4 | 3.6 |
DeepSeek-Coder-6.7B-Instruct | 74.4 | 74.9 | 20.0 | 35.5 | 10.1 | 9.6 |
CodeQwen1.5-7B-Chat | 83.5 | 77.7 | 17.6 | 39.6 | 18.9 | 3.0 |
Yi-Coder-9B-Chat | 82.3 | 82.0 | 26.7 | 38.1 | 11.5 | 17.5 |
Llama-3.1-8B-Instruct | 68.3 | 70.1 | 17.1 | 36.6 | 13.5 | 11.5 |
OpenCoder-8B-Instruct | 83.5 | 79.1 | 30.5 | 40.3 | 16.9 | 17.1 |
Qwen2.5-Coder-7B-Instruct | 88.4 | 82.0 | 26.7 | 41.0 | 18.2 | 17.3 |
Qwen3-8B | 84.8 | 77.0 | 32.8 | 51.7 | 23.0 | 23.5 |
Seed-Coder-8B-Instruct | 84.8 | 85.2 | 36.2 | 53.3 | 20.5 | 24.7 |
Seed-Coder-8B-Reasoning 模型,具有以下特點:
- 類型:因果語言模型
- 訓練階段:預訓練與后訓練
- 數據來源:公共數據集
- 上下文長度:32,768
代碼示例
您需要安裝最新版本的 transformers
和accelerate
:
pip install -U transformers accelerate
這是一個簡單的示例,展示了如何使用 Hugging Face 的 pipeline API 加載模型并執行代碼生成:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torchmodel_id = "ByteDance-Seed/Seed-Coder-8B-Reasoning"tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)messages = [{"role": "user", "content": "Write a quick sort algorithm."},
]input_ids = tokenizer.apply_chat_template(messages,tokenize=True,return_tensors="pt",add_generation_prompt=True,
).to(model.device)outputs = model.generate(input_ids, max_new_tokens=16384)
response = tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True)
print(response)
評估
Seed-Coder-8B-Reasoning 在競爭性編程中表現出色,表明較小的語言模型也能在復雜推理任務中勝任。我們的模型在 IOI’2024 上超越了 QwQ-32B 和 DeepSeek-R1,并在 Codeforces 競賽中取得了與 o1-mini 相當的 ELO 評分。
有關詳細的基準性能,請參閱我們的📑 技術報告.