Views
No views yet
| Metric | Original Model | Quantized ONNX | Improvement |
|---|---|---|---|
| Inference Speed | 1.0x | 2.5x faster | 🚀 150% faster |
| Model Size | ~110 MB | ~28 MB | 💾 75% smaller |
| Memory Usage | High | Reduced | 💡 Lower RAM |
| Accuracy | 100% | 99.98% | ✨ Minimal loss |
| Load Time | Slower | Faster | ⚡ Quick startup |
pip install onnxruntime transformers numpypip install onnxruntime-gpu1import onnxruntime as ort
2from transformers import AutoTokenizer
3import numpy as np
4
5# Load the quantized ONNX model
6model_path = "asmud/LazarusNLP-indobert-onnx"
7session = ort.InferenceSession(f"{model_path}/model.onnx")
8tokenizer = AutoTokenizer.from_pretrained(model_path)
9
10# Process Indonesian text
11text = "Teknologi kecerdasan buatan berkembang sangat pesat di Indonesia."
12inputs = tokenizer(text, return_tensors="np", padding=True, truncation=True)
13
14# Get embeddings
15outputs = session.run(None, {
16 'input_ids': inputs['input_ids'],
17 'attention_mask': inputs['attention_mask']
18})
19
20embeddings = outputs[0] # Shape: [batch_size, sequence_length, hidden_size]
21print(f"Embeddings shape: {embeddings.shape}")1# Process multiple texts efficiently
2texts = [
3 "Ini adalah kalimat pertama.",
4 "Kalimat kedua lebih panjang dan kompleks.",
5 "Ketiga, kalimat dengan berbagai informasi teknis."
6]
7
8# Tokenize all texts
9inputs = tokenizer(texts, return_tensors="np", padding=True, truncation=True)
10
11# Get batch embeddings
12outputs = session.run(None, {
13 'input_ids': inputs['input_ids'],
14 'attention_mask': inputs['attention_mask']
15})
16
17batch_embeddings = outputs[0]
18print(f"Batch embeddings shape: {batch_embeddings.shape}")1# Process very long texts (up to 512 tokens)
2long_text = """
3Perkembangan teknologi artificial intelligence di Indonesia menunjukkan
4tren yang sangat positif dengan banyaknya startup dan perusahaan teknologi
5yang mulai mengadopsi solusi berbasis AI untuk meningkatkan efisiensi
6operasional dan customer experience...
7""" * 10 # Very long text
8
9# The model can handle variable length inputs
10inputs = tokenizer(long_text, return_tensors="np", padding=True, truncation=True)
11outputs = session.run(None, {
12 'input_ids': inputs['input_ids'],
13 'attention_mask': inputs['attention_mask']
14})
15
16print(f"Processed {inputs['input_ids'].shape[1]} tokens")1def get_embedding(text):
2 inputs = tokenizer(text, return_tensors="np", padding=True, truncation=True)
3 outputs = session.run(None, {
4 'input_ids': inputs['input_ids'],
5 'attention_mask': inputs['attention_mask']
6 })
7 # Mean pooling
8 return np.mean(outputs[0], axis=1)
9
10# Compare document similarity
11doc1 = "Artificial intelligence adalah teknologi masa depan."
12doc2 = "AI merupakan teknologi yang akan mengubah dunia."
13doc3 = "Saya suka makan nasi gudeg."
14
15emb1 = get_embedding(doc1)
16emb2 = get_embedding(doc2)
17emb3 = get_embedding(doc3)
18
19# Calculate cosine similarity
20from sklearn.metrics.pairwise import cosine_similarity
21
22similarity_1_2 = cosine_similarity(emb1, emb2)[0][0]
23similarity_1_3 = cosine_similarity(emb1, emb3)[0][0]
24
25print(f"AI docs similarity: {similarity_1_2:.3f}")
26print(f"AI vs food similarity: {similarity_1_3:.3f}")Original SentenceTransformer: 0.0234s per sentence
Quantized ONNX: 0.0094s per sentence
Speedup: 2.5x fasterOriginal Model: ~180 MB RAM
Quantized ONNX: ~120 MB RAM
Reduction: 33% less memoryCosine Similarity vs Original: 0.9998
Maximum Difference: 0.000156
Accuracy Loss: <0.02%1from sentence_transformers import SentenceTransformer
2
3model = SentenceTransformer('LazarusNLP/congen-indobert-lite-base')
4embeddings = model.encode("Contoh teks Indonesia")1import onnxruntime as ort
2from transformers import AutoTokenizer
3
4session = ort.InferenceSession("asmud/LazarusNLP-indobert-onnx/model.onnx")
5tokenizer = AutoTokenizer.from_pretrained("asmud/LazarusNLP-indobert-onnx")
6
7inputs = tokenizer("Contoh teks Indonesia", return_tensors="np", padding=True)
8outputs = session.run(None, {
9 'input_ids': inputs['input_ids'],
10 'attention_mask': inputs['attention_mask']
11})
12embeddings = outputs[0]1@misc{lazarusnlp-indobert-onnx,
2 title={LazarusNLP IndoBERT Lite - Quantized ONNX},
3 author={asmud},
4 year={2024},
5 url={https://huggingface.co/asmud/LazarusNLP-indobert-onnx},
6 note={Quantized ONNX version of LazarusNLP/congen-indobert-lite-base}
7}1@misc{lazarusnlp-congen-indobert,
2 title={LazarusNLP ConGen IndoBERT Lite Base},
3 url={https://huggingface.co/LazarusNLP/congen-indobert-lite-base}
4}