/ Модель

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

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

codesage-small-v2

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

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

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

Бенчмарки

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

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

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

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

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

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

CodeSage Small V2 — открытая модель для работы с исходным кодом, разработанная авторами семейства CodeSage. Это энкодер, дообученный контрастивным обучением на парах описаний и фрагментов кода из The Stack V2; для отбора обучающих данных применялась фильтрация согласованности. Модель предназначена для семантического поиска по коду и задач понимания кода, включая поиск фрагментов по текстовому запросу и поиск похожего кода.

Модель содержит 151 млн параметров по метаданным, использует архитектуру CodeSage и принимает последовательности длиной до 2048 токенов. README указывает, что энкодер извлекает векторы кода размерности 1024 и поддерживает гибкую размерность эмбеддингов благодаря Matryoshka Representation Learning. В обучающих данных представлены C, C#, Go, Java, JavaScript, TypeScript, PHP, Python и Ruby. Репозиторий использует формат PyTorch и библиотеку Transformers.

Модель ориентирована на получение эмбеддингов и семантический поиск, а не на генерацию кода. Лицензия Apache-2.0 разрешает использование на её условиях. Размер энкодера в README указан как 130 млн параметров, тогда как метаданные репозитория приводят 151 млн; фактическое число зависит от того, какие компоненты учитываются. Контекст ограничен 2048 токенами.

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

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

Ограничения

Контекст ограничен 2048 токенами; модель предназначена для векторного представления и поиска, а не для генерации кода. README указывает размер энкодера 130 млн параметров, а метаданные репозитория — 151 млн.

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

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

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

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

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

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

Открыть на Hugging Face

CodeSage-Small-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 (130M 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-small-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-small-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
Ревизия весов
4844c2f

0 моделей