pascal lim
commited on
Commit
·
da15453
1
Parent(s):
3e93b32
add language model
Browse files- alphabet.json +1 -0
- create_lm_model.ipynb +85 -163
- language_model/{5gram.arpa → 5gram.bin} +2 -2
- language_model/5gram_correct.arpa +0 -3
- language_model/attrs.json +1 -0
- language_model/unigrams.txt +0 -0
- preprocessor_config.json +1 -0
- test_results/log_mozilla-foundation_common_voice_7_0_fr_test_predictions.txt +0 -0
- test_results/log_mozilla-foundation_common_voice_7_0_fr_test_targets.txt +0 -0
- test_results/mozilla-foundation_common_voice_7_0_fr_test_eval_results.txt +0 -2
- tokenizer_config.json +1 -1
- train_results/all_results.json +0 -14
- train_results/eval_results.json +0 -9
- train_results/train_results.json +0 -8
- train_results/trainer_state.json +0 -499
alphabet.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"labels": [" ", "'", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "\u00e0", "\u00e2", "\u00e4", "\u00e7", "\u00e8", "\u00e9", "\u00ea", "\u00eb", "\u00ee", "\u00ef", "\u00f4", "\u00f6", "\u00f9", "\u00fb", "\u00fc", "\u00ff", "\u2047", ""], "is_bpe": false}
|
create_lm_model.ipynb
CHANGED
@@ -98,18 +98,69 @@
|
|
98 |
},
|
99 |
{
|
100 |
"cell_type": "code",
|
101 |
-
"execution_count":
|
102 |
-
"id": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
"metadata": {},
|
104 |
"outputs": [],
|
105 |
"source": [
|
106 |
-
"
|
107 |
]
|
108 |
},
|
109 |
{
|
110 |
"cell_type": "code",
|
111 |
-
"execution_count":
|
112 |
-
"id": "
|
113 |
"metadata": {},
|
114 |
"outputs": [
|
115 |
{
|
@@ -117,180 +168,51 @@
|
|
117 |
"output_type": "stream",
|
118 |
"text": [
|
119 |
"Loading the LM will be faster if you build a binary file.\n",
|
120 |
-
"Reading /
|
121 |
-
"----5---10---15---20---25---30---35---40---45---50---55---60---65---70---75---80---85---90---95--100\n"
|
122 |
-
|
123 |
-
},
|
124 |
-
{
|
125 |
-
"ename": "OSError",
|
126 |
-
"evalue": "Cannot read model 'language_model/5gram.arpa' (End of file Byte: 0)",
|
127 |
-
"output_type": "error",
|
128 |
-
"traceback": [
|
129 |
-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
130 |
-
"\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)",
|
131 |
-
"File \u001b[0;32mkenlm.pyx:139\u001b[0m, in \u001b[0;36mkenlm.Model.__init__\u001b[0;34m()\u001b[0m\n",
|
132 |
-
"\u001b[0;31mRuntimeError\u001b[0m: End of file Byte: 0",
|
133 |
-
"\nThe above exception was the direct cause of the following exception:\n",
|
134 |
-
"\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)",
|
135 |
-
"Input \u001b[0;32mIn [33]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01msys\u001b[39;00m\n\u001b[1;32m 5\u001b[0m LM \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlanguage_model/\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m5gram.arpa\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m----> 6\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[43mkenlm\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mLanguageModel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mLM\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;124m-gram model\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mformat(model\u001b[38;5;241m.\u001b[39morder))\n",
|
136 |
-
"File \u001b[0;32mkenlm.pyx:142\u001b[0m, in \u001b[0;36mkenlm.Model.__init__\u001b[0;34m()\u001b[0m\n",
|
137 |
-
"\u001b[0;31mOSError\u001b[0m: Cannot read model 'language_model/5gram.arpa' (End of file Byte: 0)"
|
138 |
]
|
139 |
}
|
140 |
],
|
141 |
"source": [
|
142 |
-
"import
|
143 |
-
"import kenlm\n",
|
144 |
-
"import sys\n",
|
145 |
"\n",
|
146 |
-
"
|
147 |
-
"
|
148 |
-
"
|
|
|
149 |
]
|
150 |
},
|
151 |
{
|
152 |
"cell_type": "code",
|
153 |
-
"execution_count":
|
154 |
-
"id": "
|
155 |
"metadata": {},
|
156 |
-
"outputs": [
|
157 |
-
{
|
158 |
-
"data": {
|
159 |
-
"application/vnd.jupyter.widget-view+json": {
|
160 |
-
"model_id": "14200cf29dc74389aeceb56701ee9a5f",
|
161 |
-
"version_major": 2,
|
162 |
-
"version_minor": 0
|
163 |
-
},
|
164 |
-
"text/plain": [
|
165 |
-
"Downloading: 0%| | 0.00/255 [00:00<?, ?B/s]"
|
166 |
-
]
|
167 |
-
},
|
168 |
-
"metadata": {},
|
169 |
-
"output_type": "display_data"
|
170 |
-
},
|
171 |
-
{
|
172 |
-
"data": {
|
173 |
-
"application/vnd.jupyter.widget-view+json": {
|
174 |
-
"model_id": "9da79daa4d6b4a6694b96d0608d5b6ec",
|
175 |
-
"version_major": 2,
|
176 |
-
"version_minor": 0
|
177 |
-
},
|
178 |
-
"text/plain": [
|
179 |
-
"Downloading: 0%| | 0.00/221 [00:00<?, ?B/s]"
|
180 |
-
]
|
181 |
-
},
|
182 |
-
"metadata": {},
|
183 |
-
"output_type": "display_data"
|
184 |
-
},
|
185 |
-
{
|
186 |
-
"data": {
|
187 |
-
"application/vnd.jupyter.widget-view+json": {
|
188 |
-
"model_id": "862bc04ec9e241608eab1aa2e21ef41f",
|
189 |
-
"version_major": 2,
|
190 |
-
"version_minor": 0
|
191 |
-
},
|
192 |
-
"text/plain": [
|
193 |
-
"Downloading: 0%| | 0.00/730 [00:00<?, ?B/s]"
|
194 |
-
]
|
195 |
-
},
|
196 |
-
"metadata": {},
|
197 |
-
"output_type": "display_data"
|
198 |
-
},
|
199 |
-
{
|
200 |
-
"data": {
|
201 |
-
"application/vnd.jupyter.widget-view+json": {
|
202 |
-
"model_id": "ada7a9b9364644658c3e8b58c1a34d2c",
|
203 |
-
"version_major": 2,
|
204 |
-
"version_minor": 0
|
205 |
-
},
|
206 |
-
"text/plain": [
|
207 |
-
"Downloading: 0%| | 0.00/85.0 [00:00<?, ?B/s]"
|
208 |
-
]
|
209 |
-
},
|
210 |
-
"metadata": {},
|
211 |
-
"output_type": "display_data"
|
212 |
-
},
|
213 |
-
{
|
214 |
-
"data": {
|
215 |
-
"application/vnd.jupyter.widget-view+json": {
|
216 |
-
"model_id": "e7cbe24e2bec4efa997a0e7d3d87d082",
|
217 |
-
"version_major": 2,
|
218 |
-
"version_minor": 0
|
219 |
-
},
|
220 |
-
"text/plain": [
|
221 |
-
"Downloading: 0%| | 0.00/683 [00:00<?, ?B/s]"
|
222 |
-
]
|
223 |
-
},
|
224 |
-
"metadata": {},
|
225 |
-
"output_type": "display_data"
|
226 |
-
},
|
227 |
-
{
|
228 |
-
"data": {
|
229 |
-
"application/vnd.jupyter.widget-view+json": {
|
230 |
-
"model_id": "6b903049438d4067a0ec13d55483e9e4",
|
231 |
-
"version_major": 2,
|
232 |
-
"version_minor": 0
|
233 |
-
},
|
234 |
-
"text/plain": [
|
235 |
-
"Downloading: 0%| | 0.00/227 [00:00<?, ?B/s]"
|
236 |
-
]
|
237 |
-
},
|
238 |
-
"metadata": {},
|
239 |
-
"output_type": "display_data"
|
240 |
-
},
|
241 |
-
{
|
242 |
-
"data": {
|
243 |
-
"application/vnd.jupyter.widget-view+json": {
|
244 |
-
"model_id": "9d59cebc3b7b46228c365f6b73cee4ee",
|
245 |
-
"version_major": 2,
|
246 |
-
"version_minor": 0
|
247 |
-
},
|
248 |
-
"text/plain": [
|
249 |
-
"Downloading: 0%| | 0.00/78.0 [00:00<?, ?B/s]"
|
250 |
-
]
|
251 |
-
},
|
252 |
-
"metadata": {},
|
253 |
-
"output_type": "display_data"
|
254 |
-
},
|
255 |
-
{
|
256 |
-
"data": {
|
257 |
-
"application/vnd.jupyter.widget-view+json": {
|
258 |
-
"model_id": "7a2709adf3764eb29750700b6f58ec40",
|
259 |
-
"version_major": 2,
|
260 |
-
"version_minor": 0
|
261 |
-
},
|
262 |
-
"text/plain": [
|
263 |
-
"Downloading: 0%| | 0.00/1.50G [00:00<?, ?B/s]"
|
264 |
-
]
|
265 |
-
},
|
266 |
-
"metadata": {},
|
267 |
-
"output_type": "display_data"
|
268 |
-
},
|
269 |
-
{
|
270 |
-
"data": {
|
271 |
-
"application/vnd.jupyter.widget-view+json": {
|
272 |
-
"model_id": "7276b3af03ce408ebcb485a0ff5641a7",
|
273 |
-
"version_major": 2,
|
274 |
-
"version_minor": 0
|
275 |
-
},
|
276 |
-
"text/plain": [
|
277 |
-
"Downloading: 0%| | 0.00/11.1M [00:00<?, ?B/s]"
|
278 |
-
]
|
279 |
-
},
|
280 |
-
"metadata": {},
|
281 |
-
"output_type": "display_data"
|
282 |
-
}
|
283 |
-
],
|
284 |
"source": [
|
285 |
"from transformers import Wav2Vec2ProcessorWithLM\n",
|
286 |
"\n",
|
287 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
]
|
289 |
},
|
290 |
{
|
291 |
"cell_type": "code",
|
292 |
"execution_count": null,
|
293 |
-
"id": "
|
294 |
"metadata": {},
|
295 |
"outputs": [],
|
296 |
"source": []
|
@@ -298,7 +220,7 @@
|
|
298 |
],
|
299 |
"metadata": {
|
300 |
"kernelspec": {
|
301 |
-
"display_name": "Python 3
|
302 |
"language": "python",
|
303 |
"name": "python3"
|
304 |
},
|
@@ -312,7 +234,7 @@
|
|
312 |
"name": "python",
|
313 |
"nbconvert_exporter": "python",
|
314 |
"pygments_lexer": "ipython3",
|
315 |
-
"version": "3.
|
316 |
}
|
317 |
},
|
318 |
"nbformat": 4,
|
|
|
98 |
},
|
99 |
{
|
100 |
"cell_type": "code",
|
101 |
+
"execution_count": 20,
|
102 |
+
"id": "6d82daed",
|
103 |
+
"metadata": {},
|
104 |
+
"outputs": [],
|
105 |
+
"source": [
|
106 |
+
"with open(\"5gram.arpa\", \"r\") as read_file, open(\"5gram_correct.arpa\", \"w\") as write_file:\n",
|
107 |
+
" has_added_eos = False\n",
|
108 |
+
" for line in read_file:\n",
|
109 |
+
" if not has_added_eos and \"ngram 1=\" in line:\n",
|
110 |
+
" count=line.strip().split(\"=\")[-1]\n",
|
111 |
+
" write_file.write(line.replace(f\"{count}\", f\"{int(count)+1}\"))\n",
|
112 |
+
" elif not has_added_eos and \"<s>\" in line:\n",
|
113 |
+
" write_file.write(line)\n",
|
114 |
+
" write_file.write(line.replace(\"<s>\", \"</s>\"))\n",
|
115 |
+
" has_added_eos = True\n",
|
116 |
+
" else:\n",
|
117 |
+
" write_file.write(line)"
|
118 |
+
]
|
119 |
+
},
|
120 |
+
{
|
121 |
+
"cell_type": "code",
|
122 |
+
"execution_count": 1,
|
123 |
+
"id": "07ff4067",
|
124 |
+
"metadata": {},
|
125 |
+
"outputs": [],
|
126 |
+
"source": [
|
127 |
+
"from transformers import AutoProcessor"
|
128 |
+
]
|
129 |
+
},
|
130 |
+
{
|
131 |
+
"cell_type": "code",
|
132 |
+
"execution_count": 3,
|
133 |
+
"id": "e75ab227",
|
134 |
+
"metadata": {},
|
135 |
+
"outputs": [],
|
136 |
+
"source": [
|
137 |
+
"processor = AutoProcessor.from_pretrained(\"./\")"
|
138 |
+
]
|
139 |
+
},
|
140 |
+
{
|
141 |
+
"cell_type": "code",
|
142 |
+
"execution_count": 4,
|
143 |
+
"id": "604776b7",
|
144 |
+
"metadata": {},
|
145 |
+
"outputs": [],
|
146 |
+
"source": [
|
147 |
+
"vocab_dict = processor.tokenizer.get_vocab()"
|
148 |
+
]
|
149 |
+
},
|
150 |
+
{
|
151 |
+
"cell_type": "code",
|
152 |
+
"execution_count": 5,
|
153 |
+
"id": "ef4dd957",
|
154 |
"metadata": {},
|
155 |
"outputs": [],
|
156 |
"source": [
|
157 |
+
"sorted_vocab_dict = {k.lower(): v for k, v in sorted(vocab_dict.items(), key=lambda item: item[1])}"
|
158 |
]
|
159 |
},
|
160 |
{
|
161 |
"cell_type": "code",
|
162 |
+
"execution_count": 6,
|
163 |
+
"id": "9a14839d",
|
164 |
"metadata": {},
|
165 |
"outputs": [
|
166 |
{
|
|
|
168 |
"output_type": "stream",
|
169 |
"text": [
|
170 |
"Loading the LM will be faster if you build a binary file.\n",
|
171 |
+
"Reading /home/pascal/kenlm/build/bin/xls-r-300m-lm-fr/language_model/5gram_correct.arpa\n",
|
172 |
+
"----5---10---15---20---25---30---35---40---45---50---55---60---65---70---75---80---85---90---95--100\n",
|
173 |
+
"****************************************************************************************************\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
]
|
175 |
}
|
176 |
],
|
177 |
"source": [
|
178 |
+
"from pyctcdecode import build_ctcdecoder\n",
|
|
|
|
|
179 |
"\n",
|
180 |
+
"decoder = build_ctcdecoder(\n",
|
181 |
+
" labels=list(sorted_vocab_dict.keys()),\n",
|
182 |
+
" kenlm_model_path=\"./language_model/5gram_correct.arpa\",\n",
|
183 |
+
")"
|
184 |
]
|
185 |
},
|
186 |
{
|
187 |
"cell_type": "code",
|
188 |
+
"execution_count": 7,
|
189 |
+
"id": "656979ca",
|
190 |
"metadata": {},
|
191 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
"source": [
|
193 |
"from transformers import Wav2Vec2ProcessorWithLM\n",
|
194 |
"\n",
|
195 |
+
"processor_with_lm = Wav2Vec2ProcessorWithLM(\n",
|
196 |
+
" feature_extractor=processor.feature_extractor,\n",
|
197 |
+
" tokenizer=processor.tokenizer,\n",
|
198 |
+
" decoder=decoder\n",
|
199 |
+
")"
|
200 |
+
]
|
201 |
+
},
|
202 |
+
{
|
203 |
+
"cell_type": "code",
|
204 |
+
"execution_count": 8,
|
205 |
+
"id": "d2dd8891",
|
206 |
+
"metadata": {},
|
207 |
+
"outputs": [],
|
208 |
+
"source": [
|
209 |
+
"processor_with_lm.save_pretrained(\"xls-r-300m-lm-fr\")"
|
210 |
]
|
211 |
},
|
212 |
{
|
213 |
"cell_type": "code",
|
214 |
"execution_count": null,
|
215 |
+
"id": "85908c6d",
|
216 |
"metadata": {},
|
217 |
"outputs": [],
|
218 |
"source": []
|
|
|
220 |
],
|
221 |
"metadata": {
|
222 |
"kernelspec": {
|
223 |
+
"display_name": "Python 3",
|
224 |
"language": "python",
|
225 |
"name": "python3"
|
226 |
},
|
|
|
234 |
"name": "python",
|
235 |
"nbconvert_exporter": "python",
|
236 |
"pygments_lexer": "ipython3",
|
237 |
+
"version": "3.7.9"
|
238 |
}
|
239 |
},
|
240 |
"nbformat": 4,
|
language_model/{5gram.arpa → 5gram.bin}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:22eb4d68f40ad795dafa04ead8f220eb438bed4518f2b2af5a37ae64e4ffa9c7
|
3 |
+
size 251967234
|
language_model/5gram_correct.arpa
DELETED
@@ -1,3 +0,0 @@
|
|
1 |
-
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:1909f82cc26181421c79ba6b774a59e68cbb80f6c61e53e4d6f68d09d6d987de
|
3 |
-
size 507942072
|
|
|
|
|
|
|
|
language_model/attrs.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"alpha": 0.5, "beta": 1.5, "unk_score_offset": -10.0, "score_boundary": true}
|
language_model/unigrams.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
preprocessor_config.json
CHANGED
@@ -4,6 +4,7 @@
|
|
4 |
"feature_size": 1,
|
5 |
"padding_side": "right",
|
6 |
"padding_value": 0,
|
|
|
7 |
"return_attention_mask": true,
|
8 |
"sampling_rate": 16000
|
9 |
}
|
|
|
4 |
"feature_size": 1,
|
5 |
"padding_side": "right",
|
6 |
"padding_value": 0,
|
7 |
+
"processor_class": "Wav2Vec2ProcessorWithLM",
|
8 |
"return_attention_mask": true,
|
9 |
"sampling_rate": 16000
|
10 |
}
|
test_results/log_mozilla-foundation_common_voice_7_0_fr_test_predictions.txt
DELETED
The diff for this file is too large to render.
See raw diff
|
|
test_results/log_mozilla-foundation_common_voice_7_0_fr_test_targets.txt
DELETED
The diff for this file is too large to render.
See raw diff
|
|
test_results/mozilla-foundation_common_voice_7_0_fr_test_eval_results.txt
DELETED
@@ -1,2 +0,0 @@
|
|
1 |
-
WER: 0.24561764914155493
|
2 |
-
CER: 0.07285207821118034
|
|
|
|
|
|
tokenizer_config.json
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"unk_token": "[UNK]", "bos_token": null, "eos_token": null, "pad_token": "[PAD]", "do_lower_case": false, "word_delimiter_token": "|", "special_tokens_map_file": null, "tokenizer_file": null, "name_or_path": "./", "tokenizer_class": "Wav2Vec2CTCTokenizer"}
|
|
|
1 |
+
{"unk_token": "[UNK]", "bos_token": null, "eos_token": null, "pad_token": "[PAD]", "do_lower_case": false, "word_delimiter_token": "|", "special_tokens_map_file": null, "tokenizer_file": null, "name_or_path": "./", "tokenizer_class": "Wav2Vec2CTCTokenizer", "processor_class": "Wav2Vec2ProcessorWithLM"}
|
train_results/all_results.json
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"epoch": 2.0,
|
3 |
-
"eval_loss": 0.26187804341316223,
|
4 |
-
"eval_runtime": 722.142,
|
5 |
-
"eval_samples": 15941,
|
6 |
-
"eval_samples_per_second": 22.075,
|
7 |
-
"eval_steps_per_second": 1.381,
|
8 |
-
"eval_wer": 0.24574541380398318,
|
9 |
-
"train_loss": 1.788894365302016,
|
10 |
-
"train_runtime": 52105.5599,
|
11 |
-
"train_samples": 395042,
|
12 |
-
"train_samples_per_second": 15.163,
|
13 |
-
"train_steps_per_second": 0.118
|
14 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
train_results/eval_results.json
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"epoch": 2.0,
|
3 |
-
"eval_loss": 0.26187804341316223,
|
4 |
-
"eval_runtime": 722.142,
|
5 |
-
"eval_samples": 15941,
|
6 |
-
"eval_samples_per_second": 22.075,
|
7 |
-
"eval_steps_per_second": 1.381,
|
8 |
-
"eval_wer": 0.24574541380398318
|
9 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
train_results/train_results.json
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"epoch": 2.0,
|
3 |
-
"train_loss": 1.788894365302016,
|
4 |
-
"train_runtime": 52105.5599,
|
5 |
-
"train_samples": 395042,
|
6 |
-
"train_samples_per_second": 15.163,
|
7 |
-
"train_steps_per_second": 0.118
|
8 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
train_results/trainer_state.json
DELETED
@@ -1,499 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"best_metric": 0.26187804341316223,
|
3 |
-
"best_model_checkpoint": "./checkpoint-6000",
|
4 |
-
"epoch": 1.9998784982382245,
|
5 |
-
"global_step": 6172,
|
6 |
-
"is_hyper_param_search": false,
|
7 |
-
"is_local_process_zero": true,
|
8 |
-
"is_world_process_zero": true,
|
9 |
-
"log_history": [
|
10 |
-
{
|
11 |
-
"epoch": 0.03,
|
12 |
-
"learning_rate": 3.7499999999999997e-06,
|
13 |
-
"loss": 12.1043,
|
14 |
-
"step": 100
|
15 |
-
},
|
16 |
-
{
|
17 |
-
"epoch": 0.06,
|
18 |
-
"learning_rate": 7.499999999999999e-06,
|
19 |
-
"loss": 6.4771,
|
20 |
-
"step": 200
|
21 |
-
},
|
22 |
-
{
|
23 |
-
"epoch": 0.1,
|
24 |
-
"learning_rate": 1.1249999999999999e-05,
|
25 |
-
"loss": 4.4866,
|
26 |
-
"step": 300
|
27 |
-
},
|
28 |
-
{
|
29 |
-
"epoch": 0.13,
|
30 |
-
"learning_rate": 1.4999999999999999e-05,
|
31 |
-
"loss": 3.8842,
|
32 |
-
"step": 400
|
33 |
-
},
|
34 |
-
{
|
35 |
-
"epoch": 0.16,
|
36 |
-
"learning_rate": 1.8712499999999997e-05,
|
37 |
-
"loss": 3.495,
|
38 |
-
"step": 500
|
39 |
-
},
|
40 |
-
{
|
41 |
-
"epoch": 0.16,
|
42 |
-
"eval_loss": 3.3882696628570557,
|
43 |
-
"eval_runtime": 721.337,
|
44 |
-
"eval_samples_per_second": 22.099,
|
45 |
-
"eval_steps_per_second": 1.382,
|
46 |
-
"eval_wer": 1.0,
|
47 |
-
"step": 500
|
48 |
-
},
|
49 |
-
{
|
50 |
-
"epoch": 0.19,
|
51 |
-
"learning_rate": 2.2462499999999997e-05,
|
52 |
-
"loss": 3.171,
|
53 |
-
"step": 600
|
54 |
-
},
|
55 |
-
{
|
56 |
-
"epoch": 0.23,
|
57 |
-
"learning_rate": 2.6212499999999997e-05,
|
58 |
-
"loss": 3.0275,
|
59 |
-
"step": 700
|
60 |
-
},
|
61 |
-
{
|
62 |
-
"epoch": 0.26,
|
63 |
-
"learning_rate": 2.99625e-05,
|
64 |
-
"loss": 2.9681,
|
65 |
-
"step": 800
|
66 |
-
},
|
67 |
-
{
|
68 |
-
"epoch": 0.29,
|
69 |
-
"learning_rate": 3.37125e-05,
|
70 |
-
"loss": 2.9347,
|
71 |
-
"step": 900
|
72 |
-
},
|
73 |
-
{
|
74 |
-
"epoch": 0.32,
|
75 |
-
"learning_rate": 3.7462499999999996e-05,
|
76 |
-
"loss": 2.9095,
|
77 |
-
"step": 1000
|
78 |
-
},
|
79 |
-
{
|
80 |
-
"epoch": 0.32,
|
81 |
-
"eval_loss": 2.9152133464813232,
|
82 |
-
"eval_runtime": 718.1623,
|
83 |
-
"eval_samples_per_second": 22.197,
|
84 |
-
"eval_steps_per_second": 1.388,
|
85 |
-
"eval_wer": 0.9999871219487068,
|
86 |
-
"step": 1000
|
87 |
-
},
|
88 |
-
{
|
89 |
-
"epoch": 0.36,
|
90 |
-
"learning_rate": 4.12125e-05,
|
91 |
-
"loss": 2.8888,
|
92 |
-
"step": 1100
|
93 |
-
},
|
94 |
-
{
|
95 |
-
"epoch": 0.39,
|
96 |
-
"learning_rate": 4.4962499999999995e-05,
|
97 |
-
"loss": 2.8347,
|
98 |
-
"step": 1200
|
99 |
-
},
|
100 |
-
{
|
101 |
-
"epoch": 0.42,
|
102 |
-
"learning_rate": 4.871249999999999e-05,
|
103 |
-
"loss": 2.5318,
|
104 |
-
"step": 1300
|
105 |
-
},
|
106 |
-
{
|
107 |
-
"epoch": 0.45,
|
108 |
-
"learning_rate": 5.2462499999999994e-05,
|
109 |
-
"loss": 2.0502,
|
110 |
-
"step": 1400
|
111 |
-
},
|
112 |
-
{
|
113 |
-
"epoch": 0.49,
|
114 |
-
"learning_rate": 5.62125e-05,
|
115 |
-
"loss": 1.8434,
|
116 |
-
"step": 1500
|
117 |
-
},
|
118 |
-
{
|
119 |
-
"epoch": 0.49,
|
120 |
-
"eval_loss": 1.0473320484161377,
|
121 |
-
"eval_runtime": 720.1235,
|
122 |
-
"eval_samples_per_second": 22.136,
|
123 |
-
"eval_steps_per_second": 1.384,
|
124 |
-
"eval_wer": 0.7446153648029981,
|
125 |
-
"step": 1500
|
126 |
-
},
|
127 |
-
{
|
128 |
-
"epoch": 0.52,
|
129 |
-
"learning_rate": 5.9962499999999994e-05,
|
130 |
-
"loss": 1.7339,
|
131 |
-
"step": 1600
|
132 |
-
},
|
133 |
-
{
|
134 |
-
"epoch": 0.55,
|
135 |
-
"learning_rate": 6.367499999999999e-05,
|
136 |
-
"loss": 1.6535,
|
137 |
-
"step": 1700
|
138 |
-
},
|
139 |
-
{
|
140 |
-
"epoch": 0.58,
|
141 |
-
"learning_rate": 6.7425e-05,
|
142 |
-
"loss": 1.5793,
|
143 |
-
"step": 1800
|
144 |
-
},
|
145 |
-
{
|
146 |
-
"epoch": 0.62,
|
147 |
-
"learning_rate": 7.1175e-05,
|
148 |
-
"loss": 1.5056,
|
149 |
-
"step": 1900
|
150 |
-
},
|
151 |
-
{
|
152 |
-
"epoch": 0.65,
|
153 |
-
"learning_rate": 7.492499999999999e-05,
|
154 |
-
"loss": 1.4298,
|
155 |
-
"step": 2000
|
156 |
-
},
|
157 |
-
{
|
158 |
-
"epoch": 0.65,
|
159 |
-
"eval_loss": 0.5728740692138672,
|
160 |
-
"eval_runtime": 712.5783,
|
161 |
-
"eval_samples_per_second": 22.371,
|
162 |
-
"eval_steps_per_second": 1.399,
|
163 |
-
"eval_wer": 0.5129521000882147,
|
164 |
-
"step": 2000
|
165 |
-
},
|
166 |
-
{
|
167 |
-
"epoch": 0.68,
|
168 |
-
"learning_rate": 7.325623202301054e-05,
|
169 |
-
"loss": 1.3592,
|
170 |
-
"step": 2100
|
171 |
-
},
|
172 |
-
{
|
173 |
-
"epoch": 0.71,
|
174 |
-
"learning_rate": 7.145853307766058e-05,
|
175 |
-
"loss": 1.2917,
|
176 |
-
"step": 2200
|
177 |
-
},
|
178 |
-
{
|
179 |
-
"epoch": 0.75,
|
180 |
-
"learning_rate": 6.966083413231063e-05,
|
181 |
-
"loss": 1.2536,
|
182 |
-
"step": 2300
|
183 |
-
},
|
184 |
-
{
|
185 |
-
"epoch": 0.78,
|
186 |
-
"learning_rate": 6.788111217641419e-05,
|
187 |
-
"loss": 1.2345,
|
188 |
-
"step": 2400
|
189 |
-
},
|
190 |
-
{
|
191 |
-
"epoch": 0.81,
|
192 |
-
"learning_rate": 6.608341323106423e-05,
|
193 |
-
"loss": 1.1937,
|
194 |
-
"step": 2500
|
195 |
-
},
|
196 |
-
{
|
197 |
-
"epoch": 0.81,
|
198 |
-
"eval_loss": 0.3795304000377655,
|
199 |
-
"eval_runtime": 716.4435,
|
200 |
-
"eval_samples_per_second": 22.25,
|
201 |
-
"eval_steps_per_second": 1.392,
|
202 |
-
"eval_wer": 0.34504806732645216,
|
203 |
-
"step": 2500
|
204 |
-
},
|
205 |
-
{
|
206 |
-
"epoch": 0.84,
|
207 |
-
"learning_rate": 6.428571428571427e-05,
|
208 |
-
"loss": 1.1806,
|
209 |
-
"step": 2600
|
210 |
-
},
|
211 |
-
{
|
212 |
-
"epoch": 0.87,
|
213 |
-
"learning_rate": 6.248801534036433e-05,
|
214 |
-
"loss": 1.1651,
|
215 |
-
"step": 2700
|
216 |
-
},
|
217 |
-
{
|
218 |
-
"epoch": 0.91,
|
219 |
-
"learning_rate": 6.069031639501438e-05,
|
220 |
-
"loss": 1.1455,
|
221 |
-
"step": 2800
|
222 |
-
},
|
223 |
-
{
|
224 |
-
"epoch": 0.94,
|
225 |
-
"learning_rate": 5.889261744966442e-05,
|
226 |
-
"loss": 1.1312,
|
227 |
-
"step": 2900
|
228 |
-
},
|
229 |
-
{
|
230 |
-
"epoch": 0.97,
|
231 |
-
"learning_rate": 5.709491850431447e-05,
|
232 |
-
"loss": 1.1248,
|
233 |
-
"step": 3000
|
234 |
-
},
|
235 |
-
{
|
236 |
-
"epoch": 0.97,
|
237 |
-
"eval_loss": 0.3320523500442505,
|
238 |
-
"eval_runtime": 716.2808,
|
239 |
-
"eval_samples_per_second": 22.255,
|
240 |
-
"eval_steps_per_second": 1.392,
|
241 |
-
"eval_wer": 0.30515830344552264,
|
242 |
-
"step": 3000
|
243 |
-
},
|
244 |
-
{
|
245 |
-
"epoch": 1.0,
|
246 |
-
"learning_rate": 5.5297219558964525e-05,
|
247 |
-
"loss": 1.1017,
|
248 |
-
"step": 3100
|
249 |
-
},
|
250 |
-
{
|
251 |
-
"epoch": 1.04,
|
252 |
-
"learning_rate": 5.3499520613614567e-05,
|
253 |
-
"loss": 1.0978,
|
254 |
-
"step": 3200
|
255 |
-
},
|
256 |
-
{
|
257 |
-
"epoch": 1.07,
|
258 |
-
"learning_rate": 5.1701821668264615e-05,
|
259 |
-
"loss": 1.0954,
|
260 |
-
"step": 3300
|
261 |
-
},
|
262 |
-
{
|
263 |
-
"epoch": 1.1,
|
264 |
-
"learning_rate": 4.990412272291467e-05,
|
265 |
-
"loss": 1.0867,
|
266 |
-
"step": 3400
|
267 |
-
},
|
268 |
-
{
|
269 |
-
"epoch": 1.13,
|
270 |
-
"learning_rate": 4.812440076701821e-05,
|
271 |
-
"loss": 1.0835,
|
272 |
-
"step": 3500
|
273 |
-
},
|
274 |
-
{
|
275 |
-
"epoch": 1.13,
|
276 |
-
"eval_loss": 0.3037940561771393,
|
277 |
-
"eval_runtime": 714.1597,
|
278 |
-
"eval_samples_per_second": 22.321,
|
279 |
-
"eval_steps_per_second": 1.396,
|
280 |
-
"eval_wer": 0.2805032742445413,
|
281 |
-
"step": 3500
|
282 |
-
},
|
283 |
-
{
|
284 |
-
"epoch": 1.17,
|
285 |
-
"learning_rate": 4.632670182166826e-05,
|
286 |
-
"loss": 1.0808,
|
287 |
-
"step": 3600
|
288 |
-
},
|
289 |
-
{
|
290 |
-
"epoch": 1.2,
|
291 |
-
"learning_rate": 4.4529002876318304e-05,
|
292 |
-
"loss": 1.0648,
|
293 |
-
"step": 3700
|
294 |
-
},
|
295 |
-
{
|
296 |
-
"epoch": 1.23,
|
297 |
-
"learning_rate": 4.273130393096836e-05,
|
298 |
-
"loss": 1.0541,
|
299 |
-
"step": 3800
|
300 |
-
},
|
301 |
-
{
|
302 |
-
"epoch": 1.26,
|
303 |
-
"learning_rate": 4.093360498561841e-05,
|
304 |
-
"loss": 1.0621,
|
305 |
-
"step": 3900
|
306 |
-
},
|
307 |
-
{
|
308 |
-
"epoch": 1.3,
|
309 |
-
"learning_rate": 3.913590604026845e-05,
|
310 |
-
"loss": 1.0479,
|
311 |
-
"step": 4000
|
312 |
-
},
|
313 |
-
{
|
314 |
-
"epoch": 1.3,
|
315 |
-
"eval_loss": 0.2910499572753906,
|
316 |
-
"eval_runtime": 718.1665,
|
317 |
-
"eval_samples_per_second": 22.197,
|
318 |
-
"eval_steps_per_second": 1.388,
|
319 |
-
"eval_wer": 0.26888727197800427,
|
320 |
-
"step": 4000
|
321 |
-
},
|
322 |
-
{
|
323 |
-
"epoch": 1.33,
|
324 |
-
"learning_rate": 3.7338207094918506e-05,
|
325 |
-
"loss": 1.0428,
|
326 |
-
"step": 4100
|
327 |
-
},
|
328 |
-
{
|
329 |
-
"epoch": 1.36,
|
330 |
-
"learning_rate": 3.555848513902205e-05,
|
331 |
-
"loss": 1.047,
|
332 |
-
"step": 4200
|
333 |
-
},
|
334 |
-
{
|
335 |
-
"epoch": 1.39,
|
336 |
-
"learning_rate": 3.37607861936721e-05,
|
337 |
-
"loss": 1.0397,
|
338 |
-
"step": 4300
|
339 |
-
},
|
340 |
-
{
|
341 |
-
"epoch": 1.43,
|
342 |
-
"learning_rate": 3.1963087248322145e-05,
|
343 |
-
"loss": 1.0347,
|
344 |
-
"step": 4400
|
345 |
-
},
|
346 |
-
{
|
347 |
-
"epoch": 1.46,
|
348 |
-
"learning_rate": 3.0165388302972194e-05,
|
349 |
-
"loss": 1.0413,
|
350 |
-
"step": 4500
|
351 |
-
},
|
352 |
-
{
|
353 |
-
"epoch": 1.46,
|
354 |
-
"eval_loss": 0.27976545691490173,
|
355 |
-
"eval_runtime": 713.7382,
|
356 |
-
"eval_samples_per_second": 22.335,
|
357 |
-
"eval_steps_per_second": 1.397,
|
358 |
-
"eval_wer": 0.2592995627901586,
|
359 |
-
"step": 4500
|
360 |
-
},
|
361 |
-
{
|
362 |
-
"epoch": 1.49,
|
363 |
-
"learning_rate": 2.836768935762224e-05,
|
364 |
-
"loss": 1.0238,
|
365 |
-
"step": 4600
|
366 |
-
},
|
367 |
-
{
|
368 |
-
"epoch": 1.52,
|
369 |
-
"learning_rate": 2.656999041227229e-05,
|
370 |
-
"loss": 1.0269,
|
371 |
-
"step": 4700
|
372 |
-
},
|
373 |
-
{
|
374 |
-
"epoch": 1.56,
|
375 |
-
"learning_rate": 2.4772291466922337e-05,
|
376 |
-
"loss": 1.021,
|
377 |
-
"step": 4800
|
378 |
-
},
|
379 |
-
{
|
380 |
-
"epoch": 1.59,
|
381 |
-
"learning_rate": 2.2974592521572386e-05,
|
382 |
-
"loss": 1.0186,
|
383 |
-
"step": 4900
|
384 |
-
},
|
385 |
-
{
|
386 |
-
"epoch": 1.62,
|
387 |
-
"learning_rate": 2.1176893576222434e-05,
|
388 |
-
"loss": 1.014,
|
389 |
-
"step": 5000
|
390 |
-
},
|
391 |
-
{
|
392 |
-
"epoch": 1.62,
|
393 |
-
"eval_loss": 0.27265554666519165,
|
394 |
-
"eval_runtime": 707.3075,
|
395 |
-
"eval_samples_per_second": 22.538,
|
396 |
-
"eval_steps_per_second": 1.41,
|
397 |
-
"eval_wer": 0.25117351242409997,
|
398 |
-
"step": 5000
|
399 |
-
},
|
400 |
-
{
|
401 |
-
"epoch": 1.65,
|
402 |
-
"learning_rate": 1.9379194630872483e-05,
|
403 |
-
"loss": 1.0074,
|
404 |
-
"step": 5100
|
405 |
-
},
|
406 |
-
{
|
407 |
-
"epoch": 1.68,
|
408 |
-
"learning_rate": 1.759947267497603e-05,
|
409 |
-
"loss": 1.0193,
|
410 |
-
"step": 5200
|
411 |
-
},
|
412 |
-
{
|
413 |
-
"epoch": 1.72,
|
414 |
-
"learning_rate": 1.5801773729626078e-05,
|
415 |
-
"loss": 1.0044,
|
416 |
-
"step": 5300
|
417 |
-
},
|
418 |
-
{
|
419 |
-
"epoch": 1.75,
|
420 |
-
"learning_rate": 1.4004074784276125e-05,
|
421 |
-
"loss": 1.0005,
|
422 |
-
"step": 5400
|
423 |
-
},
|
424 |
-
{
|
425 |
-
"epoch": 1.78,
|
426 |
-
"learning_rate": 1.2206375838926173e-05,
|
427 |
-
"loss": 1.004,
|
428 |
-
"step": 5500
|
429 |
-
},
|
430 |
-
{
|
431 |
-
"epoch": 1.78,
|
432 |
-
"eval_loss": 0.26460376381874084,
|
433 |
-
"eval_runtime": 719.6956,
|
434 |
-
"eval_samples_per_second": 22.15,
|
435 |
-
"eval_steps_per_second": 1.385,
|
436 |
-
"eval_wer": 0.2470782921128375,
|
437 |
-
"step": 5500
|
438 |
-
},
|
439 |
-
{
|
440 |
-
"epoch": 1.81,
|
441 |
-
"learning_rate": 1.0408676893576222e-05,
|
442 |
-
"loss": 1.0048,
|
443 |
-
"step": 5600
|
444 |
-
},
|
445 |
-
{
|
446 |
-
"epoch": 1.85,
|
447 |
-
"learning_rate": 8.610977948226269e-06,
|
448 |
-
"loss": 0.9988,
|
449 |
-
"step": 5700
|
450 |
-
},
|
451 |
-
{
|
452 |
-
"epoch": 1.88,
|
453 |
-
"learning_rate": 6.813279002876318e-06,
|
454 |
-
"loss": 0.9919,
|
455 |
-
"step": 5800
|
456 |
-
},
|
457 |
-
{
|
458 |
-
"epoch": 1.91,
|
459 |
-
"learning_rate": 5.015580057526366e-06,
|
460 |
-
"loss": 0.9886,
|
461 |
-
"step": 5900
|
462 |
-
},
|
463 |
-
{
|
464 |
-
"epoch": 1.94,
|
465 |
-
"learning_rate": 3.217881112176414e-06,
|
466 |
-
"loss": 0.9949,
|
467 |
-
"step": 6000
|
468 |
-
},
|
469 |
-
{
|
470 |
-
"epoch": 1.94,
|
471 |
-
"eval_loss": 0.26187804341316223,
|
472 |
-
"eval_runtime": 717.4473,
|
473 |
-
"eval_samples_per_second": 22.219,
|
474 |
-
"eval_steps_per_second": 1.39,
|
475 |
-
"eval_wer": 0.24574541380398318,
|
476 |
-
"step": 6000
|
477 |
-
},
|
478 |
-
{
|
479 |
-
"epoch": 1.98,
|
480 |
-
"learning_rate": 1.4201821668264622e-06,
|
481 |
-
"loss": 0.9931,
|
482 |
-
"step": 6100
|
483 |
-
},
|
484 |
-
{
|
485 |
-
"epoch": 2.0,
|
486 |
-
"step": 6172,
|
487 |
-
"total_flos": 1.1573983785360925e+20,
|
488 |
-
"train_loss": 1.788894365302016,
|
489 |
-
"train_runtime": 52105.5599,
|
490 |
-
"train_samples_per_second": 15.163,
|
491 |
-
"train_steps_per_second": 0.118
|
492 |
-
}
|
493 |
-
],
|
494 |
-
"max_steps": 6172,
|
495 |
-
"num_train_epochs": 2,
|
496 |
-
"total_flos": 1.1573983785360925e+20,
|
497 |
-
"trial_name": null,
|
498 |
-
"trial_params": null
|
499 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|