pip install torch pip install tensorflow pip install -r requirements.txt from fastapi import FastAPI from contextlib import asynccontextmanager from transformers import PreTrainedTokenizerFast from tokenizers import ByteLevelBPETokenizer from datasets import load_dataset app = FastAPI() @asynccontextmanager 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=["", "", "", "", ""] ) # Αποθήκευση του tokenizer tokenizer.save_model(".") @app.get("/") async def root(): return {"message": "Custom Tokenizer Training Completed and Saved"}