本文介绍如何使用火山引擎上的火山方舟平台对大模型进行微调,使大模型能够服务于特定的场景。这里主要演示了使用长 CoT 的推理数据对 doubao-lite-32k 进行监督微调(SFT),以使 doubao-lite 大模型具备类似 DeepSeek-R1 的深度思考和推理能力。

数据准备

火山方舟上模型精调数据集文件需为 jsonl 格式的文件,数据格式示例如下:

{"messages": [{"role": "user", "content": "孤灯照不寐,风雨满西林。下一句是?"}, {"role": "assistant", "content": "多少关心事,书灰到夜深。"}]}
{"messages": [{"role": "system", "content": "请根据古诗内容,仅回复作者的名字。"}, {"role": "user", "content": "孤灯照不寐,风雨满西林。多少关心事,书灰到夜深。"}, {"role": "assistant", "content": "李群玉", "loss_weight": 1.0}]}

因此,需要将数据集处理为上述格式并保存为 jsonl 文件。
这里使用的数据集为开源的医疗推理数据集:FreedomIntelligence/medical-o1-reasoning-SFT,总共 24k+ 中文数据样本,数据处理代码如下:

import json

from datasets import load_dataset


def format_func(examples):
    cots = examples["Complex_CoT"]
    outputs = examples["Response"]
    assistant = []
    for cot, output in zip(cots, outputs):
        assistant.append(assistant_prompt.format(cot, output))
    return {"assistant": assistant}

system_prompt = ("You are a medical expert with advanced knowledge in clinical reasoning, diagnostics, and "
                 "treatment planning. Please answer the following medical question. Before answering, "
                 "think carefully about the question and create a step-by-step chain of thoughts to ensure a logical and accurate response.")
assistant_prompt = "<think>\n{}\n</think>\n<answer>\n{}\n</answer>"

dataset = load_dataset(
    "FreedomIntelligence/medical-o1-reasoning-SFT",
    'zh', split = "train", trust_remote_code=True)
dataset = dataset.map(format_func, batched=True, num_proc=1)
with open("r1_train_data.jsonl", "w") as f:
    for item in dataset:
        messages = [{"role": "system", "content": system_prompt}, {"role": "user", "content": item["Question"]},
                    {"role": "assistant", "content": item["assistant"]}]
        f.write(json.dumps({"messages": messages}, ensure_ascii=False) + "\n")

开始微调

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

微调结果

Loss 曲线

在这里插入图片描述

模型推理测试

使用精调后的模型创建推理接入点后就可以使用 OpenAI API 进行调用推理。创建后可以在推理接入点的 API 调用界面查看到 API Key、base url 和 推理接入点名称,测试代码如下:

export OPENAI_API_KEY="YOUR_API_KEY"
export OPENAI_API_BASE="YOUR_API_BASE"
import os
from openai import OpenAI


client = OpenAI(
    api_key = os.environ.get("OPENAI_API_KEY"),
    base_url = os.environ.get("OPENAI_API_BASE"),
)

system_prompt = ("You are a medical expert with advanced knowledge in clinical reasoning, diagnostics, and "
                 "treatment planning. Please answer the following medical question. Before answering, "
                 "think carefully about the question and create a step-by-step chain of thoughts to ensure a logical and accurate response.")
question = "有一个病人咳嗽两三个月了,并且流鼻涕,这两天才查出来全鸡蛋过敏,现在应该怎么办" #"一个患有急性阑尾炎的病人已经发病5天,腹痛稍有减轻但仍然发热,在体检时发现右下腹有压痛的包块,此时应如何处理?"

completion = client.chat.completions.create(
    model = "ep-xxx",  # your model endpoint ID
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": question},
    ],
)
print(completion.choices[0].message.content)

模型推理结果如下:

<think>
这个病人已经咳嗽和流鼻涕两个月了,这听起来不像是普通的感冒,可能是慢性呼吸道问题。他最近才被查出对鸡蛋过敏,我想这可能和他的症状有关。

全鸡蛋过敏是一种比较常见的食物过敏,有些人对鸡蛋蛋白过敏。这种过敏会导致呼吸道症状,比如咳嗽和流鼻涕。不过,症状也可能是因为其他原因引起的。

让我们来看看他的症状。他咳嗽和流鼻涕已经持续了两个月,这确实很长时间。如果是因为过敏,那可能是鸡蛋引起的慢性过敏反应。

在这种情况下,首先要做的是确认他的过敏是由鸡蛋引起的。这可以通过皮肤点刺试验或血液检测来确认。

如果确认了是鸡蛋过敏,那么接下来要考虑的是如何控制症状。一般来说,避免食用鸡蛋是最基本的措施。但是,对于已经出现症状的人来说,这可能不够。

既然他已经有慢性症状,可能需要药物来控制。像抗组胺药可以缓解流鼻涕,而支气管扩张剂可以帮助缓解咳嗽。

同时,他还需要知道如何识别和避免潜在的过敏原,包括其他可能含有鸡蛋成分的食物或产品。

总的来说,他需要尽快进行过敏原测试,确认过敏原因,并根据结果采取相应的治疗措施。这样可以帮助他缓解症状,避免进一步的过敏反应。
</think>
<answer>
对于这位咳嗽和流鼻涕已经持续了两个月的病人,首先需要确认他的症状是否确实是由鸡蛋过敏引起的。这可以通过皮肤点刺试验或血液检测来进行。如果确认是鸡蛋过敏,那么首要的措施是避免食用鸡蛋。此外,对于已经出现症状的患者,可能需要使用药物来控制症状,例如抗组胺药来缓解流鼻涕,支气管扩张剂来缓解咳嗽。

同时,病人需要了解如何识别和避免潜在的过敏原,包括其他可能含有鸡蛋成分的食物或产品。这可以通过仔细阅读食品标签来实现。如果可能,也可以咨询过敏专科医生,以获取更详细的治疗建议和管理方案。

总之,对于慢性过敏反应,及时进行过敏原测试和采取相应的治疗措施是非常重要的,以帮助缓解症状并避免进一步的过敏反应。
</answer>

火山引擎优惠活动

还没有用过火山引擎大模型平台的小伙伴赶紧去注册体验吧,现在注册还可以领取大模型权益,获得 1 张 15 元代金券,约可抵扣 375 万 DeepSeek-R1 模型 tokens,畅享 DeepSeek R1 和 V3,支持 3 万 RPM和 500 万 TPM不限速,可以点击下方链接或扫描下方图片二维码注册领取:
火山方舟大模型体验中心-火山引擎
在这里插入图片描述

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐