Framework that provides tools allowing for monitoring training of ML models with the aim to be executed in firmware developed under the ATLAS NextGen WP21 project
Project description
wp21_train
A modular, extensible Python framework designed for managing data parsing, serialization, and metadata tracking in machine learning workflows — especially for hardware-aware applications such as HLS and AIE profiling. Built with physicists and hardware engineers in mind, wp21_train integrates support for CERN ROOT I/O, common formats like JSON and Pickle, and parsing of Xilinx toolchain outputs.
🚀 Features
- ✅ Unified interface for reading/writing training data and metadata
- ✅ Supports JSON, Pickle, YAML and ROOT formats
- ✅ Parsers for:
- HLS reports (Vivado HLS)
- AIE profiling reports (Vitis AI Engine)
- ATHENA configuration
- ✅ A training callback interface to log key events and outputs
- ✅ Lightweight type-to-symbol conversion utility
- ✅ Versioned with easy integration (
__version__)
📦 Included Modules
| Module | Description |
|---|---|
savers/json_adapter.py |
JSON-based serialization |
savers/pickle_adapter.py |
Pickle-based serialization |
savers/root_adapter.py |
ROOT I/O serialization (requires ROOT installed) |
savers/yml_adapter.py |
YML I/O serialization (requires PyYAML installed) |
parsers/hls_parser.py |
XML parsing of HLS synthesis reports |
parsers/aie_parser.py |
XML parsing of AIE runtime profiling |
parsers/athena_parser.py |
Parsing of ATHENA configuration |
callbacks/base_callback.py |
Base callback for training pipelines |
utils/utility.py |
Type-shortening utility for metadata tagging |
utils/logging.py |
Simple logging of info warnings and errors |
utils/version.py |
Package versioning (__version__) |
🔧 Installation
From PyPI
pip install wp21_train
📁 Example Usage
🔄 JSON / Pickle / YAML / ROOT Adapters
from wp21_train.savers import json_adapter, pickle_adapter, yml_adapter, root_adapter
adapter = json_adapter("results", dump_data=my_data, dump_meta=my_metadata)
adapter.write_data()
meta, data = adapter.read_data()
🧠 HLS Parser
from wp21_train.parsers import hls_parser
parser = hls_parser("hls_report.xml")
print(parser._data) # extracted info
print(parser._meta_data) # associated metadata
⚙️ AIE Parser
from wp21_train.parsers import aie_parser
parser = aie_parser("aie_profile.xml")
print(parser._data)
⚙️ ATHENA Parser
from wp21_train.parsers import athena_parser
parser = athena_parser(data=data_from_adapter, metadata=meta_from_adapter, nevents=10000)
print(parser.config)
print(parser.environment)
📋 Training Callback
from wp21_train.callbacks import base_callback
cb = base_callback(project_name="FastML4Jets")
cb.on_train_begin()
# training loop here
cb.on_train_end()
🧬 Type Utility
from wp21_train.utils.utility import get_short_type
print(get_short_type(42)) # 'd'
print(get_short_type("abc")) # 's'
🧬 Logging Utility
from wp21_train.utils.logging import log_message
log_message("error", f"Provided number of events ({nevents}) is not an integer.")
🧪 Testing
pytest tests/
📜 Requirements
- Python ≥ 3.7
uproot(for reading ROOT files)xml.etree.ElementTree(standard lib, for HLS/AIE parsing)- CERN ROOT (installed and configured) if you use
.rootI/O - PyYAML ≥ 6.0.0, < 7.0.0 (for reading yaml files)
⚠️ Note About ROOT
This package supports .root file serialization and reading via CERN ROOT. If you intend to use this feature, ensure that ROOT is installed and properly sourced in your environment. You can install ROOT via Conda:
conda install -c conda-forge root
Or follow the official installation guide:
https://root.cern/install/
🧠 Versioning
The current package version is defined in:
from wp21_train.utils.version import __version__
🔖 License
This project is licensed under the MIT License. See the LICENSE file for details.
👤 Author
Ioannis Xiotidis
Email: ioannis.xiotidis@cern.ch
Pawel Mucha Email: pawel.mucha@cern.ch
Vila Andela Petrovic Email: vila.andela.petrovic@cern.ch
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 wp21_train-0.3.1.tar.gz.
File metadata
- Download URL: wp21_train-0.3.1.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0986789565f0ee2ba3cd1939731ddd224d473ab1377058d45a5ad929a08b0c1e
|
|
| MD5 |
c6796d246578ffea0ff4af67b440de7c
|
|
| BLAKE2b-256 |
8423e5640fd289a35ffed9f92dabf8b7f55d736ee9d9894f76eff63591585305
|
File details
Details for the file wp21_train-0.3.1-py3-none-any.whl.
File metadata
- Download URL: wp21_train-0.3.1-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ca7aa0a3274b514abc4272f11a549127bb28319ab213c7391a03732dd9fa4dd
|
|
| MD5 |
fe73045770e586e48c6e4a3ba34942cf
|
|
| BLAKE2b-256 |
b987291e8f1cebd9082e3928a1784cfb178b8a1a89b4d9f45201f48690890036
|