Hub documentation

模型下载统计

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

模型下载统计

模型的下载次数是如何计算的?

统计模型的下载量并非易事,因为单个模型仓库可能包含多个文件,包括多个模型权重文件(例如分片模型)以及因库而异的不同格式(GGUF、PyTorch、TensorFlow 等)。为避免重复计算下载量(例如将一次模型下载计为多次下载),Hub 使用一组查询文件来进行下载计数。此过程不会从用户端发送任何信息,也不会发起额外的调用。计数在服务端完成,即当 Hub 提供文件供下载时进行。

对这些文件的每个 HTTP 请求,包括 GET 和 HEAD,都会被计为一次下载。默认情况下,如果未指定库,Hub 会使用 config.json 作为默认查询文件。否则,查询文件取决于各个库,Hub 可能会检查诸如 pytorch_model.bin 或 adapter_config.json 之类的文件。

不同库的查询文件是哪些?

默认情况下,Hub 会查看 config.json、config.yaml、hyperparams.yaml、params.json 和 meta.yaml。某些库通过指定自己的过滤器(即指定 countDownloads)来覆盖这些默认设置。定义这些覆盖的代码是开源的。例如,对于 nemo 库,所有扩展名为 .nemo 的文件都用于统计下载量。

我可以在我的库中添加查询文件吗?

是的,您可以在此处提交 Pull Request。下面是一个为 VFIMamba 添加下载指标的最小示例。有关更多详细信息,请参阅集成指南。

GGUF 文件是如何处理的?

GGUF 文件是自包含的,且不绑定于任何单一库,因此所有 GGUF 文件均计入下载量。如果用户克隆整个仓库,这会导致下载量被重复计算,但大多数用户和界面针对给定仓库仅下载单个 GGUF 文件。

diffusers 是如何处理的?

diffusers 库属于边缘情况,其过滤器在内部代码库中进行了配置。该过滤器确保标记为 diffusers 的仓库,既统计通过该库加载的文件,也统计需要通过用户界面手动下载顶层 safetensors 的文件。

filter: [
		{
			bool: {
				/// Include documents that match at least one of the following rules
				should: [
					/// Downloaded from diffusers lib
					{
						term: { path: "model_index.json" },
					},
					/// Downloaded from diffusers lib through modular pipelines
					{
						term: { path: "modular_model_index.json" },
					},
					/// Direct downloads (LoRa, Auto1111 and others)
					/// Filter out nested safetensors and pickle weights to avoid double counting downloads from the diffusers lib
					{
						regexp: { path: "[^/]*\\.safetensors" },
					},
					{
						regexp: { path: "[^/]*\\.ckpt" },
					},
					{
						regexp: { path: "[^/]*\\.bin" },
					},
				],
				minimum_should_match: 1,
			},
		},
	]
}

如果我需要更细粒度的模型下载数据怎么办?

如果您需要更细粒度的下载数据,例如用于:

  • 将 config.json 与模型权重区分开来,
  • 将下载排除在 CI/CD 流水线之外,
  • 或去重用户(即统计唯一下载者数量),

然后,Publisher Analytics,尤其是其中的granular logs功能,可以为您的组织发布的所有模型和数据集提供匿名化的请求级访问日志。

这些以原始日志的形式提供,因为大多数组织希望应用自己的自定义规则。

Update on GitHub