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"}