ginipick commited on
Commit
8736adb
·
verified ·
1 Parent(s): 59824a6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -42
app.py CHANGED
@@ -1,5 +1,6 @@
1
- import os
2
  import spaces
 
3
  import time
4
  import gradio as gr
5
  import torch
@@ -8,9 +9,11 @@ from torchvision import transforms
8
  from dataclasses import dataclass
9
  import math
10
  from typing import Callable
 
11
  from tqdm import tqdm
12
  import bitsandbytes as bnb
13
  from bitsandbytes.nn.modules import Params4bit, QuantState
 
14
  import torch
15
  import random
16
  from einops import rearrange, repeat
@@ -18,8 +21,8 @@ from diffusers import AutoencoderKL
18
  from torch import Tensor, nn
19
  from transformers import CLIPTextModel, CLIPTokenizer
20
  from transformers import T5EncoderModel, T5Tokenizer
21
- from transformers import pipeline, AutoTokenizer, MarianMTModel
22
- from transformers import MarianMTModel, MarianTokenizer
23
 
24
  class HFEmbedder(nn.Module):
25
  def __init__(self, version: str, max_length: int, **hf_kwargs):
@@ -737,6 +740,7 @@ model_zero_init = False
737
 
738
  # 언어-모델 매핑 딕셔너리 추가
739
  TRANSLATORS = {
 
740
  "Korean": "Helsinki-NLP/opus-mt-ko-en",
741
  "Japanese": "Helsinki-NLP/opus-mt-ja-en",
742
  "Chinese": "Helsinki-NLP/opus-mt-zh-en",
@@ -778,6 +782,42 @@ TRANSLATORS = {
778
  # 번역기 캐시 딕셔너리
779
  translators_cache = {}
780
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
781
  def get_translator(lang):
782
  if lang == "English":
783
  return None
@@ -800,24 +840,6 @@ def get_translator(lang):
800
 
801
  return translators_cache[lang]
802
 
803
- def translate_prompt(prompt, source_lang):
804
- if source_lang == "English":
805
- return prompt
806
-
807
- translator = get_translator(source_lang)
808
- if translator is None:
809
- print(f"No translator available for {source_lang}, using original prompt")
810
- return prompt
811
-
812
- try:
813
- translated = translator(prompt, max_length=512)[0]['translation_text']
814
- print(f"Original: {prompt}")
815
- print(f"Translated from {source_lang}: {translated}")
816
- return translated
817
- except Exception as e:
818
- print(f"Translation error: {e}")
819
- return prompt
820
-
821
  def translate_text(text, translator_info):
822
  if translator_info is None:
823
  return text
@@ -846,19 +868,14 @@ def generate_image(
846
  progress=gr.Progress(track_tqdm=True),
847
  ):
848
  # 번역 처리
849
- if source_lang != "English":
850
- try:
851
- translated_prompt = translate_prompt(prompt, source_lang)
852
- print(f"Using translated prompt: {translated_prompt}")
853
- except Exception as e:
854
- print(f"Translation failed: {e}")
855
- translated_prompt = prompt
856
- else:
857
  translated_prompt = prompt
858
-
859
-
860
-
861
 
 
862
  if seed == 0:
863
  seed = int(random.random() * 1000000)
864
 
@@ -914,10 +931,10 @@ footer {
914
  visibility: hidden;
915
  }
916
  """
917
-
918
  def create_demo():
919
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
920
- gr.Markdown("# Multilingual FLUXllama (36 Languages Support)")
 
921
 
922
  with gr.Row():
923
  with gr.Column():
@@ -927,12 +944,11 @@ def create_demo():
927
  label="Source Language"
928
  )
929
 
930
-
931
-
932
  prompt = gr.Textbox(
933
  label="Prompt",
934
- value="A cute and fluffy golden retriever puppy sitting upright..."
935
  )
 
936
 
937
  width = gr.Slider(minimum=128, maximum=2048, step=64, label="Width", value=768)
938
  height = gr.Slider(minimum=128, maximum=2048, step=64, label="Height", value=768)
@@ -959,18 +975,21 @@ def create_demo():
959
  output_seed = gr.Text(label="Used Seed")
960
  translated_prompt = gr.Text(label="Translated Prompt")
961
 
962
-
963
  examples = [
964
  # English
965
  ["A beautiful sunset over mountains", "English", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
966
  # Korean
967
  ["벚꽃이 흩날리는 서울의 봄 풍경", "Korean", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
968
- # Spanish
969
- ["Un hermoso atardecer en la playa", "Spanish", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
970
  # Chinese
971
- ["美丽的中国长城日落景色", "Chinese", 768, 768, 3.5, 30, 0, False, None, 0.8, True]
 
 
972
  ]
973
 
 
 
974
  gr.Examples(
975
  examples=examples,
976
  inputs=[
@@ -1002,5 +1021,8 @@ def create_demo():
1002
  return demo
1003
 
1004
  if __name__ == "__main__":
 
 
 
1005
  demo = create_demo()
1006
- demo.launch(share=True) # share=True 추가
 
1
+ # import os
2
  import spaces
3
+
4
  import time
5
  import gradio as gr
6
  import torch
 
9
  from dataclasses import dataclass
10
  import math
11
  from typing import Callable
12
+
13
  from tqdm import tqdm
14
  import bitsandbytes as bnb
15
  from bitsandbytes.nn.modules import Params4bit, QuantState
16
+
17
  import torch
18
  import random
19
  from einops import rearrange, repeat
 
21
  from torch import Tensor, nn
22
  from transformers import CLIPTextModel, CLIPTokenizer
23
  from transformers import T5EncoderModel, T5Tokenizer
24
+ # from optimum.quanto import freeze, qfloat8, quantize
25
+ from transformers import pipeline
26
 
27
  class HFEmbedder(nn.Module):
28
  def __init__(self, version: str, max_length: int, **hf_kwargs):
 
740
 
741
  # 언어-모델 매핑 딕셔너리 추가
742
  TRANSLATORS = {
743
+
744
  "Korean": "Helsinki-NLP/opus-mt-ko-en",
745
  "Japanese": "Helsinki-NLP/opus-mt-ja-en",
746
  "Chinese": "Helsinki-NLP/opus-mt-zh-en",
 
782
  # 번역기 캐시 딕셔너리
783
  translators_cache = {}
784
 
785
+ def initialize_translators():
786
+ global translators_cache
787
+ translators_cache = {}
788
+
789
+ for lang, model_name in TRANSLATORS.items():
790
+ try:
791
+ translator = pipeline(
792
+ task="translation",
793
+ model=model_name,
794
+ device="cpu" # CPU에서 실행
795
+ )
796
+ translators_cache[lang] = translator
797
+ print(f"Successfully loaded translator for {lang}")
798
+ except Exception as e:
799
+ print(f"Error loading translator for {lang}: {e}")
800
+ translators_cache[lang] = None
801
+
802
+ def translate_prompt(prompt, source_lang):
803
+ if source_lang == "English":
804
+ return prompt
805
+
806
+ translator = translators_cache.get(source_lang)
807
+ if translator is None:
808
+ print(f"No translator available for {source_lang}, using original prompt")
809
+ return prompt
810
+
811
+ try:
812
+ translation = translator(prompt, max_length=512)
813
+ translated_text = translation[0]['translation_text']
814
+ print(f"Original ({source_lang}): {prompt}")
815
+ print(f"Translated: {translated_text}")
816
+ return translated_text
817
+ except Exception as e:
818
+ print(f"Translation error for {source_lang}: {e}")
819
+ return prompt
820
+
821
  def get_translator(lang):
822
  if lang == "English":
823
  return None
 
840
 
841
  return translators_cache[lang]
842
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
843
  def translate_text(text, translator_info):
844
  if translator_info is None:
845
  return text
 
868
  progress=gr.Progress(track_tqdm=True),
869
  ):
870
  # 번역 처리
871
+ try:
872
+ translated_prompt = translate_prompt(prompt, source_lang)
873
+ print(f"Final prompt to use: {translated_prompt}")
874
+ except Exception as e:
875
+ print(f"Translation failed: {e}")
 
 
 
876
  translated_prompt = prompt
 
 
 
877
 
878
+
879
  if seed == 0:
880
  seed = int(random.random() * 1000000)
881
 
 
931
  visibility: hidden;
932
  }
933
  """
 
934
  def create_demo():
935
  with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", css=css) as demo:
936
+ gr.Markdown("# Multilingual FLUX")
937
+ gr.Markdown("Supported languages: " + ", ".join(["English"] + sorted(list(TRANSLATORS.keys()))))
938
 
939
  with gr.Row():
940
  with gr.Column():
 
944
  label="Source Language"
945
  )
946
 
 
 
947
  prompt = gr.Textbox(
948
  label="Prompt",
949
+ value="A beautiful landscape"
950
  )
951
+
952
 
953
  width = gr.Slider(minimum=128, maximum=2048, step=64, label="Width", value=768)
954
  height = gr.Slider(minimum=128, maximum=2048, step=64, label="Height", value=768)
 
975
  output_seed = gr.Text(label="Used Seed")
976
  translated_prompt = gr.Text(label="Translated Prompt")
977
 
 
978
  examples = [
979
  # English
980
  ["A beautiful sunset over mountains", "English", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
981
  # Korean
982
  ["벚꽃이 흩날리는 서울의 봄 풍경", "Korean", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
983
+ # Japanese
984
+ ["富士山と桜の美しい風景", "Japanese", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
985
  # Chinese
986
+ ["长城日落的壮丽景色", "Chinese", 768, 768, 3.5, 30, 0, False, None, 0.8, True],
987
+ # Spanish
988
+ ["Un hermoso atardecer en la playa", "Spanish", 768, 768, 3.5, 30, 0, False, None, 0.8, True]
989
  ]
990
 
991
+
992
+
993
  gr.Examples(
994
  examples=examples,
995
  inputs=[
 
1021
  return demo
1022
 
1023
  if __name__ == "__main__":
1024
+ print("Initializing translators...")
1025
+ initialize_translators() # 번역기 초기화
1026
+ print("Starting demo...")
1027
  demo = create_demo()
1028
+ demo.launch(share=True)