|
--- |
|
language: |
|
- ms |
|
--- |
|
|
|
# Full Parameter Finetuning Qwen1.5-0.5B 16384 context length on Malaysian instructions dataset |
|
|
|
README at https://github.com/mesolitica/malaya/tree/5.1/session/qwen2 |
|
|
|
We use exact Qwen1.5 Instruct chat template. |
|
|
|
WandB, https://wandb.ai/huseinzol05/Qwen1.5-0.5B-4096-fpf-instructions-16k?workspace=user-huseinzol05 |
|
|
|
## how-to |
|
|
|
```python |
|
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig |
|
import torch |
|
|
|
TORCH_DTYPE = 'bfloat16' |
|
nf4_config = BitsAndBytesConfig( |
|
load_in_4bit=True, |
|
bnb_4bit_quant_type='nf4', |
|
bnb_4bit_use_double_quant=True, |
|
bnb_4bit_compute_dtype=getattr(torch, TORCH_DTYPE) |
|
) |
|
|
|
tokenizer = AutoTokenizer.from_pretrained('mesolitica/malaysian-Qwen1.5-0.5B-16k-instructions') |
|
model = AutoModelForCausalLM.from_pretrained( |
|
'mesolitica/malaysian-Qwen1.5-0.5B-16k-instructions', |
|
use_flash_attention_2 = True, |
|
quantization_config = nf4_config |
|
) |
|
messages = [ |
|
{'role': 'user', 'content': 'KWSP tu apa'} |
|
] |
|
prompt = tokenizer.apply_chat_template(messages, tokenize = False) |
|
inputs = tokenizer([prompt], return_tensors='pt', add_special_tokens=False).to('cuda') |
|
generate_kwargs = dict( |
|
inputs, |
|
max_new_tokens=1024, |
|
top_p=0.95, |
|
top_k=50, |
|
temperature=0.9, |
|
do_sample=True, |
|
num_beams=1, |
|
) |
|
r = model.generate(**generate_kwargs) |
|
tokenizer.decode(r[0]) |
|
``` |
|
|
|
```text |
|
<|im_start|>user |
|
KWSP tu apa<|im_end|> |
|
<|im_start|>assistant |
|
KWSP merujuk kepada Skim Simpanan Wang Persaraan (KWSP), iaitu skim simpanan untuk ahli kumpulan berumur 20 tahun ke atas. KWSP menawarkan beberapa faedah, termasuk: |
|
|
|
1. Akaun Simpanan Wajib - Ahli boleh menyumbang kepada KWSP melalui akaun simpanan wajib. |
|
2. Akaun Simpanan Amanah - Ahli boleh menyumbang kepada KWSP melalui akaun amanah. |
|
3. Akaun Simpanan Pelaburan - Ahli boleh menyumbang kepada KWSP melalui pelaburan dalam skim pelaburan KWSP atau pelaburan bersama. |
|
4. Perolehan - Ahli boleh mendapatkan pelbagai perkhidmatan dan ganjaran daripada KWSP. |
|
5. Akaun Simpanan untuk Penyelamat - Ahli boleh menyumbang kepada KWSP melalui akaun simpanan untuk penyelamat, yang boleh digunakan untuk bantuan kewangan atau pemberhentian pasaran kewangan. |
|
|
|
KWSP menawarkan faedah dan perlindungan yang komprehensif untuk ahli, termasuk: |
|
|
|
1. Akaun Simpanan Amanah - Akaun ini menyediakan faedah dan ganjaran sebelum dan selepas persaraan. |
|
2. Akaun Simpanan - Akaun simpanan menawarkan kadar faedah yang lebih rendah daripada akaun simpanan biasa. |
|
3. Akaun Simpanan Pelaburan - Akaun ini menawarkan kadar faedah yang lebih rendah dan pelbagai ganjaran. |
|
4. Akaun Simpanan untuk Penyelamat - Akaun ini menawarkan kadar faedah yang lebih rendah daripada akaun simpanan biasa dan pelbagai ganjaran. |
|
5. Perolehan - Akaun ini menyediakan faedah dan ganjaran sebelum dan selepas persaraan. |
|
|
|
KWSP juga menawarkan pelbagai perkhidmatan dan ganjaran lain, termasuk: |
|
|
|
1. Program Pekerjaan - KWSP menyediakan pelbagai skim pekerjaan, termasuk Skim Pencen, Skim Pekerjaan, dan Skim Penginapan. |
|
2. Program Perubatan - KWSP menyediakan pelbagai skim perubatan, termasuk Skim Cukai Perubatan. |
|
3. Program Keselamatan Sosial - KWSP menyediakan pelbagai program keselamatan sosial, termasuk Skim Simpanan 401 (KWSP), Skim Simpanan Amanah (SW401) dan Skim Simpanan Perumahan (RSP) untuk pemastautin berdaftar. |
|
4. Program Penjagaan Kesihatan - KWSP menyediakan pelbagai skim penjagaan kesihatan, termasuk Skim Insurans Kesihatan Swasta (SIC), Skim Insurans Kesihatan Kumpulan Swasta (KSMC), dan Skim Insurans Kesihatan Kumpulan Swasta 1Malaysia (SIC 1M). |
|
5. Program Pemindahan - KWSP menyediakan pelbagai skim pemindahan, termasuk Skim Pemindahan Amanah, Skim Pemindahan KWSP, dan Skim Pemindahan Persekutuan. |
|
|
|
KWSP menawarkan pelbagai pilihan dan perlindungan untuk ahli yang ingin menyumbang kepada KWSP untuk persaraan atau bantuan kewangan atau pemberhentian pasaran kewangan.<|im_end|> |
|
``` |
|
|
|
```python |
|
messages = [ |
|
{'role': 'user', 'content': 'macam mana nak kod websocket guna react, contoh kod sekali'} |
|
] |
|
prompt = tokenizer.apply_chat_template(messages, tokenize = False) |
|
inputs = tokenizer([prompt], return_tensors='pt', add_special_tokens=False).to('cuda') |
|
generate_kwargs = dict( |
|
inputs, |
|
max_new_tokens=1024, |
|
top_p=0.95, |
|
top_k=50, |
|
temperature=0.9, |
|
do_sample=True, |
|
num_beams=1, |
|
) |
|
r = model.generate(**generate_kwargs) |
|
tokenizer.decode(r[0]) |
|
``` |
|
|
|
```text |
|
<|im_start|>user |
|
macam mana nak kod websocket guna react, contoh kod sekali<|im_end|> |
|
<|im_start|>assistant |
|
Untuk menggunakan websocket pada React untuk mencipta pelanggan untuk menghantar dan menerima pesanan, anda boleh mengikuti langkah-langkah berikut: |
|
|
|
1. Mulakan dengan membuat fail baru, contohnya `WebsocketClient.js`, dan perpustakaan yang diperlukan seperti `ws` untuk Node.js, dan `axios` untuk JavaScript untuk membuat permintaan HTTP ke websocket. Pastikan anda telah mengimport perpustakaan dengan betul. |
|
|
|
2. Dalam fail `WebsocketClient.js`, cipta kelas baru dengan nama `WebsocketClient`. Anda boleh menggunakan konstruktor dengan parameter seperti nama aplikasi dan senarai objek pesanan. Contoh: |
|
``` |
|
|
|
```javascript |
|
import { WebSocketClient, Client } from 'ws'; |
|
import axios from 'axios'; |
|
|
|
class WebsocketClient { |
|
constructor(appName, socket) { |
|
this.appName = appName; |
|
this.socket = socket; |
|
} |
|
|
|
connect() { |
|
this.socket.onopen = () => { |
|
console.log('Connection successful'); |
|
}; |
|
this.socket.onclose = () => { |
|
console.log('Connection lost'); |
|
}; |
|
this.socket.onmessage = (message) => { |
|
// Code to handle incoming message |
|
}; |
|
} |
|
|
|
emit(data) { |
|
this.socket.onmessage(data); |
|
} |
|
|
|
disconnect() { |
|
this.socket.offopen(); |
|
} |
|
} |
|
|
|
// Contoh penggunaan |
|
const client = new WebsocketClient('api', axios({ port: 123 })); |
|
client.connect(); |
|
client.emit('message', { type: 'info', content: 'Hello, server! }); |
|
client.emit('message', { type: 'warning', content: 'Goodbye!'}); |
|
client.disconnect(); |
|
``` |
|
|
|
``` |
|
3. Dalam fail `WebSocketClient.js`, cipta kelas dengan nama `Client` dengan parameter seperti aplikasi dan `websocket` dari perpustakaan axios. Contoh: |
|
``` |
|
|
|
```javascript |
|
class Client { |
|
constructor(appName, websocket) { |
|
this.appName = appName; |
|
this.websocket = websocket; |
|
} |
|
|
|
connect() { |
|
this.websocket.onopen = () => { |
|
console.log('Connection successful'); |
|
}; |
|
this.websocket.onclose = () => { |
|
console.log('Connection lost'); |
|
}; |
|
this.websocket.onmessage = (message) => { |
|
// Code to handle incoming message |
|
}; |
|
} |
|
|
|
disconnect() { |
|
this.websocket.offopen(); |
|
} |
|
} |
|
|
|
// Contoh penggunaan |
|
const client = new Client('api', axios({ port: 123 })); |
|
client.connect(); |
|
client.emit('message', { type: 'info', content: 'Hello, server! }); |
|
client.emit('message', { type: 'warning', content: 'Goodbye!'}); |
|
client.disconnect(); |
|
``` |
|
|
|
``` |
|
Dalam contoh di atas, kami menggunakan konstruktor yang mengambil nama aplikasi dan websocket sebagai parameter untuk memulakan dan menggunakan fungsi `connect` untuk menghubungi websocket dengan ID sesi yang diinginkan. Kemudian, kami menggunakan fungsi `onmessage` untuk mengendalikan respons websocket dan fungsi `onclose` untuk menutup websocket. Apabila kami menghantar permintaan ke websocket, kami menggunakan kaedah `onmessage` untuk memproses respons tersebut. Apabila kami membuka websocket, kami menggunakan kaedah `onclose` untuk menutup websocket dan menggunakan kaedah `disconnect` untuk membunuhnya. |
|
|
|
Dengan menggunakan kod di atas dan menggunakannya pada projek React anda, anda boleh mencipta websocket yang boleh menghantar dan menerima pesanan untuk aplikasi anda.<|im_end|> |
|
``` |