当前位置: 首页 > 科技观察

AI能否克服“GitHub危机”?

时间:2023-03-19 15:58:58 科技观察

今天机器学习面临着一些危机,这将阻碍这一领域的快速发展。这些危机源于更广泛的困境,即科学研究的可重复性。根据《自然》杂志对1,500名科学家进行的一项调查,70%的研究人员试图复制其他科学家的实验但未成功,超过50%的人未能复制自己的研究。再现性,也称为再现性,是科学方法的核心原则,有助于确保给定研究的结果不是一次性的,而是可复制的观察结果。在计算机科学中,可重复性有一个更狭义的定义:任何结果都应该通过提供所有数据和代码来记录,以便可以再次执行计算并获得相同的结果。不幸的是,人工智能(AI)和机器学习(ML)在透明度和可重复性方面表现不佳。例如,31位科学家在期刊《自然》发表的一篇文章严厉批评了一项谷歌健康实验研究,该研究记录了AI检测乳腺癌迹象的“成功”。对该实验持怀疑态度的科学家声称,谷歌的研究提供的有关AI模型如何构建和测试的细节太少,以至于它仅仅是对其专业知识的广告。如果没有关于如何创建该模型的足够信息,科学界几乎不可能审查和复制其结果。这导致人们越来越认为人工智能缺乏透明度,加剧了人类与人工智能系统之间的信任问题。为了维持机器学习的持续进步并使其在人工智能领域取得成功,解决该领域的可复制性和透明度问题至关重要。本文解释了AI可再现性危机的重要性,以及专门为机器学习构建的新版GitHub如何帮助解决这个问题。为什么需要专门用于机器学习的GitHubGitHub是一种基于云的代码开发和管理服务。该平台用于软件版本控制,可帮助开发人员在整个开发生命周期中跟踪代码更改。这使得安全地分支和合并项目成为可能,并确保代码可重复并且无论谁运行它都以相同的方式工作。由于人工智能和机器学习应用程序是用代码编写的,因此GitHub是管理它们的自然选择。不幸的是,人工智能与更传统的软件项目之间的一些差异使得GitHub不适合人工智能,从而导致机器学习的可重复性危机。GitHub在设计时并未将数据作为核心项目组件。传统的软件算法是由开发人员从头脑中汲取灵感,然后用确定性的、数学的、完整的图灵语言将它们写入代码中创建的。这使得软件具有高度的可重现性——重现给定软件所需的只是为任务优化的代码和库。机器学习算法不同,因为它们不是从开发人员的头脑中创造出来的,而是从数据中“总结”出来的。这意味着即使传统软件开发中记录的代码和运行环境变量保持不变,如果数据发生变化,机器学习算法也会发生变化。这是GitHubforAI问题的核心:即使跟踪用于开发AI算法的代码和库也无法重复,因为它依赖于数据,而不仅仅是代码。克服这一问题的一些方法是:自动数据版本控制:为避免因训练数据集不一致而导致的可重复性问题,数据版本控制必须是任何管理AI/ML项目的平台的关键功能。这为团队提供了一种自动跟踪对数据所做的所有更改的方法,确保结果可以与相应训练数据集的特定版本相关联。虽然今天的GitHub可以跟踪代码更改,但它无法跟踪数据。克服这一点将在解决人工智能的可重复性危机中发挥关键作用。不可变数据沿袭:不可变数据沿袭为数据相关的机器学习生命周期中的所有活动和资产提供不可更改的记录。这使机器学习团队能够跟踪其代码、模型和数据的每个版本。通过提供与机器学习模型相关的所有活动(从训练到生产)的不可变记录,它确保了可重复性并更好地管理历史数据集之间的关系。AI使用大量非结构化数据集GitHubforAI的问题不仅仅是无法跟踪数据的变化。传统软件和人工智能所依赖的数据类型完全不同。传统软件是用代码编写的,而代码是用文本表示的。通常,文本文件不是很大。但人工智能主要依赖于非结构化数据,如音频、图像和视频,这些数据的体积远大于文本文件,因此它们面临着额外的数据跟踪和管理挑战。将来自多个数据源的数据组合到单个数据存储中的过程称为提取、转换和加载(ETL)。这是将数据从源系统复制到目标系统的常见过程,可以将不同类型的数据一起处理。数据科学家和工程师需要数据版本控制、数据沿袭、处理大文件的能力,以及管理用于数据处理的脚本和库,以便为AI应用程序开发提取、转换和加载数据。本文讨论了针对此问题的一些新兴解决方案,但需要注意的是,此功能目前尚未内置到GitHub的核心中,因此无法在平台上正确管理告知机器学习算法的数据。机器学习模型参数增加了复杂性人工智能的可复制性挑战,以及使用GitHub进行机器学习的困难,超出了无法跟踪数据变化和管理大型非结构化数据集的范围。即使用于开发AI算法的代码、库和数据保持不变,由于模型参数的可变性,仍然不可能使用相同的AI系统复制相同的结果。如上所述,机器学习算法由数据提供信息。然而,这并不是影响系统的唯一因素。参数也会影响给定算法的操作。模型参数有两种类型:超参数和正常参数。超参数可以被认为是对学习过程的高级控制,影响给定模型的结果参数。机器学习模型经过训练后,参数代表了模型本身。超参数虽然在训练期间被学习算法使用,但并不是最终模型的一部分。根据定义,超参数在机器学习模型之外,因此无法从数据中估计它们的值。超参数的更改会导致机器学习模型的最终算法发生更改。如果说代码是构建人脑的蓝图,那么超参数和模型就是构建特定大脑的实现。这很重要,因为用于训练模型的相同代码库可以生成成百上千个不同的参数。实验结果跟踪和代码审查跟踪实验结果在测试机器学习模型时很重要。这些结果有助于确定哪种模型最适合使用,而GitHub无疑不是为了记录此类细节而设计的。虽然可以构建自定义解决方法,但由于时间和资源限制,此解决方案无法扩展并且许多开发人员无法访问。当然,管理机器学习模型还涉及代码审查和版本跟踪,这是GitHub擅长的地方。然而,虽然GitHub在跟踪代码和环境变量方面做得很好,但机器学习需要跟踪数据、参数、元数据、实验结果等。Git平台并不是为这种复杂程度而构建的,但幸运的是,有一些新兴的解决方案试图通过人工智能和机器学习来克服GitHub的局限性。AI和机器学习的GitHub替代方案除了GitHub之外,没有其他替代方案可以提供管理AI和ML项目的综合解决方案。理想情况下,GitHub是为从事人工智能和机器学习工作的数据科学家和工程师量身定制的。不过,在这样做之前,有针对上述不同问题的解决方案:Neptune是一种用于机器学习操作系统的元数据库服务,它提供了一个单一位置来记录、存储、显示、组织、比较和查询所有机器学习的元数据模型构建。提供有关使用Neptune归档数据版本的信息。这包括模型训练运行中的数据集版本控制、运行之间的数据集比较以及组织和共享数据集版本。Pachyderm是用于增强机器学习生命周期的数据层。该系统为自动化数据版本控制和不可变数据沿袭提供解决方案。DVC是为机器学习项目构建的开源版本控制系统。该工具允许数据科学家和工程师保存和重现实验结果、版本控制模型和数据,并建立部署和协作流程。Git大文件存储(GitLFS)在Git内部用文本指针替换音频样本、视频、数据集和图形等大文件,同时将文件内容存储在远程服务器上。这个工具是一个开源的Git扩展,用于对音频和视频数据集等大文件进行版本控制。它可以帮助开发人员更有效地处理大文件和二进制文件。DoIt是一个SQL数据库,能够以与Git完全相同的方式分叉、克隆、分支、合并、推送和拉取数据。它将自己定位为“Gitfordata”,虽然DoIt经常被用于版本跟踪以确保在各种其他用例中保持一致的模型可重复性,但在数据管理方面,它可以克服上述GitHub的缺点。LakeFS是一种数据管理工具,有两个开源付费软件即服务(SaaS)版本。该解决方案强调数据和代码的完全可重复性、快速数据恢复和PB级版本控制。DeltaLake是一个开源项目,它在S3、ADLS、GCS和HDFS等现有存储系统之上构建Lakehouse架构。该解决方案的多项功能使其成为机器学习的理想选择,包括用于数据共享的开放协议、可扩展的元数据处理、数据版本控制以及查看对数据所做的每项更改的审计历史记录的能力。