There are many excellent toolkits which provide support for developing machine learning software in Python, R, Matlab, and similar environments. Dlib-ml is an open source library, targeted at both engineers and research scientists, which aims to provide a similarly rich environment for developing machine learning software in the C++ language. Towards this end, dlib-ml contains an extensible linear algebra toolkit with built in BLAS support. It also houses implementations of algorithms for performing inference in Bayesian networks and kernel-based methods for classification, regression, clustering, anomaly detection, and feature ranking. To enable easy use of these tools, the entire library has been developed with contract programming, which provides complete and precise documentation as well as powerful debugging tools.
translated by 谷歌翻译
scikit-learn is an increasingly popular machine learning library. Written in Python, it is designed to be simple and efficient, accessible to non-experts, and reusable in various contexts. In this paper, we present and discuss our design choices for the application programming interface (API) of the project. In particular, we describe the simple and elegant interface shared by all learning and processing units in the library and then discuss its advantages in terms of composition and reusability. The paper also comments on implementation details specific to the Python ecosystem and analyzes obstacles faced by users and developers of the library.
translated by 谷歌翻译
Array programming provides a powerful, compact, expressive syntax for accessing, manipulating, and operating on data in vectors, matrices, and higher-dimensional arrays [1]. NumPy is the primary array programming library for the Python language [2,3,4,5]. It plays an essential role in research analysis pipelines in fields as diverse as physics, chemistry, astronomy, geoscience, biology, psychology, material science, engineering, finance, and economics. For example, in astronomy, NumPy was an important part of the software stack used in the discovery of gravitational waves [6] and the first imaging of a black hole [7].Here we show how a few fundamental array concepts lead to a simple and powerful programming paradigm for organizing, exploring, and analyzing scientific data. NumPy is the foundation upon which the entire scientific Python universe is constructed. It is so pervasive that several projects, targeting audiences with specialized needs, have developed their own NumPy-like interfaces and array objects. Because of its central position in the ecosystem, NumPy increasingly plays the role of an interoperability layer between these new array computation libraries.
translated by 谷歌翻译
Deep learning frameworks have often focused on either usability or speed, but not both. PyTorch is a machine learning library that shows that these two goals are in fact compatible: it provides an imperative and Pythonic programming style that supports code as a model, makes debugging easy and is consistent with other popular scientific computing libraries, while remaining efficient and supporting hardware accelerators such as GPUs. In this paper, we detail the principles that drove the implementation of PyTorch and how they are reflected in its architecture. We emphasize that every aspect of PyTorch is a regular Python program under the full control of its user. We also explain how the careful and pragmatic implementation of the key components of its runtime enables them to work together to achieve compelling performance. We demonstrate the efficiency of individual subsystems, as well as the overall speed of PyTorch on several common benchmarks.
translated by 谷歌翻译
LIBLINEAR is an open source library for large-scale linear classification. It supports logistic regression and linear support vector machines. We provide easy-to-use command-line tools and library calls for users and developers. Comprehensive documents are available for both beginners and advanced users. Experiments demonstrate that LIBLINEAR is very efficient on large sparse data sets.
translated by 谷歌翻译
一般矩阵乘法或GEMM内核在高性能计算和机器学习中占据中心位置。最近的NVIDIA GPU包括Gemm加速器,如Nvidia的张量核心。他们的剥削受到双语言问题的阻碍:它需要低级编程,这意味着低程序员的工作效率或使用只提供有限组件集的库。由于建立的组件方面的REPRASING算法经常引入开销,因此图书馆缺乏灵活性限制了探索新算法的自由。因此,使用GEMMS的研究人员无法立即享受编程生产力,高性能和研究灵活性。在本文中,我们解决了这个问题。我们在科学朱莉娅编程语言中展示了三组抽象和接口来编程宝石。界面和抽象共同设计用于研究人员的需求和朱莉娅的特征,以实现足够的担忧和灵活性的充分分离,以便在不支付性能价格的情况下轻松地扩展基本宝石。将我们的Gemms与最先进的图书馆Cublas和Cutlass进行比较,我们证明我们的性能在图书馆的相同球场中,并且在某些情况下甚至超过它,而无需在CUDA C ++中编写单行代码或者组装,而不面临灵活限制。
translated by 谷歌翻译
Scikit-learn is a Python module integrating a wide range of state-of-the-art machine learning algorithms for medium-scale supervised and unsupervised problems. This package focuses on bringing machine learning to non-specialists using a general-purpose high-level language. Emphasis is put on ease of use, performance, documentation, and API consistency. It has minimal dependencies and is distributed under the simplified BSD license, encouraging its use in both academic and commercial settings. Source code, binaries, and documentation can be downloaded from http://scikit-learn.sourceforge.net.
translated by 谷歌翻译
在过去的二十年中,几个机器学习(ML)库已自由使用。许多研究都使用此类图书馆对预测软件工程(SE)任务进行实证研究。但是,使用一个库在另一个库上使用的差异被忽略了,隐含地假设使用这些库中的任何一个都会为用户提供相同或非常相似的结果。本文旨在提高人们对使用不同ML库进行软件开发工作估算(见)时所产生的差异的认识,这是研究最广泛的SE预测任务之一。为此,我们研究了3个最受欢迎的ML开源库(即不同语言)(即Scikit-Learn,Caret和Weka)提供的4个确定性机器学习者。我们进行了一项彻底的实证研究,比较了机器学习者在5个最常见的数据集上的性能,请参见方案(即,盒子内ML和TUNED-ML)以及深入的分析其API的文档和代码。我们的研究结果表明,在总共研究的105例病例中,这3个文库提供的预测平均为95%。在大多数情况下,这些差异明显很大,并且误容最多。每个项目3,000小时。此外,我们的API分析表明,这些库为用户提供了可以操纵参数的不同级别的控制,并且总体上缺乏清晰度和一致性,这可能会误导用户。我们的发现强调,ML库是参观研究的重要设计选择,这可能会导致性能差异。但是,这种差异不足。最后,我们通过强调开放式挑战,对图书馆的开发商以及使用它们的研究人员和从业者提出建议。
translated by 谷歌翻译
随着机器学习系统的计算要求以及机器学习框架的规模和复杂性的增加,基本框架创新变得具有挑战性。尽管计算需求驱动了最近的编译器,网络和硬件的进步,但通过机器学习工具对这些进步的利用却以较慢的速度发生。这部分是由于与现有框架原型制作新的计算范式有关的困难。大型框架将机器学习研究人员和从业人员作为最终用户的优先级优先,并且很少关注能够向前推动框架的系统研究人员 - 我们认为两者都是同等重要的利益相关者。我们介绍了手电筒,这是一个开源库,旨在通过优先考虑开放式,模块化,可定制的内部设备以及最新的,可用于研究的模型和培训设置,以刺激机器学习工具和系统的创新。手电筒使系统研究人员能够快速原型并尝试机器学习计算中的新思想,并且开销低,与其他流行的机器学习框架竞争并经常超过其他流行的机器学习框架。我们将手电筒视为一种工具,可以使可以使广泛使用的图书馆受益,并使机器学习和系统研究人员更加紧密地结合在一起。手电筒可从https://github.com/flashlight/flashlight获得。
translated by 谷歌翻译
在过去的几年中,我们目睹了机器学习(ML)应用的巨大增加。越来越多的程序函数不再用代码编写,而是使用ML算法从大量数据样本中学到的。但是,经常被忽视的是管理最终的ML模型以及将它们带入真实的生产系统的复杂性。在软件工程中,我们花了数十年的时间来开发工具和方法来创建,管理和组装复杂的软件模块。我们介绍了当前技术来管理复杂软件的概述,以及如何应用于ML模型。
translated by 谷歌翻译
设置机器人环境快速测试新开发的算法仍然是一个困难且耗时的过程。这给有兴趣执行现实世界机器人实验的研究人员带来了重大障碍。Robotio是一个旨在解决此问题的Python库。它着重于为机器人,抓地力和摄像机等提供常见,简单和结构化的Python接口。这些接口以及这些接口的实现为常见硬件提供了。此启用使用机器人的代码可以在不同的机器人设置上可移植。在建筑方面,Robotio旨在与OpenAI健身房环境以及ROS兼容。提供了这两种示例。该库与许多有用的工具一起融合在一起,例如相机校准脚本和情节记录功能,这些功能进一步支持算法开发。
translated by 谷歌翻译
在本文中,我们建议采用MDE范式来开发机器学习(ML)的软件系统,重点关注物联网(IoT)域。我们说明了如何将两种最先进的开源建模工具,即蒙蒂安娜和ML-Quadrat用于此目的,如案例研究所证明的那样。案例研究说明了使用ML使用MNIST参考数据集对手写数字的自动图像识别的ML,特别是深人造神经网络(ANN),并将机器学习组件集成到物联网系统中。随后,我们对两个框架进行了功能比较,设置了一个分析基础,以包括广泛的设计考虑因素,例如问题域,ML集成到较大系统中的方法以及支持的ML方法以及主题最近对ML社区的强烈兴趣,例如Automl和MLOP。因此,本文的重点是阐明ML域中MDE方法的潜力。这支持ML工程师开发(ML/软件)模型而不是实施代码,并通过启用ML功能作为IoT或IoT的组件的现成集成来实现设计的可重复性和模块化。网络物理系统。
translated by 谷歌翻译
Bridging cultures that have often been distant, Julia combines expertise from the diverse fields of computer science and computational science to create a new approach to numerical computing. Julia is designed to be easy and fast. Julia questions notions generally held as "laws of nature" by practitioners of numerical computing:1. High-level dynamic programs have to be slow, 2. One must prototype in one language and then rewrite in another language for speed or deployment, and 3. There are parts of a system for the programmer, and other parts best left untouched as they are built by the experts.We introduce the Julia programming language and its design -a dance between specialization and abstraction. Specialization allows for custom treatment. Multiple dispatch, a technique from computer science, picks the right algorithm for the right circumstance. Abstraction, what good computation is really about, recognizes what remains the same after differences are stripped away. Abstractions in mathematics are captured as code through another technique from computer science, generic programming.Julia shows that one can have machine performance without sacrificing human convenience.
translated by 谷歌翻译
Artificial Intelligence (AI) is having a tremendous impact across most areas of science. Applications of AI in healthcare have the potential to improve our ability to detect, diagnose, prognose, and intervene on human disease. For AI models to be used clinically, they need to be made safe, reproducible and robust, and the underlying software framework must be aware of the particularities (e.g. geometry, physiology, physics) of medical data being processed. This work introduces MONAI, a freely available, community-supported, and consortium-led PyTorch-based framework for deep learning in healthcare. MONAI extends PyTorch to support medical data, with a particular focus on imaging, and provide purpose-specific AI model architectures, transformations and utilities that streamline the development and deployment of medical AI models. MONAI follows best practices for software-development, providing an easy-to-use, robust, well-documented, and well-tested software framework. MONAI preserves the simple, additive, and compositional approach of its underlying PyTorch libraries. MONAI is being used by and receiving contributions from research, clinical and industrial teams from around the world, who are pursuing applications spanning nearly every aspect of healthcare.
translated by 谷歌翻译
机器学习算法必须能够有效地应对大量数据集。因此,他们必须在任何现代系统上进行良好的扩展,并能够利用独立于供应商的加速器的计算能力。在监督学习领域,支持向量机(SVM)被广泛使用。但是,即使是现代化和优化的实现,例如LIBSVM或ThunderSVM对于尖端硬件的大型非平凡的密集数据集也不能很好地扩展:大多数SVM实现基于顺序最小优化,这是一种优化的固有顺序算法。因此,它们不适合高度平行的GPU。此外,我们不知道支持不同供应商的CPU和GPU的性能便携式实现。我们已经开发了PLSSVM库来解决这两个问题。首先,我们将SVM的配方作为最小二乘问题。然后训练SVM沸腾以求解已知高度平行算法的线性方程系统。其次,我们提供了一个独立但高效的实现:PLSSVM使用不同的可互换后端 - openmp,cuda,opencl,sycl-支持来自多个GPU的NVIDIA,AMD或INTEL等各种供应商的现代硬件。 PLSSVM可以用作LIBSVM的倒入替换。与LIBSVM相比,与ThunderSVM相比,我们观察到高达10的CPU和GPU的加速度。我们的实施量表在多核CPU上缩放,并在多达256个CPU线程和多个GPU上平行加速为74.7,在四个GPU上的并行加速为3.71。代码,实用程序脚本和文档都可以在GitHub上获得:https://github.com/sc-sgs/plssvm。
translated by 谷歌翻译
无论是在功能选择的领域还是可解释的AI领域,都有基于其重要性的“排名”功能的愿望。然后可以将这种功能重要的排名用于:(1)减少数据集大小或(2)解释机器学习模型。但是,在文献中,这种特征排名没有以系统的,一致的方式评估。许多论文都有不同的方式来争论哪些具有重要性排名最佳的特征。本文通过提出一种新的评估方法来填补这一空白。通过使用合成数据集,可以事先知道特征重要性得分,从而可以进行更系统的评估。为了促进使用新方法的大规模实验,在Python建造了一个名为FSEVAL的基准测定框架。该框架允许并行运行实验,并在HPC系统上的计算机上分布。通过与名为“权重和偏见”的在线平台集成,可以在实时仪表板上进行交互探索图表。该软件作为开源软件发布,并在PYPI平台上以包裹发行。该研究结束时,探索了一个这样的大规模实验,以在许多方面找到参与算法的优势和劣势。
translated by 谷歌翻译
我们介绍了数据科学预测生命周期中各个阶段开发和采用自动化的技术和文化挑战的说明概述,从而将重点限制为使用结构化数据集的监督学习。此外,我们回顾了流行的开源Python工具,这些工具实施了针对自动化挑战的通用解决方案模式,并突出了我们认为进步仍然需要的差距。
translated by 谷歌翻译
OutlierDetection.jl is an open-source ecosystem for outlier detection in Julia. It provides a range of high-performance outlier detection algorithms implemented directly in Julia. In contrast to previous packages, our ecosystem enables the development highly-scalable outlier detection algorithms using a high-level programming language. Additionally, it provides a standardized, yet flexible, interface for future outlier detection algorithms and allows for model composition unseen in previous packages. Best practices such as unit testing, continuous integration, and code coverage reporting are enforced across the ecosystem. The most recent version of OutlierDetection.jl is available at https://github.com/OutlierDetectionJL/OutlierDetection.jl.
translated by 谷歌翻译
在过去几年中,自动化机器学习(AUTOML)工具的普及有所增加。机器学习(ML)从业人员使用自动工具来自动化和优化功能工程,模型培训和超参数优化的过程。最近的工作对从业人员使用汽车工具的经验进行了定性研究,并根据其性能和提供的功能比较了不同的汽车工具,但是现有的工作都没有研究在大规模实际项目中使用Automl工具的实践。因此,我们进行了一项实证研究,以了解ML从业者如何在其项目中使用汽车工具。为此,我们在GitHub上托管的大量开源项目存储库中研究了最常用的十大汽车工具及其各自的用法。我们研究的结果表明1)ML从业人员主要使用哪种汽车工具,以及2)使用这些汽车工具的存储库的特征。此外,我们确定了使用Automl工具的目的(例如,模型参数采样,搜索空间管理,模型评估/错误分析,数据/功能转换和数据标记)以及ML管道的阶段(例如功能工程)使用工具。最后,我们报告在同一源代码文件中使用Automl工具的频率。我们希望我们的结果可以帮助ML从业人员了解不同的汽车工具及其使用情况,以便他们可以为其目的选择正确的工具。此外,Automl工具开发人员可以从我们的发现中受益,以深入了解其工具的用法并改善其工具以更好地适合用户的用法和需求。
translated by 谷歌翻译
最新技术用于机器学习(ML)的最先进的超低功耗嵌入式设备的进展允许新的产品类别,其关键功能使ML功能在微控制器上能够具有小于1 MW功耗(TINYML)。Tinyml通过在低功耗嵌入式设备上聚合和分析边缘的数据来提供唯一的解决方案。但是,我们最近只能在微控制器上运行ml,并且该领域仍处于初期,这意味着硬件,软件和研究正在变化非常迅速。因此,已经为不同的平台开发了许多TinyML框架,以便于部署ML模型并标准化该过程。因此,在本文中,我们专注于基准标记的两个流行框架:Tensorflow Lite Micro(TFLM)在STM32-Nucleof401上的Arduino Nano BLE和Cube Ai上的Tensorflow Lite Micro(TFLM),为特定应用提供标准化的框架选择标准。
translated by 谷歌翻译