Python:模型下载

12/31/2025 后端开发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
# 方法二:手动下载 + 本地加载
  1. 下载途径:

    • 官网/镜像站:从Hugging Face官网或镜像站直接下载模型文件(含config.jsonpytorch_model.bin等)。

    • 其他平台:

      • ModelScope(魔搭):支持国产模型(如通义、深度求索),默认使用国内CDN加速:

        from modelscope import snapshot_download  
        snapshot_download('damo/nlp_structbert_backbone_base_std', cache_dir="./model")  
        
        1
        2
      • Ollama:支持离线部署(如deepseek-r1:7b),适用于无网环境。

  2. 本地加载:

    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

# 总结:模型下载最佳实践

  1. 国内用户:优先配置镜像站(HF_ENDPOINT=https://hf-mirror.com)+ hf-cli工具。
  2. 大模型/敏感模型:手动下载后本地加载,或通过ModelScope/Ollama等国内友好平台获取。
  3. 验证步骤:检查文件目录 + 哈希校验,确保无损坏。
  4. 空间管理:预设cache_dir避免默认路径空间不足。

此方案覆盖主流模型平台、多场景下载需求及验证方法,技术细节均基于2024-2025年最新实践。如需具体模型案例代码或扩展方案,可进一步查阅关联文档。


要修改HuggingFace模型的默认下载路径,可以通过以下几种方法实现:

  1. 设置环境变量
    在代码中或系统环境变量中添加以下变量之一:

    • HF_HOME:指定HuggingFace全家桶缓存路径
    • TRANSFORMERS_CACHE:专门控制Transformers库的缓存路径
      示例代码:
    import os
    os.environ['HF_HOME'] = 'D:/custom_path/huggingface'
    
    1
    2
  2. 修改.bashrc文件(Linux/macOS)
    在用户目录下的.bashrc文件中添加:

    export HF_HOME="/data1/user/cache/huggingface"
    
    1

    然后执行source ~/.bashrc使配置生效。

  3. Windows系统永久修改

    • 通过系统属性 -> 高级系统设置 -> 环境变量,新增HF_HOME变量并指定路径(如E:\huggingface_cache
    • 或在PowerShell中临时设置:
      $env:HF_HOME = "E:\huggingface_cache"
      
      1
  4. 通过cache_dir参数指定
    在加载模型时直接指定路径:

    embedding_function = HuggingFaceEmbeddings(
        model_name="all-MiniLM-L6-v2",
        cache_dir="D:/custom_cache"
    )
    
    1
    2
    3
    4

    这种方法适用于临时修改。

  5. 修改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_HOMETRANSFORMERS_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`  # 自定义路径
1
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"
1
2
3
4
5
6
  • 适用场景:需隔离不同项目的模型缓存,或避免默认路径磁盘空间不足。

# 🛠️ 三、高级实践技巧

# 1. 国内下载加速

配置镜像源解决 Hugging Face 访问慢的问题:

# 设置镜像源(与缓存路径独立)
export HF_ENDPOINT="https://hf-mirror.com"
1
2
  • 此配置对 HF_HOMETRANSFORMERS_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倍
)
1
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专用路径
1
2
3
4

# 常见问题解决

问题 解决方案
路径权限错误(Linux) 执行 chmod -R 755 /path/to/cache 赋予读写权限
缓存未生效 重启终端或 IDE(PyCharm 需完全重启);Windows 需注销后重新登录
磁盘空间不足 将路径指向大容量分区(如 /data/hf_cache)或 NAS 存储

# 💎 总结:选择策略

  • 统一管理需求 → 优先设置 HF_HOME(全工具链兼容)
  • 项目独立缓存 → 额外设置 TRANSFORMERS_CACHE(避免污染全局路径)
  • 大模型/长文本生成 → 启用 cache_implementation="quantized" 显存优化

通过合理配置这两个变量,可显著提升开发效率并解决资源瓶颈问题。建议结合镜像源与量化技术,构建更稳定高效的开发环境。

上次更新时间: 6/18/2025, 5:58:03 PM