Skip to content

Commit bf4af66

Browse files
committed
add Seed-Coder
1 parent 39fe642 commit bf4af66

File tree

5 files changed

+71
-8
lines changed

5 files changed

+71
-8
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pure C++ implementation based on [@ggerganov](https://github.com/ggerganov)'s [g
1313

1414
**What's New:**
1515

16+
* 2025-05-11: Seed-Coder
1617
* 2025-04-30: QWen3, MiMo
1718
* 2025-02-17: [ggml updated](https://github.com/ggml-org/llama.cpp/tree/658987cfc9d752dca7758987390d5fb1a7a0a54a) again
1819
* 2025-04-18: Apriel

docs/models.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@
128128
* [x] Reke-Flash: [Flash-3](https://huggingface.co/RekaAI/reka-flash-3/tree/69cea64942e4db4809b757ae2b0d312b4b610263) (`-a Reka-Flash-3`)
129129
* [x] Nemotron: [Llama-3.1-Nemotron-Nano-8B](https://huggingface.co/nvidia/Llama-3.1-Nemotron-Nano-8B-v1/tree/42f62a403ee352e019834442673256e3fe3de275)
130130
* [x] LlaMA-4: [Scout-Instruct](https://huggingface.co/meta-llama/Llama-4-Scout-17B-16E-Instruct/tree/7dab2f5f854fe665b6b2f1eccbd3c48e5f627ad8), [Maverick-Instruct](https://huggingface.co/meta-llama/Llama-4-Maverick-17B-128E-Instruct/tree/f0ee6477b90b7a6aaefd2cfdf1b4a05d36184137)
131+
* [x] Seed-Coder: [Instruct-8B](https://huggingface.co/ByteDance-Seed/Seed-Coder-8B-Instruct/tree/7b934eb8f2ce8f40191fa26d12236eb8bc3a77aa),
132+
[Reasoning-8B](https://huggingface.co/ByteDance-Seed/Seed-Coder-8B-Reasoning/tree/47f18f877ea7d6aa5c0d87a474f30d420b22bd98) (`--name Seed-Coder`)
131133

132134
For other models that using `LlamaForCausalLM` architecture, for example, [aiXcoder-7B](https://huggingface.co/aiXcoder/aixcoder-7b-base), try `-a Yi`.
133135

@@ -256,7 +258,7 @@ Please use `--format completion` for these models.
256258

257259
* LlaMA-like (`LlamaForCausalLM`):
258260
* [x] DeepSeek: [Coder-Base-1.3B](https://huggingface.co/deepseek-ai/deepseek-coder-1.3b-base) (`-a DeepSeekCoder`), [Coder-Base-6.7B](https://huggingface.co/deepseek-ai/deepseek-coder-6.7b-base) (`-a DeepSeekCoder`)
259-
261+
* [x] Seed-Coder: [Base-8B](https://huggingface.co/ByteDance-Seed/Seed-Coder-8B-Base/tree/44d3e28414b052f1fc8f9b58740edd2d8f2c2c31) (`--name Seed-Coder`)
260262

261263
* Mistral (`MistralForCausalLM`, `MixtralForCausalLM`)
262264
* [x] Mistral: [Base-7B-v0.1](https://huggingface.co/mistralai/Mistral-7B-v0.1), [Base-7B-v0.3](https://huggingface.co/mistralai/Mistral-7B-v0.3)

models/llama.cpp

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,23 @@ namespace v3
195195
{}
196196

197197
Tokenizer(const BaseConfig &config, BaseHistoryEncoder *encoder)
198-
: BaseTokenizer::BaseTokenizer(config, encoder)
198+
: BaseTokenizer::BaseTokenizer(config, encoder), is_seed_coder(false)
199199
{
200200
sys_prompt = "";
201201
}
202202

203+
bool load_config(const json::JSON &config) override
204+
{
205+
auto name = config["model_name"];
206+
if (name.IsString())
207+
{
208+
is_seed_coder = name.ToString() == "Seed-Coder";
209+
if (is_seed_coder)
210+
sys_prompt = "You are an AI programming assistant, utilizing the Seed-Coder model, developed by ByteDance Seed, and you only answer questions related to computer science. For politically sensitive questions, security and privacy issues, and other non-computer science questions, you will refuse to answer.\n\n";
211+
}
212+
return BaseTokenizer::load_config(config);
213+
}
214+
203215
size_t load(tokenizer::DataReader *buffer, int n_vocab) override
204216
{
205217
tp = new tokenizer::BPEProcessor2(
@@ -230,24 +242,37 @@ namespace v3
230242

231243
void encode_header(const std::string &text, std::vector<int> &ids) const
232244
{
233-
ids.push_back(start_header_id);
234-
encode(text, ids);
235-
ids.push_back(end_header_id);
236-
ids.push_back(nl_token_id);
237-
ids.push_back(nl_token_id);
245+
// compatible with Seed-Coder
246+
if (start_header_id >= 0)
247+
{
248+
ids.push_back(start_header_id);
249+
encode(text, ids);
250+
ids.push_back(end_header_id);
251+
ids.push_back(nl_token_id);
252+
ids.push_back(nl_token_id);
253+
}
254+
else
255+
{
256+
ids.push_back(bos_token_id);
257+
encode(text, ids);
258+
ids.push_back(nl_token_id);
259+
}
238260
}
239261

240262
void encode_content(const std::string &text, std::vector<int> &ids) const
241263
{
242264
encode(text, ids);
243-
ids.push_back(eot_id);
265+
ids.push_back(eot_id >= 0 ? eot_id : eos_token_id);
244266
}
245267

246268
public:
247269
int start_header_id;
248270
int end_header_id;
249271
int eot_id;
250272
int nl_token_id;
273+
274+
private:
275+
bool is_seed_coder;
251276
};
252277

253278
void ChatHistoryEncoder::append_ai(int round_idx, const std::string &ai, std::vector<int> &ids) const

scripts/models.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2590,5 +2590,39 @@
25902590
}
25912591
}
25922592
}
2593+
},
2594+
"seed-coder": {
2595+
"brief": "Seed-Coder, a powerful, transparent, and parameter-efficient family of open-source code models at the 8B scale, featuring base, instruct, and reasoning variants.",
2596+
"default": "8b-it",
2597+
"license": "MIT",
2598+
"variants": {
2599+
"8b-it": {
2600+
"default": "q8",
2601+
"quantized": {
2602+
"q8": {
2603+
"size": 8771479824,
2604+
"url": "chatllm_quantized_seed-coder/seed-coder-8b-it.bin"
2605+
}
2606+
}
2607+
},
2608+
"8b-base": {
2609+
"default": "q8",
2610+
"quantized": {
2611+
"q8": {
2612+
"size": 8771479696,
2613+
"url": "chatllm_quantized_seed-coder/seed-coder-8b-base.bin"
2614+
}
2615+
}
2616+
},
2617+
"8b-reasoning": {
2618+
"default": "q8",
2619+
"quantized": {
2620+
"q8": {
2621+
"size": 8771479856,
2622+
"url": "chatllm_quantized_seed-coder/seed-coder-8b-reasoning.bin"
2623+
}
2624+
}
2625+
}
2626+
}
25932627
}
25942628
}

src/models.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2257,6 +2257,7 @@ namespace chatllm
22572257
oss << "Model name : " << loader.model_name;
22582258
if (loader.model_native_name.size() > 0)
22592259
oss << " (" << loader.model_native_name << ")";
2260+
oss << " (" << std::hex << std::setw(8) << std::setfill('0') << model_type << ")";
22602261
oss << std::endl;
22612262

22622263
oss << "Model type : " << to_string(purpose);

0 commit comments

Comments
 (0)