Views
No views yet
├── README.md # This file
├── config.json # Model configuration
├── tokenizer.json # Tokenizer configuration
├── tokenizer_config.json # Tokenizer settings
├── model.safetensors # Quantized model weights
├── model_info.json # Model information
├── onnx/ # ONNX exported models
│ ├── prefill/model.onnx # Prefill model
│ └── token_gen/model.onnx # Token generation model
├── quantized_onnx/ # Quantized ONNX models
│ ├── prefill/model_quantized.onnx
│ └── token_gen/model_quantized.onnx
├── qnn_compiled/ # QNN compiled models
│ ├── prefill/ # QNN prefill model
│ └── token_gen/ # QNN token generation model
└── ... # Other model artifacts1# Install required packages
2pip install transformers
3pip install bitsandbytes
4pip install torch
5pip install accelerate
6pip install onnxruntime
7pip install onnxruntime-qnn # For QNN deployment1from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
2import torch
3
4# Configure 4-bit quantization
5quantization_config = BitsAndBytesConfig(
6 load_in_4bit=True,
7 bnb_4bit_quant_type="nf4",
8 bnb_4bit_compute_dtype=torch.float16,
9 bnb_4bit_use_double_quant=True,
10)
11
12# Load tokenizer
13tokenizer = AutoTokenizer.from_pretrained("your-username/abeja-qwen2.5-7b-japanese-quantized-qnn")
14
15# Load quantized model
16model = AutoModelForCausalLM.from_pretrained(
17 "your-username/abeja-qwen2.5-7b-japanese-quantized-qnn",
18 quantization_config=quantization_config,
19 device_map="auto",
20 trust_remote_code=True
21)
22
23# Example inference
24text = "こんにちは、今日は良い天気ですね。"
25inputs = tokenizer(text, return_tensors="pt")
26with torch.no_grad():
27 outputs = model.generate(**inputs, max_length=100, temperature=0.7)
28
29response = tokenizer.decode(outputs[0], skip_special_tokens=True)
30print(response)1import onnxruntime as ort
2import numpy as np
3
4# Load ONNX model
5session = ort.InferenceSession("onnx/prefill/model.onnx")
6
7# Example inference
8text = "人工知能について説明してください。"
9inputs = tokenizer(text, return_tensors="pt")
10outputs = session.run(None, {
11 "input_ids": inputs["input_ids"].numpy(),
12 "attention_mask": inputs["attention_mask"].numpy()
13})1import onnxruntime as ort
2
3# Configure QNN provider for Snapdragon X Elite
4providers = [
5 ("QNNExecutionProvider", {
6 "backend_path": "/opt/qcom/aistack/qnn/2.18.0.240127/lib/aarch64-linux-gcc9.0/libQnnHtp.so",
7 "profiling_level": "basic",
8 "rpc_control_latency": 10,
9 "htp_performance_mode": "burst", # Optimize for Snapdragon X Elite
10 "htp_graph_finalization_optimization_mode": "1"
11 })
12]
13
14# Create inference session with QNN
15session = ort.InferenceSession("qnn_compiled/prefill/model.serialized", providers=providers)
16
17# Run inference on Snapdragon X Elite NPU
18outputs = session.run(None, input_dict)1# Optimize for Snapdragon X Elite NPU
2qnn_provider_options = {
3 "backend_path": "/opt/qcom/aistack/qnn/2.18.0.240127/lib/aarch64-linux-gcc9.0/libQnnHtp.so",
4 "profiling_level": "basic",
5 "rpc_control_latency": 10,
6 "htp_performance_mode": "burst", # Maximum performance
7 "htp_graph_finalization_optimization_mode": "1", # Optimize for X Elite
8 "htp_precision": "fp16", # Use FP16 for better performance
9 "htp_use_conv_hmx": "1", # Use Hexagon Matrix Extensions
10 "htp_use_dlbc": "1" # Use Deep Learning Block Cache
11}
12
13providers = [("QNNExecutionProvider", qnn_provider_options)]
14session = ort.InferenceSession("qnn_compiled/prefill/model.serialized", providers=providers)| Hardware | Tokens/sec | Memory Usage | NPU Utilization |
|---|---|---|---|
| Snapdragon X Elite | 15-25 | 3-4GB | 85-95% |
| Snapdragon 8cx Gen 2+ | 8-15 | 4-6GB | 70-85% |
| Snapdragon 8 Gen 1+ | 10-18 | 3-5GB | 75-90% |
| Legacy Snapdragon | 5-12 | 5-8GB | 60-80% |
1@misc{abeja-qwen2.5-7b-japanese,
2 title={ABEJA-Qwen2.5-7b-Japanese-v0.1},
3 author={ABEJA},
4 year={2024},
5 url={https://huggingface.co/abeja/ABEJA-Qwen2.5-7b-Japanese-v0.1}
6}