Skip to content

Optimized ONNX Transform with Merging and Thread Pooling #545

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 16 commits into from

Conversation

abhishek-singh591
Copy link

@abhishek-singh591 abhishek-singh591 commented Aug 23, 2025

Optimized ONNX Transform with Merging and Thread Pooling

This PR follows up on 539 – Optimized ONNX transform class via multithreading.

It merges the FP16 and Split ONNX transform classes into a single implementation to eliminate redundant tensor loading and iteration. Additionally, the transform logic has been refactored to use a thread pool, replacing the previous sequential loop to parallelize tensor operations.

Performance Benchmarks

Model Original Duration (s) Optimized Duration (s)
LLaMA 3.1 8B 88.35 58.55
LLaMA 3.1 70B 1029.82 727.37

Note: Thread count is set to os.cpu_count() * 4 to better handle I/O-bound workloads. Performance may vary depending on system hardware and threading capabilities.

abhishek-singh591 and others added 16 commits August 23, 2025 08:44
Signed-off-by: abhishek-singh591 <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
…netune.md readme file. (#520)

- Introduced the handling of custom dataset via --dataset_config
argument. This argument expects a json file which has parameters to
enable custom preprocessing for any dataset.
- Updated the docs to reflect the changes in the interface of custom
dataset usage.

---------

Signed-off-by: meetkuma <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
This PR addresses the missing copyright headers in several source files
that were previously overlooked.

### Changes include:

- Added standard copyright notice to all applicable files
- Ensured consistency in formatting and placement of headers
- Verified that no functional code changes were introduced

### Files Updated:
- `QEfficient/transformers/models/gemma3/modeling_gemma3.py`
-  `docs/conf.py`

Signed-off-by: Abukhoyer Shaik <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
…and displaying non scaled loss value on console. (#527)

Signed-off-by: Swati Allabadi <[email protected]>
Co-authored-by: Swati Allabadi <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
Signed-off-by: Mohit Soni <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
### Purpose of this PR:
This update aims to reduce test execution time for causal language model
inference. Previously, tests were run using full-scale models with one
or two layers, which was inefficient and time-consuming. Refactoring CLI
api testing for independent testing and redundant conftest code.

### What’s Changed:
Introduced dummy models with significantly smaller configurations by
adjusting parameters such as `max_position_embeddings,
num_hidden_layers, num_attention_heads, hidden_size, intermediate_size,
vocab_size and additional_params`.
These lightweight models are used exclusively for testing purposes to
ensure faster execution without compromising test coverage.

And CLI testing has two test scripts one is for export, compile, and
execute, another is for infer cli api.

**Note:** This optimization is applied only to causal language models.

---------

Signed-off-by: Abukhoyer Shaik <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
Fix for qeff vision models export is failing for dual qpc method when we
providing onnx_dir option to export API.

---------

Signed-off-by: Dipankar Sarkar <[email protected]>
Signed-off-by: Dipankar Sarkar <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
Signed-off-by: Abukhoyer Shaik <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
…el loss/metrics (#531)

Enable test cases for Intermediate step level loss/metric matching in
single and DDP set up.

Nested dictionary structure for mapping the reference losses at
different test scenarios. The test scenarios with the ref values are
listed in a separate reference file.
The test scenarios at present include single device testing for below
models:
Llama, Bert on Alpaca and GSM8k dataset.

**REFERNCE DATA based on SDK - 1.21.0.23**

---------

Signed-off-by: Ann Kuruvilla <[email protected]>
Signed-off-by: Ann Kuruvilla <[email protected]>
Signed-off-by: abhishek-singh591 <[email protected]>
@abhishek-singh591 abhishek-singh591 closed this by deleting the head repository Aug 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants