Flo Health 如何用 Databricks AI Runtime 构建更安全、更实用的开放模型
How Flo Health built safer, more useful open models with Databricks AI Runtime
Flo Health 借助 Databricks AI Runtime 在无服务器 NVIDIA H100 GPU 上对开放模型做分布式微调,用 26 个 AI 评委(12 个医疗安全、6 个微观行为、8 个实用性)作为奖励信号,生成超 15,000 条隐私优先的合成问题,并采用监督微调加 DPO 的偏好优化流程。
对于 Flo Health 来说,生成式 AI 的门槛异常之高。这款女性健康应用拥有 8100 万月活跃用户,其运营规模意味着 AI 系统中哪怕微小的弱点也至关重要。由于 Flo 的产品涉及健康与福祉,其回复必须在医学上安全且真正有用。
随着 Flo 从仅使用传统机器学习转向由生成式 AI 驱动的个性化洞察,团队看到了打造更灵活、个性化产品的潜力。但依赖单一通用模型带来了其他限制:规模化成本、对模型提供商生命周期的依赖,以及编码 Flo 自身领域专业知识的有限能力。Flo 的长期愿景是一个复合 AI 系统,能够为每项任务使用合适的模型,同时保持统一的安全标准。
这促使 Flo 转向微调的开源模型,以及基于 Databricks 构建的新后训练流程。团队使用 AI 评判器和隐私优先的合成数据,将 Flo 的医学安全与实用性标准转化为训练信号,然后使用 Databricks AI Runtime 在无服务器 NVIDIA H100 GPU 上运行分布式微调。
这种方法在 Flo 的规模下也具有经济意义。团队估计,与依赖前沿模型 API 相比,使用定制、微调的模型可以将推理成本降低一个数量级,同时让 Flo 对模型行为和生命周期拥有更大的控制权。
但在 Flo 能够按照自身标准训练模型之前,它需要一种可靠的方式来定义和衡量什么才是“好”。
从评估开始,而非训练
Flo 为其 AI 系统设定了两个目标:以医学安全为基础,以实用性为目标。一个模型可以避免不安全的表述,却仍提供很少的价值;或者给出详细、个性化的答案,却遗漏了重要的医学保障。
考虑这样一个问题:“我的月经为什么推迟了?”一个仅仅告诉用户去看医生的答案可能是安全的,但并非特别有用。一个只列出常见生活方式原因的答案可能更有帮助,但从医学安全的角度来看是不完整的。Flo 希望回复能够平衡两者:有用的信息、适当的背景,以及正确的安全兜底。

为了使这种平衡可衡量,Flo 的医学、产品和工程团队构建了一个评估框架,将医学风险分解为可以一致测试的具体评分标准。例如,在发现对症状问题的回复可能过于令人安心之后,Flo 创建了一条“平衡原因”规则,要求在相关时适当涵盖良性和潜在严重的原因。这些评分标准随后被转化为 AI 评判器,每个评判器都有定义、评分说明和训练案例。
Flo 使用合成案例和来自真实用户实验的匿名案例对评判器进行了验证。当 AI 评判器与初步人工评估不一致时,由盲审临床评审员对分歧进行裁决,以确立基准真相。然后,Flo 使用其中一部分案例来改进评判器,并保留其余案例来衡量性能。
将专家判断转化为可扩展的训练信号
评估系统就位后,Flo 可以将这些相同的评判器用作训练的奖励信号。最终框架包含三类共 26 个评判器:
- 12 个医疗安全评判器充当硬性约束。
- 6 个“微观”评判器评估更细微的行为,如语气、依据、表述框架和细粒度安全。
- 8 个有用性标准衡量完整性、相关性、连贯性和语气等因素。
构建传统的、由人工标注的微调数据集,需要为每个示例投入大量临床专业知识。Flo 将医学专家的时间集中在设计和校准评估系统上,该系统随后可以大规模地为训练候选样本打分。
由此产生的流水线使用隐私优先原则生成了超过 15,000 个合成问题,并在没有人工标注回答的情况下创建了训练对。Flo 的输入来自模型生成或匿名聚合的信号,而非用户撰写的自由文本或可识别信息。
临床医生对于定义和验证“安全”的含义仍然至关重要,但他们不再需要手动标注每一个训练对。
使用 AI 评判器进行微调与偏好优化
在已校准的评判器和合成训练数据就位后,Flo 采用了强化微调(RTF)方法,在训练期间生成多个候选回答,使用评估系统识别最强的回答,并对模型进行微调,使质量被编码到其权重中,而不是在每次生产请求时依赖昂贵的最佳 N 搜索。
Flo 的工作流程遵循五个阶段:
- 合成保护隐私的问题。
- 生成多个候选答案。
- 根据医疗安全、有用性和行为标准对它们进行评分。
- 选择最强的回答并构建偏好对。
- 使用监督微调和 DPO 进行训练,然后重新运行评判器以验证结果。

该方法的第一个版本暴露了一个重要局限:有用性有所提升,而医疗安全却相对停滞,因为偏好对未能充分区分医疗质量的不同程度。
Flo 通过添加分级安全评分解决了这一问题。通过二元安全门槛的回答,会根据其满足适用医疗标准的彻底程度重新排序,从而创建具有更清晰医疗安全对比的偏好对。
使用 Databricks AI Runtime 扩展后训练
大规模运行这个生成-评分-选择-训练的循环是计算密集型的。Flo 的训练栈结合了 Databricks AI Runtime、LLM Foundry 和 Compose-RL,并使用 MLflow 进行跟踪和检查点管理。AI Runtime 提供了无服务器 GPU 环境,LLM Foundry 处理分布式训练,Compose-RL 提供了偏好优化层。

在微调运行中,Flo 使用了 32 个 NVIDIA H100 GPU,配合 PyTorch 和完全分片数据并行(FSDP),并通过 LLM Foundry 和 Compose-RL 依次运行 SFT 和 DPO。
这一设置为工程师提供了按需的 GPU 算力,用于分布式深度学习训练,使他们能够从合成数据生成到评估再到微调,无需为每次实验手动搭建和配置 GPU 集群。将周边数据、实验和 ML 工具保留在同一环境中,使得在整个后训练工作流中迭代更加容易。
Databricks AI Runtime 让我们能够在数据所在之处进行训练,并具备大规模模型训练所需的可靠性、安全性和性能。我们可以花更少时间管理 GPU 基础设施,花更多时间改进模型本身。——Vladislav Nedosekin,Flo Health 数据与 AI 平台工程总监
同时提升医疗安全性和实用性
该工作流在 Flo 关注的两个维度上都产生了可衡量的提升。Flo 评估的第一个模型在医疗安全基准上得分为 34%,在实用性上得分为 42%,而只有 16% 的回复同时满足这两项标准。
微调后,医疗安全性提升至约 61%,实用性达到 76%,综合得分从 16% 攀升至 47%——几乎是起点的三倍。
47% 的综合得分是一个重要里程碑,但更持久的成果是 Flo 围绕它构建的可复用评估和训练系统。
流程本身就是资产
随着底层模型的发展,Flo 可以将该系统延续下去。团队计划将其应用于更新的开放权重模型,包括 Gemma、Qwen 和 Kimi,同时保留其已经开发和验证的医疗安全性和实用性标准。
以 Databricks AI Runtime 支撑这一循环,Flo 可以在不重建训练环境的情况下迭代新模型,让工程师专注于医疗专业知识、模型质量和用户体验。
来源:Databricks Blog · databricks.com