Datawhale干货
无论是创业还是学术研究,这些工具都会让你的技能更上一层楼。
学术界在促进技术方面发挥了重要作用,
其实,
剑桥大学计算机科学博士 Aliaksei Mikhailiuk 为我们整理
个人主页:https://www.linkedin.com/in/aliakseimikhailiuk/
Mikhailiuk 按用途将这些工具分为四类:
机器学习是一个快速发展的领域,常用的包更新非常频繁。尽管开发人员努力工作,但新版本通常与旧版本不兼容,这给研究人员带来了很多麻烦。幸运的是,有工具来解决这个问题!在这方面,Mikhailiuk 推荐两个工具:Docker 和 Conda。
Mikhailiuk 在攻读博士学位期间,他有一台由大学管理的机器,学校将定期更新。通常一夜之间更新,没有任何通知。你可以想象,当你发现你的大部分工作在更新后的第二天早上与最新的驱动程序不兼容时,它是多么的崩溃。Mikhailiuk 发现 Docker 能很好地解决。
Docker 允许将软件包装在称为容器的包中。容器是一个独立的单元,有自己的软件、库和配置文件。容器是一种独立的虚拟操作系统,具有与外界通信的手段。Docker 它是一个开源应用容器引擎,允许开发者将其应用程序打包并依赖于可移植容器,然后发布到任何流行的容器中 Linux 或 Windows 虚拟化也可以在操作系统的机器上实现。容器完全采用沙箱机制,彼此之间没有接口。
一个完整的 Docker 由以下部分组成:
DockerClient 客户端
Docker Daemon 守护进程
Docker Image 镜像
DockerContainer 容器
Docker 教程:https://aws.amazon.com/cn/blogs/opensource/why-use-docker-containers-for-machine-learning-development/
现在,重用他人的代码已经成为一种新的规范。GitHub 作为一个代码托管云服务网站,帮助开发人员存储和管理其项目源代码,并可以跟踪、记录和控制用户修改其代码。研究人员可以克隆上述代码,安装并提出自己的解决方案,而无需写任何东西。
但是 GitHub 也有不方便的情况。当多个项目一起使用时,您会遇到包管理问题,因为不同的项目需要不同版本的包。
Conda 这个问题可以解决 。Conda 它是一个与开源跨平台语言无关的包管理和环境管理系统。它允许创建多个环境,快速安装、运行和更新包及其依赖项,用户可以在隔离环境之间快速切换。
Conda 教程:https://conda.io/projects/conda/en/latest/user-guide/getting-started.html#starting-conda
严谨性和一致性是应用领域获得博士学位的两个基本支柱。如果你研究机器学习模型,你或多或少会遇到这种情况——你创建了许多不同的模型来测试不同的参数甚至整个架构。您还想尝试优化器的选择、学习率、时期数等。所以,事实上,你会做很多不同的实验,结果会越来越难整理。在这方面,Aliaksei Mikhailiuk 如何正确、方便地管理和记录自己 ML 和 DL 主要推荐实验工具 Weights & Biases,MLFlow,Screen 工具。
wandb panel 一组简单的指标 Snapshot——训练损失、学习率和平均验证损失。
W&B(Weights & Biases) 它是一个帮助数据科学家跟踪模型、数据集、系统信息等的平台。用户可以开始跟踪这些功能的所有内容,只需要几行代码。个人免费使用,团队通常需要付费,但学术目的的团队是免费的。你可以将 W&B 用你喜欢的框架,比如 TensorFlow、Keras、PyTorch、SKlearn、fastai 等。
W&B 提供了以下 4 有用的工具:
Dashboard:实验跟踪;
Artifacts:数据集版本控制,模型版本控制;
Sweeps:超参数优化;
Reports 保存和共享可重现的结果。
W&B 教程:https://docs.wandb.ai/quickstart
MLFlow 它是一个新的平台,可以覆盖整个机器学习过程(从数据准备到模型培训到最终部署)。它是管理机器学习过程的工具,主要有三个功能模块:Tracking 跟踪记录,Project 项目管理和 Models 模型管理。MLflow 支持 Java、Python、R 和 REST API 等。
MLFlow 主要组件如下:
跟踪:用于跟踪试验,记录和比较参数和结果;
模型:通过各种方式使用 ML 在各种模型服务和推理平台上部署仓库管理模型;
项目:用于将 ML 为了与其他数据科学家共享或转移到生产环境,代码包装成可重用、可再现的格式;
模型注册表:使模型存储集中,使用版本控制和注释功能来管理模型的完整生命周期转换;
模型服务:可用于将 MLflow 模型以 REST 托管形式的终结点。
MLFlow 教程:https://www.mlflow.org/docs/latest/tutorials-and-examples/tutorial.html
对于每个研究者来说,让实验通宵运行而且机器不会进入休眠状态再好不过了。当进行远程工作时,很多人都会担心 ssh 会话中断——代码运行几个小时就停止了。
screen 命令允许用户在一个窗口内使用多个终端会话,可以断开连接,也可以重新连接已断开连接的会话。每个会话都可以恢复连接,这样就算会话断开了,用户也不必担心数据丢失。
Screen 教程:https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/
学术界缺乏有效的团队管理机制,在某种程度上这是由于学术界会严格划分个人贡献造成的。然而,机器学习的发展速度需要大家共同努力。Mikhailiuk 推荐了两个非常基本的工具:GitHub 以及 Lucidchart,它们对于有效的沟通非常方便,尤其是在远程工作上。
GitHub 是通过 Git 进行版本控制的软件源代码托管服务平台,同时提供付费账户和免费账户,这两种账户都可以创建公开或私有的代码仓库,但付费用户支持更多功能。除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和 bug 提出评论等。GitHub 也提供图表功能,用于概观显示开发者们怎样在代码库上工作以及软件的开发活跃程度。
就在近日,GitHub 正式发布了 2021 年度报告。过去一年里,有 1600 万开发者加入了 GitHub,目前平台的开发者数量已经达到了 7300 万;过去一年里,他们在 GitHub 上创建了 6100 万个存储库。世界财富 100 强企业中的 84% 都在使用 GitHub。
GitHub 教程:https://docs.github.com/en/get-started/quickstart/hello-world
Lucidchart 是一款免费的可以支持离线操作的谷歌浏览器图表插件,可以帮助用户绘制包括流程图、实体模型、UML、思维导图等多种图表的绘制工作。它提供了很多免费绘图模板,大大地加快了用户的绘图速度。该应用的一大优势是,它基于 HTML5,因此用户不需要下载本地应用程序,就可以在电脑、iPad 等设备上使用该应用。它的另一主要优势是共享的协作空间和在图表旁边做笔记的能力。
Lucidchart 教程:https://www.lucidchart.com/pages/tour
提交论文时,研究人员经常会遇到拒稿的情况,这让 Mikhailiuk 意识到可视化功能和结果一样重要。如果审稿人没有太多时间,或者对论文涉及的领域不熟悉,通常来说论文会被拒掉,其中一部分原因可能是论文中的视图给人印象不深刻。因此,Mikhailiuk 推荐了 Inkscape 和 Streamlit 这两个工具。
Inkscape 是一个开源的矢量图编辑工具,使用可伸缩向量图形 (SVG),以及基于 W3C 标准的 open XML 格式作为其默认文件格式。设计过程可能从一张涂鸦、一幅素描或者软件中模型设计开始,这些可能不足以完成一整个项目。Inkscape 可以帮助你将以上不成熟的素材转变为专业的设计,用于广告发布、模型制作等用途。Inkscape 还能提供 TexText 扩展,使用此软件包,你可以将 latex 公式无缝集成到图像中。
Inkscape 推荐教程:https://inkscape.org/learn/tutorials/
Streamlit 和常规 Web 框架不同之处在于,它不需要你去编写任何客户端代码(HTML/CSS/JS),只需要编写普通的 Python 模块,就可以在很短的时间内创建美观并具备高度交互性的界面,从而快速生成数据分析或者机器学习的结果;另一方面,和那些只能通过拖拽生成的工具也不同的是,你仍然具有对代码的完整控制权。
教程地址:https://builtin.com/machine-learning/streamlit-tutorial
以上就是 Mikhailiuk 在获得机器学习博士学位之前需要掌握的九个工具,你不妨也学习一下,相信这些工具在你之后的学习、工作中,会起到事半功倍的效果。
原文链接:https://towardsdatascience.com/nine-tools-i-wish-i-mastered-before-my-phd-in-machine-learning-708c6dcb2fb0
推荐阅读:
我的2022届互联网校招分享
我的2021总结
浅谈算法岗和开发岗的区别
互联网校招研发薪资汇总
对于时间序列,你所能做的一切.
什么是时空序列问题?这类问题主要应用了哪些模型?主要应用在哪些领域?
保持谦逊、保持自律、保持进步
发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)
发送【1222】获取一份不错的leetcode刷题笔记