基于DeepSeek-R1-Distill-Llama-8B的健康管理助手微调过程

本次创新实训项目的主要任务是利用DEEPSEEK提供的开源模型,通过微调技术,实现一个专注于健康管理与医疗咨询的人工智能助手。本文详细记录我们如何对DeepSeek-R1-Distill-Llama-8B模型进行微调,以满足健康医疗领域应用的需求。

为什么选择DeepSeek-R1-Distill-Llama-8B?

我们选择DeepSeek-R1-Distill-Llama-8B模型主要基于以下原因:

  • 模型规模合适:8B参数规模在GPU资源有限的条件下也能高效训练。
  • 中文理解能力强:特别适合医疗咨询类问题,语言表述清晰且专业。
  • 开放与自由:DeepSeek系列的开源特性让我们能灵活地微调和部署。

数据集的选择和介绍

我们使用的是FreedomIntelligence医疗推理数据集。该数据集专注于医疗推理任务,每条数据由以下三个部分组成:

  • Question:医学问题描述。
  • Complex_CoT:详细的医学推理过程。
  • Response:医学建议或诊疗方案。

数据示例:

{"Question": "一个患有急性阑尾炎的病人已经发病5天,腹痛稍有减轻但仍然发热...","Complex_CoT": "考虑病程较长,阑尾可能已形成脓肿,需要进一步处理...","Response": "建议首先进行保守治疗,如有必要再考虑手术干预。"
}

LoRA 微调原理详解

LoRA (Low-Rank Adaptation) 是一种高效的微调技术,通过冻结原模型的参数,仅通过低秩矩阵来适应新任务。具体而言,LoRA在原始权重矩阵 W 0 ∈ R d × d W_0 \in \mathbb{R}^{d \times d} W0Rd×d 基础上,增加了两个低秩矩阵 A ∈ R r × d A \in \mathbb{R}^{r \times d} ARr×d B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r,实现权重微调:

Δ W = B A ( r ≪ d ) \Delta W = BA \quad (r \ll d) ΔW=BA(rd)

实际更新后的权重表示为:

W = W 0 + B A W = W_0 + BA W=W0+BA

LoRA的参数设置包括:

  • r (rank):控制模型微调的容量与精度,通常取8至64。
  • lora_alpha:放大系数,用于调整LoRA微调的学习强度,通常与r取相近数值。

通过LoRA,能够极大降低训练成本与显存占用,仅用少量参数即可有效微调。

微调实现过程

环境配置

!pip install unsloth bitsandbytes transformers datasets trl

模型加载与量化

使用Unsloth进行高效加载(使用4-bit量化):

from unsloth import FastLanguageModelmodel, tokenizer = FastLanguageModel.from_pretrained("unsloth/DeepSeek-R1-Distill-Llama-8B",max_seq_length=2048, load_in_4bit=True
)

数据集处理

构建适合模型微调的Prompt模板:

from datasets import load_datasetEOS = tokenizer.eos_tokendef formatting_prompts_func(examples):texts = []for q, cot, ans in zip(examples["Question"], examples["Complex_CoT"], examples["Response"]):text = f"""Below is an instruction...
### Question:
{q}### Response:
<think>
{cot}
</think>
{ans}{EOS}"""texts.append(text)return {"text": texts}dataset = load_dataset("FreedomIntelligence/medical-o1-reasoning-SFT",'zh',split="train[:500]"
).map(formatting_prompts_func, batched=True)

LoRA微调参数配置

model = FastLanguageModel.get_peft_model(model,r=16,  # 设定秩大小lora_alpha=16,  # LoRA放缩因子target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],use_gradient_checkpointing="unsloth"
)

微调训练

使用TRL库的SFTTrainer进行高效训练:

from trl import SFTTrainer
from transformers import TrainingArgumentstrainer = SFTTrainer(model=model,tokenizer=tokenizer,train_dataset=dataset,dataset_text_field="text",args=TrainingArguments(per_device_train_batch_size=2,gradient_accumulation_steps=4,max_steps=60,learning_rate=2e-4,fp16=True,output_dir="outputs",logging_steps=1)
)trainer.train()

微调后模型简单推理验证

FastLanguageModel.for_inference(model)question = "“最近感觉睡眠质量差,晚上容易醒来,白天精神也不好,应该如何调理?"
inputs = tokenizer([question], return_tensors="pt").to("cuda")outputs = model.generate(input_ids=inputs.input_ids,attention_mask=inputs.attention_mask,max_new_tokens=1024
)response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

通过上述过程,可以初步看到我们微调后的模型,在医疗问题回答的逻辑性和专业性上明显优于未经微调的模型,这验证了LoRA微调方法和我们整体微调流程的有效性。

总结

本文介绍了我们项目中如何基于DeepSeek-R1-Distill-Llama-8B模型,采用LoRA技术及医疗推理数据进行高效的微调训练。这为后续“健康管理助手”智能体的开发和应用提供了重要的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/83903.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/83903.shtml
英文地址,请注明出处:http://en.pswp.cn/web/83903.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TI 毫米波雷达走读系列—— 3DFFT及测角

TI 毫米波雷达走读系列—— 3DFFT及测角 测角原理 —— 角度怎么测测角公式 —— 角度怎么算相位差测角基本公式为什么是3DFFT1. 空间频率与角度的对应关系2. FFT的数学本质&#xff1a;离散空间傅里叶变换 测角原理 —— 角度怎么测 本节内容解决角度怎么测的问题&#xff0c…

图解JavaScript原型:原型链及其分析 02 | JavaScript图解

​ ​ 任何函数既可以看成一个实例对象又可以看成一个函数 作为一个实例对象其隐式原型对象指向其构造函数的显式原型对象 作为一个函数其显式原型对象指向一个空对象 任何一个函数其隐式原型对象指向其构造函数的显式原型对象 任何一个函数是 Function 函数创建的实例&…

自定义View实现K歌开始前歌词上方圆点倒计时动画效果

在上一篇KRC歌词解析原理及Android实现K歌动态歌词效果介绍了动态歌词的实现,我们继续完善一下。在K歌场景中,一些歌曲前奏很长,用户不知道什么时候开始唱,这时一般在歌词上方会有一个圆点倒计时的效果来提醒用户开始时间,如下图:开始唱之前,圆点会逐个减少,直至圆点全…

ffmpeg subtitles 字幕不换行的问题解决方案

使用ffmpeg在mac下处理srt中文字幕可以自动换行&#xff0c;linux环境下不换行直接超出视频区域了 这是因为在mac环境下的SimpleText 渲染器自动处理了文本&#xff0c;而linux无法处理。 mac&#xff1a; linux&#xff1a; 方案&#xff1a; ❌&#xff1a;网上找到的方案…

Trino入门:开启分布式SQL查询新世界

目录 一、Trino 是什么 二、核心概念与架构解析 2.1 关键概念详解 2.2 架构剖析 三、快速上手之安装部署 3.1 环境准备 3.2 安装步骤 3.2.1 下载软件包 3.2.2 安装软件包 3.2.3 启动服务 3.2.4 验证服务 3.2.5 安装 Trino 客户端 3.3 目录结构说明 四、实战演练&…

EFK架构的数据安全性

EFK架构&#xff08;Elasticsearch Filebeat Kibana&#xff09;的数据安全性需通过‌传输加密、访问控制、存储保护‌三层措施保障&#xff0c;其核心风险与加固方案如下&#xff1a; 一、数据传输安全风险与加固 ‌明文传输风险‌ Filebeat → Elasticsearch 的日…

2025年渗透测试面试题总结-安全服务工程师(驻场)(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 安全服务工程师(驻场) 1. 挖过的一些漏洞&#xff08;举例说明&#xff09; 2. 渗透测试的思路&#xff08…

C++ 编译流程详解:从源码到可执行文件

C 编译流程是将人类可读的源代码转换为计算机可执行的二进制文件的过程。这个过程可以分为四个核心阶段&#xff1a;预处理、编译、汇编和链接。每个阶段都有明确的任务&#xff0c;共同确保代码正确转换为可执行程序。 一、预处理&#xff08;Preprocessing&#xff09; 预处…

CentOS7 安装最新版 Docker

在 CentOS 7 上安装最新版 Docker&#xff0c;可以按照以下步骤操作&#xff1a; 1. 卸载旧版本 Docker&#xff08;如有&#xff09; 如果之前安装过旧版 Docker&#xff0c;需要先卸载&#xff1a; yum remove docker docker-client docker-client-latest docker-common do…

网络安全相关知识

一、网络安全基础 1. CIA三元组 (Confidentiality, Integrity, Availability) 机密性 (Confidentiality)&#xff1a;确保信息只能由授权人员查看&#xff0c;防止信息泄露。加密技术&#xff08;如AES、RSA&#xff09;通常用于保护机密性。 完整性 (Integrity)&#xff1a;…

每天一个前端小知识 Day 4 - TypeScript 核心类型系统与实践

TypeScript 核心类型系统与实践 1. 为什么前端面试中越来越重视 TypeScript&#xff1f; 复杂业务场景需要强类型保障稳定性&#xff1b;更好的 IDE 支持和智能提示&#xff1b;降低线上 bug 概率&#xff1b;成熟的工程团队都在使用&#xff1b;对于 React/Vue 项目维护可读性…

uni-app插件,高德地图、地图区域绘制、定位打卡

介绍 高德地图、地图区域绘制、定位打卡 示例 默认 &#xff08;展示地图&#xff0c;是否可以打卡&#xff09; <template><view class"container"><map-positioning-punch:clock-in-area"clockInArea":refresh-timeout"refreshT…

_mm_aeskeygenassist_si128 硬件指令执行的操作

根据Intel的文档&#xff0c;_mm_aeskeygenassist_si128 指令执行以下操作&#xff1a; result[31:0] SubWord(RotWord(temp)) xor Rcon; result[63:32] SubWord(RotWord(temp)); result[95:64] SubWord(RotWord(temp)) xor Rcon; result[127:96] SubWord(RotWord(temp…

爬虫技术:数据获取的利器与伦理边界

一、爬虫技术的原理与架构 爬虫技术的核心是模拟人类浏览网页的行为&#xff0c;通过程序自动访问网站&#xff0c;获取网页内容。其基本原理可以分为以下几个步骤&#xff1a;首先&#xff0c;爬虫程序会发送一个 HTTP 请求到目标网站的服务器&#xff0c;请求获取网页数据。…

TortoiseSVN 下载指定版本客户端及对应翻译(汉化)包

访问官方网站 打开浏览器,进入 TortoiseSVN 官方网站:https://tortoisesvn.net/ ,这是获取官方版本最权威的渠道。 进入下载页面 在官网首页,找到并点击 Downloads(下载)选项,进入下载页面。 选择版本 在下载页面中,会展示最新版本的下载链接。如果需要指定版本,向下…

MacOS15.5 MySQL8 开启 mysql_native_password

MySQL 8 默认关闭了 mysql_native_password&#xff0c; 需要手动开启。但是MacOS各种坑&#xff0c;气死个人。 mysql8 内置了 mysql_native_password &#xff0c;只是没有开启。 验证方式是执行 show plugins; &#xff0c;返回的结果中应该有 mysql_native_password &…

Git分页器和Node.js常见问题解决方式

Git分页器(pager)常见问题解决方式&#xff0c;在Windows PowerShell中经常出现。以下是几种解决方法&#xff1a; 临时解决方法 按回车键继续 - 按照提示按RETURN&#xff08;回车键&#xff09;即可继续显示分支列表按 q 键退出 - 如果卡在分页器界面&#xff0c;按 q 键退…

module type中获取__dirname和__filename

module type中获取__dirname和__filename import { fileURLToPath } from url// 获取当前文件的目录路径&#xff08;ES模块中的__dirname替代方案&#xff09; const __filename fileURLToPath(import.meta.url) const __dirname path.dirname(__filename)

多维度剖析Kafka的高性能与高吞吐奥秘

在当今大数据与实时处理盛行的时代&#xff0c;Kafka作为一款卓越的分布式消息系统&#xff0c;凭借其令人惊叹的高性能与高吞吐能力&#xff0c;成为众多企业构建实时数据处理架构的首选。接下来&#xff0c;我们将从多个关键维度深入探究Kafka实现高性能与高吞吐的核心要素&a…

2025虚幻游戏系统积累

2025虚幻游戏系统积累 前言 积累一下虚幻的游戏系统。 之前写了2025虚幻人物模型积累-CSDN博客&#xff0c;算是解决了人物模型的问题。现在增加游戏玩法。毕竟无中生有难度有点大&#xff0c;照葫芦画瓢难度可以降低一点点。 内容 首先第一个就是 这个游戏demo很值得参考…