首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2小时打造专业医疗助手:基于CareGPT与Qwen3-8B的微调实战

2小时打造专业医疗助手:基于CareGPT与Qwen3-8B的微调实战

原创
作者头像
架构师李哲
修改2025-10-29 12:09:02
修改2025-10-29 12:09:02
5600
代码可运行
举报
运行总次数:0
代码可运行

凌晨一点,突发剧烈头痛,视力也开始模糊。在这种紧急情况下,使用通用AI助手寻求建议,往往只能得到“请及时就医”这样正确但无用的回答。用户真正需要的,是具备初步症状识别、风险评估和就医指引能力的专业助手。

这正是当前通用大模型在医疗场景中的典型短板:

● 缺乏专业医学知识体系,无法进行症状关联分析

● 回答过于保守,难以提供具针对性的分级建议

● 无法识别症状组合背后的潜在疾病类型差异

现在,通过LLaMA-Factory Online平台,我们只需要2小时,就能基于CareGPT和Qwen3-8B模型,系统性地构建一个真正“懂症状、能判断”的智能医疗助手。实际效果对比如下:

用户提问:“我突然剧烈头痛,视力模糊,可能是什么原因?

通用模型回答虽然结构完整,但存在明显不足:建议过于保守,仅笼统地建议“观察症状”和“及时就医”,缺乏具体的风险评估和紧急情况指引,对急性症状的响应不够充分。

微调后的医疗助手回答展现出明显的改进,回答涵盖了更全面的病因分析,从眼部问题到颅内状况,从血压因素到偏头痛,提供了更具参考价值的医学信息。虽然仍有优化空间,但已经展现出从“通用回复”到“专业解答”的明显进步。

这种具备症状初步分析、风险评估和明确就医指引的专业回应,正是通过CareGPT医疗语料与Qwen3-8B的高效微调实现的。在接下来的内容中,我将完整演示如何通过LLaMA Factory Online平台,在2小时内完成从数据准备、模型微调到效果验证的全流程。

配置概览说明

配置参数

配置项

是否预置

说明

模型

Qwen3-8B

Qwen3-8B是一款轻量化的开源大语言模型,具备较强的通用语言理解与生成能力,支持多场景适配,且在医疗等垂直领域可通过领域适应训练进一步优化专业性,适配中小规模算力需求,兼顾性能与部署灵活性。

数据集

ChatMed_Consult_Dataset和HuatuoGPT2-SFT-GPT4-140K

ChatMed_Consult_Datase由Wei Zhu主导构建,是中文医疗问诊数据集,补全中文医疗LLM训练数据,供模型微调;HuatuoGPT2-SFT-GPT4-140K由FreedomIntelligence团队打造,是大规模中文医疗指令微调数据集,借GPT-4生成优质响应,提升医疗LLM指令能力,支撑监督微调。

GPU

H800*4(推荐)

-

模型规模较大,建议配置足够显存。

微调方法

lora

-

显著降低计算与存储成本,兼具高性能与部署灵活性。

资源消耗预计

使用推荐资源(H800*4)进行微调时微调过程总时长约2h16min。

具体操作步骤

步骤一:数据准备

1. 下载数据集。数据集下载完成后,需上传至文件管理。具体操作,可参考SFTP上传下载 | Llama-Factory Online docs完成数据集上传。

● 单击链接,下载ChatMed_Consult_Dataset数据集。

● 单击链接,下载HuatuoGPT2-SFT-GPT4-140K数据集。

2. 数据格式转换。

LLaMA Factory作为主流的大语言模型微调框架,对医疗问诊类数据有明确的格式要求(需包含instruction、input、output核心字段,支持多轮对话的history字段可选)。针对ChatMed_Consult_Dataset数据集原有的 “query-response” 二元结构,需通过字段映射与格式重构,将其转换为LLaMA Factory兼容的数据格式。数据格式转换的具体步骤如下:

a. 进入LLaMA-Factory Online平台,单击“控制台”,进入控制台后单击左侧导航栏的“实例空间”,然后在页面单击“开始微调”。

b. 在弹出的页面选择“CPU”,核数选择“2核”,然后单击“启动”。

c. 实例启动后,单击[VSCode处理专属数据]页签,进入VSCode编辑页面。您也可以根据需要打开JupyterLab处理数据,本示例指导您通过VSCode处理数据。

d. 在VSCode页面左侧user-data/datasets目录下(如图①)新建一个.py后缀的文件(如图②),然后复制以下命令至文件中(如图③)。

代码语言:javascript
代码运行次数:0
运行
复制
import json
import pandas as pd
import jsonlines
from typing import List, Dict
 
def chatmed_to_llamafactory(
    input_path: str, 
    output_path: str, 
    instruction: str = "你是专业的医疗咨询助手,请根据用户的医疗问诊需求,提供准确、易懂的疾病解答、治疗建议与日常注意事项,回答需符合医学常识,同时提示用户最终需咨询专业医生确认诊断。"
) -> None:
 
    raw_data: List[Dict] = []
    with jsonlines.open(input_path, "r") as f:
        for line in f:
            raw_data.append(line)
    
    llamafactory_data: List[Dict] = []
    for idx, item in enumerate(raw_data):
        try:
            if "query" not in item or "response" not in item:
                print(f"跳过第{idx+1}条数据:缺失query或response字段")
                continue
            
            converted_item = {
                "instruction": instruction, 
                "input": item["query"].strip(),  
                "output": item["response"].strip(),  
                "history": []  
            }
            llamafactory_data.append(converted_item)
        
        except Exception as e:
            print(f"处理第{idx+1}条数据时出错:{str(e)},已跳过")
            continue
    
    with open(output_path, "w", encoding="utf-8") as f:
        json.dump(llamafactory_data, f, ensure_ascii=False, indent=2)
        
    print(f"转换完成!原始数据共{len(raw_data)}条,有效转换{len(llamafactory_data)}条,输出路径:{output_path}")
 
if __name__ == "__main__":
    INPUT_FILE = "./ChatMed_Consult-v0.3.json"  
    OUTPUT_FILE = "./datasets/multi-med.json"    
    chatmed_to_llamafactory(
        input_path=INPUT_FILE,
        output_path=OUTPUT_FILE,
    )

e. VSCode页面,新建一个终端,依次执行以下命令,进行数据格式转换(如图①和②)。

代码语言:javascript
代码运行次数:0
运行
复制
conda activate /opt/conda/envs/lf
python testshuju.py 

💡提示

testshuju.py为本示例新建的文件,请根据您的实际情况进行替换。

回显信息如图③所示,说明数据格式转换成功,且转换后的数据存放在/datasets/multi-med.json中,即原数据集文件ChatMed_Consult_Dataset经格式转换后生成新的数据集文件multi-med。

3. 数据集检测。

a. 返回LLaMA-Factory Online控制台,单击左侧导航栏的“文件管理”。

b. 单击目标数据集右侧“操作”列的"数据集检测",检测数据集。如下图所示,若“数据集格式检测”结果显示“符合”,则表示数据集符合格式要求。

步骤二:模型微调

1. 进入LLaMA-Factory Online平台,单击“控制台”,进入控制台后单击左侧导航栏的“模型微调”进入页面。

2. 选择模型和数据集,进行参数配置。

○ 本实践使用平台内置的Qwen3-8B作为基础模型(如图①),数据集为ChatMed_Consult_Dataset(multi-med)和HuatuoGPT2-SFT-GPT4-140K(如图②)。

○ 训练配置:选择“专家微调”(如图③);“训练轮数”配置为“2”,“单CPU批处理大小”配置为“24”(如图④)。

○ 分布式配置:打开“DeepSpeed”开关(如图⑤)。

○ 资源配置:推荐卡数为4卡(如图⑥)。

○ 选择价格模式:本实践选择“极速尊享”(如图⑦),不同模式的计费说明参考模型微调 | Llama-Factory Online docs

○ 开始训练:单击“开始训练”,开始模型训练。

💡提示

配置模型与数据集后,系统将根据所需资源及其相关参数,动态预估任务运行时长及微调费用,您可在页面底部查看预估结果。

3. 通过任务中心查看任务状态。 在左侧边栏选择“任务中心”,在“模型微调”页面即可看到刚刚提交的任务。

单击任务框,可查看任务的详细信息、超参数、训练追踪和日志。

4. 任务完成后,模型自动保存在"文件管理->模型->output"文件夹中。可在"任务中心->基本信息->模型成果"处查看保存路径。

步骤三:模型评估

1. 单击页面左侧导航栏的“模型评估”,进行评估训练配置。

2. 微调模型选择上一步骤微调后的模型(如图①),评估数据集为ChatMed_Consult_Dataset(multi-med)和HuatuoGPT2-SFT-GPT4-140K(如图②)。然后配置如下参数(如图③):

○ 单GPU批处理大小:设置为32。

○ 截断长度:设置为2048。

○ 最大生成长度:设置为1024。

其他参数设置为默认即可。

💡提示

配置模型与数据集后,系统将根据所需资源及其相关参数,动态预估任务运行时长及微调费用,您可在页面底部查看预估结果。

3. 可以在“任务中心->模型评估”下看到评估任务的运行状态。

4. 单击图标,进入任务基本信息查看页面。用户可查看评估任务的基本信息、日志以及评估效果。

步骤四:模型对话

1. 单击页面左侧导航栏“模型对话”,进入模型对话页面。

2. 在微调模型处选择目标模型名称(如图①),单击右上角“开始对话”(如图②),在弹出的对话框单击“立即对话”。

3. 在右侧配置栏的“System Prompt”处输入提示词(如图①),在输入框中输入问题(如图②),单击发送;在对话框中查看对话详情(如图③)。

本次基于Qwen3-8B模型,采用LoRA方法在专业医疗数据集上的微调实践表明,该技术方案在保持模型通用能力的同时,显著提升了医疗问答的专业性和实用性。从技术演进角度看,微调后的模型与医疗系统深度融合将释放更大价值。

这种"领域微调+系统集成"的技术路径,为AI在医疗等专业场景的落地提供了经过验证的解决方案。作为长期专注于大模型产业落地的技术架构师,我认为LLaMA-Factory Online平台为领域适配提供了高效的工程化路径,这种轻量化微调方案兼具效率与实用性,值得在更多专业场景中推广验证。

PS.如何学习AI大模型?

作为一名深耕大模型微调领域多年的技术架构师,我深知“纸上得来终觉浅”。在见证了上百个微调项目的成功与失败后,我深刻认识到,拥有一个清晰的学习路径和经过验证的实战资源是多么关键。

为此,我特意整理了全套《大模型微调实战进阶宝典》,这份资料凝聚了我多年的实战经验,其中包含:

《大模型微调实战避坑指南》:精选20+真实项目经验,解析训练发散、灾难性遗忘等高频难题

《十大前沿行业微调白皮书》:汇集金融、医疗、汽车、法律、保险等众多领域大模型先锋案例

● 《开箱即用微调数据集精选》:涵盖指令微调、对话、专业领域问答与代码生成等多个实战场景

愿你能用它,快速撬动大模型在你业务中的巨大价值!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置概览说明
  • 资源消耗预计
  • 具体操作步骤
    • 步骤一:数据准备
    • 步骤二:模型微调
    • 步骤三:模型评估
    • 步骤四:模型对话
  • PS.如何学习AI大模型?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档