OpenSpark-13B-Chat / README_zh.md
freedomking's picture
Update README_zh.md
2bb7a3a verified

OpenSpark-13B-Chat

中文 | English

⚠️ 注意: 这是讯飞星火的一个较早期版本(2024 年发布)。我们将其转换为 Hugging Face 格式,主要是为了研究目的——帮助社区研究早期大模型的架构设计、与现代模型进行效果对比,以及理解大模型技术的演进历程。

这是由社区将讯飞星火(iFlytek Spark)13B 模型转换为 Hugging Face 格式的版本。原始权重从官方 Megatron-DeepSpeed 格式转换而来,可无缝接入 transformers 生态。

权重来源

环境要求

pip install torch transformers sentencepiece

使用方法

你可以使用 transformers 库直接加载。请确保设置 trust_remote_code=True 以加载模型和 Tokenizer 的逻辑代码。

基本用法

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_path = "freedomking/OpenSpark-13B-Chat"

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_path, 
    torch_dtype=torch.bfloat16, 
    device_map="auto", 
    trust_remote_code=True
)

prompt = "<User> 你好,请自我介绍一下。<end><Bot>"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

使用 apply_chat_template (推荐)

对于多轮对话,请使用内置的对话模板:

messages = [
    {"role": "user", "content": "你好,请自我介绍一下。"}
]

inputs = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    return_tensors="pt",
    add_generation_prompt=True
).to(model.device)

outputs = model.generate(
    inputs,
    max_new_tokens=8192,
    temperature=0.7,
    top_k=1,
    do_sample=True,
    repetition_penalty=1.02,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

多轮对话

messages = [
    {"role": "user", "content": "什么是人工智能?"},
    {"role": "assistant", "content": "人工智能是一种模拟人类智能的技术..."},
    {"role": "user", "content": "它有哪些应用场景?"}
]

inputs = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    return_tensors="pt",
    add_generation_prompt=True
).to(model.device)

outputs = model.generate(inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

模型详情

参数
架构 Transformer Decoder (Spark)
参数量 约 13B
隐藏层维度 5120
层数 40
注意力头数 40
词表大小 60,000
上下文长度 32K
RoPE 基数 (Theta) 1,000,000
激活函数 Fast GeLU

推荐生成参数

参数 推荐值
max_new_tokens 8192
temperature 0.7
top_k 1
do_sample True
repetition_penalty 1.02

为什么做这个转换?

本项目为研究社区提供以下价值:

  1. 历史参考: 研究早期中文大模型的架构设计
  2. 效果对比: 与现代模型(如 Qwen、DeepSeek 等)进行性能基准对比
  3. 教育价值: 理解大模型设计理念的演进过程
  4. 生态兼容: 使用标准的 Hugging Face API 运行模型

核心特性

  • 对话模板: 支持 apply_chat_template 进行多轮对话 (<User>...<end><Bot>... 格式)。
  • 标准化命名: 与 Qwen、Llama 等主流模型命名规范保持一致。
  • 自定义 Tokenizer: 完整支持中文标点处理、制表符格式化以及特殊 Token(<ret>, <end>)。
  • BFloat16 支持: 针对现代 GPU 优化,使用 BF16 精度。

许可证

本项目遵循 Apache 2.0 许可证