无论你是创业还是做学术研究,这些工具都会让你的技能更上一层楼。学术界在推动技术进步方面发挥着巨大作用,但学术界和工业界之间往往存在分歧。我们一直看到这样的现象:无数伟大的辅助工具在学术界被忽视,但在工业界却大受欢迎。对于很多研究人员来说,学习一个新工具可能比较困难,他们不愿意花太多时间去尝试,尤其是当他们目前拥有的工具已经足够应对各种问题的时候。事实上,有些工具一时没有效果,后期可能会有十倍的回报。剑桥大学计算机科学博士生AliakseiMikhailiuk编写了九种工具,供我们在获得学位之前掌握机器学习博士学位。他拥有剑桥大学物理学硕士学位和布里斯托大学工程学学士学位。他对研究、开发、部署感兴趣,同时精通计算机视觉算法、聚合和自然语言处理。目前在华为(英国)担任高级人工智能工程师。个人主页:https://www.linkedin.com/in/aliakseimikhailiuk/Mikhailiuk将这些工具按用途分为四类:隔离环境、实验跟踪、相互协作和可视化。隔离环境工具机器学习是一个快速发展的领域,常用包的更新非常频繁。尽管开发人员做出了努力,但新版本往往与旧版本不兼容,这让研究人员很头疼。幸运的是,有工具可以解决这个问题!对此,Mikhailiuk推荐了两个工具:Docker和Conda。在DockerMikhailiuk攻读博士学位期间,他有一台由大学管理的机器,该机器会定期对其进行更新。通常是通宵更新,恕不另行通知。您可以想象在更新后的第二天早上发现您的大部分工作与最新的驱动程序不兼容是多么令人沮丧。Mikhailiuk发现Docker是一个很好的解决方案。Docker允许将软件打包在称为容器的包中。容器是独立的单元,具有自己的软件、库和配置文件。简单来说,容器是一个独立的虚拟操作系统,具有与外界通信的手段。Docker是一个开源应用程序容器引擎,允许开发人员将他们的应用程序和依赖项打包到一个可移植的容器中,然后将其发布到任何流行的Linux或Windows操作系统机器上。也可以实现虚拟化,container是完全使用沙箱机制,它们之间不会有接口。一个完整的Docker由以下部分组成:DockerClient客户端DockerDaemon守护进程DockerImage镜像DockerContainer容器Docker教程:https://aws.amazon.com/cn/blogs/opensource/why-use-docker-containers-for-machine-learning-development/Conda现在,重用别人的代码已经成为一种新的常态。GitHub作为一个代码托管云服务网站,帮助开发者存储和管理他们的项目源代码,并可以跟踪、记录和控制用户对其代码的修改。研究人员可以克隆上述代码,安装它并提出自己的解决方案,而无需自己编写任何内容。但是GitHub也有一个不方便的情况,当多个项目一起使用时,会遇到包管理的问题,因为不同的项目需要不同版本的包。Conda可以解决这个问题。Conda是一个开源的跨平台、语言无关的包管理和环境管理系统,它允许创建多个环境并快速安装、运行和更新包及其依赖项,用户可以在隔离的环境之间快速切换。Conda教程:https://conda.io/projects/conda/en/latest/user-guide/getting-started.html#starting-condaRunning,Tracking,andDocumentingExperiments应用领域的工具想获得博士学位,严谨一致性是两个基本支柱。如果您使用机器学习模型,情况或多或少就是这种情况——您创建许多不同的模型来试验不同的参数甚至整个架构。您还想对优化器的选择、学习率、迭代次数等进行试验。因此,实际上,您将进行许多不同的试验,并且整理结果会越来越困难。对此,AliakseiMikhailiuk向我们展示了如何正确方便地管理和记录自己的ML和DL实验工具,主要推荐Weights&Biases、MLFlow、Screen工具。Weights&Biaseswandb面板一组简单的指标快照——训练损失、学习率和平均验证损失。请注意,您还可以跟踪系统参数。W&B(权重和偏差)是一个帮助数据科学家跟踪他们的模型、数据集、系统信息等的平台。只需几行代码,用户就可以开始跟踪有关这些功能的所有信息。个人使用是免费的,团队使用通常是收费的,但是用于学术目的的团队是免费的。您可以将W&B与您喜欢的框架(如TensorFlow、Keras、PyTorch、SKlearn、fastai等)一起使用。W&B提供以下4个有用的工具:Dashboard:实验跟踪;工件:数据集版本控制、模型版本控制;扫描:超参数优化;报告保存并共享可重现的结果。W&BTutorial:https://docs.wandb.ai/quickstartMLFlowMLFlow是一个可以涵盖机器学习全过程(从数据准备到模型训练到最终部署)的新平台。共有三个功能模块:Tracking跟踪记录、Project项目管理和Models模型管理。MLflow支持Java、Python、R和RESTAPI等。MLFlow有以下主要组件:Tracking:用于跟踪实验,记录和比较参数和结果;模型:用于通过各种ML库管理模型,并将其部署到各种模型服务和推理平台;项目:用于将ML代码打包成可重用、可重现的格式,以便与其他数据科学家共享或转移到生产环境;模型注册表:允许您集中模型存储以使用版本控制和注释功能生命周期阶段转换来管理模型完整性;模型服务:可用于将MLflow模型托管为REST端点。MLFlow教程:https://www.mlflow.org/docs/latest/tutorials-and-examples/tutorial.htmlScreen对于每个研究人员来说,让实验在机器不休眠的情况下整夜运行是非常好的。远程工作时,许多人担心ssh会话中断-运行数小时然后停止的代码。screen命令允许用户在单个窗口中使用多个终端会话,并且可以断开和重新连接断开的会话。每个会话都可以重新连接,这样即使会话断开,用户也不用担心数据丢失。屏幕教程:https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/协作工具学术界缺乏有效的团队管理机制,部分原因是学术界对个人的严格划分导致的贡献。然而,机器学习的发展速度需要齐心协力。Mikhailiuk推荐了两个非常基本的工具:GitHub和Lucidchart,它们对于有效沟通非常方便,尤其是在远程工作时。GitHubGitHub是一个通过Git进行版本控制的软件源代码托管服务平台。它提供付费帐户和免费帐户。这两个账户都可以创建公共或私人代码仓库,但付费用户支持更多功能。除了允许个人和组织创建和访问托管代码外,它还提供一些促进社会化通用软件开发的功能,包括允许用户跟踪其他用户、组织和软件库的动态,并提交更改和错误到软件代码。评论等。GitHub还提供了一个图表功能,用于概述开发人员如何在代码库上工作以及软件开发的活跃程度。就在近日,GitHub正式发布了2021年年度报告。过去一年,1600万开发者加入GitHub,平台开发者数量达到7300万;去年,他们在GitHub上创建了6100万个存储库。全球84%的财富100强公司使用GitHub。GitHub教程:https://docs.github.com/en/get-started/quickstart/hello-worldLucidchartLucidchart是一款免费的GoogleChrome图表插件,支持离线操作,可以帮助用户绘制流程图、实体模型、UML、思维导图和其他图表绘制工作。它提供了许多免费的绘图模板,大大加快了用户的绘图速度。该应用程序的一大优势是它基于HTML5,因此用户无需下载本机应用程序即可在计算机、iPad等设备上使用它。另一个关键优势是共享协作空间和采取的能力图表旁边的注释。Lucidchart教程:https://www.lucidchart.com/pages/tour可视化工具研究人员在提交论文时,经常会遇到被拒的情况,这让Mikhailiuk意识到可视化与结果同样重要。如果审稿人没有太多时间,或者不熟悉论文所涵盖的领域,论文通常会被拒绝,部分原因是论文中的观点并不令人印象深刻。因此,Mikhailiuk推荐了两个工具,Inkscape和Streamlit。InkscapeInkscape是一种开源矢量图形编辑工具,它使用可缩放矢量图形(SVG)和基于W3C的开放XML格式作为其默认文件格式。设计过程可能从涂鸦、草图或软件中的模型设计开始,这可能不足以完成整个项目。Inkscape可以帮助您将上述不成熟的材料变成用于广告、模型制作等的专业设计。Inkscape还提供了一个TexText扩展,使用这个包你可以无缝地将乳胶公式集成到图像中。Inkscape推荐教程:https://inkscape.org/learn/tutorials/StreamlitStreamlit和传统的web框架的区别在于它不需要你写任何客户端代码(HTML/CSS/JS),你只需要编写普通的Python模块,可以在短时间内创建出美观且交互性强的界面,从而快速生成数据分析或机器学习结果;另一方面,与那些只能通过拖放生成的工具不同,您仍然可以完全控制您的代码。教程地址:https://builtin.com/machine-learning/streamlit-tutorial以上就是Mikhailiuk在获得机器学习博士学位之前需要掌握的九个工具。在工作中,会事半功倍。
