/ Модель

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

Контекст
514 токенов
Параметры
96,6 млн
Лицензия
WTFPL
Архитектура
roberta · dense
Базовая модель
CodeBERTa-small-v1
Библиотека
transformers
Опубликована
5 янв 2024

programming-language-identification

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

Классификатор определяет язык программирования по фрагменту исходного кода и поддерживает 25 языков.

8 596скачиваний за 30 дней14лайковвеса обновлены2 фев 2024

Бенчмарки

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

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

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

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

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

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

Модель philomath-1209/programming-language-identification разработана автором репозитория и дообучена на базе huggingface/CodeBERTa-small-v1 на наборе cakiki/rosetta-code. Это классификатор кода на архитектуре RoBERTa с 96,6 млн параметров и контекстом до 514 токенов. Модель определяет язык программирования по фрагменту исходного кода; в карточке перечислены 25 языков, включая Python, Java, C++, JavaScript, Rust и Fortran.

Модель подходит для автоматической маркировки файлов и фрагментов кода, сортировки коллекций исходников и предварительного определения языка перед запуском специализированных инструментов. Репозиторий содержит веса Safetensors и формат ONNX для инференса через Transformers или Optimum. Лицензия — WTFPL.

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

  • определение языка программирования по фрагменту кода
  • автоматическая маркировка исходных файлов
  • сортировка коллекции кода по языкам
  • выбор парсера или инструмента анализа по языку кода

Ограничения

Модель обучена на примерах из набора Rosetta Code; качество на других источниках и коротких либо смешанных фрагментах в карточке не оценено. Контекст ограничен 514 токенами.

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

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

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

Также подходит для

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

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

Открыть на Hugging Face

This Model is a fine-tuned version of huggingface/CodeBERTa-small-v1 on cakiki/rosetta-code Dataset for 26 Programming Languages as mentioned below.

Training Details:

Model is trained for 25 epochs on Azure for nearly 26000 Datapoints for above Mentioned 26 Programming Languages extracted from Dataset having 1006 of total Programming Language.

Programming Languages this model is able to detect vs Examples used for training

Below is the Training Result for 25 epochs.

image/png

training detail.png

Inference Code

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TextClassificationPipeline
model_name = 'philomath-1209/programming-language-identification'
loaded_tokenizer = AutoTokenizer.from_pretrained(model_name)
loaded_model = AutoModelForSequenceClassification.from_pretrained(model_name)


device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
text = """
PROGRAM Triangle
   IMPLICIT NONE
   REAL :: a, b, c, Area
   PRINT *, 'Welcome, please enter the&
            &lengths of the 3 sides.'
   READ *, a, b, c
   PRINT *, 'Triangle''s area:  ', Area(a,b,c)
  END PROGRAM Triangle
  FUNCTION Area(x,y,z)
   IMPLICIT NONE
   REAL :: Area            ! function type
   REAL, INTENT( IN ) :: x, y, z
   REAL :: theta, height
   theta = ACOS((x**2+y**2-z**2)/(2.0*x*y))
   height = x*SIN(theta); Area = 0.5*y*height
  END FUNCTION Area

"""
inputs = loaded_tokenizer(text, return_tensors="pt",truncation=True)
with torch.no_grad():
  logits = loaded_model(**inputs).logits
predicted_class_id = logits.argmax().item()
loaded_model.config.id2label[predicted_class_id]

Optimum with ONNX inference

Loading the model requires the 🤗 Optimum library installed.

pip install transformers optimum[onnxruntime] optimum
model_path = "philomath-1209/programming-language-identification"
import torch
from transformers import pipeline, AutoTokenizer
from optimum.onnxruntime import ORTModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained(model_path, subfolder="onnx")
model = ORTModelForSequenceClassification.from_pretrained(model_path, export=False, subfolder="onnx")

text = """
  PROGRAM Triangle
     IMPLICIT NONE
     REAL :: a, b, c, Area
     PRINT *, 'Welcome, please enter the&
              &lengths of the 3 sides.'
     READ *, a, b, c
     PRINT *, 'Triangle''s area:  ', Area(a,b,c)
    END PROGRAM Triangle
    FUNCTION Area(x,y,z)
     IMPLICIT NONE
     REAL :: Area            ! function type
     REAL, INTENT( IN ) :: x, y, z
     REAL :: theta, height
     theta = ACOS((x**2+y**2-z**2)/(2.0*x*y))
     height = x*SIN(theta); Area = 0.5*y*height
    END FUNCTION Area

"""
inputs = tokenizer(text, return_tensors="pt",truncation=True)
with torch.no_grad():
    logits = model(**inputs).logits
predicted_class_id = logits.argmax().item()
model.config.id2label[predicted_class_id]

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
RobertaForSequenceClassification
Ревизия весов
9090d38

0 моделей