/ Модель

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

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

codesage-large

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

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

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

Бенчмарки

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

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

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

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

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

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

CodeSage Large — модель семейства открытых моделей эмбеддингов кода, представленная Dejiao Zhang, Wasi Uddin Ahmad, Ming Tan, Hantian Ding, Ramesh Nallapati, Dan Roth, Xiaofei Ma и Bing Xiang. Это encoder-модель на архитектуре CodeSage с 1,7 млрд параметров; она формирует векторы кода размерности 1024 для задач понимания исходного кода. Модель обучена на данных The Stack и рассчитана на код на C, C#, Go, Java, JavaScript, TypeScript, PHP, Python и Ruby.

Её можно применять для поиска похожих фрагментов кода, семантического поиска по репозиториям, сравнения кода и извлечения признаков для классификации. Контекст составляет 2048 токенов. Доступны веса PyTorch для Transformers, лицензия Apache-2.0. Карточка также упоминает fill-mask и text-classification среди поддерживаемых задач.

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

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

Ограничения

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

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

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

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

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

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

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

Открыть на Hugging Face

CodeSage-Large

Updates

  • [12/2024] We are excited to announce the release of the CodeSage V2 model family with largely improved performance and flexible embedding dimensions! Please check out our models and blogpost for more details.
  • [11/2024] You can now access CodeSage models through SentenceTransformer.

Model description

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

Code Representation Learning At Scale by Dejiao Zhang*, Wasi Uddin Ahmad*, Ming Tan, Hantian Ding, Ramesh Nallapati, Dan Roth, Xiaofei Ma, Bing Xiang (* indicates equal contribution).

Pretraining data

This checkpoint is trained on the Stack data (https://huggingface.co/datasets/bigcode/the-stack-dedup). Supported languages (9 in total) are as follows: c, c-sharp, go, java, javascript, typescript, php, python, ruby.

Training procedure

This checkpoint is first trained on code data via masked language modeling (MLM) and then on bimodal text-code pair data. Please refer to the paper for more details.

How to Use

This checkpoint consists of an encoder (1.3B 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-large"
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", trust_remote_code=True)

BibTeX entry and citation info

@inproceedings{
    zhang2024codesage,
    title={CodeSage: Code Representation Learning At Scale},
    author={Dejiao Zhang* and Wasi 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
Ревизия весов
d672216

0 моделей