Add README with project details
Browse files
README.md
CHANGED
|
@@ -5,6 +5,7 @@ tags:
|
|
| 5 |
- byte-tokenization
|
| 6 |
- mobile
|
| 7 |
- embedded
|
|
|
|
| 8 |
license: cc-by-nc-4.0
|
| 9 |
datasets:
|
| 10 |
- custom
|
|
@@ -74,10 +75,63 @@ The tokenizer is byte-level, compatible with AutoTokenizer from Hugging Face:
|
|
| 74 |
tokenizer = AutoTokenizer.from_pretrained("ijktech/ByteGPT-small")
|
| 75 |
```
|
| 76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
## π License
|
| 78 |
π **CC-BY-NC-4.0**: Free for non-commercial use.
|
| 79 |
|
| 80 |
-
πΌ **Commercial Use**: Contact IJK Technology Ltd for licensing.
|
| 81 |
|
| 82 |
## π οΈ About IJK Technology Ltd
|
| 83 |
IJK Technology Ltd (IJKTech) develops innovative machine learning models optimized for on-device inference. Our focus is on efficiency, privacy, and usability across mobile and embedded platforms.
|
|
|
|
| 5 |
- byte-tokenization
|
| 6 |
- mobile
|
| 7 |
- embedded
|
| 8 |
+
- onnx
|
| 9 |
license: cc-by-nc-4.0
|
| 10 |
datasets:
|
| 11 |
- custom
|
|
|
|
| 75 |
tokenizer = AutoTokenizer.from_pretrained("ijktech/ByteGPT-small")
|
| 76 |
```
|
| 77 |
|
| 78 |
+
### ONNX
|
| 79 |
+
|
| 80 |
+
The model is also available in ONNX format, and can be used with the ONNX Runtime:
|
| 81 |
+
|
| 82 |
+
```python
|
| 83 |
+
import onnxruntime as ort
|
| 84 |
+
import numpy as np
|
| 85 |
+
|
| 86 |
+
# Create ONNX Runtime session
|
| 87 |
+
ort_session = ort.InferenceSession("model.onnx")
|
| 88 |
+
|
| 89 |
+
# Helper function to generate text using the ONNX model
|
| 90 |
+
def generate_with_onnx(prompt_ids, max_new_tokens=50, temperature=1.0):
|
| 91 |
+
input_ids = prompt_ids.clone()
|
| 92 |
+
|
| 93 |
+
for _ in range(max_new_tokens):
|
| 94 |
+
# Get the last block_size tokens if input is too long
|
| 95 |
+
if input_ids.shape[1] > model.block_size:
|
| 96 |
+
input_ids = input_ids[:, -model.block_size:]
|
| 97 |
+
|
| 98 |
+
# Run inference
|
| 99 |
+
ort_inputs = {
|
| 100 |
+
'input': input_ids.cpu().numpy()
|
| 101 |
+
}
|
| 102 |
+
logits = ort_session.run(None, ort_inputs)[0]
|
| 103 |
+
|
| 104 |
+
# Get predictions for the next token
|
| 105 |
+
logits = torch.from_numpy(logits)
|
| 106 |
+
logits = logits[:, -1, :] # Only take the last token's predictions
|
| 107 |
+
|
| 108 |
+
# Apply temperature
|
| 109 |
+
if temperature != 1.0:
|
| 110 |
+
logits = logits / temperature
|
| 111 |
+
|
| 112 |
+
# Sample from the distribution
|
| 113 |
+
probs = torch.nn.functional.softmax(logits, dim=-1)
|
| 114 |
+
next_token = torch.multinomial(probs, num_samples=1)
|
| 115 |
+
|
| 116 |
+
# Append the new token
|
| 117 |
+
input_ids = torch.cat([input_ids, next_token], dim=1)
|
| 118 |
+
|
| 119 |
+
return input_ids
|
| 120 |
+
|
| 121 |
+
# Test the generation
|
| 122 |
+
prompt = "Hello"
|
| 123 |
+
prompt_ids = tok(prompt, return_tensors="pt")["input_ids"]
|
| 124 |
+
generated_ids = generate_with_onnx(prompt_ids)
|
| 125 |
+
generated_text = tok.decode(generated_ids[0], skip_special_tokens=True)
|
| 126 |
+
print(f"Generated text: {generated_text}")
|
| 127 |
+
#Generated text: Hello everyone!
|
| 128 |
+
#A dinner is only available for St. Loui
|
| 129 |
+
```
|
| 130 |
+
|
| 131 |
## π License
|
| 132 |
π **CC-BY-NC-4.0**: Free for non-commercial use.
|
| 133 |
|
| 134 |
+
πΌ **Commercial Use**: Contact IJK Technology Ltd for licensing at [james@ijktech.com](mailto:[email protected]).
|
| 135 |
|
| 136 |
## π οΈ About IJK Technology Ltd
|
| 137 |
IJK Technology Ltd (IJKTech) develops innovative machine learning models optimized for on-device inference. Our focus is on efficiency, privacy, and usability across mobile and embedded platforms.
|