tymbos commited on
Commit
9dd78b5
·
verified ·
1 Parent(s): 5d41434

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -7
app.py CHANGED
@@ -17,8 +17,11 @@ DetectorFactory.seed = 0
17
  CHECKPOINT_FILE = "checkpoint.txt"
18
  TOKENIZER_DIR = "tokenizer_model"
19
  TOKENIZER_FILE = os.path.join(TOKENIZER_DIR, "tokenizer.json")
20
- CHUNK_SIZE = 1000 # Μέγεθος batch για checkpoint
21
- MAX_SAMPLES = 3000000 # Όριο δειγμάτων (μπορείς να το προσαρμόσεις)
 
 
 
22
 
23
  def fetch_splits(dataset_name):
24
  """Ανάκτηση των splits του dataset από το Hugging Face."""
@@ -101,7 +104,8 @@ def analyze_checkpoint(num_samples=1000):
101
 
102
  def train_and_test(dataset_name, configs, split, vocab_size, min_freq, test_text):
103
  """Εκπαίδευση του tokenizer και δοκιμή του."""
104
- print("🚀 Ξεκινά η διαδικασία εκπαίδευσης...")
 
105
 
106
  all_texts = load_checkpoint()
107
  total_processed = len(all_texts)
@@ -111,20 +115,28 @@ def train_and_test(dataset_name, configs, split, vocab_size, min_freq, test_text
111
  new_texts = []
112
 
113
  for text in dataset_iterator:
114
- if total_processed >= MAX_SAMPLES:
115
- break # Διακοπή εάν ξεπεραστεί το όριο
 
 
 
116
  new_texts.append(text)
117
  total_processed += 1
 
118
  if len(new_texts) >= CHUNK_SIZE:
119
  append_to_checkpoint(new_texts)
120
  print(f"✅ Αποθηκεύτηκαν {total_processed} δείγματα στο checkpoint.")
121
  new_texts = []
 
 
 
 
122
 
123
  if new_texts:
124
  append_to_checkpoint(new_texts)
125
  print(f"✅ Τελικό batch αποθηκεύτηκε ({total_processed} δείγματα).")
126
 
127
- print("🚀 Η αποθήκευση δεδομένων ολοκληρώθηκε! Ξεκινάει η εκπαίδευση του tokenizer...")
128
 
129
  # Εκπαίδευση του tokenizer
130
  all_texts = load_checkpoint()
@@ -147,7 +159,23 @@ def train_and_test(dataset_name, configs, split, vocab_size, min_freq, test_text
147
  plt.savefig(img_buffer, format='png')
148
  plt.close()
149
 
150
- return f"✅ Εκπαίδευση ολοκληρώθηκε!\nΑποθηκεύτηκε στον φάκελο: {TOKENIZER_DIR}", decoded, img_buffer.getvalue()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
 
152
  # Gradio Interface
153
  with gr.Blocks() as demo:
@@ -163,6 +191,8 @@ with gr.Blocks() as demo:
163
  test_text = gr.Textbox(value="Η Ακρόπολη είναι σύμβολο της αρχαίας Ελλάδας.", label="Test Text")
164
  train_btn = gr.Button("Train")
165
  analyze_btn = gr.Button("Analyze Samples")
 
 
166
  with gr.Column():
167
  progress = gr.Textbox(label="Progress", interactive=False, lines=10)
168
  results_text = gr.Textbox(label="Test Decoded Text", interactive=False)
@@ -178,5 +208,8 @@ with gr.Blocks() as demo:
178
  analyze_btn.click(fn=lambda: analyze_checkpoint(1000),
179
  inputs=[],
180
  outputs=progress)
 
 
 
181
 
182
  demo.launch()
 
17
  CHECKPOINT_FILE = "checkpoint.txt"
18
  TOKENIZER_DIR = "tokenizer_model"
19
  TOKENIZER_FILE = os.path.join(TOKENIZER_DIR, "tokenizer.json")
20
+ CHUNK_SIZE = 1000 # Μέγεθος batch για checkpoint
21
+ MAX_SAMPLES = 3000000 # Όριο δειγμάτων (προσαρμόστε ανάλογα με τις ανάγκες σας)
22
+
23
+ # Παγκόσμια μεταβλητή ελέγχου συλλογής
24
+ STOP_COLLECTION = False
25
 
26
  def fetch_splits(dataset_name):
27
  """Ανάκτηση των splits του dataset από το Hugging Face."""
 
104
 
105
  def train_and_test(dataset_name, configs, split, vocab_size, min_freq, test_text):
106
  """Εκπαίδευση του tokenizer και δοκιμή του."""
107
+ global STOP_COLLECTION
108
+ print("🚀 Ξεκινά η διαδικασία συλλογής και εκπαίδευσης...")
109
 
110
  all_texts = load_checkpoint()
111
  total_processed = len(all_texts)
 
115
  new_texts = []
116
 
117
  for text in dataset_iterator:
118
+ # Έλεγχος αν έχει ζητηθεί διακοπή
119
+ if STOP_COLLECTION:
120
+ print("⏹️ Συλλογή σταμάτησε από το χρήστη.")
121
+ break
122
+
123
  new_texts.append(text)
124
  total_processed += 1
125
+
126
  if len(new_texts) >= CHUNK_SIZE:
127
  append_to_checkpoint(new_texts)
128
  print(f"✅ Αποθηκεύτηκαν {total_processed} δείγματα στο checkpoint.")
129
  new_texts = []
130
+
131
+ if total_processed >= MAX_SAMPLES:
132
+ print("⚠️ Έφτασε το όριο δειγμάτων.")
133
+ break
134
 
135
  if new_texts:
136
  append_to_checkpoint(new_texts)
137
  print(f"✅ Τελικό batch αποθηκεύτηκε ({total_processed} δείγματα).")
138
 
139
+ print("🚀 Η συλλογή δεδομένων ολοκληρώθηκε! Ξεκινάει η εκπαίδευση του tokenizer...")
140
 
141
  # Εκπαίδευση του tokenizer
142
  all_texts = load_checkpoint()
 
159
  plt.savefig(img_buffer, format='png')
160
  plt.close()
161
 
162
+ return (f"✅ Εκπαίδευση ολοκληρώθηκε!\nΑποθηκεύτηκε στον φάκελο: {TOKENIZER_DIR}",
163
+ decoded,
164
+ img_buffer.getvalue())
165
+
166
+ # Callback για τη διακοπή συλλογής
167
+ def stop_collection():
168
+ global STOP_COLLECTION
169
+ STOP_COLLECTION = True
170
+ print("⏹️ Ο χρήστης ζήτησε διακοπή συλλογής δειγμάτων.")
171
+ return "Η συλλογή σταμάτησε!"
172
+
173
+ # Callback για την επανεκκίνηση συλλογής
174
+ def restart_collection():
175
+ global STOP_COLLECTION
176
+ STOP_COLLECTION = False
177
+ print("▶️ Ο χρήστης ζήτησε επανεκκίνηση συλλογής δειγμάτων.")
178
+ return "Η συλλογή ξεκίνησε εκ νέου!"
179
 
180
  # Gradio Interface
181
  with gr.Blocks() as demo:
 
191
  test_text = gr.Textbox(value="Η Ακρόπολη είναι σύμβολο της αρχαίας Ελλάδας.", label="Test Text")
192
  train_btn = gr.Button("Train")
193
  analyze_btn = gr.Button("Analyze Samples")
194
+ stop_btn = gr.Button("Stop Collection")
195
+ restart_btn = gr.Button("Restart Collection")
196
  with gr.Column():
197
  progress = gr.Textbox(label="Progress", interactive=False, lines=10)
198
  results_text = gr.Textbox(label="Test Decoded Text", interactive=False)
 
208
  analyze_btn.click(fn=lambda: analyze_checkpoint(1000),
209
  inputs=[],
210
  outputs=progress)
211
+
212
+ stop_btn.click(fn=stop_collection, inputs=[], outputs=progress)
213
+ restart_btn.click(fn=restart_collection, inputs=[], outputs=progress)
214
 
215
  demo.launch()