Dependency hell is a well-known pain point in the development of large software projects and machine learning (ML) code bases are not immune from it. In fact, ML applications suffer from an additional form, namely, "data source dependency hell". This term refers to the central role played by data and its unique quirks that often lead to unexpected failures of ML models which cannot be explained by code changes. In this paper, we present an automated dependency mapping framework that allows MLOps engineers to monitor the whole dependency map of their models in a fast paced engineering environment and thus mitigate ahead of time the consequences of any data source changes (e.g., re-train model, ignore data, set default data etc.). Our system is based on a unified and generic approach, employing techniques from static analysis, from which data sources can be identified reliably for any type of dependency on a wide range of source languages and artefacts. The dependency mapping framework is exposed as a REST web API where the only input is the path to the Git repository hosting the code base. Currently used by MLOps engineers at Microsoft, we expect such dependency map APIs to be adopted more widely by MLOps engineers in the future.
translated by 谷歌翻译
机器学习(ML)研究出版物通常在GitHub上提供开源实现,使他们的受众可以复制,验证甚至扩展机器学习算法,数据集和元数据。但是,到目前为止,关于此类ML研究存储库的协作活动程度知之甚少,特别是(1)此类存储库从叉子获得贡献的程度,(2)此类贡献的性质(即类型,变化),以及(3)变更的性质,这些变化未归还给叉子,这可能代表了错过的机会。在本文中,我们对1,346毫升研究存储库及其67,369叉进行了验证,无论是定量还是定性(通过Hindle等人的构建代码更改的开创性分类法)。我们发现,尽管ML研究存储库是大量分叉的,但只有9%的叉子对叉子存储库进行了修改。后者的42%发送给家长存储库的更改,其中一半(52%)被父家存储库接受。我们对539个贡献的定性分析和378个本地(仅叉)变化,扩展了Hindle等人的分类法,其中一个与ML(数据)相关的新顶级变更类别和15个新的子类别,包括9个ML--特定的(输入数据,输出数据,程序数据,共享,变更评估,参数调整,性能,预处理,模型培训)。虽然没有由叉子造成的更改主要是涉及域特定于域的定制和本地实验(例如,参数调整),但原点ML存储库确实错过了不可忽视的15.4%文档更改的13.6%的功能更改,而功能更改的13.6%和11.4%的错误修复更改。本文中的发现将对从业者,研究人员,工具匠和教育者有用。
translated by 谷歌翻译
研究过程自动化 - 对科学仪器,计算机,数据存储和其他资源的可靠,高效和可重复执行的可靠,高效和可重复执行,这是现代科学的基本要素。我们在此处报告Globus研究数据管理平台内的新服务,该服务可以将各种研究过程的规范作为可重复使用的动作集,流量以及在异质研究环境中执行此类流动的集合。为了以广泛的空间范围(例如,从科学仪器到远程数据中心)和时间范围(从几秒钟到几周),这些Globus自动化服务功能:1)云托管以可靠地执行长期持久的流量,尽管零星的失败,但这些Globus自动化服务功能:1) ; 2)声明性符号和可扩展的异步行动提供商API,用于定义和执行涉及任意资源的各种行动和流动规范; 3)授权授权机制,用于安全调用动作。这些服务允许研究人员将广泛的研究任务的管理外包和自动化为可靠,可扩展和安全的云平台。我们向Globus自动化服务提供用例
translated by 谷歌翻译
Machine Learning for Source Code (ML4Code) is an active research field in which extensive experimentation is needed to discover how to best use source code's richly structured information. With this in mind, we introduce JEMMA, an Extensible Java Dataset for ML4Code Applications, which is a large-scale, diverse, and high-quality dataset targeted at ML4Code. Our goal with JEMMA is to lower the barrier to entry in ML4Code by providing the building blocks to experiment with source code models and tasks. JEMMA comes with a considerable amount of pre-processed information such as metadata, representations (e.g., code tokens, ASTs, graphs), and several properties (e.g., metrics, static analysis results) for 50,000 Java projects from the 50KC dataset, with over 1.2 million classes and over 8 million methods. JEMMA is also extensible allowing users to add new properties and representations to the dataset, and evaluate tasks on them. Thus, JEMMA becomes a workbench that researchers can use to experiment with novel representations and tasks operating on source code. To demonstrate the utility of the dataset, we also report results from two empirical studies on our data, ultimately showing that significant work lies ahead in the design of context-aware source code models that can reason over a broader network of source code entities in a software project, the very task that JEMMA is designed to help with.
translated by 谷歌翻译
连续的软件工程在许多领域已变得司空见惯。但是,在调节需要考虑其他问题的密集部门时,通常认为很难采用连续的开发方法,例如DevOps。在本文中,我们提出了一种将拉力请求用作设计控件的方法,并将这种方法应用于认证的医疗系统中的机器学习,这是一种新颖的技术,这是一种新颖的技术,旨在为机器学习系统增加解释性,作为监管审核跟踪。我们以前曾使用过一种工业系统来证明这种方法,以证明如何以连续的方式开发医疗系统。
translated by 谷歌翻译
拉力请求是当今协作软件开发和代码审核过程的关键部分。但是,当审阅者或作者不积极参与拉动请求时,拉动请求也可以减慢软件开发过程。在这项工作中,我们设计了一项端到端服务,以提醒作者或审阅者与他们的逾期拉动请求互动,以加速逾期拉动请求。首先,我们根据努力估算和机器学习使用模型来预测给定拉的请求的完成时间。其次,我们使用活动检测来滤除可能逾期的拉请请求,但仍在采取足够的动作。最后,我们使用演员身份证来了解拉动请求的阻止者是谁,并推动适当的演员(作者或审稿人)。轻推的主要新颖性是它成功地减少了拉动请求解决时间,同时确保开发人员认为发送的通知在成千上万的存储库中是有用的。在Microsoft使用的147个存储库的随机试验中,Nudge能够将拉的请求分辨率时间减少60%,而与Nudge未发送通知的逾期拉动请求相比,该请求的8,500次拉。此外,收到推动通知的开发人员将这些通知的73%置于正面。我们观察到在Microsoft的8,000个存储库中扩展Nudge的部署时,我们观察到了类似的结果,在整整一年中,Nudge发送了210,000个通知。这表明了Nudge可以扩展到数千个存储库的能力。最后,我们对选择通知的定性分析指示了未来研究的领域,例如在拉动请求和开发人员的可用性中考虑依赖性。
translated by 谷歌翻译
我们介绍了AIDA的设计和首次概念验证实现,AIDA是一种自主智能开发人员,从头开始开发软件。AIDA采用软件需求规范,并在语义知识图上使用推理来解释需求,然后设计和写入软件以满足它们。AIDA在数据,算法和代码的核心领域中同时使用声明性和程序知识,以及一些常识。推理代码库使用这些知识来识别所需的组件,然后设计并构建成为软件的必要信息结构。这些结构,激励要求以及由此产生的源代码本身都是添加到知识图中的所有新知识,可以用于将来的推理。这样,Aida在编写代码时也学习,并在编写后续代码时变得更加有效。
translated by 谷歌翻译
类似于开放数据计划,数据科学作为社区,不仅启动了分享的举措,而且不仅可以分享整个管道,衍生物,文物等(开放数据科学)。但是,在如何促进分享,转换等方面存在的少数努力。此视觉纸张进一步逐步并提出Kek,这是一个不仅允许共享数据科学管道和共享数据科学管道的开放联合数据科学平台他们的(META)数据还提供了有效搜索的方法,并且在理想情况下,甚至允许以联合方式跨平台组合和定义管道。在这样做时,Kek解决了到目前为止忽视的忽视挑战实际上发现了语义相关的文物,可以组合以实现某个目标。
translated by 谷歌翻译
我们为AI驱动数据库提供了一个SYSML框架。使用Baihe,可能会改装现有的关系数据库系统以使用学习组件进行查询优化或其他常见任务,例如例如,学习索引结构。为确保Baihe的实用性和现实世界适用性,其高级架构基于以下要求:与核心系统的分离,最小的第三方依赖,鲁棒性,稳定性和容错,以及稳定性和可配置性。基于高级架构,我们将描述Baihe的具体实现PostgreSQL,并为学习查询优化器提供了实例使用情况。为了服务于从业者,以及DB和AI4DB社区的研究人员将在开源许可下发布PostgreSQL的Baihe。
translated by 谷歌翻译
通过分析大量数据来提供决策支持,大数据正在改革许多工业域。大数据测试旨在确保大数据系统在维护数据的性能和质量时运行平稳且无错误。但是,由于数据的多样性和复杂性,测试大数据具有挑战性。虽然众多研究对大数据测试进行了综合审查,但解决了测试技术和挑战的综合性尚未混淆。因此,我们对大数据测试技术(2010年 - 2021年)进行了系统审查。本文通过突出显示每个处理阶段的技术来讨论测试数据的处理。此外,我们讨论了挑战和未来的方向。我们的发现表明,已经使用不同的功能,非功能性和组合(功能和非功能性)测试技术来解决与大数据相关的特定问题。同时,在MapReduce验证阶段,大多数测试挑战都面临。此外,组合测试技术是与其他技术相结合的应用技术之一(即随机测试,突变测试,输入空间分区和等价测试),以解决在大数据测试期间面临的各种功能故障挑战。
translated by 谷歌翻译
程序的图表通常是用于代码研究的机器学习的核心要素。我们介绍了一个开源Python库Python_graphs,该图片将静态分析应用于构建适合培训机器学习模型的Python程序的图表。我们的库承认控制流图,数据流图和复合``程序图''的构建,这些图形结合了控制流,数据流,句法和词汇信息。我们介绍了图书馆的功能和局限性,进行案例研究,将图书馆应用于数百万竞争性的编程提交,并展示图书馆的机器学习研究实用程序。
translated by 谷歌翻译
操作系统包括许多启发式算法,旨在提高整体存储性能和吞吐量。由于此类启发式is不能适用于所有条件和工作负载,因此系统设计人员诉诸用户对用户的众多可调参数揭示 - 基本上负担用户不断优化自己的存储系统和应用程序。存储系统通常负责I / O重型应用中的大多数延迟,因此即使是小的总延迟改善也可能很重要。机器学习(ml)技术承诺学习模式,从它们概括,并实现适应更改工作负载的最佳解决方案。我们提出ML解决方案成为OSS中的一流组件,并更换了动态优化存储系统的手动启发式。在本文中,我们描述了我们所提出的ML架构,称为KML。我们开发了一个原型KML体系结构,并将其应用于两个问题:最佳readAhead和NFS读取大小值。我们的实验表明,KML消耗了很少的操作系统资源,延迟可忽略不计,但可以学习可以分别为两种用例的2.3倍或15倍提高I / O吞吐量的模式 - 即使是复杂的,也不是为了复杂 - 在不同的存储设备上同时运行混合工作负载。
translated by 谷歌翻译
负责任的AI被广泛认为是我们时代最大的科学挑战之一,也是释放AI市场并增加采用率的关键。为了应对负责任的AI挑战,最近已经发布了许多AI伦理原则框架,AI系统应该符合这些框架。但是,没有进一步的最佳实践指导,从业者除了真实性之外没有什么。同样,在算法级别而不是系统级的算法上进行了重大努力,主要集中于数学无关的道德原则(例如隐私和公平)的一部分。然而,道德问题在开发生命周期的任何步骤中都可能发生,从而超过AI算法和模型以外的系统的许多AI,非AI和数据组件。为了从系统的角度操作负责任的AI,在本文中,我们采用了一种面向模式的方法,并根据系统的多媒体文献综述(MLR)的结果提出了负责任的AI模式目录。与其呆在道德原则层面或算法层面上,我们专注于AI系统利益相关者可以在实践中采取的模式,以确保开发的AI系统在整个治理和工程生命周期中负责。负责的AI模式编目将模式分为三组:多层次治理模式,可信赖的过程模式和负责任的逐设计产品模式。这些模式为利益相关者实施负责任的AI提供了系统性和可行的指导。
translated by 谷歌翻译
随着研究人员和从业人员将机器学习应用于越来越多的软件工程问题,他们使用的方法变得更加复杂。许多现代方法都以抽象语法树(AST)或其扩展形式使用内部代码结构:基于路径的表示,复杂的图将AST与其他边缘结合在一起。即使可以使用不同的解析器来从代码中提取AST的过程,但选择解析器对最终模型质量的影响仍然没有研究。此外,研究人员经常省略提取特定代码表示的确切细节。在这项工作中,我们在方法名称预测任务中评估了两个模型,即Code2Seq和Treelstm,由八个不同的解析器用于Java语言。为了将数据制备的过程与不同的解析器统一,我们开发了SuperParser,这是基于Pathminer的多语言解析器 - 不合Snostic库。 SuperParser促进了适用于培训和评估ML模型的数据集的端到端创建,这些模型与源代码中的结构信息合作。我们的结果表明,不同解析器建造的树木的结构和内容各不相同。然后,我们分析这种多样性如何影响模型的质量,并表明两种模型最不合适的解析器之间的质量差距非常重要。最后,我们讨论了解析器的其他功能,研究人员和从业人员在选择解析器时应考虑这些特征,以及对模型质量的影响。 SuperParser代码可在https://doi.org/10.5281/zenodo.6366591上公开获得。我们还发布了Java-Norm,即我们用于评估模型的数据集:https://doi.org/10.5281/zenodo.6366599。
translated by 谷歌翻译
基于代理的建模(ABM),仿真(ABS)和分布式计算(ABC)是建立的方法。互联网和基于Web的技术是合适的运营商。本文是一份技术报告,其中具有JavaScript Agent Machine(JAM)平台的某些教程,以及使用AgentJS编程的代理程序,该代理是广泛使用的JavaScript编程语言的子集,用于编程基于移动状态的反应性代理。除了解释特定设计选择的动机以及在JavaScript中介绍架构和代理编程的核心概念外,简短示例还说明了JAM平台的功能及其组件,用于部署大型多机构系统在强大的强大中诸如互联网之类的异质环境。果酱适合在强大的异质和移动环境中部署。最后,果酱可用于ABC以及在统一方法中用于ABS,最终使移动人群感测和模拟(ABS)。
translated by 谷歌翻译
现代软件系统和产品越来越依赖机器学习模型,以基于与用户和系统的交互进行数据驱动的决策,例如计算基础架构。对于更广泛的采用,这种做法必须(i)容纳没有ML背景的软件工程师,并提供(ii)提供优化产品目标的机制。在这项工作中,我们描述了一般原则和特定的端到端毫升平台,为决策和反馈集合提供易于使用的API。循环仪支持从在线数据收集到模拟培训,部署,推理的完整端到端ML生命周期,并扩展支持和调整产品目标的评估和调整。我们概述了平台架构和生产部署的整体影响 - 循环仪当前托管700毫升型号,每秒达到600万决定。我们还描述了学习曲线并总结了平台采用者的经验。
translated by 谷歌翻译
System auditing has emerged as a key approach for monitoring system call events and investigating sophisticated attacks. Based on the collected audit logs, research has proposed to search for attack patterns or track the causal dependencies of system events to reveal the attack sequence. However, existing approaches either cannot reveal long-range attack sequences or suffer from the dependency explosion problem due to a lack of focus on attack-relevant parts, and thus are insufficient for investigating complex attacks. To bridge the gap, we propose Zebra, a system that synergistically integrates attack pattern search and causal dependency tracking for efficient attack investigation. With Zebra, security analysts can alternate between search and tracking to reveal the entire attack sequence in a progressive, user-guided manner, while mitigating the dependency explosion problem by prioritizing the attack-relevant parts. To enable this, Zebra provides (1) an expressive and concise domain-specific language, Tstl, for performing various types of search and tracking analyses, and (2) an optimized language execution engine for efficient execution over a big amount of auditing data. Evaluations on a broad set of attack cases demonstrate the effectiveness of Zebra in facilitating a timely attack investigation.
translated by 谷歌翻译
组织依靠机器学习工程师(MLE)来操作ML,即部署和维护生产中的ML管道。操作ML或MLOP的过程包括(i)数据收集和标记的连续循环,(ii)实验以改善ML性能,(iii)在多阶段部署过程中评估,以及(iv)监视(iv)性能下降。当一起考虑这些责任似乎令人震惊 - 任何人如何进行MLOP,没有解决的挑战,对工具制造商有什么影响?我们对在包括聊天机器人,自动驾驶汽车和金融在内的许多应用程序中工作的18个MLE进行了半结构化的民族志访谈。我们的访谈暴露了三个变量,这些变量控制了生产ML部署的成功:速度,验证和版本。我们总结了成功实验,部署和维持生产绩效的共同实践。最后,我们讨论了受访者的痛点和反图案,对工具设计产生了影响。
translated by 谷歌翻译
在过去几年中,自动化机器学习(AUTOML)工具的普及有所增加。机器学习(ML)从业人员使用自动工具来自动化和优化功能工程,模型培训和超参数优化的过程。最近的工作对从业人员使用汽车工具的经验进行了定性研究,并根据其性能和提供的功能比较了不同的汽车工具,但是现有的工作都没有研究在大规模实际项目中使用Automl工具的实践。因此,我们进行了一项实证研究,以了解ML从业者如何在其项目中使用汽车工具。为此,我们在GitHub上托管的大量开源项目存储库中研究了最常用的十大汽车工具及其各自的用法。我们研究的结果表明1)ML从业人员主要使用哪种汽车工具,以及2)使用这些汽车工具的存储库的特征。此外,我们确定了使用Automl工具的目的(例如,模型参数采样,搜索空间管理,模型评估/错误分析,数据/功能转换和数据标记)以及ML管道的阶段(例如功能工程)使用工具。最后,我们报告在同一源代码文件中使用Automl工具的频率。我们希望我们的结果可以帮助ML从业人员了解不同的汽车工具及其使用情况,以便他们可以为其目的选择正确的工具。此外,Automl工具开发人员可以从我们的发现中受益,以深入了解其工具的用法并改善其工具以更好地适合用户的用法和需求。
translated by 谷歌翻译
Recent advances in deep learning (dl) have led to the release of several dl software libraries such as pytorch, Caffe, and TensorFlow, in order to assist machine learning (ml) practitioners in developing and deploying state-of-the-art deep neural networks (DNN), but they are not able to properly cope with limitations in the dl libraries such as testing or data processing. In this paper, we present a qualitative and quantitative analysis of the most frequent dl libraries combination, the distribution of dl library dependencies across the ml workflow, and formulate a set of recommendations to (i) hardware builders for more optimized accelerators and (ii) library builder for more refined future releases. Our study is based on 1,484 open-source dl projects with 46,110 contributors selected based on their reputation. First, we found an increasing trend in the usage of deep learning libraries. Second, we highlight several usage patterns of deep learning libraries. In addition, we identify dependencies between dl libraries and the most frequent combination where we discover that pytorch and Scikit-learn and, Keras and TensorFlow are the most frequent combination in 18% and 14% of the projects. The developer uses two or three dl libraries in the same projects and tends to use different multiple dl libraries in both the same function and the same files. The developer shows patterns in using various deep-learning libraries and prefers simple functions with fewer arguments and straightforward goals. Finally, we present the implications of our findings for researchers, library maintainers, and hardware vendors.
translated by 谷歌翻译