Instructions to use Angshul/SpliNet with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Angshul/SpliNet with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("fill-mask", model="Angshul/SpliNet", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForMaskedLM model = AutoModelForMaskedLM.from_pretrained("Angshul/SpliNet", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 3,561 Bytes
4ec5e47 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | import os
import shutil
import unicodedata
import sentencepiece as spm
from transformers import PreTrainedTokenizer
class SpliNetTokenizer(PreTrainedTokenizer):
vocab_files_names = {
"vocab_file": "spiece.model"
}
model_input_names = [
"input_ids",
"token_type_ids",
"attention_mask",
]
def __init__(
self,
vocab_file,
do_lower_case=True,
**kwargs,
):
self.vocab_file = vocab_file
self.do_lower_case = bool(do_lower_case)
self.sp_model = spm.SentencePieceProcessor(
model_file=vocab_file
)
# tokenizer_config.json may already provide these.
# setdefault prevents passing any keyword twice.
kwargs.setdefault("unk_token", "<unk>")
kwargs.setdefault("bos_token", "<s>")
kwargs.setdefault("eos_token", "</s>")
kwargs.setdefault("pad_token", "<pad>")
kwargs.setdefault("cls_token", "<cls>")
kwargs.setdefault("sep_token", "<sep>")
kwargs.setdefault("mask_token", "<mask>")
super().__init__(**kwargs)
@property
def vocab_size(self):
return int(
self.sp_model.get_piece_size()
)
def get_vocab(self):
return {
self.sp_model.id_to_piece(i): i
for i in range(self.vocab_size)
}
def _normalize(self, text):
text = text or ""
if self.do_lower_case:
text = unicodedata.normalize(
"NFKC",
text,
).lower()
return " ".join(text.split())
def _tokenize(self, text):
return self.sp_model.encode(
self._normalize(text),
out_type=str,
)
def _convert_token_to_id(self, token):
return int(
self.sp_model.piece_to_id(token)
)
def _convert_id_to_token(self, index):
return self.sp_model.id_to_piece(
int(index)
)
def convert_tokens_to_string(self, tokens):
return self.sp_model.decode(tokens)
def build_inputs_with_special_tokens(
self,
token_ids_0,
token_ids_1=None,
):
if token_ids_1 is None:
return (
[self.cls_token_id]
+ list(token_ids_0)
+ [self.sep_token_id]
)
return (
[self.cls_token_id]
+ list(token_ids_0)
+ [self.sep_token_id]
+ list(token_ids_1)
+ [self.sep_token_id]
)
def create_token_type_ids_from_sequences(
self,
token_ids_0,
token_ids_1=None,
):
if token_ids_1 is None:
return [0] * (
len(token_ids_0) + 2
)
return (
[0] * (len(token_ids_0) + 2)
+ [1] * (len(token_ids_1) + 1)
)
def save_vocabulary(
self,
save_directory,
filename_prefix=None,
):
os.makedirs(
save_directory,
exist_ok=True,
)
prefix = (
filename_prefix + "-"
if filename_prefix
else ""
)
destination = os.path.join(
save_directory,
prefix + "spiece.model",
)
if (
os.path.abspath(self.vocab_file)
!= os.path.abspath(destination)
):
shutil.copy2(
self.vocab_file,
destination,
)
return (destination,)
|