/ Модель

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

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

codesage-large-v2

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

CodeSage Large V2 — encoder-модель для создания эмбеддингов и семантического поиска по исходному коду.

1 710скачиваний за 30 дней15лайковвеса обновлены28 дек 2024

Бенчмарки

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

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

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

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

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

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

CodeSage Large V2 — открытая модель для представления и поиска по исходному коду, разработанная авторами семейства CodeSage. Это encoder-модель на 1,7 млрд параметров с контекстом до 2048 токенов; она формирует векторные представления кода и предназначена для задач понимания кода, включая семантический поиск кода по коду и по текстовому описанию. V2 дообучена контрастивным обучением на парах описаний и тел функций и классов из The Stack V2; данные прошли фильтрацию согласованности. Поддерживаются девять языков программирования: C, C#, Go, Java, JavaScript, TypeScript, PHP, Python и Ruby. Архитектура допускает гибкий размер эмбеддингов благодаря Matryoshka Representation Learning.

Модель подходит для поиска похожих фрагментов кода и подбора кода по запросу на естественном языке. Метаданные каталога также указывают задачи fill-mask и text-classification, но карточка описывает прежде всего извлечение эмбеддингов и семантический поиск. Веса доступны в формате PyTorch, библиотека — Transformers. Лицензия — Apache-2.0.

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

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

Ограничения

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

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

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

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

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

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

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

Открыть на Hugging Face

CodeSage-Large-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 (1.3B model), which can be used to extract code embeddings of 2048 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-large-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-large-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
Ревизия весов
6e5d6dc

0 моделей