File size: 32,088 Bytes
d63b0fc
b7fe686
 
 
 
 
d63b0fc
b7fe686
 
 
d63b0fc
 
b7fe686
d63b0fc
b7fe686
d63b0fc
b7fe686
 
 
 
 
 
 
 
 
d63b0fc
35d65c6
a587235
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca446fe
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
---
language:
- ms
- ta
- zh
- id
library_name: transformers
base_model:
- mesolitica/nanot5-small-malaysian-cased
pipeline_tag: translation
---

# NanoT5 Small Malaysian Translation V2.1

Finetuned https://huggingface.co/mesolitica/nanot5-small-malaysian-cased using 2048 context length on 9B tokens of translation dataset.

- This model able to translate from localize text into standard text.
- This model able to reverse translate from standard to localize text, suitable for text augmentation.
- This model able to translate code.
- This model natively code switching.
- This model should maintain `\n`, `\t`, `\r` as it is.
- Better Science and Math context translation compared to V2.
- Better Manglish translation compared to V2.
- Better Cantonese translation compared to V2.
- Better Tamil and Tanglish translation compared to V2.

Wandb at https://wandb.ai/huseinzol05/nanot5-small-malaysian-cased-translation-v6-multipack-post

## Public API

Go to https://playground.mesolitica.com, first registration will get free $1 credits,

<img src="https://mesolitica.com/images/front-translation-v2.png" width="50%">

## Supported prefix

1. `'terjemah ke Mandarin: '`
3. `'terjemah ke Tamil: '`
4. `'terjemah ke Jawa: '` <b><sup>+</sup></b>
5. `'terjemah ke Melayu: '`
6. `'terjemah ke Inggeris: '`
7. `'terjemah ke johor: '` <b><sup>++</sup></b>
8. `'terjemah ke kedah: '` <b><sup>++</sup></b>
9. `'terjemah ke kelantan: '` <b><sup>++</sup></b>
10. `'terjemah ke pasar Melayu: '` <b><sup>+</sup></b>
11. `'terjemah ke melaka: '` <b><sup>++</sup></b>
12. `'terjemah ke negeri sembilan: '` <b><sup>++</sup></b>
13. `'terjemah ke pahang: '` <b><sup>++</sup></b>
14. `'terjemah ke perak: '` <b><sup>++</sup></b>
15. `'terjemah ke sabah: '` <b><sup>++</sup></b>
16. `'terjemah ke sarawak: '` <b><sup>++</sup></b>
17. `'terjemah ke terengganu: '` <b><sup>++</sup></b>
18. `'terjemah ke Jawi: '` <b><sup>++</sup></b>
19. `'terjemah ke Manglish: '` <b><sup>+</sup></b>
20. `'terjemah ke Banjar: '` <b><sup>+</sup></b>
21. `'terjemah ke pasar Mandarin: '` <b><sup>+</sup></b>
22. `'terjemah ke Cantonese: '` <b><sup>++</sup></b>

- <b><sup>+</sup></b>, minimum support.
- <b><sup>++</sup></b>, initial support.

## how to

```python
from transformers import AutoTokenizer, T5ForConditionalGeneration

tokenizer = AutoTokenizer.from_pretrained('mesolitica/nanot5-small-malaysian-translation-v2.1')
model = T5ForConditionalGeneration.from_pretrained('mesolitica/nanot5-small-malaysian-translation-v2.1')

strings = [
    'ak tak paham la',
    'Hi guys! I noticed semalam & harini dah ramai yang dapat cookies ni kan. So harini i nak share some post mortem of our first batch:',
    "Memanglah. Ini tak payah expert, aku pun tau. It's a gesture, bodoh.",
    'jam 8 di pasar KK memang org ramai 😂, pandai dia pilih tmpt.',
    'Jadi haram jadah😀😃🤭',
    'nak gi mana tuu',
    'Macam nak ambil half day',
    "Bayangkan PH dan menang pru-14. Pastu macam-macam pintu belakang ada. Last-last Ismail Sabri naik. That's why I don't give a fk about politics anymore. Sumpah dah fk up dah.",
]
all_special_ids = [0, 1, 2]
prefix = 'terjemah ke Melayu: '
input_ids = [{'input_ids': tokenizer.encode(f'{prefix}{s}{tokenizer.eos_token}', return_tensors='pt')[
    0]} for s in strings]
padded = tokenizer.pad(input_ids, padding='longest')
outputs = model.generate(**padded, max_length = 100)
tokenizer.batch_decode([[i for i in o if i not in all_special_ids] for o in outputs])
```

Output,

```
[' Saya tidak faham',
 ' Hi guys! Saya perasan semalam dan hari ini ramai yang menerima cookies. Jadi hari ini saya ingin berkongsi beberapa post mortem batch pertama kami:',
 ' Memanglah. Tak perlu pakar, saya juga tahu. Ini adalah satu isyarat, bodoh.',
 ' Orang ramai di pasar KK pada jam 8 pagi, mereka sangat pandai memilih tempat.',
 ' Jadi haram jadah 😀😃🤭',
 ' Di mana kamu pergi?',
 ' Saya ingin mengambil separuh hari',
 ' Bayangkan PH dan menang PRU-14. Terdapat pelbagai pintu belakang. Akhirnya, Ismail Sabri naik. Itulah sebabnya saya tidak lagi bercakap tentang politik. Saya bersumpah sudah berputus asa.']
```

Input text can be any languages that speak in Malaysia, as long you use proper prefix, it should be able to translate to target language.

## translate code

### from English to Malay

````python
code_english = """
Here's a detailed Python code solution for implementing a Convolutional Neural Network (CNN) for image classification on the CIFAR-10 dataset:

```python
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from sklearn.model_selection import GridSearchCV
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
import numpy as np
import matplotlib.pyplot as plt

# Load and preprocess the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)

# Define the CNN architecture
def create_model(learning_rate=0.001, dropout_rate=0.5, num_filters=32):
    model = Sequential()
    model.add(Conv2D(num_filters, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3)))
    model.add(Conv2D(num_filters, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate))

    model.add(Conv2D(num_filters * 2, (3, 3), activation='relu', padding='same'))
    model.add(Conv2D(num_filters * 2, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate))

    model.add(Conv2D(num_filters * 4, (3, 3), activation='relu', padding='same'))
    model.add(Conv2D(num_filters * 4, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate))

    model.add(Flatten())
    model.add(Dense(512, activation='relu'))
    model.add(Dropout(dropout_rate))
    model.add(Dense(10, activation='softmax'))

    optimizer = Adam(learning_rate=learning_rate)
    model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
    return model
```

Explanation:

a) Data preprocessing:
- The CIFAR-10 dataset is loaded using `cifar10.load_data()`.
- The pixel values of the images are normalized to the range [0, 1] by dividing them by 255.
- The labels are converted to categorical format using `to_categorical()`.

b) CNN Architecture:
- The CNN architecture consists of three convolutional blocks, each containing two convolutional layers followed by a max-pooling layer and dropout regularization.
- The number of filters in each convolutional block is increased progressively (32, 64, 128).
- ReLU activation function is used in the convolutional layers.
- The final layers are fully connected, with a softmax activation for multi-class classification.
"""

input_ids = tokenizer.encode(f'terjemah ke Melayu: {code_english}{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

Output,

````
Berikut adalah penyelesaian kod Python yang terperinci untuk melaksanakan Rangkaian Neural Konvolusi (CNN) untuk pengelasan imej pada dataset CIFAR-10:

```python
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from sklearn.model_selection import GridSearchCV
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
import numpy as np
import matplotlib.pyplot as plt

# Muatkan dan praproses dataset CIFAR-10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)

# Tentukan senibina CNN
def create_model(learning_rate=0.001, dropout_rate=0.5, num_filters=32):
    model = Sequential()
    model.add(Conv2D(num_filters, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3)))
    model.add(Conv2D(num_filters, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate))

    model.add(Conv2D(num_filters * 2, (3, 3), activation='relu', padding='same'))
    model.add(Conv2D(num_filters * 2, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate))

    model.add(Conv2D(num_filters * 4, (3, 3), activation='relu', padding='same'))
    model.add(Conv2D(num_filters * 4, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate))

    model.add(Flatten())
    model.add(Dense(512, activation='relu'))
    model.add(Dropout(dropout_rate))
    model.add(Dense(10, activation='softmax'))

    optimizer = Adam(learning_rate=learning_rate)
    model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
    return model
```

Penjelasan:

a) Prapemprosesan data:
- Dataset CIFAR-10 dimuatkan menggunakan `cifar10.load_data()`.
- Nilai piksel imej dinormalisasi ke julat [0, 1] dengan membahagikan mereka dengan 255.
- Label ditukar kepada format kategori menggunakan `to_categorical()`.

b) Senibina CNN:
- Senibina CNN terdiri daripada tiga blok konvolusi, setiap satu mengandungi dua lapisan konvolusi diikuti oleh lapisan max-pooling dan regularisasi dropout.
- Bilangan penapis dalam setiap blok konvolusi meningkat secara beransur-ansur (32, 64, 128).
-
````

**Increase `max_length` should complete the result**.

### from Indonesian to Malay

````python
code_indon = """
`Untuk menggunakan numpy, pertama-tama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
Berikut adalah contoh beberapa operasi dasar numpy:
``` python
import numpy as np
# membuat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan
# membuat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematika pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mengalikan setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom
```
Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.
"""
input_ids = tokenizer.encode(f'terjemah ke Melayu: {code_indon}{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

Output,

````
`Untuk menggunakan numpy, pertama sekali, anda perlu memasangnya melalui pip. Anda boleh melakukannya dengan menjalankan perintah `pip install numpy` di terminal anda.
Setelah numpy dipasang, anda boleh mengimport modul numpy dengan menambahkan baris `import numpy as np` di awal program anda.
Berikut adalah contoh beberapa operasi asas numpy:
``` python
import numpy as np
# membuat array numpy dari senarai
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan lompat
# membuat array numpy dengan nilai rawak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 lajur
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematik pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mendarab setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 lajur
```
Itulah beberapa operasi asas numpy. Anda boleh mencari dokumentasi rasmi numpy di https://numpy.org/doc/stable/.
````

### from Indonesian to Jawi

````python
code_indon = """
`Untuk menggunakan numpy, pertama-tama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
Berikut adalah contoh beberapa operasi dasar numpy:
``` python
import numpy as np
# membuat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan
# membuat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematika pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mengalikan setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom
```
Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.
"""
input_ids = tokenizer.encode(f'terjemah ke Jawi: {code_indon}{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

Output,

````
`اونتوق مڠݢوناکن نومڤي، ڤرتام-تام، اندا ڤرلو مڠينساليهاڽ ملالوءي ڤيڤ. اندا داڤت ملاکوکنڽ دڠن منجالنکن ڤرينته `ڤيڤ همبل نومڤي` د ترمينت اندا.
سلڤس نومڤي ترينسالي, اندا داڤت مڠيمڤور مودول نومڤي دڠن منمبهکن باريس `ايمڤورت نومڤي اس نوءڤي` د اول ڤروجيک اندا.
بريکوت اداله چونتوه ببراڤ اوڤراسي داسر نومڤي:
``` python
ايمڤورت نومڤي اس نو؟
# ممبوات اريڠ نومڤي دري سناراي
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# ممبوات اريڠ نومڤي دڠن رنتڠ نيلاي ترتنتو
my_range = np.arange(0، 10, 2) # نيلاي اول، نيلاي اخير، دان لونچتن
# ممبوات اريڠ نومڤي دڠن نيلاي اچق
my_random_array = np.random.rand(3, 3) # 3 باريس دان 3 لنتور
# مڠاقساليس ايليمن نومڤي
ڤوترا(my_array[0]) # مڠاقساليس ايليمن ڤرتام
# ملاکوکن اوڤراسي ماتماتيك ڤد اريڠ نومڤي
my_array = my_array + 1 # منمبه ستياڤ ايليمن دڠن ١
my_array = my_array * 2 # مڠيراکن ستياڤ ايليمن دڠن ٢
# مڠوبه بنتوق اريڠ نومڤي
my_array = np.reshape(my_array, (2, 5)) # منجادي اريڠ ٢د دڠن ٢ باريس دان ٥ لنتور
```
اداله ببراڤ اوڤراسي داسر نومڤي. اندا داڤت منموکن دوتاسي ريسمي نومڤي د https://numpy.org/doc/stable/.
````

### from Indonesian to Terengganu

````python
code_indon = """
`Untuk menggunakan numpy, pertama-tama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
Berikut adalah contoh beberapa operasi dasar numpy:
``` python
import numpy as np
# membuat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan
# membuat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematika pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mengalikan setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom
```
Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.
"""
input_ids = tokenizer.encode(f'terjemah ke terengganu: {code_indon}\n{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

**`\n` is important, we found out if omit `\n` in dialects will cause repetitive generation**.

Output,

````
`` Untuk gune numpy, pertama-tama, mung kene pasang die melalui pip. Mung buleh buat ni dengan jalankan perintah `pip install numpy` dalang terminal mung.
Lepas numpy tu dipasang, mung buleh import modul numpy tu dengan tambah baris `import numpy as np` dalang awal program mung.
Ni contoh sikit operasi dasar numpy:
``` python
import numpy as np
# buat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# buat array numpy tu dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan lompat
# buat array numpy tu dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris ngah 3 kolom
# akses elemen array numpy
print(my_array[0]) # akses elemen pertama
# buat operasi matematik dalang array numpy
my_array = my_array + 1 # tambah tiap-tiap elemen dengan 1
my_array = my_array * 2 # kira tiap-tiap elemen dengan 2
# ubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # jadi array 2D ngah 2 baris ngah 5 kolom
```
Itu la beberapa operasi dasar numpy. Mung buleh nemu dokumentasi rasmi numpy dalang https://numpy.org/doc/stable/.
````

### from Indonesian to Perak

How about to include some random sampling,

````python
code_indon = """
`Untuk menggunakan numpy, pertama-tama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
Berikut adalah contoh beberapa operasi dasar numpy:
``` python
import numpy as np
# membuat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan
# membuat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematika pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mengalikan setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom
```
Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.
"""
input_ids = tokenizer.encode(f'terjemah ke perak: {code_indon}\n{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024, top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

**`\n` is important, we found out if omit `\n` in dialects will cause repetitive generation**.

Output,

````
Nih lah, ape yang teman teman nak buat ni. Miker nak kene buat macam tu.

**Dok suruh kome pasang numpy dari list, cuba masukkan baris `import numpy as np` dalam baris yang dah siap.
* Ni contoh beberapa operasi dasar numpy:

```python
import numpy as np
# buat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# buat array numpy dalam nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, ngan jumpe
# buat array numpy dalam nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris ngan 3 kolom
# access elemen array numpy
print(my_array[0]) # access element pertama
# buat operasi matematik kat array numpy
my_array = my_array + 1 # tambah setiap elemen ngan 1
my_array = my_array * 2 # darab tiap elemen ngan 2
# ubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # jadi array 2D dengan 2 baris ngan 5 kolom
```
Ate, ni beberapa operasi dasar numpy. Kome boleh cari dokumentasi rasmi numpy kat https://numpy.org/doc/stable/.
````

### from Indonesian to Kedah

How about to include some random sampling,

````python
code_indon = """
`Untuk menggunakan numpy, pertama-tama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
Berikut adalah contoh beberapa operasi dasar numpy:
``` python
import numpy as np
# membuat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan
# membuat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematika pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mengalikan setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom
```
Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.
"""
input_ids = tokenizer.encode(f'terjemah ke kedah: {code_indon}\n{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024, top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

**`\n` is important, we found out if omit `\n` in dialects will cause repetitive generation**.

Output,

````
`Nak guna numpy, hang kena pasang pip pulak. Hang boleh buat macam ni dengan jalankan perintah `pip install numpy` kat terminal hang.
Lepas numpy install, hang boleh pasang modul numpy dengan tambah baris `import numpy as np` kat awal program hang.
Ni contoh macam mana operasi asas numpy tu:
``` python
import numpy as np
# buat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# buat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan lompat
# buat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris ngan 3 lajur
# akses elemen array numpy
print(my_array[0]) # akses elemen pertama
# buat operasi matematik kat array numpy
my_array = my_array + 1 # tambah tiap-tiap elemen dengan 1
my_array = my_array * 2 # bulat tiap-tiap elemen dengan 2
# ubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # jadi array 2D ngan 2 baris ngan 5 lajur
```
Itu la beberapa operasi asas numpy. Hang boleh cari dokumentasi rasmi numpy kat https://numpy.org/doc/stable/.
````

### from Indonesian to Manglish

How about to include some random sampling,

````python
code_indon = """
`Untuk menggunakan numpy, pertama-tama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
Berikut adalah contoh beberapa operasi dasar numpy:
``` python
import numpy as np
# membuat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# membuat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan
# membuat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom
# mengakses elemen array numpy
print(my_array[0]) # mengakses elemen pertama
# melakukan operasi matematika pada array numpy
my_array = my_array + 1 # menambah setiap elemen dengan 1
my_array = my_array * 2 # mengalikan setiap elemen dengan 2
# mengubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom
```
Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.
"""
input_ids = tokenizer.encode(f'terjemah ke kedah: {code_indon}\n{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(input_ids, max_length = 1024, top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,)
outputs = [i for i in outputs[0] if i not in all_special_ids]
print(tokenizer.decode(outputs, spaces_between_special_tokens = False))
````

**`\n` is important, we found out if omit `\n` in dialects will cause repetitive generation**.

Output,

````
`Nak guna numpy, hang kena pasang pip pulak. Hang boleh buat macam ni dengan jalankan perintah `pip install numpy` kat terminal hang.
Lepas numpy install, hang boleh pasang modul numpy dengan tambah baris `import numpy as np` kat awal program hang.
Ni contoh macam mana operasi asas numpy tu:
``` python
import numpy as np
# buat array numpy dari list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
# buat array numpy dengan rentang nilai tertentu
my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan lompat
# buat array numpy dengan nilai acak
my_random_array = np.random.rand(3, 3) # 3 baris ngan 3 lajur
# akses elemen array numpy
print(my_array[0]) # akses elemen pertama
# buat operasi matematik kat array numpy
my_array = my_array + 1 # tambah tiap-tiap elemen dengan 1
my_array = my_array * 2 # bulat tiap-tiap elemen dengan 2
# ubah bentuk array numpy
my_array = np.reshape(my_array, (2, 5)) # jadi array 2D ngan 2 baris ngan 5 lajur
```
Itu la beberapa operasi asas numpy. Hang boleh cari dokumentasi rasmi numpy kat https://numpy.org/doc/stable/.
````

## how to generate more randomly?

Use random sampling, read more at https://huggingface.co/blog/how-to-generate#sampling

Below is to convert a news snippet to Sabah,

```python
news = """
Ahli ekonomi memuji Belanjawan 2025 dibentangkan Perdana Menteri, Anwar Ibrahim semalam yang disifatkan berfikiran ke depan dan ternyata Madani dengan penekanan lebih ke atas penstrukturan semula ekonomi jangka panjang.

Bawani Lelchumanan dari Business School Universiti Sunway berkata, fokus Belanjawan 2025 untuk meningkatkan daya saing global negara dengan menyokong inisiatif dalam sektor seperti semikonduktor, tenaga hijau, kewangan Islam dan transformasi digital.

Beliau memberitahu FMT, inisiatif ini boleh menjadikan Malaysia pemain berdaya saing di peringkat serantau dan antarabangsa.
"""
input_ids = tokenizer.encode(f'terjemah ke sabah: {news}{tokenizer.eos_token}', return_tensors = 'pt')
outputs = model.generate(
    input_ids, 
    max_length=200, 
    top_p=0.95,
    top_k=50,
    temperature=0.9,
    do_sample=True,
    num_return_sequences=5
)
out = tokenizer.batch_decode([[i for i in o if i not in all_special_ids] for o in outputs])
for o in out:
    print(o.strip(), '\n------\n')
```

Output,

```
Bah, kunuk sia mau bilang sama semua orang yang suka kasi oghang dalam soal bilang apa ni. Palui betul la kalau kita main santut ja dalam duit kita. Kin panas betul kalau kerajaan bilang sama kita.

Kamurang cakap ada benda macam ni:

1. Palui betul la kalau ada yang main santut ja dalam hal ni. Tingu saja la, tapi palui betul la, bikin orang jadi gerigitan dalam hal ni. Anu bah, mungkin kita nda dapat orang besar macam ini, padahal negara kita jadi gini. Ndak payah la kita pening kepala fikir macam mana mau maju. 
------

Bah, sia kasi puji, orang-orang ekonomi puji Perdana Menteri, Anwar Ibrahim, terang-terang cakap dia fikir depan-depan dan nda ada cakap kita lebih dalam hal nduduk sama-sama.

Bawani Lelchumanan dari Universiti Sunway cakap, benda ni fokus untuk bikin negara kita jadi lebih baik kalau dapat projek macam semikonduktor, tenaga hijau, kewangan Islam sama transformasi digital.

Bah, dia kata macam tu la, boleh jadi pemain Malaysia yang boleh jadi pemain yang boleh tahan dalam pasaran sama pun sama dengan dunia.

Adui dogo, kamurang tau la, sapa tau. Kita mesti nda main-main dalam bidang ni. Kita mesti pandai-pandai lah jadi pemain untuk negara kita, bukan saja. 
------

Bah, bilang la kamurang:

Kin kamurang puji si Anwar tu pasal bah, ucapan Najib tu. Sia ingat, patut la dia fikir depan-depan sama kita kena fokus sama restructure ekonomi jangka panjang.

Bawani Lelchumanan dari Universiti Sunway ni cakap, dia mau putuskan belanjawan 2025 tu jadi lebih baik untuk negara, kasi kerjasama sama kita. Kita bikin semua benda macam semikonduktor la, energy hijau la, kewangan Islam la.

Kamurang tu beritahu FMT, bagus tu akan jadi pemain Malaysia punya saham kat peringkat regional-ranking. Macam-macam lagi la kalau nda. Kita masih lebih fokus sama ekonomi negara kita. Anu bah, kita mesti pikir satu benda baru. Kamurang harap sia-harap dorang pun tau. 
------

Anu bah, kamurang ada sapa-sapa yang puji kalau si Anwar tu cakap yang dia cakap dulu, dia fikir depan-depan macam mana. Tapi kalau fikir macam mana? Dorang pasti la dengar:

Orang punya bisnes pun boleh cakap macam tu, tapi sapa yang fikir itu. Sia tau la, banyak duit. Dorang bikin kerajaan yang jadi lebih stabil, macam orang lain yang susah untuk cari makan. Kin panas betul la kalau kita bikin ekonomi. Macam mana kita mau maju macam ni?

Kita kena lawan Najib dulu, baru lah jadi macam ni. Kin panas betul kalau dia orang sini mau pigi sini. 
------

Bah, kunuk sia mau bilang sama kamurang yang mau bilang. Ini Najib dulu kasi duit untuk pembangunan negara, tapi orang lain fikir mau maju la.

Bawani Lelchumanan dari Universiti Sunway tu cakap, kita sudah fokus sama duit untuk bangun yang lagi laju dari segi bisnes. Kita semua boleh fokus sama bisnes macam semikonduktor, energy, duit untuk Islam, sama perubahan digital.

Dia bilang sama orang, ini sudah boleh jadi pemain paling power, paling power di rantau kita.

Kin-dakwa mau bilang sama la yang sudah ada. Kamurang faham ni! 
------
```

## speed up inference

Use SDPA fork at https://github.com/mesolitica/t5-sdpa, 
Or you can finish the PR at https://github.com/huggingface/transformers/pull/31167 lol.

## how to finetune your own dataset?

1. We finetuned using T5 SDPA multipacking forked at https://github.com/mesolitica/t5-sdpa-multipack, super undocumented, but scripts from https://github.com/huggingface/transformers/tree/main/examples/pytorch/translation should work also.
2. Training script at https://github.com/mesolitica/malaya/blob/master/session/translation/end-to-end/nanot5-small-multipack-compile.sh