CoolFace
Apppublic

eihab2342/code-efficiency

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
tokenizer.py48 linesDownload Raw Back to preprocessing
1# src/preprocessing/tokenizer.py2"""3Wrapper على tokenizer CodeT5.4Input format:  "optimize: <slow_code>"5Output format: <fast_code>6"""7from transformers import AutoTokenizer8from src.utils.config import PRETRAINED_MODEL, MAX_INPUT_LEN, MAX_TARGET_LEN9from src.utils.logger import get_logger10 11log = get_logger("tokenizer")12 13 14def get_tokenizer():15    log.info(f"تحميل tokenizer: {PRETRAINED_MODEL}")16    return AutoTokenizer.from_pretrained(PRETRAINED_MODEL)17 18 19def encode_sample(tokenizer, slow_code: str, fast_code: str | None = None) -> dict:20    """21    يحوّل sample واحد لـ tensors جاهزة للموديل.22    لو fast_code=None → inference mode (بدون labels).23    """24    inputs = tokenizer(25        f"optimize: {slow_code}",26        max_length=MAX_INPUT_LEN,27        padding="max_length",28        truncation=True,29        return_tensors="pt",30    )31 32    if fast_code is None:33        return inputs34 35    with tokenizer.as_target_tokenizer():36        targets = tokenizer(37            fast_code,38            max_length=MAX_TARGET_LEN,39            padding="max_length",40            truncation=True,41            return_tensors="pt",42        )43 44    labels = targets["input_ids"]45    labels[labels == tokenizer.pad_token_id] = -100   # ignore padding في الـ loss46    inputs["labels"] = labels47    return inputs48