/ Модель

Характеристики

Контекст
1 024 токена
Параметры
151 млн
Архитектура
bert · dense
Базовая модель
starencoder
Библиотека
transformers
Опубликована
23 сен 2024

stack-edu-classifier-sql

Классификация текстаТекст → label3 профессии

Дообученный на SQL-коде классификатор BigCode StarEncoder для оценки образовательной ценности файлов кода.

97скачиваний за 30 дней1лайквеса обновлены19 фев 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

HuggingFaceTB разработала stack-edu-classifier-sql — классификатор для оценки образовательной ценности файлов SQL-кода из набора The Stack v2. Это дообученная на SQL версия BigCode StarEncoder с классификационной головой; обучающие примеры размечены моделью Llama 3.1 70B Instruct. Классификатор использовали для создания набора Stack-Edu, предназначенного для обучения SmolLM2.

Модель принимает SQL-код и относит его к классам по образовательной ценности. Её можно применять для отбора и оценки SQL-файлов в задачах подготовки обучающих данных. Архитектура — BERT-подобная модель для классификации последовательностей; размер — 151 млн параметров, контекст — 1024 токена. В метаданных указан формат safetensors и библиотека Transformers.

Сценарии применения

  • оценка образовательной ценности SQL-файлов
  • отбор SQL-кода для обучающих наборов данных
  • классификация качества SQL-кода

Ограничения

Качество оценки может снижаться на данных, отличающихся от обучающих; окно в 1024 токена может быть недостаточным для длинных файлов. Модель оценивает файлы по отдельности, а разметка зависит от обучающих данных и аннотаций Llama 3.1 70B Instruct; возможно смещение в пользу подробно прокомментированного кода.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

stack-edu-classifier-sql

This is a classifier for scoring the educational value of code files in The Stack v2 dataset, it is a finetuned version of bigcode/starencoder with a classification head on code files annotated by Llama3.1-70B-Instruct. We use this classifier for building Stack-Edu dataset used for training SmolLM2, see paper. Each classifier is trained on one programming language.

How to use in transformers

To load the classifier, use the following code:

from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained(REPO_NAME)
model = AutoModelForSequenceClassification.from_pretrained(REPO_NAME)

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}

Intended uses & limitations

While the classifier performs well in distinguishing high-quality code in its target language (SQL in this case), there are some limitations:

  • Scope: The model's performance might change for other datasets, in particular for out of distribution samples. The classifier's context is 1024 tokens, which might not be sufficient to assess the quality of some long code files.
  • Bias: The model's performance is dependent on the quality and representativeness of the training data and the LLM used for the annotation. Biases in both can affect the classifier's judgments. It might overfit to thoroughly commented code.
  • Context: The classifier evaluates individual code files without considering broader context, which might impact its effectiveness in certain scenarios.

The training and inference code is available on GitHub https://github.com/huggingface/cosmopedia/tree/main/classification

Training procedure

The classifier was trained on 500,000 pairs of code files and their scores from 0 to 5, generated by Llama3.1. The samples were annotated based on their educational quality with 1 being not educational and 5 being highly educational and relevant for teaching programming. You can find the prompt used for building the annotations in the appendix of SmolLM2 paper.

We added a classification head with a single regression output to StarEncoder 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.

It achieves the following results on the evaluation set:

  • Loss: 0.4719
  • Precision: 0.6074
  • Recall: 0.4618
  • F1 Macro: 0.4864
  • Accuracy: 0.5478
  • F1 Binary Minimum3: 0.8854
  • F1 Binary Minimum2: 0.9418

While the macro F1 scores across the 1-5 rating scale are relatively low due to the model's difficulty in distinguishing between higher-rated samples, the classifier performs well for our primary filtering task. When converting to binary classification, using a threshold of 2 achieves the F1 scores ranges between 0.8 and 0.9 for most Stack-Edu classifiers, whereas a threshold of 3 yields F1 scores between 0.5 and 0.8. With the Highest being Python, SQL, C, Rust and the lowest being HTML, TypeScript and C#.

LanguageBefore filtering (B tokens)After filtering (B tokens)MultiPL-E (Original → Filtered)
Python50.621.820.7 → 25.6
C++69.716.016.7 → 24.8
JavaScript45.311.118.2 → 22.4
Java45.642.117.6 → 22.7

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 0.0003
  • train_batch_size: 64
  • eval_batch_size: 256
  • seed: 0
  • distributed_type: multi-GPU
  • num_devices: 2
  • total_train_batch_size: 128
  • total_eval_batch_size: 512
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_steps: 200
  • num_epochs: 20

License

Apache 2.0

Citation

@misc{allal2025smollm2smolgoesbig,
      title={SmolLM2: When Smol Goes Big -- Data-Centric Training of a Small Language Model}, 
      author={Loubna Ben Allal and Anton Lozhkov and Elie Bakouch and Gabriel Martín Blázquez and Guilherme Penedo and Lewis Tunstall and Andrés Marafioti and Hynek Kydlíček and Agustín Piqueres Lajarín and Vaibhav Srivastav and Joshua Lochner and Caleb Fahlgren and Xuan-Son Nguyen and Clémentine Fourrier and Ben Burtenshaw and Hugo Larcher and Haojun Zhao and Cyril Zakka and Mathieu Morlon and Colin Raffel and Leandro von Werra and Thomas Wolf},
      year={2025},
      eprint={2502.02737},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2502.02737}, 
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · text-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
BertForSequenceClassification
Ревизия весов
ac9d873

0 моделей