I am using wsl2 ubuntu 24.04 with DFC 3.31
First, I convert my pth to onnx using
dummy_input = torch.randn(1, 3, IMAGE_HEIGHT, IMAGE_WIDTH) torch.onnx.export( model, dummy_input, STATIC_ONNX, export_params=True, opset_version=13, do_constant_folding=True, input_names=["input"], output_names=["output"] ) onnx_model = onnx.load(STATIC_ONNX) simplified_model, check = simplify(onnx_model) if not check: raise RuntimeError("Simplification failed") simplified_model = onnx.shape_inference.infer_shapes(simplified_model) onnx.save(simplified_model, SIMPLIFIED_ONNX)
I then convert onnx to har using
from hailo_sdk_client import ClientRunner
import os
from MODEL_ENCODER import MODEL_NAME
if __name__ == "__main__":
ONNX = os.path.join("Onnx", MODEL_NAME)
ONNX_PATH = os.path.join(ONNX, f"{MODEL_NAME}_simplified.onnx")
HW_ARCH = 'hailo8l'
HAR = os.path.join("Hailo", MODEL_NAME)
os.makedirs(HAR, exist_ok=True)
print(f"Translating {ONNX_PATH} to HAR format...")
runner = ClientRunner(hw_arch=HW_ARCH)
hn, npz = runner.translate_onnx_model(
ONNX_PATH,
MODEL_NAME
)
save_file = os.path.join(HAR, f"{MODEL_NAME}.har")
runner.save_har(save_file)
print(f"HAR file saved as {MODEL_NAME}.har in {HAR} directory.")
I then convert har to optimized har using
from hailo_sdk_client import ClientRunner
import os
from MODEL_ENCODER import MODEL_NAME
if __name__ == "__main__":
# user params
CALIB_PATH = "aug_val/calib_set.npy"
HAR = os.path.join("Hailo", MODEL_NAME)
HAR_IN = os.path.join(HAR, f"{MODEL_NAME}.har")
HAR_OUT = os.path.join(HAR, f"{MODEL_NAME}_optimized.har")
ALLS_FILE = os.path.join("Hailo", "model_script.alls")
runner = ClientRunner(har=HAR_IN)
runner.load_model_script(model_script=ALLS_FILE)
runner.optimize(calib_data=CALIB_PATH)
runner.save_har(HAR_OUT)
print(f"\n Optimized HAR file saved as {HAR_OUT}_optimized.har in {HAR} directory.")
with the following alls file
normalize1 = normalization([0, 0, 0], [255, 255, 255])
pre_quantization_optimization(global_avgpool_reduction, layers=avgpool1, division_factors=[2, 2])
model_optimization_flavor(optimization_level=1)
performance_param(compiler_optimization_level=max)
I compile the optimized har using
from hailo_sdk_client import ClientRunner
import os
from MODEL_ENCODER import MODEL_NAME
if __name__ == "__main__":
# user params
HAR = os.path.join("Hailo", MODEL_NAME)
HAR_IN = os.path.join(HAR, f"{MODEL_NAME}_optimized.har")
runner = ClientRunner(har=HAR_IN)
hef = runner.compile()
file_name = os.path.join(HAR, f'{MODEL_NAME}.hef')
with open(file_name, 'wb') as f:
f.write(hef)
print(f"\n HEF file saved as {MODEL_NAME}.hef in {HAR} directory.")
However, I am getting the following error
[info] Loading network parameters
[info] Starting Hailo allocation and compilation flow
[info] Building optimization options for network layers...
[info] Successfully built optimization options - 4m 3s 787ms
[info] Trying to compile the network in a single context
[info] Single context flow failed: Recoverable single context error
[info] Building optimization options for network layers...
[info] Successfully built optimization options - 23m 23s 541ms
[info] Using Multi-context flow
[info] Resources optimization params: max_control_utilization=100%, max_compute_utilization=100%, max_compute_16bit_utilization=100%, max_memory_utilization (weights)=85%, max_input_aligner_utilization=100%, max_apu_utilization=100%
[info] Finding the best partition to contexts...
compiler: ../src/allocator/network_graph_appender.cpp:402: Status<network_graph::NetworkNode*> allocator::NetworkGraphAppender::AddShortcut(std::string, network_graph::NetworkNode&, std::vector<network_graph::NetworkNode*>): Assertion `src_node.output_format() == (*first_succ)->input_format()' failed.
compiler: ../src/allocator/network_graph_appender.cpp:402: Status<network_graph::NetworkNode*> allocator::NetworkGraphAppender::AddShortcut(std::string, network_graph::NetworkNode&, std::vector<network_graph::NetworkNode*>): Assertion `src_node.output_format() == (*first_succ)->input_format()' failed.
[error] Failed to produce compiled graph
[error] BackendAllocatorException: Compilation failed with unexpected crash
Need help fixing this. Thanks in advance