From 2a8735e37ccc126fb96c9ad879b0a6ba5a199175 Mon Sep 17 00:00:00 2001 From: Pan Chen <161111736+chenpan321@users.noreply.github.com> Date: Sun, 25 Feb 2024 14:12:07 +0800 Subject: [PATCH] fix: use ValueError instead of `assert` on argument checks (#164) * fix: use ValueError instead of `assert` on argument checks Program should always fail if arch_version or program format does not satisfy the preconditions in the program. However, the file merge_lora_into_ggml.py uses assert statements, sometimes being ignored under high optimization level. We uses if-statements here, where those preconditions would always execute, whether the environment enable assert stateuements or not. Signed-off-by: Pan Chen * Update merge_lora_into_ggml.py --------- Signed-off-by: Pan Chen Co-authored-by: Alex --- python/merge_lora_into_ggml.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/python/merge_lora_into_ggml.py b/python/merge_lora_into_ggml.py index 4f57d7c..5754ddf 100644 --- a/python/merge_lora_into_ggml.py +++ b/python/merge_lora_into_ggml.py @@ -47,7 +47,8 @@ def main() -> None: arch_version: str = args.rwkv_arch_version - assert arch_version == 'v4' or arch_version == 'v5.1' or arch_version == 'v5.2', f'Invalid RWKV architecture version {arch_version}' + if not (arch_version == 'v4' or arch_version == 'v5.1' or arch_version == 'v5.2'): + raise ValueError(f'Invalid RWKV architecture version {arch_version}') print(f'Reading {args.lora_path}') @@ -59,9 +60,12 @@ def main() -> None: # noinspection PyTypeChecker header: Tuple[int, int, int, int, int, int] = struct.unpack('=iiiiii', in_file.read(6 * 4)) - assert header[0] == 0x67676d66, 'Invalid magic value' - assert 100 <= header[1] <= 101, 'Invalid version number' - assert header[5] == 0 or header[5] == 1, 'Only FP32 and FP16 models are supported' + if header[0] != 0x67676d66: + raise ValueError(f'Invalid magic value {header[0]:x}') + if not (100 <= header[1] <= 101): + raise ValueError(f'Invalid version number {header[1]}') + if not (header[5] == 0 or header[5] == 1): + raise ValueError('Only FP32 and FP16 models are supported') out_file.write(struct.pack('=iiiiii', *header))