fastai 与 Hugging Face Hub 的集成
Hugging Face 已将 fastai 库集成到 Hugging Face Hub,使用户能够仅用一行 Python 代码就共享、上传和下载 fastai 模型。此集成通过让 fastai 实践者利用 Hub 的模型托管、版本控制和社区发现的中心平台,使预训练模型的获取更加民主化。
fastai Learner 的直接 Hub 集成
fastai 实践者现在可以使用 huggingface_hub Python 库与 Hugging Face Hub 交互。fastai 中的 Learner(将模型、数据加载器和损失函数打包在一起)可以无缝地推送到 Hub 或从 Hub 拉取。
安装与设置
要使用这些功能,用户需要拥有 Hugging Face 账户并安装 huggingface_hub 库。可以通过指定 “fastai” 额外依赖来进行安装,以确保所有必要的依赖(包括 fastai>=2.4、fastcore>=1.3.27 和 toml)均已安装:
pip install huggingface_hub["fastai"]
将模型上传到 Hub
用户可以使用 push_to_hub_fastai 函数将 Learner 对象共享到 Hub。此操作需要通过 write token 进行身份验证,可通过 huggingface-cli login 命令、Python notebook 中的 notebook_login() 函数,或直接将 token 传递给函数来完成。
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_fastai 和 from_pretrained_fastai 函数将模型共享到 Hub 并重新加载。
Hub 对 fastai 模型的特性
在 Hub 上共享 fastai 模型相较于本地存储提供了多项技术优势:
- 版本控制: 模型以 Git 仓库的形式存储,通过 git-lfs 对大文件提供完整的版本控制,包括提交和分支。
- 可发现性: 用户可以在 Hugging Face Model Hub 中专门筛选 fastai 库的模型,以查找和探索已有模型。
- 可复现性: 通过模型卡,实践者可以记录训练过程和模型能力,确保他人能够复现结果。