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

共计 957 个字符,预计需要花费 3 分钟才能阅读完成。

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 进行验证以保证模型文件的完整性和一致性。

正文完