问题描述

        OSError: openai/clip-vit-large-patch14 does not appear to have a file named pytorch_model.bin but there is a file for TensorFlow weights. Use `from_tf=True` to load this model from those weights.

        这个错误信息表明你正在尝试从Hugging Face Transformers库中加载模型"openai/clip-vit-large-patch14",但是缺少用于PyTorch权重的所需文件"pytorch_model.bin"。错误信息还建议使用from_tf=True参数,从TensorFlow权重中加载该模型

        我用的是pytorch框架,但在这里提到了TensorFlow,按理说是可以从TensorFlow下载,然后用在pytorch上,毕竟框架嘛!

        搜了半天也没见和我一样的,唯一有借鉴作用的是:OSError: CompVis/stable-diffusion-v1-4 does not appear to have a file named config.json,但是和我的太不一样了,所以还得自己分析。

原因分析

from transformers import CLIPModel

model = CLIPModel.from_pretrained("openai/clip-vit-large-patch14", from_tf=True)

        引发此问题的应该是这部分代码,笼统来说就是尝试从 Hugging Face Transformers 库中加载一个名为 "openai/clip-vit-large-patch14" 的模型,并且尝试加载它的 PyTorch 权重,但是所需的 pytorch_model.bin 文件不存在,导致这的原因可能是:

模型版本问题: "openai/clip-vit-large-patch14" 这个模型可能存在不同版本,其中某些版本可能只提供了 TensorFlow 权重,而没有提供 PyTorch 权重。 库版本不匹配: 你使用的 Hugging Face Transformers 库版本可能与模型版本不匹配,导致无法正确加载所需的权重文件。 模型名称拼写错误: 确保你的模型名称拼写正确,以及路径中没有额外的错误。

         根据对应的可能也就找到了可能的解决办法,比如说:

检查模型是否可用:确保指定的模型"openai/clip-vit-large-patch14"在Hugging Face模型库中是可用的,并且有适用于PyTorch的版本。有可能该模型的PyTorch版本的权重尚未发布,或者可能存在其他可用版本。 验证安装和路径:确保你安装了正确版本的Hugging Face Transformers库以及所需的依赖项。同时,仔细检查你所使用的模型路径是否正确,是否指向了正确的模型版本。 尝试其他模型:如果问题仍然存在,可以尝试使用在Hugging Face模型库中可用且具有所需PyTorch权重的其他模型。

 我的解决办法

        在这里用了下面这部分代码加到主函数中:

import ssl

ssl._create_default_https_context=ssl._create_unverified_context

        再次运行程序,会下载对应的model,问题也就迎刃而解。

为什么可以解决?

        这段代码的功能和作用是临时禁用 Python 中的 SSL 证书验证,通常被用来解决在使用 urllib 或其他网络请求库时,可能因为证书验证问题而导致的连接问题。这段代码可以暂时绕过 SSL 证书验证,但同时也可能引入一些安全风险。

        在代码的上下文中,出现错误的代码段涉及到 "openai/clip-vit-large-patch14" 模型的加载问题,而上面提供的这段代码被用来禁用了 SSL 证书验证。这可能是因为在加载模型的过程中,可能涉及到从远程服务器下载模型权重文件,而默认情况下,Python 的 SSL 证书验证可能会阻止未验证的连接。禁用 SSL 证书验证会允许下载,但也可能存在安全风险,因为没有验证服务器的真实性。

        虽然在某些情况下禁用 SSL 证书验证可能会解决连接问题,但这并不是一个推荐的做法,因为这会绕过了安全层。更好的做法是在保证安全的前提下,使用受信任的证书,或者找到其他合适的解决方法来处理连接问题,而不是直接禁用证书验证。

        如果你确实需要继续禁用 SSL 证书验证,请确保你了解这样做可能带来的安全风险,并且只在临时和受控的环境中使用。在生产环境中,绕过 SSL 证书验证是不推荐的做法。

完结撒花

        上面这部分可能略显专业,简单来说就是禁用了完全验证,从而使得模型权重得以下载。

查看原文