tokenGPT-2 / app.py
Itsme5's picture
Update app.py
887ad63 verified
raw
history blame
2.41 kB
!pip install torch
!pip install tensorflow
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=["<s>", "<pad>", "</s>", "<unk>", "<mask>"]
)
# Αποθήκευση του tokenizer
tokenizer.save_model(".")
@app.get("/")
async def root():
return {"message": "Custom Tokenizer Training Completed and Saved"}