This model is a fine-tuned version of Snowflake/snowflake-arctic-embed-m on a dataset of Python files labeled by Llama3 for educational value. We used this classifier to build the Python-Edu dataset.
To load the Python-Edu classifier, use the following code:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/python-edu-scorer")
model = AutoModelForSequenceClassification.from_pretrained("HuggingFaceTB/python-edu-scorer")
text = "This is a test sentence."
inputs = tokenizer(text, return_tensors="pt", padding="longest", truncation=True)
outputs = model(**inputs)
logits = outputs.logits.squeeze(-1).float().detach().numpy()
score = logits.item()
result = {
"text": text,
"score": score,
"int_score": int(round(max(0, min(score, 5)))),
}
print(result)
# {'text': 'This is a test sentence.', 'score': 0.07964489609003067, 'int_score': 0}
While the Python-Edu classifier performs well in distinguishing high-quality python code, there are some limitations:
The training and inference code is available on GitHub https://github.com/huggingface/cosmopedia/tree/main/classification
The classifier was trained on 450,000 pairs of python code files and their scores from 1 to 5, generated by Llama3. The samples were annotated based on their educational quality with 1 being not educational and 5 being highly educational.
We added a classification head with a single regression output to Snowflake-arctic-embed and trained the model for 20 epochs with a learning rate of 3e-4. During training, the embedding and encoder layers were frozen to focus on the classification head.
The following hyperparameters were used during training:
precision recall f1-score support
1 0.84 0.46 0.59 8364
2 0.61 0.76 0.68 19605
3 0.60 0.62 0.61 16187
4 0.72 0.50 0.59 4872
5 0.38 0.08 0.13 118
accuracy 0.64 49146
macro avg 0.63 0.48 0.52 49146
weighted avg 0.66 0.64 0.63 49146
final/model.safetensors 438 MBmodel.safetensors 438 MBfinal/training_args.bin 5 kBtraining_args.bin 5 kB