/ Модель

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

Контекст
512 токенов
Параметры
432 млн
Архитектура
bert · dense
Опубликована
9 окт 2022

biolinkbert-large-mnli-snli

Классификация текстаТекст → label

Дообученная на MNLI и SNLI модель BioLinkBERT-large для классификации отношений следования, нейтральности и противоречия между текстами.

150скачиваний за 30 дней2лайкавеса обновлены18 мар 2023

Бенчмарки

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

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

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

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

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

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

BioLinkBERT-large-mnli-snli — модель классификации последовательностей на базе BioLinkBERT-large, дообученная автором репозитория на наборах GLUE MNLI и SNLI. Она определяет отношение между двумя текстами: логическое следование, нейтральность или противоречие. Подходит для задач распознавания текстовых утверждений и проверки согласованности, в том числе в биомедицинских текстах благодаря базе BioLinkBERT.

Модель использует архитектуру BERT и содержит около 432,2 млн параметров. Она принимает текст, а на выходе выдаёт один из трёх классов; максимальная длина контекста — 512 токенов. В карточке приведены результаты на MNLI и SNLI, однако опубликованная таблица неполная, поэтому сравнительные показатели этой модели установить нельзя. Репозиторий содержит веса PyTorch; сведения о лицензии отсутствуют в предоставленных данных.

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

  • Проверка, следует ли вывод из исходного утверждения
  • Поиск противоречий между двумя предложениями
  • Определение нейтрального отношения между текстами
  • Классификация отношений между биомедицинскими утверждениями

Ограничения

Ограничение контекста — 512 токенов. Показатели модели в предоставленном фрагменте таблицы не приведены полностью; лицензия также не указана в доступных данных.

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

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

Открыть на Hugging Face

BioLinkBERT-large-mnli-snli

This model is a fine-tuned version of BioLinkBERT-large on the GLUE MNLI and SNLI dataset.

The results are

ModelDatasetAcc
Roberta-large-mnliMNLI dev mm90.12
MNLI dev m90.59
SNLI test88.25
BioLinkBERT-largeMNLI dev mm33.56
MNLI dev m33.18
SNLI test32.66
BioLinkBERT-large-mnli-snliMNLI dev mm85.75
MNLI dev m85.30
SNLI test89.82

The labels are "0": "entailment", "1": "neutral", "2": "contradiction"

For finetuning BioLinkBERT-large on

Training procedure

This model checkpoint is created by mnli.py with the following command:

CUDA_VISIBLE_DEVICES=0,1,2; python -m torch.distributed.launch \
    --nproc_per_node 3 mnli.py \
    --model_name_or_path michiyasunaga/BioLinkBERT-large --task_name mnli --add_snli \
    --do_train --max_seq_length 512 --fp16 --per_device_train_batch_size 16 --gradient_accumulation_steps 2 \
    --learning_rate 3e-5 --warmup_ratio 0.5 --num_train_epochs 10 \
    --output_dir ./biolinkbert_mnli_snli

which will create a folder biolinkbert_mnli_snli that contains the checkpoints.

And all checkpoints are evaluated on MNLI dev (mismatched and matched) & SNLI test by

name=biolinkbert_mnli_snli
root=$PWD/$name
mkdir $PWD/eval/$name
for run in $root/checkpoint-*; do
    step=$( echo $run | rg "checkpoint-(?P<step>\d+)" -or '$step')
    out="./eval/${name}/eval_$step"
    echo "eval of $step ---- save to $out";

    CUDA_VISIBLE_DEVICES=0; python mnli.py \
        --model_name_or_path $run --task_name mnli --add_snli \
        --do_eval --max_seq_length 512 --fp16 --report_to none \
        --per_device_eval_batch_size 8 --output_dir $out
done;

which will create a folder eval/biolinkbert_mnli_snli that contains evaluation results for MNLI dev & SNLI test.

The best checkpoint is then selected according to mnli-m:

import json
import os
from pathlib import Path
import pandas as pd
from rich.console import Console
from rich.table import Table

pwd = Path(__file__).parent.resolve()
name = "eval/biolinkbert_mnli"
results = []
for evalckpt in os.listdir(pwd / name):
    step = evalckpt.split("_")[1]
    with open(pwd / name / evalckpt / "all_results.json") as f:
        data = json.load(f)
    results.append([int(step), data["mnli-mm_eval_accuracy"] * 100, data["mnli_eval_accuracy"] * 100, data["snli-test_eval_accuracy"] * 100])
results = pd.DataFrame(results, columns=["step", "mnli-mm", "mnli-m", "snli"]).sort_values(by=['step'])
console = Console()
table = Table(name)
table.add_row(results.to_string(float_format=lambda _: '{:.3f}'.format(_)))
console.print(table)
best = results["mnli-m"].idxmax()
print(results.loc[best])

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 3e-05
  • train_batch_size: 16
  • eval_batch_size: 8
  • seed: 42
  • gradient_accumulation_steps: 2
  • total_train_batch_size: 32
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_ratio: 0.5
  • num_epochs: 10.0
  • mixed_precision_training: Native AMP

Framework versions

  • Transformers 4.22.2
  • Pytorch 1.12.1+cu113
  • Datasets 2.4.0
  • Tokenizers 0.12.1

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
BertForSequenceClassification
Ревизия весов
89029f4

0 моделей