揭秘ChatTCM-7B-SFT-openmind训练过程:基于LlamaFactory框架的全参数微调实践
揭秘ChatTCM-7B-SFT-openmind训练过程:基于LlamaFactory框架的全参数微调实践
ChatTCM-7B-SFT-openmind是一个专注于中医领域的专业大语言模型,它通过基于LlamaFactory框架的全参数微调训练,实现了对中医知识的深度理解和临床应用能力。这个模型的训练过程展示了如何将现代AI技术与传统医学知识相结合,为中医智能化发展提供了重要参考。
为什么选择LlamaFactory框架进行全参数微调?🤔
LlamaFactory框架作为当前最流行的开源大模型微调框架之一,为ChatTCM-7B-SFT-openmind的训练提供了强大的技术支撑。选择LlamaFactory框架进行全参数微调的主要原因包括:
- 高效的分布式训练支持 - 框架天然支持多GPU并行训练,大大缩短了训练时间
- 灵活的配置选项 - 提供了丰富的超参数调整接口
- 完整的训练监控 - 实时监控训练损失和性能指标
- 易于复现的实验环境 - 确保训练过程的稳定性和可重复性
训练环境与硬件配置 💻
ChatTCM-7B-SFT-openmind的训练在2张A800-80G GPU上进行,这样的硬件配置确保了大规模参数模型的高效训练。训练环境的关键配置包括:
- GPU: 2×A800-80G
- 框架: PyTorch + LlamaFactory
- 基础模型: SylvanL/ChatTCM-7B-Pretrain
- 数据集: SylvanL/Traditional-Chinese-Medicine-Dataset-SFT
从上图的训练损失曲线可以看出,模型在第一个epoch的训练过程中损失值稳定下降,从初始值逐渐收敛到1.069左右,表明训练过程稳定有效。
数据集构建与预处理 📊
训练使用的数据集是专门为中医领域构建的SFT(Supervised Fine-tuning)数据集,包含多个子数据集:
- SFT_medicalKnowledge_source1_548404
- SFT_medicalKnowledge_source2_99334
- SFT_medicalKnowledge_source3_556540
- SFT_nlpDiseaseDiagnosed_61486
- SFT_nlpSyndromeDiagnosed_48665
- SFT_structGeneral_310860
- SFT_structPrescription_92896
- _SFT_traditionalTrans_1959542.json
这些数据集涵盖了中医知识问答、疾病诊断、证型识别、方剂推荐、古文翻译等多个维度,总数据量超过百万条。
训练参数配置详解 ⚙️
ChatTCM-7B-SFT-openmind的训练采用了精心设计的参数配置:
llamafactory-cli train \
--stage sft \
--do_train True \
--model_name_or_path {SylvanL/ChatTCM-7B-Pretrain} \
--preprocessing_num_workers 16 \
--finetuning_type full \
--template default \
--flash_attn auto \
--dataset_dir {dataset_dir} \
--dataset SFT_medicalKnowledge_source1_548404,SFT_medicalKnowledge_source2_99334,SFT_medicalKnowledge_source3_556540,SFT_nlpDiseaseDiagnosed_61486,SFT_nlpSyndromeDiagnosed_48665,SFT_structGeneral_310860,SFT_structPrescription_92896,_SFT_traditionalTrans_1959542.json \
--cutoff_len 1024 \
--learning_rate 5e-05 \
--num_train_epochs 1.0 \
--max_samples 1000000 \
--per_device_train_batch_size 28 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--max_grad_norm 1.0 \
--logging_steps 1 \
--save_steps 1000 \
--warmup_steps 0 \
--optim adamw_torch \
--packing False \
--report_to none \
--output_dir {output_dir} \
--bf16 True \
--plot_loss True \
--ddp_timeout 180000000 \
--include_num_input_tokens_seen True \
--deepspeed cache/ds_z3_offload_config.json
关键训练参数解析:
- 学习率策略:采用5e-05的学习率配合cosine调度器
- 批处理配置:每个设备28个样本,梯度累积步数为4
- 精度设置:使用BF16混合精度训练,节省显存同时保持精度
- 序列长度:截断长度为1024,适合中医文本的特点
训练成果与性能指标 📈
经过1个epoch的全参数微调训练,ChatTCM-7B-SFT-openmind取得了显著的训练成果:
epoch 1:
"num_input_tokens_seen": 1649269888,
"total_flos": 3298213988794368.0,
"train_loss": 1.0691444667014194,
"train_runtime": 587389.2072,
"train_samples_per_second": 3.483,
"train_steps_per_second": 0.016
训练统计亮点:
- 处理了16.5亿个输入token
- 完成了3.3×10¹⁵次浮点运算
- 平均每秒处理3.483个训练样本
- 最终训练损失收敛到1.069
模型能力提升与中医特色 🏥
通过全参数微调,ChatTCM-7B-SFT-openmind在以下中医专业能力方面得到了显著提升:
1. 古文翻译能力 📜
模型具备了将文言文/古文翻译为现代文的能力,这对于理解中医典籍至关重要。中医经典如《黄帝内经》、《伤寒论》等都使用古文撰写,这一能力让模型能够更好地理解和应用传统医学知识。
2. 临床诊断逻辑 🩺
模型学习了主流中医执业医师的临床诊断思维,能够:
- 理解患者症状描述
- 进行证型分析判断
- 提供诊断建议
- 推荐治疗方案
3. 中医知识问答 ❓
模型在中医领域的知识问答能力得到了加强,能够:
- 准确回答中医理论问题
- 解释中医术语和概念
- 提供药物配伍建议
- 分析病例治疗方案
4. 中医NLP基础能力 🔍
模型强化了面向中医术语的自然语言处理能力,支持:
- 中医命名实体识别
- 关系抽取与分析
- 同义实体消歧
- 拼写检查与纠错
推理使用指南 🚀
使用ChatTCM-7B-SFT-openmind进行推理非常简单,可以参考examples/inference.py中的代码示例:
from openmind import pipeline, is_torch_npu_available
from openmind import AutoTokenizer, AutoModelForCausalLM
import torch
# 加载模型和分词器
tokenizer = AutoTokenizer.from_pretrained("jeffding/ChatTCM-7B-SFT-openmind", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("jeffding/ChatTCM-7B-SFT-openmind", trust_remote_code=True)
# 创建文本生成管道
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
# 生成文本
text = "请将古人云翻译成现代文"
generated_text = pipe(text, max_length=50, do_sample=False, no_repeat_ngram_size=2)[0]
可选指令模板 💡
ChatTCM-7B-SFT-openmind支持多种中医相关的指令格式:
将输入的古文翻译成现代文。
请为输入的现代文找到其对应的古文原文与出处。
基于输入的患者医案记录,直接给出你的证型诊断,无需给出原因。
基于输入的患者医案记录,直接给出你的疾病诊断,无需给出原因。
基于输入的患者医案记录,直接给出你认为的方剂中药组成。
基于输入的患者医案记录,直接给出你认为的【治疗方案】{可多选}∈["中药", "成药", "方剂"],和【诊断】{可多选}∈["证型", "治法", "西医诊断", "中医诊断"]:
技术挑战与解决方案 🛠️
在训练ChatTCM-7B-SFT-openmind过程中,团队面临并解决了多个技术挑战:
1. 中医术语标准化
中医术语存在大量同义词和变体,通过构建专业词典和术语映射表,确保了模型对中医术语的准确理解。
2. 数据质量保证
中医文本数据质量参差不齐,通过多轮数据清洗和人工审核,确保了训练数据的准确性和专业性。
3. 模型稳定性
大规模参数微调容易导致模型不稳定,通过梯度裁剪、学习率调度等技术手段,确保了训练的稳定性。
未来发展方向 🎯
ChatTCM-7B-SFT-openmind的成功训练为中医AI发展开辟了新的道路,未来的发展方向包括:
- 多模态扩展 - 结合中医舌诊、脉诊图像数据
- 临床验证 - 与医院合作进行临床效果验证
- 个性化诊疗 - 基于患者个体差异的个性化治疗方案
- 知识图谱集成 - 与中医知识图谱深度融合
总结与展望 🌟
ChatTCM-7B-SFT-openmind基于LlamaFactory框架的全参数微调实践,展示了现代AI技术在传统医学领域的巨大潜力。通过精心设计的训练流程和专业的医学数据集,模型在中医古文翻译、临床诊断、知识问答等多个方面都展现出了优异的能力。
这个项目的成功不仅为中医智能化提供了技术参考,也为其他专业领域的大模型微调提供了宝贵经验。随着技术的不断进步和数据的不断积累,相信ChatTCM-7B-SFT-openmind将在中医教育、临床辅助、科研创新等方面发挥越来越重要的作用。
对于想要深入了解模型细节的开发者,可以查看完整的config.json配置文件,了解模型的具体架构和参数设置。模型文件采用safetensors格式存储,确保了安全性和兼容性。
中医AI的发展道路虽然充满挑战,但ChatTCM-7B-SFT-openmind的成功训练已经迈出了坚实的一步。期待这个项目能够为中医的现代化和智能化发展做出更大的贡献!🌱
更多推荐




所有评论(0)