/ Модель

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

Контекст
2 048 токенов
Параметры
152 млн
Лицензия
Apache 2.0
Архитектура
modernbert · dense
Базовая модель
CodeModernBERT-Owl
Библиотека
sentence-transformers
Опубликована
3 апр 2025

CodeCloneDetection-ModernBERT-Owl

ЭмбеддингиТекст → embedding6 профессий

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

128скачиваний за 30 дней0лайковвеса обновлены3 апр 2025

Бенчмарки

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

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

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

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

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

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

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

Shuu12121 разработала эту модель SentenceTransformer, дообученную на BigCloneBench для поиска семантически похожих фрагментов кода и обнаружения клонов. Она основана на ModernBERT и преобразует код в плотные векторы размерностью 768; для сравнения векторов используется косинусное сходство, а представление строится с помощью CLS-пулинга.

Модель рассчитана на сравнение пар фрагментов кода, поиск дубликатов и группировку похожего кода. Максимальная длина последовательности составляет 2048 токенов. В README приведены результаты на тестовой выборке BigCloneBench: accuracy 0,9902 и F1 0,9637; эти показатели относятся к указанному набору данных и не гарантируют аналогичное качество на другом коде. Модель распространяется по лицензии Apache-2.0.

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

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

Ограничения

Заявленные метрики получены на BigCloneBench и могут не переноситься на другие языки программирования, наборы данных или реальные репозитории. Максимальная длина входной последовательности — 2048 токенов.

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

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

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

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

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

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

Открыть на Hugging Face

# SentenceTransformer based on Shuu12121/CodeModernBERT-Owl🦉

This model is a SentenceTransformer fine-tuned from Shuu12121/CodeModernBERT-Owl🦉 on the BigCloneBench dataset for code clone detection. It maps code snippets into a 768-dimensional dense vector space for semantic similarity tasks.

🎯 Distinctive Performance and Stability

This model achieves very high accuracy and F1 scores in code clone detection.
One particularly noteworthy characteristic is that changing the similarity threshold has minimal impact on classification performance.
This indicates that the model has learned to clearly separate clones from non-clones, resulting in a stable and reliable similarity score distribution.

ThresholdAccuracyF1 Score
0.50.99000.9633
0.850.99030.9641
0.900.99020.9637
0.950.98870.9579
0.980.98790.9540
  • High Stability: Between thresholds of 0.85 and 0.98, accuracy and F1 scores remain nearly constant.
    (This suggests that code pairs considered clones generally score between 0.9 and 1.0 in cosine similarity.)

  • Reliable in Real-World Applications: Even if the similarity threshold is slightly adjusted for different tasks or environments, the model maintains consistent performance without significant degradation.

📌 Model Overview

  • Architecture: Sentence-BERT (SBERT)
  • Base Model: Shuu12121/CodeModernBERT-Owl
  • Output Dimension: 768
  • Max Sequence Length: 2048 tokens
  • Pooling Method: CLS token pooling
  • Similarity Function: Cosine Similarity

🏋️‍♂️ Training Configuration

  • Loss Function: CosineSimilarityLoss
  • Epochs: 1
  • Batch Size: 32
  • Warmup Steps: 3% of training steps
  • Evaluator: EmbeddingSimilarityEvaluator (on validation)

📊 Evaluation Metrics

MetricScore
Pearson Cosine (Train)0.9481
Accuracy (Test)0.9902
F1 Score (Test)0.9637

📚 Dataset


🧪 How to Use

from sentence_transformers import SentenceTransformer
from torch.nn.functional import cosine_similarity
import torch

# Load the fine-tuned model
model = SentenceTransformer("Shuu12121/CodeCloneDetection-ModernBERT-Owl")

# Two code snippets to compare
code1 = "def add(a, b): return a + b"
code2 = "def sum(x, y): return x + y"

# Encode the code snippets
embeddings = model.encode([code1, code2], convert_to_tensor=True)

# Compute cosine similarity
similarity_score = cosine_similarity(embeddings[0].unsqueeze(0), embeddings[1].unsqueeze(0)).item()

# Print the result
print(f"Cosine Similarity: {similarity_score:.4f}")
if similarity_score >= 0.9:
    print("🟢 These code snippets are considered CLONES.")
else:
    print("🔴 These code snippets are NOT considered clones.")

🧪 How to Test

!pip install -U sentence-transformers datasets

from sentence_transformers import SentenceTransformer
from datasets import load_dataset
import torch
from sklearn.metrics import accuracy_score, f1_score

# --- データセットのロード ---
ds_test = load_dataset("google/code_x_glue_cc_clone_detection_big_clone_bench", split="test")

model = SentenceTransformer("Shuu12121/CodeCloneDetection-ModernBERT-Owl")
model.to("cuda")


test_sentences1 = ds_test["func1"]
test_sentences2 = ds_test["func2"]
test_labels = ds_test["label"]

batch_size = 256  # GPUメモリに合わせて調整

print("Encoding sentences1...")

embeddings1 = model.encode(
    test_sentences1,
    convert_to_tensor=True,
    batch_size=batch_size,
    show_progress_bar=True
)

print("Encoding sentences2...")
embeddings2 = model.encode(
    test_sentences2,
    convert_to_tensor=True,
    batch_size=batch_size,
    show_progress_bar=True
)

print("Calculating cosine scores...")
cosine_scores = torch.nn.functional.cosine_similarity(embeddings1, embeddings2)

# 閾値設定(ここでは0.9を採用)
threshold = 0.9
print(f"Using threshold: {threshold}")
predictions = (cosine_scores > threshold).long().cpu().numpy()

accuracy = accuracy_score(test_labels, predictions)
f1 = f1_score(test_labels, predictions)
print("Test Accuracy:", accuracy)
print("Test F1 Score:", f1)

🛠️ Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 2048}) with model 'ModernBertModel'
  (1): Pooling({
        'word_embedding_dimension': 768,
        'pooling_mode_cls_token': True,
        ...
  })
)

📦 Dependencies

  • Python: 3.11.11
  • sentence-transformers: 4.0.1
  • transformers: 4.50.3
  • torch: 2.6.0+cu124
  • datasets: 3.5.0
  • tokenizers: 0.21.1
  • flash-attn: ✅ Installed

Install Required Libraries

pip install -U sentence-transformers transformers>=4.48.0 flash-attn datasets

🔐 Optional: Authentication

from huggingface_hub import login
login("your_huggingface_token")

import wandb
wandb.login(key="your_wandb_token")

🧾 Citation

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "EMNLP 2019",
    url = "https://arxiv.org/abs/1908.10084"
}

🔓 License

Apache License 2.0

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
ModernBertModel
Ревизия весов
95276fd

0 моделей