您现在可以部署用于预测独角兽外观的独角兽模型了! 部署时,您的机器学习 (ML) 流水线应该运行、更新和 不会出现问题如果只是部署模型 一个较大的部署按钮。遗憾的是,一个完整的机器学习系统 需要进行以下测试:
- 验证输入数据。
- 验证特征工程。
- 验证新模型版本的质量。
- 验证服务基础架构。
- 测试流水线组件之间的集成。
许多软件工程师青睐测试驱动型开发 (TDD)。在 TDD 中,软件 工程师应该先编写测试,然后再编写“实际”代码源代码。 不过,TDD 在机器学习中可能比较棘手。 例如,在训练模型之前,您不能编写测试来验证 损失。相反,您必须先在模型学习过程中发现可实现的损失, 然后针对可实现的损失测试新的模型版本。
关于独角兽模型
本部分引用了 unicorn 模型。以下是您需要知晓的相关信息:
您正在使用机器学习构建一个分类模型, 独角兽的外表。您的数据集详细列出了 10000 次独角兽出现的情况和 10,000 只独角兽未出现。数据集包含 时段、海拔、温度、湿度、树木覆盖率、是否有 彩虹和一些其他功能
通过可重现的训练测试模型更新
也许您想继续改进您的独角兽模型。例如,假设 对特定特征进行一些额外的特征工程,然后 重新训练模型,希望获得更好的(或至少获得相同)结果。 遗憾的是,重现模型训练有时很困难。 为了提高可重现性,请遵循以下建议:
确定性地植入随机数生成器。 有关详情,请参阅数据随机化 第几代
按固定顺序初始化模型组件,以确保组件获得 获取相同的随机数。 机器学习库通常会自动处理此要求。
计算多次运行模型的平均值。
即使是初步迭代,也使用版本控制,这样您可以 在调查模型或流水线时精确定位代码和参数。
即使遵循了这些准则,其他来源不确定性也可能 仍然存在。
测试对机器学习 API 的调用
如何测试 API 调用的更新?你可以重新训练模型, 这非常耗时请改为编写单元测试来生成随机输入数据 并运行一步梯度下降法。如果此步骤在没有 则表示对 API 的任何更新很可能都未破坏您的模型。
为流水线组件编写集成测试
在机器学习流水线中,更改一个组件可能会导致其他组件出错 组件。通过编写 集成测试,用于端到端运行整个流水线。
除了持续运行集成测试之外,您还应运行集成测试 。在容器运行 整个流水线加大了持续集成测试的难度。运行集成 可以加快测试速度,也可以使用一部分数据进行训练,或者使用更简单的模型进行训练。详细信息 取决于您的模型和数据。要获得持续覆盖率,您需要 加快测试速度,以便在每个新版本的模型或软件上运行。 同时,您的慢速测试会在后台持续运行。
在应用之前验证模型质量
在将新的模型版本推送到生产环境之前, 以下两类质量下降:
突然降级。新版本中的错误可能会导致 画质降低。通过检查质量来验证新版本 与前一版本相比。
降级速度缓慢。针对突然降级的测试可能无法检测到缓慢的 多个版本的模型质量下降。相反,请确保您的 模型在验证数据集上的预测达到固定阈值。如果您的 验证数据集偏离实时数据,请更新您的验证 数据集,并确保模型仍满足相同的质量阈值。
在应用之前验证模型基础架构的兼容性
如果模型的更新速度比服务器快, 来自服务器的不同软件依赖项 不兼容。确保模型使用的操作存在于 以沙盒化版本的服务器中预演模型,从而对服务器进行微调。