给科研人的 ML 开源发布工具包

什么是开源发布工具包?

恭喜你的论文成功发表,这是一个巨大的成就!你的研究成果将为学界做出贡献。

其实除了发表论文之外,你还可以通过发布研究的其他部分,如代码、数据集、模型等,来增加研究的可见度和采用率。这将使更多人能够使用你的研究,并推动研究成果的应用。我们整理了这份文件,让你可以更好的了解和实践开源。希望这份文件对你有所帮助!

什么是开源?

公开研究 - 不仅仅是论文,还包括相关的所有成果,如代码、模型、数据集或在线演示。

为什么要开源?

进行开放获取研究[^1],可以让更多的人了解和使用你的研究或项目成果,促进社区研究人员之间的合作。通过共享机器学习的知识和资源以及社区协作,来推动机器学习领域的发展。

[^1]: 开放获取意味着一个成果是公开可访问的。例如,你可以公开发布一个模型,同时拥有一个不完全符合开源倡议组织 (OSI) 对开源所设定的确切标准的许可证。例如,如果许可证限制了模型的使用方式,它就不被视为开源。不过,它仍然是对社区有价值的开放获取成果!

如何开源?

机器学习发布有很多的形式和规模。你可以根据你的时间线、优先级、内部政策或者其他因素来决定如何开源和开源哪些内容。比如:你可以只公布代码,也可以公布模型等其他成果。

以下是开源的步骤概览:

  • 论文

  • 代码仓库

  • 数据集

  • 模型

  • 构建在线演示 demo

  • 推广应用

你可以自由定义想要发布的内容、如何发布以及什么时间进行发布;本文档会详细介绍上述每项内容的具体步骤和指导。

你会用到什么工具?

分享论文可以使用arXiv :这是一个免费的可以公开发表论文的平台,在机器学习领域中被广泛使用。

分享代码可以使用 GitHub :这是一个代码版本控制平台。在 GitHub 上,你可以分享训练代码、如何加载模型或数据集的示例等。

分享模型权重,数据集及演示则可以使用 Hugging Face Hub :HF 是一个协作式机器学习平台,人们可以在其中轻松地探索、体验并共同创建机器学习。此外它还提供一定的社交功能,如论文讨论。

如何使用这份文档?

这份文档提供了具体的项目和步骤指导,你可以选择按照步骤完成所有项目成果的发布,也可以根据自己的需求来选择想要发布的项目成果。步骤看似很多,但是每一步仅需不到一分钟的时间即可完成。我们建议你复制这份文档,以便随时查阅。文档末尾会有一个核对清单,帮助你核对每一步,为开源你的项目成果做好充分的准备。

热门开源发布示例

  • Meta 的 Llama 2 (论文, 代码库, 模型, 演示)

  • EPFL 的 Meditron (论文, 代码库, 模型, 数据)

  • Adept 的 Fuyu (博客, 模型, 演示)

  • Meta 的 Seamless (论文, 代码库, 合集)

GitHub 仓库:

  • https://github.com/facebookresearch/seamless_communication

  • https://github.com/CompVis/stable-diffusion

研究模型:

  • https://huggingface.co/microsoft/phi-2

  • https://huggingface.co/meta-llama/Llama-2-7b

研究数据集:

  • https://huggingface.co/datasets/epfl-llm/guidelines

  • https://huggingface.co/datasets/princeton-nlp/SWE-bench

在线演示:

  • https://huggingface.co/spaces/facebook/seamless_m4t

  • https://huggingface.co/spaces/andreped/AeroPath

发布论文

可以通过 arXiv 来 上传并与社区分享你的论文。这是一个免费平台,并且不需要同行评审。

  1. 撰写并准备论文

    第一步是撰写论文。一个常用的协作论文撰写工具是 Overleaf(用于 LaTeX 工作)。如果向会议提交论文,请遵循它们的官方模板和风格指南

    查阅 arXiv 官方的指南,包括格式期望和授权许可。

31f089b81aaccca5b9906597b5c5902f.png
  1. 提交论文

    访问你的 用户页面 并点击“提交”即可提交可能需要一些时间来处理,并且只在周日至周四开放。

    注意: 首次提交到某个类别时,需要社区中的某人认可它才能发布。但请注意,这不是同行评审!

5253b03daa07e5ce920bcc79b0a04b3f.png

发布代码库

可以使用 GitHub 来发布和分享代码。GitHub 是一个代码版本控制平台。在 GitHub 上,你可以分享你的代码库(包括推理/建模代码、训练代码等)。

  1. 在 https://github.com/new 创建一个带有 README 和你选择的许可证的仓库。

833395f5d2efb6c0989fb5333ca77d4a.png
  1. 编写 README。

    README 是描述项目的文件,一般使用 markdown 编写,这是一种用于文本格式化的相当简单的语言。建议在README中添加描述、成果链接(如你的论文)以及一些代码示例。

    示例

771c173b6ae8f43802dc2a1b9da57daa.png
  1. 上传代码

    接下来就是要上传你的代码了!你可以上传包括运行模型的代码、训练脚本或者更多内容!

如果你想同时将你的模型集成到 Hugging Face 库中,以实现即时集成。请随时联系 open-source@huggingface.co,我们会尽快评估并反馈。

发布数据集

Hugging Face Hub 提供数据集的托管、发现和社交功能。HF 还有一个名为 datasets 的开源库,可用于以编程方式加载数据集,并在大型数据集上有效地进行流式处理。此外,HF 还提供查看器,可让用户在浏览器中直接探索数据。

  1. 在 https://huggingface.co/new-dataset 创建一个仓库,可以在你的账户或在组织名下进行创建。

9b66815014196f55136dccdae663422e.png
  1. 向仓库添加文件。

    在仓库的 文件和版本 选项卡并点击“上传文件”。支持拖放文件/文件夹或直接上传。

    4cb3cdef227dad9df3bd167a3130a359.pngf7829cb62295e56bcd74ffce7bf53b4b.png

    注意:Hub 支持不同的文件格式。这些格式将在浏览器中获得查看器,并自动在 datasets 库中获得支持。对于其他格式,你可以编写自己的加载脚本。查看官方文档。

from datasets import load_datasetdataset = load_dataset("stevhliu/demo")

注意: Hugging Face 使用 Git 作为数据和代码的存储库。如果熟悉 Git(例如,如果你使用 GitHub 或 GitLab),你可以使用类似的工作流程,而无需使用 UI。更多详情见指南。你还可以使用datasets 库来推送仓库。

  1. 创建数据集卡片

    数据集卡片是包含数据集相关信息的文件,通常与数据集一起发布,用于帮助用户更好地理解和使用数据集。数据集卡片对于促进数据集的可发现性、可重复性和共享具有重要作用。

    除了主要内容之外,数据集卡片还包含顶部的元数据,例如许可证类型、任务类别等。这些元数据可以帮助用户快速了解数据集的相关信息,从而更好地选择合适的数据集进行研究或开发。

    我们强烈建议定义数据集的许可证类型,以便用户了解数据集的使用权限和限制。同时,明确定义数据集的任务类别,可以帮助用户更准确地找到与其研究或开发相关的数据集。数据的可发现性和使用都是数据集的重要属性,数据集卡片可以有效地促进这两项属性的提升。

c45b9579f20bc9a362a21656973c9ab7.png

我们建议在数据集卡片内容中添加指向你的 arXiv 论文的链接。HF 会自动将它们链接在一起。你可以在其官方文档中阅读有关数据集卡片的更多信息。

发布模型权重

Hugging Face Hub 为模型提供托管、发现和社交功能。它不局限于 HF 官方库,你可以分享任何 ML 库的模型权重(或分享自己的代码库)。

  1. 在 https://huggingface.co/new 创建一个仓库,可以在你的账户或组织名下创建仓库。

35b2f9361d60a60322afddefe0aca116.png
  1. 向仓库添加文件。

    在仓库的文件选项卡并点击“上传文件”。可以拖放文件/文件夹或直接上传。

061e0778b770e9f9b50bd26bfd608d82.png 5d14ed4dc01fe711cb2ea7e60e45f549.png

注意:Hugging Face 使用 Git 作为数据和代码的存储库。如果你熟悉 Git(例如,如果你使用 GitHub 或 GitLab),你可以使用类似的工作流程,而无需使用 UI可以使用与 UI 不同的类似工作流程。更多详情见指南。

  1. 创建模型卡片

    模型卡片是随模型一起提供的文件,主要包含关于模型的实用信息。模型卡片对于发现、可重现性和共享模型来说至关重要!你可以在任何模型仓库中找到名为README.md 的模型卡片。我们强烈建议在其中添加一个代码片段,展示如何加载和使用模型。

    除了以上内容外,模型卡片还可以包含顶部的有用元数据。UI 提供了一些工具来帮助你创建。我们强烈建议你指定许可证管道标签(用于指定模型的任务,如文本到图像)。这两者是发现和使用模型的关键。

a1bffd2a92c61adcfcc599a2f84495ac.png

还有其他值得添加的内容。你可以在这里了解更多。比如:

  • language 语言:模型支持的语言列表

  • tags 标签:帮助发现模型标签

  • datasets 数据集:用于训练模型的数据集

  • base_model 基础模型:如果是微调模型的话使用的基础模型是什么?

  • library_name 库名称:用来加载模型的库

我们建议在模型卡片内容中添加相关的 arXiv 论文链接。HF 会自动将两者链接在一起。

你可以在其官方文档中了解更多关于模型卡片的信息。

  1. [可选] 添加 TensorBoard 跟踪

    TensorBoard 是一个提供用于可视化指标工具的工具。如果你将 TensorBoard 跟踪推送到 Hub,则会自动显示出一个 TensorBoard 实例的” Metrics”选项卡。请在此处相关信息这里信息。

9a08c5cabe950ae70f2953cba71db9c2.png
  1. [可选] 编程访问

    如果你想在代码库或在线演示中从 Hugging Face 下载模型,可以使用 huggingface_hub Python 库进行编程访问。例如,以下代码将下载指定文件。

from huggingface_hub import hf_hub_downloadhf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json")

以下代码将下载库中的所有文件:

from huggingface_hub import snapshot_downloadsnapshot_download(repo_id="lysandre/arxiv-nlp", revision="refs/pr/1")

创建在线演示

Hugging Face Hub 为在线演示提供托管、发现和社交功能 - 称为 Spaces。Spaces 可以轻松创建和部署ML驱动的在线演示,只需几分钟即可完成。

为什么要做在线演示?

创建在线演示可以让你的研究或项目成果更易于理解和使用,有助于其推广。任何拥有浏览器的人都可以体验你的研究成果,甚至可以让成果一日爆红!

在线演示的展现形式

你可以自由选择在线演示的展现形式!我们在这里提供一些热门在线演示作为参考并分享如何创建在线演示 Spaces。

Stability 的 Stable Diffusion(文本到图像)

e2b21493623a51bc0ccaf4b0abfbb231.png

Meta 的 MusicGen(文本到音乐生成)

ebef576f3a17c264d83e6cea40214983.png

jbilcke 的 AI Comic Factory(漫画生成)

70ca7e10a90c1b3c8501c7ce884365f6.png

注意:Spaces 在 CPU 上运行时是免费的。如果需要使用 GPU 运行,你可以申请社区资助(在 设置 选项卡中)或购买 T4、A10G 及 A100。

  1. 在 https://huggingface.co/new-space 创建一个仓库,可以在你的账户或在组织名下创建。

    Spaces 可以使用开源 Python 库(例如:Gradio或Streamlit)创建,也可以使用 Docker 或静态 HTML 页面。我们建议使用 Gradio 进行快速原型制作,当然也可以使用你喜欢的其他工具!

1449eaf4553d8afa8d550f455196aa08.png
  1. 创建应用程序文件

    假设你正在创建一个 Gradio 演示。请随意查阅 Gradio Spaces 文档。可以在仓库的”文件”选项卡点击”上传文件”或”创建新文件”。主 Python 脚本应命名为 app.py

6b135184cd42e1acf5cccd6ff109bf09.png
  1. 编写你的应用代码

如果你想要加载模型或数据集,你可以使用huggingface_hub Python库

import gradio as grdef greet(name):return f"Hello {name}"}demo = gr.Interface(fn=greet,inputs=["text"],outputs=["text"],
)demo.launch()
  1. 体验应用!

    你的应用已经创建成功!建议在创建之后操作即使体验以保证其运行顺利。

661f881ed3e3eb09448ea83fcace3d8e.png

注意

Hugging Face 使用 Git 作为数据和代码的存储库。如果你熟悉 Git(例如,如果你使用 GitHub 或 GitLab),你可以使用类似的工作流程,而无需使用 UI可以使用与 UI 不同的类似工作流程。更多详情见指南。

Spaces 常见问题汇总

  1. 我可以使用哪些模型库?

    你可以使用任何你喜欢的库,可以在 requirements.txt 文件中定义你的依赖项。

  2. 如何加载模型?

    如果你想从 Hub 下载模型到你的Spaces,可以使用 huggingface_hub Python 库进行编程访问。例如,以下代码将下载某个指定文件。

from huggingface_hub import hf_hub_downloadhf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json")

而以下代码将下载仓库中的所有文件。

from huggingface_hub import snapshot_downloadsnapshot_download(repo_id="lysandre/arxiv-nlp", revision="refs/pr/1")
  1. 我可以用 Gradio 做什么?

    随时查看 Gradio 文档和指南。Gradio 提供了一个简单的 API 来创建在线演示,并可以让你自由定义在线演示的展现方式。

    例如添加音频、文本、带注释的图像、聊天机器人、代码、文件、图像画廊、3D 对象、视频等组件,甚至可以创建符合你需求的组件。

  2. 热门 Spaces 制作小贴士?

  • 简单的演示更受欢迎。

  • 有标题、描述和简要说明演示的内容。

  • 有模型或论文的链接。

  • 添加偏见和内容认可(参见 SD 演示 作为示例)。

推广宣传:

在公布论文、模型/数据集、GitHub 仓库和在线演示之后,就是要确保你的研究能尽快被社区熟知!这里有一些方法可以帮助提高在社区中推广和宣传你的研究成果。

【加分项】Collections

你可以为项目成果(包括模型、数据集、演示、论文)在 Hub 上创建一个合集,你创建的合集会直接显示在个人账户中。更多详情请查看文档。

38664da68d08e499684a4d9e74f1b401.png

【加分项】Paper Space

通过GitHub Pages 或 Hugging Face Spaces,你可以将所有的项目成果和应用都集中在一个网页中。(例如:(https://nerfies.github.io/))如果你选择使用Spaces, 可以从 Nerfies/Paper Project 模板 中选择喜欢的模版,或者自创模版进行展示。

334f55a354d749f2e6dcb2a0f6650e5c.png

【加分项】Hugging Face Paper 页面

在 HF 论文页面 ,你可以发现和探索与研究论文相关的所有成果(包括:模型,数据集和在线演示demo)。你还可以在喜欢的论文页面和作者或社区一起来进行讨论。论文在 arXiv 上发表之后,你可以在 HF 上进行索引作为作者认领论文,认领之后论文将直接链接到你的账户并在账户中展示。更多详情请查看 文档。

fc5e4d1a45a63a3ec182badf4854fdae.png

推广

如果你已经完成了以上的步骤,那么恭喜你已经成功发布了你的项目成果!接下来也是最重要的一个环节是要进行推广。使用推特或 Reddit 等社交平台来撰写博客文章,或进行发布公告来为研究的推广助力。

建议你与其他研究人员或开源贡献者等合作伙伴联合发布,这样可以有效的扩大推广受众覆盖率。在开始推广之后,你还需要和与社区进行互动!最好的推广不仅仅是宣传你的项目成果,也需要和你项目的受众建立良好的互动关系。关系和与你的受众互动。

如何使用这份文档?

我们建议复制这份文档,并使用下面的步骤来跟踪进度。每步的操作时间基本只需 1 分钟。,它们会在 你决定做什么时 指导你,并且可以快速完成!下面有文档解释如何做不同的项目。

  1. 发布论文

  • 准备好论文并进行排版

  • 在 ArXiv 上发布

  • 在 HF 上索引论文

  1. 发布代码库

  2. 发布数据集

  • 选择许可证

  • 将数据集上传到 Hub(例如 HF、Kaggle、Zenodo)

  • 创建数据集卡片

    • 添加元数据(任务、许可证、语言等)

    • 添加其他成果的链接(arxiv 链接等)

    • 编写卡片内容

  1. 发布模型

  • 选择许可证

  • 将模型上传到 Hub

  • 创建模型卡片

    • 添加元数据(任务、许可证、数据集等)

    • 添加其他成果的链接(arxiv 链接)

    • 编写卡片内容

    • 添加展示如何使用模型的代码片段

  1. 构建演示

  • 编写 Colab 或脚本

  • 创建在线演示 Space

  1. 准备发布

  • 确保你的项目成果之间相互关联

  • 创建论文页面

  • 构建成果合集

  • 推广宣传

  1. 庆祝🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从0上手cornerstone3D】如何加载nifti格式的文件

在线演示 支持加载的文件格式 .nii .nii.gz 代码实现 npm install cornerstonejs/nifti-volume-loader// ------------- 核心代码 Start------------------- // 注册一个nifti格式的加载器 volumeLoader.registerVolumeLoader("nifti",cornerstoneNiftiImageVolu…

Qt/C++编写视频监控系统83-自定义悬浮条信息

一、前言 一般视频控件上会给出个悬浮条,这个悬浮条用于显示分辨率或者一些用户期望看到的信息,一般常用的信息除了分辨率以外,还有帧率、封装格式、视频解码器名称、音频解码器名称、实时码率等,由于实际的场景不一样&#xff0…

el-date-picker默认结束为当前时分秒

在element ui中的日期时间选择组件中默认是00:00,现在需求是点击默认结束时间为当前时分秒,查了很多资料写的都不准确 需求:实现日期时间组件可选择当前日期,比如当前是2024年01月17号下午17:21 那选中时必须结束时间为17&#x…

页面数据类型为json,后端接受json数据

项目结构 依赖pom.xml <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework…

小白准备蓝桥杯之旅(c/c++b组)

前言&#xff1a;省赛获奖比例高达百分之60,只要比一半的人努力&#xff0c;你就能大概率获奖。 寒假做的3件事 1.稳基础 熟练掌握基础语法部分&#xff0c;c比c多个stl库优势&#xff0c;c语言的同学需要会实现c中stl库部分 2.刷真题 大概比赛前30天&#xff0c;坚持每天做…

Redis集群优化

文章目录 前言集群完整性问题集群带宽问题 前言 集群虽然具备高可用特性&#xff0c;能实现自动故障修复&#xff0c;但是如果使用不当&#xff0c;也会存在一些问题 集群完整性问题集群带宽问题数据倾泻问题客户端性能问题命令的集群兼容性问题Lua和事务问题 集群完整性问题…

低代码配置-属性配置面板设计

模块设计 tab项切换 组件基础属性组件数据属性组件事件属性表单属性 模块输出函数设计 tab切换函数 列表表单属性 数据来源&#xff1a; 调用接口时一次赋予&#xff0c;无需使用selectItem&#xff0c;如需使用&#xff0c;归入基础属性列表标题是否展示筛选区域 示例&am…

输入框输入关键字 下拉框的关键字高亮

直接上代码 //搜索框部分 <div><input v-modelkeyWord /><button clickseachFn>搜索</button> </div> //下拉框部分 <div><div v-html"item.name" v-foritem in droplist :keyitem.id></div> </div> <sc…

centos环境下安装nginx+简单使用nginx

参考&#xff1a; https://www.cnblogs.com/chaofanq/p/15022916.html Nginx安装使用教程 - 简书 1.安装 1.1 下载一下 nginx: download 选择稳定版本下载 1.2 上传到虚拟机 cd /usr/local/src/ 1.3 进入目录开始解压 tar -xvf nginx-1.24.0.tar.gz 1.4 安装 cd nginx…

我帮企业找市场|福田供应链企业走进佛山,刮起“两业融合”新旋风!

前言&#xff1a; 2023年以来&#xff0c;福田区锚定高质量发展首要任务&#xff0c;鼓实劲、出实招、求实效&#xff0c;继推出“万名干部助企行”“我帮企业找市场”“我帮企业找资金”等系列服务举措后&#xff0c;坚持系统、全面完善产业支持政策&#xff0c;打造产业发展最…

QT中操作word文档

QT中操作word文档&#xff1a; 参考如下内容&#xff1a; C(Qt) 和 Word、Excel、PDF 交互总结 Qt对word文档操作总结 QT中操作word文档 Qt/Windows桌面版提供了ActiveQt框架&#xff0c;用以为Qt和ActiveX提供完美结合。ActiveQt由两个模块组成&#xff1a; QAxContainer模…

SpringBoot整合MyBatis项目进行CRUD操作项目示例

文章目录 SpringBoot整合MyBatis项目进行CRUD操作项目示例1.1.需求分析1.2.创建工程1.3.pom.xml1.4.application.properties1.5.启动类 2.添加用户2.1.数据表设计2.2.pojo2.3.mapper2.4.service2.5.junit2.6.controller2.7.thymeleaf2.8.测试 3.查询用户3.1.mapper3.2.service3…

【用法总结】LiveData组件要点

【用法总结】LiveData组件要点 1、如何实现和生命周期的关联&#xff1f;1.1 observe的实现逻辑&#xff1a;1.2 观察者的装饰者&#xff1a;ObserverWrapper1.3 观察者集合的存储&#xff1a;SafeIterableMap<Observer<? super T>, ObserverWrapper>&#xff0c;…

Linux第30步_通过USB OTG将固件烧写到eMMC中

学习目的&#xff1a;在Win11中&#xff0c;使用STM32CubeProgrammer工具&#xff0c;通过USB OTG将固件烧写到eMMC中。 安装软件检查&#xff1a; 1、是否安装了JAVA; 2、是否安装了STM32CubeProgrammer工具; 3、是否安装 了DFU驱动程序; 4、是否安装了“Notepad”软件; …

机器学习之卷积神经网络

卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此又称为SIANN。卷积神经网络仿照生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的…

Verilog刷题笔记16

题目&#xff1a; Since digital circuits are composed of logic gates connected with wires, any circuit can be expressed as some combination of modules and assign statements. However, sometimes this is not the most convenient way to describe the circuit. Pro…

嵌入式软件工程师面试题——2025校招社招通用(二十一)

说明&#xff1a; 面试群&#xff0c;群号&#xff1a; 228447240面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但…

软件开发架构

【 一 】软件开发架构图 【 1】ATM和选课系统 三层的开发架构 前段展示台 后端逻辑层 数据处理层 【二】软件开发架构的步骤流程 需求分析&#xff1a;在软件开发架构设计之前&#xff0c;需要对应用系统进行需求分析&#xff0c;明确用户需求、功能模块、业务流程等内容。…

CSS Day10

10.1 2D位移 属性名&#xff1a;transform 属性值&#xff1a;translateX 水平方向的位移 相对于自身位置移动 translateY 垂直方向的位移 相对于自身位置移动 transform&#xff1a;translate(x,y); 位移和定位搭配使用&#xff1a; position:absolute; top:50%; left:50%; tr…

基于springboot+vue的校园管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…