新闻动态
你的位置:宜昌市西陵区玖烬莫百货店(个人独资) > 新闻动态 > 结束高效MLOps的六个重要原则(上)在本文中,咱们将探讨孤独于任何用具的中枢 MLOps 原则。这些原则旨在匡助咱们假想出健壮且可膨大的分娩级机器学习系统和架构。
自动化或操作化
版块汗漫
实验追踪
测试
监控
可复现性
领先,咱们来商讨自动化(操作化)的基本人分。
自动化或操作化
为了实施 MLOps,大无数应用系统会阅历三个中枢脉络的渐渐演进,从手动操作到彻底自动化:
手动历程:在开发机器学习应用的早期,历程往往是实验性和迭代性的。数据科学家手动推论每个管谈的要道,如数据准备和考据、模子熟谙和测试。在这个阶段,他们相似使用 Jupyter Notebooks 来熟谙模子。此阶段的产出是用于准备数据和熟谙模子的代码。
捏续熟谙 (CT):下一阶段波及模子熟谙的自动化,这即是所谓的捏续熟谙 (CT)。当需要时,它会自动触发模子的再熟谙。在这一阶段,数据和模子考据要道往往也曾自动化。这个要道往往由编排用具完成,举例 ZenML,它将通盘代码整合在总计,并在特定触发器上推论。最常见的触发器是基于时辰运筹帷幄(举例每天一次),或某些事件发生时(如新数据上传或监控系统检测到性能下跌),从而提供生动的触发条目。
CI/CD:临了一个阶段是结束 CI/CD 管谈,确保将 ML 代码快速且可靠地部署到分娩环境中。该阶段的重要进展是自动化数据、模子和熟谙管谈组件的构建、测试和部署。CI/CD 用于将新代码赶紧推送到不同环境(举例测试环境或分娩环境),确保高效、可靠的部署历程。
在构建 LLM 系统时,咱们不错愚弄 FTI 架构,快速从手动历程过渡到 CI/CD 和 CT。在图 1 中,咱们不错看到,CT 历程不错由多种事件触发,举例监控管谈检测到的性能下跌,或是新一批数据的到达。
此外,图1分为两大部分。上半部分展示了自动化历程,而下半部分展示了数据科学团队在实验多样数据处理方法和模子时进行的手动操作历程。
一朝团队通过调度数据处理神气或模子架构更正了模子,他们会将代码推送到代码库中,随之触发 CI/CD 管谈。这将自动构建、测试、打包,并将新调动部署到 FTI 管谈中。
总而言之,CT 结束了 FTI 管谈的自动化,而 CI/CD 则厚爱构建、测试并将 FTI 管谈的新版代码推送到分娩环境
版块汗漫
到现在为止,咱们知谈代码、模子或数据中的任何调动皆会导致总计机器学习系统发生变化。因此,分离对这三者进行追踪和版块汗漫至关垂死。那么,咱们该奈何分离追踪代码、模子和数据呢?
代码 是通过Git进行版块汗漫的,Git匡助咱们在每次向代码库添加调动时创建一个新的提交(代码的快照)。此外,基于Git的用具往往允许咱们发布版块,版块往往包含多个新功能和诞妄确立。
尽管每次提交会生成一个东谈主类难以解读的唯独记号符,但版块发布撤职更常见的定名商定,往往包括主版块、次版块和补丁版块。
举例,在版块号为 "v1.2.3" 的版块中,"1" 暗示主版块,"2" 暗示次版块,而 "3" 暗示补丁版块。常见的用具包括 GitHub 和 GitLab。
模子 的版块汗漫不错通过模子注册表结束,它允许存储和分享系统中使用的通盘模子,并对其进行版块化。模子版块汗漫往往采纳与代码访佛的语义版块汗漫(Semantic Versioning)有斟酌,使用主版块、次版块和补丁版块,同期也撑捏 alpha 和 beta 版块,用于向应用程序发出信号。
此外,你还不错通过 ML 元数据存储将一些附加信息关连到模子上,比如模子是在哪些数据上熟谙的、模子架构、性能策动、蔓延,以及任何对您特定用例有道理的信息。这样作念不错创建一个明晰的模子目次,使团队和公司或者普通浏览和使用这些模子。
数据的版块汗漫比代码和模子要复杂得多,因为它取决于数据的类型(结构化或非结构化)以及数据量的大小(一丝据集或大数据集)。
举例,关于结构化数据,你不错使用带有版块列的 SQL 数据库来匡助追踪数据聚合的调动。然则,还有一些其他流行的处罚有斟酌,如基于 Git 的系统 DVC,不错用于追踪数据集的每次调动。
另一种流行的处罚有斟酌是基于工件(artifact),访佛于模子注册表,它允许你为数据集添加臆造层,追踪每次数据调动并创建新版块。Comet ML、W&B 和 ZenML 皆提供了纷乱的工件功能。不管选拔哪种处罚有斟酌,数据往往需要存储在腹地或云对象存储处罚有斟酌中(如 AWS S3)。这些用具提供了构建、版块化、追踪和捕快数据集的智商。
实验追踪
熟谙机器学习模子是一个彻底迭代且实验性的过程。与传统的软件开发不同,机器学习波及运转多个并行实验,基于一组预界说的策动对它们进行比拟,并决定哪一个实验应鼓励到分娩环境中。
实验追踪用具不错匡助您记载通盘必要的信息,举例模子掂量的策动和可视化着力,以便比拟各个实验并普通选拔最好模子。常用的用具包括Comet ML、W&B、MLFlow和Neptune
测试
在测试机器学习系统时,咱们也会碰到与传统软件访佛的挑战。因此,咱们必须从三个方面测试咱们的应用程序:数据、模子 和 代码。此外,还必须确保特征、熟谙管谈和推理管谈能与外部作事(如特征存储)邃密集成,并或者看成一个完好的系统协同责任。
在 Python 环境中,最常用的测试框架是 pytest,咱们也保举使用它来编写测试。
测试类型
在开发周期的不同阶段,往往会采纳以下五种主要类型的测试:
单位测试:这些测试和顺具有单一职责的单个组件。举例,测试一个用于将两个张量相加的函数或在列表中查找特定元素的函数。
集成测试:这些测试评估系统中多个集成组件或单位之间的交互。举例,测试数据处理管谈或特征工程管谈,以及它们与数据仓库和特征存储的集成情况。
系统测试:系统测试在开发周期中起防卫要作用,它们检查总计系统的完好性,涵盖了完好的集成应用程序。这类测试严格评估系统的端到端功能,包括性能、安全性和合座用户体验。举例,测试总计机器学习管谈,从数据招揽到模子熟谙和推理,确保系统能针对特定输入产生正确的输出。
验收测试:这些测试往往称为用户验收测试(UAT),它们用于考据系统是否振奋程序的需求,确保系统已准备好部署。
转头测试:转头测试的主见是检查先前确立的诞妄,以确保新代码的调动不会再行引入已处罚的问题。
压力测试:压力测试用于评估系统在高负载或极点条目下的发扬,确保它能在峰值流量或数据量增多的情况下依然镇静运转。
图2 - 测试类型
咱们测试什么?
在编写大无数测试时,往往将组件视为一个黑盒。因此,您不错汗漫的主若是输入和输出。测试的主见是检查关于给定的输入,是否或者获得预期的输出。这里有一些应该往往沟通测试的现实:
输入:数据类型、格局、长度,以及领域情况(如最小值/最大值,小限制/大限制等)。
输出:数据类型、格局、相配、中间着力以及最终输出。
测试的例子
在测试代码时,不错愚弄经典的软件工程程序。以下是一些在编写单位测试时的代码测试示例,有助于更好地见解咱们但愿测试的现实。
举例,您可能思检查一个句子是否按照预期神气进行了计帐。此外,您也不错测试分块算法,断言它在处理不同句子和块大小时是否正常责任。
当咱们谈到数据考据时,主要指的是数据的灵验性。数据灵验性测试代码往往在从数据仓库中招揽原始数据或计较特征之后运转,成为特征管谈的一部分。因此,通过为您的特征管谈编写集成或系统测试,您不错检查系统是否对灵验和无效数据作念出正确的反馈。
数据灵验性的测试神气在很猛进程上取决于应用场景和数据类型。举例,处理表格数据时,不错检查是否存在非空值、分类变量是否仅包含预期的类别,或浮点值是否历久为正数。而在处理非结构化数据(如文本)时,可能会检查数据的长度、字符编码、言语、格外字符及语法诞妄。
模子测试
模子测试是最具挑战性的,因为模子熟谙过程是机器学习系统中最不细则的部分。与传统软件不同,机器学习系统即使莫得抛出任何诞妄,也可能产生不正确的着力,而这些诞妄往往只可在评估或测试阶段被发现。
一些常见的模子测试时代包括:
输入张量和模子输出张量的体式:
经过一批(或多批)熟谙后,耗费减少:
小批量熟谙时,耗费逐步趋近于 0:
你的熟谙管谈不错在通盘撑捏的拓荒上运转,如 CPU 和 GPU:
早停和检查点逻辑功能正常:
通盘测试皆会在 CI(捏续集成)管谈中自动触发。如果某些测试的老本较高,举例模子测试,不错确立为在特定条目下推论,比如当修改模子代码时才触发。
另一方面,您还不错对模子进行行径测试。行径测试模仿了代码测试的方法,将模子视为一个黑盒,只和顺输入和渴望输出。这使得行径测试与模子的具体结束无关,具有模子不能知的本性。
这一领域的垂死商讨之一是《越过准确性:使用清单进行 NLP 模子的行径测试》一文。如果您思更潜入了解这个主题,提议阅读该论文。看成快速综合,该论文提议对模子进行三种类型的测试。以下咱们用一个从句子中索取主语的模子看常规子来证据:
不变性测试:输入的某些变化不应影响输出。举例,基于同义词替换的测试
model(text="The advancements in AI are changing the world rapidly.")# output: aimodel(text="The progress in AI is changing the world rapidly.")# output: ai
标的性测试:输入的变化应当影响输出。举例,以下是一个示例:咱们知谈输出应该凭据提供的输入而变化
model(text="Deep learning used for sentiment analysis.")# output: deep-learningmodel(text="Deep learning used for object detection.")# output: deep-learningmodel(text="RNNs for sentiment analysis.")# output: rnn
最小功能:输入和预期输出的最苟简组合。举例,底下是咱们渴望模子历久正确的一组苟简示例的示例
model(text="NLP is the next big wave in machine learning.")# output: nlpmodel(text="MLOps is the next big wave in machine learning.")# output: mlopsmodel(text="This is about graph neural networks.")# output: gnn
- 2024-11-12怎样写诗最挑升境?
- 2024-11-12十月再见,十一月你好|五首诗词,秋去冬来,岁月静好
- 2024-11-12七律·婚宴
- 2024-11-12冬装节致父亲
- 2024-11-12写诗多用相对爽快的谈话和好意思妙的新意