transformers safetensors qwen2 text-generation conversational ms autotrain_compatible endpoints_compatible text-generation-inference region:us
---
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|>
```