机器学习的软件工程模式
机器学习软件工程模式
你是否曾经与前端或后端工程师同事交谈,并注意到他们对代码质量有多么在意?编写易读、可重用和高效的代码一直是软件开发社区的挑战。每天都会在Github的pull requests和Slack的讨论中进行无尽的对话。
如何最好地适应SOLID原则,如何有效地使用软件模式,如何为函数和类命名最合适,如何组织代码模块等。这些讨论可能一开始看起来简单而幼稚,但是它们的含义对于资深开发人员来说是高度知晓的。重构成本、性能、可重用性、可读性,或者更简单地说,技术债务可能会阻碍公司可持续增长的能力。
这种情况在机器学习领域也是一样的。数据科学家和机器学习工程师通常会编写大量代码。这些角色使用的代码库非常不同。从编写用于探索性分析的代码,用于建模的实验代码,用于创建训练数据集的ETL,用于生成DAG的Airflow(或类似)代码,REST API,流处理作业,监控作业等。
MLOps是DevOps的延伸,而不是分叉
它们都有非常不同的目标,有些不是生产关键的,有些可能(老实说)再也不会被其他开发人员阅读,有些可能不会直接破坏生产,但对业务有非常微妙和冒险的影响,显然,还有一些可能对最终用户或产品利益相关者造成严重影响。

在这个文章列表中,我将从非常真诚和务实的角度,尝试给出高质量的机器学习生产代码的建议和技巧,对所有这些不同类型的代码库进行讨论。我将提供我在不同类型的公司(大型企业、初创公司)和不同领域(银行、零售、电信、教育等)工作经验的真实案例。
探索性笔记本的最佳实践

有效利用Jupyter Notebooks进行业务洞察
从业务和产品洞察的角度了解如何策略性地使用Jupyter Notebooks。探索提升其在分析中影响力的技巧。
为分析打造有目的的笔记本
学习为探索性和即席分析量身定制Jupyter Notebooks的艺术。精简你的笔记本,只包含提供对问题的最清晰洞察的基本内容。
为不同受众调整语言
在笔记本工作中考虑受众(技术人员或商业人士)。在适当时使用高级术语,但要平衡使用直观的执行摘要,有效传达关键结论。
优化笔记本布局以提高清晰度
发现一个建议的笔记本结构布局,以增强清晰度和理解力。组织内容,以逻辑方式引导读者进行分析。
确保可靠洞察的可重现性技巧
探索确保基于笔记本的分析可重现性的策略。揭示有助于保持发现可靠性的技巧和策略。
构建用于机器学习的ETL的最佳实践

ETL在机器学习项目中的重要性
探索每个机器学习项目的一个关键方面:ETL。这些由Python代码和SQL组合而成的组合发挥着至关重要的作用,但在其整个生命周期内保持其稳健性可能是具有挑战性的。
构建ETL组件的心智模型
学习构建ETL过程中组件的心智表示的艺术。这种理解为有效的实现奠定了基础,并能让您很快理解任何开源或第三方框架(甚至构建自己的框架)。
拥抱最佳实践:标准化和可重用性
发现有关标准化和可重用性的基本最佳实践。实施这些实践可以提高ETL工作流的效率和一致性。
将软件设计原理应用于数据工程
深入探讨在数据工程领域内融合具体软件设计原理和模式。探索如何运用这些原则提升您的ETL工作质量。
鲁棒数据管道的指令和架构技巧
深入了解用于开发高度可靠的数据管道的广泛指令和架构策略。这些见解专门为机器学习应用而精选。
深入研究机器学习教程中的ETL案例研究
构建训练和推断算法的最佳实践

机器学习训练的性质
训练通常被视为机器学习任务中有趣且富有想象力的方面。然而,特别是在开发初始模型迭代时,训练往往相对简单和简短。复杂性可能因业务上下文而异,某些应用程序可能需要比其他应用程序更严格的开发(例如风险模型和推荐系统)。
简化训练的基础模式
为了简化训练过程并减少重复代码,可以建立基础模式。这些模式作为一种基础,可以避免为每个训练过程编写过多样板代码。通过采用这些模式,数据科学家可以更多地关注分析模型的影响和性能。
转向生产和挑战
构建机器学习模型后,下一步是将其转移到生产环境中。这一步引入了一系列挑战,例如确保特征的可用性,适当地对齐特征,管理推断延迟等等。提前解决这些挑战对于成功部署至关重要。
ML系统的整体设计
为了减轻生产部署过程中可能出现的问题,建议采用综合的机器学习系统设计方法。这包括考虑整个系统的架构和组件,包括训练、推断、数据管道和集成。通过采用综合的视角,可以在开发过程的早期识别和解决潜在问题。
构建和集成ML实验工具的最佳实践

实验在机器学习中的作用
深入探讨ML实验的基本作用。探索它如何塑造优化模型和性能的过程。
通过离线实验优化模型
发现离线实验领域,其中模型超参数被系统地改变以提高诸如ROC和准确性等关键指标。揭示在这个受控环境中实现最佳结果的策略。
探索在线实验:A/B测试及其延伸
探索在线实验的动态领域,重点关注A/B测试及其高级版本。了解这些技术如何允许根据用户行为对模型性能进行实际评估。
弥合离线指标与产品影响之间的差距
了解数据科学团队努力改善模型指标与产品成功之间的关键联系。学习有效地将离线指标的改进与现实世界的产品结果相互关联的策略。
对齐技术:模型改进和产品指标
深入探讨促进迭代模型改进与切实产品指标(如留存率和转化率)对齐的技术和方法。获得关于实现数据驱动增强与业务目标之间和谐协同的见解。
接下来是什么?
我们已经看到,在机器学习中,代码质量和传统软件开发一样重要。数据科学家和机器学习工程师使用不同的代码库,每个代码库都有不同的目的,并对业务和最终用户产生不同程度的影响。在这篇文章中,我们探讨了生成高质量机器学习生产代码的关键方面,涵盖了从探索数据集到实现实验工具的所有内容。
通过这些文章,我们的目标是为您提供全方位的视角,分享宝贵的见解、建议和技巧,将您的机器学习生产代码提升到新的高度。拥抱这些最佳实践,您将能够克服挑战,减少技术债务,并帮助您的团队成长。
因此,无论您是一个有抱负的机器学习从业者还是一个经验丰富的专业人士,准备好提升您的编码技能,确保您的机器学习项目的成功。立即深入阅读这些文章,将您的MLOps战略提升到前所未有的水平!