预览
CLI 下载
uvx -p 3.13 --from pirateface pf download org/model
  • 向 Hugging Face 查询模型文件
  • 查找 Pirate Face 节点群中的节点
  • 节点群无法提供时回退到 Hugging Face
  • 将校验后的文件保存到 Hugging Face 缓存

Pirate 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 只改变文件内容从哪里下载。

  1. 你的脚本
  2. pirateface
  3. Pirate Face 节点群
  4. 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。