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

基于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} W0?Rd×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(r?d)

實際更新后的權重表示為:

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很值得參考…