/ Модель

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

Контекст
512 токенов
Параметры
434 млн
Лицензия
MIT
Архитектура
bert · dense
Библиотека
sentence-transformers
Опубликована
3 мая 2024

UAE-Code-Large-V1

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

Англоязычная BERT-модель эмбеддингов для поиска сходства между кодом и GitHub issues.

129скачиваний за 30 дней13лайковвеса обновлены3 мая 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WhereIsAI/UAE-Code-Large-V1 — модель эмбеддингов на архитектуре BERT, разработанная WhereIsAI. Она дообучена на наборе GIS: Github Issue Similarity с функцией потерь AnglE и предназначена для сравнения сходства кода и описаний GitHub issues. Модель выдаёт векторные представления текста и подходит для поиска похожих задач и обращений по коду.

Модель содержит 433,9 млн параметров, принимает текст с контекстом до 512 токенов и рассчитана прежде всего на английский язык. В README приведены результаты на тестовом наборе: корреляция Спирмена 71,19 и точность 84,37. Доступна в формате safetensors и совместима с библиотеками sentence-transformers и angle-emb. Лицензия MIT разрешает использование в любых сценариях.

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

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

Ограничения

Контекст ограничен 512 токенами; опубликованные метрики относятся к тестовому набору GIS: Github Issue Similarity и не гарантируют такие же результаты на других данных.

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

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

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

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

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

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

Открыть на Hugging Face

WhereIsAI/UAE-Code-Large-V1

📢 WhereIsAI/UAE-Code-Large-V1 is licensed under MIT. Feel free to use it in any scenario. If you use it for academic papers, we would greatly appreciate it if you could cite us. 👉 citation info.

This model builds upon WhereIsAI/UAE-Large-V1 and is fine-tuned on the GIS: Github Issue Similarity dataset using AnglE loss (https://arxiv.org/abs/2309.12871). It can be used to measure code/issue similarity.

Results (test set):

  • Spearman correlation: 71.19
  • Accuracy: 84.37

Usage

1. angle-emb

You can use it via angle-emb as follows:

install:

python -m pip install -U angle-emb

example:

from scipy import spatial
from angle_emb import AnglE

model = AnglE.from_pretrained('WhereIsAI/UAE-Code-Large-V1').cuda()

quick_sort = '''# Approach 2: Quicksort using list comprehension

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        left = [x for x in arr[1:] if x < pivot]
        right = [x for x in arr[1:] if x >= pivot]
        return quicksort(left) + [pivot] + quicksort(right)
 
# Example usage
arr = [1, 7, 4, 1, 10, 9, -2]
sorted_arr = quicksort(arr)
print("Sorted Array in Ascending Order:")
print(sorted_arr)'''


bubble_sort = '''def bubblesort(elements):
    # Looping from size of array from last index[-1] to index [0]
    for n in range(len(elements)-1, 0, -1):
        swapped = False
        for i in range(n):
            if elements[i] > elements[i + 1]:
                swapped = True
                # swapping data if the element is less than next element in the array
                elements[i], elements[i + 1] = elements[i + 1], elements[i]
        if not swapped:
            # exiting the function if we didn't make a single swap
            # meaning that the array is already sorted.
            return

elements = [39, 12, 18, 85, 72, 10, 2, 18]

print("Unsorted list is,")
print(elements)
bubblesort(elements)
print("Sorted Array is, ")
print(elements)'''

vecs = model.encode([
    'def echo(): print("hello world")',
    quick_sort,
    bubble_sort
])


print('cos sim (0, 1):', 1 - spatial.distance.cosine(vecs[0], vecs[1]))
print('cos sim (0, 2)', 1 - spatial.distance.cosine(vecs[0], vecs[2]))
print('cos sim (1, 2):', 1 - spatial.distance.cosine(vecs[1], vecs[2]))

output:

cos sim (0, 1): 0.34329649806022644
cos sim (0, 2) 0.3627094626426697
cos sim (1, 2): 0.6972219347953796

sentence-transformers

You can also use it via sentence-transformers

from scipy import spatial
from sentence_transformers import SentenceTransformer

model = SentenceTransformer('WhereIsAI/UAE-Code-Large-V1').cuda()

quick_sort = '''# Approach 2: Quicksort using list comprehension

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        left = [x for x in arr[1:] if x < pivot]
        right = [x for x in arr[1:] if x >= pivot]
        return quicksort(left) + [pivot] + quicksort(right)
 
# Example usage
arr = [1, 7, 4, 1, 10, 9, -2]
sorted_arr = quicksort(arr)
print("Sorted Array in Ascending Order:")
print(sorted_arr)'''


bubble_sort = '''def bubblesort(elements):
    # Looping from size of array from last index[-1] to index [0]
    for n in range(len(elements)-1, 0, -1):
        swapped = False
        for i in range(n):
            if elements[i] > elements[i + 1]:
                swapped = True
                # swapping data if the element is less than next element in the array
                elements[i], elements[i + 1] = elements[i + 1], elements[i]
        if not swapped:
            # exiting the function if we didn't make a single swap
            # meaning that the array is already sorted.
            return

elements = [39, 12, 18, 85, 72, 10, 2, 18]

print("Unsorted list is,")
print(elements)
bubblesort(elements)
print("Sorted Array is, ")
print(elements)'''

vecs = model.encode([
    'def echo(): print("hello world")',
    quick_sort,
    bubble_sort
])


print('cos sim (0, 1):', 1 - spatial.distance.cosine(vecs[0], vecs[1]))
print('cos sim (0, 2)', 1 - spatial.distance.cosine(vecs[0], vecs[2]))
print('cos sim (1, 2):', 1 - spatial.distance.cosine(vecs[1], vecs[2]))

output:

cos sim (0, 1): 0.34329649806022644
cos sim (0, 2) 0.3627094626426697
cos sim (1, 2): 0.6972219347953796

Citation

@article{li2023angle,
  title={AnglE-optimized Text Embeddings},
  author={Li, Xianming and Li, Jing},
  journal={arXiv preprint arXiv:2309.12871},
  year={2023}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
BertModel
Ревизия весов
c601ffc

0 моделей