bsbarkur commited on
Commit
097fa7c
·
verified ·
1 Parent(s): c40dc67

Upload Rigveda ONNX embedding model

Browse files
Files changed (7) hide show
  1. .gitattributes +4 -33
  2. README.md +163 -0
  3. config.json +62 -0
  4. model.onnx +3 -0
  5. special_tokens_map.json +33 -0
  6. tokenizer.json +3 -0
  7. tokenizer_config.json +0 -0
.gitattributes CHANGED
@@ -1,35 +1,6 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
  *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
  *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  *.onnx filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
2
  *.tflite filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
5
+ *.model filter=lfs diff=lfs merge=lfs -text
6
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
 
 
README.md ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: sentence-transformers
4
+ tags:
5
+ - sentence-transformers
6
+ - onnx
7
+ - embedding
8
+ - sanskrit
9
+ - rigveda
10
+ - multilingual
11
+ datasets:
12
+ - custom
13
+ language:
14
+ - sa
15
+ - en
16
+ pipeline_tag: feature-extraction
17
+ ---
18
+
19
+ # Rigveda Embedding Model (ONNX)
20
+
21
+ This is an ONNX-optimized version of the [Ganaraj/rgveda-embedding-gemma](https://huggingface.co/Ganaraj/rgveda-embedding-gemma) model, specifically designed for efficient embedding generation of Sanskrit texts, particularly Rigveda verses.
22
+
23
+ ## Model Details
24
+
25
+ - **Base Model**: Ganaraj/rgveda-embedding-gemma
26
+ - **Architecture**: Gemma-based sentence transformer
27
+ - **Format**: ONNX (Open Neural Network Exchange)
28
+ - **Embedding Dimension**: 768
29
+ - **Language Support**: Sanskrit (primary), English
30
+ - **License**: Apache 2.0
31
+
32
+ ## Usage
33
+
34
+ ### Installation
35
+
36
+ ```bash
37
+ pip install onnxruntime transformers numpy
38
+ ```
39
+
40
+ ### Python Example
41
+
42
+ ```python
43
+ import numpy as np
44
+ import onnxruntime
45
+ from transformers import AutoTokenizer
46
+
47
+ class RigvedaONNXInference:
48
+ def __init__(self, model_path):
49
+ # Load tokenizer
50
+ self.tokenizer = AutoTokenizer.from_pretrained(model_path)
51
+
52
+ # Load ONNX model
53
+ self.session = onnxruntime.InferenceSession(f"{model_path}/model.onnx")
54
+
55
+ def encode_query(self, queries):
56
+ """Encode queries with task prefix"""
57
+ texts = [f"task: search result | query: {q}" for q in queries]
58
+ return self._get_embeddings(texts)
59
+
60
+ def encode_document(self, documents):
61
+ """Encode documents with title prefix"""
62
+ texts = [f"title: none | text: {d}" for d in documents]
63
+ return self._get_embeddings(texts)
64
+
65
+ def _get_embeddings(self, texts):
66
+ inputs = self.tokenizer(texts, padding=True, truncation=True, return_tensors='np')
67
+ onnx_inputs = {
68
+ 'input_ids': inputs['input_ids'],
69
+ 'attention_mask': inputs['attention_mask']
70
+ }
71
+ outputs = self.session.run(None, onnx_inputs)
72
+ embeddings = outputs[0][:, 0] # Use [CLS] token
73
+ # Normalize embeddings
74
+ return embeddings / np.linalg.norm(embeddings, axis=1, keepdims=True)
75
+
76
+ # Usage example
77
+ model = RigvedaONNXInference("./")
78
+
79
+ # Sanskrit query about divine phenomena similar to rain and lightning
80
+ query = "वृष्टि-विद्युत्-सदृशं दैविकं आगमनम्"
81
+
82
+ # Rigveda verses
83
+ documents = [
84
+ 'असामि हि प्रयज्यवः कण्वं दद प्रचेतसः\nअसामिभिर् मरुत आ न ऊतिभिर् गन्ता वृष्टिं न विद्युतः',
85
+ 'उत द्वार उशतीर् वि श्रयन्ताम् उत देवाṁ उशत आ वहेह',
86
+ 'प्राग्नये बृहते यज्ञियाय ऋतस्य वृष्णे असुराय मन्म\nघृतं न यज्ञ आस्ये सुपूतं गिरम् भरे वृषभाय प्रतीचीम्'
87
+ ]
88
+
89
+ # Get embeddings
90
+ query_emb = model.encode_query([query])
91
+ doc_emb = model.encode_document(documents)
92
+
93
+ # Calculate similarity
94
+ similarities = np.dot(query_emb, doc_emb.T)
95
+ print("Similarities:", similarities)
96
+ ```
97
+
98
+ ## Model Performance
99
+
100
+ This ONNX version maintains high fidelity to the original PyTorch model while offering:
101
+
102
+ - **Faster inference**: Optimized for CPU and GPU inference
103
+ - **Smaller memory footprint**: Efficient memory usage
104
+ - **Cross-platform compatibility**: Works across different frameworks
105
+ - **Production ready**: Suitable for deployment scenarios
106
+
107
+ ## Intended Use
108
+
109
+ This model is designed for:
110
+
111
+ - **Sanskrit text retrieval**: Finding relevant Rigveda verses based on semantic queries
112
+ - **Comparative study**: Analyzing similarities between Sanskrit texts
113
+ - **Digital humanities research**: Supporting Sanskrit scholarship and research
114
+ - **Educational applications**: Helping students and researchers explore Vedic literature
115
+
116
+ ## Training Data
117
+
118
+ The base model was trained on Sanskrit texts with a focus on Rigveda verses, enabling it to understand:
119
+
120
+ - Classical Sanskrit vocabulary and grammar
121
+ - Vedic terminology and concepts
122
+ - Semantic relationships in ancient texts
123
+ - Cross-lingual understanding (Sanskrit-English)
124
+
125
+ ## Limitations
126
+
127
+ - Primary focus on Rigveda and classical Sanskrit texts
128
+ - May not perform optimally on modern Sanskrit or non-Vedic texts
129
+ - Limited understanding of highly specialized technical Sanskrit terms
130
+ - Performance may vary with different Sanskrit transliteration schemes
131
+
132
+ ## Citation
133
+
134
+ If you use this model in your research, please cite:
135
+
136
+ ```bibtex
137
+ @misc{rigveda-onnx-embedding,
138
+ title={Rigveda Embedding Model (ONNX)},
139
+ author={Converted from Ganaraj/rgveda-embedding-gemma},
140
+ year={2024},
141
+ howpublished={\url{https://huggingface.co/YOUR_USERNAME/rgveda-onnx-model}}
142
+ }
143
+ ```
144
+
145
+ ## Technical Details
146
+
147
+ - **Conversion Tool**: Hugging Face Optimum
148
+ - **ONNX Opset**: 18
149
+ - **Precision**: FP32
150
+ - **Input Format**: Tokenized text with attention masks
151
+ - **Output**: Normalized embeddings (768-dimensional)
152
+
153
+ ## Files Included
154
+
155
+ - `model.onnx`: The ONNX model file
156
+ - `config.json`: Model configuration
157
+ - `tokenizer.json`: Fast tokenizer
158
+ - `tokenizer_config.json`: Tokenizer configuration
159
+ - `special_tokens_map.json`: Special token mappings
160
+
161
+ ## Contact
162
+
163
+ For questions about this ONNX conversion, please open an issue in the repository. For questions about the base model, please refer to the original [Ganaraj/rgveda-embedding-gemma](https://huggingface.co/Ganaraj/rgveda-embedding-gemma) model page.
config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_sliding_window_pattern": 6,
3
+ "architectures": [
4
+ "Gemma3TextModel"
5
+ ],
6
+ "attention_bias": false,
7
+ "attention_dropout": 0.0,
8
+ "attn_logit_softcapping": null,
9
+ "bos_token_id": 2,
10
+ "dtype": "float32",
11
+ "eos_token_id": 1,
12
+ "export_model_type": "transformer",
13
+ "final_logit_softcapping": null,
14
+ "head_dim": 256,
15
+ "hidden_activation": "gelu_pytorch_tanh",
16
+ "hidden_size": 768,
17
+ "initializer_range": 0.02,
18
+ "intermediate_size": 1152,
19
+ "layer_types": [
20
+ "sliding_attention",
21
+ "sliding_attention",
22
+ "sliding_attention",
23
+ "sliding_attention",
24
+ "sliding_attention",
25
+ "full_attention",
26
+ "sliding_attention",
27
+ "sliding_attention",
28
+ "sliding_attention",
29
+ "sliding_attention",
30
+ "sliding_attention",
31
+ "full_attention",
32
+ "sliding_attention",
33
+ "sliding_attention",
34
+ "sliding_attention",
35
+ "sliding_attention",
36
+ "sliding_attention",
37
+ "full_attention",
38
+ "sliding_attention",
39
+ "sliding_attention",
40
+ "sliding_attention",
41
+ "sliding_attention",
42
+ "sliding_attention",
43
+ "full_attention"
44
+ ],
45
+ "max_position_embeddings": 2048,
46
+ "model_type": "gemma3_text",
47
+ "num_attention_heads": 3,
48
+ "num_hidden_layers": 24,
49
+ "num_key_value_heads": 1,
50
+ "pad_token_id": 0,
51
+ "query_pre_attn_scalar": 256,
52
+ "rms_norm_eps": 1e-06,
53
+ "rope_local_base_freq": 10000.0,
54
+ "rope_scaling": null,
55
+ "rope_theta": 1000000.0,
56
+ "sliding_window": 257,
57
+ "torch_dtype": "float32",
58
+ "transformers_version": "4.55.4",
59
+ "use_bidirectional_attention": true,
60
+ "use_cache": true,
61
+ "vocab_size": 262144
62
+ }
model.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7c8972e56731303d3e166dca4207aa8b8065e999172ed57b71b5f09d1308667e
3
+ size 1231714805
special_tokens_map.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "boi_token": "<start_of_image>",
3
+ "bos_token": {
4
+ "content": "<bos>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false
9
+ },
10
+ "eoi_token": "<end_of_image>",
11
+ "eos_token": {
12
+ "content": "<eos>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false
17
+ },
18
+ "image_token": "<image_soft_token>",
19
+ "pad_token": {
20
+ "content": "<pad>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false
25
+ },
26
+ "unk_token": {
27
+ "content": "<unk>",
28
+ "lstrip": false,
29
+ "normalized": false,
30
+ "rstrip": false,
31
+ "single_word": false
32
+ }
33
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:216e2a79606fe879c9f17c529c71cd241338407fd5646b595ffd3c4b9ea1d503
3
+ size 33385262
tokenizer_config.json ADDED
The diff for this file is too large to render. See raw diff