测试模型

端到端机器学习

Joshua Stapleton

Machine Learning Engineer

部署

  • ML 生命周期的下一步
  • 训练与评估之后
  • 使模型可供使用

机器学习生命周期的部署阶段

端到端机器学习

测试

  • 测试:
    • 模型不崩溃
    • 推理时返回合理输出
    • 在合理时间内返回结果

机器学习生命周期的部署阶段

端到端机器学习

Unittest

  • 测试
    • 标记异常/意外事件
    • 检查模型表现是否符合预期

 

  • unittest
    • Python 内置测试库
    • Test case:一类测试
    • Test case method:覆盖该测试中的单点
端到端机器学习

Unittest 用法

import unittest


class TestModelInference(unittest.TestCase):
def setUp(self): self.model = fitted_model self.X_test = X_test
def test_prediction_output_shape(self): y_pred = self.model.predict(self.X_test) self.assertEqual(y_pred.shape[0], self.X_test.shape[0])
if __name__ == '__main__': unittest.main()
端到端机器学习

Unittest 用法(续)

 

    def test_input_values(self):
        print("Running test_input_values test case")

        # Get inputs (each row in testing set)
        for input in X_test: 
            for value in input:
                # if value is cholestrol, for example:
                self.assertIn(value, [0, 500])
端到端机器学习

Python 测试

端到端机器学习

测试该做与不该做

最佳实践

  • 不要…
    • 测试过多
    • 重复测试
    • 为高度可靠的组件写测例

 

  • 要…
    • 编写测试以提升可靠性
    • 编写测试以校验/管理预期
    • 为新功能编写测试
端到端机器学习

测试的益处

TDD 的收益

  • 开发信心
    • 稳定迭代
    • 更少担心缺陷
  • 性能
    • 可靠性
    • 生产级
端到端机器学习

Passons à la pratique !

端到端机器学习

Preparing Video For Download...