Patel Traders commited on
Commit
bf38068
·
verified ·
1 Parent(s): f6f5b34

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +106 -75
app.py CHANGED
@@ -1,115 +1,146 @@
1
- # --- 🔱 हनुमान AI: अजेय वीडियो जनेशन (CogVideoX-2b) ---
2
  # मार्गदर्शक: दिव्य पटेल जी | भारत 🇮🇳
3
- # मॉडल: THUDM/CogVideoX-2b (अत्यंत आधुनिक और 16GB रैम सुरक्षित)
4
- # विशेषता: CPU पर बिना क्रैश हुए वीडियो निर्माण
5
 
6
  import gradio as gr
7
  import torch
8
- from diffusers import CogVideoXPipeline
9
- from diffusers.utils import export_to_video
10
  import os
11
- from datetime import datetime
12
 
13
- # 🛡️ CPU को ओव से बचाने के लिए थ्रेड्स की सेटिंग
14
- os.environ["OMP_NUM_THREADS"] = "2"
15
- torch.set_num_threads(2)
16
 
17
- MODEL_ID = "THUDM/CogVideoX-2b"
 
18
 
19
- print(f"🔱 हनुमान AI: वीडियहा-अस्त्र '{MODEL_ID}' लोड हो रहा है...")
20
 
21
- # 🛠️ रैम ऑप्टिमाइजेशन: मॉडल को सुरक्षित रूप से लोड करना
22
  try:
23
- # 16GB रैम में फिट रनके लिए bfloat16 उपयोग श्यक है
24
- pipe = CogVideoXPipeline.from_pretrained(
25
- MODEL_ID,
26
- torch_dtype=torch.bfloat16
 
 
 
27
  )
28
- #ेमोरी बचान के लिए अजेय (Attention Slicing)
29
- pipe.enable_attention_slicing()
30
- print("🔱 हनुमान AI: वीडियो अस्त्र पूर्णतः सक्रिय है!")
31
  except Exception as e:
32
  print(f"🔱 गंभीर त्रुटि: {e}")
33
- pipe = None
34
 
35
- # आउटपुट फोल्डर बनाना
36
- if not os.path.exists("outputs"):
37
- os.makedirs("outputs")
38
-
39
- def hanuman_video_engine(prompt):
40
- """CogVideoX का उपयोग करके टेक्स्ट से वीडियो बनाने वाला अजेय इंजन"""
41
- if pipe is None:
42
- return None, "🔱 सिस्टम त्रुटि: वीडियो मॉडल लोड नहीं हो सका। कृपया रैम की जाँच करें।"
43
 
44
- if not prompt or len(prompt.strip()) == 0:
45
- return None, "कृपया कोईंदेश (Prompt) लिखें।"
 
46
 
 
 
 
 
 
 
47
  try:
48
- # ��� CPU लिए विशेष सुरकषित सेटिंग्स
49
- # num_inference_steps और num_frames को कम रखा गया है ताकि CPU पर क्रैश न हो और जल्दी बने
50
- video_frames = pipe(
51
- prompt=prompt,
52
- num_inference_steps=15, # CPU पर इसे 15 से ज्यादा न रखें
53
- num_frames=16, # 16 फ्रेम का एक छोटा वीडियो
54
- guidance_scale=6.0
55
- ).frames[0]
56
 
57
- # वीडियो को MP4 फॉर्मेट में सुरक्षित करना
58
- filename = f"outputs/divy_video_{datetime.now().strftime('%Y%m%d_%H%M%S')}.mp4"
59
- export_to_video(video_frames, filename, fps=8)
60
-
61
- return filename, "🔱 वीडियो सफलतापूर्वक बन गया है!"
62
- except Exception as e:
63
- return None, f"🔱 तकनीकी बाधा: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
- # --- 🔱 दिव्य भगवा यूआई ---
 
 
66
  divine_ui = """
67
  <style>
68
  .gradio-container { background-color: #fffaf0 !important; }
69
  .bhagwa-header {
70
  background: linear-gradient(135deg, #ff8833, #b33c00);
71
- padding: 30px; border-radius: 20px; color: white;
72
  text-align: center; box-shadow: 0 10px 25px rgba(179, 60, 0, 0.4);
73
- margin-bottom: 25px;
74
  }
75
- .bhagwa-header h1 { color: white !important; font-size: 32px !important; margin: 0; text-shadow: 0 4px 8px rgba(0,0,0,0.5); }
76
- .bhagwa-header p { font-size: 16px !important; opacity: 0.95; font-weight: 500; }
77
  </style>
78
  <div class="bhagwa-header">
79
- <h1>🔱 हनुमान AI - वीडियो जनरेटर (CogVideoX)</h1>
80
- <p>Pioneered by Divy Patel | भारत 🇮🇳 | अजेय वीडियो तकनीक</p>
81
  </div>
82
  """
83
 
84
- with gr.Blocks() as demo:
85
  gr.HTML(divine_ui)
86
 
87
  with gr.Row():
88
- with gr.Column(scale=1):
89
  prompt_input = gr.Textbox(
90
- label="वीडियो का विवरण (Prompt)",
91
- placeholder="यहाँ लिखें कि आप कैसा वीडियो बनाना चाहते हैं (सर्वोत्तम परिणाम के लिए अंग्रेजी का प्रयोग करें)...",
92
- lines=5
93
  )
94
- submit_btn = gr.Button("वीडियो निर्माण प्रारंभ करें", variant="primary")
95
- status_text = gr.Textbox(label="सिस्टम स्थिति", interactive=False)
96
 
97
- with gr.Column(scale=1):
98
- video_output = gr.Video(label="हनुमान AI द्वारा निर्मित वीडियो")
99
- gr.Markdown("""
100
- ### 🚩 दिव्य निर्देश एवं चेतावनी:
101
- 1. अपना प्रॉम्प्ट बायीं ओर लिखें।
102
- 2. **चेतावनी:** चूँकि यह एक भारी वीडियो मॉडल है और आप फ्री CPU का उपयोग कर रहे हैं, इसलिए एक छोटा वीडियो (2-3 सेकंड) बनने में **10 से 30 मिनट** का समय लग सकता है।
103
- 3. कृपया बटन दबाने के बाद धैर्य रखें और पेज को बंद न करें।
104
- """)
105
-
106
- # इवेंट बाइंडिंग
107
- submit_btn.click(
108
- fn=hanuman_video_engine,
109
- inputs=[prompt_input],
110
- outputs=[video_output, status_text]
 
 
 
 
 
111
  )
 
 
 
 
 
112
 
113
- # 🛠️ Queue को इनेबल करना अत्यंत आवश्यक है ताकि लंबा समय लगने पर Gradio क्रैश न हो (Timeout Fix)
114
  if __name__ == "__main__":
115
- demo.queue().launch()
 
1
+ # --- 🔱 हनुमान AI: स्देशQwen संस्क ---
2
  # मार्गदर्शक: दिव्य पटेल जी | भारत 🇮🇳
3
+ # मॉडल: Pateltraders55455/Qwen3.5-397B-A17B
4
+ # विशेषता: Live Streaming, Transformers Optimization & Custom Bhagwa UI
5
 
6
  import gradio as gr
7
  import torch
8
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
9
+ from threading import Thread
10
  import os
 
11
 
12
+ # 🛡️ CPU/RAM को क्ैश हने से बचाने के लिए थ्रेड्स सेट करना
13
+ os.environ["OMP_NUM_THREADS"] = "4"
14
+ torch.set_num_threads(4)
15
 
16
+ # 🚀 दिव्य जी की अपनी रिपॉजिटरी
17
+ HF_REPO = "Pateltraders55455/Qwen3.5-397B-A17B"
18
 
19
+ print(f"🔱 हनुमान AI जागृत हहा है... '{HF_REPO}' लोड किया जा रहा है...")
20
 
 
21
  try:
22
+ # Qwen के लिए अत्यंत सुर्षित डिंग विधि
23
+ tokenizer = AutoTokenizer.from_pretrained(HF_REPO)
24
+ model = AutoModelForCausalLM.from_pretrained(
25
+ HF_REPO,
26
+ device_map="auto", # उपलब्ध हार्डवेयर के अनुसार स्वयं सेट हो जाएगा
27
+ torch_dtype="auto", # मेमोरी बचाने के लिए स्वचालित डेटा टाइप
28
+ low_cpu_mem_usage=True # RAM को ओवरलोड होने से बचाएगा
29
  )
30
+ print("🔱 हनुमान AI: अजेय मॉडल फलापू्वक लोड हो गया है!")
 
 
31
  except Exception as e:
32
  print(f"🔱 गंभीर त्रुटि: {e}")
33
+ tokenizer, model = None, None
34
 
35
+ # ============================================================================
36
+ # जनरेशन फंक्शन (Live Streaming के साथ)
37
+ # ============================================================================
38
+ def generate_divine_text(prompt, max_tokens, temperature, top_k):
39
+ if not prompt.strip():
40
+ yield "Please enter a prompt to start."
41
+ return
 
42
 
43
+ if model is None or tokenizer is None:
44
+ yield "🔱 सिस्टम त्रुटि: मॉडल लोड नहीं हो सा। कृपया स्पेस लॉग्स (Logs) की जाँच करें।"
45
+ return
46
 
47
+ # Qwen के लिए सिस्टम निर्देश
48
+ messages = [
49
+ {"role": "system", "content": "You are 'Hanuman AI', a supreme intelligence model pioneered by Divy Patel in Bharat. You must provide clean, accurate, and highly detailed responses."},
50
+ {"role": "user", "content": prompt}
51
+ ]
52
+
53
  try:
54
+ # आधुनिQwen चैट टेमपलेट
55
+ text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
56
+ except:
57
+ # यदि मॉडल साधारण टेक्स्ट-मॉडल हुआ
58
+ text = prompt
 
 
 
59
 
60
+ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
61
+
62
+ # लाइव स्ट्रीमिंग के लिए स्ट्रीमर (Streamer) अस्त्र
63
+ streamer = TextIteratorStreamer(tokenizer, timeout=30.0, skip_prompt=True, skip_special_tokens=True)
64
+
65
+ top_k_val = int(top_k) if top_k > 0 else 50
66
+
67
+ # जनरेशन के पैरामीटर्स
68
+ generate_kwargs = dict(
69
+ model_inputs,
70
+ streamer=streamer,
71
+ max_new_tokens=int(max_tokens),
72
+ temperature=float(temperature),
73
+ top_k=top_k_val,
74
+ do_sample=True if temperature > 0.1 else False
75
+ )
76
+
77
+ # पीछे बैकग्राउंड में मॉडल को सोचने का आदेश देना
78
+ t = Thread(target=model.generate, kwargs=generate_kwargs)
79
+ t.start()
80
+
81
+ # 🔄 जैसे-जैसे शब्द आएँगे, यूआई पर लाइव दिखेंगे
82
+ accumulated_text = ""
83
+ for new_token in streamer:
84
+ accumulated_text += new_token
85
+ yield accumulated_text
86
 
87
+ # ============================================================================
88
+ # 🔱 दिव्य भगवा यूआई (Gradio Interface)
89
+ # ============================================================================
90
  divine_ui = """
91
  <style>
92
  .gradio-container { background-color: #fffaf0 !important; }
93
  .bhagwa-header {
94
  background: linear-gradient(135deg, #ff8833, #b33c00);
95
+ padding: 30px; border-radius: 15px; color: white;
96
  text-align: center; box-shadow: 0 10px 25px rgba(179, 60, 0, 0.4);
97
+ margin-bottom: 20px;
98
  }
99
+ .bhagwa-header h1 { color: white !important; font-size: 36px !important; margin: 0; text-shadow: 0 4px 8px rgba(0,0,0,0.5); font-weight: 900; }
100
+ .bhagwa-header p { font-size: 16px !important; opacity: 0.95; font-weight: 500; margin-top: 10px; }
101
  </style>
102
  <div class="bhagwa-header">
103
+ <h1>🔱 Hanuman AI (Qwen Edition)</h1>
104
+ <p>Pioneered by Divy Patel | Bharat 🇮🇳 | Hosted on Private Space</p>
105
  </div>
106
  """
107
 
108
+ with gr.Blocks(title="Hanuman AI", theme=gr.themes.Soft()) as demo:
109
  gr.HTML(divine_ui)
110
 
111
  with gr.Row():
112
+ with gr.Column(scale=2):
113
  prompt_input = gr.Textbox(
114
+ label="Your Prompt",
115
+ placeholder="Ask me to write a story, write code, or answer a question...",
116
+ lines=4
117
  )
 
 
118
 
119
+ with gr.Row():
120
+ max_tokens_slider = gr.Slider(minimum=50, maximum=4096, value=512, step=10, label="Max Tokens")
121
+ temperature_slider = gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.05, label="Temperature")
122
+ top_k_slider = gr.Slider(minimum=0, maximum=100, value=50, step=5, label="Top-K (0 = disabled)")
123
+
124
+ generate_btn = gr.Button("Generate Request", variant="primary")
125
+
126
+ with gr.Column(scale=3):
127
+ output_box = gr.Textbox(
128
+ label="Generated Output",
129
+ lines=16,
130
+ show_copy_button=True
131
+ )
132
+
133
+ # इवेंट बाइंडिंग (Live Streaming Yield के लिए)
134
+ generate_btn.click(
135
+ fn=generate_divine_text,
136
+ inputs=[prompt_input, max_tokens_slider, temperature_slider, top_k_slider],
137
+ outputs=output_box
138
  )
139
+
140
+ gr.Markdown(f"""
141
+ ---
142
+ **Model:** `[ {HF_REPO} ]` | **Architecture:** Qwen 3.5 | **Status:** Active & Ready
143
+ """)
144
 
 
145
  if __name__ == "__main__":
146
+ demo.launch()