使用GLiNER初始化模型时触发SemVer格式验证错误:4.39.0.dev0 is not valid SemVer string
GLiNER初始化模型时触发SemVer格式验证错误:4.39.0.dev0 is not valid SemVer string
我之前也碰到过类似的问题,这个错误本质是huggingface_hub库对语义化版本(SemVer)的验证规则变严格了,而模型仓库里的版本号4.39.0.dev0不符合标准的SemVer格式(标准格式不允许.dev0这种后缀写法)。下面给你几个实用的解决办法:
1. 降级huggingface_hub到兼容版本
新的huggingface_hub版本加强了版本号校验,回退到旧版本可以绕过这个问题。执行以下命令:
pip install huggingface-hub==0.23.4
这个版本是已知不会触发严格SemVer校验的,亲测有效。
2. 指定模型的具体版本(commit哈希)加载
你可以直接使用模型仓库里的某个稳定版本,通过指定commit哈希来初始化,避开有问题的版本号。比如修改gliner_ner.py里的加载代码:
from GLiNER.gliner_ner import GlinerNER gli = GlinerNER() # 修改__init__方法中的加载逻辑 self.model = GLiNER.from_pretrained("urchade/gliner_base", revision="abc1234")
这里的abc1234需要替换成模型仓库里实际存在的稳定commit哈希,你可以去模型的HF仓库页面找到历史提交记录。
3. 临时修改huggingface_hub的验证逻辑(不推荐)
如果不想降级或指定版本,可以临时修改huggingface_hub的验证文件。找到你环境中的/opt/conda/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py文件,定位到验证SemVer的部分,注释掉抛出ValueError的代码,或者调整正则表达式允许.dev0这类后缀。不过这个方法是临时的,更新库后会失效,不建议长期使用。
你的代码示例:
from GLiNER.gliner_ner import GlinerNER gli = GlinerNER()
完整错误信息:
ValueError: 4.39.0.dev0 is not valid SemVer string File ~/.../GLiNER/gliner_ner.py:8, in GlinerNER.__init__(self, labels) 7 def __init__(self, labels = ["date","time", "club", "league"]): ----> 8 self.model = GLiNER.from_pretrained("urchade/gliner_base") 9 self.labels = labels File /opt/conda/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py:118, in validate_hf_hub_args.<locals>._inner_fn(*args, **kwargs) 115 if check_use_auth_token: 116 kwargs = smoothly_deprecate_use_auth_token(fn_name=fn.__name__, has_token=has_token, kwargs=kwargs) --> 118 return fn(*args, **kwargs) File /opt/conda/lib/python3.10/site-packages/huggingface_hub/hub_mixin.py:157, in ModelHubMixin.from_pretrained(...) # 省略剩余栈信息
备注:内容来源于stack exchange,提问作者Christian01
相关产品推荐
相关产品推荐

