学习-黑客攻击和部署机器学习

学习、黑客攻击和部署机器学习

原文:towardsdatascience.com/learning-hacking-and-shipping-ml/

在“作者聚焦”系列中,TDS 编辑们与我们的社区成员讨论他们在数据科学和 AI 领域的职业道路、他们的写作以及他们的灵感来源。今天,我们很高兴与 Vyacheslav Efimov. 进行对话。

Vyacheslav 是一位专注于 NLP 和计算机视觉的高级机器学习工程师。他的一项热情是制作教育内容:Vyacheslav 在 Towards Data Science 上发表了超过 60 篇文章,用简单的语言解释复杂的概念,提供丰富的可视化内容。

你在 TDS 上写了许多关于基础和解释的文章。教基础内容是否改变了你在工作中设计或调试系统的方式?

我注意到,我教得越多,我对它的理解就越好。在现实生活中,当我写一篇新文章时,我努力深入细节,同时保持对读者的解释简单。以这种方式强调信息有助于我更好地理解算法的工作流程。

在这个意义上,每当我遇到我在过去写的文章中提到的、在工作中使用的某个算法的错误时,我更有可能迅速自己找出解决问题的方法。从另一个角度来看,当我写一篇关于不熟悉主题的文章并自己探索时,当我将这个特定的算法应用于工作时,它会增加我的信心,因为我已经知道它的应用范围、优点、缺点以及具体细节或限制。

这样,我可以提出别人不明显但对我有帮助的原创解决方案,并支持我向其他队友、经理或利益相关者做出的选择。这种知识对我来说非常宝贵。

随着每天涌现出如此多的新模型,很容易感到完全不知所措。你如何决定哪些值得深入挖掘,哪些只是了解大意?你最近有没有改变管理这些内容的方法?

今天,我们确实有大量的模型和工具每天出现。当你不确定下一步该追求什么时,很容易感到迷茫。

由于时间有限,我通常深入研究可能在工作中或在我的个人项目中应用的主题。这让我在必须展示或解释我的结果时更有信心。

企业通常希望尽快取得工作成果。这也是我为什么在文章中更注重理论概念的原因之一,因为我无法在工作时间投入时间去深入研究理论。

这样,我在工作中积累了丰富的实践经验,并在我的博客中获得了理论洞察。这两个组成部分对于熟练的数据科学家来说都很重要。

你参加过 AI 黑客马拉松。从这样紧张的截止日期中,你学到了什么?它是否迫使你更好地界定项目或决定模型?你发现自己在从头开始构思新想法时使用了这些“黑客马拉松经验”吗?

黑客马拉松通常持续几个小时到两天。这是一个非常短的时间来开发一个功能齐全的产品。然而,与此同时,它也极大地推动我在过去更好地优先考虑应该关注的特性。总的来说,时间管理是一项宝贵的技能。当你有几种可能的解决方案来解决你的问题时,你必须选择最适合商业需求且尊重时间限制的那个。

另一个很好的地方是,在每次黑客马拉松之后,你可以根据实现某些功能所需的时间来评估自己。例如,假设这是你第一次开发 RAG 管道,你花了大约 4 个小时来实现。下次你在工作中或黑客马拉松中遇到类似的问题时,你将能够提前更好地估计如果你决定使用相同的方法,需要多少时间。从这个意义上说,黑客马拉松经验让你能更好地定义你希望在项目中实施的方法的时间限制。

对于我来说,黑客马拉松最大的教训不是在创建最小可行产品(MVP)时过分追求完美。虽然 MVP 很重要,但向客户或投资者展示你的产品,解释其商业价值、解决的问题以及为什么它比市场上的现有解决方案更好,也是必要的。在这方面,黑客马拉松教会你提出更好的想法,解决实际问题,同时快速交付 MVP,包含最基本的功能。

对于正在考虑职业道路的读者:你的“成为数据科学家的路线图**”系列涵盖了从基础到高级机器学习的内容。如果你今天重写它,哪些主题会被提升、降低或完全删除,为什么?

我一年前写了这个系列文章。对我来说,我列出的所有概念和主题都是对有志成为数据科学家的人来说最新的。我在那里提出的所有数学、计算机科学和机器学习主题都是任何机器学习工程师的必要基础。

现在我们已经到了 2025 年的后期,我还会增加一个要求,即至少要有一些提示工程的经验,并熟悉一些 AI 生成工具,例如 GitHub Copilot、Gemini CLI 和 Cursor,这将有助于提高工作效率。

作为备注,与往年相比,IT 公司对进入数据科学领域的初级工程师的要求和期望更高。这是有道理的,因为现代 AI 工具可以很好地执行初级任务,许多公司现在更愿意依赖它们,而不是初级工程师,因为在这两种情况下,他们都能得到相同的结果。

正因如此,如果一个机器学习工程师拥有我在那一系列文章中描述的强大基础技能,他们将更容易自主地深入研究更复杂的话题。

你的背景融合了软件工程和机器学习。这个基础如何塑造你的写作方式?

强大的软件工程技能是作为数据科学家可以拥有的最佳优势之一:

  • 这让你意识到良好结构化的软件文档和创建可重现的机器学习管道的重要性。

  • 你能更好地理解如何使你的代码对他人来说既干净又易于阅读。

  • 你理解算法约束,并根据系统需求选择特定任务的数据结构。

  • 你可以更容易地与后端和 DevOps 工程师合作,整合你的代码模块。

  • 你不需要依赖他人来执行 SQL 查询以从数据库中检索必要的数据。

列表可以一直继续下去…

说到我的文章,我没有很多包含大量代码的文章。然而,每当我这样做时,我都努力使它对他人来说既易于阅读又易于理解。我总是设身处地地考虑自己,并问自己如果我是别人,我的文章文本或代码示例会如何容易被感知或重现。这就是软件工程经验使我意识到这一点对我更加重要的地方,我遵循最佳实践来交付我的最终产品。

查看你的 作品集 GitHub,你从一开始就将软件工程基础与机器学习相结合。你希望更多有抱负的数据科学家早期就采纳的一个工程习惯是什么?

许多工程师,尤其是初级工程师,往往低估了创建良好文档和可重现管道的重要性。这在我过去也发生过,当时我更专注于开发稳健的模型或进行研究。

结果证明,当我需要改变上下文,然后在几周后返回工作于之前的项目时,我花费了大量时间来弄清楚如何在混乱的 Jupyter Notebook 中运行我的旧代码或重新安装必要的库,而过去我只需花更多一点时间,通过开发一个良好的 README.md 文档,解释从零开始执行管道的所有必要步骤。

由于几乎不可能从头开始重新运行我的管道,我也无法使用其他入门参数进行实验,这使得情况更加令人沮丧。

这对我来说是一次痛苦的经历,但也是我学到的最有价值的教训之一。所以,如果我要给一个有志于成为数据科学家的人提一条特别建议,那就是:

“始终使你的机器学习管道可重用且文档完善”。

在过去的一年里,人工智能是否在本质上改变了你作为机器学习工程师日常工作的方式?哪些事情变得更容易,哪些事情变得更难,哪些保持不变?

在近年来,我们观察到强大的 AI 工程工具显著增加:

  • 能够回答几乎所有问题、提供建议或发现软件中错误的 LLMs

  • Cursor、Lovable 和 Bolt 正在作为为开发者提供 AI 驱动的 IDE

  • 人工智能代理可以完成多步任务

作为机器学习工程师,对我来说,定期适应这些工具以高效使用它们是至关重要的。

什么变得更加容易

从 2025 年开始,我观察到以下对我工作的积极影响:

  • 对我来说,快速测试想法或原型变得更加容易。例如,在工作中,有时我被分配了一些超出我的知识领域的计算机视觉问题。通过这种方式,我可以要求 ChatGPT 提出解决这些问题的几个想法。甚至有几次,ChatGPT 为我生成了代码,我尝试执行它,但没有理解其内部的工作原理。

    然后,我有两种可能的情况:

    • 如果代码成功运行并解决了初始问题,然后我会尝试深入研究 OpenCV 文档,以了解它最终是如何工作的。

    • 如果代码没有解决我的问题,我可能会忽略它,将错误报告给 ChatGPT,或者尝试自己找到解决方案。

正如你所见,我能够快速测试一个可行的解决方案,从而节省数小时的研究时间,而且没有任何风险。

  • 对我来说,另一个极好的用例是将错误信息直接输入到 ChatGPT,而不是在互联网上搜索解决方案。大多数时候它都工作得很好,但有时会受到与库安装、系统错误以及云上管道部署等相关问题的干扰。

  • 最后,我非常喜欢 AI 黑客马拉松!拥有能够生成系统前端和后端的工具对我来说意义重大,因为我现在可以快速创建原型,并在几小时内测试我的 MVP。我现在在一天的黑客马拉松中开发的代码可能需要一周的时间来完成。

什么变得更加困难/有风险

  • 在使用 AI 编写代码时,敏感数据泄露的可能性更高。想象一下,你有一个包含重要凭证的文件或代码片段,你意外地将其输入到 AI 模型中。然后第三方工具将知道你的敏感凭证。这种情况可能发生,尤其是如果你使用像 Cursor 这样的工具,并将凭证存储在另一个文件中而不是.env 文件中。因此,始终保持非常谨慎是必要的。

  • 另一个风险是没有正确测试 AI 生成的代码,也不知道如何进行回滚。AI 工具可能会在代码中引入不可见的错误,尤其是在它被用来修改或重构现有代码时。为了确保 AI 生成的代码不会退化,有必要彻底审查生成的代码部分,测试它们,并以允许您在必要时始终回滚到先前正确版本的方式保存修改。

  • 当过度依赖生成式 AI 工具时,代码可能会变得难以阅读,包含过长的函数,出现重复,或者停止正确运行。这就是为什么理解 AI 工具在原型设计上比在维护高质量的生产代码上更有效至关重要。

保持不变的内容

对于我来说,保持不变的是理解我所使用的算法的内部工作流程、维护强大的计算机科学基础,以及编写高质量的代码,以及其他关键技能的重要性。换句话说,软件开发的基本原则始终是有效使用 AI 工具的必要条件。

从这个意义上讲,我喜欢将一组可用的 AI 工具比作我团队中初级开发者的替代品,我可以将不那么重要的任务委托给它。我可以让它做任何我想做的事,但我不能 100%确信它会正确地完成我的任务,这就是为什么拥有强大的基础专业知识的重要性凸显出来。


想了解更多关于 Vyacheslav 的工作并关注他最新的文章,您可以在TDSLinkedIn上关注他。

posted @ 2026-03-28 10:17  布客飞龙V  阅读(2)  评论(0)    收藏  举报