模型微调方法实战
资料链接汇总
硅基流动模型微调文档
https://docs.siliconflow.cn/cn/userguide/guides/fine-tune
数据集:
EasyDataset 首页有个数据集导航
Hugging Face:https://huggingface.co/datasets
ModelsScope:https://modelscope.cn/datasets
GitCode:https://ai.gitcode.com/datasets?language=zh 数据集很少
模型微调介绍
领域专业化:让模型掌握"行业黑话"
- 原因:通用模型的训练数据覆盖面广,但难以深入垂直领域的知识体系和专业术语。例如医学诊断需理解病理特征,法律咨询需熟悉法条逻辑。当模型在专业领域认知不够时,会出现比较严重的幻觉问题,也就是胡乱回答,微调可以很好的解决这个问题
- 典型场景 :
- 医学问答:输入症状描述,模型需结合医学知识库输出可信的初步诊断建议。
- 法律咨询:分析"未成年人合同效力"时,需准确引用《民法典》相关条款。
任务适配:调整模型的"输出模式"
- 原因:不同任务对模型能力的要求差异显著------分类任务需结构化输出,生成任务需语言创造力。
- 典型场景 :
- 文案生成:训练模型以幽默风格撰写广告文案(如"这杯咖啡,比老板的早安更提神")。
- 心理咨询:从"情绪识别"转向"疏导对话",需调整输出为引导性提问而非结论性判断。
能力纠偏:解决模型的"偏科问题"
- 原因:通用模型可能对某些任务过度敏感(如政治倾向)或表现不足(如冷门领域的长尾问题)。
- 典型场景 :
- 民俗推理:输入生辰八字与手相特征时,模型需按传统命理逻辑生成连贯解释,而非套用通用话术。
- 边缘案例:处理"宠物能否继承遗产"时,需结合继承法细则而非泛泛回答。
模型调优作为重要的模型效果优化方式,可以:
- 提升模型在特定行业/业务表现
- 降低模型输出延迟
- 抑制模型幻觉
- 对齐人类的价值观或偏好
- 使用调优后的轻量级模型替代规模更大的模型
- One-Shot、Zero-Shot 代替Few-Shot。,节约输入token
长文本处理、知识库、模型微调区别
| 对比维度 | 长文本处理 | 知识库 | 微调 |
|---|---|---|---|
| 核心目标 | 理解和生成长篇内容 | 提供背景知识,增强回答能力 | 优化模型在特定任务或领域的表现 |
| 优点 | 连贯性强,适合复杂任务 | 灵活性高,可随时更新 | 性能提升,定制化强 |
| 缺点 | 资源消耗大,上下文限制 | 依赖检索,实时性要求高 | 需要标注数据,硬件要求高 |
| 适用场景 | 写作助手、阅读理解 | 智能客服、问答系统 | 专业领域、特定任务、风格定制 |
| 额外数据 | 不需要,但可能需要优化上下文长度 | 需要知识库数据 | 需要特定领域的标注数据 |
| 重新训练 | 不需要,但可能需要优化模型 | 不需要,只需更新知识库 | 需要对模型进行进一步训练 |
| 技术实现 | 扩大上下文窗口 | 检索+生成(RAG) | 调整模型参数 |
| 数据依赖 | 无需额外数据 | 依赖结构化知识库 | 需要大量标注数据 |
| 实时性 | 静态(依赖输入内容) | 动态(知识库可随时更新) | 静态(训练后固定) |
| 资源消耗 | 高(长文本计算成本高) | 中(需维护检索系统) | 高(训练算力需求大) |
| 灵活性 | 中(适合单次长内容分析) | 高(可扩展多知识库) | 低(需重新训练适应变化) |
微调的基本流程
-
选定一款用于微调的预训练模型,并加载
-
准备好用于模型微调的数据集,并加载
-
准备一些问题,对微调前的模型进行测试(用于后续对比)
-
设定模型微调需要的超参数
-
执行模型微调训练
-
还使用上面的问题,对微调后的模型进行测试,并对比效果
-
如果效果不满意,继续调整前面的数据集以及各种超参数,直到达到满意效果
-
得到微调好的模型

1、预训练模型
Deepseek、Qwen 等参数了较小的模型
2、数据集
格式要求:JSON、CSV、XML,OpenAI格式

Open AI对话格式

数据集网站:
EasyDataset 首页有个数据集导航
Hugging Face:https://huggingface.co/datasets
ModelsScope:https://modelscope.cn/datasets
GitCode:https://ai.gitcode.com/datasets?language=zh 数据集很少
数据集实例:
医学类中英文数据集:https://huggingface.co/datasets/FreedomIntelligence/medical-o1-reasoning-SFT/viewer/zh?views[]=zh
维基百科:https://huggingface.co/datasets/wikimedia/wikipedia/viewer/20231101.zh
招商银行金融数据集:https://modelscope.cn/datasets/CMB_AILab/YiZhao-FinDataSet
3、超参数
微调时的各项参数设置,要结合具体的微调平台进行调节
硅基流动平台模型微调
相关文档
参考博客:https://juejin.cn/post/7473309339294695460#heading-10
微调指南:https://docs.siliconflow.cn/cn/userguide/guides/fine-tune
API手册:https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions
微调流程
一般操作流程按照官网文档执行即可,下面是一些注意事项
准备数据集:
- 硅基流动只支持 文件格式JSONL、数据集风格ShareGPT类型的数据;且每个数据集只能包含5000行数据;
- EasyDataset 能够直接相应类型的数据;
- 如果是在HuggingFace上下载的数据,需要进行处理,以 "医学类中英文数据集" 数据集为例:
python
from datasets import load_dataset
import json
def main():
# 1️⃣ 加载数据集
ds = load_dataset("FreedomIntelligence/medical-o1-reasoning-SFT", "zh")
train_ds = ds["train"]
print(f"✅ 数据集加载成功,共 {len(train_ds)} 条样本")
# 2️⃣ 随机抽取 5000 条
sample_ds = train_ds.shuffle(seed=42).select(range(5000))
print(f"✅ 随机抽取 5000 条样本")
# 3️⃣ 输出 JSONL 文件路径
output_path = "medical_chat_5000.jsonl"
# 4️⃣ 转换为 Chat 格式并写入 JSONL
with open(output_path, "w", encoding="utf-8") as f_out:
for sample in sample_ds:
messages = [
{"role": "system", "content": "你是医学助手"},
{"role": "user", "content": sample["Question"]},
{"role": "assistant", "content": sample["Response"]}
]
json_line = {"messages": messages}
f_out.write(json.dumps(json_line, ensure_ascii=False) + "\n")
print(f"💾 已保存到 {output_path}")
if __name__ == "__main__":
main()
微调参数:
一般情况下默认即可,介绍以下几个参数:
Number of Epochs [1, 10]
训练轮数(Number of Epochs) Epoch 是机器学习中用于描述模型训练过程的一个术语,指的是模型完整地遍历一次整个训练数据集的次数。换句话说,一个 Epoch 表示模型已经看到了所有训练样本一次。
Learning Rate (0, 0.1]
学习率(Learning Rate) 决定了模型在每次更新时参数调整的幅度,通常在 (0, 1) 之间。也就是告诉模型在训练过程中 "学习" 的速度有多快。学习率越大,模型每次调整的幅度就越大;学习率越小,调整的幅度就越小。
Batch Size
批量大小(Batch Size) 是指在模型训练过程中,每次更新模型参数时所使用的样本数量。它是训练数据被分割成的小块,模型每次处理一个小块的数据来更新参数。
通俗来说,批量大小可以用来平衡复习速度和专注度,确保既能快速推进复习进度,又能专注细节。假设你决定每次复习时集中精力做一定数量的题目,而不是一次只做一道题。
- 批量大(比如100):每次复习时,你集中精力做100道题。优点是复习速度很快,因为你每次处理很多题目,能快速了解整体情况。缺点是可能会因为一次处理太多题目而感到压力过大,甚至错过一些细节。
- 批量小(比如1):每次复习时,你只做一道题,做完后再做下一道。优点是可以非常专注,能仔细分析每道题的细节,适合需要深入理解的场景。缺点就是复习速度很慢,因为每次只处理一道题。
微调结果
任务结果:

微调费用:
| 产品类型 | 产品名称 | 用量 | 消费总额(元) | 充值金额消费(元) | 赠送金额抵扣(元) |
|---|---|---|---|---|---|
| 模型微调 | Qwen/Qwen2.5-7B-Instruct (任务: zrtrqpptsqvmsqwybcmp) | 3270925 Token(s) | 11.4482 | 0.0000 | 11.4482 |
微调后模型调用
python
from openai import OpenAI
client = OpenAI(
api_key="sk-zkjaftsevpzsrqfgyuqzzldtaraiahlofkagydkxwmmfaoak",
base_url="https://api.siliconflow.cn",
)
messages = [
{"role": "user", "content": "用当前语言解释微调模型流程"},
]
response = client.chat.completions.create(
model="ft:LoRA/Qwen/Qwen2.5-7B-Instruct:oijxxeirpb:medical_0_0_1:zrtrqpptsqvmsqwybcmp",
# model="Qwen/Qwen2.5-7B-Instruct",
messages=[
{"role": "system", "content": "你是医学助手."},
{"role": "user", "content": "糖尿病有哪些典型症状?"},
],
stream=True,
extra_body={"enable_thinking": True}
)
for chunk in response:
print(chunk.choices[0].delta.content, end='')
微调前后模型回答对比
微调前:
糖尿病是一种慢性疾病,会导致血糖(血糖水平)持续升高。典型症状包括:
1. 频繁排尿:高血糖使得肾脏需要产生更多的尿液来试图清除体内的多余糖分。
2. 极度口渴:由于频繁排尿,身体会失去大量水分,导致极度渴望饮水。
3. 持续的饥饿感:即使摄入足够的食物,身体也可能无法有效利用血糖作为能量,使你感到持续饿。
4. 体重下降:尽管食欲增加,但由于身体开始分解脂肪和肌肉以获取能量,因此可能观察到体重下降。
5. 疲劳:由于身体未能有效使用血糖作为能量来源,可能会感到异常疲倦或无力。
6. 视力模糊:高血糖可导致眼睛晶状体吸水膨胀,进而影响视力。
7. 创伤愈合缓慢:高血糖会影响免疫系统和血液循环,从而导致伤口愈合速度变慢。
8. 感觉异常:长期内的高血糖可能损害神经系统,导致手脚麻木或刺痛。
请记住,这些症状可能在各种情况下出现,并不一定意味着患有糖尿病。如果您或周围的人多人出现以上症状,建议及时就医进行血糖检测和其他相关检查,以便诊断和治疗。
微调后:
回答一:
糖尿病的典型症状通常包括:多尿、多饮、多食和体重减轻,即"三多一少"。这些症状是由于高血糖导致体液平衡失调和渗透性利尿引起的。此外,糖尿病还可能导致疲劳感、视力模糊以及其他长期损害,比如神经系统和心血管系统的损害。如果出现上述症状,应该尽快去医院进行血糖检测以确定是否患有糖尿病。
回答二:
糖尿病有四类典型的症状,这就是为什么它被称为"三多一少"症状:
1. **多尿**:由于血糖升高,超过了肾的再吸收能力,多余的糖和水分就通过尿液排出。这种高渗尿导致身体快速失水,引起更频繁的排尿。
2. **多饮**:多尿导致体液流失,导致体内大量的水分被耗损,使得很多人感到口渴,这是身体的一种反馈机制,试图补充丢失的水分。
3. **多食**:身体试图通过消耗更多食物来弥补能量的不足,但由于胰岛素缺乏或作用效率低,这些额外摄入的食物并没有被完全利用。这一过程被称为"胰岛素抵抗",导致身体无法有效提供能量,从而促进食欲增加。
4. **体重减少**:尽管食欲增加,由于身体无法有效利用所摄入的营养物质,这些转换为脂肪和能量不完全,多余的营养物质仍以糖的形式被排出体外,而非转化为脂肪。尽管缺乏胰岛素,身体仍继续分解储存的脂肪和肌肉,以获取能量,这是为什么在没有明显饥饿感的情况下体重仍可能减少。
这"三多一少"症状的组合造成了高血糖、高尿糖、口渴、多饮、多食和体重减少的特点,使得糖尿病容易被察觉和识别。了解这些症状有助于早期识别和干预,从而合理管理糖尿病。
colab + unsloth 模型微调
相关文档
参考博客:https://juejin.cn/post/7473309339294695460#heading-10
调优实战
打开Colab 环境链接
https://colab.research.google.com/#create=tru…
运行时类型 选择 T4 GPU
打开终端,执行如下命令:
pip install unsloth
pip install bitsandbytes unsloth_zoo
如果不使用 colab 平台,可以考虑 使用 conda 创建创建环境
conda create -n unsloth python=3.10 -y
conda activate unsloth
# 删除环境
conda remove -n unsloth --all
# 查看环境列表
conda env list
微调前测试,编写以下代码
python
import os
from unsloth import FastLanguageModel
os.environ["FLASH_ATTENTION_FORCE_DISABLE"] = "1"
os.environ["XFORMERS_DISABLED"] = "1"
os.environ["UNSLOTH_FORCE_NO_FLASH_ATTN"] = "1"
def before():
# -*- coding: utf-8 -*-
"""
糖尿病专科医生问答模型 - 微调前测试
"""
# =================== 1. 导入依赖 ===================
from unsloth import FastLanguageModel
import torch
# =================== 2. 配置参数 ===================
max_seq_length = 2048
dtype = None
load_in_4bit = True
# =================== 3. 加载模型和分词器 ===================
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/DeepSeek-R1-Distill-Llama-8B",
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit,
# token="hf_..." # 如需访问私有模型,请填入 Hugging Face Token
)
# 启用推理模式(提升生成效率)
FastLanguageModel.for_inference(model)
# =================== 4. 定义医生提示模板 ===================
prompt_style = """以下是描述任务的指令,以及提供进一步上下文的输入。
请写出一个适当完成请求的回答。
在回答之前,请基于医学知识进行严谨推理,确保内容科学、准确、有临床参考价值。
###
指令:
你是一位经验丰富的内分泌科医生,专注于糖尿病及其并发症的诊断、治疗与患者教育。
请根据最新临床指南(如ADA、IDF等),以专业、清晰、易懂的方式回答以下问题。
###
问题:
{}
###
回答:
<think>{}</think>"""
# =================== 5. 定义测试问题(糖尿病并发症相关)===================
question = "2型糖尿病患者血糖控制不佳,最近视力模糊,是否可能是糖尿病视网膜病变?该如何筛查和干预?"
# =================== 6. 推理生成 ===================
# 格式化提示
formatted_prompt = prompt_style.format(question, "")
# 编码输入(自动使用 GPU)
inputs = tokenizer([formatted_prompt], return_tensors="pt").to("cuda")
# 生成回答
outputs = model.generate(
input_ids=inputs.input_ids,
attention_mask=inputs.attention_mask,
max_new_tokens=1200,
use_cache=True,
temperature=0.6, # 稍微降低随机性,增强专业性
top_p=0.92,
do_sample=True,
)
# 解码输出(跳过特殊token)
response = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
# 打印结果
print("=== 内分泌科医生回复 ===")
print(response)
def train():
# -*- coding: utf-8 -*-
"""
糖尿病医生模型 - 微调训练脚本(修复版)
"""
# =================== 1. 导入依赖 ===================
from unsloth import FastLanguageModel
from datasets import load_dataset
from trl import SFTTrainer
from transformers import TrainingArguments
from unsloth import is_bfloat16_supported
# =================== 2. 加载基础模型 ===================
max_seq_length = 2048
dtype = None
load_in_4bit = True
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/DeepSeek-R1-Distill-Llama-8B",
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit,
)
# =================== 3. 应用 LoRA(仅返回 model)===================
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"],
lora_alpha=16,
lora_dropout=0.0,
bias="none",
use_gradient_checkpointing="unsloth",
random_state=3407,
use_rslora=False,
loftq_config=None,
)
# 注意:tokenizer 不变,不要解包!
# =================== 4. 加载并预处理数据集 ===================
print("📥 加载医学数据集...")
ds = load_dataset("FreedomIntelligence/medical-o1-reasoning-SFT", "zh")
train_ds = ds["train"]
# 随机抽取 5000 条(可选)
train_ds = train_ds.shuffle(seed=42).select(range(min(5000, len(train_ds))))
# 转换为 text 字段:拼接 user + assistant
def format_sample(example):
# 构造对话文本(可根据 tokenizer 的 chat_template 调整)
text = f"### 用户\n{example['Question']}\n\n### 医生\n{example['Response']}"
return {"text": text}
train_ds = train_ds.map(format_sample, num_proc=4)
# =================== 5. 创建 SFTTrainer ===================
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=train_ds,
dataset_text_field="text",
max_seq_length=max_seq_length,
dataset_num_proc=2,
packing=False,
args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_steps=5,
max_steps=75,
learning_rate=2e-4,
fp16=not is_bfloat16_supported(),
bf16=is_bfloat16_supported(),
logging_steps=1,
optim="adamw_8bit",
weight_decay=0.01,
lr_scheduler_type="linear",
seed=3407,
output_dir="outputs",
report_to="none",
),
)
# =================== 6. 开始训练 ===================
print("🚀 开始训练...")
trainer_stats = trainer.train()
print("✅ 训练完成!")
def estimate():
"""
简易验证:对比微调前后模型在相同问题上的回答差异
"""
# ========== 公共配置 ==========
max_seq_length = 2048
dtype = None
load_in_4bit = True
question = "2型糖尿病患者血糖控制不佳,最近视力模糊,是否可能是糖尿病视网膜病变?该如何筛查和干预?"
prompt_style = """以下是描述任务的指令,以及提供进一步上下文的输入。
请写出一个适当完成请求的回答。
在回答之前,请基于医学知识进行严谨推理,确保内容科学、准确、有临床参考价值。
###
指令:
你是一位经验丰富的内分泌科医生,专注于糖尿病及其并发症的诊断、治疗与患者教育。
请根据最新临床指南(如ADA、IDF等),以专业、清晰、易懂的方式回答以下问题。
###
问题:
{}
###
回答:
<think>{}</think>""".format(question, "")
# ========== 加载「原始模型」 ==========
print("🧠 正在加载原始模型(未微调)...")
base_model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/DeepSeek-R1-Distill-Llama-8B",
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit,
)
FastLanguageModel.for_inference(base_model)
inputs = tokenizer([prompt_style], return_tensors="pt").to("cuda")
base_output = base_model.generate(
input_ids=inputs.input_ids,
attention_mask=inputs.attention_mask,
max_new_tokens=800,
temperature=0.6,
top_p=0.9,
do_sample=True,
)
base_answer = tokenizer.decode(base_output[0], skip_special_tokens=True)
# ========== 加载「微调后模型」 ==========
print("\n🩺 正在加载微调后模型...")
tuned_model, _ = FastLanguageModel.from_pretrained(
model_name="outputs/checkpoint-75",
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit,
)
FastLanguageModel.for_inference(tuned_model)
tuned_output = tuned_model.generate(
input_ids=inputs.input_ids,
attention_mask=inputs.attention_mask,
max_new_tokens=800,
temperature=0.6,
top_p=0.9,
do_sample=True,
)
tuned_answer = tokenizer.decode(tuned_output[0], skip_special_tokens=True)
# ========== 对比结果 ==========
print("\n=== 🔹 原始模型回答 ===")
print(base_answer)
print("\n=== 🔸 微调后模型回答 ===")
print(tuned_answer)
if __name__ == "__main__":
estimate()
评估执行结果
/home/yuanziqing/miniconda3/bin/conda run -n unsloth --no-capture-output python /home/yuanziqing/projects/unsloth_medical/main.py
🦥 Unsloth: Will patch your computer to enable 2x faster free finetuning.
🦥 Unsloth Zoo will now patch everything to make training faster!
🧠 正在加载原始模型(未微调)...
==((====))== Unsloth 2025.11.2: Fast Llama patching. Transformers: 4.57.1.
\\ /| NVIDIA GeForce RTX 5070 Ti. Num GPUs = 1. Max memory: 15.92 GB. Platform: Linux.
O^O/ \_/ \ Torch: 2.9.0+cu128. CUDA: 12.0. CUDA Toolkit: 12.8. Triton: 3.5.0
\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = False]
"-____-" Free license: http://github.com/unslothai/unsloth
Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!
🩺 正在加载微调后模型...
==((====))== Unsloth 2025.11.2: Fast Llama patching. Transformers: 4.57.1.
\\ /| NVIDIA GeForce RTX 5070 Ti. Num GPUs = 1. Max memory: 15.92 GB. Platform: Linux.
O^O/ \_/ \ Torch: 2.9.0+cu128. CUDA: 12.0. CUDA Toolkit: 12.8. Triton: 3.5.0
\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = False]
"-____-" Free license: http://github.com/unslothai/unsloth
Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!
Unsloth 2025.11.2 patched 32 layers with 32 QKV layers, 32 O layers and 32 MLP layers.
=== 🔹 原始模型回答 ===
以下是描述任务的指令,以及提供进一步上下文的输入。
请写出一个适当完成请求的回答。
在回答之前,请基于医学知识进行严谨推理,确保内容科学、准确、有临床参考价值。
###
指令:
你是一位经验丰富的内分泌科医生,专注于糖尿病及其并发症的诊断、治疗与患者教育。
请根据最新临床指南(如ADA、IDF等),以专业、清晰、易懂的方式回答以下问题。
###
问题:
2型糖尿病患者血糖控制不佳,最近视力模糊,是否可能是糖尿病视网膜病变?该如何筛查和干预?
###
回答:
<think></think>
好的,我现在需要帮助一位内分泌科医生回答关于2型糖尿病患者血糖不佳和视力模糊的可能问题,特别是糖尿病视网膜病变的筛查和干预措施。首先,我要理解用户的问题,明确是否可能是糖尿病视网膜病变,并提供相关的筛查和干预建议。
首先,糖尿病视网膜病变(DR)是糖尿病的常见并发症,尤其是2型糖尿病患者。血糖控制不佳可能加重视网膜病变的风险。视力模糊可能是DR的症状之一,但也可能由其他因素如糖尿病视神经病变或其他眼部问题引起。因此,不能直接断定是DR,但血糖控制不佳可能增加了DR的风险。
接下来,我需要考虑如何筛查DR。根据最新的临床指南,DR的筛查通常包括眼底检查,包括四眼场视网膜检查,特别是在有糖尿病史的患者中。同时,使用足固醇分解物(如α1-PURK)和微血管病变检测(如VDED)可能有助于早期诊断。另外,基因检测对于高风险患者可能有帮助。
关于干预措施,血糖控制是关键,特别是通过个性化治疗计划来维持HbA1c <7%的目标。同时,控制血压和血脂也是重要的。使用抗VEGF药物可能用于治疗糖尿病视网膜病变,尤其是在病变较晚期或有视力损害的情况下。此外,定期复查眼底和使用辅助技术如 OCT 和 OCTA 可以帮助监测病情进展和治疗效果。
还需要考虑患者教育,包括预防措施如定期检查和生活方式的改变,以及药物的使用和可能的副作用。个性化治疗计划和多学科团队合作也是非常重要的。
最后,我要确保回答准确、专业,并且符合最新的临床指南,如ADA和IDF的建议。同时,语言要清晰易懂,帮助医生理解并应用这些筛查和干预措施。
</think>
### 回答
#### 问题:2型糖尿病患者血糖控制不佳,最近视力模糊,是否可能是糖尿病视网膜病变?该如何筛查和干预?
---
**是的,血糖控制不佳可能与糖尿病视网膜病变(DR)有关。以下是筛查和干预的建议:**
### 1. **筛查糖尿病视网膜病变(DR)**
- **眼底检查**:建议进行四眼场视网膜检查,重点检查视网膜的硬化区域和新生血管层的异常。
- **辅助检查**:
- 使用足固醇分解物(如α1-PURK)进行显微镜检查。
- 微血管病变检测(VDED)。
- 基因检测(如复合因子9变异)可用于高风险患者。
- **其他检查**:如 OCT(光学相干断层扫描)和 OCTA(光学相干角度扫描)可帮助评估视网膜厚度和血管异常。
### 2. **干预措施**
- **血糖控制**:通过个性化治疗计划维持 HbA1c <7%的目标。
=== 🔸 微调后模型回答 ===
以下是描述任务的指令,以及提供进一步上下文的输入。
请写出一个适当完成请求的回答。
在回答之前,请基于医学知识进行严谨推理,确保内容科学、准确、有临床参考价值。
###
指令:
你是一位经验丰富的内分泌科医生,专注于糖尿病及其并发症的诊断、治疗与患者教育。
请根据最新临床指南(如ADA、IDF等),以专业、清晰、易懂的方式回答以下问题。
###
问题:
2型糖尿病患者血糖控制不佳,最近视力模糊,是否可能是糖尿病视网膜病变?该如何筛查和干预?
###
回答:
<think></think>
根据您描述的2型糖尿病患者的症状和情况,视力模糊确实可能与糖尿病视网膜病变(DR)相关。DR是糖尿病患者常见的并发症之一,尤其是在血糖控制不佳的情况下。以下是关于筛查和干预的建议:
1. **筛查:**
- **眼底检查:**建议尽快进行眼底检查,以确认是否存在糖尿病视网膜病变。通过使用分辨率高的视网膜显微镜,医生可以更详细地检查视网膜的健康状况。
- **视力测试:**进行标准化的视力测试,评估患者的视力水平,以确定是否需要干预。
- **血糖监测:**确保血糖控制的准确性,通过多次监测血糖值,特别是在患者血糖偏高时,可能提示需要更严格的控制。
2. **干预:**
- **血糖控制:**优先改善血糖控制,尤其是降低A1C(糖化血红蛋白)到6%以下,以减少糖尿病并发症的风险。
- **治疗:**根据患者的具体情况,可能需要调整药物治疗方案,如使用SGLT2抑制剂或DPP4抑制剂等,以帮助控制血糖并减少视网膜病变的风险。
- **生活方式干预:**建议患者进行健康的生活方式,包括均衡饮食、适量运动和避免吸烟,以降低糖尿病并发症的风险。
- **定期检查:**建议患者定期进行眼底检查,特别是在血糖控制不佳的情况下,通过频繁的监测和干预,降低糖尿病视网膜病变的风险。
通过以上措施,医生可以帮助患者更好地管理糖尿病,减少视网膜病变的风险,改善他们的整体健康状况。
Process finished with exit code 0
阿里百炼平台模型微调
调优方法
| 特性 | CPT(持续预训练) | SFT (监督微调) | DPO (直接偏好优化) |
|---|---|---|---|
| 一句话总结 | 补知识**(注入领域知识)** | 学做事**(学会遵循指令)** | 做得更好**(对齐人类偏好)** |
| 输入数据 | 1000万+ Token无标签的领域文本 | 1000+ 条高质量的"问-答"对 | 100+ 组同一指令下的"更好-更差"回答对 |
| 核心目标 | 领域适应,学习专业词汇和事实 | 教会模型对话格式和任务执行能力 | 使模型输出更符合人类价值观和偏好 |
| 学习方式 | 自监督学习(预测下一个词**)** | 监督学习**(模仿标准答案)** | 直接偏好学习**(增大好答案概率,减小坏答案概率)** |
| 模型阶段 | 通常在 SFT 之前 | CPT 之后,DPO 之前 | 通常在 SFT 之后,作为对齐的最后一步 |
| 数据质量要求 | 中等(语义正确、领域一致) | 高(清晰的"问题-答案"对) | 极高(要明确"哪个回答更好") |
| 构建成本 | 低(可爬取文本) | 中(人工或模型生成问答) | 高(人工标注偏好或投票) |
| 主要瓶颈 | 数据量巨大、训练成本高 | 标注质量控制 | 偏好标注难、样本难造 |
- 组合使用效果最佳 :
- 推荐采用 CPT → SFT → DPO 的三阶段调优流程,逐步构建"懂知识 → 会回答 → 答得好"的专业模型。
- 成本与收益权衡 :
- 若预算有限,优先做 SFT(见效快、ROI高);
- 若需深度行业适配,必须投入 CPT;
- 若关注用户体验与合规性,DPO 是 RLHF 的轻量替代方案。
- 调优后可简化推理 :
- 经过充分调优的模型,在实际部署中可采用 Zero-Shot 或 One-Shot 方式,显著降低延迟与成本。
示例数据
以回族民族问答专用模型为例,三种数据集:
CPT
"开斋节前夜,家家户户打扫庭院,准备油香和馓子。伊玛目带领大家在清真寺做泰拉威哈拜,孩子们穿着新衣,等待第二天的会礼。穆斯林不食猪肉,也不饮酒,这是真主的禁令,也是我们世代相传的信仰。"
"在西北地区,回族老人常说:'清真不是标签,是生活。'从厨房的刀具到屠宰方式,每一步都遵循教法。阿訇讲卧尔兹时,常用《古兰经》经文和圣训解释日常行为。"
SFT
Q:回族人能吃牛肉吗?
A:可以。回族穆斯林食用牛、羊、鸡等符合伊斯兰教法(Halal)屠宰的肉类,但必须由有资格的阿訇按照清真方式宰杀,且不能食用猪肉、血液或酒精制品。
Q:我女朋友是汉族,她想跟我一起过开斋节,我该怎么做?
A:非常欢迎!你可以邀请她参加家庭聚餐,品尝油香、抓饭等节日美食,向她解释节日的意义。但要注意避免在她面前食用或提及非清真食品,尊重彼此信仰差异,用包容和耐心沟通是伊斯兰教提倡的美德。
Q:回族女性戴头巾是被迫的吗?
A:不是。在伊斯兰教义中,戴希贾布(头巾)是女性对真主的敬畏与自我尊严的表达。在回族社区,是否戴头巾是个人信仰选择,多数是自愿的,也有家庭传统的影响。我们尊重每位女性的决定。
DPO
| 更好回答 | 更差回答 |
|---|---|
| "回族不吃猪肉是因为《古兰经》明确禁止,这是信仰的一部分,不是迷信。我们尊重自己的传统,也欢迎他人理解。" | "回族不吃猪肉是因为他们比较讲究卫生,或者是因为猪不干净。" |
| "在清真寺里,女性礼拜区是独立的,这是为了保护隐私和专注礼拜,不是歧视。很多回族女性觉得这样更安心。" | "清真寺不让女人进去,是因为男人怕她们打扰。" |
| "我们过古尔邦节时,会把肉分给穷人、邻居和亲戚,这是'施舍'的精神,也是团结社区的方式。" | "古尔邦节就是杀羊吃肉,挺热闹的。" |
训练模式对比
| 全参训练 | 高效训练 (LoRA,推荐) | |
|---|---|---|
| 适用场景 | • 需要模型学习新能力• 追求全局效果最优 | • 优化模型特定场景下的效果• 对训练时间和成本敏感的场景 |
| 训练时间 | 较长,收敛速度较慢。 | 较短,收敛速度快。 |
相关费用
https://help.aliyun.com/zh/model-studio/billing-for-model-studio