fastai 與 Hugging Face Hub 的整合

Hugging Face 已將 fastai 函式庫整合至 Hugging Face Hub,使用者只需一行 Python 程式碼即可分享、上傳與下載 fastai 模型。此整合讓預訓練模型的使用更加民主化,讓 fastai 使用者能夠利用 Hub 的中心平台進行模型託管、版本控制與社群探索。

直接於 Hub 整合 fastai Learner

fastai 使用者現在可以使用 huggingface_hub Python 函式庫與 Hugging Face Hub 互動。fastai 中的 Learner(將模型、資料載入器與損失函式打包)可以無縫地推送至 Hub 或從 Hub 拉取。

安裝與設定

要使用這些功能,使用者需要擁有 Hugging Face 帳號以及 huggingface_hub 函式庫。安裝時可指定「fastai」額外套件,以確保安裝所有必要的相依套件(包括 fastai>=2.4fastcore>=1.3.27toml):

pip install huggingface_hub["fastai"]

上傳模型至 Hub

使用者可以使用 push_to_hub_fastai 函式將 Learner 物件分享至 Hub。這需要透過 write 令牌進行驗證,可透過 huggingface-cli login 指令、Python notebook 中的 notebook_login() 函式,或直接將令牌傳入函式來完成。

from huggingface_hub import push_to_hub_fastai

# repo_id follows the format "namespace/repo_name"
repo_id = "username/model-name"
push_to_hub_fastai(learner=learn, repo_id=repo_id)

上傳後,Hub 會自動建立模型卡,建議使用者編輯以提升可重現性與可發現性。

從 Hub 載入模型

使用 from_pretrained_fastai 函式即可從 Hub 載入預訓練的 Learner,讓使用者能立即進行預測或將模型作為遷移學習的基礎。

from huggingface_hub import from_pretrained_fastai

repo_id = "username/model-name"
learner = from_pretrained_fastai(repo_id)

結合 fastai 與 Transformers(使用 Blurr)

除了標準的 fastai 模型外,此整合亦延伸至 Blurr,這是一個為 fastai 開發者設計,用於訓練與部署 Hugging Face Transformers 的函式庫。

透過高階的 Blurr API,開發者可以從 Hub 載入 transformer 模型(例如 distilbert-base-uncased),在 fastai 生態系統中將其訓練為 Blearner,然後使用相同的 push_to_hub_fastaifrom_pretrained_fastai 函式將模型分享與重新載入至 Hub。

Hub 為 fastai 模型提供的功能

在 Hub 上分享 fastai 模型相較於本機儲存具有多項技術優勢:

  • 版本控制: 模型以 Git 儲存庫的形式保存,透過 git-lfs 為大型檔案提供完整的版本控制,包括提交與分支。
  • 可發現性: 使用者可以在 Hugging Face Model Hub 中針對 fastai 函式庫進行篩選,以尋找與探索現有模型。
  • 可重現性: 使用模型卡讓實務者能記錄訓練過程與模型能力,確保他人能重現結果。

Sources