操作 hf 的时候不小心手滑把一个模型的 cache 给删了,幸好本来的东西还在,只不过 cache 里面的命名方式……一时不知道怎么办。

~/.cache/huggingface/hub » tree
.
├── models--mlx-community--whisper-large-v2-mlx
│   ├── blobs
│   │   ├── 48abf62a3d41836847f8c8ff4e74625201b7096f
│   │   ├── 66a8e0d4a73eb1e6a44b9b516720e414e8e98e75
│   │   ├── a6344aac8c09253b3b630fb776ae94478aa0275b
│   │   └── c9888a2d03b4e9906c2864151f56dc21e58d617938da0eb818152e3f99adc3f1
│   ├── refs
│   │   └── main
│   └── snapshots
│       └── cce86229e2765266197fef869ce9f7e2550067ab
│           ├── config.json -> ../../blobs/48abf62a3d41836847f8c8ff4e74625201b7096f
│           ├── README.md -> ../../blobs/66a8e0d4a73eb1e6a44b9b516720e414e8e98e75
│           └── weights.npz -> ../../blobs/c9888a2d03b4e9906c2864151f56dc21e58d617938da0eb818152e3f99adc3f1
...

然后看了这个帖子,大概知道是怎么回事了:

  • blobs
    • 里面有模型的四个文件,但是文件名是哈希值,用cache里面的文件试了一下,算了几个常见种类都不对,想不明白。
  • refs/main
    • 指向这个模型的 main ref.
  • snapshots
    • 存着每一个下载过的 ref,
      • 把文件名软连接到真正的的文件上。

但算了几下发现 hash 似乎不是帖子说的 md5, 也不是 sha1, 可也不想真的去算了,模型那么重,算一遍要很久。

然后意外发现下载到本地的模型里面有之前的 metadata, ref 也对得上。

models/whisper-large-v2/
├── .cache
│   └── huggingface
│       ├── .gitignore
│       └── download
│           ├── .gitattributes.lock
│           ├── .gitattributes.metadata
│           ├── config.json.lock
│           ├── config.json.metadata
│           ├── README.md.lock
│           ├── README.md.metadata
│           ├── weights.npz.lock
│           └── weights.npz.metadata
├── .gitattributes
├── config.json
├── README.md
└── weights.npz

搞定。