mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-18 18:52:16 +00:00
### Description <!-- Describe your changes. --> ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. -->
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
# This script helps converting .npz files to .onnx_adapter files
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
import numpy as np
|
|
|
|
import onnxruntime as ort
|
|
|
|
|
|
def get_args() -> argparse:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--npz_file_path", type=str, required=True)
|
|
parser.add_argument("--output_file_path", type=str, required=True)
|
|
parser.add_argument("--adapter_version", type=int, required=True)
|
|
parser.add_argument("--model_version", type=int, required=True)
|
|
return parser.parse_args()
|
|
|
|
|
|
def export_lora_parameters(
|
|
npz_file_path: os.PathLike, adapter_version: int, model_version: int, output_file_path: os.PathLike
|
|
):
|
|
"""The function converts lora parameters in npz to onnx_adapter format"""
|
|
adapter_format = ort.AdapterFormat()
|
|
adapter_format.set_adapter_version(adapter_version)
|
|
adapter_format.set_model_version(model_version)
|
|
name_to_ort_value = {}
|
|
with np.load(npz_file_path) as data:
|
|
for name, np_arr in data.items():
|
|
ort_value = ort.OrtValue.ortvalue_from_numpy(np_arr)
|
|
name_to_ort_value[name] = ort_value
|
|
|
|
adapter_format.set_parameters(name_to_ort_value)
|
|
adapter_format.export_adapter(output_file_path)
|
|
|
|
|
|
def main() -> int:
|
|
args = get_args()
|
|
export_lora_parameters(args.npz_file_path, args.adapter_version, args.model_version, args.output_file_path)
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|