chkrishna2001/psm-memory-qwen0.5b
PSM Memory — Qwen2.5-0.5B LoRA adapters + ONNX Runtime GenAI export
Three task-specific LoRA adapters trained on Qwen/Qwen2.5-0.5B-Instruct for the PSM ("memory as a cognitive skill") project, plus a production ONNX export with all three adapters as swappable deltas over one shared base graph.
Adapters
All three share identical LoRA config (targetmodules: q/k/v/o/gate/up/downproj), which is what allows them to share one base ONNX graph in onnx/.
ONNX Runtime GenAI export (onnx/)
onnx/model.onnx is the base model traced with LoRA branches kept genuinely separate (not merged), via Olive's --use_dynamo_exporter + ExtractAdapters pass. onnx/adapters/*.onnx_adapter are the three swappable adapter deltas. Confirmed via Microsoft.ML.OnnxRuntimeGenAI (Adapters.LoadAdapter / Generator.SetActiveAdapter) at exact parity with the PyTorch baseline (0.84 on the storage gate, parsevalidrate 1.00).
Produced by the repeatable conversion pipeline at psm-model/scripts/convert_adapters_onnx.py in the source repo — see that script for the exact Olive/transformers version pinning required (Olive 0.13.0 needs transformers==4.48.3 for its dynamo-exporter Cache-compatibility patch; this machine's default transformers 5.x will silently break the export otherwise).
import onnxruntime_genai as og
model = og.Model("onnx")
tokenizer = og.Tokenizer(model)
adapters = og.Adapters(model)
adapters.load("onnx/adapters/storage.onnx_adapter", "storage")
params = og.GeneratorParams(model)
params.set_search_options(do_sample=False, max_length=4096)
generator = og.Generator(model, params)
generator.set_active_adapter(adapters, "storage")
# ... encode prompt, generate ...Raw PEFT adapters (lora/)
Standard PEFT adapter directories (adapter_config.json + adapter_model.safetensors), loadable via peft.PeftModel.from_pretrained(base_model, "lora/storage") etc. against the base Qwen/Qwen2.5-0.5B-Instruct model.
