/ Модель

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

Контекст
514 токенов
Параметры
137 млн
Архитектура
mpnet · dense
Базовая модель
all-mpnet-base-v2
Библиотека
sentence-transformers
Опубликована
12 авг 2024

sft-sql-embedding

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

Дообученная на парах SQL-запросов MPNet-модель строит векторы для поиска и сравнения запросов по смыслу.

33 171скачиваний за 30 дней4лайкавеса обновлены12 авг 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

s2593817/sft-sql-embedding — дообученная модель Sentence Transformers на базе sentence-transformers/all-mpnet-base-v2, предназначенная для сравнения и поиска по SQL-запросам. Она кодирует предложения и абзацы в плотные векторы размерности 768; архитектура объединяет MPNet, усреднение токенов и нормализацию. Для оценки сходства используется косинусная близость. Модель содержит 136,7 млн параметров, создана с библиотекой Sentence Transformers и обучалась на 300 000 парах SQL-запросов с оценками сходства с использованием CoSENTLoss.

Модель подходит для семантического поиска SQL-запросов, ранжирования похожих запросов, поиска перефразировок и группировки запросов. Вход — текст; результат — векторное представление, которое можно сравнивать по косинусной близости. Метаданные указывают контекст до 514 токенов, тогда как README сообщает максимальную длину последовательности 384 токена. Язык данных явно не указан; обучающие примеры представлены SQL с англоязычными идентификаторами и ключевыми словами. Лицензия в предоставленных источниках не указана.

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

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

Ограничения

В README максимальная длина последовательности составляет 384 токена, а метаданные каталога приводят контекст 514 токенов. Язык и лицензия в предоставленных источниках не указаны.

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

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

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

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

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

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

Открыть на Hugging Face

SentenceTransformer based on sentence-transformers/all-mpnet-base-v2

This is a sentence-transformers model finetuned from sentence-transformers/all-mpnet-base-v2. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: sentence-transformers/all-mpnet-base-v2
  • Maximum Sequence Length: 384 tokens
  • Output Dimensionality: 768 tokens
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 384, 'do_lower_case': False}) with Transformer model: MPNetModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
  (2): Normalize()
)

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("s2593817/sft-sql-embedding")
# Run inference
sentences = [
    'SELECT alias1.col1 FROM table1 AS alias1 JOIN table2 AS alias2 ON alias1.col2 = alias2.col2 JOIN table3 AS alias3 ON alias2.col3 = alias3.col3 WHERE alias3.col4 = str INTERSECT SELECT alias1.col1 FROM table1 AS alias1 JOIN table2 AS alias2 ON alias1.col2 = alias2.col2 JOIN table3 AS alias3 ON alias2.col3 = alias3.col3 WHERE alias3.col4 = str',
    'SELECT count(col1) FROM table1 WHERE col2 = num',
    'SELECT count(DISTINCT col1) FROM table1',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Training Details

Training Dataset

Unnamed Dataset

  • Size: 300,000 training samples
  • Columns: sentence1, sentence2, and score
  • Approximate statistics based on the first 1000 samples:
    sentence1sentence2score
    typestringstringfloat
    detailsmin: 8 tokensmean: 38.49 tokensmax: 189 tokensmin: 7 tokensmean: 37.44 tokensmax: 153 tokensmin: 0.04mean: 0.36max: 1.0
  • Samples:
    sentence1sentence2score
    SELECT DISTINCT count(DISTINCT alias4.col1) , alias3.col2 FROM table1 AS alias1 JOIN table2 AS alias2 ON alias1.col3 = alias2.col3 JOIN table3 AS alias3 ON alias3.col4 = alias1.col4 JOIN table4 AS alias4 ON alias3.col4 = alias4.col5 WHERE alias2.col6 = str GROUP BY alias3.col2 ORDER BY count(DISTINCT alias4.col1) DESCSELECT count(*) FROM table1 WHERE col1 = str0.14221014492753623
    SELECT DISTINCT count(alias2.col1) FROM table1 AS alias1 JOIN table2 AS alias2 ON alias1.col2 = alias2.col2 WHERE alias1.col3 = strSELECT alias3.col1 FROM table1 AS alias1 JOIN table2 AS alias2 ON alias1.col2 = alias2.col2 JOIN table3 AS alias3 ON alias2.col3 = alias3.col3 WHERE alias1.col4 = str AND alias1.col5 = str0.5468686868686868
    SELECT count(*) FROM table1SELECT count(*) FROM table1 WHERE col1 LIKE str0.6269230769230769
  • Loss: CoSENTLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "pairwise_cos_sim"
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 160
  • learning_rate: 2e-05
  • num_train_epochs: 8
  • warmup_ratio: 0.2
  • fp16: True
  • dataloader_num_workers: 16
  • batch_sampler: no_duplicates

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: no
  • prediction_loss_only: True
  • per_device_train_batch_size: 160
  • per_device_eval_batch_size: 8
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 8
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.2
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: True
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 16
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: False
  • hub_always_push: False
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • dispatch_batches: None
  • split_batches: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional

Training Logs

EpochStepTraining Loss
0.053310012.0379
0.10672009.2042
0.163008.6521
0.21334008.5353
0.26675008.4472
0.326008.4105
0.37337008.3927
0.42678008.3553
0.489008.3326
0.533310008.3168
0.586711008.2941
0.6412006.0021
0.693313005.3802
0.746714005.3282
0.815005.2365
0.853316005.0198
0.906717004.899
0.9618004.8887
1.013319004.7603
1.066720004.6292
1.1221004.4811
1.173322004.2841
1.226723004.2251
1.2824004.0261
1.333325003.8628
1.386726003.8404
1.4427003.6471
1.493328003.6673
1.546729003.5626
1.630003.5391
1.653331003.5629
1.706732003.4787
1.7633003.4401
1.813334003.491
1.866735003.3358
1.9236003.3555
1.973337003.161
2.026738003.1708
2.0839003.1678
2.133340003.1348
2.186741002.9159
2.2442002.8359
2.293343002.8359
2.346744002.796
2.445002.8483
2.453346002.7774
2.506747002.7766
2.5648002.7185
2.613349002.778
2.666750002.7114
2.7251002.6623
2.773352002.5093
2.826753002.4835
2.8854002.2851
2.933355002.1488
2.986756002.2175
3.0457002.0813
3.093358002.1489
3.146759002.1337
3.260002.2258
3.253361002.1601
3.306762001.9266
3.3663001.8427
3.413364001.8434
3.466765001.917
3.5266001.8204
3.573367002.0209
3.626768001.7852
3.6869001.9566
3.733370001.852
3.786771001.8562
3.8472001.7595
3.893373001.4295
3.946774001.2669
4.075001.2029
4.053376001.3074
4.106777001.435
4.1678001.5712
4.213379001.2366
4.266780001.526
4.3281001.2565
4.373382001.4546
4.426783001.374
4.4884001.3387
4.533385001.3776
4.586786001.3984
4.6487001.3577
4.693388001.2393
4.746789001.4125
4.890001.6127
4.853391001.6897
4.906792001.1217
4.9693001.406
5.013394001.4641
5.066795001.48
5.1296001.3367
5.173397001.4681
5.226798001.4628
5.2899001.32
5.3333100001.448
5.3867101001.2516
5.44102001.4421
5.4933103001.2542
5.5467104001.4545
5.6105001.1441
5.6533106001.251
5.7067107001.3396
5.76108001.0305
5.8133109001.0155
5.8667110000.9871
5.92111001.074
5.9733112000.4534
6.0267113000.1965
6.08114000.1822
6.1333115000.2101
6.1867116000.2326
6.24117000.4126
6.2933118000.4871
6.3467119000.2012
6.4120000.2113
6.4533121000.1788
6.5067122000.2271
6.56123000.1685
6.6133124000.3347
6.6667125000.123
6.72126000.155
6.7733127000.2476
6.8267128000.1926
6.88129000.1394
6.9333130000.1683
6.9867131000.2484
7.04132000.1338
7.0933133000.1568
7.1467134000.1206
7.2135000.1683
7.2533136000.1831
7.3067137000.3077
7.36138000.3533
7.4133139000.1165
7.4667140000.2128
7.52141000.236
7.5733142000.3616
7.6267143000.2989
7.68144000.2416
7.7333145000.2105
7.7867146000.1575
7.84147000.224
7.8933148000.1593
7.9467149000.1293
8.0150000.0985

Framework Versions

  • Python: 3.10.12
  • Sentence Transformers: 3.0.1
  • Transformers: 4.42.4
  • PyTorch: 2.3.1+cu121
  • Accelerate: 0.33.0
  • Datasets: 2.20.0
  • Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

CoSENTLoss

@online{kexuefm-8847,
    title={CoSENT: A more efficient sentence vector scheme than Sentence-BERT},
    author={Su Jianlin},
    year={2022},
    month={Jan},
    url={https://kexue.fm/archives/8847},
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей