/ Модель

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

Контекст
256 токенов
Архитектура
gpt2 · dense
Опубликована
18 сен 2023

roberta_zinc_decoder

Генерация текстаТекст → текст

Условный декодер GPT-2 восстанавливает строки SMILES по эмбеддингам молекул, полученным энкодером roberta_zinc_480m.

108скачиваний за 30 дней1лайквеса обновлены29 апр 2025

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Roberta Zinc Decoder — условная декодирующая модель на архитектуре GPT-2, разработанная для восстановления строк SMILES по усреднённым эмбеддингам энкодера roberta_zinc_480m. Модель обучена на 30 млн соединений из базы ZINC и принимает эмбеддинг через encoder_hidden_states. Усреднённые эмбеддинги фиксированной длины позволяют использовать их, в том числе, с векторными базами данных.

Модель предназначена для генерации молекулярных строк SMILES по эмбеддингам и восстановления соединений, закодированных указанным энкодером. В оценке на тестовом наборе из 1 млн соединений ZINC точное совпадение строк составило около 94,8%, доля валидных структур — около 99,4%. Для работы требуется совместимый энкодер roberta_zinc_480m и реализация ConditionalGPT2LMHeadModel; стандартный GPT2LMHeadModel не поддерживает передачу encoder_hidden_states для такой генерации. Контекст модели — 256 токенов. Лицензия — MIT.

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

  • восстановление SMILES по эмбеддингу молекулы
  • декодирование эмбеддингов из roberta_zinc_480m в молекулярные строки
  • интеграция молекулярных эмбеддингов из векторной базы в строки SMILES

Ограничения

Модель рассчитана на декодирование эмбеддингов совместимого энкодера roberta_zinc_480m, а для передачи условий требуется класс ConditionalGPT2LMHeadModel. При восстановлении часть строк может не совпасть с исходными, хотя в приведённой оценке большинство выходов образовали валидные SMILES.

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

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

Открыть на Hugging Face

Roberta Zinc Decoder

This model is a GPT2 decoder model designed to reconstruct SMILES strings from embeddings created by the roberta_zinc_480m model. The decoder model was trained on 30m compounds from the ZINC Database.

The decoder model conditions generation on mean pooled embeddings from the encoder model. Mean pooled embeddings are used to allow for integration with vector databases, which require fixed length embeddings.

Condition embeddings are passed to the decoder model using the encoder_hidden_states attribute. The standard GPT2LMHeadModel does not support generation with encoder hidden states, so this repo includes a custom ConditionalGPT2LMHeadModel. See example below for how to instantiate the model.

import torch
from transformers import AutoModelForCausalLM, RobertaTokenizerFast, RobertaForMaskedLM, DataCollatorWithPadding

tokenizer = RobertaTokenizerFast.from_pretrained("entropy/roberta_zinc_480m", max_len=256)
collator = DataCollatorWithPadding(tokenizer, padding=True, return_tensors='pt')

encoder_model = RobertaForMaskedLM.from_pretrained('entropy/roberta_zinc_480m')
encoder_model.eval();

commit_hash = '0ba58478f467056fe33003d7d91644ecede695a7'
decoder_model = AutoModelForCausalLM.from_pretrained("entropy/roberta_zinc_decoder",
                                                     trust_remote_code=True, revision=commit_hash)
decoder_model.eval();


smiles = ['Brc1cc2c(NCc3ccccc3)ncnc2s1',
 'Brc1cc2c(NCc3ccccn3)ncnc2s1',
 'Brc1cc2c(NCc3cccs3)ncnc2s1',
 'Brc1cc2c(NCc3ccncc3)ncnc2s1',
 'Brc1cc2c(Nc3ccccc3)ncnc2s1']

inputs = collator(tokenizer(smiles))
outputs = encoder_model(**inputs, output_hidden_states=True)
full_embeddings = outputs[1][-1]
mask = inputs['attention_mask']
mean_embeddings = ((full_embeddings * mask.unsqueeze(-1)).sum(1) / mask.sum(-1).unsqueeze(-1))

decoder_inputs = torch.tensor([[tokenizer.bos_token_id] for i in range(len(smiles))])

hidden_states = mean_embeddings[:,None] # hidden states shape (bs, 1, -1)

gen = decoder_model.generate(
              decoder_inputs,
              encoder_hidden_states=hidden_states,
              do_sample=False, # greedy decoding is recommended
              max_length=100, 
              temperature=1.,
              early_stopping=True,
              pad_token_id=tokenizer.pad_token_id,
                         )

reconstructed_smiles = tokenizer.batch_decode(gen, skip_special_tokens=True)

Model Performance

The decoder model was evaluated on a test set of 1m compounds from ZINC. Compounds were encoded with the roberta_zinc_480m model and reconstructed with the decoder model.

The following metrics are computed:

  • exact_match - percent of inputs exactly reconstructed
  • token_accuracy - percent of output tokens exactly matching input tokens (excluding padding)
  • valid_structure - percent of generated outputs that resolved to a valid SMILES string
  • tanimoto - tanimoto similarity between inputs and generated outputs. Excludes invalid structures
  • cos_sim - cosine similarity between input encoder embeddings and output encoder embeddings

eval_type=full reports metrics for the full 1m compound test set.

eval_type=failed subsets metrics for generated outputs that failed to exactly replicate the inputs.

eval_typeexact_matchtoken_accuracyvalid_structuretanimotocos_sim
full0.9482770.9907040.9942780.9876980.998224
failed0.0000000.8202930.8893720.7340970.965668

license: mit

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

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

GPU в ailist

Универсальный рантайм

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

Подбираем GPU…

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

0 моделей