/ Модель

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

Лицензия
CC BY-NC-SA 4.0
Библиотека
sentence-transformers
Опубликована
9 сен 2026

static-chemselfies-molsim

ЭмбеддингиТекст → embedding

Компактная модель Sentence Transformers преобразует SELFIES-последовательности в векторы для быстрого поиска и оценки сходства молекул.

0скачиваний за 30 дней1лайквеса обновлены9 сен 2026

Бенчмарки

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

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

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

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

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

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

tomaarsen/static-chemselfies-molsim — модель Sentence Transformers на основе статических эмбеддингов SELFIES, обученная на парах из набора coconut-chembl34-mol-sim. Она преобразует текстовые SELFIES-последовательности в плотные векторы размерности 320 и предназначена для оценки сходства молекул, семантического поиска, кластеризации и классификации. Метаданные указывают задачу sentence-similarity; модель также поддерживает извлечение признаков.

Архитектура использует таблицу эмбеддингов символов SELFIES и усреднение без контекста и механизма внимания. Максимальная длина входа — 200 токенов; в README описана поддержка усечения векторов до 160 или 80 измерений. Для корректной обработки SELFIES необходимо передавать символы как разделённые пробелами токены, например [C] [=C] [N]. Модель быстрая и компактная, но уступает контекстным энкодерам при оценке тонких различий между молекулами; сходство ориентировано на метки, полученные из MACCS fingerprints. Лицензия — CC BY-NC-SA 4.0, с ограничением на коммерческое использование и требованием распространять производные работы на тех же условиях.

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

  • Поиск молекул, похожих на заданную структуру SELFIES
  • Ранжирование пар молекул по сходству
  • Кластеризация химических структур по эмбеддингам
  • Извлечение признаков SELFIES для классификации молекул

Ограничения

Статическое усреднение не учитывает контекст и взаимодействия токенов, поэтому модель хуже различает тонкие сходства, чем контекстные энкодеры. SELFIES нужно подавать в виде токенов, разделённых пробелами; оценки сходства ориентированы на MACCS fingerprints.

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

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

Открыть на Hugging Face

Static SELFIES embedding (320d) trained on COCONUT + ChEMBL34 pairs

This is a sentence-transformers model trained on the coconut-chembl34-mol-sim dataset. It maps inputs to a 320-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, classification, clustering, and more.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Maximum Sequence Length: 200 tokens
  • Output Dimensionality: 320 dimensions
  • Similarity Function: Cosine Similarity
  • Supported Modality: Text
  • Training Dataset:
    • coconut-chembl34-mol-sim
  • Language: en
  • License: cc-by-nc-sa-4.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): StaticEmbedding({})
)

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("tomaarsen/static-chemselfies-molsim")
# Run inference
sentences = [
    '[O] [=S] [Branch1] [Ring1] [O] [C] [S] [S] [S] [S] [S] [N]',
    '[S] [C] [=C] [C] [=C] [Ring1] [Branch1] [C] [=C]',
    '[O] [=C] [Branch1] [O] [C] [C] [=C] [C] [#C] [C] [#C] [C] [=C] [C] [C] [C]',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 320]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.6880, 0.1453],
#         [0.6880, 1.0000, 0.1629],
#         [0.1453, 0.1629, 1.0000]])

Evaluation

Metrics

Semantic Similarity

Metricmolsimmolsim-fulltest
pearson_cosine0.76470.7735
spearman_cosine0.74280.7519

Baseline comparison

All numbers are Spearman/Pearson of embedding cosine similarity against MACCS fingerprint similarity labels on held-out SELFIES pairs of gbyuvd/coconut-chembl34-mol-sim.

ModelTypeParamsSpearman cosinePearson cosine
gbyuvd/chemembed-chemselfies (8-layer BERT, hidden 320)contextual11.1M0.952*0.961*
This model, untrained (token-overlap floor)static~1M~0.54-
This model (Matryoshka 320/160/80)static~1M0.75190.7735

* as reported by the authors of gbyuvd/chemembed-chemselfies on their held-out "combined-test" split of the same data family, with EmbeddingSimilarityEvaluator-style Spearman/Pearson of cosine vs MACCS. This model was evaluated on the dataset's own full test split (118,318 pairs), so the numbers are directly comparable in kind but not bit-identical in split.

The ~0.20 Spearman gap is the price of going static: a mean-pooled embedding table (one vector per SELFIES symbol, no context, ~1M parameters) cannot model token interactions the way the 11.1M-parameter BERT can. In exchange, this model is orders of magnitude faster at inference (a lookup + average; ~20x faster than a comparable-size encoder on GPU and ~80x on CPU) and supports Matryoshka truncation to 160/80 dims.

Limitations & Notes

  • Static model: mean-pooled SELFIES token embeddings, no context or attention. It trails contextual encoders on fine-grained similarity; it trades that for ~1M parameters and very fast inference.
  • Input format: SELFIES strings must be space-separated tokens, e.g. [C] [=C] [N] (use " ".join(re.findall(r"\[[^\]]*\]", s)) on raw SELFIES output). Raw glued SELFIES ([C][=C][N]) encodes to [UNK].
  • The tokenizer's [CLS]/[SEP] post-processing was stripped for training and inference (noise for a token-bag model). Vocab: 3,095 SELFIES symbols, taken from gbyuvd/chemembed-chemselfies.
  • Labels are MACCS fingerprint cosine similarity, so the embeddings primarily encode MACCS-like similarity. 1 epoch reached 0.7473 Spearman, 3 epochs 0.7519 — diminishing returns. Recipe: CosineSimilarityLoss + MatryoshkaLoss [320/160/80], lr 0.05, batch 2048, cosine scheduler, best-checkpoint restore; ~15 min training on a T4.
  • License cc-by-nc-sa-4.0, inherited from the baseline model and dataset by gbyuvd.

Training Details

Training Dataset

coconut-chembl34-mol-sim

  • Dataset: coconut-chembl34-mol-sim
  • Size: 1,049,286 training samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 100 samples:
    sentence1sentence2label
    typestringstringfloat
    modalitytexttext
    detailsmin: 60 charactersmean: 436.88 charactersmax: 1766 charactersmin: 48 charactersmean: 446.99 charactersmax: 1875 charactersmin: 0.2mean: 0.54max: 0.92
  • Samples:
    sentence1sentence2label
    [O] [=C] [N] [C] [C] [C] [C] [Ring1] [=Branch1] [=C] [O] [C] [Branch2] [Ring1] [Branch1] [O] [C] [O] [C] [Branch1] [Ring1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [#Branch2] [O] [C] [Ring2] [Ring1] [C] [C] [C][O] [=C] [C] [=C] [Branch2] [Ring2] [=Branch1] [O] [C] [=Branch1] [Branch1] [=C] [Ring1] [=Branch1] [O] [C] [NH1] [C] [=Branch1] [=N] [=N] [C] [=Ring1] [Branch1] [C] [=C] [C] [=C] [C] [=C] [Ring1] [=Branch1] [C] [=C] [C] [=C] [Branch1] [C] [O] [C] [=C] [Ring1] [#Branch1] [O] [C]0.57
    [O] [=C] [O] [C] [Branch1] [C] [C] [C] [Branch2] [Ring2] [O] [N] [=C] [Branch1] [C] [O] [C] [Branch2] [Ring1] [Branch1] [N] [=C] [Branch1] [C] [O] [C] [Branch1] [Ring1] [O] [C] [C] [O] [S] [=Branch1] [C] [=O] [=Branch1] [C] [=O] [O] [C] [C] [C] [=C] [C] [=C] [Branch1] [C] [O] [C] [=C] [Ring1] [#Branch1] [C] [=Branch2] [=Branch1] [#Branch2] [=N] [C] [Branch2] [=Branch1] [Ring2] [C] [=Branch2] [Branch1] [#C] [=N] [C] [C] [=Branch1] [C] [=O] [N] [Branch1] [=Branch2] [C] [Branch1] [C] [O] [C] [C] [Ring1] [Branch2] [C] [Branch2] [Ring2] [Ring2] [C] [=Branch1] [C] [=O] [N] [Branch1] [C] [C] [C] [Branch1] [S] [C] [=Branch1] [N] [=N] [C] [Ring2] [Branch1] [Ring2] [C] [Branch1] [C] [C] [C] [C] [O] [C] [C] [=C] [C] [=C] [C] [=C] [Ring1] [=Branch1] [C] [Branch1] [C] [C] [C] [C] [O] [C] [O][O] [=C] [C] [C] [C] [Ring1] [Ring2] [C] [C] [C] [C] [C] [=C] [C] [C] [=C] [C] [C] [C] [C] [C]0.38
    [O] [=C] [N] [C] [Branch2] [Ring1] [C] [O] [C] [=Branch1] [C] [=O] [C] [C] [Branch1] [Ring2] [N] [C] [=O] [C] [Branch1] [C] [C] [C] [C] [Branch1] [C] [C] [C][O] [=C] [Branch3] [Ring1] [C] [Branch2] [O] [C] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [=Branch1] [O] [C] [Ring1] [Branch2] [C] [O] [C] [Branch1] [Ring1] [C] [=C] [Branch1] [C] [C] [C] [C] [C] [=C] [Branch2] [S] [Branch1] [C] [=Branch1] [C] [=O] [O] [C] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [=Branch1] [O] [C] [Ring1] [Branch2] [C] [O] [C] [Branch1] [Ring1] [C] [=C] [Branch1] [C] [C] [C] [C] [C] [=C] [Branch2] [=N] [=C] [C] [=Branch1] [C] [=O] [O] [C] [C] [C] [Branch2] [Branch1] [O] [C] [=Branch1] [C] [=O] [O] [C] [O] [C] [Branch1] [Ring1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [#Branch2] [O] [C] [O] [C] [Branch1] [C] [C] [C] [Branch1] [P] [O] [C] [O] [C] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [Branch2] [O] [C] [Branch1] [C] [O] [C] [Ring2] [Ring1] [C] [O] [C] [Branch1] [C] [O] [C] [C] [Branch2] [Branch2] [#C] [C] [=Branch2] [#Branch1] [=C] [=C] [C] [C] [C] [Branch1] [C] [C] [C] [C] [C] [Branch2] [Branch1]...0.49
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "CosineSimilarityLoss",
        "matryoshka_dims": [
            320,
            160,
            80
        ],
        "matryoshka_weights": [
            1,
            1,
            1
        ],
        "n_dims_per_step": -1
    }
    

Evaluation Dataset

coconut-chembl34-mol-sim

  • Dataset: coconut-chembl34-mol-sim
  • Size: 10,000 evaluation samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 100 samples:
    sentence1sentence2label
    typestringstringfloat
    modalitytexttext
    detailsmin: 47 charactersmean: 424.23 charactersmax: 1441 charactersmin: 37 charactersmean: 459.26 charactersmax: 1583 charactersmin: 0.0mean: 0.53max: 0.92
  • Samples:
    sentence1sentence2label
    [O] [=C] [C] [Branch2] [Ring2] [=Branch2] [O] [C] [O] [C] [Branch2] [Ring1] [Branch1] [C] [O] [C] [O] [C] [Branch1] [C] [C] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [=Branch2] [O] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring2] [Ring1] [Ring2] [O] [=C] [Branch2] [Branch1] [O] [O] [C] [=C] [C] [Branch2] [Ring2] [Branch2] [O] [C] [O] [C] [Branch1] [Ring1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [#Branch2] [O] [C] [O] [C] [Branch1] [Ring1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [#Branch2] [O] [=C] [C] [Branch1] [C] [O] [=C] [Ring2] [Branch1] [Branch2] [Ring2] [Ring1] [=C] [C] [=C] [C] [=C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [=C] [Ring1] [Branch2][S] [C] [C] [N] [C] [C] [C] [N] [C] [C] [Ring1] [#Branch2]0.33
    [F] [C] [=Branch2] [Ring1] [C] [=C] [Branch1] [C] [F] [C] [C] [S] [C] [=N] [N] [=C] [Branch1] [Ring2] [S] [Ring1] [Branch1] [N] [F][O] [=C] [Branch1] [#Branch2] [N] [C] [C] [S] [C] [=C] [C] [=Ring1] [Branch1] [C] [C] [C] [N] [Branch1] [C] [C] [C] [C] [C] [N] [Branch2] [Ring1] [Branch1] [C] [C] [=C] [C] [=C] [C] [Branch1] [#Branch2] [O] [C] [Branch1] [C] [F] [Branch1] [C] [F] [F] [=C] [Ring1] [O] [C] [Ring1] [P] [C] [=Branch1] [C] [=O] [N] [C] [Ring2] [Ring1] [Branch2]0.49
    [O] [=C] [Branch2] [=Branch1] [N] [O] [C] [C] [O] [C] [Branch2] [Branch1] [#Branch1] [O] [C] [=C] [C] [=C] [Branch2] [Ring1] [Branch1] [O] [C] [O] [C] [Branch1] [Ring1] [C] [O] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring1] [#Branch2] [O] [C] [=C] [Branch1] [C] [O] [C] [=C] [Ring2] [Ring1] [Ring1] [OH1+1] [C] [Ring2] [Ring1] [#Branch1] [C] [=C] [C] [=C] [Branch1] [C] [O] [C] [=C] [Ring1] [#Branch1] [C] [Branch1] [C] [O] [C] [Branch1] [C] [O] [C] [Ring2] [Ring2] [#Branch1] [O] [C] [=C] [C] [=C] [C] [=C] [Branch1] [C] [O] [C] [Branch1] [Ring1] [O] [C] [=C] [Ring1] [=Branch2][O] [C] [Branch1] [C] [C] [C] [C] [C] [C] [C] [Ring1] [Ring1] [C] [C] [Ring1] [=Branch2] [C] [C] [C] [Ring1] [Branch1] [Branch1] [C] [O] [C]0.42
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "CosineSimilarityLoss",
        "matryoshka_dims": [
            320,
            160,
            80
        ],
        "matryoshka_weights": [
            1,
            1,
            1
        ],
        "n_dims_per_step": -1
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 2048
  • learning_rate: 0.05
  • lr_scheduler_type: cosine
  • warmup_steps: 0.1
  • bf16: True
  • per_device_eval_batch_size: 2048
  • load_best_model_at_end: True
  • seed: 12

All Hyperparameters

  • per_device_train_batch_size: 2048
  • num_train_epochs: 3
  • max_steps: -1
  • learning_rate: 0.05
  • lr_scheduler_type: cosine
  • lr_scheduler_kwargs: None
  • warmup_steps: 0.1
  • optim: adamw_torch_fused
  • optim_args: None
  • weight_decay: 0.0
  • 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: 2048
  • 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: None
  • 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: 12
  • 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: True
  • 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 Lossmolsim_spearman_cosinemolsim-fulltest_spearman_cosine
-1-1--0.5371-
0.001910.4891---
0.0312160.4880---
0.0624320.4098---
0.0936480.2228---
0.1248640.1083---
0.1559800.0858---
0.1871960.0715---
0.21831120.0621---
0.24951280.0568---
0.28071440.0528---
0.3002154-0.05090.7186-
0.31191600.0497---
0.34311760.0484---
0.37431920.0465---
0.40552080.0452---
0.43662240.0444---
0.46782400.0442---
0.49902560.0434---
0.53022720.0432---
0.56142880.0430---
0.59263040.0418---
0.6004308-0.04380.7342-
0.62383200.0424---
0.65503360.0412---
0.68623520.0414---
0.71733680.0422---
0.74853840.0418---
0.77974000.0417---
0.81094160.0419---
0.84214320.0417---
0.87334480.0414---
0.9006462-0.04260.7393-
0.90454640.0410---
0.93574800.0414---
0.96694960.0409---
0.99815120.0416---
1.02925280.0414---
1.06045440.0409---
1.09165600.0410---
1.12285760.0413---
1.15405920.0411---
1.18526080.0402---
1.2008616-0.04200.7388-
1.21646240.0418---
1.24766400.0408---
1.27886560.0406---
1.30996720.0410---
1.34116880.0404---
1.37237040.0404---
1.40357200.0405---
1.43477360.0406---
1.46597520.0410---
1.49717680.0409---
1.5010770-0.04170.7415-
1.52837840.0405---
1.55958000.0407---
1.59068160.0404---
1.62188320.0404---
1.65308480.0403---
1.68428640.0400---
1.71548800.0408---
1.74668960.0401---
1.77789120.0405---
1.8012924-0.04150.7413-
1.80909280.0407---
1.84029440.0404---
1.87139600.0404---
1.90259760.0405---
1.93379920.0407---
1.964910080.0406---
1.996110240.0402---
2.027310400.0404---
2.058510560.0399---
2.089710720.0397---
2.10141078-0.04150.7425-
2.120910880.0405---
2.152011040.0404---
2.183211200.0399---
2.214411360.0405---
2.245611520.0403---
2.276811680.0398---
2.308011840.0402---
2.339212000.0412---
2.370412160.0402---
2.401612320.04090.04140.7428-
2.432712480.0403---
2.463912640.0407---
2.495112800.0406---
2.526312960.0396---
2.557513120.0399---
2.588713280.0395---
2.619913440.0405---
2.651113600.0405---
2.682313760.0407---
2.70181386-0.04140.7427-
2.713513920.0397---
2.744614080.0403---
2.775814240.0402---
2.807014400.0400---
2.838214560.0398---
2.869414720.0400---
2.900614880.0407---
2.931815040.0402---
2.963015200.0403---
2.994215360.0401---
3.01539-0.04140.7426-
-1-1--0.74280.7519
  • The bold row denotes the saved checkpoint.

Training Time

  • Training: 14.4 minutes
  • Evaluation: 1.2 minutes
  • Total: 15.6 minutes

Framework Versions

  • Python: 3.12.12
  • Sentence Transformers: 6.0.1
  • Transformers: 5.16.1
  • PyTorch: 2.14.0+cu130
  • Accelerate: 1.14.0
  • Datasets: 5.0.1
  • Tokenizers: 0.23.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",
}

MatryoshkaLoss

@misc{kusupati2024matryoshka,
    title={Matryoshka Representation Learning},
    author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
    year={2024},
    eprint={2205.13147},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

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

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

GPU в ailist

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

Нельзя запустить

В репозитории нет config.json: не понять архитектуру модели.

Ревизия весов
92e84eb

0 моделей