Instructions to use evm-alpha/semantic-evm-mlm-chkp1000 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use evm-alpha/semantic-evm-mlm-chkp1000 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("fill-mask", model="evm-alpha/semantic-evm-mlm-chkp1000")# Load model directly from transformers import AutoTokenizer, AutoModelForMaskedLM tokenizer = AutoTokenizer.from_pretrained("evm-alpha/semantic-evm-mlm-chkp1000") model = AutoModelForMaskedLM.from_pretrained("evm-alpha/semantic-evm-mlm-chkp1000", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Upload folder using huggingface_hub
Browse files
README.md
CHANGED
|
@@ -62,23 +62,46 @@ from transformers import AutoModel, AutoTokenizer
|
|
| 62 |
tokenizer = AutoTokenizer.from_pretrained("evm-alpha/semantic-evm-mlm-chkp1000")
|
| 63 |
model = AutoModel.from_pretrained("evm-alpha/semantic-evm-mlm-chkp1000")
|
| 64 |
|
| 65 |
-
#
|
| 66 |
-
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
outputs = model(**inputs)
|
| 69 |
|
| 70 |
-
# Get embeddings (mean pooling
|
| 71 |
embeddings = outputs.last_hidden_state # [batch, seq_len, hidden_size]
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
pooled = masked_embeddings.sum(1) / attention_mask.sum(1, keepdim=True) # mean pooling
|
| 75 |
```
|
| 76 |
|
| 77 |
## Limitations
|
| 78 |
|
|
|
|
| 79 |
- Max context: 512 tokens (~256 bytes of bytecode)
|
| 80 |
- Optimized for EVM bytecode patterns; not intended for natural language
|
| 81 |
-
- Trained only across ethereum, optimism, base, unichain, bsc and bera
|
| 82 |
|
| 83 |
## License
|
| 84 |
|
|
|
|
| 62 |
tokenizer = AutoTokenizer.from_pretrained("evm-alpha/semantic-evm-mlm-chkp1000")
|
| 63 |
model = AutoModel.from_pretrained("evm-alpha/semantic-evm-mlm-chkp1000")
|
| 64 |
|
| 65 |
+
# This tokenizer uses byte-level BPE (GPT-2 style).
|
| 66 |
+
# You must convert raw bytes to the GPT-2 unicode format:
|
| 67 |
+
|
| 68 |
+
def bytes_to_unicode_map():
|
| 69 |
+
"""GPT-2 byte-to-unicode mapping."""
|
| 70 |
+
bs = list(range(ord("!"), ord("~") + 1)) + list(range(ord("隆"), ord("卢") + 1)) + list(range(ord("庐"), ord("每") + 1))
|
| 71 |
+
cs = bs[:]
|
| 72 |
+
n = 0
|
| 73 |
+
for b in range(256):
|
| 74 |
+
if b not in bs:
|
| 75 |
+
bs.append(b)
|
| 76 |
+
cs.append(256 + n)
|
| 77 |
+
n += 1
|
| 78 |
+
return dict(zip(bs, [chr(c) for c in cs]))
|
| 79 |
+
|
| 80 |
+
BYTE_MAP = bytes_to_unicode_map()
|
| 81 |
+
|
| 82 |
+
def encode_evm_bytes(data: bytes) -> str:
|
| 83 |
+
"""Convert raw EVM bytes to tokenizer input string."""
|
| 84 |
+
return "".join(BYTE_MAP[b] for b in data)
|
| 85 |
+
|
| 86 |
+
# Example: encode raw EVM bytecode
|
| 87 |
+
bytecode_hex = "608060405234801561001057600080fd5b50"
|
| 88 |
+
raw_bytes = bytes.fromhex(bytecode_hex)
|
| 89 |
+
tokenizer_input = encode_evm_bytes(raw_bytes)
|
| 90 |
+
|
| 91 |
+
inputs = tokenizer(tokenizer_input, return_tensors="pt")
|
| 92 |
outputs = model(**inputs)
|
| 93 |
|
| 94 |
+
# Get embeddings (mean pooling)
|
| 95 |
embeddings = outputs.last_hidden_state # [batch, seq_len, hidden_size]
|
| 96 |
+
mask = inputs["attention_mask"].unsqueeze(-1)
|
| 97 |
+
pooled = (embeddings * mask).sum(1) / mask.sum(1)
|
|
|
|
| 98 |
```
|
| 99 |
|
| 100 |
## Limitations
|
| 101 |
|
| 102 |
+
- Trained on specific EVM chains; may not generalize to all EVM variants
|
| 103 |
- Max context: 512 tokens (~256 bytes of bytecode)
|
| 104 |
- Optimized for EVM bytecode patterns; not intended for natural language
|
|
|
|
| 105 |
|
| 106 |
## License
|
| 107 |
|