首页 > 其他分享 >以下是设置Hugging Face `from_pretrained` 默认保存路径的完整解决方案:

以下是设置Hugging Face `from_pretrained` 默认保存路径的完整解决方案:

时间:2025-01-21 16:28:15浏览次数:3  
标签:CACHE cache 路径 Hugging Face DIR import os pretrained

以下是设置Hugging Face from_pretrained 默认保存路径的完整解决方案:


方法1:通过环境变量全局设置

在代码或系统环境变量中设置模型缓存路径:

import os
from pathlib import Path

# 设置自定义缓存路径(推荐使用绝对路径)
CUSTOM_CACHE_DIR = "/path/to/your/model_cache"

# 确保目录存在
Path(CUSTOM_CACHE_DIR).mkdir(parents=True, exist_ok=True)

# 设置环境变量(需在加载任何模型之前设置)
os.environ["TRANSFORMERS_CACHE"] = CUSTOM_CACHE_DIR
os.environ["HF_HOME"] = CUSTOM_CACHE_DIR  # 可选,同时设置HuggingFace根目录

# 验证设置
print(f"当前模型缓存路径:{os.environ.get('TRANSFORMERS_CACHE')}")

方法2:代码中动态指定路径

在每次调用from_pretrained时指定路径:

from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained(
    "meta-llama/Meta-Llama-3-8B-Instruct",
    cache_dir="/path/to/your/model_cache"  # 指定本次下载的存储路径
)

tokenizer = AutoTokenizer.from_pretrained(
    "meta-llama/Meta-Llama-3-8B-Instruct",
    cache_dir="/path/to/your/model_cache"
)

方法3:配置文件设置(推荐)

创建 config.json 文件持久化配置:

# config.py
import os
from pathlib import Path

class ModelConfig:
    CACHE_DIR = Path("/mnt/nas/llm_models/huggingface")
    CACHE_DIR.mkdir(parents=True, exist_ok=True)
    
    # 应用配置
    os.environ["TRANSFORMERS_CACHE"] = str(CACHE_DIR)
    os.environ["HF_DATASETS_CACHE"] = str(CACHE_DIR / "datasets")  # 数据集缓存路径

验证配置是否生效

from transformers import file_utils

# 打印当前缓存路径
print(f"实际使用的缓存路径:{file_utils.default_cache_path}")

路径管理最佳实践

  1. 多磁盘存储

    # 根据模型大小自动选择存储位置
    def get_cache_dir(model_name: str) -> str:
        large_models = ["Llama-3-70B", "Mixtral-8x22B"]
        return "/mnt/ssd_cache" if model_name in large_models else "/mnt/hdd_cache"
    
  2. 自动清理脚本

    # 清理超过30天未使用的模型
    import shutil, time
    CACHE_DIR = "/path/to/cache"
    
    for model_dir in Path(CACHE_DIR).glob("*"):
        last_used = model_dir.stat().st_atime
        if time.time() - last_used > 30*86400:
            shutil.rmtree(model_dir)
    
  3. 多用户隔离

    # 根据用户ID隔离缓存
    import getpass
    user_id = getpass.getuser()
    os.environ["TRANSFORMERS_CACHE"] = f"/llm_cache/{user_id}"
    

跨平台路径设置示例

操作系统推荐路径格式
Linux/mnt/ssd/huggingface_cache
WindowsD:\\LLM\\huggingface_cache
macOS/Volumes/External/hf_cache

常见问题排查

  1. 权限不足

    # Linux/Mac 添加写权限
    sudo chmod -R a+rw /path/to/cache
    
  2. 磁盘空间监控

    import shutil
    
    def check_disk_space(path):
        usage = shutil.disk_usage(path)
        print(f"剩余空间:{usage.free / (1024**3):.1f}GB")
    
  3. 网络代理设置

    os.environ["HTTP_PROXY"] = "http://proxy.example.com:8080"
    os.environ["HTTPS_PROXY"] = "http://proxy.example.com:8080"
    

通过上述配置,您可以实现:

  • 集中管理所有Hugging Face模型的存储位置
  • 根据硬件条件优化存储策略
  • 实现自动化的缓存清理
  • 支持多用户/多项目环境隔离

标签:CACHE,cache,路径,Hugging,Face,DIR,import,os,pretrained
From: https://blog.csdn.net/u014158430/article/details/145285625

相关文章

  • Facebook广告零支出无消耗:可能原因与解决方法
    Facebook广告开启投放之后预算消耗一动不动,到底是什么原因?又有哪些解决方法?及时排查并解决,助力提升广告效果和转化!一、Facebook广告无支出的可能原因1.出价过低和同属于Meta的Instagram广告竞标因素类似,Facebook广告的竞争因素也是这三点:Advertiser bid出价、Ad quality......
  • Hugging Face功能介绍,及在线体验当前顶级文生图模型Flux
    HuggingFace简介对于非机器学习或深度学习领域的人士来说,HuggingFace这个名字可能并不耳熟。然而,随着近年来大规模模型的迅速崛起,相信大家或多或少都有所接触。如果你对这一领域感兴趣,并在GitHub上查阅过一些开源资料,那么你一定会频繁地看到HuggingFace的身影。例如,在DeepSeek......
  • 2025年必知的Meta(Facebook)广告趋势与技巧!
     Meta广告作为全球最主要的数字广告平台之一,对于许多跨境出海企业来说,关注Meta广告优化趋势是获客的关键之一。过去一年Meta优化步伐渐紧,展望2025年将不断涌现新的趋势和技巧。本文将深入分析2025年Meta广告的关键趋势,帮助广告主在2025年提高投放效果。一、2025Meta广告新趋......
  • Android T(13) 源码分析 — 原生层 Surface 的创建
    AndroidT(13)源码分析—原生层Surface的创建文章目录AndroidT(13)源码分析—原生层Surface的创建前言摘要一、SurfaceComposerClient的createSurfaceChecked分析二、ISurfaceComposerClient的createSurface分析总结前言该系列文章基于AndroidT......
  • kea dhcp4 服务报错"No subnet matches interface"的问题分析
    目录环境现象结论环境电脑为Manjaro,KDE环境,已经配置ipv4地址192.168.201.182/24计划使用kea做DHCP服务器,配置新的192.168.182.1ip地址作为DHCPv4服务器地址(原本想直接用配置里的192.0.2.0/24做DHCP服务的)现象设备无法通过电脑获取DHCP地址wireshark看抓包,有DHC......
  • 《浪漫沙加2:七英雄的复仇》游戏启动时报错提示“找不到facesdk.dll”文件的原因和处理
    对于众多游戏爱好者而言,《浪漫沙加2:七英雄的复仇》无疑是一款备受期待、渴望沉浸其中的佳作。然而,不少玩家在满心欢喜准备启动游戏时,却遭遇了令人沮丧的报错提示——“找不到facesdk.dll”文件,这一状况瞬间打破了游戏的美好憧憬,探寻背后原因与处理方案势在必行。报错提示......
  • netplan apply报错No module named ‘netifaces‘
    Ubuntu20.04.5LTS\n\l,ctrl+alt+f2切换字符登录f1切换图形处理办法:root登录执行root@node37:/disk1/Qwen2.5-72B-Instruct-GPTQ-Int4#cat/etc/netplan/01-network-manager-all.yaml #LetNetworkManagermanagealldevicesonthissystemnetwork: version:2......
  • 探索 Hugging Face Transformers 库
    自然语言处理(NLP)领域近年来取得了巨大的进展,而HuggingFaceTransformers库无疑是推动这一进展的重要力量。它为研究人员和开发者提供了丰富的预训练模型、简洁易用的接口以及高效的工具,极大地简化了NLP任务的开发流程。本文将带您深入探索Transformers库,了解其核心功能、......
  • 2024最新Facebook养号攻略!3大步骤有效养成多账号
    在海外社媒Facebook营销之中,我们经常能够听到分享关于“养号”的内容,“养号”是海外营销前必不可少的环节,那么这个养号到底怎么养才有效?有什么作用呢?下面小编汇集全网有效案例,给大家带来几个有用的分享。一、Facebook养号真的有用吗?许多从事Facebook营销的专业人士都清楚,Fac......
  • 深入Android架构(从线程到AIDL)_18 SurfaceView的UI多线程02
    目录2、使用SurfaceView画2D图范例一设计GameLoop(把小线程移出来)范例二2、使用SurfaceView画2D图范例一以SurfaceView绘出Bitmap图像设计SpriteView类别来实作SurfaceHolder.Callback接口首先来看个简单的程序,显示出一个Bitmap图像。这个图像就构成Sprite动画的基......