把 AI 模型下载到指定目录,建议使用 Hugging Face 官方的 snapshot_download:先确定仓库和提交版本,再取得所需配置、权重与分词器,最后保存文件清单。只看到一个权重文件,不能判断后续程序一定能加载它。
下面在 Windows、Python 3.11.15、huggingface_hub 1.26.1 环境实际下载了一个公开测试模型,官方文档核对日期为 2026 年 10 月 1 日。示例用于验证下载、目录和版本记录,不评估模型能力,也不表示其他模型的许可证或访问权限已获批准。

先认识下载对象:仓库、版本和文件是三件事
仓库 ID 是 hf-internal-testing/tiny-random-bert;该提交的官方模型资料列有 config.json、model.safetensors、分词器文件和其他框架文件。本篇选取 Transformers 加载这个小模型所需的六个文件,不下载 TensorFlow 权重和 ONNX 文件。
- 仓库 ID回答从哪里取得模型,不能只填页面上的显示名称。
- revision回答取得哪一次提交。main 可以随仓库更新改变;完整提交 SHA 可以固定这次下载的版本。
- 文件集合由运行框架决定。分片模型还可能需要权重索引与全部分片;不能把本例的六文件清单套用到所有模型。
官方下载指南说明,snapshot_download 可使用 revision、local_dir 和文件过滤参数。过滤是按文件名匹配,不会替你判断模型架构和依赖是否完整。
安装工具,并在独立练习目录运行
以下为 Windows PowerShell 命令;需要已安装 Python 3.11、能访问官方 Hub 的网络和可写磁盘。新建一个空练习目录并进入它,建立环境:
py -3.11 -m venv .venv-hub
.\.venv-hub\Scripts\python.exe -m pip install "huggingface_hub==1.26.1"
保存下面完整代码为 download_model.py,执行 .\.venv-hub\Scripts\python.exe -X utf8 download_model.py。模型文件写入当前目录下的 models/tiny-random-bert,清单写入 download_manifest.json;请先确认这些是本次练习目录。这个公开仓库采用 token=False,不需要把账号 Token 写进脚本。
from pathlib import Path
import hashlib
import json
from huggingface_hub import HfApi, snapshot_download
repo = 'hf-internal-testing/tiny-random-bert'
revision = 'f171d7baecaf37b5da5a3616d8833b9969753535'
folder = Path('models/tiny-random-bert').resolve()
info = HfApi().model_info(repo, revision=revision, token=False)
snapshot_download(
repo_id=repo, revision=info.sha, local_dir=folder,
allow_patterns=['*.json', '*.safetensors', 'vocab.txt'], token=False,
)
required = ['config.json', 'model.safetensors', 'tokenizer.json',
'tokenizer_config.json', 'special_tokens_map.json', 'vocab.txt']
files = {}
for name in required:
p = folder / name
if not p.is_file() or p.stat().st_size == 0:
raise RuntimeError(f'缺少文件或文件为空: {name}')
files[name] = {'bytes': p.stat().st_size,
'sha256': hashlib.sha256(p.read_bytes()).hexdigest()}
record = {'repo_id': repo, 'revision': info.sha, 'files': files}
Path('download_manifest.json').write_text(
json.dumps(record, ensure_ascii=False, indent=2), encoding='utf-8')
print('revision:', info.sha)
print('required_files:', len(files))
print('weights_bytes:', files['model.safetensors']['bytes'])
print('manifest:', Path('download_manifest.json').resolve())
如何判断下载已经完成
本次实际输出中的固定信息如下;最后的 manifest 路径会随你的练习目录变化。
revision: f171d7baecaf37b5da5a3616d8833b9969753535
required_files: 6
weights_bytes: 520212
脚本对六个文件分别检查存在、非空,并记录字节数和 SHA-256。下载时就指定了同一个提交 SHA,避免先取配置、后取权重时意外混入另一版本。将目录转移到其他机器后,可以重新计算文件哈希并和清单核对;这证明转移前后字节一致,不能证明来源发布者可信。
模型目录中可能出现 .cache/huggingface 下载元数据,这是 local_dir 模式管理增量下载的资料。它与默认 Hub 缓存中的仓库目录不是同一套路径;不要因为看见“cache”就把实际模型文件一并删掉。
换成自己的模型前,要改什么
- 打开目标模型的 Files 页面,确定仓库 ID、许可证、运行框架与可用提交。
- 把 repo 和 revision 换成已经核对的目标;完整 SHA 可从仓库提交记录获得。
- 重做 allow_patterns 和 required。大模型分片必须包含索引及全部必要权重;tokenizer 也可能使用不同文件名。
- 先完成文件检查,再执行该架构的加载与一条固定输入推理。下载完成不等于运行成功。
本测试仓库的上述文件列表没有 README 或 LICENSE;不能因此推断它可商用。实际项目应在模型卡、仓库条款或作者提供的资料中找到可核实许可,再决定用途。
下载失败时按症状处理
| 症状 | 先检查 | 下一步 |
|---|---|---|
| 401、403 或访问受限提示 | 账号、Token 读取范围和模型访问申请 | 核对授权;更换本地目录不能解决仓库权限 |
| 找不到 revision | 提交 SHA、仓库 ID 是否对应 | 回到同一仓库确认提交存在,不随意改成 main 掩盖问题 |
| 配置存在但没有权重 | allow_patterns 是否漏掉实际权重后缀或分片 | 对照 Files 重做清单,再下载缺项 |
| 网络超时或磁盘写入失败 | 网络报错、目录权限和可用空间 | 先修复具体环境错误,再以同一仓库与 revision 重试 |
已经有文件,能否直接交给 Ollama?
不能按“都是模型文件”判断兼容性。Ollama 对架构和导入格式有要求;若目标是导入已有 GGUF,可阅读Ollama 离线导入 DeepSeek GGUF 的步骤。本篇完成的是可追溯的模型目录取得,下一步应按实际运行框架做加载验证。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32502.html