Python:模型下载
目录
参考
# Python:模型下载
# 1. 自动下载机制优化
默认流程: 代码首次运行时从Hugging Face官方服务器下载模型(如
sentence-transformers/all-MiniLM-L6-v2
),缓存至本地路径(~/.cache/huggingface/hub
)。缓存复用:后续调用直接读取本地缓存,无需重复下载。
新增技巧:
通过
snapshot_download
函数预设缓存目录,避免默认路径空间不足问题:from huggingface_hub import snapshot_download snapshot_download(repo_id="sentence-transformers/all-MiniLM-L6-v2", cache_dir="/custom/cache/path")
1
2
# 2. 国内下载问题与解决方案(全面扩展)
# 问题根源
- 直接访问Hugging Face可能因网络限制失败(尤其国内用户)。
# 解决方案
# 方法一:镜像站加速(首选)
镜像源设置:
代码中注入环境变量:
import os os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' # 国内镜像站
1
2命令行全局生效(Linux/Mac):
export HF_ENDPOINT=https://hf-mirror.com # 写入~/.bashrc永久生效
1
专用下载工具:
使用
hf-cli
工具(支持多线程、断点续传):pip install hf-cli hf-cli download --model-id sentence-transformers/all-MiniLM-L6-v2 --local-dir ./model
1
2
# 方法二:手动下载 + 本地加载
下载途径:
官网/镜像站:从Hugging Face官网或镜像站直接下载模型文件(含
config.json
、pytorch_model.bin
等)。其他平台:
ModelScope(魔搭):支持国产模型(如通义、深度求索),默认使用国内CDN加速:
from modelscope import snapshot_download snapshot_download('damo/nlp_structbert_backbone_base_std', cache_dir="./model")
1
2Ollama:支持离线部署(如
deepseek-r1:7b
),适用于无网环境。
本地加载:
from langchain.embeddings import HuggingFaceEmbeddings embedding_function = HuggingFaceEmbeddings(model_name="./local/all-MiniLM-L6-v2")
1
2
# 方法三:云服务器中转
在AutoDL等云平台训练模型后,通过SCP/XFTP下载至本地:
scp -r user@server:/path/to/model.pth ./local_model # 命令行下载
1
# 3. 模型特点与多平台支持
平台/模型 | 特点 | 安装命令 |
---|---|---|
Hugging Face | 支持轻量模型(如all-MiniLM-L6-v2: 80MB/384维向量) | pip install sentence-transformers |
ModelScope | 专注中文模型,集成阿里、深度求索等国产模型 | pip install modelscope |
Ollama | 支持离线运行GGUF格式模型(如Llama 3),需本地部署 | 官网下载安装包 + 导入GGUF文件 |
# 4. 下载验证与故障处理
完整性检查:
文件验证:检查缓存目录是否存在完整文件(如
~/.cache/huggingface/hub/models--sentence-transformers--all-MiniLM-L6-v2
)。哈希校验:对比官方SHA-256值(适用重要模型):
import hashlib def calc_sha256(file_path): # 计算文件哈希值
1
2
3
中断恢复:
使用
--resume-download
参数续传下载:huggingface-cli download --resume-download gpt2 --local-dir ./gpt2
1
# 总结:模型下载最佳实践
- 国内用户:优先配置镜像站(
HF_ENDPOINT=https://hf-mirror.com
)+hf-cli
工具。 - 大模型/敏感模型:手动下载后本地加载,或通过ModelScope/Ollama等国内友好平台获取。
- 验证步骤:检查文件目录 + 哈希校验,确保无损坏。
- 空间管理:预设
cache_dir
避免默认路径空间不足。
此方案覆盖主流模型平台、多场景下载需求及验证方法,技术细节均基于2024-2025年最新实践。如需具体模型案例代码或扩展方案,可进一步查阅关联文档。
要修改HuggingFace模型的默认下载路径,可以通过以下几种方法实现:
设置环境变量
在代码中或系统环境变量中添加以下变量之一:HF_HOME
:指定HuggingFace全家桶缓存路径TRANSFORMERS_CACHE
:专门控制Transformers库的缓存路径
示例代码:
import os os.environ['HF_HOME'] = 'D:/custom_path/huggingface'
1
2修改
.bashrc
文件(Linux/macOS)
在用户目录下的.bashrc
文件中添加:export HF_HOME="/data1/user/cache/huggingface"
1然后执行
source ~/.bashrc
使配置生效。Windows系统永久修改
- 通过系统属性 -> 高级系统设置 -> 环境变量,新增
HF_HOME
变量并指定路径(如E:\huggingface_cache
) - 或在PowerShell中临时设置:
$env:HF_HOME = "E:\huggingface_cache"
1
- 通过系统属性 -> 高级系统设置 -> 环境变量,新增
通过
cache_dir
参数指定
在加载模型时直接指定路径:embedding_function = HuggingFaceEmbeddings( model_name="all-MiniLM-L6-v2", cache_dir="D:/custom_cache" )
1
2
3
4这种方法适用于临时修改。
修改ChromaDB相关配置
如果是ChromaDB调用的HuggingFace模型,还需检查ChromaDB的配置文件或环境变量CHROMA_CACHE_PATH
,确保其指向非系统盘路径。
建议优先采用环境变量方式(方法1或2),这样所有HuggingFace相关组件都会自动使用新路径。修改后需删除原缓存目录中的内容或重启IDE使配置生效。
引用链接: 1.【torch\huggingface默认下载路径修改】.cache/torch/ 或 .cache/huggingface - CSDN博客 (opens new window) 2.如何解决huggingface默认下载路径(windows) - CSDN博客 (opens new window) 3.huggingface模型下载位置 - 博客 (opens new window) 4.AutoDL 常用环境默认路径修改 - 掘金开发者社区 (opens new window) 5.ComfyUI_连接HuggingFace及更改缓存路径 - 花鸣空 (opens new window) 6.修改huggingface下载路径 - 博客 (opens new window) 7.Hugging Face 下载模型指南:手把手教你玩转 - 腾讯云 (opens new window) 8.不会修改HuggingFace模型下载默认缓存路径?一篇教会你! - CSDN博客 (opens new window) 9.修改HuggingFace模型默认缓存路径 - CSDN博客 (opens new window) 10.教你顺利下载Huggingface上的大模型文件 - tornado (opens new window) 11.修改PyTorch预训练模型的下载路径(以及对现有模型vgg16修改) - CSDN博客 (opens new window) 12.修改PyTorch预训练模型的下载路径 - CSDN博客 (opens new window) 13.Pytorch实战Transformer算法之Embedding层和Positional编码 - 虞大胆的叽叽喳喳 (opens new window) 14.PyTorch中的nn.Embedding的使用、参数及案例_pytorch nn.embedding-CSDN博客 - CSDN博客 (opens new window) 15.Python下载Huggingface模型报错,手动下载模型并放入指定位置 - 冰镇柠檬水 (opens new window) 16.修改huggingface模型的储存位置的设置方法 - CSDN下载 (opens new window) 17.修改huggingface transformers 默认模型保存路径 - CSDN博客 (opens new window) 18.HuggingFace下载模型默认保存在~/.cache/huggingface下面怎么修改这个路径? - Kalyosha (opens new window) 19.HuggingFace下载模型默认保存在~/.cache/huggingface下面怎么修改这个路径? - SayHelloCode (opens new window) 20.huggingface修改模型下载路径 - 博客 (opens new window) 21.修改huggingface保存路径 anaconda - 博客 (opens new window) 22.修改torch和huggingface 缓存路径 - 阿里云开发者社区 (opens new window) 23.深度学习模型默认下载位置修改 - 51CTO博客 (opens new window) 24.如何更改pycharm缓存路径 - 51CTO博客 (opens new window) 25.修改PyTorch Cache 文件下载路径 - 腾讯云 (opens new window) 26.最简Hugging Face 模型下载方法(1) - 知乎 (opens new window) 27.如何修改pycharm模型下载的路径 - 博客 (opens new window) 28.如何更改python下载地址 - PingCode (opens new window) 29.pycharm中python路径配置 - 51CTO博客 (opens new window) 30.pytorch入门 - 修改huggingface大模型配置参数-CSDN博客 - CSDN博客 (opens new window) 31.HuggingFace下载模型默认保存在~/.cache/huggingface下面怎么修改这个路径? - Tyrion (opens new window)
以下是关于 HF_HOME 与 TRANSFORMERS_CACHE 环境变量的核心作用、区别及配置指南,结合最新技术实践整理而成:
# 🔧 一、核心作用与区别
环境变量 | 作用范围 | 功能说明 | 默认路径 |
---|---|---|---|
HF_HOME | Hugging Face 全系工具库 | 统一管理所有缓存(模型、数据集、配置等),是全局根目录 | ~/.cache/huggingface |
TRANSFORMERS_CACHE | Transformers 库专用 | 仅覆盖 transformers 库的模型缓存路径,优先级高于 HF_HOME 的子目录 | $HF_HOME/hub 或自定义路径 |
⚠️ 优先级逻辑: 若同时设置
TRANSFORMERS_CACHE
,则 Transformers 库的模型下载路径以该变量为准,否则继承$HF_HOME/hub
。
# ⚙️ 二、配置方法(支持 Windows/Linux/macOS)
# 1. 全局设置 HF_HOME
(推荐)
# Linux/macOS(永久生效)
echo 'export HF_HOME="/path/to/your/cache"' >> ~/.bashrc # 或 ~/.zshrc
source ~/.bashrc
# Windows(系统环境变量)
变量名:`HF_HOME`
变量值:`D:\hf_cache` # 自定义路径
2
3
4
5
6
7
- 效果:所有 Hugging Face 工具(Transformers、Datasets、Diffusers 等)的缓存均存储至
$HF_HOME
下的对应子目录(如hub/
,datasets/
)。
# 2. 局部设置 TRANSFORMERS_CACHE
(项目隔离)
# 临时生效(命令行)
export TRANSFORMERS_CACHE="/path/to/transformers-only-cache"
# 代码中指定(Python)
import os
os.environ["TRANSFORMERS_CACHE"] = "/path/to/transformers-only-cache"
2
3
4
5
6
- 适用场景:需隔离不同项目的模型缓存,或避免默认路径磁盘空间不足。
# 🛠️ 三、高级实践技巧
# 1. 国内下载加速
配置镜像源解决 Hugging Face 访问慢的问题:
# 设置镜像源(与缓存路径独立)
export HF_ENDPOINT="https://hf-mirror.com"
2
- 此配置对
HF_HOME
和TRANSFORMERS_CACHE
均生效。
# 2. 显存优化(大模型必备)
结合 KV Cache 量化技术减少缓存显存占用(Transformers 库 ≥4.36.0):
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
output = model.generate(
inputs,
cache_implementation="quantized", # 启用量化缓存
cache_config={"backend": "quanto", "nbits": 4} # 4bit量化,显存降2.5倍
)
2
3
4
5
6
7
8
- 效果:长序列生成时显存减少 60%,精度损失可忽略。
# 💾 四、路径验证与故障排查
# 检查当前缓存路径
from huggingface_hub import get_hf_home, get_transformers_cache
print("HF_HOME:", get_hf_home()) # 输出全局缓存根目录
print("TRANSFORMERS_CACHE:", get_transformers_cache()) # 输出Transformers专用路径
2
3
4
# 常见问题解决
问题 | 解决方案 |
---|---|
路径权限错误(Linux) | 执行 chmod -R 755 /path/to/cache 赋予读写权限 |
缓存未生效 | 重启终端或 IDE(PyCharm 需完全重启);Windows 需注销后重新登录 |
磁盘空间不足 | 将路径指向大容量分区(如 /data/hf_cache )或 NAS 存储 |
# 💎 总结:选择策略
- 统一管理需求 → 优先设置
HF_HOME
(全工具链兼容) - 项目独立缓存 → 额外设置
TRANSFORMERS_CACHE
(避免污染全局路径) - 大模型/长文本生成 → 启用
cache_implementation="quantized"
显存优化
通过合理配置这两个变量,可显著提升开发效率并解决资源瓶颈问题。建议结合镜像源与量化技术,构建更稳定高效的开发环境。