Spaces:
Runtime error
Runtime error
from fastapi import FastAPI | |
from transformers import PreTrainedTokenizerFast | |
from tokenizers import ByteLevelBPETokenizer | |
from datasets import load_dataset | |
from contextlib import asynccontextmanager | |
app = FastAPI() | |
async def lifespan(app: FastAPI): | |
# Εκκίνηση της διαδικασίας εκπαίδευσης του tokenizer όταν η εφαρμογή ξεκινά | |
await train_tokenizer() | |
yield # Διαχείριση κατά τη διάρκεια της εφαρμογής | |
# Οποιαδήποτε διαδικασία που πρέπει να γίνει όταν η εφαρμογή σταματήσει | |
app = FastAPI(lifespan=lifespan) | |
async def train_tokenizer(): | |
# Ρυθμίσεις tokenizer | |
vocab_size = 50000 | |
min_frequency = 2 | |
# Φόρτωση δεδομένων από Oscar και Wikipedia μέσω streaming | |
dataset_greek = load_dataset("oscar", "unshuffled_deduplicated_el", split="train", streaming=True) | |
dataset_english = load_dataset("wikipedia", "20220301.en", split="train", streaming=True) | |
# Διαχείριση καθαρού κώδικα (αν βρεθούν κατάλληλα δεδομένα) | |
try: | |
dataset_code = load_dataset("bigcode/the-stack", split="train", streaming=True) | |
datasets_list = [dataset_greek, dataset_english, dataset_code] | |
except: | |
datasets_list = [dataset_greek, dataset_english] | |
# Ενοποίηση δεδομένων και προεπεξεργασία | |
def preprocess_data(dataset): | |
for item in dataset: | |
text = item["text"] | |
text = text.strip().lower() # Μπορείς να το κάνεις lower αν το θέλεις | |
if text: | |
yield text | |
combined_data = (preprocess_data(dataset) for dataset in datasets_list) | |
# Δημιουργία του tokenizer | |
tokenizer = ByteLevelBPETokenizer() | |
# Εκπαίδευση του tokenizer | |
tokenizer.train_from_iterator( | |
combined_data, | |
vocab_size=vocab_size, | |
min_frequency=min_frequency, | |
special_tokens=["<s>", "<pad>", "</s>", "<unk>", "<mask>"] | |
) | |
# Αποθήκευση του tokenizer | |
tokenizer.save_model(".") | |
async def root(): | |
return {"message": "Custom Tokenizer Training Completed and Saved"} | |