0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习研究需要掌握的9个工具

颖脉Imgtec ? 2023-10-12 08:28 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

学术界在推进技术方面发挥了巨大作用,但学术界和工业界往往存在一种分割状态。我们经常会看到这种现象:无数很棒的辅助工具在学术界被忽视,但在工业界很受欢迎。对于很多研究者来说,学习一种新工具可能存在困难,不愿意花费过多的时间去尝试,在当前自己掌握的工具足以应对各种问题时尤其如此。

其实,有些工具一时未见到效果,在后期可能会有十倍的回报。

来自剑桥大学的计算机科学博士生 Aliaksei Mikhailiuk为我们整理了机器学习博士在获得学位之前需要掌握的九种工具。他在剑桥大学获得物理学硕士学位,在布里斯托大学获得工程学士学位。他对研究、开发、部署感兴趣,还能熟练掌握计算机视觉算法、聚合和自然语言处理等技术。现任职华为(英国)高级人工智能工程师

Mikhailiuk 将这些工具按用途分为四类:可隔离环境、实验跟踪、相互协作以及可视化


一、可隔离环境工具

机器学习是一个快速发展的领域,常用的包更新非常频繁。尽管开发人员做出了努力,但较新的版本通常与旧版本不兼容,这样给研究者带来很多麻烦。幸运的是,有工具可以解决这个问题!在这一方面,Mikhailiuk 推荐了两个工具:Docker 和 Conda。

1. Docker

Mikhailiuk 攻读博士学位期间,他有一台由大学管理的机器,学校会定期进行更新。通常情况下是一夜之间更新,没有任何通知。你可以想象,当更新后的第二天早上发现自己大部分工作与最新的驱动程序不兼容,是多么令人崩溃。Mikhailiuk 发现 Docker 可以很好地解决。

Docker 允许将软件包装在称为容器的包中。容器是具有自己的软件、库和配置文件的独立单元。在一个简化的视图中,容器是一个独立的虚拟操作系统,它具有与外部世界通信的手段。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的 Docker 由以下几个部分组成:

  • DockerClient 客户端
  • Docker Daemon 守护进程
  • Docker Image 镜像
  • DockerContainer 容器

2. Conda

现在,复用别人的代码成为了一种新的规范。GitHub 作为一个代码托管云服务网站,帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改。研究者可以克隆上面的代码,安装并提出自己的解决方案,而不需要自己写任何东西。

但是 GitHub 也有不方便的情况,当多个项目一起使用时,你会遇到包管理问题,因为不同的项目需要不同版本的包。

Conda 可以解决这个问题 。Conda 是一个开源跨平台语言无关的包管理与环境管理系统,它允许创建多个环境并快速安装、运行和更新包及其依赖项,用户可以在隔离的环境之间快速切换。


二、运行、跟踪和记录实验工具

在应用领域想要获得博士学位,严谨性和一致性是两个基本支柱。假如你是研究机器学习模型的,或多或少都能遇到这种情况——你创建了许多不同的模型来试验不同的参数甚至整个架构。你还想尝试优化器的选择、学习率、时期数等。因此,实际上,你将进行许多不同的实验,并且将越来越难以整理结果。在这一方面,Aliaksei Mikhailiuk 向我们展示了如何正确方便地管理和记录自己的 ML 和 DL 实验工具,主要推荐了 Weights & Biases,MLFlow,Screen 工具。

3. Weights & Biases

3a49f7f4-6896-11ee-9788-92fbcf53809c.png

▲wandb panel 一组简单指标 Snapshot——训练损失、学习率和平均验证损失。请注意,你还可以跟踪系统参数。

W&B(Weights & Biases) 是一个平台,可以帮助数据科学家跟踪他们的模型、数据集、系统信息等。只需几行代码,用户就可以开始跟踪有关这些功能的所有内容。它免费供个人使用,团队使用通常需要付费,但用于学术目的的团队是免费的。你可以将 W&B 与自己喜欢的框架一起使用,例如 TensorFlow、Keras、PyTorch、SKlearn、fastai 等。

W&B 提供了以下 4 个有用的工具:

  • Dashboard:实验跟踪;
  • Artifacts:数据集版本控制、模型版本控制;
  • Sweeps:超参数优化;
  • Reports 保存和共享可重现的结果。

4. MLFlow

MLFlow 是一个能够覆盖机器学习全流程(从数据准备到模型训练到最终部署)的新平台,它是一款管理机器学习工作流程的工具,主要有三个功能模块:Tracking 跟踪和记录、Project 项目管理和 Models 模型管理。MLflow 支持 JavaPython、R 和 REST API 等。

MLFlow 具有以下主要组件:

跟踪:用于跟踪试验,以记录和比较参数与结果;

模型:用于通过各种 ML 库管理模型,并将其部署到各种模型服务和推理平台;

项目:用于将 ML 代码打包成可重用、可再现的格式,以便与其他数据科学家共享或转移到生产环境;

模型注册表:使你可以将模型存储集中化,以便使用版本控制和批注功能来管理模型的完整生命周期阶段转换;

模型服务:可用于将 MLflow 模型以 REST 终结点的形式托管。

5. Screen

对于每个研究者来说,让实验通宵运行而且机器不会进入休眠状态再好不过了。当进行远程工作时,很多人都会担心 ssh 会话中断——代码运行几个小时就停止了。

screen 命令允许用户在一个窗口内使用多个终端会话,可以断开连接,也可以重新连接已断开连接的会话。每个会话都可以恢复连接,这样就算会话断开了,用户也不必担心数据丢失。


四、协作工具学术界缺乏有效的团队管理机制,在某种程度上这是由于学术界会严格划分个人贡献造成的。然而,机器学习的发展速度需要大家共同努力。Mikhailiuk 推荐了两个非常基本的工具:GitHub 以及 Lucidchart,它们对于有效的沟通非常方便,尤其是在远程工作上。

6. GitHub

GitHub 是通过 Git 进行版本控制的软件源代码托管服务平台,同时提供付费账户和免费账户,这两种账户都可以创建公开或私有的代码仓库,但付费用户支持更多功能。除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和 bug 提出评论等。GitHub 也提供图表功能,用于概观显示开发者们怎样在代码库上工作以及软件的开发活跃程度。

就在近日,GitHub 正式发布了2021 年度报告。过去一年里,有 1600 万开发者加入了 GitHub,目前平台的开发者数量已经达到了 7300 万;过去一年里,他们在 GitHub 上创建了 6100 万个存储库。世界财富 100 强企业中的 84% 都在使用 GitHub。

7. Lucidchart

Lucidchart 是一款免费的可以支持离线操作的谷歌浏览器图表插件,可以帮助用户绘制包括流程图、实体模型、UML、思维导图等多种图表的绘制工作。它提供了很多免费绘图模板,大大地加快了用户的绘图速度。该应用的一大优势是,它基于 HTML5,因此用户不需要下载本地应用程序,就可以在电脑、iPad 等设备上使用该应用。它的另一主要优势是共享的协作空间和在图表旁边做笔记的能力。

3a6e728c-6896-11ee-9788-92fbcf53809c.png


五、可视化工具

提交论文时,研究人员经常会遇到拒稿的情况,这让 Mikhailiuk 意识到可视化功能和结果一样重要。

如果审稿人没有太多时间,或者对论文涉及的领域不熟悉,通常来说论文会被拒掉,其中一部分原因可能是论文中的视图给人印象不深刻。因此,Mikhailiuk 推荐了 Inkscape 和 Streamlit 这两个工具。

8. Inkscape

Inkscape 是一个开源的矢量图编辑工具,使用可伸缩向量图形 (SVG),以及基于 W3C 标准的 open XML 格式作为其默认文件格式。设计过程可能从一张涂鸦、一幅素描或者软件中模型设计开始,这些可能不足以完成一整个项目。Inkscape 可以帮助你将以上不成熟的素材转变为专业的设计,用于广告发布、模型制作等用途。Inkscape 还能提供 TexText 扩展,使用此软件包,你可以将 latex 公式无缝集成到图像中。

3a732426-6896-11ee-9788-92fbcf53809c.png

9. Streamlit

Streamlit 和常规 Web 框架不同之处在于,它不需要你去编写任何客户端代码(HTML/CSS/JS),只需要编写普通的 Python 模块,就可以在很短的时间内创建美观并具备高度交互性的界面,从而快速生成数据分析或者机器学习的结果;另一方面,和那些只能通过拖拽生成的工具也不同的是,你仍然具有对代码的完整控制权。

以上就是 Mikhailiuk 在获得机器学习博士学位之前需要掌握的九个工具,你不妨也学习一下,相信这些工具在你之后的学习、工作中,会起到事半功倍的效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件
    +关注

    关注

    69

    文章

    5169

    浏览量

    89442
  • 架构
    +关注

    关注

    1

    文章

    529

    浏览量

    26042
  • 机器学习
    +关注

    关注

    66

    文章

    8510

    浏览量

    134901
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ARM入门学习方法分享

    的官方文档,了解ARM架构的细节,并参考一些在线教程和博客来学习其他开发者的经验和技巧。 总的来说,学习ARM需要一定的耐心和实践。通过掌握基本概念、
    发表于 07-23 10:21

    通过NVIDIA Cosmos模型增强机器人学习

    通用机器人的时代已经到来,这得益于机械电子技术和机器人 AI 基础模型的进步。但目前机器人技术的发展仍面临一关键挑战:机器
    的头像 发表于 07-14 11:49 ?298次阅读
    通过NVIDIA Cosmos模型增强<b class='flag-5'>机器人学习</b>

    **【技术干货】Nordic nRF54系列芯片:传感器数据采集与AI机器学习的完美结合**

    【技术干货】nRF54系列芯片:传感器数据采集与AI机器学习的完美结合 近期收到不少伙伴咨询nRF54系列芯片的应用与技术细节,今天我们整理几个核心问题与解答,带你快速掌握如何在nRF54上部署AI
    发表于 04-01 00:00

    云服务器计算池的运维团队需要掌握的网络工具

    云服务器计算池的运维团队需要掌握多种网络工具,以实现高效的网络监控、故障排查、安全管理和资源优化。以下是运维团队常用的网络工具分类及推荐: 1. 网络监控
    的头像 发表于 02-17 15:50 ?339次阅读

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度
    的头像 发表于 12-30 09:16 ?1261次阅读
    传统<b class='flag-5'>机器</b><b class='flag-5'>学习</b>方法和应用指导

    【「具身智能机器人系统」阅读体验】+初品的体验

    ,逐渐学习并优化自己的行为,以更好地服务家庭成员。 目前,具身智能机器人在解决实际问题中已展现出巨大的潜力,例如它已应用于养老、医疗、灾害救援等领域。 尽管具身智能已取得了显著进展,但未来的研究
    发表于 12-20 19:17

    谷歌发布“深度研究”AI工具,利用Gemini模型进行网络信息检索

    ,“深度研究”目前仅向Gemini的高级订阅者提供英文版本服务。对于具备访问权限的用户而言,他们可以通过向Gemini提出一特定的研究主题,从而启动这一强大的研究
    的头像 发表于 12-16 09:35 ?769次阅读

    自然语言处理与机器学习的关系 自然语言处理的基本概念及步骤

    自然语言处理(Natural Language Processing,简称NLP)是人工智能和语言学领域的一分支,它致力于研究如何让计算机能够理解、解释和生成人类语言。机器学习(Ma
    的头像 发表于 12-05 15:21 ?2057次阅读

    如何在化学和材料科学领域开展有影响力的人工智能研究?(三)

    第三部分编译后的内容:4.如何解决科学问题?在掌握了上述的工具和视角后,我们将提出一些建议,帮助您在化学领域选择具有影响力的研究课题,并介绍机器学习
    的头像 发表于 12-03 01:02 ?512次阅读
    如何在化学和材料科学领域开展有影响力的人工智能<b class='flag-5'>研究</b>?(三)

    硬件工程师需要掌握的硬件基础知识

    作为一资深硬件工程师,我们需要掌握一些硬件基础知识,今天总结一下哪些算是基础知识。给学电子方面想从事硬件工作的同学们一点提示。给未走出大学校园的电子方面的学生一些帮助。 ? 工具/原
    的头像 发表于 12-02 09:22 ?1920次阅读
    硬件工程师<b class='flag-5'>需要</b><b class='flag-5'>掌握</b>的硬件基础知识

    什么是机器学习?通过机器学习方法能解决哪些问题?

    来源:Master编程树“机器学习”最初的研究动机是让计算机系统具有人的学习能力以便实现人工智能。因为没有学习能力的系统很难被认为是具有智能
    的头像 发表于 11-16 01:07 ?1011次阅读
    什么是<b class='flag-5'>机器</b><b class='flag-5'>学习</b>?通过<b class='flag-5'>机器</b><b class='flag-5'>学习</b>方法能解决哪些问题?

    eda在机器学习中的应用

    值和噪声数据。通过绘制箱线图、直方图和散点图,我们可以直观地看到数据中的异常值和分布情况。例如,如果一数据集中的某个特征值远高于其他值,这可能是一异常值,需要进一步调查。 2. 特征选择 特征选择 是
    的头像 发表于 11-13 10:42 ?958次阅读

    如何学习ARM?

    、寄存器、内存管理单元(MMU)、中断控制器等方面的知识。 3.学习编程语言和工具掌握一门与 ARM 处理器兼容的编程语言是必不可少的。C/C++ 是最常用的编程语言,可以使用它来编写针对
    发表于 10-11 10:42

    【「时间序列与机器学习」阅读体验】时间序列的信息提取

    重要环节,目标是从给定的时间序列数据中提取出有用的信息和特征,以支持后续的分析和预测任务。 特征工程(Feature Engineering)是将数据转换为更好地表示潜在问题的特征,从而提高机器学习
    发表于 08-17 21:12

    【《时间序列与机器学习》阅读体验】+ 了解时间序列

    收到《时间序列与机器学习》一书,彩色印刷,公式代码清晰,非常精美。感谢作者,感谢电子发烧友提供了一让我学习时间序列及应用的机会! 前言第一段描述了编写背景: 由此可知,这是一本关于时
    发表于 08-11 17:55