如何自定义huggingface模型导入路径(使用本地已经下载好的模型)

如何自己定义导入的路径(包含对于.cache中模型的导入)

第一种是有一个完整的下载好的模型的情况,比如我这里有一个unet的模型,不管是什么格式,但是已经被下载到了本地的一个路径
在这里插入图片描述
这里需要注意的是huggingface这种导入模型都要有对应的一个config.json文件,缺失的话不能正确读入模型的一些模块类,对于这个自己手动下载到指定位置的模型,只需要使用它本身的路径即可,注意添加一个local_files_only=True,即不通过repo id的方式导入模型

unet = UNet2DConditionModel.from_pretrained(args.ckpt, trust_remote_code=True, local_files_only=True)

第二种是我在本地已经下载好了一个模型,这个模型是通过huggingface-cli download方式下载的,那么它会在一个huggingface默认配置的缓存路径存放,通常就是home路径下的这里

.cache/huggingface/hub
在这里插入图片描述

这里的模型是使用文件本体和软链接并存的方式,对于所有模型而言,会有3个文件夹分别是blobs,refs和snapshots

而我们真正要使用的模型其实是在blobs里,但是如果进入后会发现这些文件都不是正常的命名格式,是一堆编码文件名,但是他们的大小和原始模型的大小都完全对应的上,所以如果这些文件被删除或者移动,模型就没法正常被导入了,但是我们在使用的时候,更常见的情况是使用snapshots里的文件,snapshots文件夹下也有一个编码命名的文件夹,再进去就是对应huggingface仓库中的目录格式了
在这里插入图片描述
但是要注意这里所有的文件其实都是软链接,它们是刚刚blobs真实文件对应的软链接,而且这些软链接都是相对路径,一旦被复制到其他地方,就不能被使用了(如果绝对路径可以被使用,相对路径的情况下是否可以通过修改实现使用不确定,这里不做探究),所以为了保证不出问题,且方便管理,仍然遵循huggingface默认的这种模型管理方式,我们希望在自定义导入模型的时候,不去破坏这个hub里的模型文件——因此在传入模型的时候,就可以直接将对应模型的软链接所在路径传给导入模型的api
例如

    base_path = '/home/用户名/.cache/huggingface/hub/models--stable-diffusion-v1-5--stable-diffusion-v1-5/snapshots/stable-diffusion-v1-5/'
    vae_path = base_path+'vae'
    vae = AutoencoderKL.from_pretrained(
        vae_path,
        revision=None,
        local_files_only=True //这里同样要有这个标志位
    )

这里我的snapshots下的文件夹名自己改过了,但是不影响模型导入,这样就可以自己使用stable diffusion仓库中特定的模型了,这个模型是事先通过huggingface-cli download到默认缓存路径的。

补充huggingface下载指定文件

首先为了加速国内下载,要使用

 export HF_ENDPOINT=https://hf-mirror.com

这个指令是临时环境变量,只对当前终端所在进程生效,然后就可以使用hf的cli进行下载了,下载时可以通过–inclue “*.xxx” 或者–exclude “*.xxx”来实现包含和不包含某些文件了,譬如一个模型他有gguf,safetensors,bin等多种格式,或者有多个不同量化的版本,我们希望只下载其中一个,就可以通过exclude将其他的文件类型通过这种正则表达式来进行忽略,但是文件夹会仍然按照原始仓库的排列形式

下载如果是需要通过一些协议的,就需要使用huggingface-cli login,然后在settings里设置专门的token进行登录,这个指令很看网速,经常登录不上去,只能多尝试了

参考链接: huggingface 模型下载与离线加载
有其他问题或者实现方式欢迎补充。

### 使用Transformers库加载通过Ollama下载模型 要实现这一目标,需先确认Ollama所支持的模型格式以及其与Hugging Face Transformers库之间的兼容性。以下是具体方法: #### 安装必要的依赖项 为了能够使用预训练BERT模型并对其进行微调操作,首先需要安装`transformers`库[^1]。 ```bash !pip install transformers ``` 如果Ollama提供了特定于某些框架(如PyTorch或TensorFlow)的支持,则可能还需要额外安装这些框架的相关包。 #### 下载并通过本地路径加载模型 假设已经利用Ollama成功下载了一个模型本地目录下,那么可以通过指定该文件夹作为参数来初始化相应的Transformer类实例对象。需要注意的是,这里假定此模型已经被转换成适合被HuggingFace接收的形式;如果不是这种情况的话,则可能涉及一些额外的数据处理步骤以便适配API接口需求。 对于大多数情况下,可以直接采用如下方式完成加载过程: ```python from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("/path/to/downloaded/model") model = AutoModelForCausalLM.from_pretrained("/path/to/downloaded/model") ``` 上述代码片段展示了如何基于自定义位置创建标记化器(`AutoTokenizer`)和因果语言模型(`AutoModelForCausalLM`)两个核心组件[^3]。其中,“/path/to/downloaded/model”应替换为你实际保存模型的位置。 另外值得注意的一点是,在某些特殊场景下,比如当面对非常规架构或者非标准权重命名规则的时候,也许会遇到不匹配错误等问题发生。此时可以根据具体情况调整导入逻辑,甚至手动映射层名称等手段加以解决。 #### 集成MLflow进行管理 (可选) 考虑到长期维护及协作开发的需求,推荐考虑引入像MLflow这样的工具来进行实验跟踪记录、版本管理和部署服务等工作流自动化建设。这样做不仅有助于保持良好的项目结构组织形式,而且还能有效提升工作效率和服务质量[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值