本月我学到的机器学习经验
Source: Towards Data Science
请提供您希望翻译成简体中文的正文内容,我会在保持原有格式、Markdown 语法和技术术语不变的前提下为您完成翻译。
Source: …
二月回顾
有时是二十九天。这就是二月:一个短暂的月份。
大约四个标准周。大约二十个工作日。从宏观上看,这 4 × 5 天里并没有太多进展。然而,和往常一样,日复一日仍然完成了不少事情:
- 进行了一些实验。
- 有一些想法被否决。
- 有一些讨论推动了事情向前。
- 有一些代码改动的影响超出预期。
回顾过去的这个月,我从机器学习研究和工程的世界中找到了三条突出的经验教训:
- 与他人的交流很重要。
- 文档往往被低估,直到为时已晚。
- MLOps 只有在真正适合其使用环境时才有意义。
Source: …
1. 与他人的交流
如果你经常阅读机器学习论文,你会注意到一种模式:在文中引用时,通常只显示第一作者的名字,而其他作者的名字只出现在参考文献部分。这是否意味着第一作者是独自完成了全部工作?
很少。 只有在唯一作者单独撰写论文的特殊情况下才是如此。
大多数研究都来源于交流——与合著者的讨论、同事的评论、迫使你 sharpen 思考的问题,以及来自相邻学科的想法,这些是你的领域单独无法产生的。好的研究常常感觉像是踏入他人的领地,学会恰好足够的他们的语言,以带回有用的东西。
但这不仅适用于学术论文;同样适用于日常工程工作。
- 与同事的简短交流可以为你节省数小时在错误路径上徘徊的时间。
- 在咖啡机旁的五分钟对话可能会给你提供那唯一缺失的关键,使你的设置顺利运行。
- 即使是非正式的交谈也很重要。并非每一次有价值的讨论都始于带有精美幻灯片的预定会议;有时它始于“顺便说一下,我在日志里注意到一些奇怪的东西”。
本月的经历再次提醒了我这一点。几次小小的交流比起单独思考更快地澄清了问题。没有什么戏剧性的、值得做主题演讲的事——只有与其他思考相似问题的人交谈的那种平常而安静的价值。
Source: …
2. 文档
你有没有对代码进行过修改?
当然有。
第二天还能记得为什么做了这些修改吗?可能还能记得,因为只隔了一天。但一周后呢?一个月后?六个月后?
这时情况就不那么明显了。
当不需要文档时
- 重命名变量
- 修正拼写错误
- 纠正无害的日志问题
这些小而无害的改动通常不需要长篇解释。同样的情况也常适用于那些不会改变先前结果相关结论的 bug 修复。
当文档必不可少时
- 改变假设的修改
- 数据预处理步骤的调整
- 训练特性或评估逻辑的修改
- 任何影响输出意义的改动
这些改动值得记录,因为它们正是你在以后回到项目时最容易忘记的。
文档不仅是为某个抽象的未来合作者准备的——更是为你未来的自己准备的。当你沉浸在代码中时,一切都显得理所当然。三个月后,就不再是这样。你会盯着某行代码、某个配置或神秘的数据转换,心里自问:
“我到底为什么要这么做?”
这个问题完全可以避免——现在就把动机写下来吧。
3. MLOps 实践
大多数机器学习研究的目标,以一种或另一种形式,都是产出 已训练模型。
但只有极少数模型真正进入了实际使用。
许多模型停留在它们诞生的地方:笔记本、研究服务器、内部演示或论文中。要把模型投入生产使用,你需要的不仅仅是模型本身——还需要:
- 基础设施
- 流程
- 监控
- 可复现性
- 部署策略
换句话说,你需要 MLOps 的工具和原则。
以云为中心的认知
MLOps 的招聘信息常常提到云提供商(AWS、GCP、Azure)、云原生流水线、托管服务以及分布式部署环境。
这些工具很重要,并且在许多场景下是正确的选择。
但是,值得提出一个简单的问题:目标环境真的就是云环境吗?
当目标不是云时
以工业场景中的自动化质量控制为例。模型可能 直接在本地 运行,靠近生产产品的机器。
- 我们真的要把所有相关数据流向公共云吗?
- 数据往往反映了公司的核心流程和竞争优势。
- 许多企业对以这种方式暴露生产关键环境感到不安。
这时,对 MLOps 的更务实的视角就显得尤为重要。
MLOps 的务实视角
- MLOps 不是一套固定的工具箱;它是一系列在不断变化的条件下保持工具可复现的实践。
- 它必须适配使用它的环境,而不是让环境去适配它。
- 目标不是把每一个部署问题都强行套进最新流行的工具框架,而是让模型在真实约束下发挥作用。
部署场景
| 场景 | 典型约束 | 典型 MLOps 关注点 |
|---|---|---|
| 云流水线 | 无限可扩展性、托管服务 | CI/CD、自动伸缩、监控 |
| 本地部署 | 旧有硬件、内部网络 | 版本化制品、内部注册表 |
| 边缘 / 受限环境 | 连接受限、严格访问控制、硬件限制 | 轻量容器、OTA 更新、本地监控 |
在 所有 情况下,核心原则保持不变:
- 版本化 —— 数据、代码、模型和配置。
- 可复现性 —— 确定性的构建和运行。
- 监控 —— 性能、漂移、资源使用。
- 安全发布 —— 金丝雀发布、蓝绿部署、回滚。
- 稳健运行 —— 容错、安全、合规。
实现 的方式可能大相径庭,但其底层哲学始终如一。
结语
二月虽然短暂,却并不空洞。和一年中的其他每个月一样,有许多值得学习的经验:
- 机器学习的进展往往依赖于与他人的交流,而不仅仅是独自思考。
- 文档的重要性恰恰在于你认为自己不需要它的时候。
- MLOps 只有在适配实际环境时才有价值。
我敢打赌,下个月会带来另一套类似的教训——未必华丽,却是那种安静的“哦,是的,这可能是个好办法”的洞见,指引着日常工作。