vsabolcec commited on
Commit
53bccb8
·
0 Parent(s):

Super-squash branch 'main' using huggingface_hub

Browse files
Files changed (3) hide show
  1. .gitattributes +35 -0
  2. README.md +195 -0
  3. model.pt +3 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - eng
5
+ - deu
6
+ - fra
7
+ - pol
8
+ - por
9
+ - spa
10
+ - ita
11
+ - cmn
12
+ - nld
13
+ - afr
14
+ - als
15
+ - amh
16
+ - arb
17
+ - ars
18
+ - ary
19
+ - arz
20
+ - asm
21
+ - azj
22
+ - bel
23
+ - ben
24
+ - bew
25
+ - bod
26
+ - bos
27
+ - bul
28
+ - cat
29
+ - ces
30
+ - ckb
31
+ - cym
32
+ - dan
33
+ - div
34
+ - ekk
35
+ - ell
36
+ - epo
37
+ - eus
38
+ - fas
39
+ - fil
40
+ - fin
41
+ - gle
42
+ - glg
43
+ - gmh
44
+ - guj
45
+ - heb
46
+ - hif
47
+ - hin
48
+ - hrv
49
+ - hun
50
+ - hye
51
+ - ind
52
+ - isl
53
+ - jpn
54
+ - kan
55
+ - kat
56
+ - kaz
57
+ - khk
58
+ - khm
59
+ - kir
60
+ - kmr
61
+ - kor
62
+ - lao
63
+ - lat
64
+ - lit
65
+ - ltz
66
+ - lvs
67
+ - mal
68
+ - mar
69
+ - mkd
70
+ - mlt
71
+ - mya
72
+ - nno
73
+ - nob
74
+ - npi
75
+ - nrm
76
+ - ory
77
+ - pan
78
+ - pbt
79
+ - plt
80
+ - ron
81
+ - rus
82
+ - sin
83
+ - slk
84
+ - slv
85
+ - snd
86
+ - som
87
+ - srp
88
+ - srp
89
+ - swe
90
+ - swh
91
+ - tam
92
+ - tat
93
+ - tel
94
+ - tgk
95
+ - tha
96
+ - tur
97
+ - uig
98
+ - ukr
99
+ - urd
100
+ - uzn
101
+ - uzn
102
+ - vie
103
+ - ydd
104
+ - zsm
105
+ ---
106
+
107
+ # FineWeb2-HQ-plus-Classifier
108
+
109
+ This repository contains the model weights of the trained deep learning classifier used to identify high-quality text samples for the [FineWeb2-HQ-plus](https://huggingface.co/datasets/epfml/FineWeb2-HQ-plus) dataset.
110
+
111
+ FineWeb2-HQ-plus is a high-quality, model-filtered, multilingual pretraining dataset derived as a subset [FineWeb2](https://huggingface.co/datasets/HuggingFaceFW/fineweb-2) and an improvement over [FineWeb2-HQ](https://huggingface.co/datasets/epfml/FineWeb2-HQ) covering 100 languages. The classifier uses [XLM-RoBERTa](https://huggingface.co/FacebookAI/xlm-roberta-base) embeddings to score the documents and supports English and additional 100 languages.
112
+
113
+ For more details, see our paper [Toward Cross-Lingual Quality Classifiers for Multilingual Pretraining Data Selection](https://arxiv.org/abs/2604.20549).
114
+
115
+ ## Quickstart
116
+
117
+ Classifier uses a simple architecture that takes mean-pooled XLM-RoBERTa embeddings as input and outputs the score logit.
118
+
119
+ ```python
120
+ import torch
121
+ import torch.nn.functional as F
122
+ from transformers import AutoModel, AutoTokenizer
123
+ import huggingface_hub
124
+
125
+
126
+ class BinaryClassifier(torch.nn.Module):
127
+ def __init__(self, embedding_dim=768, hidden_dim=256):
128
+ super(BinaryClassifier, self).__init__()
129
+ self.classifier = torch.nn.Sequential(
130
+ torch.nn.Linear(embedding_dim, hidden_dim),
131
+ torch.nn.ReLU(),
132
+ torch.nn.Dropout(0.2),
133
+ torch.nn.Linear(hidden_dim, 1),
134
+ )
135
+
136
+ def forward(self, X):
137
+ return self.classifier(X)
138
+
139
+ def to_pt(self, file_name):
140
+ torch.save(self.state_dict(), file_name)
141
+
142
+ @classmethod
143
+ def from_pt(cls, file_name, embedding_dim=768, hidden_dim=256):
144
+ state_dict = torch.load(
145
+ file_name,
146
+ weights_only=True,
147
+ map_location=torch.device("cpu"),
148
+ )
149
+ classifier = BinaryClassifier(
150
+ embedding_dim=embedding_dim,
151
+ hidden_dim=hidden_dim,
152
+ )
153
+ classifier.load_state_dict(state_dict)
154
+ classifier.eval()
155
+ return classifier
156
+
157
+
158
+ if __name__ == "__main__":
159
+ embedding_model_name = "FacebookAI/xlm-roberta-base"
160
+ tokenizer = AutoTokenizer.from_pretrained(embedding_model_name)
161
+ embedding_model = AutoModel.from_pretrained(
162
+ embedding_model_name,
163
+ dtype=torch.bfloat16,
164
+ )
165
+
166
+ classifiers_dir = huggingface_hub.snapshot_download("epfml/FineWeb2-HQ-plus-Classifier")
167
+ classifier_model = BinaryClassifier.from_pt(f"{classifiers_dir}/model.pt")
168
+
169
+ def score_sample(text, classifier_model):
170
+ inputs = tokenizer([text], return_tensors="pt")
171
+ embeddings = embedding_model(**inputs).last_hidden_state.float().mean(1)
172
+ score = F.sigmoid(classifier_model(embeddings)).item()
173
+ return score
174
+
175
+ text_en = "Question: How is bipolar disorder different from unipolar depression or 'regular' depression?\nAnswer: Both bipolar disorder and major depression are typically associated with depressive episodes. So both illnesses are accompanied by depressions. The difference is that in bipolar disorder people also have periods of elevation -- or severe irritability. We call these manic or hypomanic episodes."
176
+ score = score_sample(text_en, classifier_model)
177
+ print(f"{score:0.4f}") # 0.9952
178
+
179
+ text_en = "Custom Wedding Gifts\nPersonalized photo frames, albums & keepsakes. Heirloom quality!\nCustom Engraved Journals\nHandmade in Florence Italy. Dozens of sizes and paper styles!"
180
+ score = score_sample(text_en, classifier_model)
181
+ print(f"{score:0.4f}") # 0.0001
182
+ ```
183
+
184
+ ## Citation information
185
+ ```
186
+ @misc{turki2026crosslingualqualityclassifiersmultilingual,
187
+ title={Toward Cross-Lingual Quality Classifiers for Multilingual Pretraining Data Selection},
188
+ author={Yassine Turki and Vinko Sabolčec and Bettina Messmer and Martin Jaggi},
189
+ year={2026},
190
+ eprint={2604.20549},
191
+ archivePrefix={arXiv},
192
+ primaryClass={cs.CL},
193
+ url={https://arxiv.org/abs/2604.20549},
194
+ }
195
+ ```
model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6187350cc5061af8bb3726ada717e6f1a6fa48be2a4221519d0752390315bfad
3
+ size 791120