mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-11-11 13:30:35 +00:00
gguf_hash.py: Add sha256 (#8470)
* gguf_hash.py: Add sha256 * gguf_hash.py: rename string UUIDv5 --> uuid * Apply suggestions from code review Co-authored-by: compilade <git@compilade.net> --------- Co-authored-by: compilade <git@compilade.net>
This commit is contained in:
parent
fa79495bb4
commit
e236528e76
@ -27,8 +27,9 @@ UUID_NAMESPACE_LLAMA_CPP = uuid.UUID('ef001206-dadc-5f6d-a15f-3359e577d4e5')
|
|||||||
|
|
||||||
# For more information about what field.parts and field.data represent,
|
# For more information about what field.parts and field.data represent,
|
||||||
# please see the comments in the modify_gguf.py example.
|
# please see the comments in the modify_gguf.py example.
|
||||||
def gguf_hash(reader: GGUFReader, filename: str, disable_progress_bar) -> None:
|
def gguf_hash(reader: GGUFReader, filename: str, disable_progress_bar: bool, no_layer: bool) -> None:
|
||||||
sha1 = hashlib.sha1()
|
sha1 = hashlib.sha1()
|
||||||
|
sha256 = hashlib.sha256()
|
||||||
uuidv5_sha1 = hashlib.sha1()
|
uuidv5_sha1 = hashlib.sha1()
|
||||||
uuidv5_sha1.update(UUID_NAMESPACE_LLAMA_CPP.bytes)
|
uuidv5_sha1.update(UUID_NAMESPACE_LLAMA_CPP.bytes)
|
||||||
|
|
||||||
@ -50,7 +51,7 @@ def gguf_hash(reader: GGUFReader, filename: str, disable_progress_bar) -> None:
|
|||||||
bar = tqdm(desc="Hashing", total=total_weights, unit="weights", unit_scale=True, disable=disable_progress_bar)
|
bar = tqdm(desc="Hashing", total=total_weights, unit="weights", unit_scale=True, disable=disable_progress_bar)
|
||||||
|
|
||||||
# Hashing Process
|
# Hashing Process
|
||||||
for n, tensor in enumerate(reader.tensors, 1):
|
for tensor in reader.tensors:
|
||||||
|
|
||||||
# We don't need these
|
# We don't need these
|
||||||
if tensor.name.endswith((".attention.masked_bias", ".attention.bias", ".rotary_emb.inv_freq")):
|
if tensor.name.endswith((".attention.masked_bias", ".attention.bias", ".rotary_emb.inv_freq")):
|
||||||
@ -62,29 +63,39 @@ def gguf_hash(reader: GGUFReader, filename: str, disable_progress_bar) -> None:
|
|||||||
sum_weights_in_tensor *= dim
|
sum_weights_in_tensor *= dim
|
||||||
bar.update(sum_weights_in_tensor)
|
bar.update(sum_weights_in_tensor)
|
||||||
|
|
||||||
sha1_layer = hashlib.sha1()
|
if not no_layer:
|
||||||
sha1_layer.update(tensor.data.data)
|
|
||||||
|
sha1_layer = hashlib.sha1()
|
||||||
|
sha1_layer.update(tensor.data.data)
|
||||||
|
print("sha1 {0} {1}:{2}".format(sha1_layer.hexdigest(), filename, tensor.name)) # noqa: NP100
|
||||||
|
|
||||||
|
sha256_layer = hashlib.sha256()
|
||||||
|
sha256_layer.update(tensor.data.data)
|
||||||
|
print("sha256 {0} {1}:{2}".format(sha256_layer.hexdigest(), filename, tensor.name)) # noqa: NP100
|
||||||
|
|
||||||
sha1.update(tensor.data.data)
|
sha1.update(tensor.data.data)
|
||||||
|
sha256.update(tensor.data.data)
|
||||||
uuidv5_sha1.update(tensor.data.data)
|
uuidv5_sha1.update(tensor.data.data)
|
||||||
print("sha1 {0} {1}:{2}".format(sha1_layer.hexdigest(), filename, tensor.name)) # noqa: NP100
|
|
||||||
|
|
||||||
# Flush Hash Progress Bar
|
# Flush Hash Progress Bar
|
||||||
bar.close()
|
bar.close()
|
||||||
|
|
||||||
# Display Hash Output
|
# Display Hash Output
|
||||||
print("sha1 {0} {1}".format(sha1.hexdigest(), filename)) # noqa: NP100
|
print("sha1 {0} {1}".format(sha1.hexdigest(), filename)) # noqa: NP100
|
||||||
print("UUIDv5 {0} {1}".format(uuid.UUID(bytes=uuidv5_sha1.digest()[:16], version=5), filename)) # noqa: NP100
|
print("sha256 {0} {1}".format(sha256.hexdigest(), filename)) # noqa: NP100
|
||||||
|
print("uuid {0} {1}".format(uuid.UUID(bytes=uuidv5_sha1.digest()[:16], version=5), filename)) # noqa: NP100
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
parser = argparse.ArgumentParser(description="Dump GGUF file metadata")
|
parser = argparse.ArgumentParser(description="Dump GGUF file metadata")
|
||||||
parser.add_argument("model", type=str, help="GGUF format model filename")
|
parser.add_argument("model", type=str, help="GGUF format model filename")
|
||||||
|
parser.add_argument("--no-layer", action="store_true", help="exclude per layer hash")
|
||||||
parser.add_argument("--verbose", action="store_true", help="increase output verbosity")
|
parser.add_argument("--verbose", action="store_true", help="increase output verbosity")
|
||||||
parser.add_argument("--progressbar", action="store_true", help="enable progressbar")
|
parser.add_argument("--progressbar", action="store_true", help="enable progressbar")
|
||||||
args = parser.parse_args(None if len(sys.argv) > 1 else ["--help"])
|
args = parser.parse_args(None if len(sys.argv) > 1 else ["--help"])
|
||||||
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
|
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
|
||||||
reader = GGUFReader(args.model, 'r')
|
reader = GGUFReader(args.model, 'r')
|
||||||
gguf_hash(reader, args.model, not args.progressbar)
|
gguf_hash(reader, args.model, not args.progressbar, args.no_layer)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
Loading…
Reference in New Issue
Block a user