mrm8488/codebert-base-finetuned-detect-insecure-code

mrm8488
Clasificación de texto

CodeBERT ajustado para la detección de código inseguro. CodeBERT es un modelo preentrenado bimodal para lenguajes de programación (PL) y lenguaje natural (NL). Aprende representaciones de propósito general que soportan aplicaciones NL-PL descendentes como la búsqueda de código en lenguaje natural, la generación de documentación de código, etc. Se desarrolló CodeBERT con una arquitectura neuronal basada en Transformers y se entrenó con una función de objetivo híbrida que incorpora la tarea de preentrenamiento de detección de reemplazo de tokens, para detectar alternativas plausibles generadas. Esto permite utilizar tanto datos bimodales de pares NL-PL como datos unimodales, donde los primeros proporcionan tokens de entrada para el entrenamiento del modelo mientras que los segundos ayudan a aprender mejores generadores. Evaluamos CodeBERT en dos aplicaciones NL-PL ajustando los parámetros del modelo. Los resultados muestran que CodeBERT alcanza un rendimiento de vanguardia en tareas de búsqueda de código en lenguaje natural y generación de documentación de código. Además, para investigar qué tipo de conocimiento se aprende en CodeBERT, construimos un conjunto de datos para la evaluación de NL-PL y evaluamos en un entorno zero-shot donde los parámetros de los modelos preentrenados están fijos. Los resultados muestran que CodeBERT rinde mejor que los modelos preentrenados anteriores en la evaluación de NL-PL.

Como usar

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("tu código aquí", return_tensors="pt", truncation=True, padding='max_length')
labels = torch.tensor([1]).unsqueeze(0) # Tamaño de lote 1
outputs = model(**inputs, labels=labels)
loss = outputs.loss
logits = outputs.logits
print(np.argmax(logits.detach().numpy()))

Funcionalidades

Modelo preentrenado bimodal para lenguajes de programación y lenguaje natural
Arquitectura basada en Transformers
Función de objetivo híbrida para detección de reemplazo de tokens
Soporte para aplicaciones NL-PL descendentes
Rendimiento de vanguardia en búsqueda de código en lenguaje natural y generación de documentación de código

Casos de uso

Búsqueda de código en lenguaje natural
Generación de documentación de código
Detección de vulnerabilidades en el código
Clasificación binaria de código inseguro