如何快速做算法实验

每个算法工程师都必须要有自己熟悉的一套code toolkit,包含各种不同的任务,开放不同模块的接口,能够快速复现出sota方法,同时最重要的是有一套完整的分析步骤流程,帮助解决类似于无法收敛、梯度消失爆炸等问题、模型输入输出等相关问题。

MLOps(Machine Learning Operations)旨在提供模型开发、构建以及部署等多方面的流程化管理,类似于DevOps,只需要按照某种约定和配置,即可实现整体性的测试发布流程。

在模型层面,模型的正确性测试、模型指标验证、模型的发布以及模型的可视化测试等多个层面都可进行流程化控制,从而减少算法工程师的工作量;从技术的历史发展进程上来看,ML Ops是每一个算法工程师在未来都将具备的基本技能

定义

做任何事情,提升效率是提升能力的关键,那对于算法工程师而言,快速实验一方面是工作和学习中的高效竞争力,另一方面能够帮助自己预留更多的时间来处理其他事情,比如分析数据、分析模型、从而做相关的模型消融实验等等,所以快速实验是一个非常必要的技能,也是长期工作和学习过程中必定要具备的一项技能。

那怎么才算是快速实验呢?如果要在目前已有的任务上面跑,只需要简单改吧改吧就能够得出所有的实验结果。

要求

简单改吧改吧听起来非常简单,里面有很多工作需要完成,比如说:

  • 针对于某一个任务的输入输出、数据处理、模型结构、训练、评估等模块都要非常熟悉。
  • 熟练使用某一个代码框架,如pytorch、paddle等,并整理一套属于自己的实验toolkit。
  • 将自己的代码框架open出去,和其他开发者共同维护工具库
  • 需要更多的时间和兴趣来维护,而且还特被重要

这些要求简单也不简单:内容简单,可坚持不简单,同时用对的方法完成更加是难上加难。

总结

如果这个工作做好了,对自身和开源社区都是非常有价值的事情,可是这件事情很难。

那为什么这么难呢?明明是一件很简单的事情,如果给一个没有感性的模拟机器人来完成,这就是一个easy case job:每天定点定时完成某些任务,按时保质的坚持,这对于个人而言极其重要。

让我想起了电竞行业里面,每位选手都需要知道什么时候该做什么事情,什么时候不该做什么事情,思路非常清晰,一定要客观,尽量避免主观。可是很难,因为他们不是机器人,而是具有感情的人。

我有时候在想,自己是否要来一点人格分裂:管理者和执行者。管理者负责做plan,制定TODO List,而执行者只需要像个没有感情的机器人去完成任务就行了。听起来很荒唐,可是如果想要尝试一下,有如下建议:

  • 管理者一定要制定足够详细的todo list,且尽量人性化
  • 执行者在执行的时候,尽量快乐的且不要携带个人情绪的去完成

这个总结跑的优点偏了,只因为写到这里才突发此感。好了,继续搬砖了,下次有时间再聊。


目录