iFLYTEK Spark Chemistry-X1-13B 是由科大讯飞团队开发的化学专业大语言模型。该模型基于科大讯飞星火-X1(Spark-X1)基础模型,在多样化的化学任务数据集上进行了微调,不仅在解决复杂化学问题方面展现出卓越能力,同时还保持了强大的通用能力。该模型在化学相关基准测试中表现优异,在大多数评估指标上均优于主流通用模型。
核心特性
深度推理架构:融合长思维链(Chain-of-Thought, CoT)与双加工理论的统一框架,支持快速(反应式)和慢速(深思式)两种思维模式
混合训练稳定性:创新的注意力掩码机制,将不同推理模式的训练阶段解耦,避免数据分布间的干扰
化学领域增强:针对特定任务的多阶段优化,包括:
高级知识问答
化学名称转换
分子性质预测
| 参数 | 数值 |
|---|---|
| 总参数量 | 13B |
| 上下文长度 | 32K |
| 窗口长度 | 32K |
| 层数 | 40 |
| 注意力隐藏维度 | 5120 |
| 注意力头数 | 40 |
| 词汇表大小 | 130K |
| 注意力机制 | GQA |
| 激活函数 | GeLU |
*粗体 = 全球最优(Global SOTA)
| 任务 | 指标 | Spark Chemistry-X1-13B | DeepSeek-R1 | Gemini 2.5 pro | GPT-4.1 | O3-mini |
|---|---|---|---|---|---|---|
| 高级知识问答 | Acc | 84.00 | 77.00 | 64.00 | 76.00 | 80.00 |
| 名称转换 | Acc | 71.00 | 6.00 | 15.00 | 4.00 | 6.00 |
| 性质预测 | Acc | 85.33 | 41.73 | 51.19 | 51.66 | 67.58 |
评估说明:
需求
cd /path/to/Spark-Chemistry-X1-13B
# We recommend using Python 3.10
pip install -r requirements.txt
pip install .快速入门
from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch
# Load model and tokenizer
model_name = "iflytek/Spark-Chemistry-X1-13B"
tokenizer = AutoTokenizer.from_pretrained(model_name,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float32,
device_map="auto",
trust_remote_code=True
)
# Reactive
chat_history = [
{
"role" : "user",
"content" : "请回答下列问题:高分子材料是否具有柔顺性主要决定于()的运动能力。\nA、主链链节\nB、侧基\nC、侧基内的官能团或原子?"
}]
inputs = tokenizer.apply_chat_template(
chat_history,
tokenize=True,
return_tensors="pt",
add_generation_prompt=True
).to(model.device)
outputs = model.generate(
inputs,
max_new_tokens=8192,
top_k=1,
do_sample=True,
repetition_penalty=1.02,
temperature=0.7,
eos_token_id=5,
pad_token_id=0,
)
response = tokenizer.decode(
outputs[0][inputs.shape[1] :],
skip_special_tokens=True
)
print(response)from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch
# Load model and tokenizer
model_name = "iflytek/Spark-Chemistry-X1-13B"
tokenizer = AutoTokenizer.from_pretrained(model_name,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float32,
device_map="auto",
trust_remote_code=True
)
# Deliberative
chat_history = [
{
"role" : "system",
"content" : "请你先深入剖析给出问题的关键要点与内在逻辑,生成思考过程,再根据思考过程回答给出问题。思考过程以<unused6>开头,在结尾处用<unused7>标注结束,<unused7>后为基于思考过程的回答内容"
}
,
{
"role" : "user",
"content" : "请回答下列问题:高分子材料是否具有柔顺性主要决定于()的运动能力。\nA、主链链节\nB、侧基\nC、侧基内的官能团或原子?"
}]
inputs = tokenizer.apply_chat_template(
chat_history,
tokenize=True,
return_tensors="pt",
add_generation_prompt=True
).to(model.device)
outputs = model.generate(
inputs,
max_new_tokens=8192,
top_k=1,
do_sample=True,
repetition_penalty=1.02,
temperature=0.7,
eos_token_id=5,
pad_token_id=0,
)
response = tokenizer.decode(
outputs[0][inputs.shape[1] :],
skip_special_tokens=True
)
print(response)可选操作:将 FP32 权重转换为 BF16
Spark Chemistry-X1-13B 发布的权重以 FP32 精度存储。 为提高推理效率,用户可选择将权重转换为 bfloat16(BF16)格式。
from modelscope import AutoModelForCausalLM
import torch
model_name = " /path_to/Spark-Chemistry-X1-13B"
# Load FP32 weights
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float32, # explicitly FP32
device_map="auto",
trust_remote_code=True
)
# Convert to BF16
model = model.to(torch.bfloat16)
# Save BF16 weights for later fast loading
save_path = "./Spark-Chemistry-X1-13B-bf16"
model.save_pretrained(save_path, safe_serialization=True)iFLYTEK Spark Chemistry-X1-13B 根据 Apache 2.0 许可协议授权。