给科研人的 ML 开源发布工具包
什么是開源發布工具包?
恭喜你的論文成功發表,這是一個巨大的成就!你的研究成果將為學界做出貢獻。
其實除了發表論文之外,你還可以通過發布研究的其他部分,如代碼、數據集、模型等,來增加研究的可見度和采用率。這將使更多人能夠使用你的研究,并推動研究成果的應用。
我們整理了這份文件,讓你可以更好的了解和實踐開源。希望這份文件對你有所幫助!
什么是開源?
公開研究 - 不僅僅是論文,還包括相關的所有成果,如代碼、模型、數據集或在線演示。
為什么要開源?
進行開放獲取研究,可以讓更多的人了解和使用你的研究或項目成果,促進社區研究人員之間的合作。通過共享機器學習的知識和資源以及社區協作,來推動機器學習領域的發展。
如何開源?
機器學習發布有很多的形式和規模。你可以根據你的時間線、優先級、內部政策或者其他因素來決定如何開源和開源哪些內容。比如:你可以只公布代碼,也可以公布模型等其他成果。
以下是開源的步驟概覽:
- 論文
- 代碼倉庫
- 數據集
- 模型
- 構建在線演示 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 來 上傳并與社區分享你的論文。這是一個免費平臺,并且不需要同行評審。
-
撰寫并準備論文
第一步是撰寫論文。一個常用的協作論文撰寫工具是 Overleaf(用于 LaTeX 工作)。如果向會議提交論文,請遵循它們的官方模板和風格指南。
查閱 arXiv 官方的指南,包括格式期望和授權許可。
-
提交論文
訪問你的 用戶頁面 并點擊“提交”即可提交可能需要一些時間來處理,并且只在周日至周四開放。
注意: 首次提交到某個類別時,需要社區中的某人認可它才能發布。但請注意,這不是同行評審!
發布代碼庫
可以使用 GitHub 來發布和分享代碼。GitHub 是一個代碼版本控制平臺。在 GitHub 上,你可以分享你的代碼庫(包括推理/建模代碼、訓練代碼等)。
- 在 https://github.com/new 創建一個帶有 README 和你選擇的許可證的倉庫。
-
編寫 README。
README 是描述項目的文件,一般使用 markdown 編寫,這是一種用于文本格式化的相當簡單的語言。建議在README中添加描述、成果鏈接(如你的論文)以及一些代碼示例。
示例
-
上傳代碼
接下來就是要上傳你的代碼了!你可以上傳包括運行模型的代碼、訓練腳本或者更多內容!
如果你想同時將你的模型集成到 Hugging Face 庫中,以實現即時集成。請隨時聯系 open-source@huggingface.co,我們會盡快評估并反饋。
發布數據集
Hugging Face Hub 提供數據集的托管、發現和社交功能。HF 還有一個名為 datasets 的開源庫,可用于以編程方式加載數據集,并在大型數據集上有效地進行流式處理。此外,HF 還提供查看器,可讓用戶在瀏覽器中直接探索數據。
- 在 https://huggingface.co/new-dataset 創建一個倉庫,可以在你的賬戶或在組織名下進行創建。
-
向倉庫添加文件。
在倉庫的 文件和版本 選項卡并點擊“上傳文件”。支持拖放文件/文件夾或直接上傳。
注意:Hub 支持不同的文件格式。這些格式將在瀏覽器中獲得查看器,并自動在 datasets 庫中獲得支持。對于其他格式,你可以編寫自己的加載腳本。查看官方文檔。
from datasets import load_dataset
dataset = load_dataset("stevhliu/demo")
注意: Hugging Face 使用 Git 作為數據和代碼的存儲庫。如果熟悉 Git(例如,如果你使用 GitHub 或 GitLab),你可以使用類似的工作流程,而無需使用 UI。更多詳情見指南。你還可以使用datasets 庫來推送倉庫。
-
創建數據集卡片
數據集卡片是包含數據集相關信息的文件,通常與數據集一起發布,用于幫助用戶更好地理解和使用數據集。數據集卡片對于促進數據集的可發現性、可重復性和共享具有重要作用。
除了主要內容之外,數據集卡片還包含頂部的元數據,例如許可證類型、任務類別等。這些元數據可以幫助用戶快速了解數據集的相關信息,從而更好地選擇合適的數據集進行研究或開發。
我們強烈建議定義數據集的許可證類型,以便用戶了解數據集的使用權限和限制。同時,明確定義數據集的任務類別,可以幫助用戶更準確地找到與其研究或開發相關的數據集。數據的可發現性和使用都是數據集的重要屬性,數據集卡片可以有效地促進這兩項屬性的提升。
我們建議在數據集卡片內容中添加指向你的 arXiv 論文的鏈接。HF 會自動將它們鏈接在一起。
你可以在其官方文檔中閱讀有關數據集卡片的更多信息。
發布模型權重
Hugging Face Hub 為模型提供托管、發現和社交功能。它不局限于 HF 官方庫,你可以分享任何 ML 庫的模型權重(或分享自己的代碼庫)。
- 在 https://huggingface.co/new 創建一個倉庫,可以在你的賬戶或組織名下創建倉庫。
-
向倉庫添加文件。
在倉庫的文件選項卡并點擊“上傳文件”。可以拖放文件/文件夾或直接上傳。
注意:
Hugging Face 使用 Git 作為數據和代碼的存儲庫。如果你熟悉 Git(例如,如果你使用 GitHub 或 GitLab),你可以使用類似的工作流程,而無需使用 UI可以使用與 UI 不同的類似工作流程。更多詳情見指南。
-
創建模型卡片
模型卡片是隨模型一起提供的文件,主要包含關于模型的實用信息。模型卡片對于發現、可重現性和共享模型來說至關重要!你可以在任何模型倉庫中找到名為README.md 的模型卡片。我們強烈建議在其中添加一個代碼片段,展示如何加載和使用模型。
除了以上內容外,模型卡片還可以包含頂部的有用元數據。UI 提供了一些工具來幫助你創建。我們強烈建議你指定許可證和管道標簽(用于指定模型的任務,如文本到圖像)。這兩者是發現和使用模型的關鍵。
還有其他值得添加的內容。你可以在這里了解更多。比如:
- language 語言:模型支持的語言列表
- tags 標簽:幫助發現模型標簽
- datasets 數據集:用于訓練模型的數據集
- base_model 基礎模型:如果是微調模型的話使用的基礎模型是什么?
- library_name 庫名稱:用來加載模型的庫
我們建議在模型卡片內容中添加相關的 arXiv 論文鏈接。HF 會自動將兩者鏈接在一起。
你可以在其官方文檔中了解更多關于模型卡片的信息。
-
[可選] 添加 TensorBoard 跟蹤
TensorBoard 是一個提供用于可視化指標工具的工具。如果你將 TensorBoard 跟蹤推送到 Hub,則會自動顯示出一個 TensorBoard 實例的” Metrics”選項卡。請在此處閱讀更多相關信息這里信息。
-
[可選] 編程訪問
如果你想在代碼庫或在線演示中從 Hugging Face 下載模型,可以使用 huggingface_hub Python 庫進行編程訪問。例如,以下代碼將下載指定文件。
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json")
以下代碼將下載庫中的所有文件:
from huggingface_hub import snapshot_download
snapshot_download(repo_id="lysandre/arxiv-nlp", revision="refs/pr/1")
創建在線演示
Hugging Face Hub 為在線演示提供托管、發現和社交功能 - 稱為 Spaces。Spaces 可以輕松創建和部署ML驅動的在線演示,只需幾分鐘即可完成。
為什么要做在線演示?
創建在線演示可以讓你的研究或項目成果更易于理解和使用,有助于其推廣。任何擁有瀏覽器的人都可以體驗你的研究成果,甚至可以讓成果一日爆紅!
在線演示的展現形式
你可以*選擇在線演示的展現形式!我們在這里提供一些熱門在線演示作為參考并分享如何創建在線演示 Spaces。
Stability 的 Stable Diffusion(文本到圖像)
Meta 的 MusicGen(文本到音樂生成)
jbilcke 的 AI Comic Factory(漫畫生成)
注意:Spaces 在 CPU 上運行時是免費的。如果需要使用 GPU 運行,你可以申請社區資助(在 設置 選項卡中)或購買 T4、A10G 及 A100。
-
在 https://huggingface.co/new-space 創建一個倉庫,可以在你的賬戶或在組織名下創建。
Spaces 可以使用開源 Python 庫(例如:Gradio或Streamlit)創建,也可以使用 Docker 或靜態 HTML 頁面。我們建議使用 Gradio 進行快速原型制作,當然也可以使用你喜歡的其他工具!
-
創建應用程序文件
假設你正在創建一個 Gradio 演示。請隨意查閱 Gradio Spaces 文檔。可以在倉庫的”文件”選項卡點擊”上傳文件”或”創建新文件”。主 Python 腳本應命名為 app.py。
- 編寫你的應用代碼
如果你想要加載模型或數據集,你可以使用huggingface_hub Python庫
import gradio as gr
def greet(name):
return f"Hello {name}"}
demo = gr.Interface(
fn=greet,
inputs=["text"],
outputs=["text"],
)
demo.launch()
-
體驗應用!
你的應用已經創建成功!建議在創建之后操作即使體驗以保證其運行順利。
注意:
Hugging Face 使用 Git 作為數據和代碼的存儲庫。如果你熟悉 Git(例如,如果你使用 GitHub 或 GitLab),你可以使用類似的工作流程,而無需使用 UI可以使用與 UI 不同的類似工作流程。更多詳情見指南。
Spaces 常見問題匯總
-
我可以使用哪些模型庫?
你可以使用任何你喜歡的庫,可以在 requirements.txt 文件中定義你的依賴項。
-
如何加載模型?
如果你想從 Hub 下載模型到你的Spaces,可以使用 huggingface_hub Python 庫進行編程訪問。例如,以下代碼將下載某個指定文件。
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json")
而以下代碼將下載倉庫中的所有文件。
from huggingface_hub import snapshot_download
snapshot_download(repo_id="lysandre/arxiv-nlp", revision="refs/pr/1")
-
我可以用 Gradio 做什么?
隨時查看 Gradio 文檔和指南。Gradio 提供了一個簡單的 API 來創建在線演示,并可以讓你*定義在線演示的展現方式。
例如添加音頻、文本、帶注釋的圖像、聊天機器人、代碼、文件、圖像畫廊、3D 對象、視頻等組件,甚至可以創建符合你需求的組件。
-
熱門 Spaces 制作小貼士?
- 簡單的演示更受歡迎。
- 有標題、描述和簡要說明演示的內容。
- 有模型或論文的鏈接。
- 添加偏見和內容認可(參見 SD 演示 作為示例)。
推廣宣傳:
在公布論文、模型/數據集、GitHub 倉庫和在線演示之后,就是要確保你的研究能盡快被社區熟知!這里有一些方法可以幫助提高在社區中推廣和宣傳你的研究成果。
【加分項】Collections
你可以為項目成果(包括模型、數據集、演示、論文)在 Hub 上創建一個合集,你創建的合集會直接顯示在個人賬戶中。更多詳情請查看文檔。
【加分項】Paper Space
通過GitHub Pages 或 Hugging Face Spaces,你可以將所有的項目成果和應用都集中在一個網頁中。(例如:(https://nerfies.github.io/))如果你選擇使用Spaces, 可以從 Nerfies/Paper Project 模板 中選擇喜歡的模版,或者自創模版進行展示。
【加分項】Hugging Face Paper 頁面
在 HF 論文頁面 ,你可以發現和探索與研究論文相關的所有成果(包括:模型,數據集和在線演示demo)。你還可以在喜歡的論文頁面和作者或社區一起來進行討論。論文在 arXiv 上發表之后,你可以在 HF 上進行索引作為作者認領論文,認領之后論文將直接鏈接到你的賬戶并在賬戶中展示。更多詳情請查看 文檔。
推廣
如果你已經完成了以上的步驟,那么恭喜你已經成功發布了你的項目成果!接下來也是最重要的一個環節是要進行推廣。使用推特或 Reddit 等社交平臺來撰寫博客文章,或進行發布公告來為研究的推廣助力。
建議你與其他研究人員或開源貢獻者等合作伙伴聯合發布,這樣可以有效的擴大推廣受眾覆蓋率。在開始推廣之后,你還需要和與社區進行互動!最好的推廣不僅僅是宣傳你的項目成果,也需要和你項目的受眾建立良好的互動關系。關系和與你的受眾互動。
如何使用這份文檔?
我們建議復制這份文檔,并使用下面的步驟來跟蹤進度。每步的操作時間基本只需 1 分鐘。,它們會在 你決定做什么時 指導你,并且可以快速完成!下面有文檔解釋如何做不同的項目。
- 發布論文
- 準備好論文并進行排版
- 在 ArXiv 上發布
- 在 HF 上索引論文
- 發布代碼庫
- 發布數據集
- 選擇許可證
- 將數據集上傳到 Hub(例如 HF、Kaggle、Zenodo)
- 創建數據集卡片
- 添加元數據(任務、許可證、語言等)
- 添加其他成果的鏈接(arxiv 鏈接等)
- 編寫卡片內容
- 發布模型
- 選擇許可證
- 將模型上傳到 Hub
- 創建模型卡片
- 添加元數據(任務、許可證、數據集等)
- 添加其他成果的鏈接(arxiv 鏈接)
- 編寫卡片內容
- 添加展示如何使用模型的代碼片段
- 構建演示
- 編寫 Colab 或腳本
- 創建在線演示 Space
- 準備發布
- 確保你的項目成果之間相互關聯
- 創建論文頁面
- 構建成果合集
- 推廣宣傳
- 慶祝??
備注
總結
以上是生活随笔為你收集整理的给科研人的 ML 开源发布工具包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 变压器绕制
- 下一篇: 根目录,子目录,当前目录 宿主目录、根