native_neural_network 0.3.1

Lib no_std Rust for native neural network (.rnn)
Documentation
import argparse
import json
from pathlib import Path
import sys

SCRIPT_DIR = Path(__file__).resolve().parent
if str(SCRIPT_DIR) not in sys.path:
    sys.path.insert(0, str(SCRIPT_DIR))

from errors import RnnFfiError
from ffi import BenchmarkRecord, FfiLibrary
from model import BenchmarkBlob


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--model-name", type=str, default="sample_model.rnn")
    parser.add_argument("--precision", type=str, default="f32")
    parser.add_argument("--library-path", type=str, default=None)
    parser.add_argument("--json", action="store_true")
    args = parser.parse_args()

    ffi = FfiLibrary(library_path=args.library_path)
    bench = BenchmarkBlob.create(ffi=ffi)
    record = BenchmarkRecord(
        model_name=args.model_name,
        precision=args.precision,
        elapsed_ms=123,
        iterations=42,
        avg_loss=0.12,
        last_loss=0.08,
        output_bytes=2048,
    )
    blob = bench.encode(record)
    decoded = bench.decode(blob)

    payload = {
        "model_name": decoded.model_name,
        "precision": decoded.precision,
        "iterations": decoded.iterations,
        "encoded_bytes": len(blob),
    }
    if args.json:
        print(json.dumps(payload))
    else:
        for k, v in payload.items():
            print(f"{k}={v}")


if __name__ == "__main__":
    try:
        main()
    except FileNotFoundError as exc:
        print(str(exc), file=sys.stderr)
        raise SystemExit(2)
    except RnnFfiError as exc:
        print(f"FFI error: {exc}", file=sys.stderr)
        raise SystemExit(3)