MLOps
视频号
微信公众号
知识星球
- 35 次浏览
【GenAIOps】GenAIOps:MLOps框架的演变
视频号
微信公众号
知识星球
生成型人工智能需要新的部署和监控功能
早在2019年,我就在LinkedIn上发表了一篇博客,题为《为什么你需要ML Ops才能成功创新》。快进到今天,对许多组织来说,操作分析、机器学习和人工智能模型(或者更确切地说,系统)仍然是一个挑战。但是,话虽如此,技术已经发展,新公司已经诞生,以帮助解决在生产环境中部署、监控和更新模型的挑战。然而,随着最近使用大型语言模型(LLM)的生成型人工智能的发展,如OpenAI的GPT-4、谷歌的PaLM 2 Meta的LLaMA和GitHub Copilot,各组织竞相了解LLM的价值、成本、实施时间表和风险。公司应该谨慎行事,因为我们才刚刚开始这一旅程,我想说,大多数组织还没有做好微调、部署、监控和维护LLM的准备。
什么是MLOps?
机器学习操作(也称为MLOps)可以定义为:
ML Ops是一个跨功能、协作、连续的过程,通过可重复的部署过程,将统计、数据科学和机器学习模型管理为可重复使用、高度可用的软件工件,专注于操作数据科学。它包含了独特的管理方面,涵盖了模型推理、可扩展性、维护、审计和治理,以及对生产中的模型的持续监控,以确保它们在基本条件发生变化时仍能提供积极的业务价值。
现在我们已经对MLOps有了明确的定义,让我们讨论一下为什么它对组织很重要。
为什么MLOps很重要?
在当今算法驱动的商业环境中,MLOps的重要性怎么强调都不为过。随着组织越来越依赖复杂的ML模型来推动日常决策和运营效率,部署、管理、监控和更新这些模型的强健、可扩展和高效系统的需求变得至关重要。MLOps为开发模型的数据科学家和计算机科学家以及部署、管理和维护模型的IT运营团队之间的合作提供了一个框架和一组流程,确保模型可靠、最新并提供业务价值。
MLOps的关键能力
广义上讲,MLOps在功能上包括自动机器学习工作流、模型版本控制、模型监控和模型治理。
●自动化的工作流程简化了模型的培训、验证和部署过程;减少了手动操作并提高了速度。
● 模型版本控制允许跟踪更改并维护模型迭代的注册表。
● 模型监控对于确保模型在生产系统中按预期运行至关重要。
● 模型治理提供了对法规和组织策略的遵从性。
这些能力共同使组织能够大规模操作ML和AI,为其组织带来商业价值和竞争优势。
MLOps:指标和KPI
为了确保模型在生产系统中按预期运行并提供最佳预测,有几种类型的指标和关键性能指标(KPI)用于跟踪其功效。与数据科学家交谈,他们会经常强调以下指标:
● 模型性能指标:这些指标衡量模型的预测性能。它们可以包括准确性、精密度、召回率、F1分数、ROC曲线下面积(AUC-ROC)、平均绝对误差(MAE)、均方误差(MSE)等。指标的选择取决于问题的类型(分类、回归等)和业务环境。
● 数据漂移:这衡量生产工作流程中的输入数据与模型训练数据的偏差程度。显著的数据漂移可能表明,随着时间的推移,模型的预测可能会变得不那么可靠。我们在被称为新冠肺炎的小“光点”中看到了一个很好的例子。消费者习惯和商业规范一夜之间发生了变化,导致每个人的模式都被打破了!
● 模型漂移:与数据漂移类似,它测量模型的性能随时间的变化(通常是退化),而不是测量数据分布如何偏离规范。如果基础数据分布发生变化,导致模型的假设变得不那么准确,就会发生这种情况。
● 预测分布:跟踪模型预测的分布可以帮助检测异常。例如,如果一个二元分类模型突然开始预测比平时多得多的积极因素,这可能表明存在问题。这些指标通常与业务指标最为一致。
● 资源使用情况:IT资源使用情况包括CPU使用情况、内存使用情况和延迟等指标。这些度量对于确保模型在系统的基础设施和体系结构约束内高效运行非常重要。
● 业务指标:在所有指标中最重要的是,这些指标衡量模型对业务结果的影响。它们可能包括收入、客户流失率、转化率和响应率等指标。这些指标有助于评估模型是否提供了预期的业务价值。
那么,现在我们对MLOps有了高水平的理解,为什么它很重要,关键能力和指标,这与生成人工智能有何关系?
生成型人工智能:主要跨功能用例
在生成型人工智能成为主流之前,组织主要实现了基于结构化和半结构化数据的人工智能系统。这些系统主要基于数字进行训练,并生成数字输出——预测、概率和分组分配(想想分割和聚类)。换言之,我们将根据历史数字数据(如交易、行为、人口统计、技术制图、公司制图、地理空间和机器生成的数据)来训练我们的人工智能模型,并输出对报价进行篡改、响应或交互的可能性。这并不是说我们没有使用文本、音频或视频数据——我们使用了;情绪分析、设备维护日志等;但这些用例远没有基于数字的方法那么普遍。Generative AI拥有一套新的功能,使组织能够利用这些年来基本上被忽视的数据——文本、音频和视频数据。
用途和应用有很多,但我总结了生成人工智能的关键跨功能用例(迄今为止)。
内容生成
生成型人工智能可以从音频、视频/图像和文本中生成类似人类的内容。
● 音频内容生成:生成型人工智能可以制作适合YouTube等社交媒体平台的音轨,或者在您的书面内容中添加人工智能语音,增强多媒体体验。事实上,我的前两本TinyTechGuides在Google Play上都有完全由人工智能生成的画外音。我可以为人工智能讲述的书籍选择口音、性别、年龄和节奏以及其他一些关键属性。点击此处查看人工智能解说有声读物。
-
Artificial Intelligence: An An Executive Guide to Make AI Work for Your Business
-
Modern B2B Marketing: A Practitioner’s Guide for Marketing Excellence
● 文本内容生成:这可能是目前最流行的生成人工智能形式,从撰写博客文章、社交媒体更新、产品描述、电子邮件草稿、客户信函到RFP提案,生成人工智能可以毫不费力地生成广泛的文本内容,为企业节省大量时间和资源。不过,买家要小心,仅仅因为内容是生成的,听起来很权威,并不意味着它在事实上是准确的。
● 图像和视频生成:我们已经看到这一点在好莱坞慢慢成熟,从《星球大战》系列中人工智能生成的角色到最新的《印第安纳琼斯》电影中的哈里森·福特,人工智能可以创建逼真的图像和电影。生成型人工智能可以通过为广告、演示和博客生成内容来加速创意服务。我们已经看到像Adobe和Canva这样的公司在创意服务方面齐心协力。
● 软件代码生成:Generative AI可以生成软件代码(如Python)和SQL,这些代码可以集成到分析和BI系统以及AI应用程序本身中。事实上,微软正在继续研究使用“教科书”来训练LLM来创建更准确的软件代码。
内容摘要和个性化
除了为公司创造全新的现实内容外,生成人工智能还可以用于总结和个性化内容。除了ChatGPT之外,Writer、Jasper和Grammarly等公司还瞄准了内容摘要和个性化的营销职能和组织。这将使营销组织能够花时间创建一个经过深思熟虑的内容日历和流程,然后可以对这些各种服务进行微调,以创建看似无限多的受制裁内容变体,从而在正确的时间在正确的渠道将其交付给正确的人。
内容发现和问答
生成人工智能正在获得吸引力的第三个领域是内容发现和问答。从数据和分析软件的角度来看,各种供应商正在整合生成人工智能功能,以创建更自然的界面(用通俗易懂的语言),促进组织内新数据集的自动发现,以及编写现有数据集的查询和公式。这将允许非专业商业智能(BI)用户提出简单的问题,如“我在东北地区的销售额是多少?”,然后深入研究并提出越来越精细的问题。BI和分析工具根据查询自动生成相关图表和图形。
我们还看到医疗保健行业和法律行业越来越多地使用这种技术。在医疗保健领域,生成型人工智能可以梳理大量数据,帮助总结医生笔记,并通过聊天机器人、电子邮件等个性化与患者的沟通和通信。人们对仅将生成人工智能用于诊断能力保持沉默,但随着人类的参与,我们将看到这种情况的增加。我们还将看到生成人工智能在法律界的使用有所增加。同样,作为一个以文档为中心的行业,生成型人工智能将能够快速找到合同中的关键条款,帮助进行法律研究,总结合同,并为律师创建定制的法律文档。麦肯锡称之为法律副驾驶员。
既然我们了解了与生成人工智能相关的主要用途,让我们来谈谈关键问题。
生成人工智能:主要挑战和考虑因素
生成型人工智能虽然前景广阔,但也有其自身的一系列障碍和潜在陷阱。组织在将生成人工智能技术融入其业务流程之前,必须仔细考虑几个因素。主要挑战包括:
● 准确性问题(幻觉):LLM通常会产生误导性或完全虚假的信息。这些回应看似可信,但完全是捏造的。企业可以建立哪些保障措施来检测和防止这种错误信息?
● 偏见:组织必须了解模型中偏见的来源,并实施缓解策略来控制它。有什么公司政策或法律要求来解决潜在的系统性偏见?
● 透明度不足:对于许多应用程序,特别是在金融服务、保险和医疗保健等行业,模型透明度通常是一项业务要求。然而,LLM本身并不能解释或预测,从而导致“幻觉”和其他潜在的事故。如果您的业务需要满足审计师或监管机构的要求,您必须问问自己,我们甚至可以使用LLM吗?。
● 知识产权(IP)风险:用于培训许多基础LLM的数据通常包括公开的信息——我们已经看到了因不当使用图像(例如HBR——Generative AI存在知识产权问题)、音乐(The Verge——AI Drake刚刚为谷歌设下了一个不可能的法律陷阱)和书籍(《洛杉矶时报》——Sara Silverman和其他畅销作家Sue MEta和OpenAI侵犯版权)而提起的诉讼。在许多情况下,培训过程不分青红皂白地吸收所有可用数据,导致潜在的知识产权曝光和版权侵权诉讼。这就引出了一个问题,什么数据被用来训练你的基础模型,什么被用来微调它?
● 网络安全和欺诈:随着生成人工智能服务的广泛使用,组织必须为恶意行为者的潜在滥用做好准备。生成型人工智能可以用来制造深度伪造,用于社会工程攻击。您的组织如何确保用于培训的数据未被欺诈者和恶意行为者篡改?
● 环境影响:训练大规模人工智能模型需要大量的计算资源,这反过来又会导致大量的能源消耗。这对环境有影响,因为所使用的能源往往来自不可再生资源,导致碳排放。对于已经制定了环境、社会和治理(ESG)计划的组织,您的计划将如何考虑LLM的使用?
现在,公司还需要考虑许多其他事情,但主要的事情已经被抓住了。这就提出了下一个问题,我们如何操作生成性人工智能模型?
GenAIOps:需要一套新的能力
现在,我们对生成人工智能、关键用途、挑战和考虑有了更好的理解,让我们接下来谈谈MLOps框架必须如何发展——我将其命名为GenAIOps,据我所知,我是第一个创造这个术语的人。
让我们来看看LLM创建的高级流程;该图改编自On the Opportunities and Risks of Foundation Models。
图1.1:培训和部署LLM的流程
Process to Train and Deploy LLMs — Image Courtesy of Author, TinyTechGuides Founder David E Sweenor
在上面的内容中,我们看到数据被创建、收集、策划,然后模型被训练、调整和部署。鉴于此,全面的GenAIOps框架应该考虑哪些因素?
GenAIOps:检查表
最近,斯坦福大学发布了一篇论文《基金会模型提供商遵守欧盟人工智能法案草案吗?》?看完之后,我以此为灵感生成了下面的GenAIOps框架清单。
数据
- ○ 使用了哪些数据源来训练模型?
- ○ 用于训练模型的数据是如何生成的?
- ○ 培训师是否有权在上下文中使用这些数据?
- ○ 数据是否包含受版权保护的材料?
- ○ 数据是否包含敏感或机密信息?
- ○ 数据是否包含个人数据或PII数据?
- ○ 数据已经中毒了吗?它会中毒吗?
- ○ 数据是真实的还是包括人工智能生成的内容?
建模:
- ○ 该模型有哪些限制?
- ○ 模型是否存在相关风险?
- ○ 什么是模型性能基准?
- ○ 如果必须的话,我们能重建模型吗?
- ○ 模型是透明的吗?
- ○ 其他哪些基础模型用于创建当前模型?
- ○ 使用了多少能量和计算资源来训练模型?
部署:
- ○ 模型将部署在哪里?
- ○ 目标部署应用程序是否了解他们正在使用生成人工智能?
- ○ 我们是否有适当的文件来满足审计师和监管机构的要求?
现在我们有了一个起点,让我们仔细看看这些指标
GenAIOps:度量标准和过程注意事项
以MLOps指标和KPI为起点,让我们研究一下这些指标如何应用于生成人工智能指标。我们希望GenAIOps将有助于解决生成人工智能的具体挑战,例如生成虚假、虚假、误导或有偏见的内容。
模型性能指标
在生成人工智能的背景下,组织如何衡量模型的性能?我怀疑大多数组织可能会使用商业上可获得的预先培训的LLM,并使用自己的数据来微调和调整其模型。
现在,肯定有一些技术性能指标与基于文本的LLM相关,如BLEU、ROUGE或METEOR,当然还有其他用于图像、音频和视频的指标,但我我更关心虚假(false)、虚假(fake)、误导或有偏见的内容的产生。组织可以采取哪些控制措施来监控、检测和缓解这些事件?
我们过去确实看到了宣传的泛滥,脸书、谷歌和推特等社交媒体巨头未能实施一种始终如一、可靠地防止这种情况发生的工具。如果是这种情况,您的组织将如何衡量生成人工智能模型的性能?你会有事实核查员吗?图像、音频和视频怎么样?你如何衡量这些型号的性能?
数据漂移
考虑到模型需要大量的资源和时间来训练,模型创建者将如何确定世界数据是否在漂移,我们是否需要一个新的模型?一个组织将如何理解他们的数据是否正在发展到需要重新校准模型的地步?这对数字数据来说相对简单,但我认为我们仍在学习如何处理非结构化数据,如文本、图像、音频和视频。
假设我们可以创建一种机制来定期调整我们的模型,那么我们也应该有一个控制机制来检测漂移的数据是由于真实事件还是人工智能生成的内容的扩散?在我关于人工智能熵:人工智能生成内容的邪恶循环的帖子中,我讨论了一个事实,即当你在人工智能上训练人工智能时,它会随着时间的推移而变得更笨。
模型漂移
与您的模型性能和数据漂移问题类似,如果您的模型的性能开始漂移,您的组织将如何检测和理解?您会对输出进行人工监控还是将调查发送给最终用户?也许更直接的方法之一是,不仅要设置控制措施来监控模型的技术性能,而且您的公司应该始终跟踪模型的输出。这是不言而喻的,但您正在使用一个模型来解决特定的业务挑战,并且您需要监控业务指标。您是否看到放弃购物车的人数增加,客户服务电话的增加/减少,或客户满意度的变化?
预测分布
同样,我认为我们有不错的工具和技术来跟踪基于数字的预测。但现在我们正在处理文本、图像、音频和视频,您如何看待监控预测分布?我们是否能够理解部署目标的模型输出是否产生了虚假的相关性?如果是这样,你可以采取什么措施来衡量这种现象?
资源使用情况
从表面上看,这一次似乎相对直截了当。然而,随着公司内部生成性使用的增长,您的组织将需要一个系统ini来跟踪和管理它的使用。生成人工智能领域的定价模型仍在发展,因此我们需要小心。与我们在云数据仓库领域看到的情况类似,我们开始看到成本失控。那么,如果你的公司有基于使用量的定价,你将如何实施财务控制和治理机制,以确保你的成本是可预测的,不会流失?
商业指标
我之前已经说过这一点,但您可以设置的最重要的监视器和控制集与您的业务指标有关。您的公司需要时刻保持警惕,监控您的模型在日常生活中对业务的实际影响?如果您将其用于关键业务流程,您有哪些SLA保证来确保正常运行时间?
偏差是任何人工智能模型的一个大问题,但对于生成型人工智能来说,这可能更为严重。你将如何检测你的模型输出是否有偏差,以及它们是否会使不平等现象长期存在?Tim O'Reilly在这方面写了一篇很棒的博客,题为《我们已经让瓶子里的精灵Ot》(We Have Already Let the Genie Ot of the Bottle ),我鼓励你阅读。
从知识产权的角度来看,您将如何保证专有、敏感或个人信息不会从您的组织中泄露或泄露?考虑到目前正在进行的所有侵犯版权的诉讼,这是您的组织需要解决的一系列重要因素。你是否应该要求供应商保证这些在你的模型中与Adobe的游戏不同(FastCompany——Adobe非常确信其萤火虫生成的人工智能不会侵犯版权,从而为你支付法律费用)?现在,他们将支付您的法律账单,这很好,但这会使您的公司面临什么声誉风险?如果你失去了客户的信任,你可能永远也无法挽回他们。
最后,数据中毒无疑是一个热门话题。当您使用组织的数据来调整和微调模型时,如何保证这些数据是无害的?如何保证用于训练基础模型的数据没有被破坏?
总结
最终,这项工作的目标不是提供如何解决GenAIOps的具体方法和指标,而是提出一系列问题,即组织在实施LLM之前需要考虑什么。与任何事情一样,生成人工智能有很大的潜力帮助您的组织获得竞争优势,但也有一系列挑战和风险需要解决。最终,GenAIOps需要有一套原则和能力,涵盖采用组织和提供LLM的供应商。用蜘蛛侠的话来说,巨大的力量伴随着巨大的责任。
如果你想了解更多关于人工智能的信息,请查看我的书《人工智能:让人工智能为你的企业服务的高管指南》(An Executive Guide to Make AI Work for Your Business on Amazon.)。
- 31 次浏览
【MLOps】MLOps的三大优点:速度、验证和版本控制
视频号
微信公众号
知识星球
加州大学伯克利分校博士候选人Rolando Garcia最近在Union.ai首席营销官Martin Stein主持的与行业专家和从业者的小组讨论中介绍了其团队的“操作机器学习:访谈研究”研究论文的发现。主讲嘉宾包括来自Lyft、Recognition、Stripe、Woven Planet和Striveworks等公司的机器学习、软件工程和数据科学专业人士。
讨论的重点是基础设施在机器学习生产中的作用;常见的MLOps实践;挑战和痛点;以及MLOP的工具建议。对话的亮点是该论文发现,“成功的MLOps实践围绕着高速、早期验证和维护多个版本以最小化生产停机时间。”
一项探索ML工程师流程和痛苦的研究
由Rolando和另一位博士候选人Shrya Shankar领导的加州大学伯克利分校学者团队对18名从事聊天机器人、自动驾驶汽车和金融应用的ML工程师进行了半结构化的民族志访谈,以概述成功的MLOps的常见做法,讨论痛点并强调工具设计的意义。
考虑到ML工程的实验性质,本文将MLOps定义为“一组旨在在生产中可靠高效地部署和维护ML模型的实践”。DevOps是软件开发人员和运营团队的结合,MLOps将DevOps原理应用于机器学习。
访谈发现,ML工程师通常执行四项常规任务:
- 数据收集和标记
- 改进ML性能的模型实验
- 通过多阶段部署过程进行模型评估
- ML管道监控生产中的性能下降
访谈还揭示了“决定生产ML部署成功的三个变量:Velocity、Validation和Versioning。”本文对这些变量的定义如下:
- 速度(Velocity):快速原型设计和迭代想法,例如快速更改管道以应对错误
- 验证(Validation):早期主动监测管道中的漏洞
- 版本控制(Versioning):存储和管理生产模型和数据集的多个版本,以记录每一个更改
典型的MLOps痛点源于这三个Vs之间的紧张关系和协同作用。示例包括:
- 开发和生产环境之间的不匹配(速度与验证)
- 数据错误(验证与版本控制)
- 让GPU保持温暖(高速与版本控制)
其他有问题的行为源于行业课堂的不匹配,大多数学习都发生在工作中,以及当开发人员在没有留下适当文档的情况下更换工作(和公司)时,未记录的部落知识成为问题。
在分析MLOps工具时,Rolando等人注意到,工程师们更喜欢增加三个Vs之一的工具,例如提高迭代速度(速度)的实验跟踪工具,以及帮助基于历史版本功能(版本控制)调试模型的功能存储。
本文的关键发现可以总结为成功的MLOps实践,这些实践旨在实现高速、早期验证和维护多个模型版本,以最大限度地减少生产停机时间。
小组讨论
在网络研讨会上,Rolando将他的采访结果与小组特邀发言人的反馈进行了比较,他们通常使用ML工作流协调器Flyte作为基础设施工具,但用于不同的用例。
小组成员包括:
- Varsha Parthasarathy,Woven Planet软件工程师
- DJ Rich,Lyft高级数据科学家
- Brian Tang,Stripe基础设施工程师
- Michael Lujan,软件工程师,Striveworks
- Fabio Gratz,博士,高级软件工程师/ML,Recogni
主持人Martin Stein首先提出了一个重要问题:
我们是否低估了基础设施在ML生产中的作用?
作为致力于地面实况感知的感知工程团队的一员,Varsha的团队将Flyte用于Woven Planet的DAG,并认为:“是的,基础设施被低估了……infra和MLOps是齐头并进的。”
Varsha解释说,ML工程师专注于迭代和实验,而基础设施反过来又为迭代和实验提供了便利——作为一家初创公司,保持GPU的温度并不总是可行的。为了有效地处理宝贵的计算资源,提供缓存的工具将使团队不必重新运行整个模型,因为他们只能重新运行更新的部分。
类似地,支持抽象的模型和数据集的版本控制工具可以有效地重新运行和重新训练模型,这将消除GPU预热时间中不必要的步骤。
在过去的三年里,DJ一直在Lyft开发一个因果预测系统,该系统预测三个月内的预算和定价。预测需要与实验相匹配,并需要整合来自不同团队的模型。Lyft使用的基础设施虽然计算量不大,但必须组合并同步不同的输入。
Brian说,在Stripe,团队将其ML基础设施分解为多个部分,通过培训和笔记预订专注于探索;这反过来又增加了速度。为了提高ML产量,Stripe选择了Flyte,因为它提供了这样的速度,进一步加强了基础设施在ML生产中的作用。
Michael描述了Striveworks如何创建一个内部MLOps平台Chariot,该平台专注于模型的生命周期。它可以上传和注释数据集,根据特定参数对其进行训练,对模型进行编目和服务,并检测模型漂移。
作为一名DevOps工程师,Michael指出Flyte帮助了Striveworks“专注于模型开发部分,而不考虑我们将如何将其产品化。”由于Striveworks使用的Jupyter笔记本电脑不是模型的产品化版本,因此模型生命周期的调度部分可以在不占用GPU的情况下进行。因为Striveworks为政府承包商处理高度敏感的数据,因此需要部署整个平台耶德一气呵成,一个任务Flyte也方便。
Fabio最后描述了他在Recognition的工作,为自动驾驶汽车制造定制加速器。他与一个软件工程团队合作,该团队为感知团队提供了一个MLOps平台,该平台反过来对驾驶汽车的行程进行建模。Fabio说,他们“利用Kubernetes和Flyte等工具来加快实验速度,帮助(我们)跟踪正在进行的实验,并能够复制它们”。
Fabio还描述了为一家ML解决方案提供商组建MLOps团队的情况,该团队构建了一个内部开发平台。他说,有了这个平台,工程师们可以以自助的方式提供培训、开发或生产模型所需的基础设施。他强调了能够“抽象掉通常涉及的工具的复杂性……(因为)不是每个人都能成为基础设施专家,大多数工程师都不想”管理基础设施的重要性。
团队在基础设施方面的投资有多深?
然后,讨论转向了访谈研究中的三点:
- 人们将大量时间花在ML不那么迷人的方面,比如维护和监控ML管道
- ML调试创伤引发焦虑
- 高速行驶有淹没在版本海洋中的风险
Martin请Rolando将为其研究采访的小组的回答与小组成员讲述的经历进行比较。Rolando是否有想要进一步探索的特定领域?
Rolando援引小组成员对基础设施的投资指出,在小公司,工程师通常负责整个MLOps工作流程。当基础设施开发人员离开时,他们的更换通常会转移到“撕裂并更换”整个系统,这可能需要长达一年的ML改进和升级。
然而,他预测,大型公司将“最终融合到他们信任并长期存在的基础设施中。”根据公司文化,该基础设施可能有利于高速或简化版本。
Rolando表示,ML工程师通常将一半的时间用于构建基础设施,另一半则用于执行其研究中列举的四项常规任务:数据收集/标记、实验、评估和监测。如果他们可以避免构建基础设施,只使用开箱即用的MLOps解决方案呢?
基础设施服务是如何外包给第三方的,以及如何将其纳入工作流程?
据Michael介绍,Striveworks的数据科学家和软件工程师经常在整个模型生命周期中标记团队,然后转向创建MLOps平台。他说,这将有助于数据科学家“不必担心这个模型开发生命周期,包括版本控制和调度以及实际服务模型”。
我们需要真正投资,使其在某些用例中更简单,并控制不同的选项。我不想担心我会占用多少资源。
然后你会看到事情的另一端,我是一名数据科学家,我希望能够……在这些模型上进行实验。一旦我们发现这个模型有效,我们可能只需要用新的数据来重新训练这个模型。
作为一名数据科学家,你的发现之旅是什么?你花了什么痛苦才确定了基础设施解决方案?
DJ说,在使用现有工具的同时,他很难转换到新工具。他回忆道:“有趣的是,我一开始就抵制Flyte,因为我对此一无所知。”。“我们在Airflow上,所以我们有工作模型,但我们身边有一位福音传道者,‘你必须使用Flyte’,然后这就容易多了。
UI让我大吃一惊,因为气流太复杂了。Flyte只是把它放在任务上,这让它变得容易多了。此外,[Flyte非常不懂Python…这几乎就像一个产品,因为你只需发送工作的链接,就可以将数据科学家和软件工程师指向数据。
你是如何让ML工程师和数据科学家加入的?
Varsha表示,Woven Planet的数据收集方法在新冠肺炎大流行开始时发生了变化。在新冠肺炎之前,工程师或车辆专家会开车为工程师获取数据,但由于这变得不可行,他们转向了数据驱动的方法:团队会选择一个场景,例如雨天或结冰的道路。预测或规划团队将提供数据,这些数据可以被整理成ML模型可以理解的信息,然后进行模型训练;验证(通过回归测试);最后,分析。
Woven Planet的ML工程师对其中许多步骤都是用Flyte抽象出来的印象深刻;再加上在Flyte上添加的集成,他们只需要编写自己的代码部分,就可以节省时间和精力。
另一个吸引ML工程师的Flyte功能是:基于内部命名的版本控制和在整个生产过程中的持久性,这有助于模型artifactory。
Varsha表示,“我们对基础设施的投资越多,就越能帮助我们的工程师尽快让自动驾驶汽车上路。”
你在构建运营框架,然后用模型进行快速迭代方面有什么经验?
和Lyft的DJ一样,Brian说Stripe从Airflow DAG转到Flyte引起了一些焦虑。
在Stripe,ML团队负责基础设施,然后由数据科学家或ML工程师处理产品生成和模型。他们成功的关键之一是“尽早(与数据科学家和ML工程师)合作;了解他们想要更好的方法;能够训练他们的模型并生成数据无疑是第一步。下一步是,‘我们将选择哪个平台?’”
Flyte在其功能集和对快速迭代的支持方面击败了入围名单上的其他候选人。此外,“Jupyter笔记本电脑是‘从用户开始就与用户对话’的关键。”与其他平台所需的特设笔记本电脑接口不同,Flyte允许用户通过将代码库导入Flyte DAG进行无缝提取,直接在笔记本电脑上迭代。
Fabio回忆起DAG组织自动化预处理、培训和评估之前的日子,当时MLflow项目需要手动编排。“一旦你的笔记关闭,吊舱就不见了,工作也没了,没有人知道它发生了……我们意识到,我们无法重现六个月前的运行情况,因为我们没有记录所有的超参数。”
Fabio说,为了解决这些限制,Recognition开始将不同的任务链接在一起,然后意识到他们需要自动化流程。他们寻找协调人的依据是四个关键要求:
- 针对不同资源的不同任务
- 不同镜像的不同任务
- 使用Pytorch或Tensorflow进行分布式训练
- Spark集成
Fabio说:“我们访问了Medium上的数据科学家和其他博客,查看了MLOps的前十大编排框架,并试图用我们发现的工具构建一个原型。”。“我们非常沮丧……(然后)我们发现了Flyte。
“它正是做这些事情,”他说。Recognition团队可以在任务级别而不是工作流级别指定资源,在顶层注册,并使用不同的图像运行工作流的不同部分。
当你专注于任务时,工作流程和任务的分离是你真正受益的地方。你有粒度,你可以实际利用你的资源。但我们也知道,笔记本不仅仅是一项任务,它们可能更多。
“Flyte大大提高了我们的生产力,”Fabio补充道。工程师可以根据Recognition的最佳实践配置平台,这样团队就可以将其作为“一种自助服务……而无需为每个团队配备ML工程师或软件工程师。”
你对笔记本和真正实用的、任务驱动的机器学习方法有什么看法?
DJ说,作为一名数据科学家,他认为笔记本是一种必要的邪恶:它们不可靠,也不存在最终版本的代码。然而,人与人之间的互动很重要,尤其是因为很多人已经习惯了使用它们。DJ还认为,笔记本电脑“在版本控制方面对你不利,因为笔记本电脑不断变化……GitHub最近才添加了一个集成,可以让你很好地检查它们……(它们)在状态和调试以及跟踪错误方面不是很有主见。”
DJ描述的问题之一是提取笔记本电脑使用导致的过时数据,并导出过时的代码。然而,“如果你想获得模型开发人员友好的环境,你必须使用笔记本电脑。”
你会给MLOps从业者什么建议?你有什么具体的建议来优化三个Vs:提高速度、尽早验证和一致的版本吗?
Brian说Stripe团队很难测量速度。“我们现在采取了一种非常天真的方式,即查看运行的实验数量,因此拥有一个可以更快迭代的基础设施,可以添加更多的实验。”他说,迁移到Flyte有助于Stripe快速迭代。
Varsha的建议:
对所有内容进行版本化,并确保版本始终是持久的。拥有自己的GPU和工作站:当你进入生产阶段时,情况会大不相同。
她描述了Flyte如何使Woven Planet能够在运行与生产环境相同的GPU云工作站上本地测试模型。
Michael建议创建一个强大的测试用例,“这样你就可以说,‘这是我们试图训练的模型的黄金标准’,然后确保你能够保持最快的时间来创建模型,而用户的痛苦最小。”
他说,Striveworks最初专注于创建不同的组件,但没有那么关注模型本身的质量。
我们有非常强大的数据科学家,他们可以创建自己的模型,我们可以为他们服务,他们了解这个平台。但我们也在研究另一部分,你不是数据科学家,但知道模型是如何工作的,你需要添加排列。您知道您的数据集以及该模型体系结构应该如何工作,并且需要在模型完成后对其进行测试。
DJ表示,Lyft团队在引入和优化指标之前,最初甚至根据多个利益相关者的意见构建了最简单的管道。
我认为我们犯了一个错误。很容易创建一个实际上不在构建最终管道的路径上的管道。”相反,“完整的基础设施需要在管道的第一个版本中表现出来……第一次迭代的一条建议是真正地示意整个过程。这个设计阶段非常重要——我们必须在一年后回到整个过程中,并重做很大一部分。”。
Fabio回忆起三年前他与五名ML工程师组成的团队围绕机器学习服务建立公司的努力。他们没有使用Docker或计算引擎,而是试图让这些部分与Python和他们自己的容器编排器协同工作。
我的提示是,“不要那样做。”有一个行业标准。学习Kubernetes。这个平台的工具种类繁多,数量惊人。学习这个平台,很多悲伤就会消失…只要使用多年来开发的伟大工具。
最终调查结果
Rolando总结了一些精彩的观察:
“从学术角度来看,我们有在真空中评估事物的习惯。这有点像DJ所说的:我们建立了这个模型训练管道,然后我们试图找到一个包装它的应用程序,这是一个错误。”。
“我认为产品验证才是最重要的。如果你开始考虑收入和关键绩效指标等产品指标,那么这将自然而然地推动你与其他利益相关者合作。
“我还认为,在机器学习中,一旦你达到了一定的性能阈值,那么如果你要迭代,对应用程序或软件进行迭代更有意义——也许是启发式或过滤器,而不是机器学习本身。
因此,在开始机器学习之前,先构建应用程序基础设施,然后查看它在全局方案中的位置,然后对模型进行迭代。
工具书类
在YouTube上观看完整的小组讨论:
阅读全文:
- 23 次浏览
【MLOps】分解MLOps与DevOps:异同
视频号
微信公众号
知识星球
机器学习不再只是一个流行语。它已被纳入重要项目。现在是2023年,开发人员正专注于如何实施一个成功的ML项目,并自信地将其推向生产。
这就是MLOps或机器学习操作的用武之地,它与MLOps的“母体”DevOps密切相关。
由于DevOps专注于改进整个软件开发过程,而MLOps主要专注于开发和部署机器学习模型,因此这两种方法之间存在许多共性和差异。
让我们一步一步地讨论DevOps与MLOps的所有内容。
目录
- 什么是MLOps?
- 什么是DevOps?
- MLOps和DevOps的相似之处
- MLOps和DevOps之间的区别
- 如何弥合MLOps和DevOps之间的差距?
- 你应该选择哪一个:MLOps还是DevOps?
- MLOps和DevOps的未来
什么是MLOps?
MLOps是一组用于管理生产环境中机器学习模型的开发、部署和维护的实践和流程。
它旨在将DevOps的原则和实践引入机器学习领域,使组织能够简化和自动化ML模型的部署,并管理其持续的性能和维护。
有多种工具和平台为MLOps提供了一系列功能,如实验跟踪、模型部署、监控和维护。工具或平台的选择将取决于组织的具体需求和要求。
以下是可用于MLOps的一些工具和平台:
- TensorFlow Extended (TFX)
- Kubeflow
- Apache Airflow
- MLflow
- Databricks
- H20.ai
- AWS SageMaker
但是,在使用这些专用平台实现MLOps时,您可能会遇到多个问题。
实施MLOps的挑战
在实施MLOps的多重挑战中,以下是几个重要挑战:
- ML模型可能需要与现有系统(如数据库和数据管道)集成,这可能是一个复杂而耗时的过程。
- 可能存在与治理模式相关的问题,如问责制、透明度和道德考虑,这些问题需要解决。
- ML模型可能需要大规模部署,由于模型的复杂性和数据的大小,这可能是一个挑战。
- ML模型可能需要对其性能进行监控,并随着时间的推移进行维护,这可能是一个复杂而耗时的过程。
为了应对这些挑战,您必须结合特定的技术来最大限度地利用MLOps驱动的方法。
MLOps的最佳实践
在业务中实施MLOps时,您必须考虑一些最佳实践:
- MLOps流程应尽可能自动化,以降低人为错误的风险并提高效率。
- 应使用实验跟踪和版本控制来跟踪模型的开发、版本控制和性能。
- ML模型应该通过CI/CD管道进行部署,以确保更新和更改可以快速轻松地部署到生产中。
- ML模型的设计和部署应具有可扩展性和性能,以满足生产环境的需求。
现在您已经了解了MLOps,让我们了解一下DevOps。
什么是DevOps?
DevOps是一种软件开发方法,它可以消除障碍,实现迭代和改进的连续循环。它旨在改善软件开发过程中的协作并最大限度地减少摩擦。
您可以使用多种工具和平台来自动化和简化软件开发和部署过程,如:
- 源代码管理(SCM)工具,如Git、Subversion和Mercurial
- 持续集成(CI)工具,如Jenkins、Travis CI和CircleCI
- 持续交付(CD)工具,如Ansible、Puppet和Chef
- 配置管理工具,如SaltStack、Chef和Puppet
- 监控和日志记录工具,如Nagios、Zabbix和Logstash
- Docker和Kubernetes等容器化工具
但是,在使用这些专用平台管理DevOps时,您可能会遇到多个问题。
实施DevOps的挑战
以下是在实施DevOps时可能面临的一些常见挑战:
- DevOps需要组织内部的文化转变,因为它需要开发和运营团队之间的密切合作。这可能具有挑战性,因为这些团队之间可能存在传统的竖井。
- DevOps使组织能够快速开发和部署新功能,但这种变化速度可能很难管理,尤其是对于大型复杂应用程序。
- 实施DevOps可能成本高昂,因为组织需要投资于新的工具、流程和人员,而持续成本可能很高,因为系统和流程需要随着时间的推移进行维护和更新。
使用DevOps的战略实践,您可以解决这些挑战。通过实施新特性和功能,在向客户提供新特性和能力方面获得更高的灵活性、效率和可靠性带来的好处。
DevOps的最佳实践
您可以结合一些最佳实践来充分利用DevOps驱动的软件开发过程:
- 您应该专注于快速交付软件。此外,实施所需的策略,以帮助您在不浪费时间的情况下回滚软件。
- 业务、运营和开发团队必须保持一致并进行协作,以实现高效和成功的DevOps执行。
- 随时了解最新的软件技术趋势,以绕过有效技术开发的障碍。
- 在不失败的情况下对所有代码进行手动或自动测试。
- 集成自动化并使用准确的CI/CD工具来实现有效的DevOps系统。
BrowserStack提供了与TeamCity、Travis CI、Jenkins、Jira等最佳CI/CD工具的不同集成,以更好地实现DevOps。
它还提供了一个由3000+个真实浏览器和设备组成的专用云Selenium网格,用于测试。您可以访问我们的内置调试工具来识别和解决错误。您还可以使用Appium、Espresso、XCUITest、EarlGrey、Cypress、Playwright、Puppeter等框架进行测试。
MLOps和DevOps的相似之处
由于MLOps是DevOps的一个子集,这两种意识形态有很多相似之处。看一看
- MLOps和DevOps都需要不同团队之间的密切合作,包括开发、运营和数据科学团队,以确保模型和应用程序的顺利高效交付。
- 许多MLOps工具和平台与现有的DevOps工具链(如Git、Jenkins和Kubernetes)集成,使组织更容易在现有DevOps工作流中实施MLOps。
- MLOps和DevOps促进了一种实验文化,在这种文化中,团队可以快速测试和验证新的想法和方法,从而减少提供新功能和能力的时间和成本。
- MLOps和DevOps都强调监控和反馈循环的重要性,以确保模型和应用程序按预期工作,并快速发现和解决问题。
此外,通过简单的比较来了解DevOps和MLOps的核心方面。
MLOps和DevOps之间的区别
DevOps和MLOps对您的组织实现目标和取得成功非常重要。这里有一个详细的比较表,可以帮助您了解差异。
DevOps | MLOps |
---|---|
它侧重于整个软件开发过程。 | 它特别关注机器学习模型及其部署。 |
它强调开发、测试和运营团队之间的协作和沟通 | MLOps强调数据管理和模型版本控制。 |
DevOps优先考虑整体应用程序性能和可靠性。 | 它在生产和监控中优先考虑模型性能。 |
它涉及到测试和部署自动化等任务。 | MLOps涉及超参数调整和特征选择等任务。 |
执行基础架构资源调配和配置管理等任务。 | 它涉及到诸如模型可解释性和公平性之类的任务。 |
值得注意的是,MLOps和DevOps并不相互排斥,许多组织将使用这两种实践的组合来改进其软件开发过程。
因此,让我们了解如何弥合这两种方法之间的差距。
如何弥合MLOps和DevOps之间的差距?
以下是弥合MLOps和DevOps之间差距的一些技巧:
- 鼓励数据科学、开发和运营团队之间的密切合作,并建立明确的沟通渠道,以确保每个人都在目标和流程上保持一致。
- 自动化尽可能多的工作流程,包括模型测试、验证和部署,以减少手动错误并提高效率。
- 持续评估和改进流程和工作流程,鼓励实验和创新,以确保您为MLOps和DevOps使用尽可能好的工具和方法。
- 实施DevOps监控和DevOps反馈循环,以确保模型和应用程序按预期工作,并快速发现和解决任何问题。
但是,您应该将哪种方法集成到您的商业生态系统中?
你应该选择哪一个:MLOps还是DevOps?
在MLOps和DevOps之间进行选择取决于您的特定需求和目标。如果您的组织专注于开发和部署机器学习模型,那么MLOps可能是更好的选择。
但是,如果您的组织专注于整体软件开发,那么DevOps可能是更好的选择。
MLOps可以帮助您管理构建、维护和部署机器学习模型的独特挑战,如数据管理、模型版本控制和监控生产中的模型性能。
另一方面,DevOps可以帮助您改善组织内不同团队之间的协作和沟通,以提高软件开发和部署的总体速度和质量。
您还可以通过考虑组织的成熟度来做出决定。如果它处于ML开发的早期阶段,那么最好从DevOps开始,因为这是一种更普遍的做法,然后随着ML开发的发展逐渐引入MLOps。
那么,MLOps和DevOps的未来是什么?
MLOps和DevOps的未来
MLOps和DevOps的未来可能会受到几个趋势和发展的影响。
云平台将在MLOps和DevOps中发挥越来越重要的作用,因为组织希望利用其可扩展性、可靠性和成本效益来支持模型和应用程序的部署和管理。
此外,随着组织寻求提高模型开发和部署的速度和效率,人们将更加关注自动化,包括使用人工智能和机器学习算法来自动化工作流程并减少手动错误。
MLOps和DevOps将继续发展,并变得更加复杂,因为组织希望利用这些方法更快、更高质量、更高可靠性地交付模型和应用程序。
这两种方法都为数据科学和IT团队提供了不同的功能和优势。
但请确保您的MLOps和DataOps团队不应忽视工作流的连续测试阶段,因为这可能会阻碍所需的输出。
- 44 次浏览
【MLops】MLOps原则
视频号
微信公众号
知识星球
随着机器学习和人工智能在软件产品和服务中的传播,我们需要建立最佳实践和工具来测试、部署、管理和监控现实世界生产中的ML模型。简而言之,通过MLOps,我们努力避免机器学习应用程序中的“技术债务”。
SIG MLOps将“最佳MLOps体验定义为在CI/CD环境中,机器学习资产与所有其他软件资产得到一致处理。作为统一发布过程的一部分,机器学习模型可以与包装它们的服务和使用它们的服务一起部署。”,我们希望加快ML/AI在软件系统中的应用,并快速交付智能软件。在下文中,我们描述了MLOps中的一组重要概念,如迭代增量开发、自动化、连续部署、版本控制、测试、再现性和监控。
MLOps中的迭代增量过程
完整的MLOps过程包括三个广泛的阶段:“设计ML驱动的应用程序”、“ML实验和开发”和“ML操作”。
第一阶段致力于业务理解、数据理解和ML驱动软件的设计。在这个阶段,我们确定我们的潜在用户,设计机器学习解决方案来解决其问题,并评估项目的进一步发展。大多数情况下,我们会处理两类问题——要么提高用户的生产力,要么提高应用程序的交互性。
最初,我们定义ML用例并对它们进行优先级排序。ML项目的最佳实践是一次处理一个ML用例。此外,设计阶段旨在检查训练我们的模型所需的可用数据,并指定ML模型的功能和非功能需求。我们应该使用这些需求来设计ML应用程序的体系结构,建立服务策略,并为未来的ML模型创建一个测试套件。
后续阶段“ML实验和开发”致力于通过实现ML模型的概念证明来验证ML对我们的问题的适用性。在这里,我们迭代地运行不同的步骤,例如为我们的问题、数据工程和模型工程确定或完善合适的ML算法。这个阶段的主要目标是提供一个稳定质量的ML模型,我们将在生产中运行。
“ML操作”阶段的主要重点是通过使用已建立的DevOps实践(如测试、版本控制、连续交付和监控),在生产中交付先前开发的ML模型。
这三个阶段相互关联,相互影响。例如,设计阶段的设计决策将传播到实验阶段,并最终影响最终操作阶段的部署选项。
自动化
数据、ML模型和代码管道的自动化程度决定了ML过程的成熟度。随着成熟度的提高,新模型的训练速度也在提高。MLOps团队的目标是将ML模型自动部署到核心软件系统或作为服务组件。这意味着,在没有任何手动干预的情况下,自动化整个ML工作流步骤。自动化模型培训和部署的触发器可以是日历事件、消息传递、监视事件,以及数据、模型培训代码和应用程序代码的更改。
自动化测试有助于在早期快速发现问题。这使得能够快速修复错误并从错误中学习。
为了采用MLOps,我们看到了三个自动化级别,从手动模型训练和部署的初始级别开始,到自动运行ML和CI/CD管道。
- 手动过程。这是一个典型的数据科学过程,在实现ML之初执行。这个级别具有实验性和迭代性。每个管道中的每个步骤,如数据准备和验证、模型训练和测试,都是手动执行的。常见的处理方式是使用快速应用程序开发(RAD)工具,如Jupyter Notebooks。
- ML管道自动化。下一个级别包括自动执行模型训练。我们在这里介绍模型的持续训练。只要有新的数据可用,就会触发模型再训练过程。这种自动化水平还包括数据和模型验证步骤。
- CI/CD管道自动化。在最后阶段,我们引入了一个CI/CD系统,以在生产中执行快速可靠的ML模型部署。与前一步的核心区别在于,我们现在自动构建、测试和部署数据、ML模型和ML训练管道组件。
下图显示了带有CI/CD例程的自动化ML管道:
Figure adopted from “MLOps: Continuous delivery and automation pipelines in machine learning”
下表解释了反映ML管道自动化过程的MLOps阶段:
MLOps Stage | Output of the Stage Execution |
---|---|
开发与实验(ML算法、新的ML模型) | 管道源代码:数据提取、验证、准备、模型训练、模型评估、模型测试 |
管道持续集成(构建源代码并运行测试) | 要部署的管道组件:包和可执行文件。 |
管道连续交付(将管道部署到目标环境) | 部署了具有新模型实现的管道。 |
自动触发(流水线在生产中自动执行。使用计划或触发器) | 存储在模型注册表中的经过训练的模型。 |
模型连续交付(用于预测的模型) | 已部署的模型预测服务(例如,作为REST API公开的模型) |
监控(在实时数据上收集有关模型性能的数据) | 触发以执行管道或开始新的实验循环。 |
在分析了MLOps阶段之后,我们可能会注意到MLOps设置需要安装或准备几个组件。下表列出了这些组件:
MLOps Setup Components | Description |
---|---|
Source Control | 对代码、数据和ML模型工件进行版本控制。 |
Test & Build Services | 使用CI工具(1)确保所有ML工件的质量,以及(2)构建管道的包和可执行文件。 |
Deployment Services | 使用CD工具将管道部署到目标环境。 |
Model Registry | 用于存储已训练的ML模型的注册表。 |
Feature Store | 将输入数据预处理为要在模型训练管道中和模型服务期间使用的特征。 |
ML Metadata Store | 跟踪模型训练的元数据,例如模型名称、参数、训练数据、测试数据和度量结果。 |
ML Pipeline Orchestrator | 使ML实验的步骤自动化。 |
“MLOps: Continuous delivery and automation pipelines
连续X
为了理解模型部署,我们首先将“ML资产”指定为ML模型、其参数和超参数、训练脚本、训练和测试数据。我们对这些ML工件的身份、组件、版本控制和依赖性很感兴趣。ML工件的目标目的地可能是(微)服务或一些基础设施组件。部署服务提供编排、日志记录、监视和通知,以确保ML模型、代码和数据工件是稳定的。
MLOps是一种ML工程文化,包括以下实践:
- 连续集成(CI)通过添加测试和验证数据和模型来扩展测试和验证代码和组件。
- 连续交付(CD)涉及ML训练管道的交付,该管道自动部署另一个ML模型预测服务。
- 连续训练(CT)是ML系统属性所独有的,它可以自动重新训练ML模型以进行重新部署。
- 持续监控(CM)关注的是监控生产数据和模型性能指标,这些指标与业务指标绑定。
版本控制
版本控制的目标是通过使用版本控制系统跟踪ML模型和数据集,将用于模型训练的ML训练脚本、ML模型和数据库集视为DevOps过程中的一流公民。ML模型和数据发生变化(根据SIG MLOps)的常见原因如下:
- ML模型可以基于新的训练数据进行再训练。
- 模型可以基于新的训练方法进行再训练。
- 模型可能是自学习的。
- 模型可能会随着时间的推移而退化。
- 模型可以部署在新的应用程序中。
- 模型可能会受到攻击,需要修改。
- 模型可以快速回滚到以前的服务版本。
- 企业或政府合规性可能需要对ML模型或数据进行审计或调查,因此我们需要访问产品化ML模型的所有版本。
- 数据可能存在于多个系统中。
- 数据可能只能驻留在受限制的司法管辖区内。
- 数据存储可能不是一成不变的。
- 数据所有权可能是一个因素。
与开发可靠软件系统的最佳实践类似,每个ML模型规范(创建ML模型的ML训练代码)都应该经过代码审查阶段。此外,每个ML模型规范都应该在VCS中进行版本化,以使ML模型的训练可审计且可重复。
进一步阅读:我们如何管理ML模型?模型管理框架
实验跟踪
机器学习开发是一个高度迭代和以研究为中心的过程。与传统的软件开发过程不同,在ML开发中,在决定将什么模型推广到生产之前,可以并行执行多个模型训练实验。
ML开发过程中的实验可能有以下场景:跟踪多个实验的一种方法是使用不同的(Git-)分支,每个分支专门用于单独的实验。每个分支的输出都是经过训练的模型。根据所选择的度量,将训练的ML模型相互比较,并选择适当的模型。这种低摩擦分支得到了工具DVC的充分支持,DVC是Git的扩展,也是机器学习项目的开源版本控制系统。另一个流行的ML实验跟踪工具是权重和偏差(wandb)库,它可以自动跟踪实验的超参数和度量。
测试
Figure source: “The ML Test Score: A Rubric for ML Production Readiness
and Technical Debt Reduction” by E.Breck et al. 2017
完整的开发管道包括三个基本组件,数据管道、ML模型管道和应用程序管道。根据这种分离,我们区分了ML系统中的三个测试范围:特性和数据测试、模型开发测试和ML基础设施测试。
特性和数据测试
- 数据验证:自动检查数据和功能架构/域。
- 操作:为了构建模式(域值),请根据训练数据计算统计信息。该模式可以在训练和服务阶段用作输入数据的期望定义或语义角色。
- 功能重要性测试,以了解新功能是否增加了预测能力。
- 操作:计算要素列的相关系数。
- 动作:训练具有一个或两个功能的模型。
- 操作:使用特征的子集“k中的一个”,并训练一组不同的模型。
- 测量每个新功能的数据依赖性、推理延迟和RAM使用情况。将其与新增功能的预测能力进行比较。
- 从基础结构中删除未使用/不推荐使用的功能,并将其记录下来。
- 功能和数据管道应符合政策(如GDPR)。这些需求应该在开发和生产环境中以编程方式进行检查。
- 功能创建代码应该通过单元测试进行测试(以捕获功能中的bug)。
可靠模型开发测试
我们需要为检测特定于ML的错误提供特定的测试支持。
- 测试ML训练应该包括例程,这些例程验证算法做出的决策是否与业务目标一致。这意味着ML算法损失指标(MSE、日志损失等)应与业务影响指标(收入、用户参与度等)相关
- 措施:损失指标-影响指标的关系,可以在使用故意降级模型的小规模A/B测试中进行测量。
- 进一步阅读:选择用于评估机器学习模型的正确度量。这里1,这里2
- 措施:损失指标-影响指标的关系,可以在使用故意降级模型的小规模A/B测试中进行测量。
- 模型老化试验。如果经过训练的模型不包括最新数据和/或不满足业务影响要求,则该模型被定义为过时模型。过时的模型会影响智能软件的预测质量。
- 操作:A/B对旧型号进行实验。包括生成年龄与预测质量曲线的年龄范围,以便于理解ML模型应该多久训练一次。
- 评估更复杂的ML模型的成本。
- 措施:应将ML模型的性能与简单的基线ML模型(例如,线性模型与神经网络)进行比较。
- 验证模型的性能。
- 建议将收集训练和测试数据的团队和程序分开,以消除依赖关系,避免错误的方法论从训练集传播到测试集(源)。
- 措施:使用额外的测试集,该测试集与训练集和验证集脱节。仅将此测试集用于最终评估。
- ML模型性能的公平性/偏差/包容性测试。
- 行动:收集更多数据,包括可能代表性不足的类别。
- 操作:检查输入功能是否与受保护的用户类别相关。
- 进一步阅读:“不平衡分类的数据采样方法之旅”
- 用于任何功能创建、ML模型规范代码(训练)和测试的常规单元测试。
- 模型治理测试(即将推出)
ML基础设施测试
- 训练ML模型应该是可复制的,这意味着在相同的数据上训练ML模型应产生相同的ML模型。
- ML模型的差分测试依赖于确定性训练,由于ML算法、随机种子生成或分布式ML模型训练的非凸性,这很难实现。
- 操作:确定模型训练代码库中的不确定性部分,并尽量减少不确定性。
- 测试ML API的使用情况。压力测试。
- 措施:单元测试随机生成输入数据,并为单个优化步骤训练模型(例如梯度下降)。
- 行动:模型训练的碰撞测试。ML模型应该在训练中期崩溃后从检查点恢复。
- 测试算法的正确性。
- 行动:单元测试,它不是为了完成ML模型训练,而是为了训练几次迭代,并确保在训练时损失减少。
- 避免:使用以前构建的ML模型进行差异测试,因为这样的测试很难维护。
- 集成测试:应该对整个ML管道进行集成测试。
- 操作:创建一个完全自动化的测试,定期触发整个ML管道。测试应验证数据和代码是否成功完成了每个阶段的训练,以及由此产生的ML模型是否按预期执行。
- 所有集成测试都应该在ML模型到达生产环境之前运行。
- 在提供ML模型之前对其进行验证。
- 措施:设置一个阈值,并在验证集的许多版本上测试模型质量的缓慢下降。
- 措施:在ML模型的新版本中设置一个阈值并测试性能的突然下降。
- ML模型在上菜前就被炒鱿鱼了。
- 措施:测试ML模型是否成功加载到生产服务中,并按预期生成对真实数据的预测。
- 测试训练环境中的模型给出的分数与服务环境中的模式相同。
- 措施:保留数据和“第二天”数据的性能之间的差异。一些差异将永远存在。请注意保持数据和“第二天”数据之间的性能差异很大,因为这可能表明一些时间敏感的特性会导致ML模型退化。
- 行动:避免训练和服务环境之间的结果差异。将模型应用于训练数据中的示例和服务时的相同示例应产生相同的预测。此处的差异表示工程错误。
监控
一旦部署了ML模型,就需要对其进行监控,以确保ML模型按预期执行。以下生产中模型监测活动的检查表来自E.Breck等人2017年的“ML测试分数:ML生产准备和技术债务减少的准则”:
- 在整个管道中监视依赖关系的更改会导致通知。
- 数据版本更改。
- 源系统中的更改。
- 依赖项升级。
- 监视训练和服务输入中的数据不变量:如果数据与训练步骤中指定的模式不匹配,则发出警报。
- 措施:调整警报阈值,以确保警报仍然有用且不会产生误导。
- 监控训练和服务功能是否计算出相同的值。
- 由于训练和服务功能的生成可能发生在物理上分离的位置,我们必须仔细测试这些不同的代码路径在逻辑上是否相同。
- 操作:(1)记录服务流量的样本。(2) 计算训练特征和采样服务特征的分布统计信息(最小值、最大值、平均值、值、缺失值的百分比等),并确保它们匹配。
- 监测ML模型的数值稳定性。
- 操作:在出现任何NaN或无穷大时触发警报。
- 监控ML系统的计算性能。应通知计算性能中的急剧和缓慢泄漏回归。
- 操作:通过预先设置警报阈值来衡量代码、数据和模型的版本和组件的性能。
- 操作:收集系统使用指标,如GPU内存分配、网络流量和磁盘使用情况。这些指标对于云成本估计非常有用。
- 监控系统在生产中的陈旧程度。
- 测量模型的使用年限。较旧的ML模型的性能往往会下降。
- 行动:模型监控是一个连续的过程,因此在投入生产之前确定监控要素并制定模型监控策略非常重要。
- 监控特征生成过程对模型的影响。
- 操作:经常重新运行功能生成。
- 监测ML模型在服务数据上的预测质量下降。应通知预测质量的急剧和缓慢泄漏回归。
- 降级可能由于数据的更改或不同的代码路径等原因而发生。
- 措施:测量预测中的统计偏差(一段数据中预测的平均值)。模型应该具有几乎为零的偏差。
- 措施:如果在做出预测后立即提供标签,我们可以实时测量预测的质量并识别问题。
下图显示,可以通过跟踪模型预测的精度、召回率和F1分数随时间的变化来实现模型监测。精确度、召回率和F1分数的降低触发了模型再训练,从而导致模型恢复。
“ML测试分数”系统
“ML测试分数”衡量ML系统的总体生产准备情况。最终ML测试分数计算如下:
- 对于每项测试,手动执行测试将获得半分,并记录和分发测试结果。
- 如果有系统可以重复自动运行该测试,则可获得满分。
- 分别对四个部分的得分求和:数据测试、模型测试、ML基础设施测试和监控。
- 最终的ML测试分数是通过取每个部分的最小分数来计算的:数据测试、模型测试、ML基础设施测试和监控。
在计算ML测试分数后,我们可以推断ML系统的生产准备情况。下表提供了解释范围:
Points | Description |
---|---|
0 | 更多的是研究项目,而不是生产系统。 |
(0,1] | 并非完全未经测试,但值得考虑可靠性存在严重漏洞的可能性。 |
(1,2] | 在基本的生产化方面已经有了第一次通过,但可能需要额外的投资。 |
(2,3] | 经过合理测试,但可能会有更多的测试和程序实现自动化。 |
(3,5] | 强大的自动化测试和监控水平。 |
>5 | 卓越的自动化测试和监控水平。 |
Source: “The ML Test Score: A Rubric for ML Production Readiness and
Technical Debt Reduction” by E.Breck et al. 2017
再现性
机器学习工作流程中的可再现性意味着,在给定相同输入的情况下,数据处理、ML模型训练和ML模型部署的每个阶段都应该产生相同的结果。
Phase | Challenges | How to Ensure Reproducibility |
---|---|---|
Collecting Data | 训练数据的生成无法再现(例如,由于数据库不断变化或数据加载是随机的) |
1) 始终备份您的数据。 2) 保存数据集的快照(例如在云存储上)。 3) 数据源应设计有时间戳,以便可以检索任何点的数据视图。 4) 数据版本控制。 |
Feature Engineering |
情节: 1) 缺失值用随机值或平均值估算。 2) 根据观察百分比删除标签。 3) 非确定性特征提取方法。 |
1) 功能生成代码应处于版本控制之下。 2) 要求前一步骤“收集数据”的再现性 |
Model Training / Model Build | Non-determinism |
1) 确保功能的顺序始终相同。 2) 记录并自动化特征转换,如规范化。 3) 记录并自动化超参数 selection. |
Model Deployment |
1) 已经使用不同于生产环境的软件版本来执行ML模型的训练。 2) 生产环境中缺少ML模型所需的输入数据。 |
1) 软件版本和依赖关系应与生产环境相匹配。 2) 使用容器(Docker)并记录其规范,例如图像版本。 3) 理想情况下,相同的编程语言用于培训和部署。 |
松散耦合体系结构(模块化)
根据Gene Kim等人在《加速》一书中的说法,“高性能(软件交付)只要系统以及构建和维护它们的团队是松散耦合的,那么所有类型的系统都是可能的。这一关键的体系结构特性使团队能够轻松地测试和部署单个组件或服务,即使组织及其运行的系统数量在增长——也就是说,它允许组织在扩展时提高生产力。”
此外Gene Kim等人。,推荐给“使用松散耦合的体系结构。这会影响团队在多大程度上可以按需测试和部署应用程序,而不需要与其他服务协调。使用松散耦合体系结构可以让团队独立工作,而不依赖其他团队提供支持和服务,这反过来又使他们能够快速工作并为组织带来价值。”
关于基于ML的软件系统,与传统的软件组件相比,实现机器学习组件之间的松散耦合可能更困难。ML系统在几个方面具有弱组件边界。例如,ML模型的输出可以用作另一个ML模型的输入,并且这种交织的依赖关系可能在训练和测试期间相互影响。
基本的模块化可以通过构建机器学习项目来实现。要设置标准的项目结构,我们建议使用专用模板,如
基于ML的软件交付度量(“加速”中的4个度量)
在最近关于DevOps状态的研究中,作者强调了四个关键指标,这些指标反映了精英/高绩效组织的软件开发和交付的有效性:部署频率、变更交付周期、平均恢复时间和变更失败百分比。已经发现这些度量对于测量和改进基于ML的软件交付非常有用。在下表中,我们给出了每个度量的定义,并将其连接到MLOps。
Metric | DevOps | MLOps |
---|---|---|
部署频率 | 您的组织多长时间将代码部署到生产环境或发布给最终用户? |
ML模型部署频率取决于 1) 模型再培训要求(从不太频繁到在线培训)。模型再培训有两个方面至关重要 1.1)模型衰减度量。 1.2)新数据可用性。 2) 部署过程的自动化程度,可能介于*手动部署*和*完全自动化的CI/CD管道*之间。
|
变更的交付周期 | 从提交代码到在生产中成功运行代码需要多长时间? |
ML模型变更的交付周期取决于 1) 数据科学探索阶段的持续时间,以最终确定部署/服务的ML模型。 2) ML模型训练的持续时间。 3) 部署过程中手动步骤的数量和持续时间。 |
平均恢复时间(MTTR) | 当发生服务事故或影响用户的缺陷(例如,计划外停机或服务损坏)时,恢复服务通常需要多长时间? | ML模型MTTR取决于手动执行的模型调试和模型部署步骤的数量和持续时间。在这种情况下,当ML模型应该重新训练时,MTTR也取决于ML模型训练的持续时间。或者,MTTR是指ML模型回滚到以前版本的持续时间。 |
更改失败率 | 生产更改或发布给用户的更改导致服务降级(例如,导致服务损坏或服务中断)并随后需要补救(例如,需要修补程序、回滚、前向修复、修补)的百分比是多少? | ML模型变化失败率可以表示为当前部署的ML模型性能指标与先前模型的指标的差异,如精度、召回率、F-1、准确性、AUC、ROC、假阳性等。ML模型变化故障率也与A/B测试有关。 |
为了提高ML开发和交付过程的有效性,应该衡量以上四个关键指标。实现这种有效性的一种实用方法是首先实现CI/CD管道,并采用数据、ML模型和软件代码管道的测试驱动开发。
MLOps原则和最佳实践概述
完整的ML开发管道包括三个可能发生更改的级别:数据、ML模型和代码。这意味着,在基于机器学习的系统中,构建的触发因素可能是代码更改、数据更改或模型更改的组合。下表总结了构建基于ML的软件的MLOps原则:
MLOps 原则 |
Data | ML Model | Code |
---|---|---|---|
版本控制 |
1) 数据准备管道 2) 功能存储 3) 数据集 4) 元数据 |
1) ML模型训练管道 2) ML模型(对象) 3) 超参数 4) 实验跟踪 |
1) 应用程序代码 2) 配置 |
测试 |
1) 数据验证(错误检测) 2) 功能创建单元测试 |
1) 型号规格经过单元测试 2) ML模型训练管道经过集成测试 3) ML模型在投入使用前经过验证 4) ML模型老化测试(在生产中) 5) 测试ML模型的相关性和正确性 6) 测试非功能性需求(安全性、公平性、可解释性) |
1) 单元测试 2) 端到端管道的集成测试 |
自动化 |
1) 数据转换 2) 特征创建和操作 |
1) 数据工程管道 2) ML模型训练管道 3) 超参数/参数选择 |
1) 使用CI/CD的ML模型部署 2) 应用程序构建 |
再现性 |
1) 备份数据 2) 数据版本控制 3) 提取元数据 4) 功能工程的版本控制 |
1) 开发和生产之间的超参数调整是相同的 2) 功能的顺序相同 3) 集成学习:ML模型的组合是相同的 4) 模型伪代码已记录在案 |
1) dev和prod中所有依赖项的版本都是相同的 2) 开发和生产环境的技术堆栈相同 3) 通过提供容器映像或虚拟机再现结果 |
部署 | 1) 功能存储用于开发和生产环境 |
1) ML堆栈的容器化 2) REST API 3) 内部部署、云或边缘 |
1) 内部部署、云或边缘 |
监视 |
1) 数据分布变化(培训与服务数据) 2) 训练与服务功能 |
1) ML模型衰变 2) 数值稳定性 3) ML模型的计算性能 |
1) 服务数据应用程序的预测质量 |
除了MLOps原则外,遵循一套最佳实践应有助于减少ML项目的“技术债务”:
MLOps最佳实践 | Data | ML Model | Code |
---|---|---|---|
文档 |
1) 数据源 2) 决策,如何/在哪里获取数据 3) 标签方法 |
1) 型号选择标准 2) 实验设计 3) 模型伪代码 |
1) 部署过程 2) 如何在本地运行 |
项目结构 |
1) 原始数据和已处理数据的数据文件夹 2) 数据工程管道的文件夹 3) 数据工程方法的测试文件夹 |
1) 包含训练模型的文件夹 2) 笔记本的文件夹 3) 用于功能工程的文件夹 4) ML模型工程文件夹 |
1) bash/shell脚本的文件夹 2) 用于测试的文件夹 3) 部署文件的文件夹(例如Docker文件) |
- 111 次浏览
【MLops】ML模型的测试和评估
视频号
微信公众号
知识星球
在计算机科学领域,测试和评估模型是一个有条不紊的过程,需要仔细规划和执行。正是通过这种严格的测试,我们才能确保计算机模型的完整性和可靠性,这些模型用于气候预测、经济预测和工程等各个领域。
计算机建模中的测试用例介绍
测试用例是系统化的工具,可以模拟计算机模型要处理的常见和不寻常场景。它们是我们验证模型准确性和可靠性的基石,是性能和正确性的基准。
测试用例的目的
- 验证模型精度:将模型输出与预期结果进行比较,以检查精度。
- 确保可靠性:在各种场景下测试一致的性能。
- 错误识别:指出并记录模型中的任何不准确或故障。
有效测试用例的标准
测试用例的开发应遵循一套标准,以确保它们有效地达到预期目的。
特异性(Specificity)
- 明确的目标:每个测试用例都应该有一个明确的目标和已知的预期结果,以便于进行准确的评估。
- 详细的场景:应该详细描述场景,概述将测试模型的具体条件。
可重复性
- 执行中的一致性:为了验证模型的可靠性,测试用例在重复时应该产生一致的结果。
- 测试自动化:为了提高效率和减少人为错误,可以自动化的测试用例更可取。
覆盖范围(Coverage)
- 广谱测试(Broad Spectrum Testin):一个模型应该在广泛的场景中进行测试,特别注意边缘案例。
- 变量组合:应测试不同的输入变量集,以确保数据处理的稳健性。
现实主义
- 真实世界条件的模拟:测试用例应该紧密地反映模型预期遇到的真实世界场景。
- 实际变量的使用:变量应反映模型将处理的实际数据。
设计测试用例
- 测试用例的设计过程是一项细致的任务,涉及几个关键步骤。
关键变量的识别
- 确定哪些变量对模型的运行至关重要,在现实参数中测试这些变量也是如此。
开发场景
- 应该构建场景来测试模型的极限,例如在极端压力或异常条件下。
测试用例文档
- 清晰的描述:每个测试用例都必须清楚地记录其目的和预期结果。
- 执行说明:为每个测试用例的执行提供全面的说明,以确保一致性。
评估测试用例的有效性
测试用例的有效性是多方面的,涉及的不仅仅是二元通过/失败结果。
性能分析
- 执行速度:模型执行测试用例所花费的时间至关重要。
- 计算资源利用率:测试期间使用的计算资源量也是一个重要因素。
结果评估
- 结果的准确性:与预期结果相比,模型输出的准确性是有效性的主要指标。
- 结果一致性:模型应在相同的测试条件下一致地产生相同的结果。
关于有效性的讨论
- 与真实世界应用程序的相关性:每个测试用例与模型的预期真实世界用途的实际相关性至关重要。
- 测试用例限制的识别:还需要讨论测试用例在变量和场景方面可能没有涵盖的内容。
将模型生成的结果与原始数据进行比较
为了确定模型的正确性,将其输出与建模系统的实际数据进行比较。
建立基线
- 原始的真实世界数据为模型的预期输出设定了标准。
差异分析(Discrepancy Analysis)
- 必须仔细检查模型预测与实际数据之间的任何偏差,以确定模型改进的区域。
灵敏度测试
- 进行测试以测量模型的输出对输入变量变化的敏感性是很重要的。
分组数据项
数据项的合理分组是模型测试和评估的另一个关键方面。
逻辑分组
应该对相互影响的数据项进行分组,以检查它们对模型的综合影响。
示例数据使用
样本数据应具有整体代表性,以确保模型能够有效管理不同的数据类型和结构。
变量相互作用
了解变量如何相互作用至关重要,测试用例应该彻底探索这些动态。
详细评估技术
深入评估过程,必须采用各种技术对模型进行全面评估。
统计分析
使用统计方法根据原始数据分析模型的输出,以识别模式或异常。
模型调整
根据试验结果,对模型参数进行调整,以提高模型的性能和精度。
交叉验证
实施交叉验证技术,通过在不同的数据子集上训练和测试来确保模型的稳健性。
回归测试
当对模型进行更新时,回归测试确保新的更改不会对以前的功能产生不利影响。
用户验收测试
在最终用户将使用模型的场景中,他们的反馈对于确定模型的可用性和实用性至关重要。
高级建模注意事项
随着模型复杂性的增加,对高级测试和评估方法的需求也在增加。
并行测试
将新模型与旧模型并行运行,以实时比较性能。
预测有效性
通过将模型的预测与随后的真实世界结果进行比较,评估模型的预测是否随着时间的推移而成立。
伦理考量
确保模型及其预测不违反道德标准或偏见。
通过严格应用这些方法,学生可以对测试和评估计算机模型有一个强有力的理解,使他们具备为任何应用程序生成可靠准确模型所需的技能。
模拟问题
解释在评估计算机模型时同时进行广谱测试和特定场景测试的重要性。用例子来支持你的答案。
测试用例必须涵盖广泛的范围,以确保模型能够处理广泛的场景,包括不太常见但关键的边缘用例。例如,气候模型应该准确预测飓风等典型和极端条件下的天气模式。另一方面,特定场景测试侧重于模型的特定方面。例如,在金融建模中,一个测试案例可能会探讨利率突然变化对抵押贷款负担能力的影响。这两种测试类型对于全面评估模型至关重要,确保在各种情况下的可靠性和稳健性。
描述将模型生成的结果与原始数据进行比较的过程,并解释如何使用该过程来评估模型的正确性。
将模型生成的结果与原始数据进行比较包括使用真实世界的数据建立基线,并根据该基准测量模型的输出。一个优秀的学生会提到使用统计方法来识别模型预测与实际数据之间的模式或差异。例如,在人口增长模型中,学生会将预测的人口变化与人口普查数据进行比较。这种比较有助于评估模型的正确性,突出预测的准确性,并确定模型可能需要改进的领域,以更好地反映真实世界的动态。
- 10 次浏览
【MLops】模型验证和模型评估之间的区别是什么?
视频号
微信公众号
知识星球
- 模型验证
- 模型评估
- 异同
- 如何应用它们
- 为什么它们很重要
- 以下是其他需要考虑的事项
模型验证
模型验证是检查模型是否符合所选算法的假设和要求,以及是否与数据吻合的过程。模型验证可以帮助您避免过度拟合或拟合不足,这是影响模型准确性和稳健性的常见问题。过度拟合意味着你的模型过于复杂,会捕捉到训练数据中的噪声和异常值,但无法推广到新数据。欠拟合意味着您的模型过于简单,并且错过了数据中的模式和关系,导致性能低下。要验证模型,可以使用各种技术,如交叉验证、自举或正则化,在不同的数据子集上测试模型,并相应地调整模型的参数或复杂性。
在掌握模型的领域,验证是一位富有洞察力的大师调整仪器的准确性。这不仅仅是一种仪式;这是一个有数据的舞蹈,一个精心的编排,确保了模型唱得和谐。验证是无名英雄,突出潜在的偏见并微调参数。把它想象成一位明智的导师,引导模型穿过现实世界中错综复杂的不可预测性。这是一双敏锐的眼睛,确保模特不仅能记住,还能理解。在这场复杂的芭蕾舞剧中,验证将一个纯粹的预测引擎转变为一个可靠的预言机,与不同数据集的细微差别产生共鸣。
模型验证对于确保模型的有效性至关重要。它检查模型是否与算法假设一致,是否与数据吻合良好。关键是要避免过度拟合(过于复杂、捕获噪声、泛化不好)和拟合不足(过于简单、缺少模式)。使用交叉验证、自举或正则化等技术对不同的数据子集进行测试,并调整模型参数或复杂性以获得最佳性能。
模型评估
模型评估是衡量模型在新的和看不见的数据上表现如何的过程,通常称为测试或保留集。模型评估可以帮助您评估模型的预测能力和可推广性,并将其与其他模型或基准进行比较。要评估您的模型,您需要选择适当的指标和标准,以反映项目的目标和目的以及数据的特征。例如,如果您正在构建分类模型,则可以使用准确性、精确度、召回率或F1分数等指标来评估模型将新实例分类到不同类别的效果。如果你正在构建回归模型,你可以使用均方误差、均方根误差或R平方等指标来衡量你的模型预测新观测值的连续值的接近程度。
异同
模型验证和评估都是数据分析管道中的重要步骤,它们密切相关。这两个过程都旨在评估模型的质量和可靠性,并在需要时进行改进。这两个过程都使用不同的数据子集来测试您的模型,并提供反馈和度量来衡量模型的性能。然而,它们之间也有一些关键的区别。模型验证通常在模型构建阶段进行,而模型评估则在模型最终确定后进行。模型验证使用训练集或验证集,这是用于拟合模型的数据的一部分,而模型评估使用测试集或保留集,它是数据的一个单独部分,不用于拟合模型。模型验证可以帮助您在不同的候选者中选择最佳模型,而模型评估可以帮助您根据未来数据估计所选模型的预期性能。
模型验证就像在上台前在镜子前练习舞蹈,在那里你可以调整你的动作以获得更好的表现。类似地,在机器学习中,这一阶段对数据子集上的模型参数进行微调。现在,模型评估是盛大的表演。这相当于现场观众面前的舞蹈独奏会。在这里,该模型面对一个在实践中看不见的新数据集,以展示其真实世界的能力。正如舞者旨在给观众留下深刻印象一样,该模型旨在在实用的日常场景中展示其准确性和可靠性,确保其真正达到预期。
这两种机制的相似之处在于,这两种方法都用于使用各种准确性度量在保持数据集上测试模型的性能。
主要区别在于,验证用于评估不同时期的模型性能,主要用作决定模型是否需要进一步微调或停止训练的标志。
另一方面,一旦最终模型准备好,并且训练性能被认为令人满意,就需要在生产中看到的真实世界数据上进行测试,并检查是否出现分布外误差或数据漂移等问题。这叫做模型评估
如何应用它们
要在数据分析项目中应用模型验证和评估,您需要遵循一些最佳实践和指导原则。首先,将数据分为三组:训练、验证和测试。使用训练集来拟合模型,使用验证集来验证模型并调整参数,使用测试集来评估模型并估计误差。此外,请确保测试集能够代表要泛化到的总体或域,并且在项目结束之前不会使用它。此外,为您的项目选择适当的验证和评估技术和指标;这将取决于数据的类型和大小,以及模型的复杂性和用途。例如,如果您的数据集很小或不平衡,则可能需要使用交叉验证或分层抽样来验证您的模型,并使用考虑类分布或错误成本的指标来评估您的模型。最后,将您的模型与其他模型或基准进行比较。这将帮助您评估其相对性能和价值,确定其优势和劣势,并证明您选择的模型是合理的。
为什么它们很重要
模型验证和评估很重要,因为它们可以帮助您确保模型不仅准确,而且可靠且可推广。通过验证和评估模型,您可以避免常见的陷阱,如过度拟合或拟合不足,并优化模型的性能和有用性。此外,通过验证和评估模型,您还可以向利益相关者、客户或用户传达和展示模型的价值和影响,并让他们对模型的预测和建议充满信心和信任。
模型验证本质上是在开发或训练模型的同时评估模型的性能,通常使用专业知识和验证技术或相关数据来调整参数,防止过度或不足。
另一方面,模型评估是评估模型在独立数据集上的性能,以衡量其泛化和利用能力。
验证是微调,而评估是测试接受度和能力,这两者对于创建可靠的模型都至关重要。
如果没有验证,您将无法相信从训练数据生成的模型是稳健或准确的。如果在部署后不进行持续评估,您将无法确定性能下降的原因,因为模型中的假设不再有效,或者数据已偏离训练集太远。
以下是其他需要考虑的事项
这是一个分享不适合前面任何部分的例子、故事或见解的空间。您还想添加什么?
- 128 次浏览
【ML模型测试】ML模型测试和评估综合指南
视频号
微信公众号
知识星球
目录
- 什么是ML测试?
- ML测试的类型
- ML模型的评估度量
- 如何测试机器学习模型?
- ML测试中的伦理考量
- ML测试的工具和框架
-
结论
从让我们的生活更轻松的智能助手到检测医疗状况的复杂算法,机器学习技术的应用引人注目。然而,随着我们越来越依赖这些算法,一个问题出现了:我们如何才能信任它们?
与遵循明确指令的传统软件不同,ML算法从数据中学习,绘制模式并做出决策。这种学习模式虽然高度智能,但也带来了复杂性。如果传统软件出现故障,通常是由于编码错误——一个逻辑错误。但是,当ML模型失败时,可能是由于各种原因:
- •培训数据存在偏差
- •过拟合错误
- •不可预见的变量整合
由于ML模型涉及审批贷款、驾驶自动驾驶汽车或诊断患者等关键决策,因此可能会出现错误。这就是为什么ML测试是每个业务都需要实现的关键过程。它确保ML模型以负责任、准确和合乎道德的方式运行。
什么是ML测试?
机器学习测试是评估和验证机器学习模型性能的过程,以确保其正确性、准确性和稳健性。与主要关注代码功能的传统软件测试不同,ML测试由于ML模型的固有复杂性而包括额外的层。它确保ML模型按预期运行,提供可靠的结果并遵守行业标准。
ML测试的重要性
保持模型准确性
ML模型是根据历史数据进行训练的,其准确性在很大程度上取决于这些数据的质量和相关性。ML模型测试有助于识别预测结果和实际结果之间的错误,使开发人员能够微调模型并提高其准确性。
防止偏差
ML模型中的偏见可能导致不公平或歧视性的结果。彻底的测试可以揭示数据和算法中的偏见,使开发人员能够解决这些问题并创建更公平的模型。
适应不断变化的数据
真实世界的数据在不断演变。ML测试确保模型在引入新数据时保持有效,并随着时间的推移保持其预测能力。
提高可靠性
稳健的测试程序增强了ML系统的可靠性,增强了对其性能的信心,并降低了意外故障的风险。
ML测试的类型
让我们研究一下各种类型的ML测试,每种测试都旨在解决模型性能的特定方面,同时保持简单易懂
组件的单元测试
与传统的软件测试一样,ML中的单元测试侧重于测试ML管道的各个组件。它涉及评估每个步骤的正确性,从数据预处理到特征提取、模型架构和超参数。确保每个构建块按预期运行有助于提高模型的整体可靠性。
数据测试和预处理
输入数据的质量影响ML模型的性能。数据测试包括验证数据的完整性、准确性和一致性。此步骤还包括预处理测试,以确保正确执行数据转换、规范化和清理过程。干净可靠的数据可以带来准确的预测。
交叉验证
交叉验证是一种强大的技术,用于评估ML模型对新的、看不见的数据的泛化能力。它包括将数据集划分为多个子集,在不同的子集上训练模型,并在剩余数据上测试其性能。交叉验证通过重复此过程并对结果求平均值,深入了解模型在不同输入上的潜在性能。
性能指标测试
选择适当的性能指标对于评估模型性能至关重要。准确性、准确度、召回率和F1分数等指标提供了模型运行情况的定量衡量标准。测试这些指标可以确保模型按照预期目标交付结果。
稳健性和对抗性测试
鲁棒性测试包括评估模型处理意外输入或对抗性攻击的能力。对抗性测试在暴露于故意修改的输入以混淆模型时,会明确评估模型的行为。稳健模型在具有挑战性的条件下不太可能做出错误预测。
A/B部署测试
一旦模型准备好进行部署,就可以使用a/B测试。它包括将新的ML模型与现有模型一起部署,并在现实世界中比较它们的性能。A/B测试有助于确保新模型不会引入意外问题,并且性能至少与当前解决方案一样好。
偏差测试
ML模型中的偏见可能导致不公平或歧视性的结果。为了解决这一问题,偏差和公平性测试旨在识别和减轻数据和ML模型预测中的偏差。它确保该模型公平对待所有个人和群体。
ML模型的评估度量
必须依靠评估指标来衡量这些模型的性能和有效性。这些指标为ML模型的性能提供了有价值的见解,有助于对其进行微调和优化,以获得更好的结果。让我们来看看其中的一些指标
精确(Accuracy)
准确性是最直接的衡量标准,衡量正确预测的实例与数据集中总实例的比率。它提供了模型正确性的总体视图。然而,在处理不平衡的数据集时,它可能不是最好的选择,因为其中一个类占另一个类的主导地位。
精确(Precision)
精度关注的是模型做出的积极预测的准确性。它是准确的阳性预测与真阳性和假阳性之和的比率。当假阳性代价高昂或不受欢迎时,精确性是有价值的。
敏感性(Sensitivity)
敏感性,或真阳性率,评估模型捕捉所有阳性实例的能力。它是真阳性与真阳性和假阴性之和的比率。当假阴性的后果显著时,回忆是至关重要的。
特异性(Specificity)
特异性,也称为真负率,评估模型正确识别负实例的能力。这是真阴性与真阴性和假阳性之和的比率。当关注负面预测的表现时,具体性是有价值的。
ROC曲线下面积(AUC-ROC)
AUC-ROC度量有助于解决二进制分类问题。它绘制了真阳性率与假阳性率的关系图,直观地表示了模型区分类别的能力。AUC-ROC值接近1表示模型性能更好。
平均绝对误差
超越分类,MAE是回归任务中使用的度量。它测量预测值和实际值之间的平均绝对差。它让我们知道我们的预测与现实有多远。
均方根误差
与MAE一样,RMSE是一种回归度量,专注于预测值和实际值之间的平均平方差的平方根。它比较小的错误惩罚更大的错误。
ML模型的评估度量
测试ML模型涉及到针对其独特复杂性量身定制的特定策略。让我们看看如何有效地测试机器学习模型,提供可操作的步骤来提高其性能:
了解您的数据
在开始测试之前,深入了解数据集是至关重要的。探索其特点、分布和潜在挑战。这些知识将帮助您设计有效的测试场景并识别潜在的陷阱。
拆分数据
将数据集划分为训练集、验证集和测试集。训练集用于训练模型,验证集帮助微调超参数,测试集评估模型的最终性能。
组件的单元测试
首先测试ML管道的各个组件。这包括检查数据预处理步骤、特征提取方法和模型架构。在将每个组件集成到整个管道中之前,验证它们是否按预期工作。
交叉验证
利用交叉验证来评估模型的泛化能力。应用K-fold交叉验证等技术,将数据集划分为K个子集,对模型进行K次训练和评估,每次使用不同的子集进行验证。
选择评估指标
根据问题的性质选择适当的评估指标。对于分类任务,精确性、准确性、召回率和F1分数是标准的。回归任务通常使用MAE或RMSE等指标。
定期模型监测
由于数据分布的变化或其他因素,机器学习模型可能会随着时间的推移而退化。定期监控已部署的模型,并定期对其进行重新测试,以确保其保持准确性和可靠性。
ML测试中的伦理考量
通过严格的测试和完善ML模型,考虑可能出现的道德影响至关重要。让我们探讨有关ML测试的道德考虑、潜在陷阱以及如何确保测试实践符合道德规则
数据隐私和安全
在测试ML模型时,必须极其小心地处理数据。确保对敏感和个人身份信息进行适当加密,以保护个人隐私。道德测试尊重数据主体的权利,并保护其免受潜在的数据泄露。
公平与偏见
在测试ML模型时,检查他们是否表现出对某些群体的偏见是至关重要的。可以使用工具和技术来衡量和减轻偏见,确保我们的模型公平、公正地对待所有个人。
透明度和可解释性
ML模型可能很复杂,使其决策难以理解。道德测试包括评估模型的透明度和可解释性。用户和利益相关者应该了解模型是如何实现预测的,从而培养信任和问责制。
责任和责任(Accountability and Liability)
如果ML模型做出了有害或错误的预测,谁负责?道德ML测试应解决责任和责任问题。制定明确的指导方针,确定对示范成果负责的各方,并实施机制纠正任何负面影响。
以人为本的设计
ML模型与人类相互作用,因此它们的测试应该反映以人为本的设计原则。在评估模型性能时,考虑最终用户的需求、期望和潜在影响。这种方法确保模型能够增强而不是破坏人类体验。
同意和数据使用
测试通常涉及使用真实世界的数据,其中可能包括个人信息。获得其数据用于测试目的的个人的适当同意。对数据使用保持透明,并确保遵守数据保护法规。
长期影响
ML模型是为进化而设计的。道德测试应考虑模型部署的长期影响,包括随着数据分布的变化,模型可能会如何运行。定期测试和监控可确保模型在其整个生命周期中保持准确和合乎道德。
协作监督
ML测试中的道德考虑不应仅限于开发人员。让不同的利益相关者参与进来,包括伦理学家、法律专家和受影响社区的代表,对潜在的道德挑战提供全面的视角。
ML测试的工具和框架
各种ML测试工具和框架可用于简化和增强测试过程。让我们来看看一些工具和框架,它们可以帮助您有效地驾驭ML测试的复杂性
TensorFlow
TensorFlow由谷歌开发,是最流行的ML测试开源框架之一。它提供了一系列用于构建和测试ML模型的工具。TensorFlow强大的生态系统包括用于生产管道测试的TensorFlow Extended(TFX)、用于机器学习中测试数据的TensorFlow Data Validation,以及用于深入模型评估的TensorFlowModel Analysis。
PyTorch
PyTorch是另一个广泛使用的开源ML框架,以其动态计算图和易用性而闻名。PyTorch提供了用于模型评估、调试和可视化的工具。例如,“torchvision”软件包提供了各种数据集和转换,用于测试和验证计算机视觉模型。
Scikit学习
Scikit-learn是一个通用的Python库,提供数据挖掘、分析和机器学习工具。它包括用于模型评估的各种算法和度量,例如用于超参数调整的交叉验证和网格搜索。
Fairlearn
Fairlearn是一个工具包,旨在评估和缓解ML模型中的公平性和偏见问题。它包括重新加权数据和调整预测以实现公平的算法。Fairlearn可以帮助您测试和解决ML模型中的道德问题。
结论
测试机器学习模型是一个系统和迭代的过程,可以确保您的模型准确可靠地运行。遵循本指南,您可以识别和解决潜在问题,优化性能,并提供符合最高标准的人工智能解决方案。请记住,测试不是一次性事件。这是一个持续的过程,在机器学习模型的整个生命周期中保护其有效性。
- 115 次浏览
【Metaflow 】Whisper with Metaflow on Kubernetes
视频号
微信公众号
知识星球
默认的Kubernetes配置可能不适合ML工作负载,从而浪费人力和计算机时间。我们展示了一轮故障排除和代码中的两行更改如何使总执行时间加快九倍。
Metaflow基础模型的MLOps
OpenAI的Whisper是一种强大的新多任务处理模型,可以在多种口语中执行多语言语音识别、语音翻译和语言识别。在之前一篇题为《基础模型的MLOps:Whisper和Metaflow》的博客文章中,Eddie Mattia讨论了使用Metaflow运行OpenAI Whisper来转录Youtube视频。它涵盖了Whisper的基本知识,如何编写Metaflow流,还简要介绍了如何在云中大规模运行此类流。尽管这里我们关注的是Whisper,但所有这些工作都可以推广到许多类型的基础模型(例如,请参阅我们关于生产用例的并行化稳定扩散的工作)。
为了部署和运行生产工作负载,许多企业都将目光投向Kubernetes,因为它已经成为在云中运行应用程序的事实方式。其与云无关的API(对用户来说)、资源的声明性语法以及庞大的开源生态系统,使其成为许多用例非常有吸引力的平台。在这一点上,我们决定在Kubernetes上使用Metaflow运行OpenAI Whisper。
然而,开箱即用,系统的性能对于ML工作负载来说可能相当糟糕。但是,通过一点故障排除,我们能够识别瓶颈并显著提高性能。其结果是一个可用于生产、性能足够高的ML工作流,能够跨多个维度进行扩展。
Whisper型号
OpenAI Whisper有多种不同大小的机器学习模型。这些是使用不同的参数集创建的,并支持不同的语言。
考虑一个团队想要评估ML模型的大小、转录时间和输出的实际质量之间的关系的情况。对于一些不同的输入,团队希望使用不同的模型大小运行Whisper并比较结果。Metaflow可以很容易地在这些维度上填充结果,因此您可以在不编写额外代码的情况下就这种权衡做出明智的决定。
对于3个不同的Youtube URL以及评估小型和大型模型,评估结果如下:
Logical block diagram of the steps involved in the Metaflow run
每个圆圈都是Metaflow中的一个步骤。transcript是使用Metaflow的foreach构造为每个URL并行调用的。对于小型和大型模型,每个转录都会做另一个foreach。
实际的转录发生在分别使用Whisper的小型和大型机器学习模型的微小和大型步骤中。
联接步骤执行特定于给定url的任何后处理。加入后步骤可以对输出质量、所花费的时间等进行实际评估。
这方面的源代码可以在这里找到:https://github.com/outerbounds/whisper-metaflow-k8s
对于这篇特别的帖子,我们使用了Youtube频道BBC Learning English的3段视频进行评估。
首先,该流程在具有64GB内存的M1 Macbook Pro上本地运行。这主要是为了确认代码执行正确,并且输出是预期的格式。
多亏了Metaflow,运行流就像执行一样简单:
python3 sixminvideos.py run
这项运行在大约10分钟内完成(见下文),考虑到在此期间并行发生了6种不同的转录,这令人印象深刻。请注意,OpenAI Whisper下载机器学习模型并将其缓存在本地。在这种情况下,这些模型已经在本地缓存。否则,时间会更长。
Timeline view of the Metaflow run on M1 Mac
Kubernetes上带有Metaflow的Whisper模型
让我们在Kubernetes上运行相同的流。有关更多设置和详细信息,请参阅这些说明。在我们的设置中,Kubernetes集群被设置为在AWS上运行,并包括两个m5.8xlarge EC2实例。
在Kubernetes上运行流的最简单方法是运行与上面相同的CLI命令,后跟–with Kubernetes。在后台,Metaflow连接到Kubernetes集群,并运行集群中的每个步骤。因此,使用kubernetes运行流导致每个步骤都在云中运行。
Kubernetes中最小的可执行单元是一个pod。在这种情况下,Metaflow从每个步骤中获取代码,将其放入Linux容器中,并将与该步骤对应的每个任务作为Kubernetes pod运行(一个步骤可能会在foreach中产生多个具有不同输入的任务)。
以下是在Kubernetes上执行的情况:
python3 sixminvideos.py run --with kubernetes
Timeline view of the first Metaflow run on Kubernetes
流程已成功完成。然而,上面的图片显示,它花费了48m15。这几乎比在本地笔记本电脑上运行此流程所需的时间慢了五倍。在云中运行流的承诺是提高性能,而不是降低性能!
流的源代码在两次运行中都是相同的。从步骤的开始和结束时间来看,很明显,Metaflow在两次运行中都正确地编排了步骤。步骤顺序得到了维护,本应并行运行的步骤实际上是并行运行的。
我们知道,M1 Mac上的本地运行和Kubernetes上的运行之间的比较并不完全公平,因为Kubernete中的每个pod都缺乏共享存储。因此,每次pod启动时都会重新下载模型,增加了一些开销。此外,如果包含ffmpeg等依赖项的Docker映像没有缓存在节点上,则需要下载它,从而增加更多的开销。
尽管如此,五倍的放缓感觉并不正确。Kubernetes中是否存在一些错误配置,导致流花费了这么长时间?让我们来看看!
分析Kubernetes中的工作负载性能
让我们更深入地了解这种性能下降的瓶颈是什么。
CPU和内存消耗
在创建pod时,Kubernetes允许用户请求一定数量的内存和CPU资源。这些资源是在创建时为pod保留的。实际使用的内存和CPU数量可能会随着吊舱的使用寿命而变化。此外,根据您的Kubernetes配置,pod实际使用的资源量可能超过请求的数量。然而,当资源超过请求的数量时,并不能保证pod会真正获得资源。
以下图表显示了该流中每个pod请求和使用的资源之间的关系(这些图表是使用集群中运行的Grafana仪表板获得的)。
在下图中,绿线表示pod的资源请求,黄线表示实际的资源使用情况。Y轴显示了吊舱完全利用的CPU内核的数量。
Graph of CPU utilization vs CPU requested by steps in Metaflow
事实证明,这个流中的所有pod都要求1个CPU,但实际上使用了更多,几乎13个内核。
在此图表中,Y轴显示内存请求(绿线)和实际内存使用情况(黄线)。
Graph of Memory utilization vs Memory requested by steps in Metaflow
在内存方面,pod请求4GB的内存,但最终使用了近12GB的内存。
Kubernetes集群包括多个服务器(物理服务器机器、虚拟机、EC2实例等)。这些服务器被称为节点。当一个pod提交给Kubernetes时,它会选择集群中的一个节点来运行该pod。
正如您在下面的stdout屏幕截图中所看到的,该流的所有pod都在同一个节点上运行:ip-10-10-27-207.us-west-2.compute.internal
List of hosts used for running steps in Metaflow
观察
关键问题是,虽然运行能够成功完成,但Kubernetes决定将所有任务安排在同一节点上,从而导致性能不理想。
在下面的图表中,我们可以看到我们集群的两个节点。黄色线所示的节点的CPU利用率约为100%,而绿色节点处于空闲状态。相应地,绿色节点上没有使用内存。
CPU utilization percentage of the node
Memory utilization percentage of the node
在这种情况下,任务能够突破其请求的CPU数量,但由于在同一节点上的共同定位,它们在相同的稀缺资源上竞争。这清楚地证明了经常困扰多租户系统的噪声邻居问题。
令人困惑的是,调度行为取决于集群上的总体负载,因此总执行时间可能会有很大的差异,这取决于系统上同时执行的其他工作负载。像这样的可变性很难调试,而且显然是不可取的,尤其是对于应该在可预测的时间范围内完成的生产工作负载。
像这样的问题在表面上并不是很明显,因为运行最终完成时没有出现错误。这些类型的问题很容易被忽视,导致浪费人力和计算机时间,并增加云成本。
解决性能问题
Metaflow支持为各个步骤提供特定的资源需求。这些需求是作为装饰器写在代码中的。在Kubernetes pod规范中,它们被转换为CPU和内存请求。我们不依赖于机会主义的爆发,而是固定资源需求以反映实际使用情况。
这些微小的步骤可以使用8个vCPU和2GB的内存
大型步骤可以使用22个vCPU和12GB的内存。
因此,Metaflow流被相应地设置并再次运行。
... @kubernetes(cpu=8, memory=2048, image=”https://public.ecr.aws/outerbounds/whisper-metaflow:latest”) @step def tiny(self): print(f"*** transcribing {self.input} with Whisper tiny model ***") cmd = 'python3 /youtube_video_transcriber.py ' + self.input + " tiny" p = subprocess.run(shlex.split(cmd), capture_output=True) json_result = p.stdout.decode() print(json_result) self.result = json.loads(json_result) self.next(self.join) @kubernetes(cpu=22, memory=12288, image=”https://public.ecr.aws/outerbounds/whisper-metaflow:latest”) @step def large(self): print(f"*** transcribing {self.input} with Whisper large model ***") cmd = 'python3 /youtube_video_transcriber.py ' + self.input + " large" p = subprocess.run(shlex.split(cmd), capture_output=True) json_result = p.stdout.decode() print(json_result) self.result = json.loads(json_result) self.next(self.join) ...
通过这种设置,流量在4m58s内完成
Timeline view of the efficient Metaflow run on Kubernetes
从节点CPU利用率可以看出,这一次,任务在多个节点上运行。具体来说,CPU并没有固定在100%。
Graph of CPU utilization of the nodes in Kubernetes
结论
经过仔细观察,我们能够将之前48分钟的完成时间减少到大约5分钟,只需调整两个资源规格,就可以将性能提高9倍。
运行的优化有很多好处,包括能够进行更多的实验。现在可以通过添加更多并行步骤来测试各种模型大小,而不是仅限于测试小型和大型模型,每个步骤都将作为单独的pod运行,并拥有自己的专用资源。此外,流现在可以转录更多的视频,而不是仅限于3个。
接下来的步骤
如果您想在自己的环境中部署Metaflow和Kubernetes,可以使用我们的开源部署模板轻松完成。您可以根据需要自定义模板,并将它们连接到现有的监控解决方案中,这样您就可以如上所述调试问题。如果您有任何问题,我们很乐意在我们的Slack频道为您提供帮助。
如果您想自己使用Metaflow玩Whisper模型,您可以在我们托管的Metaflow Sandbox中免费轻松完成,该Sandbox配有托管的Kubernetes集群,无需基础设施专业知识!我们专门为Whisper提供了一个预先制作的工作空间,包含所有需要的依赖项。只需点击Metaflow沙盒主页上的Whisper工作区。
最后,如果您需要一个全栈环境来处理严重的ML工作负载,但您宁愿避免调试Kubernetes和手动优化工作负载,那么可以看看Outerbounds平台。它提供了一个定制的Kubernetes集群,经过优化以避免这里描述的问题,部署在您的云帐户上,完全由我们管理。
- 35 次浏览
【Metaflow】使用Metaflow训练大型语言模型,以Dolly为特色
视频号
微信公众号
知识星球
我们以Databricks的Dolly为代表,展示了如何使用Metaflow轻松地训练自己的大型语言模型(LLM)。通过使用Metaflow处理LLM,您可以将它们合并到现有的生产项目中,超越概念验证。
在我们上一篇文章《大型语言模型和ML基础设施堆栈的未来》中,我们展示了关于ML驱动的应用程序的未来的示意图,这些应用程序无缝地混合了基础模型和传统ML:
本文深入探讨了一个特定的技术主题:今天如何使用开源Metaflow来微调开源基础模型?作为一个代表性的例子,我们将使用Databricks最近发布的Dolly模型,但这里介绍的方法也适用于其他当前和许多未来的模型。
训练Dolly的源代码可以作为一组简单的Python脚本免费提供,那么使用Metaflow来编排训练有什么意义呢?原因很简单:如上所述,在一个LLM被视为支持复杂应用程序的其他模型之一的世界里,您希望利用Metaflow的常见优势:
- 能够为工作使用最佳建模方法和库,支持围绕LLM快速发展的库生态系统,但以稳定、安全和可生产的方式使用它们。
- 支持各种应用程序的灵活部署模式。
- 内置数据、代码和模型的版本控制,这对于需要密切跟踪其行为的复杂模型(如LLM)尤其重要。
- 轻松协调本地和生产中的工作流序列,使其成为整个系统架构的骨干。
- 无缝支持可扩展的云计算,包括强大的GPU实例。
- 对数据的一致且快速的访问,即使是大量的数据。
考虑到这一动机,让我们深入了解技术细节。
开源基金会模型简史
在过去的六个月里,基于一些基础模型,出现了一个由各种微调LLM组成的多样化花园。这种快速发展的驱动因素是,使用云TPU或GPU从头开始训练一个新的基础模型的成本可能在30万至100万美元之间。相比之下,对基础模型的专门版本进行微调要便宜很多数量级。例如,本文中使用的Dolly模型可以在几个小时内进行训练,成本约为500-1000美元。
下图说明了这些模型的庞大谱系:
Source: github.com/michaelthwan/llm_family_chart
自最初的Dolly以来,Databricks已经推出了Dolly 2.0,它基于不同的模型,并通过使用内部策划的微调数据集使Dolly 2.0在商业上可用。两个Dolly版本都源于Eleuther AI团队构建的源模型。在第一个Dolly的情况下,60亿参数模型被称为GPT-J,其中Dolly 2.0源于120亿参数模型pythia。
最近,Stability.ai发布了StableLM,这是另一个基础语言模型,与Dolly利用的GPT-J模型类似。随着Dolly训练GPT-J,现在已经有几个模型可以开始为更具体的任务微调StableLM。
这些例子突出了LLM工作流中的最新浪潮,它们围绕着指令调优方法,使模型越来越适合提示,正如ChatGPT所推广的那样。当然,这并不是LLM的唯一用例,但它对基于问答的应用程序非常有用。
随着人们探索扩展这些工作流程的新技术和方法,指令调整模型的改进正处于狂野的西方时代。无论如何,这些模型的高周转率表明了了解这些模型来自何处以及组织现在可以做出哪些基础设施选择以支持任何这些新的建模方法的重要性。
Dolly的供应链
Dolly的用户体验表明,机器学习社区,特别是HuggingFace等服务,在让大量开发人员可以访问复杂的建模API方面取得了多大进展。我们首先加载预训练的源模型:
model = transformers.AutoModelForCausalLM. from_pretrained(“EleutherAI/gpt-j-6B”)
然后,Dolly使用HuggingFace Trainer API对一个名为Alpaca的指令调优数据集进行训练,该数据集由斯坦福大学tatsu实验室的一个团队管理。对于本文来说,最重要的是要认识到,该数据是通过提示text-davinci-003模型,使用OpenAI API生成的。这意味着我们正在从GPT-J模型的原始状态训练模型,并教它从OpenAI中提取较大的text-davinci-003模型的行为,并在较小的Dolly模型中模拟其指令跟随功能。最终的数据集包含52K个指令调优示例。
请注意,由于对Alpaca数据集的依赖,该数据集具有Creative Commons NonCommercial(CC BY-NC 4.0)许可证,您不能在商业应用程序中使用此示例或Dolly版本1,需要用您自己的指令调优数据集替换Alpaca数据依赖,或者使用具有免费商业使用许可证的东西。
使用Metaflow训练Dolly
为了重现Databricks团队的实现,并证明Metaflow对LLM用例的适用性,我们在各种上下文中训练了Dolly。您可以在此存储库中找到源代码。
我们创建了一个简单的元流,它由三个步骤组成,开始、训练和结束。Metaflow的超能力之一是,我们能够在个人GPU工作站上本地快速迭代流。我们遵循了现有的Dolly脚本,并使用微软的deepspeed库在许多GPU上分发培训。Deepspeed与PyTorch和HuggingFace代码紧密集成,因此这是一种可以用于训练大型深度学习模型的通用模式。
我们的本地工作站没有多个GPU,所以为了测试分布式训练,我们注释了步骤@kubernetes(gpu=4)在具有多个gpu的云实例上执行训练步骤。从概念上讲,流程看起来是这样的:
在源代码中,黄色方框的核心部分如下所示:
... @kubernetes(cpu=32, gpu=4, memory=128000) @step def train(self): ... subprocess.run( [ “deepspeed”, “–num_gpus=%d” % N_GPU, “–module”, MODEL_TRAINING_SCRIPT, “–deepspeed”, ds_config_file.name, “–epochs”, “1”, “–local-output-dir”, self.local_output_dir, “–per-device-train-batch-size”, self.batch_size, “–per-device-eval-batch-size”, self.batch_size, “–lr”, self.learning_rate ], check=True ) # push model to S3
当涉及到代码时,这就是训练模型所需要的全部内容!
但它真的有效吗?
当你开始运行流时,它会很高兴地开始在一个大型GPU实例上处理数据,并在训练过程中沉默数小时。
特别是对于这样一个新的实验项目,我们不确定深度速度设置是否正确工作,是否有效地利用了所有GPU。为了解决这种常见情况,最近我们创建了一个Metaflow卡来分析GPU的使用情况。要使用它,请将gpu_profile.py放在流文件旁边,并在代码中添加以下行:
... @kubernetes(cpu=X, gpu=Y, memory=Z) @gpu_profile(interval=1) @step def train(self): ...
Metaflow任务GPU探查器向我们展示了一些东西,例如哪些NVIDIA设备在实例上可见,它们是如何连接的,最重要的是,它们在模型训练作业的整个生命周期中是如何使用的。
GPU探查器会自动将结果记录到Metaflow卡中,因此您可以在Metaflow UI(或笔记本)中方便地查看的报告中使用建模指标和其他实验跟踪数据来组织和版本化这些结果。卡片在实验过程中特别有用,因为它们永久地连接到生成卡片的运行中,因此您可以在自动版本化的代码和与实验相关的数据的上下文中轻松地观察过去的性能。
以下是一张示例卡,显示了训练Dolly时代的GPU处理器和内存利用率:
看到这些图表让我们有足够的信心相信GPU正在执行有用的工作。
常见的基础设施问题
假设您已经为Metafow设置了基础设施,您可以运行上面的Metaflow流来自己训练Dolly。您可以使用AWS Batch或Kubernetes来重现上述结果,它们可以方便地与所有主要云一起工作。或者,如果你想完全避免基础设施方面的麻烦,你可以依赖Outerbounds平台。
在我们的初始测试中,我们使用AWS一个p3dn.24xlarge EC2实例来训练Dolly一个历元。这个进程运行的实例有8个V100 GPU,每个GPU都有32GB的内存。我们使用了AWS深度学习AMI,能够在3小时15分钟内运行一个历元的模型。这大约花了100美元。由于AWS上的p4实例不可用,我们还在Corewave节点上运行了相同的软件设置,该节点具有3个A100 GPU,每个GPU具有80GB内存。我们对这个模型进行了10个时期的训练,大约花了30个小时。这大约花了200美元。
除了与寻找足够大的GPU实例来运行代码有关的头痛问题外,谨慎管理依赖关系至关重要,这是深度学习中一个无声的生产力杀手。例如,当使用NVIDIA GPU时,在数据科学层工作时,CUDA驱动程序和CUDA工具包组件(如NVCC编译器)之间的不对齐可能会导致流中断调试周期。我们发现Dolly使用以下组合:
- Ubuntu 20.04 or 22.04
- NVIDIA driver version 515.105.01
- CUDA Version >= 11.1 and <= 11.8
值得庆幸的是,无论需要环境的任务是在工作站上本地运行,还是在计算集群中远程运行,开源Metaflow和Outerbounds平台都可以轻松地对环境进行版本设置。
评价
最后,有了我们所有的基础设施,我们能够开始探索Dolly的语言和推理能力的极限。Dolly可以执行一系列令人惊讶的任务,包括文本生成、头脑风暴和开放式问答。
正如Databricks在Dolly v1 HuggingFace模型卡中所指出的那样,“Dolly的定性行为与基础模型有很大不同”,尽管“Dolly[得分]仅略好于其基础模型GPT-J-6B[在常见LLM评估基准上]”。验证Databricks的上述说法很有启发性,因为我们观察到,当我们要求模型在训练的不同阶段生成对一组常见指令的响应时,它的响应往往会发生变化。
例如,我们要求模型“写一个关于一个人的故事,他因为被决策树缠住而看不到随机森林”,看看它如何处理创造性的讲故事风格的提示。请注意,随着训练越来越多,该模型在回答中开始强调指令中的“写故事”部分,似乎在解释一个有点开放和模糊的提示时变得更好了。
Epoch | Sample Response |
---|---|
1 | When people think of random forests, they often think of the trees being randomly selected from a dataset and being used to make predictions. What they may not know is that when a random forest is built, each tree is created with a rule to determine the best split for a given feature. |
5 | Anil was lost in a thick forest of decision trees. Every step he took felt like he was forcing his way through an endless series of obstacles. He had been walking for hours, and he was still no closer to finding the trail he had been following. His only hope was that eventually he would stumble upon the clearing that had caused his vision to fail him earlier. |
10 | John was an engineer who couldn’t get past the first layer of decision trees. He had worked so hard to understand the data, but something was just wrong with the random forest he was seeing. He worked his way deeper and deeper into the forest, but there were just too many branches and too many combinations of variables that he didn’t understand. John was completely lost, unable to progress any further and in need of a boost to get him out. That’s when he discovered the random forest again, and it gave him the inspiration he needed to understand the data. |
这个例子说明了我们的一个主要定性观察结果,即整个训练过程中响应的演变表明,随着训练的增加,模型开始编写更详细和详细的响应,与许多人在ChatGPT等产品中熟悉的GPT模型更相似。这并不奇怪,因为我们已经讨论过,我们正在训练的Alpaca数据集是通过从OpenAI查询GPT模型生成的!这就是正在进行的蒸馏过程。
下一步怎么办
要使用Metaflow训练Dolly,您可以在此处找到我们的存储库。此外,您可以在任何gpu工作流中使用新的@gpu_profile 装饰器。我们很乐意听到您对此的反馈,以便我们能够进一步开发该功能。
如果你喜欢这篇文章,你可能会喜欢我们之前关于基础模型的帖子:使用Stable Diffusion的图像生成和使用Whisper的文本到语音翻译,以及你可能会遇到的基础设施问题。
如果您在开始使用Metaflow和/或试验基础模型和LLM方面需要帮助,请加入Metaflow Slack中的数千名其他ML工程师、数据科学家和平台工程师。
- 65 次浏览
【Metaflow】开源Metaflow,一个以人为中心的数据科学框架
视频号
微信公众号
知识星球
tl;dr Metaflow现在是开源的!从metaflow.org开始。
Netflix将数据科学应用于公司数百个用例,包括优化内容交付和视频编码。Netflix的数据科学家喜欢我们的文化,这种文化使他们能够自主工作,并利用自己的判断独立解决问题。我们希望我们的数据科学家保持好奇心,并承担可能对业务产生重大影响的明智风险。
大约两年前,我们新成立的机器学习基础设施团队开始问我们的数据科学家一个问题:“作为网飞的数据科学家,最难的事情是什么?”我们期待听到与大规模数据和模型相关的答案,也许还有与现代GPU相关的问题。相反,我们听到了一些项目的故事,在这些项目中,第一个版本的生产花费了惊人的时间——主要是因为与软件工程相关的平凡原因。我们听到了许多关于数据访问和基本数据处理困难的故事。我们参加了一些会议,数据科学家与他们的利益相关者讨论了如何在不影响生产的情况下最好地版本化不同版本的模型。我们看到了数据科学家对现代现成的机器学习库是多么兴奋,但我们也看到了这些库作为依赖项随意包含在生产工作流中时所引起的各种问题。
我们意识到,数据科学家想要做的几乎所有事情在技术上都是可行的,但没有什么是足够容易的。因此,作为一个机器学习基础设施团队,我们的工作不会主要是实现新的技术壮举。相反,我们应该让常见的操作变得如此简单,以至于数据科学家甚至不会意识到它们以前很难。我们将专注于通过狂热地以人为中心来提高数据科学家的生产力。
我们如何才能提高数据科学家的生活质量?以下图片开始出现:
我们的数据科学家喜欢能够为他们的项目选择最佳建模方法的自由。他们知道特征工程对许多模型至关重要,所以他们希望控制模型输入和特征工程逻辑。在许多情况下,数据科学家非常渴望在生产中拥有自己的模型,因为这使他们能够更快地对模型进行故障排除和迭代。
另一方面,很少有数据科学家对数据仓库、训练和评分模型的计算平台或工作流调度器的性质有强烈的感觉。从他们的角度来看,这些基础组件最好应该“发挥作用”。如果他们失败了,那么错误消息在他们的工作环境中应该是清晰易懂的。
一个关键的观察结果是,我们的大多数数据科学家都不反对编写Python代码。事实上,简单明了的Python正在迅速成为数据科学的通用语言,因此使用Python比使用特定领域的语言更可取。数据科学家希望保留使用任意、惯用的Python代码来表达业务逻辑的自由,就像他们在Jupyter笔记本上所做的那样。然而,他们不想花太多时间思考对象层次结构、打包问题或处理与他们的工作无关的晦涩API。基础设施应该允许他们行使作为数据科学家的自由,但它应该提供足够的护栏和脚手架,这样他们就不必太担心软件架构。
Metaflow简介
这些观察激发了Metaflow,这是我们以人为中心的数据科学框架。在过去的两年里,Metaflow在Netflix内部被用于构建和管理从自然语言处理到运筹学的数百个数据科学项目。
从设计上讲,Metaflow是一个看似简单的Python库:
数据科学家可以将他们的工作流程构建为步骤的有向非循环图,如上所述。这些步骤可以是任意的Python代码。在这个假设的例子中,流程并行训练一个模型的两个版本,并选择得分最高的一个。
从表面上看,这似乎并不多。有许多现有的框架,如ApacheAirflow或Luigi,它们允许执行由任意Python代码组成的DAG。魔鬼在于Metaflow的许多精心设计的细节:例如,请注意在上面的示例中,数据和模型是如何作为普通Python实例变量存储的。即使代码在分布式计算平台上执行,它们也能工作。由于Metaflow内置的内容寻址工件存储,Metaflow默认支持分布式计算平台。在许多其他框架中,工件的加载和存储留给用户做练习,这迫使他们决定什么应该持久化,什么不应该持久化。元流消除了这种认知开销。
Metaflow充满了这样以人为中心的细节,所有这些都旨在提高数据科学家的生产力。要全面了解Metaflow的所有功能,请查看我们在docs.Metaflow.org上的文档。
亚马逊网络服务上的Metaflow
Netflix的数据仓库包含数百PB的数据。虽然在Metaflow上运行的典型机器学习工作流只涉及这个仓库的一小部分,但它仍然可以处理数TB的数据。
Metaflow是一个云原生框架。它通过设计利用了云的弹性——无论是在计算还是存储方面。多年来,Netflix一直是亚马逊网络服务(AWS)的最大用户之一,我们在处理云,尤其是AWS方面积累了丰富的运营经验和专业知识。对于开源版本,我们与AWS合作,在Metaflow和各种AWS服务之间提供无缝集成。
Metaflow具有内置功能,可以自动快照Amazon S3中的所有代码和数据,这是我们内部Metaflow设置的一个关键价值主张。这为我们提供了一个全面的版本控制和实验跟踪解决方案,而无需任何用户干预,这是任何生产级机器学习基础设施的核心。
此外,Metaflow还捆绑了一个高性能S3客户端,该客户端可以加载高达10Gbps的数据。该客户端在我们的用户中非常受欢迎,他们现在可以以比以前快一个数量级的速度将数据加载到工作流中,从而实现更快的迭代周期。
对于通用数据处理,Metaflow与AWS Batch集成,后者是AWS提供的一个托管的、基于容器的计算平台。用户可以通过在代码中添加一行代码来受益于可无限扩展的计算集群:@batch。对于训练机器学习模型,除了编写自己的函数外,用户还可以选择使用AWS Sagemaker,它提供各种模型的高性能实现,其中许多模型支持分布式训练。
Metaflow通过我们的@conda decorator支持所有常见的现成机器学习框架,这允许用户安全地指定其步骤的外部依赖项。@conda decorator冻结了执行环境,无论是在本地执行还是在云中执行,都能很好地保证再现性。
有关更多详细信息,请阅读本页关于Metaflow与AWS的集成。
从原型到生产
开箱即用,Metaflow提供一流的本地开发体验。它允许数据科学家在笔记本电脑上快速开发和测试代码,类似于任何Python脚本。如果您的工作流支持并行,Metaflow将利用开发机器上所有可用的CPU核心。
我们鼓励用户尽快将工作流程部署到生产中。在我们的案例中,“生产”意味着一个高度可用的集中式DAG调度器Meson,用户可以在其中导出他们的Metaflow运行,以便通过单个命令执行。这使他们能够通过定期快速更新数据来开始测试工作流程,这是一种非常有效的方法来发现模型中的错误和问题。由于Meson没有开源版本,我们正在努力提供与AWS Step Functions类似的集成,这是一种高度可用的工作流调度器。
在像Netflix这样的复杂商业环境中,有很多方法可以使用数据科学工作流程的结果。通常,最终结果被写入一个表,由仪表板使用。有时,生成的模型被部署为微服务,以支持实时推理。链接工作流以使工作流的结果被另一个工作流使用也是很常见的。Metaflow支持所有这些模式,尽管其中一些功能在开源版本中还不可用。
在检查结果时,Metaflow附带了一个笔记本友好的客户端API。我们的大多数数据科学家都是Jupyter笔记本电脑的重度用户,因此我们决定将UI工作重点放在与笔记本电脑的无缝集成上,而不是提供一刀切的Metaflow UI。我们的数据科学家可以在笔记本电脑中构建自定义模型UI,从Metaflow中获取工件,从而提供关于每个模型的正确信息。具有开源Metaflow的AWS Sagemaker笔记本电脑也有类似的体验。
Metaflow入门
Metaflow已经在Netflix内部被广泛采用,今天,我们正在将Metaflow作为一个开源项目提供。
我们希望我们对数据科学家自主性和生产力的愿景也能在Netflix之外引起共鸣。我们欢迎您尝试Metaflow,开始在您的组织中使用它,并参与其开发。
您可以在metaflow.org上找到项目主页,在github.com/Netflix/metaflow上找到代码。metaflow在docs.metaflow上有全面的文档。最快的入门方法是遵循我们的教程。如果你想在动手之前了解更多,你可以观看关于Metaflow的高级别演示,或者更深入地了解Metaflow的内部。
- 117 次浏览
【NLP】Transformers介绍
视频号
微信公众号
知识星球
PyTorch、TensorFlow和JAX的最先进的机器学习。
🤗 Transformers提供了API和工具,可以轻松下载和训练最先进的预训练模型。使用预训练的模型可以降低计算成本和碳足迹,并为从头开始训练模型节省所需的时间和资源。这些模型支持不同模式的常见任务,例如:
- 📝 自然语言处理:文本分类、命名实体识别、问答、语言建模、摘要、翻译、多选和文本生成。
- 🖼️ 计算机视觉:图像分类、物体检测和分割。
- 🗣️ 音频:自动语音识别和音频分类。
- 🐙 多模式:表格问答、光学字符识别、扫描文档中的信息提取、视频分类和视觉问答。
- 🤗 Transformers支持PyTorch、TensorFlow和JAX之间的框架互操作性。这提供了在模型生命的每个阶段使用不同框架的灵活性;在一个框架中用三行代码训练模型,并在另一个框架中将其加载以进行推理。模型也可以导出为ONNX和TorchScript等格式,以便在生产环境中进行部署。
Supported models
- ALBERT (from Google Research and the Toyota Technological Institute at Chicago) released with the paper ALBERT: A Lite BERT for Self-supervised Learning of Language Representations, by Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut.
- ALIGN (from Google Research) released with the paper Scaling Up Visual and Vision-Language Representation Learning With Noisy Text Supervision by Chao Jia, Yinfei Yang, Ye Xia, Yi-Ting Chen, Zarana Parekh, Hieu Pham, Quoc V. Le, Yunhsuan Sung, Zhen Li, Tom Duerig.
- AltCLIP (from BAAI) released with the paper AltCLIP: Altering the Language Encoder in CLIP for Extended Language Capabilities by Chen, Zhongzhi and Liu, Guang and Zhang, Bo-Wen and Ye, Fulong and Yang, Qinghong and Wu, Ledell.
- Audio Spectrogram Transformer (from MIT) released with the paper AST: Audio Spectrogram Transformer by Yuan Gong, Yu-An Chung, James Glass.
- BART (from Facebook) released with the paper BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension by Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov and Luke Zettlemoyer.
- BARThez (from École polytechnique) released with the paper BARThez: a Skilled Pretrained French Sequence-to-Sequence Model by Moussa Kamal Eddine, Antoine J.-P. Tixier, Michalis Vazirgiannis.
- BARTpho (from VinAI Research) released with the paper BARTpho: Pre-trained Sequence-to-Sequence Models for Vietnamese by Nguyen Luong Tran, Duong Minh Le and Dat Quoc Nguyen.
- BEiT (from Microsoft) released with the paper BEiT: BERT Pre-Training of Image Transformers by Hangbo Bao, Li Dong, Furu Wei.
- BERT (from Google) released with the paper BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding by Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova.
- BERT For Sequence Generation (from Google) released with the paper Leveraging Pre-trained Checkpoints for Sequence Generation Tasks by Sascha Rothe, Shashi Narayan, Aliaksei Severyn.
- BERTweet (from VinAI Research) released with the paper BERTweet: A pre-trained language model for English Tweets by Dat Quoc Nguyen, Thanh Vu and Anh Tuan Nguyen.
- BigBird-Pegasus (from Google Research) released with the paper Big Bird: Transformers for Longer Sequences by Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed.
- BigBird-RoBERTa (from Google Research) released with the paper Big Bird: Transformers for Longer Sequences by Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed.
- BioGpt (from Microsoft Research AI4Science) released with the paper BioGPT: generative pre-trained transformer for biomedical text generation and mining by Renqian Luo, Liai Sun, Yingce Xia, Tao Qin, Sheng Zhang, Hoifung Poon and Tie-Yan Liu.
- BiT (from Google AI) released with the paper Big Transfer (BiT): General Visual Representation Learning by Alexander Kolesnikov, Lucas Beyer, Xiaohua Zhai, Joan Puigcerver, Jessica Yung, Sylvain Gelly, Neil Houlsby.
- Blenderbot (from Facebook) released with the paper Recipes for building an open-domain chatbot by Stephen Roller, Emily Dinan, Naman Goyal, Da Ju, Mary Williamson, Yinhan Liu, Jing Xu, Myle Ott, Kurt Shuster, Eric M. Smith, Y-Lan Boureau, Jason Weston.
- BlenderbotSmall (from Facebook) released with the paper Recipes for building an open-domain chatbot by Stephen Roller, Emily Dinan, Naman Goyal, Da Ju, Mary Williamson, Yinhan Liu, Jing Xu, Myle Ott, Kurt Shuster, Eric M. Smith, Y-Lan Boureau, Jason Weston.
- BLIP (from Salesforce) released with the paper BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation by Junnan Li, Dongxu Li, Caiming Xiong, Steven Hoi.
- BLIP-2 (from Salesforce) released with the paper BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models by Junnan Li, Dongxu Li, Silvio Savarese, Steven Hoi.
- BLOOM (from BigScience workshop) released by the BigScience Workshop.
- BORT (from Alexa) released with the paper Optimal Subarchitecture Extraction For BERT by Adrian de Wynter and Daniel J. Perry.
- BridgeTower (from Harbin Institute of Technology/Microsoft Research Asia/Intel Labs) released with the paper BridgeTower: Building Bridges Between Encoders in Vision-Language Representation Learning by Xiao Xu, Chenfei Wu, Shachar Rosenman, Vasudev Lal, Wanxiang Che, Nan Duan.
- ByT5 (from Google Research) released with the paper ByT5: Towards a token-free future with pre-trained byte-to-byte models by Linting Xue, Aditya Barua, Noah Constant, Rami Al-Rfou, Sharan Narang, Mihir Kale, Adam Roberts, Colin Raffel.
- CamemBERT (from Inria/Facebook/Sorbonne) released with the paper CamemBERT: a Tasty French Language Model by Louis Martin, Benjamin Muller, Pedro Javier Ortiz Suárez*, Yoann Dupont, Laurent Romary, Éric Villemonte de la Clergerie, Djamé Seddah and Benoît Sagot.
- CANINE (from Google Research) released with the paper CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation by Jonathan H. Clark, Dan Garrette, Iulia Turc, John Wieting.
- Chinese-CLIP (from OFA-Sys) released with the paper Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese by An Yang, Junshu Pan, Junyang Lin, Rui Men, Yichang Zhang, Jingren Zhou, Chang Zhou.
- CLAP (from LAION-AI) released with the paper Large-scale Contrastive Language-Audio Pretraining with Feature Fusion and Keyword-to-Caption Augmentation by Yusong Wu, Ke Chen, Tianyu Zhang, Yuchen Hui, Taylor Berg-Kirkpatrick, Shlomo Dubnov.
- CLIP (from OpenAI) released with the paper Learning Transferable Visual Models From Natural Language Supervision by Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever.
- CLIPSeg (from University of Göttingen) released with the paper Image Segmentation Using Text and Image Prompts by Timo Lüddecke and Alexander Ecker.
- CodeGen (from Salesforce) released with the paper A Conversational Paradigm for Program Synthesis by Erik Nijkamp, Bo Pang, Hiroaki Hayashi, Lifu Tu, Huan Wang, Yingbo Zhou, Silvio Savarese, Caiming Xiong.
- Conditional DETR (from Microsoft Research Asia) released with the paper Conditional DETR for Fast Training Convergence by Depu Meng, Xiaokang Chen, Zejia Fan, Gang Zeng, Houqiang Li, Yuhui Yuan, Lei Sun, Jingdong Wang.
- ConvBERT (from YituTech) released with the paper ConvBERT: Improving BERT with Span-based Dynamic Convolution by Zihang Jiang, Weihao Yu, Daquan Zhou, Yunpeng Chen, Jiashi Feng, Shuicheng Yan.
- ConvNeXT (from Facebook AI) released with the paper A ConvNet for the 2020s by Zhuang Liu, Hanzi Mao, Chao-Yuan Wu, Christoph Feichtenhofer, Trevor Darrell, Saining Xie.
- ConvNeXTV2 (from Facebook AI) released with the paper ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders by Sanghyun Woo, Shoubhik Debnath, Ronghang Hu, Xinlei Chen, Zhuang Liu, In So Kweon, Saining Xie.
- CPM (from Tsinghua University) released with the paper CPM: A Large-scale Generative Chinese Pre-trained Language Model by Zhengyan Zhang, Xu Han, Hao Zhou, Pei Ke, Yuxian Gu, Deming Ye, Yujia Qin, Yusheng Su, Haozhe Ji, Jian Guan, Fanchao Qi, Xiaozhi Wang, Yanan Zheng, Guoyang Zeng, Huanqi Cao, Shengqi Chen, Daixuan Li, Zhenbo Sun, Zhiyuan Liu, Minlie Huang, Wentao Han, Jie Tang, Juanzi Li, Xiaoyan Zhu, Maosong Sun.
- CPM-Ant (from OpenBMB) released by the OpenBMB.
- CTRL (from Salesforce) released with the paper CTRL: A Conditional Transformer Language Model for Controllable Generation by Nitish Shirish Keskar, Bryan McCann, Lav R. Varshney, Caiming Xiong and Richard Socher.
- CvT (from Microsoft) released with the paper CvT: Introducing Convolutions to Vision Transformers by Haiping Wu, Bin Xiao, Noel Codella, Mengchen Liu, Xiyang Dai, Lu Yuan, Lei Zhang.
- Data2Vec (from Facebook) released with the paper Data2Vec: A General Framework for Self-supervised Learning in Speech, Vision and Language by Alexei Baevski, Wei-Ning Hsu, Qiantong Xu, Arun Babu, Jiatao Gu, Michael Auli.
- DeBERTa (from Microsoft) released with the paper DeBERTa: Decoding-enhanced BERT with Disentangled Attention by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen.
- DeBERTa-v2 (from Microsoft) released with the paper DeBERTa: Decoding-enhanced BERT with Disentangled Attention by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen.
- Decision Transformer (from Berkeley/Facebook/Google) released with the paper Decision Transformer: Reinforcement Learning via Sequence Modeling by Lili Chen, Kevin Lu, Aravind Rajeswaran, Kimin Lee, Aditya Grover, Michael Laskin, Pieter Abbeel, Aravind Srinivas, Igor Mordatch.
- Deformable DETR (from SenseTime Research) released with the paper Deformable DETR: Deformable Transformers for End-to-End Object Detection by Xizhou Zhu, Weijie Su, Lewei Lu, Bin Li, Xiaogang Wang, Jifeng Dai.
- DeiT (from Facebook) released with the paper Training data-efficient image transformers & distillation through attention by Hugo Touvron, Matthieu Cord, Matthijs Douze, Francisco Massa, Alexandre Sablayrolles, Hervé Jégou.
- DePlot (from Google AI) released with the paper DePlot: One-shot visual language reasoning by plot-to-table translation by Fangyu Liu, Julian Martin Eisenschlos, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Wenhu Chen, Nigel Collier, Yasemin Altun.
- DETA (from The University of Texas at Austin) released with the paper NMS Strikes Back by Jeffrey Ouyang-Zhang, Jang Hyun Cho, Xingyi Zhou, Philipp Krähenbühl.
- DETR (from Facebook) released with the paper End-to-End Object Detection with Transformers by Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, Sergey Zagoruyko.
- DialoGPT (from Microsoft Research) released with the paper DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation by Yizhe Zhang, Siqi Sun, Michel Galley, Yen-Chun Chen, Chris Brockett, Xiang Gao, Jianfeng Gao, Jingjing Liu, Bill Dolan.
- DiNAT (from SHI Labs) released with the paper Dilated Neighborhood Attention Transformer by Ali Hassani and Humphrey Shi.
- DistilBERT (from HuggingFace), released together with the paper DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter by Victor Sanh, Lysandre Debut and Thomas Wolf. The same method has been applied to compress GPT2 into DistilGPT2, RoBERTa into DistilRoBERTa, Multilingual BERT into DistilmBERT and a German version of DistilBERT.
- DiT (from Microsoft Research) released with the paper DiT: Self-supervised Pre-training for Document Image Transformer by Junlong Li, Yiheng Xu, Tengchao Lv, Lei Cui, Cha Zhang, Furu Wei.
- Donut (from NAVER), released together with the paper OCR-free Document Understanding Transformer by Geewook Kim, Teakgyu Hong, Moonbin Yim, Jeongyeon Nam, Jinyoung Park, Jinyeong Yim, Wonseok Hwang, Sangdoo Yun, Dongyoon Han, Seunghyun Park.
- DPR (from Facebook) released with the paper Dense Passage Retrieval for Open-Domain Question Answering by Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, and Wen-tau Yih.
- DPT (from Intel Labs) released with the paper Vision Transformers for Dense Prediction by René Ranftl, Alexey Bochkovskiy, Vladlen Koltun.
- EfficientFormer (from Snap Research) released with the paper EfficientFormer: Vision Transformers at MobileNetSpeed by Yanyu Li, Geng Yuan, Yang Wen, Ju Hu, Georgios Evangelidis, Sergey Tulyakov, Yanzhi Wang, Jian Ren.
- EfficientNet (from Google Brain) released with the paper EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks by Mingxing Tan, Quoc V. Le.
- ELECTRA (from Google Research/Stanford University) released with the paper ELECTRA: Pre-training text encoders as discriminators rather than generators by Kevin Clark, Minh-Thang Luong, Quoc V. Le, Christopher D. Manning.
- EncoderDecoder (from Google Research) released with the paper Leveraging Pre-trained Checkpoints for Sequence Generation Tasks by Sascha Rothe, Shashi Narayan, Aliaksei Severyn.
- ERNIE (from Baidu) released with the paper ERNIE: Enhanced Representation through Knowledge Integration by Yu Sun, Shuohuan Wang, Yukun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xin Tian, Danxiang Zhu, Hao Tian, Hua Wu.
- ErnieM (from Baidu) released with the paper ERNIE-M: Enhanced Multilingual Representation by Aligning Cross-lingual Semantics with Monolingual Corpora by Xuan Ouyang, Shuohuan Wang, Chao Pang, Yu Sun, Hao Tian, Hua Wu, Haifeng Wang.
- ESM (from Meta AI) are transformer protein language models. ESM-1b was released with the paper Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences by Alexander Rives, Joshua Meier, Tom Sercu, Siddharth Goyal, Zeming Lin, Jason Liu, Demi Guo, Myle Ott, C. Lawrence Zitnick, Jerry Ma, and Rob Fergus. ESM-1v was released with the paper Language models enable zero-shot prediction of the effects of mutations on protein function by Joshua Meier, Roshan Rao, Robert Verkuil, Jason Liu, Tom Sercu and Alexander Rives. ESM-2 and ESMFold were released with the paper Language models of protein sequences at the scale of evolution enable accurate structure prediction by Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Sal Candido, Alexander Rives.
- FLAN-T5 (from Google AI) released in the repository google-research/t5x by Hyung Won Chung, Le Hou, Shayne Longpre, Barret Zoph, Yi Tay, William Fedus, Eric Li, Xuezhi Wang, Mostafa Dehghani, Siddhartha Brahma, Albert Webson, Shixiang Shane Gu, Zhuyun Dai, Mirac Suzgun, Xinyun Chen, Aakanksha Chowdhery, Sharan Narang, Gaurav Mishra, Adams Yu, Vincent Zhao, Yanping Huang, Andrew Dai, Hongkun Yu, Slav Petrov, Ed H. Chi, Jeff Dean, Jacob Devlin, Adam Roberts, Denny Zhou, Quoc V. Le, and Jason Wei
- FLAN-UL2 (from Google AI) released in the repository google-research/t5x by Hyung Won Chung, Le Hou, Shayne Longpre, Barret Zoph, Yi Tay, William Fedus, Eric Li, Xuezhi Wang, Mostafa Dehghani, Siddhartha Brahma, Albert Webson, Shixiang Shane Gu, Zhuyun Dai, Mirac Suzgun, Xinyun Chen, Aakanksha Chowdhery, Sharan Narang, Gaurav Mishra, Adams Yu, Vincent Zhao, Yanping Huang, Andrew Dai, Hongkun Yu, Slav Petrov, Ed H. Chi, Jeff Dean, Jacob Devlin, Adam Roberts, Denny Zhou, Quoc V. Le, and Jason Wei
- FlauBERT (from CNRS) released with the paper FlauBERT: Unsupervised Language Model Pre-training for French by Hang Le, Loïc Vial, Jibril Frej, Vincent Segonne, Maximin Coavoux, Benjamin Lecouteux, Alexandre Allauzen, Benoît Crabbé, Laurent Besacier, Didier Schwab.
- FLAVA (from Facebook AI) released with the paper FLAVA: A Foundational Language And Vision Alignment Model by Amanpreet Singh, Ronghang Hu, Vedanuj Goswami, Guillaume Couairon, Wojciech Galuba, Marcus Rohrbach, and Douwe Kiela.
- FNet (from Google Research) released with the paper FNet: Mixing Tokens with Fourier Transforms by James Lee-Thorp, Joshua Ainslie, Ilya Eckstein, Santiago Ontanon.
- FocalNet (from Microsoft Research) released with the paper Focal Modulation Networks by Jianwei Yang, Chunyuan Li, Xiyang Dai, Lu Yuan, Jianfeng Gao.
- Funnel Transformer (from CMU/Google Brain) released with the paper Funnel-Transformer: Filtering out Sequential Redundancy for Efficient Language Processing by Zihang Dai, Guokun Lai, Yiming Yang, Quoc V. Le.
- GIT (from Microsoft Research) released with the paper GIT: A Generative Image-to-text Transformer for Vision and Language by Jianfeng Wang, Zhengyuan Yang, Xiaowei Hu, Linjie Li, Kevin Lin, Zhe Gan, Zicheng Liu, Ce Liu, Lijuan Wang.
- GLPN (from KAIST) released with the paper Global-Local Path Networks for Monocular Depth Estimation with Vertical CutDepth by Doyeon Kim, Woonghyun Ga, Pyungwhan Ahn, Donggyu Joo, Sehwan Chun, Junmo Kim.
- GPT (from OpenAI) released with the paper Improving Language Understanding by Generative Pre-Training by Alec Radford, Karthik Narasimhan, Tim Salimans and Ilya Sutskever.
- GPT Neo (from EleutherAI) released in the repository EleutherAI/gpt-neo by Sid Black, Stella Biderman, Leo Gao, Phil Wang and Connor Leahy.
- GPT NeoX (from EleutherAI) released with the paper GPT-NeoX-20B: An Open-Source Autoregressive Language Model by Sid Black, Stella Biderman, Eric Hallahan, Quentin Anthony, Leo Gao, Laurence Golding, Horace He, Connor Leahy, Kyle McDonell, Jason Phang, Michael Pieler, USVSN Sai Prashanth, Shivanshu Purohit, Laria Reynolds, Jonathan Tow, Ben Wang, Samuel Weinbach
- GPT NeoX Japanese (from ABEJA) released by Shinya Otani, Takayoshi Makabe, Anuj Arora, and Kyo Hattori.
- GPT-2 (from OpenAI) released with the paper Language Models are Unsupervised Multitask Learners by Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodeiand Ilya Sutskever.
- GPT-J (from EleutherAI) released in the repository kingoflolz/mesh-transformer-jax by Ben Wang and Aran Komatsuzaki.
- GPT-Sw3 (from AI-Sweden) released with the paper Lessons Learned from GPT-SW3: Building the First Large-Scale Generative Language Model for Swedish by Ariel Ekgren, Amaru Cuba Gyllensten, Evangelia Gogoulou, Alice Heiman, Severine Verlinden, Joey Öhman, Fredrik Carlsson, Magnus Sahlgren.
- GPTBigCode (from BigCode) released with the paper SantaCoder: don’t reach for the stars! by Loubna Ben Allal, Raymond Li, Denis Kocetkov, Chenghao Mou, Christopher Akiki, Carlos Munoz Ferrandis, Niklas Muennighoff, Mayank Mishra, Alex Gu, Manan Dey, Logesh Kumar Umapathi, Carolyn Jane Anderson, Yangtian Zi, Joel Lamy Poirier, Hailey Schoelkopf, Sergey Troshin, Dmitry Abulkhanov, Manuel Romero, Michael Lappert, Francesco De Toni, Bernardo García del Río, Qian Liu, Shamik Bose, Urvashi Bhattacharyya, Terry Yue Zhuo, Ian Yu, Paulo Villegas, Marco Zocca, Sourab Mangrulkar, David Lansky, Huu Nguyen, Danish Contractor, Luis Villa, Jia Li, Dzmitry Bahdanau, Yacine Jernite, Sean Hughes, Daniel Fried, Arjun Guha, Harm de Vries, Leandro von Werra.
- GPTSAN-japanese released in the repository tanreinama/GPTSAN by Toshiyuki Sakamoto(tanreinama).
- Graphormer (from Microsoft) released with the paper Do Transformers Really Perform Bad for Graph Representation? by Chengxuan Ying, Tianle Cai, Shengjie Luo, Shuxin Zheng, Guolin Ke, Di He, Yanming Shen, Tie-Yan Liu.
- GroupViT (from UCSD, NVIDIA) released with the paper GroupViT: Semantic Segmentation Emerges from Text Supervision by Jiarui Xu, Shalini De Mello, Sifei Liu, Wonmin Byeon, Thomas Breuel, Jan Kautz, Xiaolong Wang.
- Hubert (from Facebook) released with the paper HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units by Wei-Ning Hsu, Benjamin Bolte, Yao-Hung Hubert Tsai, Kushal Lakhotia, Ruslan Salakhutdinov, Abdelrahman Mohamed.
- I-BERT (from Berkeley) released with the paper I-BERT: Integer-only BERT Quantization by Sehoon Kim, Amir Gholami, Zhewei Yao, Michael W. Mahoney, Kurt Keutzer.
- ImageGPT (from OpenAI) released with the paper Generative Pretraining from Pixels by Mark Chen, Alec Radford, Rewon Child, Jeffrey Wu, Heewoo Jun, David Luan, Ilya Sutskever.
- Informer (from Beihang University, UC Berkeley, Rutgers University, SEDD Company) released with the paper Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting by Haoyi Zhou, Shanghang Zhang, Jieqi Peng, Shuai Zhang, Jianxin Li, Hui Xiong, and Wancai Zhang.
- Jukebox (from OpenAI) released with the paper Jukebox: A Generative Model for Music by Prafulla Dhariwal, Heewoo Jun, Christine Payne, Jong Wook Kim, Alec Radford, Ilya Sutskever.
- LayoutLM (from Microsoft Research Asia) released with the paper LayoutLM: Pre-training of Text and Layout for Document Image Understanding by Yiheng Xu, Minghao Li, Lei Cui, Shaohan Huang, Furu Wei, Ming Zhou.
- LayoutLMv2 (from Microsoft Research Asia) released with the paper LayoutLMv2: Multi-modal Pre-training for Visually-Rich Document Understanding by Yang Xu, Yiheng Xu, Tengchao Lv, Lei Cui, Furu Wei, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Wanxiang Che, Min Zhang, Lidong Zhou.
- LayoutLMv3 (from Microsoft Research Asia) released with the paper LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking by Yupan Huang, Tengchao Lv, Lei Cui, Yutong Lu, Furu Wei.
- LayoutXLM (from Microsoft Research Asia) released with the paper LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding by Yiheng Xu, Tengchao Lv, Lei Cui, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Furu Wei.
- LED (from AllenAI) released with the paper Longformer: The Long-Document Transformer by Iz Beltagy, Matthew E. Peters, Arman Cohan.
- LeViT (from Meta AI) released with the paper LeViT: A Vision Transformer in ConvNet’s Clothing for Faster Inference by Ben Graham, Alaaeldin El-Nouby, Hugo Touvron, Pierre Stock, Armand Joulin, Hervé Jégou, Matthijs Douze.
- LiLT (from South China University of Technology) released with the paper LiLT: A Simple yet Effective Language-Independent Layout Transformer for Structured Document Understanding by Jiapeng Wang, Lianwen Jin, Kai Ding.
- LLaMA (from The FAIR team of Meta AI) released with the paper LLaMA: Open and Efficient Foundation Language Models by Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, Aurelien Rodriguez, Armand Joulin, Edouard Grave, Guillaume Lample.
- Longformer (from AllenAI) released with the paper Longformer: The Long-Document Transformer by Iz Beltagy, Matthew E. Peters, Arman Cohan.
- LongT5 (from Google AI) released with the paper LongT5: Efficient Text-To-Text Transformer for Long Sequences by Mandy Guo, Joshua Ainslie, David Uthus, Santiago Ontanon, Jianmo Ni, Yun-Hsuan Sung, Yinfei Yang.
- LUKE (from Studio Ousia) released with the paper LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention by Ikuya Yamada, Akari Asai, Hiroyuki Shindo, Hideaki Takeda, Yuji Matsumoto.
- LXMERT (from UNC Chapel Hill) released with the paper LXMERT: Learning Cross-Modality Encoder Representations from Transformers for Open-Domain Question Answering by Hao Tan and Mohit Bansal.
- M-CTC-T (from Facebook) released with the paper Pseudo-Labeling For Massively Multilingual Speech Recognition by Loren Lugosch, Tatiana Likhomanenko, Gabriel Synnaeve, and Ronan Collobert.
- M2M100 (from Facebook) released with the paper Beyond English-Centric Multilingual Machine Translation by Angela Fan, Shruti Bhosale, Holger Schwenk, Zhiyi Ma, Ahmed El-Kishky, Siddharth Goyal, Mandeep Baines, Onur Celebi, Guillaume Wenzek, Vishrav Chaudhary, Naman Goyal, Tom Birch, Vitaliy Liptchinsky, Sergey Edunov, Edouard Grave, Michael Auli, Armand Joulin.
- MarianMT Machine translation models trained using OPUS data by Jörg Tiedemann. The Marian Framework is being developed by the Microsoft Translator Team.
- MarkupLM (from Microsoft Research Asia) released with the paper MarkupLM: Pre-training of Text and Markup Language for Visually-rich Document Understanding by Junlong Li, Yiheng Xu, Lei Cui, Furu Wei.
- Mask2Former (from FAIR and UIUC) released with the paper Masked-attention Mask Transformer for Universal Image Segmentation by Bowen Cheng, Ishan Misra, Alexander G. Schwing, Alexander Kirillov, Rohit Girdhar.
- MaskFormer (from Meta and UIUC) released with the paper Per-Pixel Classification is Not All You Need for Semantic Segmentation by Bowen Cheng, Alexander G. Schwing, Alexander Kirillov.
- MatCha (from Google AI) released with the paper MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering by Fangyu Liu, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Yasemin Altun, Nigel Collier, Julian Martin Eisenschlos.
- mBART (from Facebook) released with the paper Multilingual Denoising Pre-training for Neural Machine Translation by Yinhan Liu, Jiatao Gu, Naman Goyal, Xian Li, Sergey Edunov, Marjan Ghazvininejad, Mike Lewis, Luke Zettlemoyer.
- mBART-50 (from Facebook) released with the paper Multilingual Translation with Extensible Multilingual Pretraining and Finetuning by Yuqing Tang, Chau Tran, Xian Li, Peng-Jen Chen, Naman Goyal, Vishrav Chaudhary, Jiatao Gu, Angela Fan.
- MEGA (from Facebook) released with the paper Mega: Moving Average Equipped Gated Attention by Xuezhe Ma, Chunting Zhou, Xiang Kong, Junxian He, Liangke Gui, Graham Neubig, Jonathan May, and Luke Zettlemoyer.
- Megatron-BERT (from NVIDIA) released with the paper Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro.
- Megatron-GPT2 (from NVIDIA) released with the paper Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro.
- MGP-STR (from Alibaba Research) released with the paper Multi-Granularity Prediction for Scene Text Recognition by Peng Wang, Cheng Da, and Cong Yao.
- mLUKE (from Studio Ousia) released with the paper mLUKE: The Power of Entity Representations in Multilingual Pretrained Language Models by Ryokan Ri, Ikuya Yamada, and Yoshimasa Tsuruoka.
- MobileBERT (from CMU/Google Brain) released with the paper MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices by Zhiqing Sun, Hongkun Yu, Xiaodan Song, Renjie Liu, Yiming Yang, and Denny Zhou.
- MobileNetV1 (from Google Inc.) released with the paper MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications by Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam.
- MobileNetV2 (from Google Inc.) released with the paper MobileNetV2: Inverted Residuals and Linear Bottlenecks by Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, Liang-Chieh Chen.
- MobileViT (from Apple) released with the paper MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer by Sachin Mehta and Mohammad Rastegari.
- MPNet (from Microsoft Research) released with the paper MPNet: Masked and Permuted Pre-training for Language Understanding by Kaitao Song, Xu Tan, Tao Qin, Jianfeng Lu, Tie-Yan Liu.
- MT5 (from Google AI) released with the paper mT5: A massively multilingual pre-trained text-to-text transformer by Linting Xue, Noah Constant, Adam Roberts, Mihir Kale, Rami Al-Rfou, Aditya Siddhant, Aditya Barua, Colin Raffel.
- MVP (from RUC AI Box) released with the paper MVP: Multi-task Supervised Pre-training for Natural Language Generation by Tianyi Tang, Junyi Li, Wayne Xin Zhao and Ji-Rong Wen.
- NAT (from SHI Labs) released with the paper Neighborhood Attention Transformer by Ali Hassani, Steven Walton, Jiachen Li, Shen Li, and Humphrey Shi.
- Nezha (from Huawei Noah’s Ark Lab) released with the paper NEZHA: Neural Contextualized Representation for Chinese Language Understanding by Junqiu Wei, Xiaozhe Ren, Xiaoguang Li, Wenyong Huang, Yi Liao, Yasheng Wang, Jiashu Lin, Xin Jiang, Xiao Chen and Qun Liu.
- NLLB (from Meta) released with the paper No Language Left Behind: Scaling Human-Centered Machine Translation by the NLLB team.
- NLLB-MOE (from Meta) released with the paper No Language Left Behind: Scaling Human-Centered Machine Translation by the NLLB team.
- Nyströmformer (from the University of Wisconsin - Madison) released with the paper Nyströmformer: A Nyström-Based Algorithm for Approximating Self-Attention by Yunyang Xiong, Zhanpeng Zeng, Rudrasis Chakraborty, Mingxing Tan, Glenn Fung, Yin Li, Vikas Singh.
- OneFormer (from SHI Labs) released with the paper OneFormer: One Transformer to Rule Universal Image Segmentation by Jitesh Jain, Jiachen Li, MangTik Chiu, Ali Hassani, Nikita Orlov, Humphrey Shi.
- OpenLlama (from s-JoL) released in Open-Llama.
- OPT (from Meta AI) released with the paper OPT: Open Pre-trained Transformer Language Models by Susan Zhang, Stephen Roller, Naman Goyal, Mikel Artetxe, Moya Chen, Shuohui Chen et al.
- OWL-ViT (from Google AI) released with the paper Simple Open-Vocabulary Object Detection with Vision Transformers by Matthias Minderer, Alexey Gritsenko, Austin Stone, Maxim Neumann, Dirk Weissenborn, Alexey Dosovitskiy, Aravindh Mahendran, Anurag Arnab, Mostafa Dehghani, Zhuoran Shen, Xiao Wang, Xiaohua Zhai, Thomas Kipf, and Neil Houlsby.
- Pegasus (from Google) released with the paper PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization by Jingqing Zhang, Yao Zhao, Mohammad Saleh and Peter J. Liu.
- PEGASUS-X (from Google) released with the paper Investigating Efficiently Extending Transformers for Long Input Summarization by Jason Phang, Yao Zhao, and Peter J. Liu.
- Perceiver IO (from Deepmind) released with the paper Perceiver IO: A General Architecture for Structured Inputs & Outputs by Andrew Jaegle, Sebastian Borgeaud, Jean-Baptiste Alayrac, Carl Doersch, Catalin Ionescu, David Ding, Skanda Koppula, Daniel Zoran, Andrew Brock, Evan Shelhamer, Olivier Hénaff, Matthew M. Botvinick, Andrew Zisserman, Oriol Vinyals, João Carreira.
- PhoBERT (from VinAI Research) released with the paper PhoBERT: Pre-trained language models for Vietnamese by Dat Quoc Nguyen and Anh Tuan Nguyen.
- Pix2Struct (from Google) released with the paper Pix2Struct: Screenshot Parsing as Pretraining for Visual Language Understanding by Kenton Lee, Mandar Joshi, Iulia Turc, Hexiang Hu, Fangyu Liu, Julian Eisenschlos, Urvashi Khandelwal, Peter Shaw, Ming-Wei Chang, Kristina Toutanova.
- PLBart (from UCLA NLP) released with the paper Unified Pre-training for Program Understanding and Generation by Wasi Uddin Ahmad, Saikat Chakraborty, Baishakhi Ray, Kai-Wei Chang.
- PoolFormer (from Sea AI Labs) released with the paper MetaFormer is Actually What You Need for Vision by Yu, Weihao and Luo, Mi and Zhou, Pan and Si, Chenyang and Zhou, Yichen and Wang, Xinchao and Feng, Jiashi and Yan, Shuicheng.
- ProphetNet (from Microsoft Research) released with the paper ProphetNet: Predicting Future N-gram for Sequence-to-Sequence Pre-training by Yu Yan, Weizhen Qi, Yeyun Gong, Dayiheng Liu, Nan Duan, Jiusheng Chen, Ruofei Zhang and Ming Zhou.
- QDQBert (from NVIDIA) released with the paper Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation by Hao Wu, Patrick Judd, Xiaojie Zhang, Mikhail Isaev and Paulius Micikevicius.
- RAG (from Facebook) released with the paper Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks by Patrick Lewis, Ethan Perez, Aleksandara Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela.
- REALM (from Google Research) released with the paper REALM: Retrieval-Augmented Language Model Pre-Training by Kelvin Guu, Kenton Lee, Zora Tung, Panupong Pasupat and Ming-Wei Chang.
- Reformer (from Google Research) released with the paper Reformer: The Efficient Transformer by Nikita Kitaev, Łukasz Kaiser, Anselm Levskaya.
- RegNet (from META Platforms) released with the paper Designing Network Design Space by Ilija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, Piotr Dollár.
- RemBERT (from Google Research) released with the paper Rethinking embedding coupling in pre-trained language models by Hyung Won Chung, Thibault Févry, Henry Tsai, M. Johnson, Sebastian Ruder.
- ResNet (from Microsoft Research) released with the paper Deep Residual Learning for Image Recognition by Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun.
- RoBERTa (from Facebook), released together with the paper RoBERTa: A Robustly Optimized BERT Pretraining Approach by Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov.
- RoBERTa-PreLayerNorm (from Facebook) released with the paper fairseq: A Fast, Extensible Toolkit for Sequence Modeling by Myle Ott, Sergey Edunov, Alexei Baevski, Angela Fan, Sam Gross, Nathan Ng, David Grangier, Michael Auli.
- RoCBert (from WeChatAI) released with the paper RoCBert: Robust Chinese Bert with Multimodal Contrastive Pretraining by HuiSu, WeiweiShi, XiaoyuShen, XiaoZhou, TuoJi, JiaruiFang, JieZhou.
- RoFormer (from ZhuiyiTechnology), released together with the paper RoFormer: Enhanced Transformer with Rotary Position Embedding by Jianlin Su and Yu Lu and Shengfeng Pan and Bo Wen and Yunfeng Liu.
- RWKV (from Bo Peng), released on this repo by Bo Peng.
- SegFormer (from NVIDIA) released with the paper SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers by Enze Xie, Wenhai Wang, Zhiding Yu, Anima Anandkumar, Jose M. Alvarez, Ping Luo.
- Segment Anything (from Meta AI) released with the paper Segment Anything by Alexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao, Spencer Whitehead, Alex Berg, Wan-Yen Lo, Piotr Dollar, Ross Girshick.
- SEW (from ASAPP) released with the paper Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition by Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi.
- SEW-D (from ASAPP) released with the paper Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition by Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi.
- SpeechT5 (from Microsoft Research) released with the paper SpeechT5: Unified-Modal Encoder-Decoder Pre-Training for Spoken Language Processing by Junyi Ao, Rui Wang, Long Zhou, Chengyi Wang, Shuo Ren, Yu Wu, Shujie Liu, Tom Ko, Qing Li, Yu Zhang, Zhihua Wei, Yao Qian, Jinyu Li, Furu Wei.
- SpeechToTextTransformer (from Facebook), released together with the paper fairseq S2T: Fast Speech-to-Text Modeling with fairseq by Changhan Wang, Yun Tang, Xutai Ma, Anne Wu, Dmytro Okhonko, Juan Pino.
- SpeechToTextTransformer2 (from Facebook), released together with the paper Large-Scale Self- and Semi-Supervised Learning for Speech Translation by Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau.
- Splinter (from Tel Aviv University), released together with the paper Few-Shot Question Answering by Pretraining Span Selection by Ori Ram, Yuval Kirstain, Jonathan Berant, Amir Globerson, Omer Levy.
- SqueezeBERT (from Berkeley) released with the paper SqueezeBERT: What can computer vision teach NLP about efficient neural networks? by Forrest N. Iandola, Albert E. Shaw, Ravi Krishna, and Kurt W. Keutzer.
- Swin Transformer (from Microsoft) released with the paper Swin Transformer: Hierarchical Vision Transformer using Shifted Windows by Ze Liu, Yutong Lin, Yue Cao, Han Hu, Yixuan Wei, Zheng Zhang, Stephen Lin, Baining Guo.
- Swin Transformer V2 (from Microsoft) released with the paper Swin Transformer V2: Scaling Up Capacity and Resolution by Ze Liu, Han Hu, Yutong Lin, Zhuliang Yao, Zhenda Xie, Yixuan Wei, Jia Ning, Yue Cao, Zheng Zhang, Li Dong, Furu Wei, Baining Guo.
- Swin2SR (from University of Würzburg) released with the paper Swin2SR: SwinV2 Transformer for Compressed Image Super-Resolution and Restoration by Marcos V. Conde, Ui-Jin Choi, Maxime Burchi, Radu Timofte.
- SwitchTransformers (from Google) released with the paper Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity by William Fedus, Barret Zoph, Noam Shazeer.
- T5 (from Google AI) released with the paper Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer by Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu.
- T5v1.1 (from Google AI) released in the repository google-research/text-to-text-transfer-transformer by Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu.
- Table Transformer (from Microsoft Research) released with the paper PubTables-1M: Towards Comprehensive Table Extraction From Unstructured Documents by Brandon Smock, Rohith Pesala, Robin Abraham.
- TAPAS (from Google AI) released with the paper TAPAS: Weakly Supervised Table Parsing via Pre-training by Jonathan Herzig, Paweł Krzysztof Nowak, Thomas Müller, Francesco Piccinno and Julian Martin Eisenschlos.
- TAPEX (from Microsoft Research) released with the paper TAPEX: Table Pre-training via Learning a Neural SQL Executor by Qian Liu, Bei Chen, Jiaqi Guo, Morteza Ziyadi, Zeqi Lin, Weizhu Chen, Jian-Guang Lou.
- Time Series Transformer (from HuggingFace).
- TimeSformer (from Facebook) released with the paper Is Space-Time Attention All You Need for Video Understanding? by Gedas Bertasius, Heng Wang, Lorenzo Torresani.
- Trajectory Transformer (from the University of California at Berkeley) released with the paper Offline Reinforcement Learning as One Big Sequence Modeling Problem by Michael Janner, Qiyang Li, Sergey Levine
- Transformer-XL (from Google/CMU) released with the paper Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context by Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov.
- TrOCR (from Microsoft), released together with the paper TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models by Minghao Li, Tengchao Lv, Lei Cui, Yijuan Lu, Dinei Florencio, Cha Zhang, Zhoujun Li, Furu Wei.
- TVLT (from UNC Chapel Hill) released with the paper TVLT: Textless Vision-Language Transformer by Zineng Tang, Jaemin Cho, Yixin Nie, Mohit Bansal.
- UL2 (from Google Research) released with the paper Unifying Language Learning Paradigms by Yi Tay, Mostafa Dehghani, Vinh Q. Tran, Xavier Garcia, Dara Bahri, Tal Schuster, Huaixiu Steven Zheng, Neil Houlsby, Donald Metzler
- UniSpeech (from Microsoft Research) released with the paper UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data by Chengyi Wang, Yu Wu, Yao Qian, Kenichi Kumatani, Shujie Liu, Furu Wei, Michael Zeng, Xuedong Huang.
- UniSpeechSat (from Microsoft Research) released with the paper UNISPEECH-SAT: UNIVERSAL SPEECH REPRESENTATION LEARNING WITH SPEAKER AWARE PRE-TRAINING by Sanyuan Chen, Yu Wu, Chengyi Wang, Zhengyang Chen, Zhuo Chen, Shujie Liu, Jian Wu, Yao Qian, Furu Wei, Jinyu Li, Xiangzhan Yu.
- UPerNet (from Peking University) released with the paper Unified Perceptual Parsing for Scene Understanding by Tete Xiao, Yingcheng Liu, Bolei Zhou, Yuning Jiang, Jian Sun.
- VAN (from Tsinghua University and Nankai University) released with the paper Visual Attention Network by Meng-Hao Guo, Cheng-Ze Lu, Zheng-Ning Liu, Ming-Ming Cheng, Shi-Min Hu.
- VideoMAE (from Multimedia Computing Group, Nanjing University) released with the paper VideoMAE: Masked Autoencoders are Data-Efficient Learners for Self-Supervised Video Pre-Training by Zhan Tong, Yibing Song, Jue Wang, Limin Wang.
- ViLT (from NAVER AI Lab/Kakao Enterprise/Kakao Brain) released with the paper ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision by Wonjae Kim, Bokyung Son, Ildoo Kim.
- Vision Transformer (ViT) (from Google AI) released with the paper An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale by Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby.
- VisualBERT (from UCLA NLP) released with the paper VisualBERT: A Simple and Performant Baseline for Vision and Language by Liunian Harold Li, Mark Yatskar, Da Yin, Cho-Jui Hsieh, Kai-Wei Chang.
- ViT Hybrid (from Google AI) released with the paper An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale by Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby.
- ViTMAE (from Meta AI) released with the paper Masked Autoencoders Are Scalable Vision Learners by Kaiming He, Xinlei Chen, Saining Xie, Yanghao Li, Piotr Dollár, Ross Girshick.
- ViTMSN (from Meta AI) released with the paper Masked Siamese Networks for Label-Efficient Learning by Mahmoud Assran, Mathilde Caron, Ishan Misra, Piotr Bojanowski, Florian Bordes, Pascal Vincent, Armand Joulin, Michael Rabbat, Nicolas Ballas.
- Wav2Vec2 (from Facebook AI) released with the paper wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations by Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli.
- Wav2Vec2-Conformer (from Facebook AI) released with the paper FAIRSEQ S2T: Fast Speech-to-Text Modeling with FAIRSEQ by Changhan Wang, Yun Tang, Xutai Ma, Anne Wu, Sravya Popuri, Dmytro Okhonko, Juan Pino.
- Wav2Vec2Phoneme (from Facebook AI) released with the paper Simple and Effective Zero-shot Cross-lingual Phoneme Recognition by Qiantong Xu, Alexei Baevski, Michael Auli.
- WavLM (from Microsoft Research) released with the paper WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing by Sanyuan Chen, Chengyi Wang, Zhengyang Chen, Yu Wu, Shujie Liu, Zhuo Chen, Jinyu Li, Naoyuki Kanda, Takuya Yoshioka, Xiong Xiao, Jian Wu, Long Zhou, Shuo Ren, Yanmin Qian, Yao Qian, Jian Wu, Michael Zeng, Furu Wei.
- Whisper (from OpenAI) released with the paper Robust Speech Recognition via Large-Scale Weak Supervision by Alec Radford, Jong Wook Kim, Tao Xu, Greg Brockman, Christine McLeavey, Ilya Sutskever.
- X-CLIP (from Microsoft Research) released with the paper Expanding Language-Image Pretrained Models for General Video Recognition by Bolin Ni, Houwen Peng, Minghao Chen, Songyang Zhang, Gaofeng Meng, Jianlong Fu, Shiming Xiang, Haibin Ling.
- X-MOD (from Meta AI) released with the paper Lifting the Curse of Multilinguality by Pre-training Modular Transformers by Jonas Pfeiffer, Naman Goyal, Xi Lin, Xian Li, James Cross, Sebastian Riedel, Mikel Artetxe.
- XGLM (From Facebook AI) released with the paper Few-shot Learning with Multilingual Language Models by Xi Victoria Lin, Todor Mihaylov, Mikel Artetxe, Tianlu Wang, Shuohui Chen, Daniel Simig, Myle Ott, Naman Goyal, Shruti Bhosale, Jingfei Du, Ramakanth Pasunuru, Sam Shleifer, Punit Singh Koura, Vishrav Chaudhary, Brian O’Horo, Jeff Wang, Luke Zettlemoyer, Zornitsa Kozareva, Mona Diab, Veselin Stoyanov, Xian Li.
- XLM (from Facebook) released together with the paper Cross-lingual Language Model Pretraining by Guillaume Lample and Alexis Conneau.
- XLM-ProphetNet (from Microsoft Research) released with the paper ProphetNet: Predicting Future N-gram for Sequence-to-Sequence Pre-training by Yu Yan, Weizhen Qi, Yeyun Gong, Dayiheng Liu, Nan Duan, Jiusheng Chen, Ruofei Zhang and Ming Zhou.
- XLM-RoBERTa (from Facebook AI), released together with the paper Unsupervised Cross-lingual Representation Learning at Scale by Alexis Conneau, Kartikay Khandelwal, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzmán, Edouard Grave, Myle Ott, Luke Zettlemoyer and Veselin Stoyanov.
- XLM-RoBERTa-XL (from Facebook AI), released together with the paper Larger-Scale Transformers for Multilingual Masked Language Modeling by Naman Goyal, Jingfei Du, Myle Ott, Giri Anantharaman, Alexis Conneau.
- XLM-V (from Meta AI) released with the paper XLM-V: Overcoming the Vocabulary Bottleneck in Multilingual Masked Language Models by Davis Liang, Hila Gonen, Yuning Mao, Rui Hou, Naman Goyal, Marjan Ghazvininejad, Luke Zettlemoyer, Madian Khabsa.
- XLNet (from Google/CMU) released with the paper XLNet: Generalized Autoregressive Pretraining for Language Understanding by Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le.
- XLS-R (from Facebook AI) released with the paper XLS-R: Self-supervised Cross-lingual Speech Representation Learning at Scale by Arun Babu, Changhan Wang, Andros Tjandra, Kushal Lakhotia, Qiantong Xu, Naman Goyal, Kritika Singh, Patrick von Platen, Yatharth Saraf, Juan Pino, Alexei Baevski, Alexis Conneau, Michael Auli.
- XLSR-Wav2Vec2 (from Facebook AI) released with the paper Unsupervised Cross-Lingual Representation Learning For Speech Recognition by Alexis Conneau, Alexei Baevski, Ronan Collobert, Abdelrahman Mohamed, Michael Auli.
- YOLOS (from Huazhong University of Science & Technology) released with the paper You Only Look at One Sequence: Rethinking Transformer in Vision through Object Detection by Yuxin Fang, Bencheng Liao, Xinggang Wang, Jiemin Fang, Jiyang Qi, Rui Wu, Jianwei Niu, Wenyu Liu.
- YOSO (from the University of Wisconsin - Madison) released with the paper You Only Sample (Almost) Once: Linear Cost Self-Attention Via Bernoulli Sampling by Zhanpeng Zeng, Yunyang Xiong, Sathya N. Ravi, Shailesh Acharya, Glenn Fung, Vikas Singh.
Supported frameworks
The table below represents the current support in the library for each of those models, whether they have a Python tokenizer (called “slow”). A “fast” tokenizer backed by the 🤗 Tokenizers library, whether they have support in Jax (via Flax), PyTorch, and/or TensorFlow.
Model | Tokenizer slow | Tokenizer fast | PyTorch support | TensorFlow support | Flax Support |
---|---|---|---|---|---|
ALBERT | ✅ | ✅ | ✅ | ✅ | ✅ |
ALIGN | ❌ | ❌ | ✅ | ❌ | ❌ |
AltCLIP | ❌ | ❌ | ✅ | ❌ | ❌ |
Audio Spectrogram Transformer | ❌ | ❌ | ✅ | ❌ | ❌ |
BART | ✅ | ✅ | ✅ | ✅ | ✅ |
BEiT | ❌ | ❌ | ✅ | ❌ | ✅ |
BERT | ✅ | ✅ | ✅ | ✅ | ✅ |
Bert Generation | ✅ | ❌ | ✅ | ❌ | ❌ |
BigBird | ✅ | ✅ | ✅ | ❌ | ✅ |
BigBird-Pegasus | ❌ | ❌ | ✅ | ❌ | ❌ |
BioGpt | ✅ | ❌ | ✅ | ❌ | ❌ |
BiT | ❌ | ❌ | ✅ | ❌ | ❌ |
Blenderbot | ✅ | ✅ | ✅ | ✅ | ✅ |
BlenderbotSmall | ✅ | ✅ | ✅ | ✅ | ✅ |
BLIP | ❌ | ❌ | ✅ | ✅ | ❌ |
BLIP-2 | ❌ | ❌ | ✅ | ❌ | ❌ |
BLOOM | ❌ | ✅ | ✅ | ❌ | ❌ |
BridgeTower | ❌ | ❌ | ✅ | ❌ | ❌ |
CamemBERT | ✅ | ✅ | ✅ | ✅ | ❌ |
CANINE | ✅ | ❌ | ✅ | ❌ | ❌ |
Chinese-CLIP | ❌ | ❌ | ✅ | ❌ | ❌ |
CLAP | ❌ | ❌ | ✅ | ❌ | ❌ |
CLIP | ✅ | ✅ | ✅ | ✅ | ✅ |
CLIPSeg | ❌ | ❌ | ✅ | ❌ | ❌ |
CodeGen | ✅ | ✅ | ✅ | ❌ | ❌ |
Conditional DETR | ❌ | ❌ | ✅ | ❌ | ❌ |
ConvBERT | ✅ | ✅ | ✅ | ✅ | ❌ |
ConvNeXT | ❌ | ❌ | ✅ | ✅ | ❌ |
ConvNeXTV2 | ❌ | ❌ | ✅ | ❌ | ❌ |
CPM-Ant | ✅ | ❌ | ✅ | ❌ | ❌ |
CTRL | ✅ | ❌ | ✅ | ✅ | ❌ |
CvT | ❌ | ❌ | ✅ | ✅ | ❌ |
Data2VecAudio | ❌ | ❌ | ✅ | ❌ | ❌ |
Data2VecText | ❌ | ❌ | ✅ | ❌ | ❌ |
Data2VecVision | ❌ | ❌ | ✅ | ✅ | ❌ |
DeBERTa | ✅ | ✅ | ✅ | ✅ | ❌ |
DeBERTa-v2 | ✅ | ✅ | ✅ | ✅ | ❌ |
Decision Transformer | ❌ | ❌ | ✅ | ❌ | ❌ |
Deformable DETR | ❌ | ❌ | ✅ | ❌ | ❌ |
DeiT | ❌ | ❌ | ✅ | ✅ | ❌ |
DETA | ❌ | ❌ | ✅ | ❌ | ❌ |
DETR | ❌ | ❌ | ✅ | ❌ | ❌ |
DiNAT | ❌ | ❌ | ✅ | ❌ | ❌ |
DistilBERT | ✅ | ✅ | ✅ | ✅ | ✅ |
DonutSwin | ❌ | ❌ | ✅ | ❌ | ❌ |
DPR | ✅ | ✅ | ✅ | ✅ | ❌ |
DPT | ❌ | ❌ | ✅ | ❌ | ❌ |
EfficientFormer | ❌ | ❌ | ✅ | ❌ | ❌ |
EfficientNet | ❌ | ❌ | ✅ | ❌ | ❌ |
ELECTRA | ✅ | ✅ | ✅ | ✅ | ✅ |
Encoder decoder | ❌ | ❌ | ✅ | ✅ | ✅ |
ERNIE | ❌ | ❌ | ✅ | ❌ | ❌ |
ErnieM | ✅ | ❌ | ✅ | ❌ | ❌ |
ESM | ✅ | ❌ | ✅ | ✅ | ❌ |
FairSeq Machine-Translation | ✅ | ❌ | ✅ | ❌ | ❌ |
FlauBERT | ✅ | ❌ | ✅ | ✅ | ❌ |
FLAVA | ❌ | ❌ | ✅ | ❌ | ❌ |
FNet | ✅ | ✅ | ✅ | ❌ | ❌ |
FocalNet | ❌ | ❌ | ✅ | ❌ | ❌ |
Funnel Transformer | ✅ | ✅ | ✅ | ✅ | ❌ |
GIT | ❌ | ❌ | ✅ | ❌ | ❌ |
GLPN | ❌ | ❌ | ✅ | ❌ | ❌ |
GPT Neo | ❌ | ❌ | ✅ | ❌ | ✅ |
GPT NeoX | ❌ | ✅ | ✅ | ❌ | ❌ |
GPT NeoX Japanese | ✅ | ❌ | ✅ | ❌ | ❌ |
GPT-J | ❌ | ❌ | ✅ | ✅ | ✅ |
GPT-Sw3 | ✅ | ✅ | ✅ | ✅ | ✅ |
GPTBigCode | ❌ | ❌ | ✅ | ❌ | ❌ |
GPTSAN-japanese | ✅ | ❌ | ✅ | ❌ | ❌ |
Graphormer | ❌ | ❌ | ✅ | ❌ | ❌ |
GroupViT | ❌ | ❌ | ✅ | ✅ | ❌ |
Hubert | ❌ | ❌ | ✅ | ✅ | ❌ |
I-BERT | ❌ | ❌ | ✅ | ❌ | ❌ |
ImageGPT | ❌ | ❌ | ✅ | ❌ | ❌ |
Informer | ❌ | ❌ | ✅ | ❌ | ❌ |
Jukebox | ✅ | ❌ | ✅ | ❌ | ❌ |
LayoutLM | ✅ | ✅ | ✅ | ✅ | ❌ |
LayoutLMv2 | ✅ | ✅ | ✅ | ❌ | ❌ |
LayoutLMv3 | ✅ | ✅ | ✅ | ✅ | ❌ |
LED | ✅ | ✅ | ✅ | ✅ | ❌ |
LeViT | ❌ | ❌ | ✅ | ❌ | ❌ |
LiLT | ❌ | ❌ | ✅ | ❌ | ❌ |
LLaMA | ✅ | ✅ | ✅ | ❌ | ❌ |
Longformer | ✅ | ✅ | ✅ | ✅ | ❌ |
LongT5 | ❌ | ❌ | ✅ | ❌ | ✅ |
LUKE | ✅ | ❌ | ✅ | ❌ | ❌ |
LXMERT | ✅ | ✅ | ✅ | ✅ | ❌ |
M-CTC-T | ❌ | ❌ | ✅ | ❌ | ❌ |
M2M100 | ✅ | ❌ | ✅ | ❌ | ❌ |
Marian | ✅ | ❌ | ✅ | ✅ | ✅ |
MarkupLM | ✅ | ✅ | ✅ | ❌ | ❌ |
Mask2Former | ❌ | ❌ | ✅ | ❌ | ❌ |
MaskFormer | ❌ | ❌ | ✅ | ❌ | ❌ |
MaskFormerSwin | ❌ | ❌ | ❌ | ❌ | ❌ |
mBART | ✅ | ✅ | ✅ | ✅ | ✅ |
MEGA | ❌ | ❌ | ✅ | ❌ | ❌ |
Megatron-BERT | ❌ | ❌ | ✅ | ❌ | ❌ |
MGP-STR | ✅ | ❌ | ✅ | ❌ | ❌ |
MobileBERT | ✅ | ✅ | ✅ | ✅ | ❌ |
MobileNetV1 | ❌ | ❌ | ✅ | ❌ | ❌ |
MobileNetV2 | ❌ | ❌ | ✅ | ❌ | ❌ |
MobileViT | ❌ | ❌ | ✅ | ✅ | ❌ |
MPNet | ✅ | ✅ | ✅ | ✅ | ❌ |
MT5 | ✅ | ✅ | ✅ | ✅ | ✅ |
MVP | ✅ | ✅ | ✅ | ❌ | ❌ |
NAT | ❌ | ❌ | ✅ | ❌ | ❌ |
Nezha | ❌ | ❌ | ✅ | ❌ | ❌ |
NLLB-MOE | ❌ | ❌ | ✅ | ❌ | ❌ |
Nyströmformer | ❌ | ❌ | ✅ | ❌ | ❌ |
OneFormer | ❌ | ❌ | ✅ | ❌ | ❌ |
OpenAI GPT | ✅ | ✅ | ✅ | ✅ | ❌ |
OpenAI GPT-2 | ✅ | ✅ | ✅ | ✅ | ✅ |
OpenLlama | ❌ | ❌ | ✅ | ❌ | ❌ |
OPT | ❌ | ❌ | ✅ | ✅ | ✅ |
OWL-ViT | ❌ | ❌ | ✅ | ❌ | ❌ |
Pegasus | ✅ | ✅ | ✅ | ✅ | ✅ |
PEGASUS-X | ❌ | ❌ | ✅ | ❌ | ❌ |
Perceiver | ✅ | ❌ | ✅ | ❌ | ❌ |
Pix2Struct | ❌ | ❌ | ✅ | ❌ | ❌ |
PLBart | ✅ | ❌ | ✅ | ❌ | ❌ |
PoolFormer | ❌ | ❌ | ✅ | ❌ | ❌ |
ProphetNet | ✅ | ❌ | ✅ | ❌ | ❌ |
QDQBert | ❌ | ❌ | ✅ | ❌ | ❌ |
RAG | ✅ | ❌ | ✅ | ✅ | ❌ |
REALM | ✅ | ✅ | ✅ | ❌ | ❌ |
Reformer | ✅ | ✅ | ✅ | ❌ | ❌ |
RegNet | ❌ | ❌ | ✅ | ✅ | ✅ |
RemBERT | ✅ | ✅ | ✅ | ✅ | ❌ |
ResNet | ❌ | ❌ | ✅ | ✅ | ✅ |
RetriBERT | ✅ | ✅ | ✅ | ❌ | ❌ |
RoBERTa | ✅ | ✅ | ✅ | ✅ | ✅ |
RoBERTa-PreLayerNorm | ❌ | ❌ | ✅ | ✅ | ✅ |
RoCBert | ✅ | ❌ | ✅ | ❌ | ❌ |
RoFormer | ✅ | ✅ | ✅ | ✅ | ✅ |
RWKV | ❌ | ❌ | ✅ | ❌ | ❌ |
SAM | ❌ | ❌ | ✅ | ❌ | ❌ |
SegFormer | ❌ | ❌ | ✅ | ✅ | ❌ |
SEW | ❌ | ❌ | ✅ | ❌ | ❌ |
SEW-D | ❌ | ❌ | ✅ | ❌ | ❌ |
Speech Encoder decoder | ❌ | ❌ | ✅ | ❌ | ✅ |
Speech2Text | ✅ | ❌ | ✅ | ✅ | ❌ |
Speech2Text2 | ✅ | ❌ | ❌ | ❌ | ❌ |
SpeechT5 | ✅ | ❌ | ✅ | ❌ | ❌ |
Splinter | ✅ | ✅ | ✅ | ❌ | ❌ |
SqueezeBERT | ✅ | ✅ | ✅ | ❌ | ❌ |
Swin Transformer | ❌ | ❌ | ✅ | ✅ | ❌ |
Swin Transformer V2 | ❌ | ❌ | ✅ | ❌ | ❌ |
Swin2SR | ❌ | ❌ | ✅ | ❌ | ❌ |
SwitchTransformers | ❌ | ❌ | ✅ | ❌ | ❌ |
T5 | ✅ | ✅ | ✅ | ✅ | ✅ |
Table Transformer | ❌ | ❌ | ✅ | ❌ | ❌ |
TAPAS | ✅ | ❌ | ✅ | ✅ | ❌ |
Time Series Transformer | ❌ | ❌ | ✅ | ❌ | ❌ |
TimeSformer | ❌ | ❌ | ✅ | ❌ | ❌ |
Trajectory Transformer | ❌ | ❌ | ✅ | ❌ | ❌ |
Transformer-XL | ✅ | ❌ | ✅ | ✅ | ❌ |
TrOCR | ❌ | ❌ | ✅ | ❌ | ❌ |
TVLT | ❌ | ❌ | ✅ | ❌ | ❌ |
UniSpeech | ❌ | ❌ | ✅ | ❌ | ❌ |
UniSpeechSat | ❌ | ❌ | ✅ | ❌ | ❌ |
UPerNet | ❌ | ❌ | ✅ | ❌ | ❌ |
VAN | ❌ | ❌ | ✅ | ❌ | ❌ |
VideoMAE | ❌ | ❌ | ✅ | ❌ | ❌ |
ViLT | ❌ | ❌ | ✅ | ❌ | ❌ |
Vision Encoder decoder | ❌ | ❌ | ✅ | ✅ | ✅ |
VisionTextDualEncoder | ❌ | ❌ | ✅ | ✅ | ✅ |
VisualBERT | ❌ | ❌ | ✅ | ❌ | ❌ |
ViT | ❌ | ❌ | ✅ | ✅ | ✅ |
ViT Hybrid | ❌ | ❌ | ✅ | ❌ | ❌ |
ViTMAE | ❌ | ❌ | ✅ | ✅ | ❌ |
ViTMSN | ❌ | ❌ | ✅ | ❌ | ❌ |
Wav2Vec2 | ✅ | ❌ | ✅ | ✅ | ✅ |
Wav2Vec2-Conformer | ❌ | ❌ | ✅ | ❌ | ❌ |
WavLM | ❌ | ❌ | ✅ | ❌ | ❌ |
Whisper | ✅ | ✅ | ✅ | ✅ | ✅ |
X-CLIP | ❌ | ❌ | ✅ | ❌ | ❌ |
X-MOD | ❌ | ❌ | ✅ | ❌ | ❌ |
XGLM | ✅ | ✅ | ✅ | ✅ | ✅ |
XLM | ✅ | ❌ | ✅ | ✅ | ❌ |
XLM-ProphetNet | ✅ | ❌ | ✅ | ❌ | ❌ |
XLM-RoBERTa | ✅ | ✅ | ✅ | ✅ | ✅ |
XLM-RoBERTa-XL | ❌ | ❌ | ✅ | ❌ | ❌ |
XLNet | ✅ | ✅ | ✅ | ✅ | ❌ |
YOLOS | ❌ | ❌ | ✅ | ❌ | ❌ |
YOSO | ❌ | ❌ | ✅ | ❌ | ❌ |
- 100 次浏览
【人工智能】人工智能和ML如何改变质量工程趋势
视频号
微信公众号
知识星球
- 人工智能和ML如何改变软件测试的动态
- 推动变革的市场力量
- 量化宽松增长加速器
- 人工智能驱动的QA测试工具的特点
- 转向优先考虑人工智能和机器学习
- 用于质量工程的基于人工智能的工具
- 结论
质量工程(QE)缓慢发展的传统概念已经过时,因为技术的快速进步和消费者不断变化的期望正在改变组织对待质量工程的方式。尽管如此,基本原则仍然不变:确保高服务质量、实现卓越成果和优化交付效率。这些核心价值观仍然是任何组织领导者的指导原则,因为它们对于建立信誉、培养忠诚度和最终推动收入增长至关重要。
尽管测试方法的基本原理在过去一年中可能发生了有限的变化,但在物联网、AI/ML、5G和元宇宙等新兴领域,实现目标的战略和方法已经发生了实质性的演变。
人工智能和ML如何改变软件测试的动态
随着消费者的期望越来越复杂,专家们在质量保证(QA)测试中转向人工智能,以向增强的自动化过渡。与传统的手动瀑布测试方法不同,公司越来越依赖机器来满足其测试代码的必要条件。
Gartner表示,“向组织提供质量在很大程度上受到外部市场动态和内部因素的影响,这些因素共同产生了重大影响”。
推动变革的市场力量
元宇宙主流化
拥抱元宇宙正变得越来越普遍,未来已经到来。元宇宙应用范围的扩大使组织能够摆脱物理限制,增强数字互动。这为加强他们的质量工程(QE)战略和实施提供了一个独特的机会。
解锁5G计算的力量
新型5G和物联网测试解决方案的引入有可能提高透明度,加快上市时间,优化5G的收入流,从根本上改变量化宽松领导者的角色。
增加服务式订阅
基于订阅的“即服务”模型的扩展将需要质量工程(QE)实施适应的、数据驱动的和面向分析的测试方法,以评估客户转化率和终身价值。
优化供应链网络
传统的功能筒仓正在变得过时,质量工程(QE)中的尖端技术可以帮助组织促进从传统的线性模型向互联的数字供应网络的过渡,从而增强韧性。
与专业设备同步
配备嵌入式设备的智能产品在市场上无处不在。随着生态系统复杂性的增长,质量工程(QE)应该建立一个测试环境,可以评估各种设备的嵌入式软件和固件。
QE增长加速器
混沌工程
通过实施合理的质量工程(QE)策略,工程混乱可以有助于提高系统稳定性、增强应用程序性能和提高基础设施的弹性。
培养AI/ML
从AI/ML只是一个流行语到成为测试交付生命周期的一个组成部分的转变不再是“如果”的问题,而是“何时”的问题。这一转变为下一代智能和自主数字测试仪的出现铺平了道路。
不断发展的测试数据管理
这么多数据;时间太少了。随着不同数据源的增加和周转时间的缩短,数据生成应该是有意义和安全的,同时消除处理大规模卷时的数据集偏差。
重新考虑测试策略
软件开发和部署方法的进步可以帮助组织通过更有效和高效的测试策略来支持流程工业化。
引领颠覆(Leading through Disruption)
新冠疫情是技术和数字化转型的催化剂。QE市场正在进行改革,为实现新的效率发挥提供了新的机会。
人工智能驱动的QA测试工具的特点
2022年,企业基础设施软件支出预计将以不变美元计算增长13.5%,以当前美元计算将达到3920亿美元。到2026年,该市场预计将达到6330亿美元,在2021年至2026年间以12.3%的复合年增长率增长。
需求收集
在任何软件开发项目中,收集需求都是至关重要的一步,但如果没有基于人工智能的软件测试的帮助,这可能是一个具有挑战性的过程。这项任务涉及到处理繁重的职责,如管理可交付成果、监控审批和生成报告。在技术的支持下,您可以通过使用预定义的关键性能指标(KPI)来获得评估复杂系统的宝贵见解。
简化探索性测试
在软件测试中利用人工智能可以用更少的资源和代码行实现预期的结果。人工智能系统以惊人的速度运行,无缝地执行学习、测试设计和执行等并行任务。该技术在智能代理的帮助下有效识别测试参数并检测系统漏洞。
视觉验证
在测试中使用人工智能提供了一系列前沿优势,特别是其在模式和图像识别方面的先进能力。该功能允许通过用户界面的视觉测试来识别缺陷。无论其大小和配置如何,人工智能都可以识别UI控件,并在像素级别对其进行全面分析。
人工智能驱动的错误识别
代码错误可能会阻碍软件的核心功能,通常,缺陷数量越多,识别这些代码错误就越困难。尽管如此,人工智能在质量保证(QA)测试中的应用简化了发现缺陷的过程,增强了测试程序,并预测了潜在的故障点。这种能力可以提高客户满意度,同时减少总体开支。
最大限度地提高代码覆盖率
代码覆盖率度量揭示了哪些代码语句在测试运行过程中进行了评估,哪些未经测试。通过精心规划,人工智能测试可以使您获得最高水平的测试覆盖率。事实上,有了适当的工具,设定实现100%代码覆盖率的目标是可行的。
转向优先考虑人工智能和机器学习
2024年技术趋势的演变将推动质量工程(QE)优先事项的转变。为了有效地利用人工智能(AI)、机器学习(ML)、物联网(IoT)和区块链等新兴技术为企业提供高质量的工程解决方案,工程师还必须精通这些领域。要获得这些领域的专业知识,工程师必须获得额外的认证,以确保他们有能力提供顶级质量的工程服务。
用于质量工程的基于人工智能的工具
Selenium
硒被广泛用于web应用程序测试。有了人工智能,Selenium可以通过提供智能元素定位器和自我修复能力来增强测试自动化。人工智能算法有助于适应应用程序UI的变化,减少维护工作量。
Appium
Appium在移动应用程序测试中很受欢迎。人工智能集成实现了高级手势识别、自我修复脚本以及不同移动平台和版本的自适应自动化。
TestComplete
该工具使用人工智能进行智能测试维护,建议在应用程序更改时更新测试脚本。它还提供人工智能驱动的对象识别,使测试创建和维护更加高效。
性能测试工具
JMeter
Apache JMeter具有人工智能功能,可以分析性能测试结果,预测未来的性能瓶颈。它还有助于根据历史数据生成现实的测试场景。
LoadRunner
LoadRunner利用人工智能进行预测分析,在性能问题发生之前识别这些问题。它可以根据实时应用程序性能自动调整虚拟用户负载,确保准确的模拟。
SonarQube
有了人工智能,SonarQube可以提供更准确、更智能的代码分析。它可以检测复杂的代码模式、安全漏洞,并为提高代码质量提供建议。
CodeClimate
CodeClimate使用人工智能来分析代码更改,从而深入了解代码质量、安全性和可维护性。它帮助团队保持高编码标准并减少技术债务。
CodeClimate
CodeClimate使用人工智能来分析代码更改,从而深入了解代码质量、安全性和可维护性。它帮助团队保持高编码标准并减少技术债务。
持续集成/持续部署(CI/CD)工具
Jenkins
Jenkins通过人工智能可以通过预测构建和部署失败来优化CI/CD管道。它可以分析历史数据,以确定导致故障的模式并提出改进建议。
GitLab
GitLab使用人工智能实现测试和部署过程的自动化。它可以智能地管理代码发布,在管道早期检测问题,并提高整体效率。
这些基于人工智能的工具共同有助于提高质量工程流程的效率、准确性和有效性。它们使组织能够通过自动化重复任务、提供智能见解和适应动态开发环境来提供高质量的软件产品。
结论
人工智能(AI)和机器学习(ML)在质量工程中的融合开创了软件开发的变革时代。这些技术通过引入智能自动化、预测分析和自适应功能,重新定义了测试和保证流程。人工智能和ML算法分析大量数据集、预测潜在问题和自优化测试框架的能力大大提高了质量工程的效率和准确性。从智能测试自动化框架到预测性能分析,这些创新不仅简化了传统的测试实践,而且积极应对软件开发动态环境中的挑战。随着组织越来越多地接受人工智能和ML,质量工程的未来有望变得更加敏捷、数据驱动,并对提供高质量软件产品的不断发展的需求做出反应。
- 50 次浏览
【人工智能质量保证】人工智能在质量保证中如何提高效率和准确性
视频号
微信公众号
知识星球
目录
- 人工智能在质量保证中的作用
- 在质量保证中实施人工智能的挑战
- 人工智能主导的质量保证的好处
- 用于质量保证的人工智能测试工具
人工智能(AI)因其极具前景的优势,吸引了知名企业家的大量资金投资和真正的热情。公司正热切地在质量保证方面采用人工智能,以简化运营并降低开支。人工智能促进了数据的高效共享,预测了客户行为,提供了产品推荐,识别了欺诈活动,根据特定的人口结构进行了定制营销,并提供了宝贵的客户支持。
如果你仍然不确定人工智能的实用性,以下是一些惊人的统计数据:
•63%的公司承认,削减成本的压力将促使他们采用人工智能。
•61%的商业领袖声称,人工智能有助于他们识别可能被忽视的商业机会。
人工智能在质量保证中的作用
为了评估软件及其功能,开发测试套件并生成测试数据至关重要。然而,这一过程很耗时。平均而言,当使用手动测试方法时,它占测试周期内花费的总时间的三分之一以上(约35%)。
除此之外,手动测试很容易受到人为错误的影响,这可能会导致费用增加,消耗更多的时间和资源——这是任何企业都不愿意投资的。
此外,随着软件变得越来越复杂,测试的数量自然会增加,这使得维护测试套件和确保足够的代码覆盖率变得越来越困难。
在这种情况下,利用人工智能进行质量控制可以加快移动应用程序的测试程序,并克服上述所有挑战。人工智能增强质量保证测试流程的关键领域包括:
- •全面监督API测试。
- •测试操作自动化。
- •确定执行测试脚本的最佳时间和方法。
- •利用基于人工智能的蜘蛛网工具进行更有效的数据分析。
以下是手动测试的一些限制以及人工智能如何改变这一点:
Limitations of Manual Testing | How AI can Change that |
1. Human Error | Reducing Human Error – AI ensures consistent and precise test execution, minimizing the risk of human error, such as oversight and fatigue. |
2. Resource-Intensive | Efficiency and Cost Savings – AI accelerates testing processes, resulting in significant time and cost savings, making testing more cost-effective. |
3. Repetitive Tasks | Eliminating Repetitive Tasks – AI automates repetitive testing tasks, allowing human testers to focus on more valuable activities. |
4. Inadequate Test Coverage | Comprehensive Test Coverage – AI can execute a vast number of test cases, covering a wide range of scenarios and edge cases, ensuring thorough examination of the software. |
5. Scalability Challenges | Scalability – AI is highly adaptable and scalable, capable of handling the increased complexity and size of modern software projects. |
在质量保证中实施人工智能的挑战
在质量保证(QA)中实施人工智能带来了一系列复杂的挑战,组织必须解决这些挑战,以确保人工智能成功集成到其质量控制过程中。这些挑战包括:
数据质量:
QA团队必须努力满足对高质量培训数据的需求。确保用于训练人工智能模型的数据准确、有代表性且没有偏见是至关重要的第一步。
集成复杂性:
将人工智能集成到现有的质量保证系统中可能是一项艰巨的任务。确保兼容性、数据流以及与遗留流程的适当同步对于平稳过渡至关重要。
法规遵从性:
根据行业的不同,在QA中实施人工智能时,可能需要遵守特定的法规和数据隐私法。确保遵守这些法规是一个关键问题。
用户接受度:
让QA团队和利益相关者相信人工智能驱动流程的好处和可靠性至关重要。需要教育、培训和有效的沟通才能获得信任和接受。
人工智能主导的质量保证的好处
人工智能(AI)在软件测试中的应用带来了独特的优势,可以显著改变质量保证过程。让我们详细探讨这些好处,特别是关注人工智能如何在转变质量保证方面做出贡献:
快速时间表:
高效的测试执行:
人工智能驱动的测试自动化可以以前所未有的速度执行大量测试用例,显著减少测试所需的时间。可能需要人工测试人员几天或几周时间的任务可以在几个小时内完成。
更快的回归测试:
AI通过自动重新运行测试用例来检查意外的副作用,从而简化回归测试。这确保了新的代码更改不会破坏现有的功能,从而实现更快的发布周期。
经过充分研究的内部版本发布:
预测分析:
人工智能可以分析历史测试数据和软件性能指标,以预测潜在的缺陷。通过确定软件中更有可能包含问题的领域,团队可以将测试工作集中在高风险领域,从而获得更全面的构建版本。
持续监控:
人工智能的实时监控可以检测生产中的异常和性能问题,有助于在发布新版本之前确定需要立即关注的领域。
超越手动测试的极限:
全面的测试覆盖范围:
人工智能可以进行广泛而详尽的测试,涵盖手动测试可能忽略的大量场景和边缘案例。这种全面的测试覆盖确保了软件得到严格的检查。
可扩展性:
人工智能测试具有高度的可扩展性,能够适应现代软件项目日益复杂和规模的增长。它可以适应新技术、更大的数据集和不断发展的测试需求,这是手动测试经常难以实现的。
轻松的测试规划:
智能测试用例生成:
人工智能算法可以自主生成测试用例,使测试规划过程更加高效。这些生成的测试用例通常涵盖关键路径、边界条件和高影响场景,从而节省了创建测试用例的时间和精力。
测试优先级:
人工智能可以根据测试用例的关键性和潜在影响对其进行优先级排序,通过确保最重要的测试得到主要关注来简化测试规划。
用于质量保证的人工智能测试工具
近年来,用于质量保证的人工智能测试工具因提高测试效率和准确性而广受欢迎。
Applitools:
•Applitools提供视觉人工智能测试,这是一种使用人工智能和机器学习自动检测和分析应用程序用户界面中视觉差异的技术。它对网络和移动应用程序测试特别有用。
•它可以识别视觉缺陷,如布局问题、渲染问题和功能缺陷。
•Applitools提供了一个可视化验证平台,该平台与各种测试自动化框架和工具集成,可以轻松地将可视化测试添加到现有的测试套件中。
测试西格玛:
•测试西格玛是一个人工智能驱动的测试自动化平台,旨在简化测试创建和维护。
•它使用自然语言处理和人工智能,使测试人员和非技术用户能够创建自动测试脚本。
•该平台提供了自我修复测试、易于维护和跨浏览器测试等功能。
SauceLabs:
•Sauce Labs是一个基于云的自动化测试平台,包括网络和移动应用程序测试。
•虽然它不仅仅是一种人工智能测试工具,但它提供了人工智能测试功能,以改进测试执行和分析。
•它为运行测试提供了广泛的真实设备和虚拟环境,并支持各种测试框架。
TestCraft:
•TestCraft是一个基于云的测试自动化平台,使用人工智能生成和维护测试脚本。
•其人工智能引擎识别测试中应用程序的变化,并相应地调整测试脚本,以确保它们保持功能。
•TestCraft支持web和移动应用程序测试,并提供与各种CI/CD工具的集成。
这些工具利用人工智能和机器学习来提高质量保证流程的效率和准确性。在为您的特定需求选择合适的工具时,请考虑各种因素,如您正在测试的应用程序类型(web、移动、桌面)、团队的技术专业知识水平以及与现有测试框架或工具的集成能力。评估成本、可扩展性和支持等因素也很重要,以确定最适合您组织的需求。
结论
人工智能与质量保证的集成正在开创软件测试和产品质量控制的效率、准确性和有效性的新时代。人工智能驱动的解决方案正在彻底改变企业的质量保证方式,从自动化重复和耗时的测试任务到实现预测性缺陷识别,以及提高性能和安全测试。有了人工智能,组织可以简化测试流程,确保一致的质量,并最终向客户提供更高质量的产品。这一转变不仅提高了产品的可靠性,还降低了成本,加快了上市时间,并为企业提供了在竞争日益激烈的技术环境中蓬勃发展所需的灵活性。人工智能对质量保证的影响证明了技术在追求卓越和客户满意度方面的不断发展。
- 31 次浏览
【机器学习】数据验证和数据验证——从字典到机器学习
视频号
微信公众号
知识星球
在本文中,我们将了解数据验证(verification )和数据验证(validation)之间的区别,这两个术语在我们谈论数据质量时经常互换使用。然而,这两个术语是不同的。
作者:高级分析实践负责人Aditya Aggarwal和Abzooba首席科学官Arnab Bose
当我们谈论数据质量时,我们经常交替使用数据验证和数据验证。然而,这两个术语是不同的。在这篇文章中,我们将了解4种不同背景下的差异:
- 验证和确认的字典含义
- 数据验证和一般数据验证之间的差异
- 从软件开发的角度看验证和确认的区别
- 从机器学习的角度看数据验证和数据验证的区别
1.验证和确认的字典含义
表1通过几个例子解释了单词验证和确认的字典含义。
表1:验证和确认的字典含义(able 1: Dictionary meaning of verification and validation)
总之,验证是关于真实性和准确性,而验证是关于支持一个观点的强度或声明的正确性。验证检查方法的正确性,而验证检查结果的准确性。
2.数据验证与数据确认的一般区别
既然我们已经理解了这两个词的字面意思,那么让我们来探究“数据验证”和“数据确认”之间的区别。
- 数据验证(Data verification):确保数据的准确性。
- 数据验证(Data validation):确保数据正确无误。
让我们在表2中举例说明。
表2:“数据验证”和“数据确认”示例(Table 2: "Data verification" and "data validation" examples)
3.从软件开发的角度看验证(verification)和确认(validation)的区别
从软件开发的角度来看,
- 进行验证(Verification )是为了确保软件具有高质量、精心设计、健壮和无错误,而不影响其可用性。
- 进行验证(Validation )是为了确保软件的可用性和满足客户需求的能力。
Fig 1: Differences between Verification and Validation in software development (Source)
如图1所示,正确性证明、稳健性分析、单元测试、集成测试和其他都是验证步骤,其中任务旨在验证细节。根据所需输出验证软件输出。另一方面,模型检查、黑匣子测试、可用性测试都是验证步骤,任务的方向是了解软件是否满足要求和期望。
4.从机器学习的角度来看数据验证和数据验证的区别
数据验证(data verification)在机器学习管道中的作用是充当看门人。它可确保数据随时间的推移而准确更新。数据验证主要在新的数据采集阶段进行,即在ML管道的步骤8进行,如图2所示。此步骤的示例是识别重复记录并执行重复数据消除,以及清除地址或电话号码等字段中客户信息的不匹配。
另一方面,数据验证(data validation)(在ML流水线的步骤3)确保来自步骤8的添加到学习数据的增量数据具有良好的质量并且(从统计特性的角度来看)与现有的训练数据相似。例如,这包括发现数据异常或检测现有训练数据与要添加到训练数据的新数据之间的差异。否则,增量数据中的任何数据质量问题/统计差异都可能被遗漏,并且训练误差可能随着时间的推移而积累并恶化模型精度。因此,数据验证在早期阶段检测到增量训练数据的显著变化(如果有的话),这有助于进行根本原因分析。
Fig 2: Components of Machine Learning Pipeline
Aditya Aggarwal担任Abzooba股份有限公司的数据科学-实践主管。Aditya在通过数据驱动解决方案推动商业目标方面拥有超过12年的经验,专门从事预测分析、机器学习、商业智能和一系列行业的商业战略。
Arnab Bose博士是数据分析公司Abzooba的首席科学官,也是芝加哥大学的兼职教师。他在分析学硕士课程中教授机器学习和预测分析、机器学习操作、时间序列分析和预测以及健康分析。他是一位20年预测分析行业资深人士,喜欢使用非结构化和结构化数据来预测和影响医疗保健、零售、金融和运输领域的行为结果。他目前的重点领域包括使用机器学习的健康风险分层和慢性病管理,以及机器学习模型的生产部署和监测。
相关的
- MLOps – “Why is it required?” and “What it is”?
- My machine learning model does not learn. What should I do?
- Data Observability, Part II: How to Build Your Own Data Quality Monitors Using SQL
- Data Science, Statistics and Machine Learning Dictionary
- How to Update a Python Dictionary
- Data Validation in Machine Learning is Imperative, Not Optional
- Full cross-validation and generating learning curves for time-series models
- Unlocking Reliable Generations through Chain-of-Verification: A…
- Data Validation for PySpark Applications using Pandera
- 22 次浏览
【机器学习】机器学习中的模型评估技术
视频号
微信公众号
知识星球
模型评估是机器学习和预测建模的基本步骤。它使我们能够评估模型的性能、可靠性和泛化能力,从而做出明智的决策并改善业务成果。有几种模型评估技术,如下所示:
A.坚持方法(Hold-out Approach):
保持方法,也称为简单的训练测试分割(simple train-test split),是评估机器学习模型性能的一种基本技术。它包括将数据集分为两部分:训练集和测试集。
坚持方法通常遵循以下步骤:
- 原始数据集被随机分为训练集和测试集。常见的分割比为70–30或80–20,但它可能因数据集的大小和具体问题而异。
- 训练集用于训练模型。该模型基于输入特征和相应的目标变量来学习数据中的模式和关系。
- 一旦训练了模型,就使用测试集来评估其性能。根据问题类型,将模型的预测与测试集中的实际目标变量进行比较,以计算性能指标,如准确性、精确度、召回率或其他指标。
- 从测试集获得的性能指标提供了对模型在看不见的数据上可能表现的评估。
训练试验拆分代码为:
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=2)
坚持方法的问题:
虽然保持方法是一种简单且常用的模型评估技术,但它确实存在一些潜在的问题和局限性:
可变性(Variability ):
模型的性能对数据如何划分为训练集和测试集非常敏感。不同的划分可能会导致不同的评估结果,从而导致不太可靠的性能估计。
让我们假设我们有一个1000个样本的数据集,我们想使用80-20的比例将其分为训练集和测试集。我们将在测试集上评估分类模型的性能。
如果我们将随机状态设置为特定值,例如42,则数据将以一致的方式进行拆分。我们在训练集上训练模型,并在测试集上评估其性能。让我们假设我们获得85%的准确率。
现在,如果我们将随机状态更改为不同的值,比如说100,并重复相同的过程,我们可能会得到不同的精度,比如82%。这种差异是由于为具有不同随机状态的训练和测试集随机选择的不同样本而产生的。
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=2)
#所以,如果我们改变随机状态值,模型的精度每次都会发生变化。
#这被称为可变性,并造成了如何选择最佳部署模型的混乱。
通过用各种随机状态值重复这个过程,我们将观察到模型性能的波动。例如,使用随机状态42可能产生85%的准确率,而随机状态100可能产生82%的准确率和随机状态123可能给我们84%的准确率。这些变化突出了随机化对保持方法的影响,并证明了评估结果的可变性。
2.数据效率低下:
拒发方法只使用一部分数据进行训练,另一部分数据用于测试。这意味着模型不能从所有可用的数据中学习,如果数据集很小,这可能会特别有问题。
3.性能评估中的偏差:
-让我们考虑一个现实生活中的例子,了解偏差如何影响绩效评估。
假设我们正在构建一个垃圾邮件分类器,并收集了10000封电子邮件的数据集。其中,9000封电子邮件是合法的,1000封是垃圾邮件。类别分布不平衡,与垃圾邮件相比,合法电子邮件的数量要高得多。
现在,假设我们使用保持方法来评估我们的垃圾邮件分类器,方法是将数据随机划分为训练集(80%的数据)和测试集(20%的数据)。我们在训练集上训练模型,并使用性能指标(如准确性)在测试集上评估其性能。
在这种情况下,由于不平衡的类分布,存在性能估计有偏差的可能性。该模型可以简单地通过正确地对大多数类别(合法电子邮件)进行分类来实现高精度,而对少数类别(垃圾邮件)表现不佳。
让我们假设该模型在测试集上实现了95%的准确性。乍一看,这可能表明性能卓越。然而,经过仔细检查,我们发现该模型对50%的垃圾邮件进行了错误分类,而对98%的合法电子邮件进行了正确分类。
性能估计中出现这种偏差是因为评估度量(准确性)没有考虑到不平衡的类分布。大多数类别(合法电子邮件)严重影响准确性,导致价值过高。事实上,该模型在少数类别(垃圾邮件)上的性能明显低于总体准确性。
因此,如果由于随机分裂,某些类或模式在训练集或测试集中被过度或不足地表示,则可能导致有偏差的性能估计。
4.超参数调整的可靠性较低:
-如果使用保持方法进行超参数调整,则存在过度拟合测试集的风险,因为信息可能会从测试集泄漏到模型中。这意味着该模型在测试集上的性能可能过于乐观,不能代表其对未知数据的性能。
当这些都是坚持方法中的问题时,我们为什么要使用这种方法?
简单:
-简单易懂。
计算效率:
由于使用这种方法,您只训练一次模型,因此与您在本文中研究的其他技术相比,它在计算上成本较低,因为它们训练模型多次。
大型数据集:
-对于非常大的数据集,即使是很小比例的数据也可能足以形成一个具有代表性的测试集。在这些情况下,保持方法可以很好地工作,如果你多次改变随机状态值,模型精度将变化非常非常小,这对于模型评估来说是可以的。
B.交叉验证(Cross Validation):(基于重新采样技术)
交叉验证的思想是将数据划分为几个子集或“折叠”。然后在其中一些子集上训练模型,并在其余子集上进行测试。该过程重复多次,每次使用不同的子集进行训练和验证。通常对每一轮的结果进行平均,以估计模型的总体性能。
机器学习中常用的交叉验证方法有几种。以下是一些最广泛使用的技术:
留一交叉验证(LOOCV):Leave-One-Out Cross-Validation
(n rows-> n models ->(n-1) for training -> 1 for testing)
让我们用一个更简单的解释和一个真实的例子来理解Leave One Out Cross Validation(LOOCV)。
Leave one-out cross validation
想象一下,你是一名为考试而学习的学生。你有一系列练习题,你想用它们来评估你的知识,并预测你在实际考试中的表现。但是,你要确保你的预测尽可能准确。
在LOOCV中,您模拟一种情况,通过一次省略一个练习问题来测试您的知识,并使用剩余的问题来评估您的理解。
以下是它的工作原理:
- 假设你有20道练习题,编号从1到20。
- 对于第一轮LOOCV,您决定省略问题1,将问题2至20作为您的训练集。你研究这些问题,并根据你对其他问题的理解来预测问题1的答案。
- 在对问题1做出预测后,将其与实际答案进行比较。这让你知道,如果这是训练的一部分,你在这个特定问题上的表现会有多好。
- 你对每个问题重复这个过程,一次漏掉一个问题,并根据其余问题预测答案。每次,你都要对照实际答案来评估你的预测。
- 最后,你将完成所有20个问题,去掉每一个,并评估你的预测。您可以通过将所有预测与实际答案进行比较来计算总体准确性(平均准确性)或任何其他性能指标。
在本例中,LOOCV模拟了一种情况,即通过一次省略一个问题并评估您的表现来评估您的知识。通过对所有问题进行这个过程,你可以更准确地估计你对材料的理解程度以及你在实际考试中的表现。
要实现LOOCV技术,请参阅我的github上的Jupyter笔记本。点击这里!
LOOCV的优点:-
数据的使用:
LOOCV使用几乎所有的数据进行训练,这在数据集很小、每个数据点都很有价值的情况下是有益的。
偏差较小:
由于每次迭代验证仅在一个数据点上进行,LOOCV的偏差小于其他方法,如k倍验证。
无随机性:
列车/试验分裂不存在随机性,因此评估是稳定的,不会因不同的随机分裂而导致结果变化。
LOOCV的缺点:-
- 计算费用与时间消耗
- 不适合不平衡的数据集
何时使用LOOCV:
- 小型数据集
- 平衡的数据集
需要较少偏差的性能估计:由于LOOCV使用了几乎所有的数据进行训练,因此与k倍交叉验证等其他方法相比,它对模型性能的估计较少偏差。
2.K-Fold交叉验证(K-Fold Cross-Validation:):
- 在k折叠交叉验证中,数据集被划分为k个大小相等的折叠或子集。
- 该模型被训练和评估了k次,每次都使用不同的折叠作为验证集,而剩余的折叠用于训练。
- 对从每次迭代中获得的性能度量进行平均以获得总体性能估计。
让我们通过一个例子来理解k折叠交叉验证:
假设您有一个包含100个图像的数据集,并且您想要构建一个图像分类器。为了评估分类器的性能,您决定使用5倍的交叉验证。
以下是它的工作原理:
数据集准备:
- 您将100幅图像的数据集划分为5个大小相等的折叠,每个折叠包含20幅图像。
- 每个折叠表示将用于训练和验证的数据的子集。
2.迭代1:
- 在第一次迭代中,使用折叠1作为验证集,其余的折叠2到5作为训练集。
- 您在Folds 2到5上使用80个图像训练图像分类器,并在Fold 1上评估其性能,Fold 1有20个图像。
- 您记录所获得的性能指标,如准确性、精密度、召回率或任何其他相关指标。
3.迭代2:
- 在第二次迭代中,将折叠2用作验证集,将折叠1、3、4和5用作训练集。
- 使用80个图像在折叠1、3、4和5上训练图像分类器,并在具有20个图像的折叠2上评估其性能。
- 再次记录所获得的性能指标。
4.迭代3、4和5:
- 对折叠3、4和5重复相同的过程,将它们用作验证集,而其余折叠用作训练集。
- 每次,您都要在训练集上训练模型,并在各自的验证折叠中评估其性能。
- 记录每次迭代的性能指标。
5.性能评估:
- 完成所有5次迭代后,您就可以获得每个折叠的性能指标。
- 为了获得总体性能估计,您对从5次迭代中获得的性能指标取平均值。
- 这个平均值代表了图像分类器在所有折叠中的性能,并提供了其有效性的可靠估计。
要实现K-fold交叉验证技术,请参阅我的GitHub上的Jupyter笔记本。点击这里!
K折叠交叉验证的优点:-
- 方差减少:LOOCV具有更高的方差,因为由于训练数据的差异最小,模型高度相关。在k倍交叉验证中,验证集之间的较大差异会降低模型之间的相关性,从而导致较低的方差。
- 与LOOCV相比,计算成本低廉。
K折叠交叉验证的缺点:-
- 可能无法很好地处理不平衡类:如果数据集具有不平衡类,则在分区时,一些折叠可能不包含少数类的任何样本,这可能导致误导性的性能指标。
- 高偏置的可能性
何时使用K折叠交叉验证:
- 当您拥有足够大的数据集时
- 当数据均匀分布时
3.分层K-fold交叉验证(Stratified K-fold cross validation ):
分层k倍交叉验证是k倍交叉校验的一种变体,它解决了数据集中类分布不平衡的问题。它通常用于目标变量或感兴趣的类分布不均的情况。
在标准的k折叠交叉验证中,数据集被随机划分为k个大小相等的折叠。然而,这种随机划分可能会导致一些折叠具有显著不平衡的类分布,特别是当原始数据集存在类不平衡问题时。
分层k折叠交叉验证旨在保持不同折叠之间的类别分布。它确保每个折叠都与原始数据集保持相同的类分布,从而提供更可靠的模型性能估计,特别是对于不平衡的数据集。
分层k次交叉验证过程包括以下步骤:
- 首先,通常使用随机采样将数据集划分为k个折叠。
- 接下来,对于每个折叠,分析目标变量的类别分布。
- 然后以这样的方式构建折叠,即每个折叠包含与原始数据集大致相同比例的每个类。这确保了每个折叠都代表了整个类别的分布。
- 使用k次迭代对模型进行训练和评估,其中在每次迭代中,一个折叠用作验证集,其余k-1个折叠用作训练集。
- 计算每个折叠的性能指标,如准确性或F1分数,并对结果进行平均,以获得模型的总体性能估计。
要实现分层K折叠交叉验证技术,请参阅我的GitHub上的Jupyter笔记本。点击这里!
我希望这将提高您对机器学习中的模型评估技术的了解。感谢您阅读这篇文章!
- 12 次浏览
【机器学习】机器学习中的评估和验证之间的区别是什么?
视频号
微信公众号
知识星球
机器学习(ML)是使用具有正确算法的训练数据集来训练模型以实现准确预测的过程。机器学习中的验证就像是对训练模型所做预测的授权或验证。
另一方面,机器学习中的评估是指对整个机器学习模型及其在各种情况下的性能进行评估或测试。它包括评估机器学习模型的训练过程、深度学习算法的性能以及在不同情况下给出的预测的准确性。
ML中的评估(Evaluation)与验证(Validation)有何不同?
事实上,机器学习中的验证(validation )与训练模型时使用的数据集的确认(confirmation )以及模型给出的输出有关。意味着再次用于训练机器的模型预测数据由经验丰富的专业人员手动验证,从而使机器了解预测中的错误并改进结果。
ML模型验证
例如,注释图像用于使用ML算法训练模型,并且当这些注释图像帮助机器学习某些模式以检测对象或在现实生活中使用时识别感兴趣的对象时。
当向机器显示相似的未标记图像以识别相似的属性时,根据过去学习的数据进行预测。在这里,经验丰富的专业人员会检查输出并验证(validate )输出是否正确,如果需要任何更正,他们也会进行同样的操作,并再次输入到模型训练中,以提高准确性。
ML模型评估
相反,机器学习中的评估与验证不同。事实上,在模型开发之后,除了准确的预测外,其他方面还需要进行评估以进行最终测试。检查ML模型在不同情况下的性能,以及在开发此类模型时使用了什么样的训练数据或算法。
你可以说这是一种测试,主要涉及检查算法的性能,或者它是否适合你的模型训练,以及在进行机器学习模型训练时还考虑了哪些其他参数。
验证和评估所遵循的方法
提供ML模型验证服务的公司遵循机器学习中各种类型的验证过程。除了其他几种方法外,根据开发人员的可行性、算法兼容性和项目要求,交叉验证和手动验证是专业人士很少采用的流行方法。
而另一方面,评估过程并不具体,而是由机器学习专业人员根据他们的轻松程度来遵循。然而,某些固定参数规则在那里,以确保行业标准使ML模型真实可靠。评估过程基本上是由人工完成的。
自动验证与手动验证
然而,由于有多种验证方法,验证过程可能会更加棘手,选择正确的方法对ML专业人员来说可能是一项挑战。自动化验证过程可以使用不同类型的验证方法进行。但人工手动验证是最好的方法,它几乎不需要额外的时间,但可以帮助您准确地验证模型预测,并在最佳水平上提高准确性。
- 114 次浏览
【机器学习】机器学习模型的功能测试
视频号
微信公众号
知识星球
黑盒测试和预言
机器学习(ML)模型的黑盒测试是指在不了解模型内部细节的情况下进行测试,例如创建模型所使用的算法和其中的特征。黑盒测试的主要目标是以持续的方式确保模型的质量。
黑盒测试的困难在于试图识别测试神话,这是一种确定测试是否通过的机制。
为什么ML模型被认为是不可测试的?如何使它们可测试?
在传统软件开发的情况下,模型是通过使用测试预言机(如测试人员、测试工程师或与测试程序一起工作的测试机制)进行测试的。预言机可以根据预期值验证测试结果。然而,ML模型通常被认为是不稳定的,因为很难对其进行黑盒测试。由于ML模型输出某种预测,因此没有用于验证测试结果的预期值。
由于缺乏测试预言机,所以使用伪预言机。伪预言表示当给定输入集的输出相互比较并确定正确性时的场景。
例如,为了解决一个问题,已经使用两种不同的实现对程序进行了编码;其中一个将被视为主程序。输入通过这两个实现。如果输出与主程序相同或成比例(即,它落在预定值附近的给定范围内),则可以认为该程序按预期或正确工作。
缺少测试预言机(Absence of test oracle)
这是用于对ML模型执行质量控制检查的许多技术之一。
功能测试
为了更好地理解ML模型的功能测试,请考虑以下示例:
哪里
- f=测试中的功能
- x=输入
- y=输出
- H=启发式(即测试或实验)
- O=观察和预言(即预期结果)
功能测试流程图
测试人员如何对ML模型进行功能测试?
测试人员必须在测试模型之前确定f、x和y值。如果需要,他们可以咨询正在构建产品的工程师,他们可以阅读和编写文档,他们可以依靠自己的经验进行假设,他们可以在线研究材料。通过这些方法,测试人员将得出可能的实验和测试(H)以及预期结果(O)。它们还将帮助查找功能性错误。
测试人员通过测试过程的每一次迭代来阐明对f、x和y值的理解。
- 5 次浏览
【机器学习】机器学习模型的训练、测试和评估
视频号
微信公众号
知识星球
培训、评估、测试和准确性
模特培训
深度学习的模型训练包括分割数据集、调整超参数和执行批量归一化。
拆分数据集
为培训收集的数据需要分为三组:培训、验证和测试。
- 训练--高达总数据集的75%用于训练。模型在训练集上学习;换句话说,该集合用于分配进入模型的权重和偏差。
- 验证——在训练模型时,使用15%至20%的数据来评估初始精度,了解模型如何学习和微调超参数。该模型可以看到验证数据,但不使用它来学习权重和偏差。
- 测试——5%到10%的数据用于最终评估。由于从未见过这个数据集,该模型没有任何偏见。
超参数调整
超参数可以想象为用于控制训练算法的行为的设置,如下所示。
基于人类可调节的超参数,该算法在训练阶段从数据中学习参数。它们由设计者在理论推导后设置或自动调整。
在深度学习的背景下,超参数的例子有:
- 学习率
- 隐藏单元数
- 卷积核宽度
- 正则化技术
有两种常见的方法来调整超参数,如下图所示。
第一种,标准网格搜索优化,是通过超参数组合的预定列表的暴力方法。列出超参数的所有可能值,并以迭代的方式循环以获得最佳值。网格搜索优化需要相对较少的编程时间,并且如果特征向量中的维数较低,则效果良好。但是,随着维度数量的增加,调整所需的时间越来越长。
另一种常见的方法,随机搜索优化,包括随机采样值,而不是通过超参数的每个组合进行彻底搜索。一般来说,它比网格搜索优化在更短的时间内产生更好的结果。
批量规范化
规范化和标准化这两种技术的目标都是通过将所有数据点放在同一尺度上来转换数据,为训练做准备。
归一化过程通常包括将数值数据缩小到从零到一的比例。另一方面,标准化通常包括从每个数据点减去数据集的平均值,然后将差值除以数据集的标准差。这迫使标准化数据的平均值为零,标准偏差为一。标准化通常被称为规范化;两者都可以归结为将数据放在某种已知或标准的尺度上。
模型评估和测试
一旦模型经过训练,就会根据混淆矩阵和精度/准确性指标来衡量性能。
混淆矩阵
混淆矩阵描述分类器模型的性能,如下面描述的2x2矩阵所示。
考虑一个简单的分类器来预测患者是否患有癌症。有四种可能的结果:
- 真阳性(TP)-预测是肯定的,患者确实患有癌症。
- 真阴性(TN)-预测没有,患者没有癌症。
- 假阳性(FP)-预测是肯定的,但患者没有癌症(也称为“I型错误”)。
- 假阴性(FN)-没有预测,但患者确实患有癌症(也称为“II型错误”)
混淆矩阵每个轴可以容纳2个以上的类,如下所示:
精度/准确度
基于分类器预测和实际值来计算精度和准确度也是有用的。
准确性是衡量分类器在所有观测中正确的频率的指标。基于上述网格的计算结果为(TP+TN)/总计=(100+50)/(60+105)=0.91。
精度是在预测为“是”时实际值为“是的频率”的度量。在这种情况下,该计算是TP/预测的yes=100/(100+10)=0.91。
- 11 次浏览
【机器学习】模型评估与模型测试与模型可解释性
视频号
微信公众号
知识星球
如果你的机器学习模型在坚持测试数据集上的正确性得分很高,那么在生产中部署它安全吗?
所有的模型都是错误的,但有些是有用的。
-- 乔治·伯克斯(英国著名统计学家)
但我要问的问题是:更正确的模型更有用吗?
最近,我们为一位客户培训了语音识别,其准确率高于给定目标。在仔细检查错误后,我们发现该模型在转录数字方面做得特别差。显然,仅仅评估模型的准确性是不足以决定模型是否足够好,可以部署。
模型评估与模型测试
在机器学习中,我们主要关注模型评估:在看不见的坚持测试数据集上总结模型正确性的度量和图。
另一方面,模型测试是为了检查模型的学习行为是否与“我们期望的”相同。它不像模型评估那样严格定义。通过模型误差和特征误差进行组合(就像我在语音识别中发现的数字问题一样)只是一种测试。
有关训练前和训练后的概述,请参阅Jeremy Jordan的机器学习系统的有效测试。有关相同的一些示例测试用例,请参阅:Eugene Yan的《如何测试机器学习代码和系统》。
模型解释性(Explainability)或模型可解释性(Interpretability)
人类可以在多大程度上理解模型的结果,并可以解释其决策“逻辑”。至少对于非DNN模型来说,这是测试中非常重要的一部分。
10种ML测试
Srinivas Padmanabhuni博士在针对您的AI/ML/DL模型的10个测试中列出了10种类型的测试,包括模型评估、模型测试、推理延迟等:
- 随机测试与训练验证测试分割(Randomized Testing with Train-Validation-Test Split:):在未发现的数据上测量模型准确性的典型测试。
- 交叉验证技术(Cross-Validation Techniques):测量数据分割的多次迭代的性能,例如K-Fold、LOOCV、Bootstrap。
- 可解释性测试(Explainability Tests):当模型(如DNN)不可解释时很有用。主要有两种类型:模型不可知测试和模型特定测试。
- 安全测试(Security Test):防止使用中毒数据欺骗模型的对抗性攻击。再次,有两种变体:白盒(具有模型参数知识)和黑盒。
- 覆盖测试(Coverage Tests):一种系统的方法,以确保看不见的数据足够多样化,涵盖广泛的输入场景。
- 偏见/公平性测试(Bias / Fairness Tests):确保模型不歧视任何人口学。
- 隐私测试(Privacy Tests):防止隐私攻击/侵犯。模型推断不应使计算出训练数据成为可能,并且推断的数据中不应嵌入PII。
- 性能测试(Performance Tests):模型推理是否发生在用例的延迟SLA内。
- 漂移测试(Drift Tests):防止概念/数据漂移。
- 代理测试(Tests for Agency):模型结果与人类行为的接近程度。
带有代码示例的详细示例
与Eugene Yan的文章相似,但篇幅更长,重点不同,代码示例更详细:
-
Testing ML Systems: Code, Data and Models (in Made With ML) by Gokul Mohandas
-
Snorkel Intro Tutorial: Data Slicing by Snorkel AI
总结
当谈到机器学习测试时,它与软件测试大不相同。它还没有像传统测试那样成熟和被广泛理解。
对于在生产中部署,您不应该只关注模型评估,还应该测试模型的切片、运行时性能、偏差、安全性等。
我们都在想办法测试机器学习模型。
- 13 次浏览
【软件质量】测试、评估(Assessment)和评估(Evaluation)之间的差异
视频号
微信公众号
知识星球
我们所说的测试、评估和评估是什么意思?
当在教育环境中进行定义时,评估、评估和测试都用于衡量学生掌握了多少指定材料,学生学习材料的情况如何,以及学生实现既定目标的情况如何。尽管您可能认为评估只会为讲师提供分数或等级的依据信息,但评估也有助于您评估自己的学习情况。
教育专业人员区分评估、评估和测试。然而,就本教程而言,您真正需要理解的是,这是三个不同的术语,用于指计算您对给定主题的了解程度的过程,并且每个术语都有不同的含义。为了简化事情,我们将在本教程中使用“评估”一词来指代衡量您所知和所学内容的过程。
如果你好奇,这里有一些定义:
- 测试(test )或测验(quiz )用于检查某人对某事的知识,以确定他或她知道或已经学到了什么。测试衡量已经达到的技能或知识水平。
- 评估(Evaluation )是根据标准和证据做出判断的过程。
- 评估(Assessment )是记录知识、技能、态度和信念的过程,通常是可衡量的。评估的目标是做出改进,而不是简单地被评判。在教育背景下,评估是描述、收集、记录、评分和解释学习信息的过程。
为什么评估(Assessment)很重要?
希望在你生命的这一点上,你已经发现学习可以很有趣!你可能也意识到,无论你是在教室、汽车还是厨房里,你都在不断地学习。
评估有助于你对自己的学习能力建立信心。
也许你听说过全球工作文化正在发生变化。与你的祖父不同,你一生中可能会有很多不同的工作和职业。为了取得成功,你需要对自己的学习能力有信心,你需要成为一名终身学习者。评估在培养你对学习能力的信心以及发展你的终身学习技能方面发挥着关键作用。
- 134 次浏览