Utilities for ML models targeting hardware triggers
Project description
Machine Learning for Hardware Triggers
triggerflow provides a set of utilities for Machine Learning models targeting FPGA deployment.
The TriggerModel class consolidates several Machine Learning frontends and compiler backends to construct a "trigger model". MLflow utilities are for logging, versioning, and loading of trigger models.
Installation
pip install triggerflow
Usage
from triggerflow.core import TriggerModel
scales = {'offsets': np.array([18, 0, 72, 7, 0, 73, 4, 0, 73, 4, 0, 72, 3, 0, 72, 6, -0, 286, 3, -2, 285, 3, -2, 282, 3, -2, 286, 29, 0, 72, 22, 0, 72, 18, 0, 72, 14, 0, 72, 11, 0, 72, 10, 0, 72, 10, 0, 73, 9, 0], dtype='int'),
'shifts': np.array([3, 0, 6, 2, 5, 6, 0, 5, 6, 0, 5, 6, -1, 5, 6, 2, 7, 8, 0, 7, 8, 0, 7, 8, 0, 7, 8, 4, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6], dtype='int')}
trigger_model = TriggerModel(
config="triggermodel_config.yaml",
native_model=model, #Native XGboost/Keras model
scales=scales
)
trigger_model() #Vivado requird on $PATH for Firmware build.
# then:
output_software = trigger_model.software_predict(input_data)
output_firmware = trigger_model.firmware_predict(input_data)
output_qonnx = trigger_model.qonnx_predict(input_data)
# save and load trigger models:
trigger_model.save("triggerflow.tar.xz")
# in a separate session:
from triggerflow.core import TriggerModel
triggerflow = TriggerModel.load("triggerflow.tar.xz")
The Config file:
Use this .yaml template and change as needed.
compiler:
name: "AXO"
ml_backend: "keras"
compiler: "hls4ml"
fpga_part: "xc7vx690t-ffg1927-2"
clock_period: 25
n_outputs: 1
project_name: "AXO_project"
namespace: "AXO"
io_type: "io_parallel"
backend: "Vitis"
write_weights_txt: false
subsystem:
name: "uGT"
n_inputs: 50
offset_type: "ap_fixed<10,10>"
shift_type: "ap_fixed<10,10>"
objects:
muons:
size: 4
features: [pt, eta_extrapolated, phi_extrapolated]
jets:
size: 4
features: [et, eta, phi]
egammas:
size: 4
features: [et, eta, phi]
taus:
size: 4
features: [et, eta, phi]
global_features:
#- et.et
#- ht.et
- etmiss.et
- etmiss.phi
#- htmiss.et
#- htmiss.phi
#- ethfmiss.et
#- ethfmiss.phi
#- hthfmiss.et
#- hthfmiss.phi
muon_size: 4
jet_size: 4
egamma_size: 4
tau_size: 4
Logging with MLflow
# logging with MLFlow:
import mlflow
from triggerflow.mlflow_wrapper import log_model
mlflow.set_tracking_uri("https://ngt.cern.ch/models")
experiment_id = mlflow.create_experiment("example-experiment")
with mlflow.start_run(run_name="trial-v1", experiment_id=experiment_id):
log_model(triggerflow, registered_model_name="TriggerModel")
Note: This package doesn't install dependencies so it won't disrupt specific training environments or custom compilers. For a reference environment, see environment.yml.
Creating a kedro pipeline
This repository also comes with a default pipeline for trigger models based on kedro. One can create a new pipeline via:
NOTE: no "-" and upper cases!
# Create a conda environment & activate it
conda create -n triggerflow python=3.11
conda activate triggerflow
# install triggerflow
pip install triggerflow
# Create a pipeline
triggerflow new demo_pipeline
# NOTE: since we dont install dependency one has to create a
# conda env based on the environment.yml file of the pipeline
# this file can be changed to the needs of the indiviual project
cd demo_pipeline
conda env update -n triggerflow --file environment.yml
# Run Kedro
kedro run
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file triggerflow-0.2.8.tar.gz.
File metadata
- Download URL: triggerflow-0.2.8.tar.gz
- Upload date:
- Size: 49.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5959ee3c390d7466d2df6d8b8c22e1c315cb8228118d8c81f732a2692a682a1a
|
|
| MD5 |
00744ff3f95b28b35d1d3720f3111626
|
|
| BLAKE2b-256 |
d4f7f447b4d1f8baa8cd5b3a43a3521ec869423fb3518602f918d0a3e4e7c271
|
File details
Details for the file triggerflow-0.2.8-py3-none-any.whl.
File metadata
- Download URL: triggerflow-0.2.8-py3-none-any.whl
- Upload date:
- Size: 76.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b8af4461067c67053cb5dafafb8482bc66b11ba2ceb35331c9b5daba9ea8474
|
|
| MD5 |
be302f43362e78caa7e565922469ccdf
|
|
| BLAKE2b-256 |
934450ee0355070e55c2baa879ff96eed24d7444b426b764f95f87e19e0b28bf
|