/ Модель

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

Контекст
7 999 токенов
Параметры
149 млн
Архитектура
modernbert · dense
Базовая модель
ettin-reranker-150m-v1
Библиотека
sentence-transformers
Опубликована
4 окт 2026

ce-forkulous-large

Ранжирование текстаТекст → score

Кросс-энкодер Forkulous оценивает соответствие строк ингредиентов из рецептов описаниям продуктов USDA для поиска и повторного ранжирования.

29скачиваний за 30 дней0лайковвеса обновлены4 окт 2026

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ce-forkulous-large — дообученный кросс-энкодер Forkulous для сопоставления текстовых строк ингредиентов с описаниями продуктов из USDA FoodDataCentral. Модель принимает пару текстов: неразобранную строку ингредиента и описание продукта, а затем выдаёт логит релевантности. Она основана на cross-encoder/ettin-reranker-150m-v1, построена на ModernBERT и использует библиотеку Sentence Transformers. Размер — 149 млн параметров; в метаданных указан контекст до 7999 токенов, а в README — максимальная длина последовательности 64 токена.

Модель предназначена для повторного ранжирования кандидатов и семантического поиска при преобразовании ингредиентов из рецептов в сведения о пищевой ценности. Для отдельной классификации одной строки ингредиента она не предназначена. В README приведены корреляции на оценке: Pearson 0,8598 и Spearman 0,9014. Модель принимает и выдаёт текстовые данные, причём результатом является числовая оценка релевантности. Лицензия в предоставленных сведениях не указана.

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

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

Ограничения

Модель предназначена для оценки пар текстов и не подходит для классификации отдельной строки ингредиента. README указывает максимальную длину последовательности 64 токена; оценка релевантности выдаётся как логит.

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

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

Открыть на Hugging Face

ce-forkulous-large

This is the main reranker model for Forkulous, a free-as-in-freedom API for turning unstructured recipe data into nutrient information.

This model accepts an unparsed freetext ingredient line and a description from USDA FoodDataCentral, and outputs a logit that represents the similarity between the two inputs.

This is not a model for sequence/token classification of single ingredient lines.

This is a Cross Encoder model finetuned from cross-encoder/ettin-reranker-150m-v1 using the sentence-transformers library. It computes scores for pairs of texts, which can be used for text reranking and semantic search.

Model Details

Model Description

Model Sources

Full Model Architecture

CrossEncoder(
  (0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'ModernBertModel'})
  (1): Pooling({'embedding_dimension': 768, 'pooling_mode': 'cls', 'include_prompt': True})
  (2): Dense({'in_features': 768, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.activation.GELU', 'module_input_name': 'sentence_embedding', 'module_output_name': 'sentence_embedding'})
  (3): LayerNorm({'dimension': 768})
  (4): Dense({'in_features': 768, 'out_features': 1, 'bias': True, 'activation_function': 'torch.nn.modules.linear.Identity', 'module_input_name': 'sentence_embedding', 'module_output_name': 'scores'})
)

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 CrossEncoder

# Download from the 🤗 Hub
model = CrossEncoder("Forkulous/ce-forkulous-large")
# Get scores for pairs of inputs
pairs = [
    ['query: 2/3 cup dark brown sugar packed soft', 'document: Cherries, dark red, sweet, raw'],
    ['query: 1/4 granulated sugar I used raw', 'document: C&H Granulated White Sugar (OK1) - NFY040Y38'],
    ['query: 1 cup yellow squash diced', 'document: Squash, yellow, raw'],
    ['query: 1/4 cup onion tops thinly sliced green', 'document: Asparagus, green, whole spear, raw'],
    ['query: 24 ounces mascarpone cheese chilled', 'document: Cheese, Mexican blend'],
]
scores = model.predict(pairs)
print(scores)
# [-5.9062  1.7188  7.0938 -0.9141  1.1953]

# Or rank different texts based on similarity to a single text
ranks = model.rank(
    'query: 2/3 cup dark brown sugar packed soft',
    [
        'document: Cherries, dark red, sweet, raw',
        'document: C&H Granulated White Sugar (OK1) - NFY040Y38',
        'document: Squash, yellow, raw',
        'document: Asparagus, green, whole spear, raw',
        'document: Cheese, Mexican blend',
    ]
)
# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]

Evaluation

Metrics

Cross Encoder Correlation

MetricValue
pearson0.8598
spearman0.9014

Training Details

Training Dataset

Unnamed Dataset

  • Size: 7,845 training samples
  • Columns: query, document, and score
  • Approximate statistics based on the first 100 samples:
    querydocumentscore
    typestringstringfloat
    modalitytexttext
    detailsmin: 7 tokensmean: 13.04 tokensmax: 30 tokensmin: 6 tokensmean: 13.44 tokensmax: 27 tokensmin: 0.0mean: 0.56max: 1.0
  • Samples:
    querydocumentscore
    query: 2/3 cup potato starch or corn starchdocument: FLOUR, CORN, YELLOW (FINE MEAL) (ENRICHED)0.4
    query: 2 heads butter lettuce choppeddocument: Lettuce, for use on a sandwich1.0
    query: whipped cream or ice cream, for servingdocument: Beef with cream or white sauce0.0
  • Loss: BinaryCrossEntropyLoss with these parameters:
    {
        "activation_fn": "torch.nn.modules.linear.Identity",
        "pos_weight": null
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 2,055 evaluation samples
  • Columns: query, document, and score
  • Approximate statistics based on the first 100 samples:
    querydocumentscore
    typestringstringfloat
    modalitytexttext
    detailsmin: 8 tokensmean: 14.54 tokensmax: 37 tokensmin: 6 tokensmean: 14.19 tokensmax: 34 tokensmin: 0.0mean: 0.49max: 1.0
  • Samples:
    querydocumentscore
    query: 2/3 cup dark brown sugar packed softdocument: Cherries, dark red, sweet, raw0.0
    query: 1/4 granulated sugar I used rawdocument: C&H Granulated White Sugar (OK1) - NFY040Y380.9
    query: 1 cup yellow squash diceddocument: Squash, yellow, raw1.0
  • Loss: BinaryCrossEntropyLoss with these parameters:
    {
        "activation_fn": "torch.nn.modules.linear.Identity",
        "pos_weight": null
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 16
  • num_train_epochs: 4
  • learning_rate: 2e-05
  • lr_scheduler_type: cosine
  • warmup_steps: 0.1
  • weight_decay: 0.01
  • bf16: True
  • per_device_eval_batch_size: 16
  • load_best_model_at_end: True
  • dataloader_pin_memory: False

All Hyperparameters

  • per_device_train_batch_size: 16
  • num_train_epochs: 4
  • max_steps: -1
  • learning_rate: 2e-05
  • lr_scheduler_type: cosine
  • lr_scheduler_kwargs: None
  • warmup_steps: 0.1
  • optim: adamw_torch_fused
  • optim_args: None
  • weight_decay: 0.01
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • optim_target_modules: None
  • gradient_accumulation_steps: 1
  • average_tokens_across_devices: True
  • max_grad_norm: 1.0
  • label_smoothing_factor: 0.0
  • bf16: True
  • fp16: False
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • use_liger_kernel: False
  • liger_kernel_config: None
  • use_cache: False
  • neftune_noise_alpha: None
  • torch_empty_cache_steps: None
  • auto_find_batch_size: False
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • include_num_input_tokens_seen: no
  • log_level: passive
  • log_level_replica: warning
  • disable_tqdm: False
  • project: huggingface
  • trackio_space_id: None
  • trackio_bucket_id: None
  • trackio_static_space_id: None
  • per_device_eval_batch_size: 16
  • prediction_loss_only: True
  • eval_on_start: False
  • eval_do_concat_batches: True
  • eval_use_gather_object: False
  • eval_accumulation_steps: None
  • include_for_metrics: []
  • batch_eval_metrics: False
  • save_only_model: False
  • save_on_each_node: False
  • enable_jit_checkpoint: False
  • push_to_hub: False
  • hub_private_repo: None
  • hub_model_id: Forkulous/ce-forkulous-large
  • hub_strategy: every_save
  • hub_always_push: False
  • hub_revision: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • restore_callback_states_from_checkpoint: False
  • full_determinism: False
  • seed: 42
  • data_seed: None
  • use_cpu: False
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_pin_memory: False
  • dataloader_persistent_workers: False
  • dataloader_prefetch_factor: None
  • dataloader_multiprocessing_context: None
  • dataloader_in_order: True
  • remove_unused_columns: True
  • label_names: None
  • train_sampling_strategy: random
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • ddp_static_graph: None
  • ddp_backend: None
  • ddp_timeout: 1800
  • fsdp: None
  • fsdp_config: None
  • deepspeed: None
  • debug: []
  • skip_memory_metrics: True
  • do_predict: False
  • resume_from_checkpoint: None
  • local_rank: -1
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}
  • warmup_ratio: None

Training Logs

EpochStepTraining LossValidation Lossspearman
0.0204101.6208--
0.0407201.4429--
0.0611301.0490--
0.0815400.5679--
0.1018500.5497--
0.1222600.5334--
0.1426700.5868--
0.1629800.4883--
0.1833900.4745--
0.20371000.47670.44670.8302
0.22401100.4124--
0.24441200.4810--
0.26481300.4300--
0.28511400.4689--
0.30551500.3960--
0.32591600.4221--
0.34621700.4342--
0.36661800.4317--
0.38701900.4269--
0.40732000.40220.43760.8620
0.42772100.4581--
0.44812200.4255--
0.46842300.4297--
0.48882400.4564--
0.50922500.4250--
0.52952600.3977--
0.54992700.4122--
0.57032800.3910--
0.59062900.3930--
0.61103000.42390.41460.8745
0.63143100.4190--
0.65173200.4212--
0.67213300.4102--
0.69253400.4513--
0.71283500.3958--
0.73323600.4110--
0.75363700.3697--
0.77393800.4526--
0.79433900.4417--
0.81474000.35450.41650.8824
0.83504100.3983--
0.85544200.3533--
0.87584300.3654--
0.89614400.3874--
0.91654500.3816--
0.93694600.3923--
0.95724700.3717--
0.97764800.4023--
0.99804900.4285--
1.01835000.37940.40800.8872
1.03875100.3357--
1.05915200.2863--
1.07945300.3658--
1.09985400.3649--
1.12025500.4076--
1.14055600.3354--
1.16095700.3882--
1.18135800.3731--
1.20165900.3672--
1.22206000.39870.41140.8954
1.24246100.4156--
1.26276200.3384--
1.28316300.3951--
1.30356400.3695--
1.32386500.3838--
1.34426600.3622--
1.36466700.3820--
1.38496800.3633--
1.40536900.3564--
1.42577000.35160.40890.8893
1.44607100.3841--
1.46647200.3823--
1.48687300.3567--
1.50717400.3644--
1.52757500.4058--
1.54797600.3474--
1.56827700.3692--
1.58867800.3836--
1.60907900.3581--
1.62938000.36750.40390.8947
1.64978100.3366--
1.67018200.3354--
1.69048300.4028--
1.71088400.3859--
1.73128500.3046--
1.75158600.3429--
1.77198700.3857--
1.79238800.3485--
1.81268900.3832--
1.83309000.40250.39890.8942
1.85349100.3480--
1.87379200.3625--
1.89419300.3900--
1.91459400.3804--
1.93489500.3413--
1.95529600.3600--
1.97569700.4013--
1.99599800.3806--
2.01639900.3380--
2.036710000.32690.40630.8977
2.057010100.3237--
2.077410200.3287--
2.097810300.3342--
2.118110400.3151--
2.138510500.3219--
2.158910600.3601--
2.179210700.3548--
2.199610800.3342--
2.220010900.3918--
2.240311000.34190.39690.8975
2.260711100.3515--
2.281111200.3274--
2.301411300.3447--
2.321811400.3262--
2.342211500.3223--
2.362511600.3541--
2.382911700.3219--
2.403311800.3526--
2.423611900.3106--
2.444012000.31690.40250.8995
2.464412100.3134--
2.484712200.3326--
2.505112300.3669--
2.525512400.3433--
2.545812500.3299--
2.566212600.3784--
2.586612700.3436--
2.606912800.3636--
2.627312900.2903--
2.647713000.32640.40390.8999
2.668013100.3589--
2.688413200.3355--
2.708813300.3434--
2.729113400.3430--
2.749513500.3399--
2.769913600.3572--
2.790213700.3102--
2.810613800.3460--
2.831013900.4116--
2.851314000.32520.39460.9005
2.871714100.3421--
2.892114200.3196--
2.912414300.3131--
2.932814400.4006--
2.953214500.3267--
2.973514600.3391--
2.993914700.3545--
3.014314800.3362--
3.034614900.3144--
3.055015000.34220.39900.9014

Training Time

  • Training: 10.5 minutes
  • Evaluation: 3.0 minutes
  • Total: 13.6 minutes

Framework Versions

  • Python: 3.13.11
  • Sentence Transformers: 5.5.1
  • Transformers: 5.15.0
  • PyTorch: 2.14.0.dev20260708
  • Accelerate: 1.14.0
  • Datasets: 5.0.1
  • Tokenizers: 0.22.2

Additional Resources

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",
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей