Papers › Automatic heterogeneous quantization of deep neural networks for low-latency inference...

Automatic heterogeneous quantization of deep neural networks for low-latency inference on the edge for particle detectors

15 Jun 2020arXiv:2006.10159archive 2025-07-28

Claudionor N. Coelho Jr., Aki Kuusela, Shan Li, Hao Zhuang, Thea Aarrestad, Vladimir Loncar, Jennifer Ngadiuba, Maurizio Pierini, Adrian Alan Pol, Sioni Summers

Although the quest for more accurate solutions is pushing deep learning research towards larger and more complex algorithms, edge devices demand efficient inference and therefore reduction in model size, latency and energy consumption. One technique to limit model size is quantization, which implies using fewer bits to represent weights and biases. Such an approach usually results in a decline in performance. Here, we introduce a method for designing optimally heterogeneously quantized versions of deep neural network models for minimum-energy, high-accuracy, nanosecond inference and fully automated deployment on chip. With a per-layer, per-parameter type automatic quantization procedure, sampling from a wide range of quantizers, model energy consumption and size are minimized while high accuracy is maintained. This is crucial for the event selection procedure in proton-proton collisions at the CERN Large Hadron Collider, where resources are strictly limited and a latency of ${\mathcal O}(1)~\mu$s is required. Nanosecond inference and a resource consumption reduced by a factor of 50 when implemented on field-programmable gate array hardware are achieved.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2006.10159")

Code

Syntology Ran 0 of 26 code samples harvested from 2 repositories linked to this paper; 26 have no recorded run.

By repository: community (archive-listed): 26 samples from 2 repositories, 0 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

google/qkeras officialmentioned in papermentioned on GitHubtf report
calad0i/HGQ mentioned on GitHubtfApache-2.0 report
rohanshenoy/qkeras mentioned on GitHubtfApache-2.0 report
thaarres/Quantized_CNN mentioned on GitHubtf report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

26 samples harvested; 0 ran; 0 honoured the contract we drafted; 26 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

26unverified

Licence: 0 of the 26 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 2 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

BinaryToThermometer rohanshenoy/qkeras/qkeras/b2t.py community (archive-listed) unverified Apache-2.0 (permissive) · c5da803484bb9815 · report
GetActivationSuffix rohanshenoy/qkeras/qkeras/qoctave.py community (archive-listed) unverified Apache-2.0 (permissive) · 09398a22daae3b96 · report
OctaveConv2D rohanshenoy/qkeras/qkeras/qoctave.py community (archive-listed) unverified Apache-2.0 (permissive) · 4a20b411848af1c8 · report
QAveragePooling2D rohanshenoy/qkeras/qkeras/qpooling.py community (archive-listed) unverified Apache-2.0 (permissive) · 5b480cd73cbf0ae1 · report
QOctaveConv2D rohanshenoy/qkeras/qkeras/qoctave.py community (archive-listed) unverified Apache-2.0 (permissive) · 51aca2e834d8e57b · report
RND calad0i/HGQ/src/HGQ/proxy/fixed_point_quantizer.py community (archive-listed) unverified Apache-2.0 (permissive) · c7c761fbe641c432 · report
RND_CONV calad0i/HGQ/src/HGQ/proxy/fixed_point_quantizer.py community (archive-listed) unverified Apache-2.0 (permissive) · 79068918a6559176 · report
TRN calad0i/HGQ/src/HGQ/proxy/fixed_point_quantizer.py community (archive-listed) unverified Apache-2.0 (permissive) · 2230bec278fc10ac · report
activation_compression rohanshenoy/qkeras/qkeras/codebook.py community (archive-listed) unverified Apache-2.0 (permissive) · 8cb668d99317276e · report
activation_kif_forward calad0i/HGQ/src/HGQ/proxy/precision_derivation.py community (archive-listed) unverified Apache-2.0 (permissive) · 1431e3fdf61bc841 · report
analyze_accumulator rohanshenoy/qkeras/qkeras/estimate.py community (archive-listed) unverified Apache-2.0 (permissive) · 137ccff456a7e506 · report
analyze_accumulator_from_sample rohanshenoy/qkeras/qkeras/estimate.py community (archive-listed) unverified Apache-2.0 (permissive) · a82c2216301a1929 · report
convert_folded_layer_to_unfolded rohanshenoy/qkeras/qkeras/bn_folding_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 4fa726dc402437bf · report
create_in_out_table rohanshenoy/qkeras/qkeras/codebook.py community (archive-listed) unverified Apache-2.0 (permissive) · f2ab22c43ea69345 · report
get_arr_container calad0i/HGQ/src/HGQ/proxy/precision_derivation.py community (archive-listed) unverified Apache-2.0 (permissive) · 2b7074bd7febc4ce · report
get_auto_range_constraint_initializer rohanshenoy/qkeras/qkeras/qlayers.py community (archive-listed) unverified Apache-2.0 (permissive) · ea660d6b06041d4b · report
get_constraint rohanshenoy/qkeras/qkeras/qlayers.py community (archive-listed) unverified Apache-2.0 (permissive) · d4c926ba0d59d6b3 · report
get_initializer rohanshenoy/qkeras/qkeras/qlayers.py community (archive-listed) unverified Apache-2.0 (permissive) · 0933ca9566b5853e · report
get_input_kifs calad0i/HGQ/src/HGQ/proxy/precision_derivation.py community (archive-listed) unverified Apache-2.0 (permissive) · 83b44746819d42d2 · report
get_quant_mode rohanshenoy/qkeras/qkeras/estimate.py community (archive-listed) unverified Apache-2.0 (permissive) · 3a4328b7972bd589 · report
get_weight calad0i/HGQ/src/HGQ/proxy/convert.py community (archive-listed) unverified Apache-2.0 (permissive) · 9094378ccf4b5d24 · report
populate_bias_quantizer_from_accumulator rohanshenoy/qkeras/qkeras/bn_folding_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 65e79f2957133bfa · report
scale_grad calad0i/HGQ/src/HGQ/layers/base.py community (archive-listed) unverified Apache-2.0 (permissive) · 1643f065017821aa · report
trace_minmax calad0i/HGQ/src/HGQ/bops/bops.py community (archive-listed) unverified Apache-2.0 (permissive) · 85e95d8fcd9b7cbf · report
unfold_model rohanshenoy/qkeras/qkeras/bn_folding_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 441e9baf5738fe1e · report
weight_compression rohanshenoy/qkeras/qkeras/codebook.py community (archive-listed) unverified Apache-2.0 (permissive) · 6045502d0ac2cac6 · report

Tasks

Quantization

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections