oddadmix commited on
Commit
fd7a046
·
verified ·
1 Parent(s): 5d22deb

Darija-MSA 10M SFT + card + eval

Browse files
README.md ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - ar
5
+ base_model: oddadmix/Emhotob-10M-v2
6
+ pipeline_tag: text-generation
7
+ library_name: transformers
8
+ tags:
9
+ - translation
10
+ - darija
11
+ - moroccan-arabic
12
+ - msa
13
+ - fusha
14
+ - arabic
15
+ - small-language-model
16
+ - slm
17
+ - tiny-lm
18
+ - chatml
19
+ - scaling-study
20
+ metrics:
21
+ - bleu
22
+ - chrf
23
+ ---
24
+
25
+ # Emhotob-10M-Darija-MSA-v2 — Bidirectional Moroccan Darija ↔ MSA (~10.9M params)
26
+
27
+ A **10.9M-parameter** model that translates **both ways** between **Moroccan Darija (الدارجة المغربية)** and **Modern Standard Arabic (الفصحى)**.
28
+ A single set of weights serves both directions; a direction-specific system prompt selects
29
+ which way to translate.
30
+
31
+ Finetuned from [`oddadmix/Emhotob-10M-v2`](https://huggingface.co/oddadmix/Emhotob-10M-v2), a tiny Llama-architecture
32
+ base (hidden 256, 4 layers, 8 heads, vocab 32000, tied embeddings).
33
+
34
+ > **Scaling study.** This is one rung of a from-scratch Arabic scaling study that runs an
35
+ > identical SFT + eval recipe across bases from 0.5M to 50M parameters to locate where
36
+ > translation *emerges*. On the headline MSA↔Egyptian pair, output is degenerate at ≤1M,
37
+ > becomes real-but-rough at 5M, and usable at 10M+. See the sibling
38
+ > [`oddadmix/50M-Darija-MSA-v1`](https://huggingface.co/oddadmix/50M-Darija-MSA-v1) for the fluent reference.
39
+
40
+ ## Evaluation
41
+
42
+ Deterministic held-out set of **2,961 pairs** (`seed=42`),
43
+ decoded **greedily** (`do_sample=False`, no repetition penalty), scored with sacreBLEU:
44
+
45
+ | Direction | sacreBLEU | chrF |
46
+ |---|---:|---:|
47
+ | **Darija → MSA** | **17.65** | 35.57 |
48
+ | **MSA → Darija** | **26.17** | 35.48 |
49
+
50
+ Saved weights are the best checkpoint by validation loss (`eval_loss = 2.158`). 20 samples
51
+ per direction with references are in [`eval_bidirectional.json`](./eval_bidirectional.json).
52
+
53
+ ### Example translations
54
+
55
+ Real greedy-decoded outputs from the held-out set:
56
+
57
+ **Darija → MSA**
58
+
59
+ | Source | Model output | Reference |
60
+ |---|---|---|
61
+ | لا، عندنا تذاكر يا حبيبة | لا، لدينا تذاكر يا حبيبة. | لا، لدينا تذاكر يا حبيبتي. |
62
+ | غطّا وجهو و بكا | ضعه على الجانب الآخر. | لقد غطى وجهه وبكى. |
63
+
64
+ **MSA → Darija**
65
+
66
+ | Source | Model output | Reference |
67
+ |---|---|---|
68
+ | لا، لدينا تذاكر يا حبيبتي. | لا، عندنا تذاكر يا حبيبتي | لا، عندنا تذاكر يا حبيبة |
69
+ | لقد غطى وجهه وبكى. | راه غطى وجهه واعر | غطّا وجهو و بكا |
70
+
71
+ ## Usage
72
+
73
+ ChatML format. **Pick the system prompt for the direction you want:**
74
+
75
+ ```python
76
+ import torch
77
+ from transformers import AutoModelForCausalLM, AutoTokenizer
78
+
79
+ model_id = "oddadmix/Emhotob-10M-Darija-MSA-v2"
80
+ tok = AutoTokenizer.from_pretrained(model_id)
81
+ model = AutoModelForCausalLM.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda").eval()
82
+
83
+ SYSTEM = "أنت مترجم محترف. ترجم النص من الدارجة المغربية إلى اللغة العربية الفصحى."
84
+
85
+ def translate(text, system=SYSTEM):
86
+ prompt = (f"<|im_start|>system\n{system}<|im_end|>\n"
87
+ f"<|im_start|>user\n{text.strip()}<|im_end|>\n<|im_start|>assistant\n")
88
+ ids = tok(prompt, return_tensors="pt", add_special_tokens=False).to(model.device)
89
+ if tok.bos_token_id is not None:
90
+ bos = torch.tensor([[tok.bos_token_id]], device=model.device)
91
+ ids["input_ids"] = torch.cat([bos, ids["input_ids"]], dim=1)
92
+ ids["attention_mask"] = torch.cat([torch.ones_like(bos), ids["attention_mask"]], dim=1)
93
+ out = model.generate(**ids, max_new_tokens=256, do_sample=False,
94
+ eos_token_id=tok.eos_token_id, pad_token_id=tok.pad_token_id)
95
+ return tok.decode(out[0, ids["input_ids"].size(1):], skip_special_tokens=True).strip()
96
+ ```
97
+
98
+ ## Training
99
+
100
+ - **Base model:** `oddadmix/Emhotob-10M-v2` (Llama arch, hidden 256, 4 layers, 8 heads, vocab 32000, tied embeddings;
101
+ **10,947,328 params** after resizing for 2 ChatML tokens)
102
+ - **Dataset:** `oddadmix/darija_english_msa_parallel_dataset`
103
+ - **Method:** HuggingFace `Trainer`, ChatML, **prompt-masked cross-entropy** (loss only on the
104
+ assistant turn). Each row is exploded into **two** training examples (one per direction).
105
+ - **Hyperparameters:** 3 epochs · effective batch 64 · LR 3e-4 (cosine, 5% warmup) ·
106
+ bf16 · max length 1024 · `load_best_model_at_end` on `eval_loss`.
107
+ - **Eval split:** 2,961 deterministic held-out pairs (`seed=42`), scored both directions.
108
+
109
+ ## Limitations
110
+
111
+ A ~10.9M model: reliable on short/common sentences, but drift, repetition, and errors appear
112
+ on long or rare inputs. Gender is disambiguated only from context. For fluent translation use the
113
+ 50M sibling.
114
+
115
+ ## License
116
+
117
+ Apache-2.0, inherited from the base model.
config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "LlamaForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 0,
8
+ "dtype": "bfloat16",
9
+ "eos_token_id": 32001,
10
+ "head_dim": 32,
11
+ "hidden_act": "silu",
12
+ "hidden_size": 256,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 640,
15
+ "max_position_embeddings": 2048,
16
+ "mlp_bias": false,
17
+ "model_type": "llama",
18
+ "num_attention_heads": 8,
19
+ "num_hidden_layers": 4,
20
+ "num_key_value_heads": 4,
21
+ "pad_token_id": 1,
22
+ "pretraining_tp": 1,
23
+ "rms_norm_eps": 1e-06,
24
+ "rope_parameters": {
25
+ "rope_theta": 10000,
26
+ "rope_type": "default"
27
+ },
28
+ "tie_word_embeddings": true,
29
+ "transformers_version": "5.12.1",
30
+ "use_cache": false,
31
+ "vocab_size": 32002
32
+ }
eval_bidirectional.json ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "eval_size": 2961,
3
+ "seed": 42,
4
+ "generation": {
5
+ "do_sample": false,
6
+ "repetition_penalty": 1.0,
7
+ "no_repeat_ngram_size": 0
8
+ },
9
+ "directions": {
10
+ "dar2msa": {
11
+ "bleu": 17.65106577862394,
12
+ "chrf": 35.57484357774217,
13
+ "samples": [
14
+ {
15
+ "source": "لا، عندنا تذاكر يا حبيبة",
16
+ "reference": "لا، لدينا تذاكر يا حبيبتي.",
17
+ "hypothesis": "لا، لدينا تذاكر يا حبيبة."
18
+ },
19
+ {
20
+ "source": "غطّا وجهو و بكا",
21
+ "reference": "لقد غطى وجهه وبكى.",
22
+ "hypothesis": "ضعه على الجانب الآخر."
23
+ },
24
+ {
25
+ "source": "كانتسنّا فيك ت دي هادشي و تستاهلو",
26
+ "reference": "أنا أنتظر منك أن تستحق هذا.",
27
+ "hypothesis": "أنا في انتظارك أن تستمع."
28
+ },
29
+ {
30
+ "source": "\n\nلجدوال ديال الترتيب\n\nشوف حتى \n\n بوطولا 1\n بوطولا 2\n لهيكلة لهرمية د لبوطولات ديال كورة ف لمغريب\n\nعيون لكلام \n\nبوطولا 1\nمقالات فيها مصدر و 3000 بايت",
31
+ "reference": "من أجل فجر الترتيب \n\nابحث حتى \n\nبوتولا 1 \nبوتولا 2 \nمن أجل هيكل الهرم D لبوترا من ديال كورا\n\nعيون الكلمات \n\nبوتولا 1 \nمقالات مع مصدر و 3000 بايت.",
32
+ "hypothesis": "من أجل فجر الترتيب \n\nانظر حتى \n\nبوتولا 1 \nبوتولا 2 \nمن أجل هيكل الهرم D لبوترا من ديال كورا\n\nعيون الكلمات \n\nبوتولا 1 \nمقالات مع مصدر و 3000 بايت"
33
+ },
34
+ {
35
+ "source": "راهوم معشششين هنا و بان ليا قريب يخرجو لفراخ ديالهوم من لبيض",
36
+ "reference": "إنهم يعششون هناك، ويبدو أن الصغار سيفقسون قريبًا.",
37
+ "hypothesis": "إنهم لم يأتوا هنا، ونا قريبون من البيض."
38
+ },
39
+ {
40
+ "source": "أفادت التقارير أنه يوجد في المنطقة حوالي 9400 منزل بدون ماء وحوالي 100 منزل بلا كهرباء.",
41
+ "reference": "تشير التقارير إلى أن حوالي 9400 منزلاً في المنطقة محرومة من المياه، وحوالي 100 منزل محرومة من الكهرباء. النص السابق باللغة الإنجليزية. إليكم ترجمة إلى العربية المغربية:",
42
+ "hypothesis": "نص باللغة الإنجليزية: أفادت التقارير أنه كان هناك في المنطقة حوالي 9400 منزل بدون ماء وحوالي 100 منزل بدون كهرباء.\nما هو النص باللغة العربية المغربية؟"
43
+ },
44
+ {
45
+ "source": "نتحداك تعتارد على هاد الموضوع",
46
+ "reference": "أنا أتحداك أن تعترض على هذا الموضوع.",
47
+ "hypothesis": "أنا أتحداك أن تُظهر هذا الموضوع."
48
+ },
49
+ {
50
+ "source": "walakin hadi awal tsafira ftyyara lia o ana khayfa chwiya",
51
+ "reference": "لكن هذه هي أول رحلة لي على الإطلاق، وأشعر بقليل من الخوف.",
52
+ "hypothesis": "لكن هذه هي المرة الأولى التي أستمتع بها في السن."
53
+ },
54
+ {
55
+ "source": "شرف ليا نعاونك",
56
+ "reference": "سعيد بمساعدتك.",
57
+ "hypothesis": "أشرف على مساعدتي."
58
+ },
59
+ {
60
+ "source": "معرفتش من إمتا كايفكرو فهاد شي",
61
+ "reference": "أنا لا أعرف لماذا يظنون ذلك.",
62
+ "hypothesis": "أنا لا أعرف من أين أنت."
63
+ },
64
+ {
65
+ "source": "سير دير شي حاجة تنافعك",
66
+ "reference": "افعل شيئًا ما سيفيدك.",
67
+ "hypothesis": "اذهب وقم بعمل شيء."
68
+ },
69
+ {
70
+ "source": "وسبحسام",
71
+ "reference": "خمسة وثلاثون دقيقة مضت.",
72
+ "hypothesis": "والساح."
73
+ },
74
+ {
75
+ "source": "هوا كايدحاك بزاف.",
76
+ "reference": "هذا مضحك جدًا.",
77
+ "hypothesis": "إنه يقوم بحالتك."
78
+ },
79
+ {
80
+ "source": "ناسّ كاتعجبهوم شيكاغو",
81
+ "reference": "الناس يحبون شيكاغو.",
82
+ "hypothesis": "الناس يضحكون في شيكاغو."
83
+ },
84
+ {
85
+ "source": "ش† كاينين أختي وماهات",
86
+ "reference": "هناك بعض الأمهات.",
87
+ "hypothesis": "الشيء نفسه هو أختي وماهات."
88
+ },
89
+ {
90
+ "source": "ghadi ykhSona sway3 bach nrj3o mnin jina, f DDlam, o f wsT ga3 had lghiss ...",
91
+ "reference": "سيستغرق الأمر منا ساعات للعودة إلى الطريق الذي جئنا منه، في الظلام، ومن خلال كل هذا الوحل ...",
92
+ "hypothesis": "سيكون لدينا موعد لمناقشة هذا الاجتماع، وأن لدينا اجتماع في أي مكان..."
93
+ },
94
+ {
95
+ "source": "تقدر تعتامد عليا أ الشاف!",
96
+ "reference": "يمكنك الاعتماد عليّ، يا زعيم!",
97
+ "hypothesis": "يمكنك أن تعتامدني يا شيف!"
98
+ },
99
+ {
100
+ "source": "خلينا غير نبقاو ف روكك",
101
+ "reference": "دعنا فقط نبقى متمردين.",
102
+ "hypothesis": "دعنا نذهب إلى روكك."
103
+ },
104
+ {
105
+ "source": "ولا غادي يخاساك تخدام دروج",
106
+ "reference": "وإلا سيتعين عليك استخدام الدرج.",
107
+ "hypothesis": "أو سيتعين عليك أن تعمل في الدرج."
108
+ },
109
+ {
110
+ "source": "شحال ديال لواقت ايخاسنا باش نجاهزو تاجريبا؟",
111
+ "reference": "كم من الوقت يجب أن نستعد للتجربة؟",
112
+ "hypothesis": "كم من الوقت الذي كنا سنذهب فيه إلى هناك؟"
113
+ }
114
+ ]
115
+ },
116
+ "msa2dar": {
117
+ "bleu": 26.172181347188637,
118
+ "chrf": 35.481229427574974,
119
+ "samples": [
120
+ {
121
+ "source": "لا، لدينا تذاكر يا حبيبتي.",
122
+ "reference": "لا، عندنا تذاكر يا حبيبة",
123
+ "hypothesis": "لا، عندنا تذاكر يا حبيبتي"
124
+ },
125
+ {
126
+ "source": "لقد غطى وجهه وبكى.",
127
+ "reference": "غطّا وجهو و بكا",
128
+ "hypothesis": "راه غطى وجهه واعر"
129
+ },
130
+ {
131
+ "source": "أنا أنتظر منك أن تستحق هذا.",
132
+ "reference": "كانتسنّا فيك ت دي هادشي و تستاهلو",
133
+ "hypothesis": "كانتسنّا فيك ت تّست"
134
+ },
135
+ {
136
+ "source": "من أجل فجر الترتيب \n\nابحث حتى \n\nبوتولا 1 \nبوتولا 2 \nمن أجل هيكل الهرم D لبوترا من ديال كورا\n\nعيون الكلمات \n\nبوتولا 1 \nمقالات مع مصدر و 3000 بايت.",
137
+ "reference": "لجدوال ديال الترتيب\n\nشوف حتى \n\n بوطولا 1\n بوطولا 2\n لهيكلة لهرمية د لبوطولات ديال كورة ف لمغريب\n\nعيون لكلام \n\nبوطولا 1\nمقالات فيها مصدر و 3000 بايت",
138
+ "hypothesis": "لجدوال ديال الترتيب\n\nشوف حتى \n\n بوطولا 1\n بوطولا 2\n لهيكلة لهرمية د لبوطولات ديال كورة ف لمغريب\n\nعيون لكلام \n\nبوطولا 1\nمقالات فيها مصدر و 3000 بايت"
139
+ },
140
+ {
141
+ "source": "إنهم يعششون هناك، ويبدو أن الصغار سيفقسون قريبًا.",
142
+ "reference": "راهوم معشششين هنا و بان ليا قريب يخرجو لفراخ ديالهوم من لبيض",
143
+ "hypothesis": "كايعاواش كايعاوني و كايبان ليا و كايبان قريب"
144
+ },
145
+ {
146
+ "source": "تشير التقارير إلى أن حوالي 9400 منزلاً في المنطقة محرومة من المياه، وحوالي 100 منزل محرومة من الكهرباء. النص السابق باللغة الإنجليزية. إليكم ترجمة إلى العربية المغربية:",
147
+ "reference": "أفادت التقارير أنه يوجد في المنطقة حوالي 9400 منزل بدون ماء وحوالي 100 منزل بلا كهرباء.",
148
+ "hypothesis": "البيانات كتقول أن حوالي 9400 منزلا ف المنطقة محرومة من المياه، وحوالي 100 منزل محرومة من الكهرباء."
149
+ },
150
+ {
151
+ "source": "أنا أتحداك أن تعترض على هذا الموضوع.",
152
+ "reference": "نتحداك تعتارد على هاد الموضوع",
153
+ "hypothesis": "نتحداك ت تيحاول تا ندير هاد الموضوع"
154
+ },
155
+ {
156
+ "source": "لكن هذه هي أول رحلة لي على الإطلاق، وأشعر بقليل من الخوف.",
157
+ "reference": "walakin hadi awal tsafira ftyyara lia o ana khayfa chwiya",
158
+ "hypothesis": "والاكين هادا هييا أول رحلة لي فشكل، و كانحاس بشي حاجة"
159
+ },
160
+ {
161
+ "source": "سعيد بمساعدتك.",
162
+ "reference": "شرف ليا نعاونك",
163
+ "hypothesis": "سعيد بشوية ديالك"
164
+ },
165
+ {
166
+ "source": "أنا لا أعرف لماذا يظنون ذلك.",
167
+ "reference": "معرفتش من إمتا كايفكرو فهاد شي",
168
+ "hypothesis": "ماعرفتش علاش كانشوفو علاش"
169
+ },
170
+ {
171
+ "source": "افعل شيئًا ما سيفيدك.",
172
+ "reference": "سير دير شي حاجة تنافعك",
173
+ "hypothesis": "دير شي حاجة غادي تبدا"
174
+ },
175
+ {
176
+ "source": "خمسة وثلاثون دقيقة مضت.",
177
+ "reference": "وسبحسام",
178
+ "hypothesis": "خمسة و خمسة ديال الدقائق"
179
+ },
180
+ {
181
+ "source": "هذا مضحك جدًا.",
182
+ "reference": "هوا كايدحاك بزاف.",
183
+ "hypothesis": "هادشي كايضحك بزاف"
184
+ },
185
+ {
186
+ "source": "الناس يحبون شيكاغو.",
187
+ "reference": "ناسّ كاتعجبهوم شيكاغو",
188
+ "hypothesis": "ناس كايبغيو ياكول"
189
+ },
190
+ {
191
+ "source": "هناك بعض الأمهات.",
192
+ "reference": "ش† كاينين أختي وماهات",
193
+ "hypothesis": "كاين شي موشكيل"
194
+ },
195
+ {
196
+ "source": "سيستغرق الأمر منا ساعات للعودة إلى الطريق الذي جئنا منه، في الظلام، ومن خلال كل هذا الوحل ...",
197
+ "reference": "ghadi ykhSona sway3 bach nrj3o mnin jina, f DDlam, o f wsT ga3 had lghiss ...",
198
+ "hypothesis": "غادي يخصنا نلقاو شي طوموبيلات لي غادي نتاعو، ف ضلام، و من خلال كاع هاد الوحل ..."
199
+ },
200
+ {
201
+ "source": "يمكنك الاعتماد عليّ، يا زعيم!",
202
+ "reference": "تقدر تعتامد عليا أ الشاف!",
203
+ "hypothesis": "تقدر تقاد عليا، انا شويا!"
204
+ },
205
+ {
206
+ "source": "دعنا فقط نبقى متمردين.",
207
+ "reference": "خلينا غير نبقاو ف روكك",
208
+ "hypothesis": "خلينا غير نبقى متمردين"
209
+ },
210
+ {
211
+ "source": "وإلا سيتعين عليك استخدام الدرج.",
212
+ "reference": "ولا غادي يخاساك تخدام دروج",
213
+ "hypothesis": "و لا غادي تحتاج دير دروج"
214
+ },
215
+ {
216
+ "source": "كم من الوقت يجب أن نستعد للتجربة؟",
217
+ "reference": "شحال ديال لواقت ايخاسنا باش نجاهزو تاجريبا؟",
218
+ "hypothesis": "شحال من الوقت خاصنا نستعدو من للتجربة؟"
219
+ }
220
+ ]
221
+ }
222
+ }
223
+ }
generation_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 0,
4
+ "eos_token_id": 32001,
5
+ "output_attentions": false,
6
+ "output_hidden_states": false,
7
+ "pad_token_id": 1,
8
+ "transformers_version": "5.12.1",
9
+ "use_cache": true
10
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4c6cb2eceff8c7eee5db92d43fd93ccf34233dd0aeb893e9fdc526f8c7174907
3
+ size 21898824
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "bos_token": "<s>",
4
+ "eos_token": "<|im_end|>",
5
+ "extra_special_tokens": [
6
+ "<|im_start|>",
7
+ "<|im_end|>"
8
+ ],
9
+ "is_local": false,
10
+ "local_files_only": false,
11
+ "model_max_length": 1000000000000000019884624838656,
12
+ "pad_token": "<pad>",
13
+ "tokenizer_class": "TokenizersBackend",
14
+ "unk_token": "<unk>"
15
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5e82b58b8b5888cdd59f63bedb54b47ac25e2ddd67b3b5d2d290466fdb2ad8f4
3
+ size 4792