/ Модель

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

Контекст
514 токенов
Параметры
152 млн
Архитектура
roberta · dense

codebert-base-finetuned-detect-insecure-code

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

Дообученная CodeBERT классифицирует фрагменты исходного кода как безопасные или потенциально небезопасные.

680скачиваний за 30 дней37лайковвеса обновлены20 мая 2021

Бенчмарки

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

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

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

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

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

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

Модель CodeBERT, дообученная Manuel Romero на наборе CodeXGLUE Defect Detection для бинарного обнаружения потенциально небезопасного исходного кода. Она классифицирует фрагменты кода как небезопасные или безопасные; среди примеров проблем в карточке указаны утечки ресурсов, use-after-free и уязвимости типа DoS.

В основе — архитектура RoBERTa для классификации последовательностей, около 151,8 млн параметров и контекст до 514 токенов. Модель предназначена для проверки кода и исследовательских сценариев анализа уязвимостей; карточка приводит точность 61,05% для RoBERTa на тестовом наборе, что следует учитывать при использовании результатов.

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

  • первичная проверка фрагментов кода на потенциальные уязвимости
  • поиск кода с риском утечек ресурсов
  • выявление возможных ошибок use-after-free
  • фильтрация кода для последующего анализа безопасности

Ограничения

Карточка приводит точность 61,05% на тестовом наборе, поэтому предсказания не следует считать подтверждением наличия или отсутствия уязвимости. Описанная бинарная классификация и примеры данных не гарантируют обнаружение всех типов уязвимостей или поддержку любых языков программирования.

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

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

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

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

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

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

Открыть на Hugging Face

CodeBERT fine-tuned for Insecure Code Detection 💾⛔

codebert-base fine-tuned on CodeXGLUE -- Defect Detection dataset for Insecure Code Detection downstream task.

Details of CodeBERT

We present CodeBERT, a bimodal pre-trained model for programming language (PL) and nat-ural language (NL). CodeBERT learns general-purpose representations that support downstream NL-PL applications such as natural language codesearch, code documentation generation, etc. We develop CodeBERT with Transformer-based neural architecture, and train it with a hybrid objective function that incorporates the pre-training task of replaced token detection, which is to detect plausible alternatives sampled from generators. This enables us to utilize both bimodal data of NL-PL pairs and unimodal data, where the former provides input tokens for model training while the latter helps to learn better generators. We evaluate CodeBERT on two NL-PL applications by fine-tuning model parameters. Results show that CodeBERT achieves state-of-the-art performance on both natural language code search and code documentation generation tasks. Furthermore, to investigate what type of knowledge is learned in CodeBERT, we construct a dataset for NL-PL probing, and evaluate in a zero-shot setting where parameters of pre-trained models are fixed. Results show that CodeBERT performs better than previous pre-trained models on NL-PL probing.

Details of the downstream task (code classification) - Dataset 📚

Given a source code, the task is to identify whether it is an insecure code that may attack software systems, such as resource leaks, use-after-free vulnerabilities and DoS attack. We treat the task as binary classification (0/1), where 1 stands for insecure code and 0 for secure code.

The dataset used comes from the paper Devign: Effective Vulnerability Identification by Learning Comprehensive Program Semantics via Graph Neural Networks. All projects are combined and splitted 80%/10%/10% for training/dev/test.

Data statistics of the dataset are shown in the below table:

#Examples
Train21,854
Dev2,732
Test2,732

Test set metrics 🧾

MethodsACC
BiLSTM59.37
TextCNN60.69
RoBERTa61.05
CodeBERT62.08
Ours65.30

Model in Action 🚀

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import numpy as np
tokenizer = AutoTokenizer.from_pretrained('mrm8488/codebert-base-finetuned-detect-insecure-code')
model = AutoModelForSequenceClassification.from_pretrained('mrm8488/codebert-base-finetuned-detect-insecure-code')

inputs = tokenizer("your code here", return_tensors="pt", truncation=True, padding='max_length')
labels = torch.tensor([1]).unsqueeze(0)  # Batch size 1
outputs = model(**inputs, labels=labels)
loss = outputs.loss
logits = outputs.logits

print(np.argmax(logits.detach().numpy()))

Created by Manuel Romero/@mrm8488 | LinkedIn

Made with ♥ in Spain

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей