Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -8,12 +8,10 @@ import matplotlib.animation as animation
|
|
8 |
import time
|
9 |
import threading
|
10 |
from tqdm import tqdm
|
11 |
-
from transformers import AutoTokenizer, AutoModel, TrainingArguments, pipeline
|
12 |
from diffusers import DiffusionPipeline
|
13 |
from huggingface_hub import login, HfApi, Repository
|
14 |
from dotenv import load_dotenv
|
15 |
-
import gradio as gr
|
16 |
-
|
17 |
|
18 |
# Cargar variables de entorno
|
19 |
load_dotenv()
|
@@ -114,6 +112,9 @@ def main():
|
|
114 |
|
115 |
# Inicializar los pipelines
|
116 |
pipelines_to_unify = [
|
|
|
|
|
|
|
117 |
DiffusionPipeline.from_pretrained("stabilityai/stable-video-diffusion-img2vid-xt-1-1"),
|
118 |
pipeline("automatic-speech-recognition", model="openai/whisper-small"),
|
119 |
DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev"),
|
@@ -134,6 +135,13 @@ def main():
|
|
134 |
pipeline("text-generation", model="Groq/Llama-3-Groq-8B-Tool-Use")
|
135 |
]
|
136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
tokenizers = {}
|
138 |
models = []
|
139 |
for model_name in models_to_train:
|
@@ -146,8 +154,11 @@ def main():
|
|
146 |
tokenizers[model_name] = tokenizer
|
147 |
models.append(model)
|
148 |
|
149 |
-
|
150 |
-
|
|
|
|
|
|
|
151 |
|
152 |
# Crear un dataset sint茅tico para entrenamiento y evaluaci贸n
|
153 |
synthetic_dataset = SyntheticDataset(tokenizers, size=100)
|
@@ -191,45 +202,43 @@ def main():
|
|
191 |
def train(model, train_loader, eval_loader, args):
|
192 |
model.train()
|
193 |
epoch = 0
|
194 |
-
total_steps =
|
195 |
-
|
196 |
-
|
197 |
-
while epoch < args.num_train_epochs:
|
198 |
start_time = time.time()
|
199 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
input_ids = [batch[f"input_ids_{name}"].to("cpu") for name in tokenizers.keys()]
|
201 |
attention_mask = [batch[f"attention_mask_{name}"].to("cpu") for name in tokenizers.keys()]
|
202 |
labels = batch["label"].to("cpu")
|
203 |
-
optimizer.zero_grad()
|
204 |
outputs = model(input_ids)
|
205 |
loss = nn.CrossEntropyLoss()(outputs, labels)
|
206 |
-
loss.
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
estimated_total_time = total_steps * (elapsed_time / (step + 1))
|
212 |
-
estimated_remaining_time = estimated_total_time - elapsed_time
|
213 |
-
|
214 |
-
if step % args.logging_steps == 0:
|
215 |
-
train_losses.append(loss.item())
|
216 |
-
print(f"Step {step}/{total_steps}, Loss: {loss.item()}, Estimated remaining time: {estimated_remaining_time:.2f} seconds")
|
217 |
-
|
218 |
-
epoch += 1
|
219 |
-
model.eval()
|
220 |
-
eval_loss = 0
|
221 |
-
with torch.no_grad():
|
222 |
-
for batch in eval_loader:
|
223 |
-
input_ids = [batch[f"input_ids_{name}"].to("cpu") for name in tokenizers.keys()]
|
224 |
-
attention_mask = [batch[f"attention_mask_{name}"].to("cpu") for name in tokenizers.keys()]
|
225 |
-
labels = batch["label"].to("cpu")
|
226 |
-
outputs = model(input_ids)
|
227 |
-
loss = nn.CrossEntropyLoss()(outputs, labels)
|
228 |
-
eval_loss += loss.item()
|
229 |
-
|
230 |
-
eval_loss /= len(eval_loader)
|
231 |
-
eval_losses.append(eval_loss)
|
232 |
-
print(f"Epoch {epoch}/{args.num_train_epochs}, Evaluation Loss: {eval_loss}")
|
233 |
|
234 |
train(unified_model, train_loader, eval_loader, training_args)
|
235 |
|
@@ -257,26 +266,5 @@ def main():
|
|
257 |
print(f"Error: {e}")
|
258 |
time.sleep(2)
|
259 |
|
260 |
-
|
261 |
-
|
262 |
-
def gradio_app():
|
263 |
-
with gr.Blocks() as app:
|
264 |
-
gr.Markdown(
|
265 |
-
"""
|
266 |
-
# IA Generativa con Transformers y Diffusers
|
267 |
-
Explora diferentes modelos de IA para generar texto, im谩genes, audio, video y m谩s.
|
268 |
-
"""
|
269 |
-
)
|
270 |
-
app.launch()
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
if __name__ == "__main__":
|
277 |
main()
|
278 |
-
gradio_app()
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
|
|
8 |
import time
|
9 |
import threading
|
10 |
from tqdm import tqdm
|
11 |
+
from transformers import AutoTokenizer, AutoModel, AutoModelForTextToWaveform, TrainingArguments, pipeline
|
12 |
from diffusers import DiffusionPipeline
|
13 |
from huggingface_hub import login, HfApi, Repository
|
14 |
from dotenv import load_dotenv
|
|
|
|
|
15 |
|
16 |
# Cargar variables de entorno
|
17 |
load_dotenv()
|
|
|
112 |
|
113 |
# Inicializar los pipelines
|
114 |
pipelines_to_unify = [
|
115 |
+
pipeline("text-to-audio", model="facebook/musicgen-melody"),
|
116 |
+
pipeline("text-to-audio", model="facebook/musicgen-large"),
|
117 |
+
pipeline("text-to-audio", model="facebook/musicgen-small"),
|
118 |
DiffusionPipeline.from_pretrained("stabilityai/stable-video-diffusion-img2vid-xt-1-1"),
|
119 |
pipeline("automatic-speech-recognition", model="openai/whisper-small"),
|
120 |
DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev"),
|
|
|
135 |
pipeline("text-generation", model="Groq/Llama-3-Groq-8B-Tool-Use")
|
136 |
]
|
137 |
|
138 |
+
# A帽adir modelos adicionales
|
139 |
+
additional_models = [
|
140 |
+
"facebook/musicgen-large",
|
141 |
+
"facebook/musicgen-melody"
|
142 |
+
]
|
143 |
+
|
144 |
+
# Inicializar los tokenizadores y modelos
|
145 |
tokenizers = {}
|
146 |
models = []
|
147 |
for model_name in models_to_train:
|
|
|
154 |
tokenizers[model_name] = tokenizer
|
155 |
models.append(model)
|
156 |
|
157 |
+
for model_name in additional_models:
|
158 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
|
159 |
+
model = AutoModelForTextToWaveform.from_pretrained(model_name)
|
160 |
+
tokenizers[model_name] = tokenizer
|
161 |
+
models.append(model)
|
162 |
|
163 |
# Crear un dataset sint茅tico para entrenamiento y evaluaci贸n
|
164 |
synthetic_dataset = SyntheticDataset(tokenizers, size=100)
|
|
|
202 |
def train(model, train_loader, eval_loader, args):
|
203 |
model.train()
|
204 |
epoch = 0
|
205 |
+
total_steps = len(train_loader)
|
206 |
+
for step, batch in enumerate(train_loader):
|
|
|
|
|
207 |
start_time = time.time()
|
208 |
+
input_ids = [batch[f"input_ids_{name}"].to("cpu") for name in tokenizers.keys()]
|
209 |
+
attention_mask = [batch[f"attention_mask_{name}"].to("cpu") for name in tokenizers.keys()]
|
210 |
+
labels = batch["label"].to("cpu")
|
211 |
+
optimizer.zero_grad()
|
212 |
+
outputs = model(input_ids)
|
213 |
+
loss = nn.CrossEntropyLoss()(outputs, labels)
|
214 |
+
loss.backward()
|
215 |
+
optimizer.step()
|
216 |
+
|
217 |
+
progress_bar.update(1)
|
218 |
+
|
219 |
+
elapsed_time = time.time() - start_time
|
220 |
+
estimated_total_time = total_steps * (elapsed_time / (step + 1))
|
221 |
+
estimated_remaining_time = estimated_total_time - elapsed_time
|
222 |
+
|
223 |
+
if step % args.logging_steps == 0:
|
224 |
+
train_losses.append(loss.item())
|
225 |
+
print(f"Step {step}/{total_steps}, Loss: {loss.item()}, Estimated remaining time: {estimated_remaining_time:.2f} seconds")
|
226 |
+
|
227 |
+
epoch += 1
|
228 |
+
model.eval()
|
229 |
+
eval_loss = 0
|
230 |
+
with torch.no_grad():
|
231 |
+
for batch in eval_loader:
|
232 |
input_ids = [batch[f"input_ids_{name}"].to("cpu") for name in tokenizers.keys()]
|
233 |
attention_mask = [batch[f"attention_mask_{name}"].to("cpu") for name in tokenizers.keys()]
|
234 |
labels = batch["label"].to("cpu")
|
|
|
235 |
outputs = model(input_ids)
|
236 |
loss = nn.CrossEntropyLoss()(outputs, labels)
|
237 |
+
eval_loss += loss.item()
|
238 |
+
|
239 |
+
eval_loss /= len(eval_loader)
|
240 |
+
eval_losses.append(eval_loss)
|
241 |
+
print(f"Epoch {epoch}/{args.num_train_epochs}, Evaluation Loss: {eval_loss}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
|
243 |
train(unified_model, train_loader, eval_loader, training_args)
|
244 |
|
|
|
266 |
print(f"Error: {e}")
|
267 |
time.sleep(2)
|
268 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
if __name__ == "__main__":
|
270 |
main()
|
|
|
|
|
|
|
|
|
|