isakzhang commited on
Commit
1fd6766
1 Parent(s): af8286f

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +254 -5
README.md CHANGED
@@ -1,5 +1,254 @@
1
- ---
2
- license: other
3
- license_name: seallms
4
- license_link: https://huggingface.co/SeaLLMs/SeaLLM-13B-Chat/blob/main/LICENSE
5
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: seallms
4
+ license_link: https://huggingface.co/SeaLLMs/SeaLLM-13B-Chat/blob/main/LICENSE
5
+ language:
6
+ - en
7
+ - zh
8
+ - id
9
+ - vi
10
+ - th
11
+ - ms
12
+ ---
13
+
14
+ # *SeaLLM3* - Large Language Models for Southeast Asia
15
+
16
+
17
+ <p align="center">
18
+ <a href="https://damo-nlp-sg.github.io/SeaLLMs/" target="_blank" rel="noopener">Website</a>
19
+ &nbsp;&nbsp;
20
+ <a href="https://huggingface.co/SeaLLMs/SeaLLM-7B-v2.5" target="_blank" rel="noopener"> 🤗 Tech Memo</a>
21
+ &nbsp;&nbsp;
22
+ <a href="https://huggingface.co/spaces/SeaLLMs/SeaLLM-7B-v2.5" target="_blank" rel="noopener"> 🤗 DEMO</a>
23
+ &nbsp;&nbsp;
24
+ <a href="https://github.com/DAMO-NLP-SG/SeaLLMs" target="_blank" rel="noopener">Github</a>
25
+ &nbsp;&nbsp;
26
+ <a href="https://arxiv.org/pdf/2312.00738.pdf" target="_blank" rel="noopener">Technical Report</a>
27
+ </p>
28
+
29
+ We introduce **SeaLLM3**, the latest series of the SeaLLMs (Large Language Models for Southeast Asian languages) family. It achieves state-of-the-art performance among models with similar sizes, excelling across a diverse array of tasks such as world knowledge, mathematical reasoning, translation, and instruction following. In the meantime, it was specifically enhanced to be more trustworthy, exhibiting reduced hallucination and providing safe responses, particularly in queries posed in Southeast Asian languages.
30
+
31
+
32
+ ## Uses
33
+
34
+ SeaLLMs is tailored for handling a wide range of languages spoken in the SEA region, including English, Chinese, Indonesian, Vietnamese, Thai, Tagalog, Malay, Burmese, Khmer, Lao, Tamil, and Javanese.
35
+
36
+ This page introduces the SeaLLM3-7B-Chat model, specifically fine-tuned to follow human instructions effectively for task completion, making it directly applicable to your applications.
37
+
38
+
39
+ ### Get started with `Transformers`
40
+
41
+ To quickly try the model, we show how to conduct inference with `transformers` below. Make sure you have installed the latest transformers version (>4.40).
42
+
43
+ ```python
44
+ from transformers import AutoModelForCausalLM, AutoTokenizer
45
+
46
+ device = "cuda" # the device to load the model onto
47
+
48
+ model = AutoModelForCausalLM.from_pretrained(
49
+ "SeaLLMs/SeaLLM3-7B-chat",
50
+ torch_dtype=torch.bfloat16,
51
+ device_map=device
52
+ )
53
+ tokenizer = AutoTokenizer.from_pretrained("SeaLLMs/SeaLLM3-7B-chat")
54
+
55
+ # prepare messages to model
56
+ prompt = "Hiii How are you?"
57
+ messages = [
58
+ {"role": "system", "content": "You are a helpful assistant."},
59
+ {"role": "user", "content": prompt}
60
+ ]
61
+
62
+ text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
63
+ model_inputs = tokenizer([text], return_tensors="pt").to(device)
64
+ print(f"Formatted text:\n {text}")
65
+ print(f"Model input:\n {model_inputs}")
66
+
67
+ generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512, do_sample=True)
68
+ generated_ids = [
69
+ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
70
+ ]
71
+ response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
72
+
73
+ print(f"Response:\n {response[0]}")
74
+ ```
75
+
76
+ You can also utilize the following code snippet, which uses the streamer `TextStreamer` to enable the model to continue conversing with you:
77
+
78
+ ```python
79
+ from transformers import AutoModelForCausalLM, AutoTokenizer
80
+ from transformers import TextStreamer
81
+
82
+ device = "cuda" # the device to load the model onto
83
+
84
+ model = AutoModelForCausalLM.from_pretrained(
85
+ "SeaLLMs/SeaLLM3-7B-chat",
86
+ torch_dtype=torch.bfloat16,
87
+ device_map=device
88
+ )
89
+ tokenizer = AutoTokenizer.from_pretrained("SeaLLMs/SeaLLM3-7B-chat")
90
+
91
+ # prepare messages to model
92
+ messages = [
93
+ {"role": "system", "content": "You are a helpful assistant."},
94
+ ]
95
+
96
+ while True:
97
+ prompt = input("User:")
98
+ messages.append({"role": "user", "content": prompt})
99
+ text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
100
+ model_inputs = tokenizer([text], return_tensors="pt").to(device)
101
+
102
+ streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
103
+ generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512, streamer=streamer)
104
+ generated_ids = [
105
+ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
106
+ ]
107
+ response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
108
+ messages.append({"role": "assistant", "content": response})
109
+ ```
110
+
111
+ ### Inference with `vllm`
112
+
113
+ You can also conduct inference with [vllm](https://docs.vllm.ai/en/stable/index.html), which is a fast and easy-to-use library for LLM inference and serving. To use vllm, first install the latest version via `pip install vllm`.
114
+
115
+ ```python
116
+ from vllm import LLM, SamplingParams
117
+
118
+ prompts = [
119
+ "Who is the president of US?",
120
+ "Can you speak Indonesian?"
121
+ ]
122
+
123
+ llm = LLM(ckpt_path, dtype="bfloat16")
124
+ sparams = SamplingParams(temperature=0.1, max_tokens=512)
125
+ outputs = llm.generate(prompts, sparams)
126
+
127
+ # print out the model response
128
+ for output in outputs:
129
+ prompt = output.prompt
130
+ generated_text = output.outputs[0].text
131
+ print(f"Prompt: {prompt}\nResponse: {generated_text}\n\n")
132
+ ```
133
+
134
+ ### Bias, Risks, and Limitations
135
+ <blockquote style="color:red">
136
+ <p><strong style="color: red">Terms of Use and License</strong>:
137
+ By using our released weights, codes, and demos, you agree to and comply with the terms and conditions specified in our <a href="https://huggingface.co/SeaLLMs/SeaLLM-Chat-13b/edit/main/LICENSE" target="_blank" rel="noopener">SeaLLMs Terms Of Use</a>.
138
+ </blockquote>
139
+
140
+ > **Disclaimer**:
141
+ > We must note that even though the weights, codes, and demos are released in an open manner, similar to other pre-trained language models, and despite our best efforts in red teaming and safety fine-tuning and enforcement, our models come with potential risks, including but not limited to inaccurate, misleading or potentially harmful generation.
142
+ > Developers and stakeholders should perform their own red teaming and provide related security measures before deployment, and they must abide by and comply with local governance and regulations.
143
+ > In no event shall the authors be held liable for any claim, damages, or other liability arising from the use of the released weights, codes, or demos.
144
+
145
+
146
+
147
+ ## Evaluation
148
+
149
+ We conduct our evaluation along two dimensions:
150
+
151
+ 1. **Model Capability**: We assess the model's performance on human exam questions, its ability to follow instructions, its proficiency in mathematics, and its translation accuracy.
152
+ 2. **Model Trustworthiness**: We evaluate the model's safety and tendency to hallucinate, particularly in the context of Southeast Asia (SEA).
153
+
154
+ ### Model Capability
155
+
156
+ #### Multilingual World Knowledge - M3Exam
157
+ [M3Exam](https://arxiv.org/abs/2306.05179) consists of local exam questions collected from each country. It reflects the model's world knowledge (e.g., with language or social science subjects) and reasoning abilities (e.g., with mathematics or natural science subjects).
158
+
159
+ | Model | en | zh | id | th | vi | avg | avg_sea |
160
+ |:-----------------|-----:|------:|-----:|-----:|-----:|------:|----------:|
161
+ | Sailor-7B-Chat | 0.66 | 0.652 | 0.475 | 0.462 | 0.513 | 0.552 | 0.483 |
162
+ | gemma-7b | 0.732 | 0.519 | 0.475 | 0.46 | 0.594 | 0.556 | 0.510 |
163
+ | SeaLLM-7B-v2.5 | 0.758 | 0.581 | 0.499 | 0.502 | 0.622 | 0.592 | 0.541 |
164
+ | Qwen2-7B | 0.815 | 0.874 | 0.53 | 0.479 | 0.628 | 0.665 | 0.546 |
165
+ | Qwen2-7B-Instruct| 0.809 | 0.88 | 0.558 | 0.555 | 0.624 | 0.685 | 0.579 |
166
+ | Sailor-14B | 0.748 | 0.84 | 0.536 | 0.528 | 0.621 | 0.655 | 0.562 |
167
+ | Sailor-14B-Chat | 0.749 | 0.843 | 0.553 | 0.566 | 0.637 | 0.67 | 0.585 |
168
+ | SeaLLM3-7B | 0.814 | 0.866 | 0.549 | 0.52 | 0.628 | 0.675 | 0.566 |
169
+ | SeaLLM3-7B-Chat | 0.809 | 0.874 | 0.558 | 0.569 | 0.649 | 0.692 | 0.592 |
170
+
171
+
172
+ #### Multilingual Instruction-following Capability - SeaBench
173
+ SeaBench consists of multi-turn human instructions spanning various task types. It evaluates chat-based models on their ability to follow human instructions in both single and multi-turn settings and assesses their performance across different task types. The dataset and corresponding evaluation code will be released soon!
174
+
175
+ | model | id turn-1 | id turn-2 | id avg | th turn-1 | th turn-2 | th avg | vi turn-1 | vi turn-2 | vi avg | avg |
176
+ |:----------------|------------:|------------:|---------:|------------:|------------:|---------:|------------:|------------:|---------:|------:|
177
+ | ChatGPT-0125 | 6.99 | 7.21 | 7.10 | 5.36 | 5.08 | 5.22 | 6.62 | 6.73 | 6.68 | 6.33 |
178
+ | Qwen2-7B-Instruct| 5.93 | 5.84 | 5.89 | 5.47 | 5.20 | 5.34 | 6.17 | 5.60 | 5.89 | 5.70 |
179
+ | SeaLLM-7B-v2.5 | 6.27 | 4.96 | 5.62 | 5.79 | 3.82 | 4.81 | 6.02 | 4.02 | 5.02 | 5.15 |
180
+ | Sailor-14B-Chat | 5.26 | 5.53 | 5.40 | 4.62 | 4.36 | 4.49 | 5.31 | 4.74 | 5.03 | 4.97 |
181
+ | Sailor-7B-Chat | 4.60 | 4.04 | 4.32 | 3.94 | 3.17 | 3.56 | 4.82 | 3.62 | 4.22 | 4.03 |
182
+ | SeaLLM3-7B-Chat | 6.73 | 6.59 | 6.66 | 6.48 | 5.90 | 6.19 | 6.34 | 5.79 | 6.07 | 6.31 |
183
+
184
+
185
+ #### Multilingual Math
186
+ We evaluate the multilingual math capability using the MGSM dataset. MGSM originally contains Chinese and Thai testing sets only, we use Google Translate to translate the same English questions into other SEA languages. Note that we adopt the tradition of each country to represent the number, e.g., in Indonesian and Vietnamese, dots are used as thousands separators and commas as decimal separators, the opposite of the English system.
187
+
188
+ | MGSM | en | id | ms | th | vi | zh | avg |
189
+ |:--------------------------|------:|------:|------:|------:|------:|------:|------:|
190
+ | Sailor-7B-Chat | 33.6 | 22.4 | 22.4 | 21.6 | 25.2 | 29.2 | 25.7 |
191
+ | Meta-Llama-3-8B-Instruct | 77.6 | 48 | 57.6 | 56 | 46.8 | 58.8 | 57.5 |
192
+ | glm-4-9b-chat | 72.8 | 53.6 | 53.6 | 34.8 | 52.4 | 70.8 | 56.3 |
193
+ | Qwen1.5-7B-Chat | 64 | 34.4 | 38.4 | 25.2 | 36 | 53.6 | 41.9 |
194
+ | Qwen2-7B-instruct | 82 | 66.4 | 62.4 | 58.4 | 64.4 | 76.8 | 68.4 |
195
+ | aya-23-8B | 28.8 | 16.4 | 14.4 | 2 | 16 | 12.8 | 15.1 |
196
+ | gemma-1.1-7b-it | 58.8 | 32.4 | 34.8 | 31.2 | 39.6 | 35.2 | 38.7 |
197
+ | SeaLLM-7B-v2.5 | 79.6 | 69.2 | 70.8 | 61.2 | 66.8 | 62.4 | 68.3 |
198
+ | SeaLLM3-7B-Chat | 74.8 | 71.2 | 70.8 | 71.2 | 71.2 | 79.6 | 73.1 |
199
+
200
+
201
+ #### Translation
202
+ We use the test sets from Flores-200 for evaluation and report the zero-shot chrF++ scores for translations between every pair of languages. Each row in the table below presents the average results of translating from various source languages into the target languages. The last column displays the overall average results of translating from any language to any other language for each model.
203
+
204
+ | model | en | id | jv | km | lo | ms | my | ta | th | tl | vi | zh | avg |
205
+ |:-----------------------------------------------|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|
206
+ |Meta-Llama-3-8B-Instruct | 51.54 | 49.03 | 22.46 | 15.34 | 5.42 | 46.72 | 21.24 | 32.09 | 35.75 | 40.8 | 39.31 | 14.87 | 31.22 |
207
+ |Qwen2-7B-Instruct | 50.36 | 47.55 | 29.36 | 19.26 | 11.06 | 42.43 | 19.33 | 20.04 | 36.07 | 37.91 | 39.63 | 22.87 | 31.32 |
208
+ |Sailor-7B-Chat | 49.4 | 49.78 | 28.33 | 2.68 | 6.85 | 47.75 | 5.35 | 18.23 | 38.92 | 29 | 41.76 | 20.87 | 28.24 |
209
+ |SeaLLM-7B-v2.5 | 55.09 | 53.71 | 18.13 | 18.09 | 15.53 | 51.33 | 19.71 | 26.1 | 40.55 | 45.58 | 44.56 | 24.18 | 34.38 |
210
+ |SeaLLM3-7B-Chat | 54.68 | 52.52 | 29.86 | 27.3 | 26.34 | 45.04 | 21.54 | 31.93 | 41.52 | 38.51 | 43.78 | 26.73 | 36.52 |
211
+
212
+
213
+ ### Model Trustworthiness
214
+
215
+ #### Hallucination
216
+ Performance of whether a model can refuse questions about the non-existing entity. The following is the F1 score. We use refuse as the positive label. Our test set consists of ~1k test samples per language. Each unanswerable question is generated by GPT4o. The ratio of answerable and unanswerable questions are 1:1. We define keywords to automatically detect whether a model-generated response is a refusal response.
217
+
218
+ | Refusal-F1 Scores | en | zh | vi | th | id | avg |
219
+ |:---------------------|------:|------:|------:|------:|------:|-------:|
220
+ | Qwen1.5-7B-Instruct | 53.85 | 51.70 | 52.85 | 35.5 | 58.4 | 50.46 |
221
+ | Qwen2-7B-Instruct | 58.79 | 33.08 | 56.21 | 44.6 | 55.98 | 49.732 |
222
+ | SeaLLM-7B-v2.5 | 12.90 | 0.77 | 2.45 | 19.42 | 0.78 | 7.26 |
223
+ | Sailor-7B-Chat | 33.49 | 18.82 | 5.19 | 9.68 | 16.42 | 16.72 |
224
+ | glm-4-9b-chat | 44.48 | 37.89 | 18.66 | 4.27 | 1.97 | 21.45 |
225
+ | aya-23-8B | 6.38 | 0.79 | 2.83 | 1.98 | 14.80 | 5.36 |
226
+ | Llama-3-8B-Instruct | 72.08 | 0.00 | 1.23 | 0.80 | 3.91 | 15.60 |
227
+ | gemma-1.1-7b-it | 52.39 | 27.74 | 23.96 | 22.97 | 31.72 | 31.76 |
228
+ | SeaLLM3-7B-Chat | 71.36 | 78.39 | 77.93 | 61.31 | 68.95 | 71.588 |
229
+
230
+ #### Safety
231
+ Multijaildataset consists of harmful prompts in multiple languages. We take those relevant prompts in SEA languages here and report their safe rate (the higher the better).
232
+
233
+ | Model | en | jv | th | vi | zh | avg |
234
+ |:------------------------|-------:|-------:|-------:|-------:|------:|-------:|
235
+ | SeaLLM-7B-v2.5 | 0.8952 | 0.8698 | 0.8127 | 0.8603 | 0.8127 | 0.8502 |
236
+ | Qwen2-7B-Instruct | 0.8857 | 0.4381 | 0.6381 | 0.7302 | 0.873 | 0.713 |
237
+ | Sailor-7B-Chat | 0.7873 | 0.5492 | 0.6222 | 0.6762 | 0.7619 | 0.6794 |
238
+ | Meta-Llama-3-8B-Instruct| 0.8825 | 0.2635 | 0.7111 | 0.6984 | 0.7714 | 0.6654 |
239
+ | Sailor-14B-Chat | 0.8698 | 0.3048 | 0.5365 | 0.6095 | 0.727 | 0.6095 |
240
+ | glm-4-9b-chat | 0.7714 | 0.2127 | 0.3016 | 0.6063 | 0.7492 | 0.52824|
241
+ | sea-lion-7b-instruct | 0.0032 | 0.0222 | 0.0095 | 0.019 | 0.0095 | 0.01268|
242
+ | SeaLLM3-7B-Chat | 0.8889 | 0.6000 | 0.7333 | 0.8381 | 0.927 | 0.7975 |
243
+
244
+
245
+ ## Acknowledgement to Our Linguists
246
+ We would like to express our special thanks to our professional and native linguists, Tantong Champaiboon, Nguyen Ngoc Yen Nhi and Tara Devina Putri, who helped build, evaluate, and fact-check our sampled pretraining and SFT dataset as well as evaluating our models across different aspects, especially safety.
247
+
248
+
249
+ ## Citation
250
+
251
+ If you find our project useful, we hope you would kindly star our repo and cite our work as follows:
252
+ ```
253
+ @article{}
254
+ ```