-
-
Notifications
You must be signed in to change notification settings - Fork 131
Malaysian Speech Instruct
We recently released Audio LLM and Speech LLM that been trained on top of https://huggingface.co/mesolitica/Malaysian-Qwen2.5-7B-Instruct,
- The model suitable for audio understanding, it is been trained on various audio classification domains, ASR, Audio translation, speaker diarization, and audio description.
- We use freezed Whisper Large V3 Encoder without any pooling, means 30 seconds audio consumed 1500 tokens or 1 token equal to 0.02 seconds.
- Projection, Embedding and LM Head layers are done in full parameter finetuning.
- LoRA for other linear layers with rank 64 and alpha 128.
- Training done in multipacking with 8192 context length.
- The model is slightly better compared to Qwen2 Audio Base
- List of dataset inside model card.
- The model suitable for speech instructions, it is been trained on actual conversations related to coding, politics, chat assistant and general QA.
- We use freezed Whisper Large V3 Encoder without any pooling, means 30 seconds audio consumed 1500 tokens or 1 token equal to 0.02 seconds.
- Projection, Embedding and LM Head layers are done in full parameter finetuning.
- LoRA for other linear layers with rank 64 and alpha 128.
- Training done in multipacking with 10240 context length.
- List of dataset inside model card.
All audio examples can get at https://github.com/mesolitica/malaya-speech/tree/master/speech/speech-instructions
from transformers import AutoProcessor, AutoModel
from transformers import TextStreamer
import librosa
import torch
model = AutoModel.from_pretrained(
'mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct',
torch_dtype = 'auto',
trust_remote_code = True,
)
_ = model.cuda()
processor = AutoProcessor.from_pretrained(
'mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct',
trust_remote_code = True,
)
conversation = [
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Walaupun pertumbuhan dan pembangunan ekonomi Malaysia yang ketara sejak beberapa dekad yang lalu, kemiskinan kekal sebagai isu penting di negara ini. Menurut Bank Dunia, pada tahun 2016, kira-kira 5.6% daripada penduduk Malaysia hidup di bawah garis kemiskinan negara, ditakrifkan sebagai berpendapatan kurang daripada RM980 (kira-kira USD 240) sebulan.
Terdapat beberapa faktor yang menyumbang kepada kadar kemiskinan yang tinggi di Malaysia:
1. Ketidaksamaan pendapatan: Walaupun KDNK Malaysia telah berkembang secara berterusan dalam beberapa tahun kebelakangan ini, faedah pertumbuhan tidak diagihkan sama rata. Ketidaksamaan pendapatan antara orang kaya dan miskin adalah tinggi, dengan pekali Gini yang mengukur tahap ketidaksamaan sekitar 0.4.
2. Kemahiran terkurang dan pencarian kerja bergaji rendah: Ramai individu yang mengalami kemiskinan mempunyai tahap kemahiran dan pendidikan yang rendah, mengehadkan prospek mereka untuk mencari pekerjaan bertauliah atau maju dalam pasaran buruh. Ini sering membawa kepada pemilihan pekerjaan bergaji rendah dan gaji tetap yang jauh lebih rendah daripada yang boleh disediakan oleh industri atau perniagaan tertentu.
3. Kos sara hidup tinggi: Harga barangan dan perkhidmatan seperti pengangkutan, makanan dan penjagaan kesihatan semakin meningkat, memberi tekanan tambahan kepada isi rumah berpendapatan rendah. Tidak percaya bahawa taraf hidup yang baik boleh dicapai tanpa peluang pendidikan dan latihan kerja yang betul serta dasar sokongan sosial untuk melindungi penerima komuniti terpinggir.
4. Isu wilayah: Terdapat jurang kemiskinan yang besar antara negeri bandar dan luar bandar di Malaysia. Dalam banyak kes, infrastruktur, sistem pendidikan dan peluang pekerjaan yang tersedia di kawasan bandar amat lemah, menghalang mobiliti kemajuan bagi komuniti luar bandar dan terpinggir.
5. Pelaksanaan program perlindungan sosial yang tidak cekap: Walaupun kerajaan Malaysia telah melaksanakan pelbagai program sosial, masih terdapat cabaran yang ketara dari segi capaian dan kecekapan. Program ini kadangkala mengalami masalah penyampaian yang tidak berkesan, termasuk halangan birokrasi, rasuah, dan penyalahgunaan dana awam.
Adalah penting untuk ambil perhatian bahawa usaha sedang dibuat untuk menangani isu kemiskinan di Malaysia. Kerajaan telah melaksanakan langkah-langkah seperti Dasar Anti-Kemiskinan Nasional (NAP), Perintah Percukaian Inklusif, dan Program Rumah Pertama saya. Walau bagaimanapun, walaupun inisiatif ini menjadi lebih luas, kedua-dua jumlah dan celik kemiskinan akan terus menjadi cabaran penting. Untuk menangani isu-isu ini dengan lebih lanjut, ia adalah penting bagi Malaysia untuk mengimbangi aspek sosio-ekonominya dengan teliti, termasuk menangani ketidaksamaan pendapatan, meningkatkan pelaburan pendidikan dan modal insan, dan menyelaraskan perkongsian sumber dan sumber.
conversation = [
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/manglish-1.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
The "us vs them" mentality in Malaysia is a complex issue that has been perpetuated by various factors such as political rhetoric, media coverage, and societal norms. To move past this mindset, it's important to foster an environment of open communication, understanding, and mutual respect among different ethnic groups.
Here are some steps that could be taken:
1. Promote intercultural dialogue: Encourage opportunities for people from different backgrounds to come together and engage in conversations about their cultures, religions, and languages. This can help break down stereotypes and promote empathy.
2. Increase representation in media: Ensure that diverse voices are represented in the media, including television, radio, newspapers, and social media platforms. This can help challenge negative portrayals of other ethnic groups and promote positive representations.
3. Support education initiatives: Implement programs that teach students about the history and contributions of all Malaysian ethnic groups. This can help foster a sense of pride and appreciation for diversity.
4. Encourage civic engagement: Engage Malaysians in community-based projects that require collaboration between different ethnic groups. This can help build trust and solidarity.
5. Address systemic inequalities: Work towards addressing economic disparities and ensuring equal access to resources and opportunities for all Malaysian citizens.
Statistics show that Malaysia remains one of the most racially divided countries in Asia, with significant income inequality and job segregation based on ethnicity. According to data from the World Bank, the top 20% of households earn over six times more than the bottom 40%. In addition, studies have shown that Malaysian employers tend to hire candidates from their own racial group or religion.
Therefore, moving past the "us vs them" mentality requires concerted efforts from all stakeholders - government, civil society, and individual Malaysians themselves. By working towards greater understanding, inclusivity, and equality, we can create a more harmonious and prosperous society for everyone.
You can add long context in the first chat,
# https://www.malaysiakini.com/news/746518
context = """
Menteri Kewangan II Datuk Seri Amir Hamzah Azizan akan memberi penerangan dan penjelasan lanjut berhubung pelaksanaan semakan kadar Cukai Jualan dan peluasan skop Cukai Perkhidmatan secara bersasar.
Jurucakap Kerajaan MADANI yang juga Menteri Komunikasi Datuk Fahmi Fadzil berkata beliau dimaklumkan yang penjelasan mengenai perkara tersebut akan dibuat melalui sidang media atau kenyataan rasminya.
Fahmi berkata kerajaan sentiasa mengambil pandangan serius terhadap maklum balas yang diberikan berhubung semakan percukaian yang bakal dilaksanakan itu.
“Seperti yang umum sedia maklum, apa yang dikutip melalui hasil ini akan disalurkan untuk pembinaan seperti sekolah dan hospital,” katanya pada sidang media mingguan di sini hari ini.
Pada 9 Jun, Amir Hamzah berkata kerajaan akan melaksanakan semakan kadar Cukai Jualan dan peluasan skop Cukai Perkhidmatan secara bersasar berkuat kuasa 1 Julai ini selaras dengan pengumuman Belanjawan 2025 pada Oktober tahun lepas bagi mengukuhkan kedudukan fiskal negara dengan meningkatkan hasil dan meluaskan asas percukaian tanpa membebankan rakyat terbanyak.
Kadar Cukai Jualan kekal tidak berubah bagi barangan keperluan manakala kadar sama ada lima atau 10 peratus akan dikenakan ke atas barangan yang tidak penting atau mengikut budi bicara.
Skop Cukai Perkhidmatan akan diperluaskan merangkumi enam perkhidmatan baharu seperti penyewaan atau pajakan, pembinaan, kewangan, penjagaan kesihatan swasta, pendidikan dan kecantikan.
"""
conversation = [
{"role": "user", "content": [
{"type": "text", "text": context},
{"type": "audio", "audio_url": 'speech/first-user.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
First turn output,
Penjelasan mengenai semakan kadar Cukai Jualan dan peluasan skop Cukai Perkhidmatan akan diberikan oleh Menteri Kewangan II, Datuk Seri Amir Hamzah Azizan dalam sidang media atau kenyataan rasmi beliau.
After that use first turn output,
conversation = [
{"role": "user", "content": [
{"type": "text", "text": context},
{"type": "audio", "audio_url": 'speech/first-user.mp3'},
]},
{'role': 'assistant', 'content': output},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/second-user.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output2 = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output2)
Second turn output,
Duit cukai ini akan digunakan untuk membina institusi awam seperti sekolah dan hospital, serta membiayai projek-projek lain yang mendorong kemajuan ekonomi dan sosial negara. Ia merupakan sumbangan kita sebagai warganegara Malaysia kepada pemulihan dan pertumbuhan negara kita. Adakah anda ingin tahu lebih lanjut tentang bagaimana wang itu digunakan? Saya boleh cuba mencari maklumat tambahan jika anda berminat.
A specific system prompt to make sure the model always reply short, suitable to convert the outputs into speech. We are going to reuse the same audio kemiskinan.mp3
and manglish-1.mp3
,
conversation = [
{'role': 'system', 'content': 'You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Malaysia has reduced poverty significantly but still faces challenges due to ethnic disparities, rural-urban divide, education gaps, and income inequality. Government efforts include cash transfers, skill development programs, and minimum wage policies to address these issues.
conversation = [
{'role': 'system', 'content': 'You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/manglish-1.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Untuk berbincang tentang budaya, agama dan bahasa di Malaysia tanpa menggunakan istilah "kita mereka", kita boleh fokus pada pemeliharaan warisan budaya, promosi dialog antara agama, sokongan literasi inklusif, pengiktirafan identiti minoriti, dan pendidikan perpaduan.
You also can use the system prompt in multi-turn.
Right now the voice assistant mode only respond less than 300 characters, we are going to make it more flexible in the future.
conversation = [
{'role': 'system', 'content': 'Always reply in english, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Malaysia has reduced poverty from 49.3% to 5.6% since independence. Challenges include regional disparities and COVID-19 impact on informal sector workers. Government initiatives aim to support vulnerable groups but more is needed for inclusive growth and equal opportunities.
1
conversation = [
{'role': 'system', 'content': 'Always reply in malay, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Malaysia masih ada kemiskinan walaupun kaya kerana jurang kekayaan antara kaum, ketidakseimbangan wilayah, dan kesenjangan pendidikan-kemahiran. Penyelesaian memerlukan tindakan menyeluruh untuk menangani punca masalah tersebut.
conversation = [
{'role': 'system', 'content': 'Always reply in mandarin, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
马来西亚虽然在经济增长方面取得了显著成就,但仍有约6%的人口生活在贫困之中。贫困率较高地区主要为原住民和农村社区。政府努力减少贫困,但需要解决教育、就业机会不均等问题才能彻底消除贫困。
conversation = [
{'role': 'system', 'content': 'Always reply in jawi, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
والاوڤون ككايأن مليسيا، ماسيه ترداڤت سكيتر 54٠٠٠ رعيت يڠ هيدوڤ دالم كميسكينن منوروت جابتن ستاتيستيك مليسيا. اين دسببكن اوليه فكتور سڤرتي قدر فيڬهتاچق يڠ بسر د كالڠن ايتنيك ملايو-ايميليهن، ككوراڠن اكسس كڤد ڤنديديقن، دان لاينن ترهادڤ واريثن عرب.
If you have multiple choice or open question and you want to get reason tracing,
conversation = [
{'role': 'system', 'content': 'You are going to enter reasoning mode, first you try to think step-by-step after that give the final answer.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/mallm-2.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Perbuatan syirik jali merujuk kepada tindakan menyeru atau berdoa pada selain Allah SWT dengan harapan atau keyakinan bahawa mereka dapat memberikan perlindungan, pertolongan atau keredaan. Ini adalah perbuatan yang sangat tercela dan dilarang dalam agama Islam.
Dalam konteks soalan ini, saya akan menganalisis setiap pilihan jawapan untuk memahami hubungannya dengan akibat perbuatan syirik jali:
Pilihan A - Rosak akidah:
Akidah merujuk kepada kepercayaan tentang ajaran-ajaran utama dalam agama Islam. Syirik jali secara langsung melanggar salah satu prinsip asas iman, iaitu percaya kepada ketuhanan Allah sahaja tanpa sebarang perkongsian kuasa-Nya dengan makhluk lain. Oleh itu, syirik jali boleh menyebabkan robohnya keseluruhan sistem keimanan seseorang.
Pilihan B - Berdosa besar:
Syirik jali dianggap sebagai dosa besar kerana ia bertentangan langsung dengan ajaran Nabi Muhammad SAW dan membawa risiko penghalau dari rahmat Allah SWT. Menurut hadis-hadis Rasulullah, seperti yang diriwayatkan oleh Abu Hurairah RA, "Barangsiapa menyembah selain Allah, maka tiada lagi baginya kekalahan" (Riwayat Ahmad).
Pilihan C - Jadi murtad:
Murtad bermaksud meninggalkan iman dan mengenal pasti diri sendiri sebagai bukan Muslim. Dalam hal ini, syirik jali tidak secara langsung menjadi dasar bagi seseorang untuk dinamakan sebagai murtad jika dia masih menjaga aspek-aspek lain dari iman tersebut. Walau bagaimanapun, amalan ini tetap sangat serius dan harus dilakukan hanya selepas matlamat tertentu yang dibenarkan atau berguna bagi umat Islam.
Pilihan D - Mendapat azab di akhirat:
Menurut ajaran Islam, orang-orang yang melakukan syirik jali akan mendapat balasan di akhirat. Mereka akan diproses dan dikhuatiri oleh Allah SWT atas segala taatik syirik mereka, serta diserahkan hak mereka untuk memilih mana-mana malaikat sebagai wali. Kesimpulan ini datang daripada nas-nas al-Quran dan riwayat Nabi kita yang turut menerangkan tentang ancaman syirik kepada kehidupan abadi.
Selepas analisis setiap pilihan, jawapan yang paling sesuai dengan akibat utama bagi perbuatan syirik jali adalah Pilihan A - Rosak akidah. Akidah merupakan intipati iman yang sangat penting dalam Islam, dan pelanggaran syirik jali sudah tentunya mempengaruhi struktur akidah seseorang sehingga menyebabkan robohnya keyakinan tersebut.
Walau bagaimanapun, semua pilihan ini juga berkait rapat antara satu sama lain kerana akibat perbuatan syirik jali adalah saling berkait dan kompleks. Namun begitu, dalam konteks soalan ini, Akidah (pilihan A) dianggap sebagai akibat pokok dari perbuatan syirik jali.
Oleh itu, jawapan yang betul untuk soalan ini adalah $boxed{A}$.
Reasoning support open questions, multiple choice question, translation, dialect translation, mathematics, science and Maktabah Al-Bakri.
Longer respond is kinda alternative to reasoning, you do not want reasoning but you want to get better and deeper answer.
conversation = [
{'role': 'system', 'content': 'You are a deeply knowledgeable and articulate AI assistant. Your task is to deliver comprehensive, in-depth, and precise responses to user queries. Present information in a logical, structured manner, using headings, lists, and examples where helpful. Strive for completeness, thoroughly address all aspects of each question. Avoid oversimplification, and aim for clarity without sacrificing depth.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/coding-pca-pytorch.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Pengurangan dimensi (dimensionality reduction) adalah teknik penting dalam analisis data yang membantu mengurangkan bilangan ciri atau atribut sambil mengekalkan maklumat utama dari dataset asal. Dalam konteks pemprosesan imej menggunakan PyTorch, ini sering digunakan untuk memudahkan model pembelajaran mendalam tanpa kehilangan terlalu banyak informasi.
PyTorch merupakan kerangka pembinaan model neural network yang popular dan memberikan fleksibiliti tinggi kepada pengguna untuk membuat rangkaian neural dengan struktur sendiri. Teknik Pengurangan Dimensi seperti Principal Component Analysis (PCA) boleh dilaksanakan di atas PyTorch untuk tujuan berikut:
### Langkah-langkah Untuk Melakukan Pengurangan Dimensi Menggunakan PyTorch
#### 1. **Import Perpustakaan yang Diperlukan**
Sebelum melakukan apa-apa operasi pada PyTorch, pastikan anda telah mengimport semua perpustakaan yang diperlukan:
```python
import torch
import numpy as np
from sklearn.decomposition import PCA # Dari scikit-learn untuk melakukan PCA sebagai contoh tambahan.
```
#### 2. **Load Data Imej**
Muatkan dataset imej yang ingin dikurangkan dimensinya. Ini biasanya melibatkan proses membaca fail gambar, konversi ke bentuk array NumPy atau Tensor, dan normalisasi jika diperlukan.
Contoh kod muatan:
```python
# Anggap kita mempunyai fungsi load_image() yang menjadualkan imej menjadi tensor PyTorch dan sebenarnya tidak berkaitan langsung dengan PyTorch.
images = [load_image(filename) for filename in image_filenames]
inputs = torch.stack(images).float() / 255.0 # Normalisasi nilai piksel antara 0 hingga 1.
```
#### 3. **Transformasi Ke Numpy Array Jika Ada Kepentingan**
Walaupun PyTorch direka khusus untuk bekerja dengan Tensor, kadang-kadang mungkin lebih mudah untuk melakukan operasi tertentu pada format NumPy. Oleh itu, transformasi Tensor menjadi NumPy array boleh berguna sebelum aplikasi PCA.
Kod Transformasi:
```python
np_inputs = inputs.numpy()
```
#### 4. **Gunakan SkLearn untuk PCA (Jika Tidak ada Fungsionaliti Built-in dalam PyTorch)**
SkLearn menyediakan pelbagai algoritma termasuk PCA yang sangat sesuai untuk tujuan ini. Walau bagaimanapun, PyTorch juga menyertakan beberapa fungsionaliti statiskal yang lain seperti `torch.nn.utils.prune` atau penyelesaian khusus kepada masalah pengurangan dimensi.
Melakukan PCA dengan SkLearn:
```python
pca = PCA(n_components=50) # Contoh mengurangkan jumlah komponen utama kepada 50 daripada jumlah semula jadi.
reduced_data = pca.fit_transform(np_inputs)
```
#### 5. **Transformasi Balik ke Format Tensor**
Setelah data diproses oleh PCA, ia harus ditransformasikan kembali menjadi Tensor PyTorch supaya dapat diproses secara selanjutnya dalam rangkaian neural.
Proses Transformasi Semula:
```python
pytorch_reduced_data = torch.from_numpy(reduced_data)
```
#### 6. **Integrasi Dengan Model Neural Network**
Akhirnya, hasil daripada pengurangan dimensi boleh dimasukkan ke dalam model neural network anda sebagai input baru. Pastikan saiz output setiap lapisan seiring dengan data yang dihasilkan selepas pengurangan dimensi.
Contoh Integrasi:
```python
class MyModel(torch.nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc1 = torch.nn.Linear(50, 128) # Contoh linear layer with 50 features from reduced data.
self.fc2 = torch.nn.Linear(128, num_classes) # Output layer based on your classification/regression task.
def forward(self, x):
out = self.fc1(x)
out = F.relu(out)
out = self.fc2(out)
return out
model = MyModel()
```
Dalam kes ini, `num_classes` akan bergantung pada tugas prediksion anda - sama ada klasifikasi biner/multi-class atau regresi.
Sila ambil perhatian bahawa contoh di atas hanya merujuk kepada cara-cara umum dan praktikal. Bergantung pada skema kerja spesifik projek anda, anda mungkin perlu menyesuaikan langkah-langkah tersebut agar sesuai dengan keperluan pemprosesan data dan latihan model anda. Selain itu, pentadbiran cache GPU (`cuda`) juga perlu dipertimbangkan jika anda sedang bekerja dengan dataset besar dan memori GPU yang tersedia cukup.
You can use this fork to serve the model in vLLM, https://github.com/mesolitica/vllm-llmaudio
git clone https://github.com/mesolitica/vllm-llmaudio
cd vllm-llmaudio
wget https://wheels.vllm.ai/b6553be1bc75f046b00046a4ad7576364d03c835/vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl
export VLLM_USE_PRECOMPILED=1
export VLLM_PRECOMPILED_WHEEL_LOCATION="vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl"
pip3 install -e .
vllm serve "mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct" --hf_overrides '{"architectures": ["LLMAudioForConditionalGeneration"]}' --trust-remote-code
To start is very simple,
import base64
from openai import OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8001/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
with open('speech/kemiskinan.mp3', 'rb') as fopen:
audio_base64 = base64.b64encode(fopen.read()).decode('utf-8')
model = 'mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct'
chat_completion_from_base64 = client.chat.completions.create(
messages=[{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": audio_base64,
"format": "mp3"
},
},
{
"type": "text",
"text": "explain the audio"
},
],
}],
model=model,
max_completion_tokens=1024,
temperature=0.6,
top_p=0.9,
)
Output,
ChatCompletion(id='chatcmpl-da66988137c340b2a599788e59cd51e3', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Malaysia telah mencapai kemajuan yang ketara dalam mengurangkan kemiskinan sejak beberapa dekad yang lalu, tetapi masih terdapat sebilangan besar orang yang hidup dalam kemiskinan. Menurut Bank Dunia, pada 2016, 0.6% daripada penduduk Malaysia hidup di bawah garis kemiskinan negara, yang ditakrifkan sebagai pendapatan bulanan sebanyak RM2,200 (kira-kira USD 520). Walau bagaimanapun, ini adalah peningkatan ketara daripada kadar kemiskinan 15.8% pada tahun 1970.\n\nWalaupun kadar kemiskinan ini agak rendah, Malaysia masih mempunyai masalah yang ketara dengan ketidaksamaan pendapatan. Menurut Bank Dunia, pekali Gini Malaysia, ukuran ketidaksamaan pendapatan, ialah 0.41 pada 2019, yang agak tinggi berbanding negara lain di rantau ini. Ini menunjukkan bahawa walaupun Malaysia telah berjaya mengurangkan kemiskinan secara keseluruhan, faedah pertumbuhan ekonomi tidak diagihkan sama rata, dan masih terdapat sebilangan besar orang yang hidup dalam kemiskinan.\n\nTerdapat beberapa sebab mengapa kemiskinan berterusan di Malaysia walaupun negara itu menjadi salah satu yang paling kaya di Asia Tenggara. Ini termasuk:\n\n1. Ketidaksamaan pendapatan: Seperti yang dinyatakan sebelum ini, Malaysia mempunyai tahap ketidaksamaan pendapatan yang agak tinggi. Ini bermakna sebahagian besar kekayaan negara tertumpu di tangan sebilangan kecil orang, manakala ramai yang lain hidup dalam kemiskinan.\n2. Pendidikan dan kemahiran: Terdapat korelasi yang kuat antara tahap pendidikan dan tahap pendapatan. Di Malaysia, terdapat jurang yang ketara dalam akses kepada pendidikan berkualiti antara bandar dan luar bandar, serta antara kumpulan sosio-ekonomi yang berbeza. Ini bermakna ramai orang tidak mempunyai kemahiran atau pendidikan yang diperlukan untuk mendapatkan pekerjaan yang membayar dengan baik, yang boleh mengekalkan kemiskinan.\n3. Geografi dan infrastruktur: Sesetengah kawasan di Malaysia, terutamanya di kawasan luar bandar dan terpencil, mempunyai akses terhad kepada perkhidmatan asas seperti elektrik, air bersih dan pengangkutan. Ini boleh menyukarkan orang yang tinggal di kawasan ini untuk mengakses pasaran dan peluang ekonomi, yang membawa kepada kemiskinan.\n4. Diskriminasi dan peminggiran: Terdapat juga isu diskriminasi dan peminggiran dalam masyarakat Malaysia, terutamanya terhadap kumpulan etnik dan agama tertentu. Ini boleh mengehadkan peluang ekonomi dan mengekalkan kemiskinan.\n\nUntuk menangani kemiskinan di Malaysia, kerajaan telah melaksanakan pelbagai program dan dasar, termasuk program pemindahan tunai, latihan kemahiran dan program pembangunan komuniti. Walau bagaimanapun, lebih banyak perlu dilakukan untuk menangani punca kemiskinan, seperti ketidaksamaan pendapatan dan diskriminasi, dan untuk memastikan faedah pertumbuhan ekonomi diagihkan dengan lebih saksama.', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=[], reasoning_content=None), stop_reason=None)], created=1750399729, model='mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=856, prompt_tokens=597, total_tokens=1453, completion_tokens_details=None, prompt_tokens_details=None), prompt_logprobs=None, kv_transfer_params=None)