uvx -p 3.13 --from pirateface pf download org/modelPirate Face 目前已将 5,149 个模型收录为种子,其中大部分由社区添加。在此之前,使用这些种子意味着要离开平常的工作流程:打开模型页面,复制磁力链接,运行种子客户端,再让代码指向下载好的文件。
Pirate Face 登上 Hacker News 首页时,评论者普遍认为 BitTorrent 是分发模型权重的合适格式。阻碍来自其他方面:工具,以及如何信任陌生人提供的文件。Pirate Face Hub 同时解决了这两点,而你现有的代码完全不用改。
在终端下载模型
Pirate Face Hub 提供 pf download 命令。安装 uv 后,运行:
uvx -p 3.13 --from pirateface pf download org/model
将 org/model 替换为你想下载的 Hugging Face 模型 ID。命令会将模型下载到 Hugging Face 缓存中:有可用节点时从节点群下载,必要时回退到 Hugging Face。无需复制磁力链接,也不用打开单独的种子客户端。
命令指定 Python 3.13,因为软件包目前支持 Python 3.12 和 3.13。软件包 README 说明了 CLI 用法和 Python 版本要求。
一个包,无需改代码
Pirate Face Hub 适用于 transformers、diffusers、sentence-transformers,以及所有通过 huggingface_hub 下载的工具。
运行脚本时加上这个包:
uv run --with pirateface python your_script.py
或者安装一次,之后就不用再管:
pip install pirateface
设置就这么多。没有配置,没有新 API,也不需要设置环境变量。已经在加载模型的代码照常运行,文件改为从节点群获取:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("org/model") # 无需改动
这也包括 hf_hub_download 和 snapshot_download。在同一 Python 环境中安装 Pirate Face Hub 后,Hugging Face 的 hf download 命令也适用。
工作原理
模型包含哪些文件、每个文件应有的样子,仍然由 Hugging Face 告诉你的代码。Pirate Face Hub 只改变文件内容从哪里下载。
- 你的脚本
- pirateface
- Pirate Face 节点群
- Hugging Face: 节点群无法提供时
对每个文件,这个包会向 Pirate Face 查询该模型的种子,并从节点群中的节点下载文件。
如果 Pirate Face 没有该模型的种子,或者 30 秒内没有节点响应,这个文件就照常从 Hugging Face 下载。
通过 BitTorrent 下载和使用任何种子客户端一样:其他节点能看到你的 IP 地址。做种指南说明了这在实际中意味着什么。
每个缺失的模型都会进入队列
当你下载一个 Pirate Face 尚未收录的模型时,这个包会在后台发送一次请求,请 Pirate Face 救援它。请求中只包含模型名称。Pirate Face 自己的工作节点会从 Hugging Face 下载模型,核对每个文件,制作种子并收录。你可以在救援看板上查看队列。
如需关闭请求,设置 PF_NO_RESCUE=1。
参与贡献从未如此简单
每一次经由 Pirate Face Hub 的下载都在使用公共节点群,每一个它尚未找到的模型都会成为任何人都能做种的收录种子。在你已经在运行的脚本里加上一个包,它们就成为让模型永久存在背后基础设施的一部分。
Pirate Face Hub 以 MIT 许可证开源。代码在 GitHub 上,软件包在 PyPI 上。需要 Python 3.12 或 3.13。
