模型微调方法实战(基于硅基流动、百炼、unsloth平台)

模型微调方法实战

资料链接汇总

硅基流动模型微调文档

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 数据集很少

模型微调介绍

领域专业化:让模型掌握"行业黑话"

  • 原因:通用模型的训练数据覆盖面广,但难以深入垂直领域的知识体系和专业术语。例如医学诊断需理解病理特征,法律咨询需熟悉法条逻辑。当模型在专业领域认知不够时,会出现比较严重的幻觉问题,也就是胡乱回答,微调可以很好的解决这个问题
  • 典型场景
    • 医学问答:输入症状描述,模型需结合医学知识库输出可信的初步诊断建议。
    • 法律咨询:分析"未成年人合同效力"时,需准确引用《民法典》相关条款。

任务适配:调整模型的"输出模式"

  • 原因:不同任务对模型能力的要求差异显著------分类任务需结构化输出,生成任务需语言创造力。
  • 典型场景
    • 文案生成:训练模型以幽默风格撰写广告文案(如"这杯咖啡,比老板的早安更提神")。
    • 心理咨询:从"情绪识别"转向"疏导对话",需调整输出为引导性提问而非结论性判断。

能力纠偏:解决模型的"偏科问题"

  • 原因:通用模型可能对某些任务过度敏感(如政治倾向)或表现不足(如冷门领域的长尾问题)。
  • 典型场景
    • 民俗推理:输入生辰八字与手相特征时,模型需按传统命理逻辑生成连贯解释,而非套用通用话术。
    • 边缘案例:处理"宠物能否继承遗产"时,需结合继承法细则而非泛泛回答。

模型调优作为重要的模型效果优化方式,可以:

  1. 提升模型在特定行业/业务表现
  2. 降低模型输出延迟
  3. 抑制模型幻觉
  4. 对齐人类的价值观或偏好
  5. 使用调优后的轻量级模型替代规模更大的模型
  6. 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

微调流程

一般操作流程按照官网文档执行即可,下面是一些注意事项

准备数据集:

  1. 硅基流动只支持 文件格式JSONL、数据集风格ShareGPT类型的数据;且每个数据集只能包含5000行数据;
  2. EasyDataset 能够直接相应类型的数据;
  3. 如果是在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 之后,作为对齐的最后一步
数据质量要求 中等(语义正确、领域一致) 高(清晰的"问题-答案"对) 极高(要明确"哪个回答更好")
构建成本 低(可爬取文本) 中(人工或模型生成问答) 高(人工标注偏好或投票)
主要瓶颈 数据量巨大、训练成本高 标注质量控制 偏好标注难、样本难造
  1. 组合使用效果最佳
    • 推荐采用 CPT → SFT → DPO 的三阶段调优流程,逐步构建"懂知识 → 会回答 → 答得好"的专业模型。
  2. 成本与收益权衡
    • 若预算有限,优先做 SFT(见效快、ROI高);
    • 若需深度行业适配,必须投入 CPT
    • 若关注用户体验与合规性,DPO 是 RLHF 的轻量替代方案。
  3. 调优后可简化推理
    • 经过充分调优的模型,在实际部署中可采用 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

相关推荐
来两个炸鸡腿2 小时前
【Datawhale组队学习202602】Easy-Vibe task05 完整项目实战
人工智能·学习·大模型·vibe coding
在未来等你6 小时前
AI Agent Skill Day 8:SQL Executor技能:自然语言转SQL的智能查询
llm·ai agent·skill·技能开发·function calling·tool use
pcplayer8 小时前
Delphi程序和大模型交互之二
人工智能·ai·大模型·agent·delphi
CoderJia程序员甲20 小时前
GitHub 热榜项目 - 日榜(2026-02-23)
人工智能·ai·大模型·github·ai教程
@SmartSi1 天前
Spring AI 实战:通过 ChatMemory 构建有记忆的智能对话应用
llm·spring ai
AI周红伟1 天前
周红伟:信创大模型企业级部署实操,Qwen3.5 昇腾企业级部署案例实操
大数据·人工智能·大模型·智能体
玖雨y1 天前
Agent Skills:AI的行动力
ai·llm·agent skills
在未来等你1 天前
AI Agent Skill Day 5:Skill Composition技能组合:多技能编排与流程设计
llm·ai agent·skill·技能开发·function calling·tool use
AI周红伟1 天前
周红伟:Qwen3.5-Plus - 企业级部署案例实操,Qwen3.5 LLM,包括 Qwen3.5-397B-A17B
大数据·人工智能·大模型·智能体