如何在 Forefront 上用自己的数据微调开源模型?

更新时间

在 Forefront 上微调开源模型的基本路径是:选一个开源基础模型,用你的私有数据启动微调,在训练过程中看 loss 曲线,用验证集和内置评估指标检查效果,最后在 Playground 里试跑,确认没问题再通过 API 集成到自己的应用。这套流程适合已经明确任务、手上有可用的私有数据、希望模型更贴合自己业务场景的开发者;如果你还没有数据,Forefront 也支持先用 API 跑通用模型、把响应存下来,等积累够数据再微调。

第一步:选一个合适的基础开源模型

Forefront 的定位是“在你的数据上运行和微调开源模型”,模型可以按用途选择。页面给出的建议是:没有数据时,先选“最适合你用例的模型”,用 API 把响应存下来,之后再无缝切换到微调。

选模型时可以从三个角度判断:

  • 任务类型:对话类任务优先考虑 chat 端点友好的模型,补全类任务则看 completion 端点。
  • 数据规模:数据量少时,选参数量适中的模型更容易在验证集上看到稳定提升;数据量大再考虑更大的模型。
  • 评估基线:先记下候选模型在 MMLU、TruthfulQA、MT-Bench、ARC、HumanEval、AGIEval 等评估项上的表现,作为微调后的对照。

第二步:准备私有数据并启动微调

微调的核心动作是把你的私有数据交给选定的开源模型,让它在你的场景上获得更高准确率。页面强调“几分钟内即可开始在你的数据上微调”,但具体的数据格式、上传入口和字段要求,资料中没有给出细节,需要以 Forefront 控制台内的实际提示为准。

可以提前做的准备:

  1. 把数据整理成“输入—期望输出”的成对样本,确保同一类任务的格式一致。
  2. 留出一部分样本不参与训练,专门用作验证集。
  3. 数据涉及敏感信息时,注意 Forefront 页面强调的“私有设计、严肃安全”,但具体的数据处理条款仍需查阅其文档。

启动微调后,训练过程可以在内置的 loss 曲线里观察,例如页面展示的训练 loss 为 0.132 这样的数值。loss 持续下降说明模型在学习;如果曲线剧烈震荡或长时间不降,通常意味着数据格式混乱、样本太少或学习配置不合适。

第三步:用验证集和内置评估检查效果

微调不是训练完就结束,Forefront 提供了两层检查手段:

验证集评估:用你预留的验证样本,看模型在真实任务上的表现,页面示例中展示的是“10 个样本”的验证结果。这一步回答的是“模型在我的任务上到底行不行”。

内置评估指标:Forefront 支持自动运行多种评估,页面列出的包括:

评估项 页面示例数值
MMLU 58.0%
TruthfulQA 56.2%
MT-Bench 62.3%
ARC 75.6%
HumanEval 75.6%
AGIEval 75.6%

这些指标适合和微调前的基础模型做横向对比。需要提醒的是,通用评估分数高不等于你的业务任务表现好,验证集结果才是更直接的判断依据;两者结合看,才能决定是继续调数据还是换模型。

第四步:在 Playground 测试,再通过 API 集成

效果确认后,先在 Playground 里用真实问题试跑,观察回答是否符合预期,再接入 API。Forefront 为每个模型提供 serverless 推理端点,支持 chat 和 completion 两种端点,可以按任务选择最合适的提示语法。

页面给出的调用示例是 JavaScript:

import Forefront from "forefront";
const ff = new Forefront(process.env.FOREFRONT_API_KEY);
const response = await ff.chat.completions.create({
  model: "team-name/fine-tuned-llm",
  messages: [
    { role: "system", content: "You are Deep Thought." },
    { role: "user", content: "What is the meaning of life?" },
  ],
  max_tokens: 64,
  temperature: 0.5,
  stop: ["\n"],
  stream: false,
});

几个关键点:

  • model 填你微调后的模型标识,示例中是 team-name/fine-tuned-llm 这种“团队名/模型名”的形式。
  • messages 用 system 设定角色、user 放用户输入,这是 chat 端点的标准结构。
  • max_tokens、temperature、stop 控制输出长度、随机性和截断符,按任务调。
  • stream 控制是否流式返回,交互式应用通常开流式,批处理可以关掉。

页面还展示了 Python 侧的思路:用 OpenAI 兼容的客户端调用,再通过 ff.pipelines.get_by_id("PIPELINE_ID") 拿到管道对象,把对话消息 add 进去,用于持续积累数据、为后续微调做准备。这意味着如果你已有基于 OpenAI SDK 的代码,迁移成本主要在模型标识和管道接入上。

常见卡点

  • 没有数据就无从微调:先用 API 跑起来、存响应,是 Forefront 明确给出的过渡方案。
  • 只看通用评估分数:MMLU 等指标用于横向对比,业务效果要看验证集。
  • 训练 loss 不降:优先检查数据格式和样本量,而不是急着换模型。
  • 直接上生产:先在 Playground 验证,再走 API,避免把未验证的模型暴露给用户。

价格和登录方式在资料中只出现了 Pricing 链接和“Start for free”入口,具体额度与限制需以官网定价页为准。