Downloads · 30 days
96
0% of all-time downloads
kenhktsui/llm-data-textbook-quality-fasttext-classifier-v2
llm-data-textbook-quality-fasttext-classifier-v2 is a text classification model from kenhktsui. Use it when you need a label for a piece of text. It is set up for fasttext. The card lists the license as mit.
Downloads · 30 days
96
0% of all-time downloads
All-time downloads
130K
Public
Repo size
9.8 GB
Likes
29
Public
Click a slice to open those files.
.bin9.8 GB · 100%
From the Hugging Face model README
2024-07-07: quantized model "model_quantized.bin" is released.
model = fasttext.load_model(hf_hub_download("kenhktsui/llm-data-textbook-quality-fasttext-classifer-v2", "model_quantized.bin"))

📚 The educational value classifier can classify if a text from web has high educational value (more explicitly defined then textbook quality). It is deeply inspired by Textbooks Are All You Need, where a classifier was developed to predict the educational value of data, and was then used for data filtering.
The model is trained on web/ raw text, not on data formatted as instruction dataset (yet).
It can be used as a filter for pretraining data curation when training a LLM 🤖.
There are 3 labels instead of 2 labels, as it offers higher granularity of educational value.
A detailed report/ paper will follow when more downstream experiments of this classifier become available.
About the validation of this classifier. See Analysis.
The classifier had been applied to various pretraining dataset. See Benchmark
⚡ Model is built on fasttext - it can classify more than 2000 examples per second in CPU, and so it can be used on-the-fly during pretraining.
Please note textbook quality is a subset of high quality.
Please give a like and leave a comment if you find this model helpful. I am in a continual journey to make LLM data curation better and easier.
Educational value is [0, 2]. Detailed formula is explained below.
predict_educational_value(['''Logic is the study of correct reasoning. It includes both formal and informal logic. Formal logic is the study of deductively valid inferences or logical truths. It examines how conclusions follow from premises due to the structure of arguments alone, independent of their topic and content. Informal logic is associated with informal fallacies, critical thinking, and argumentation theory. It examines arguments expressed in natural language while formal logic uses formal language. When used as a countable noun, the term "a logic" refers to a logical formal system that articulates a proof system. Logic plays a central role in many fields, such as philosophy, mathematics, computer science, and linguistics.'''])
# Output [1.9266871362924576]
predict_educational_value(['''"Attention Is All You Need" is a landmark[1][2] 2017 research paper authored by eight scientists working at Google, responsible for expanding 2014 attention mechanisms proposed by Bahdanau et al. into a new deep learning architecture known as the transformer. The paper is considered by some to be a founding document for modern artificial intelligence, as transformers became the main architecture of large language models.[3][4] At the time, the focus of the research was on improving Seq2seq techniques for machine translation, but even in their paper the authors saw the potential for other tasks like question answering and for what is now called multimodal Generative AI.[5]'''])
# Output [1.8226698189973831]
predict_educational_value(['''A large language model (LLM) is a computational model notable for its ability to achieve general-purpose language generation and other natural language processing tasks such as classification. Based on language models, LLMs acquire these abilities by learning statistical relationships from text documents during a computationally intensive self-supervised and semi-supervised training process.[1] LLMs can be used for text generation, a form of generative AI, by taking an input text and repeatedly predicting the next token or word.[2]'''])
# Output [1.7609568238258362]
predict_educational_value(['''In Vapnik–Chervonenkis theory, the Vapnik–Chervonenkis (VC) dimension is a measure of the size (capacity, complexity, expressive power, richness, or flexibility) of a class of sets. The notion can be extended to classes of binary functions. It is defined as the cardinality of the largest set of points that the algorithm can shatter, which means the algorithm can always learn a perfect classifier for any labeling of at least one configuration of those data points. It was originally defined by Vladimir Vapnik and Alexey Chervonenkis.[1]'''])
# Output [1.589950144290924]
predict_educational_value(['''The query vector is compared (via dot product) with each word in the keys. This helps the model discover the most relevant word for the query word. In this case "girl" was determined to be the most relevant word for "that". The result (size 4 in this case) is run through the softmax function, producing a vector of size 4 with probabilities summing to 1. Multiplying this against the value matrix effectively amplifies the signal for the most important words in the sentence and diminishes the signal for less important words.[5] The structure of the input data is captured in the Wq and Wk weights, and the Wv weights express that structure in terms of more meaningful features for the task being trained for. For this reason, the attention head components are called Query (Wq), Key (Wk), and Value (Wv)—a loose and possibly misleading analogy with relational database systems.'''])
# Output [1.4657384157180786]
predict_educational_value(['''The Arsenal Football Club (commonly known as simply Arsenal) is an English professional football club based in Holloway, North London. Arsenal compete in the Premier League, the top flight of English football. In domestic football, Arsenal has won 13 league titles (including one unbeaten title), a record 14 FA Cups, two League Cups, 17 FA Community Shields, and a Football League Centenary Trophy. In European football, they have one European Cup Winners' Cup and one Inter-Cities Fairs Cup. In terms of trophies won, it is the third-most successful club in English football.[2]'''])
# Output [1.1015518307685852]
predict_educational_value(['''The 2003–04 season was Arsenal Football Club's 12th season in the Premier League and their 78th consecutive season in the top flight of English football.[3][4] It began on 1 July 2003 and concluded on 30 June 2004, with competitive matches played between August and May. The club ended the Premier League campaign as champions without a single defeat – a record of 26 wins and 12 draws. Arsenal fared less well in the cups, eliminated in the FA Cup and League Cup semi-finals to Manchester United and Middlesbrough respectively, and at the quarter-final stage of the UEFA Champions League to Chelsea.'''])
# Output [1.0146622359752655]
predict_educational_value(['''As both teams' first-choice kits featured a shade of red, Arsenal wore their yellow away strip, while Barcelona wore their traditional blue and maroon striped kit. Arsenal won the coin toss and Barcelona kicked off.[21] Barcelona almost immediately came under pressure when Thierry Henry shot straight at Barcelona goalkeeper Víctor Valdés, who conceded a corner. From the resulting corner Arsenal had another chance again courtesy of Henry, whose shot was again saved by Valdés. The next attack in the seventh minute resulted in Arsenal goalkeeper Jens Lehmann saving from Ludovic Giuly after he shot from a narrow angle. Four minutes later Barcelona were awarded a free-kick 35 yards from goal; Ronaldinho shot wide of the goal.'''])
# Output [0.7897453680634499]
From inspection, it can be noted that the model does like scientific knowledge. It is also interested in Arsenal as a football club, however, it does not think a summary of a particular match has good educational value.
from typing import List
import re
from huggingface_hub import hf_hub_download
import fasttext
model = fasttext.load_model(hf_hub_download("kenhktsui/llm-data-textbook-quality-fasttext-classifer-v2", "model.bin"))
def replace_newlines(text: str) -> str:
return re.sub("\n+", " ", text)
score_dict = {
'__label__': 0,
'__label__Low': 0,
'__label__Mid': 1,
'__label__High': 2
}
def predict_educational_value(text_list):
text_list = [replace_newlines(text) for text in text_list]
pred = model.predict(text_list, k=-1)
score_list = []
for l, s in zip(*pred):
score = 0
for _l, _s in zip(l, s):
score += score_dict[_l] * _s
score_list.append(float(score))
return score_list
predict_educational_value(["Hi"])
# Output: [3.0000010156072676e-05]
To make sure this classifier makes sense, it is applied to various datasets.
Educational Value = 2 point * P(High) + 1 point * P(Mid) + 0 point * P(Low)
The score can be roughly interpreted as:
| Educational Value | Category |
|---|---|
| 2 | High |
| 1 | Mid |
| 0 | Low |
The classifier aligns with the expectation.
Some instruction datasets are added for curiosity sake although model is not trained on instruction data. There are two possible interpretations:
The expectation is that the model trained with filter will outperform model trained without the filter.
Fineweb is filtered on the fly with Educational Value >= 1.0.
Test 1:
Model params: 192M
Training token: 3.1B training token, 6000 global steps
| Task | Training on FineWeb With Filtering | Training on FineWeb Without Filtering | Training with Cosmopedia |
|---|---|---|---|
| arc-easy | 37.37 | 34.97 | 37.45 |
| arc-challenge | 23.55 | 22.95 | 23.21 |
| Hellaswag | 28.02 | 27.92 | 27.78 |
| MMLU | 24.71 | 23.94 | 24.65 |
| TruthfulQA | 45.88 | 45.20 | 45.97 |
| Winogrande | 49.49 | 50.59 | 50.67 |
The reasoning and commensense reasoning seems to be better when filter is on, aligning with expectation. It is also close to Cosmopedia.
MMLU is better also; however it is close to random due to limitation in compute (both training time and model size).
Model of larger size will be trained to further validate this claim.
(To be updated with a larger model soon)
The expectation is that most educational value comes from website of universities/ schools, research institutes and organisations.
Since HuggingFaceFW/fineweb contains the url of website crawled, the average educational value of each domain name is calculated.
The first 10M records have been analysed. Full file in here.
Below is the top 100 domain names, with no of record >= 100.

Spearman rank-order correlation coefficient between Educational Value and that of test data is 0.7055, indicating a strong monotonic relationship. The Educational Value can be used for ranking.

@misc{ktsui2024cpueduvalue,
title={Low Latency CPU Based Educational Value Classifier With Generic Educational Value},
author={Ken Tsui and Huu Nguyen},
year={2024},
}