/ Модель

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

Контекст
2 048 токенов
Параметры
453 млн
Лицензия
Apache 2.0
Библиотека
transformers
Опубликована
2 дек 2024

codesage-base-v2

Заполнение пропусковТекст → текст5 профессий

CodeSage V2 — энкодер, создающий эмбеддинги кода для семантического поиска по исходникам и поиска фрагментов кода по текстовому запросу.

883скачиваний за 30 дней3лайкавеса обновлены28 дек 2024

Бенчмарки

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

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

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

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

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

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

CodeSage V2 — открытая модель для представления исходного кода в виде эмбеддингов, разработанная авторами семейства CodeSage. Это энкодер на 453 млн параметров с контекстом до 2048 токенов; карточка описывает извлечение 1024-мерных эмбеддингов. Модель дообучена контрастивным обучением на парах описаний и фрагментов кода из The Stack V2 с фильтрацией данных, а её предварительно обученная основа использовала masked language modeling и деобфускацию.

Модель предназначена для семантического поиска по коду и поиска кода по текстовому запросу, а также для других задач понимания исходного кода. Поддерживаются C, C#, Go, Java, JavaScript, TypeScript, PHP, Python и Ruby. Код доступен как текстовый вход, результат — векторные представления; используется через Transformers или SentenceTransformer.

Модель распространяется по лицензии Apache-2.0. Карточка приводит отдельный размер энкодера 356 млн параметров, тогда как метаданные репозитория указывают 453 млн параметров.

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

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

Ограничения

Модель ориентирована на код и заявленные языки программирования; README не описывает её как универсальную модель для генерации кода. В README размер энкодера указан как 356 млн параметров, а метаданные репозитория — 453 млн.

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

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

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

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

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

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

Открыть на Hugging Face

CodeSage-Base-v2

Updates

    1. We are excited to announce the release of the CodeSage V2 model family with largely improved performance! Please check out our blogpost for more details.
    1. In addition to retrieval performance boost, V2 models also support flexible embedding sizes (thanks to Matryoshka Representation Learning (MRL)).
    1. You can access CodeSage v2 models through both HF and SentenceTransformer.

Model description

CodeSage is a family of open code embedding models with an encoder architecture that supports a wide range of source code understanding tasks. It was initially introduced in the paper:

Code Representation Learning At Scale by Dejiao Zhang*, Wasi Uddin Ahmad*, et al.

For this V2 model, we enhanced semantic search performance by improving the quality of the contrastive learning data through consistency filtering. Starting from the pretrained checkpoint (trained with both Masked Language Modeling (MLM) and deobfuscation Section 3.1) from our V1 model training (Zhang et al., 2023), we applied contrastive learning with the filtered data. Unlike the V1 model, we extracted the initial set of (text, code) pairs—specifically, summaries and function/class bodies—from The Stack V2 data instead of using the V1 data. We employed simple rule-based filtering as detailed in our previous work. We then applied consistency filtering to further refine the data. While using The Stack V2 resulted in minor performance boosts on downstream tasks, the majority of the performance improvements came from the consistency filtering.

Model Performance

1.Code2Code Search

Model Name# ParamsEmbd DimPythonJavaJSTSC#CRubyPhPGOAVG
OpenAI-Code-01NA307221.928.904.905.703.1511.5826.2516.609.4012.04
OpenAI-Ada-002NA153635.9125.1319.0121.8610.1729.1540.8540.4723.4327.33
OpenAI-Text-3-SmallNA153625.1812.618.009.445.4615.8630.7023.3311.2015.57
OpenAI-Text-3-LargeNA307240.5725.3320.0922.0011.8431.9042.5441.8421.7528.65
CodeSage-Small130M102436.3123.9726.6029.9011.8422.8429.0634.6419.5626.08
CodeSage-Base356M102447.5222.8428.7031.9513.3730.9944.8651.1325.1532.95
CodeSage-Large1.3B204846.7033.1337.1641.1816.8132.8954.1252.1332.4838.51
CodeSage-v2-Small130M102445.6033.6539.9647.7819.1930.5540.1255.3930.9638.13
CodeSage-v2-Base356M102455.8642.8945.2954.5823.9038.5256.0264.5642.8847.17
CodeSage-v2-Large1.3B204861.1147.0951.1860.6728.0443.4060.7467.8743.8651.55

2. NL2Code Search

Model Name# ParamsCoSQAAdvTestPythonJavaJSPhPGORubyAvg
OpenAI-Code-01NA52.2036.0363.1367.8562.3057.4785.2269.2861.69
OpenAI-Ada-002NA44.2338.0868.0271.4967.5060.6285.6374.2063.72
OpenAI-Text-3-SmallNA52.4834.1062.6265.8760.2854.8581.9667.5759.97
OpenAI-Text-3-LargeNA55.2146.8370.8172.8968.1259.5887.6075.2267.03
CodeSage-Small130M49.9341.0564.2663.1959.8754.6577.6063.1859.22
CodeSage-Base356M48.5048.8767.8168.0066.8758.1383.1768.0063.67
CodeSage-Large1.3B47.4952.3570.6470.2069.5461.3183.6071.8865.88
CodeSage-v2-Small130M52.3947.2868.7968.1365.7760.2080.2672.4664.41
CodeSage-v2-Base356M50.7452.0070.4670.8969.6162.8182.3773.7166.57
CodeSage-v2-Large1.3B53.1856.3174.1872.3372.4965.2684.6776.6169.38

Training Data

This pretrained checkpoint is the same as those used by our V1 model (codesage/codesage-small, which is trained on The Stack data. The constative learning data are extracted from The Stack V2. Same as our V1 model, we supported nine languages as follows: c, c-sharp, go, java, javascript, typescript, php, python, ruby.

How to Use

This checkpoint consists of an encoder (356M model), which can be used to extract code embeddings of 1024 dimension.

  1. Accessing CodeSage via HuggingFace: it can be easily loaded using the AutoModel functionality and employs the Starcoder Tokenizer.
from transformers import AutoModel, AutoTokenizer

checkpoint = "codesage/codesage-base-v2"
device = "cuda"  # for GPU usage or "cpu" for CPU usage

# Note: CodeSage requires adding eos token at the end of each tokenized sequence 

tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True, add_eos_token=True)

model = AutoModel.from_pretrained(checkpoint, trust_remote_code=True).to(device)

inputs = tokenizer.encode("def print_hello_world():\tprint('Hello World!')", return_tensors="pt").to(device)
embedding = model(inputs)[0]
  1. Accessing CodeSage via SentenceTransformer
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("codesage/codesage-base-v2", trust_remote_code=True)

BibTeX entry and citation info

@inproceedings{
    zhang2024code,
    title={{CODE} {REPRESENTATION} {LEARNING} {AT} {SCALE}},
    author={Dejiao Zhang and Wasi Uddin Ahmad and Ming Tan and Hantian Ding and Ramesh Nallapati and Dan Roth and Xiaofei Ma and Bing Xiang},
    booktitle={The Twelfth International Conference on Learning Representations},
    year={2024},
    url={https://openreview.net/forum?id=vfzRRjumpX}
}

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

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

GPU в ailist

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

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
CodeSage
Ревизия весов
92eac4f

0 моделей