Instructions to use entropy/roberta_zinc_480m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use entropy/roberta_zinc_480m with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("fill-mask", model="entropy/roberta_zinc_480m")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForMaskedLM tokenizer = AutoTokenizer.from_pretrained("entropy/roberta_zinc_480m") model = AutoModelForMaskedLM.from_pretrained("entropy/roberta_zinc_480m", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Update README.md
Browse files
README.md
CHANGED
|
@@ -12,25 +12,53 @@ The model has ~102m parameters and was trained for 150000 iterations with a batc
|
|
| 12 |
This model is useful for generating embeddings from SMILES strings.
|
| 13 |
|
| 14 |
```python
|
| 15 |
-
from transformers import
|
| 16 |
|
| 17 |
-
tokenizer =
|
| 18 |
-
|
| 19 |
-
|
| 20 |
|
| 21 |
-
smiles = [
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
|
|
|
|
|
|
| 26 |
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
| 29 |
full_embeddings = outputs[1][-1]
|
| 30 |
-
mask =
|
| 31 |
embeddings = ((full_embeddings * mask.unsqueeze(-1)).sum(1) / mask.sum(-1).unsqueeze(-1))
|
| 32 |
```
|
| 33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
## Decoder
|
| 35 |
|
| 36 |
There is also a [decoder model](https://huggingface.co/entropy/roberta_zinc_decoder) trained to reconstruct
|
|
|
|
| 12 |
This model is useful for generating embeddings from SMILES strings.
|
| 13 |
|
| 14 |
```python
|
| 15 |
+
from transformers import AutoModel, AutoTokenizer
|
| 16 |
|
| 17 |
+
tokenizer = AutoTokenizer.from_pretrained("entropy/roberta_zinc_480m")
|
| 18 |
+
roberta_zinc = AutoModel.from_pretrained("entropy/roberta_zinc_480m",
|
| 19 |
+
add_pooling_layer=False) # model was not trained with a pooler
|
| 20 |
|
| 21 |
+
smiles = [
|
| 22 |
+
"Brc1cc2c(NCc3ccccc3)ncnc2s1",
|
| 23 |
+
"Brc1cc2c(NCc3ccccn3)ncnc2s1",
|
| 24 |
+
"Brc1cc2c(NCc3cccs3)ncnc2s1",
|
| 25 |
+
"Brc1cc2c(NCc3ccncc3)ncnc2s1",
|
| 26 |
+
"Brc1cc2c(Nc3ccccc3)ncnc2s1"
|
| 27 |
+
]
|
| 28 |
|
| 29 |
+
batch = tokenizer(smiles, return_tensors='pt', padding=True, pad_to_multiple_of=8)
|
| 30 |
+
|
| 31 |
+
# mean pooling
|
| 32 |
+
outputs = roberta_zinc(**batch, output_hidden_states=True)
|
| 33 |
full_embeddings = outputs[1][-1]
|
| 34 |
+
mask = batch['attention_mask']
|
| 35 |
embeddings = ((full_embeddings * mask.unsqueeze(-1)).sum(1) / mask.sum(-1).unsqueeze(-1))
|
| 36 |
```
|
| 37 |
|
| 38 |
+
```python
|
| 39 |
+
from sentence_transformers import models, SentenceTransformer
|
| 40 |
+
|
| 41 |
+
transformer = models.Transformer("entropy/roberta_zinc_480m",
|
| 42 |
+
max_seq_length=256,
|
| 43 |
+
model_args={"add_pooling_layer": False})
|
| 44 |
+
|
| 45 |
+
pooling = models.Pooling(transformer.get_word_embedding_dimension(),
|
| 46 |
+
pooling_mode="mean")
|
| 47 |
+
|
| 48 |
+
model = SentenceTransformer(modules=[transformer, pooling])
|
| 49 |
+
|
| 50 |
+
smiles = [
|
| 51 |
+
"Brc1cc2c(NCc3ccccc3)ncnc2s1",
|
| 52 |
+
"Brc1cc2c(NCc3ccccn3)ncnc2s1",
|
| 53 |
+
"Brc1cc2c(NCc3cccs3)ncnc2s1",
|
| 54 |
+
"Brc1cc2c(NCc3ccncc3)ncnc2s1",
|
| 55 |
+
"Brc1cc2c(Nc3ccccc3)ncnc2s1"
|
| 56 |
+
]
|
| 57 |
+
|
| 58 |
+
embeddings2 = model.encode(smiles, convert_to_tensor=True)
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
|
| 62 |
## Decoder
|
| 63 |
|
| 64 |
There is also a [decoder model](https://huggingface.co/entropy/roberta_zinc_decoder) trained to reconstruct
|