stable-diffusion-webui模型的hash(如何计算老hash)

stable-diffusion-webui模型的hash(如何计算老hash)

在加载模型时,stable-diffusion-webui会计算模型的hash。最近,我注意到我经常使用的一个模型的hash发生了变化,这让我怀疑模型文件本身是否发生了改变。

经过一番研究,我发现原因是在1月份的一次更新中,stable-diffusion-webui更换了hash的计算方法,从之前的方法转为了sha256。因此,同一个模型在两种方法下计算出的hash不同。

下面是一些模型的hash以及从源码中找到的计算老hash的方法:

模型名字 sha256 老hash
animefull-final-pruned.ckpt 89d59c3dde 925997e9
Anything-V3.0-pruned.ckpt 543bcbc212 2700c435
Anything-V3.0.ckpt 8712e20a5d 6569e224

下面是从源码中翻出来的计算老hash的方法:

python
def model_hash(filename):
    try:
        with open(filename, "rb") as file:
            import hashlib
            m = hashlib.sha256()
            file.seek(0x100000)
            m.update(file.read(0x10000))
            return m.hexdigest()[0:8]
    except FileNotFoundError:
        return 'NOFILE'

print(model_hash("Anything-V3.0.ckpt")) # -> 6569e224

通过以上方法,我们可以计算出模型的老hash。如果你注意到模型的hash发生了变化,那可能是因为stable-diffusion-webui更新了hash的计算方法。这对于模型的版本控制和验证非常重要。

请确保在使用模型时,使用正确的hash进行验证,以确保模型文件的完整性和一致性。

结论

Stable Diffusion中文网的stable-diffusion-webui模型在加载模型时会计算模型的hash。最近的更新导致hash的计算方法从之前的方法转为了sha256,因此同一个模型在两种方法下计算出的hash不同。通过使用给出的计算老hash的方法,我们可以获得模型的老hash。确保使用正确的hash进行验证以保证模型文件的完整性和一致性。

原创文章,作者:SD中文网,如若转载,请注明出处:https://www.stablediffusion-cn.com/sd/sd-use/3347.html