Download app.py from dawon5177/FebPrompt: direct link, hf CLI and curl.
- Browser
- Download file 4.56 kB
-
https://huggingface.co/spaces/dawon5177/FebPrompt/resolve/main/app.py
- Command line
-
hf download hf://spaces/dawon5177/FebPrompt/app.py
-
curl -L -o app.py https://huggingface.co/spaces/dawon5177/FebPrompt/resolve/main/app.py
4.56 kB
| import gradio as gr | |
| import torch | |
| import transformers | |
| import os | |
| # --- ๋ชจ๋ธ ์ค์ --- | |
| # ์ฌ์ฉํ ๋ชจ๋ธ ID๋ฅผ ์ง์ ํฉ๋๋ค. | |
| MODEL_ID = "Qwen/Qwen2.5-Coder-7B-Instruct" | |
| # --- ๋ชจ๋ธ ๋ก๋ฉ (Space๊ฐ ์์๋ ๋ ํ ๋ฒ๋ง ์คํ๋ฉ๋๋ค) --- | |
| print("๋ชจ๋ธ์ ๋ก๋ํ๋ ์ค์ ๋๋ค... ์ด๊ธฐ ์คํ ์ ์๊ฐ์ด ๋ค์ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.") | |
| try: | |
| # 4๋นํธ ์์ํ๋ก VRAM ์ฌ์ฉ๋์ ์ค์ ๋๋ค. (T4 GPU์์ ์คํ ๊ฐ๋ฅ) | |
| model = transformers.AutoModelForCausalLM.from_pretrained( | |
| MODEL_ID, | |
| torch_dtype=torch.bfloat16, # T4 GPU์ ํธํ๋๋ ๋ฐ์ดํฐ ํ์ | |
| device_map="auto", # ์๋์ผ๋ก GPU์ ํ ๋น | |
| load_in_4bit=True, # 4๋นํธ ์์ํ ํ์ฑํ | |
| ) | |
| tokenizer = transformers.AutoTokenizer.from_pretrained(MODEL_ID) | |
| # ํ ์คํธ ์์ฑ ํ์ดํ๋ผ์ธ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋ก๋๋ค. | |
| text_generator = transformers.pipeline( | |
| "text-generation", | |
| model=model, | |
| tokenizer=tokenizer, | |
| ) | |
| print("โ ๋ชจ๋ธ ๋ก๋ฉ ์๋ฃ!") | |
| except Exception as e: | |
| print(f"โ ๋ชจ๋ธ ๋ก๋ฉ ์คํจ: {e}") | |
| # ๋ชจ๋ธ ๋ก๋ฉ์ ์คํจํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ ๋๋ฏธ ํจ์๋ก ๋์ฒด | |
| def text_generator(*args, **kwargs): | |
| yield "๋ชจ๋ธ์ ๋ก๋ํ๋ ๋ฐ ์คํจํ์ต๋๋ค. Space์ ํ๋์จ์ด ์ค์ ์ ํ์ธํ๊ฑฐ๋ ๋ชจ๋ธ ์ด๋ฆ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํด์ฃผ์ธ์." | |
| def respond( | |
| message, | |
| history: list[tuple[str, str]], | |
| system_message, | |
| max_tokens, | |
| temperature, | |
| top_p, | |
| ): | |
| """ | |
| ์ฌ์ฉ์์ ๋ฉ์์ง์ ๋ํ ๋ต๋ณ์ ์์ฑํ๋ ํจ์ | |
| """ | |
| # Qwen ๋ชจ๋ธ์ด ์๊ตฌํ๋ ํ์์ผ๋ก ๋ฉ์์ง ํฌ๋งทํ | |
| messages = [{"role": "system", "content": system_message}] | |
| # Gradio์ history๋ [(user1, bot1), (user2, bot2)] ํํ | |
| for user_msg, bot_msg in history: | |
| messages.append({"role": "user", "content": user_msg}) | |
| messages.append({"role": "assistant", "content": bot_msg}) | |
| messages.append({"role": "user", "content": message}) | |
| # ํ๋กฌํํธ๋ฅผ ํ ํฌ๋์ด์ ์ ์ฑํ ํ ํ๋ฆฟ์ ๋ง๊ฒ ๋ณํ | |
| prompt = tokenizer.apply_chat_template( | |
| messages, | |
| tokenize=False, | |
| add_generation_prompt=True | |
| ) | |
| # ๋ชจ๋ธ๋ก๋ถํฐ ๋ต๋ณ ์์ฑ (์คํธ๋ฆฌ๋ฐ) | |
| response = "" | |
| generation_args = { | |
| "max_new_tokens": max_tokens, | |
| "temperature": temperature, | |
| "top_p": top_p, | |
| "do_sample": True, | |
| "stream": True, # ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์ค์๊ฐ ์๋ต | |
| } | |
| for chunk in text_generator(prompt, **generation_args): | |
| # ์คํธ๋ฆฌ๋ฐ ์๋ต์์ ์ค์ ํ ์คํธ ๋ถ๋ถ๋ง ์ถ์ถ | |
| token = chunk[0]['generated_text'][len(prompt):] | |
| response = token | |
| yield response | |
| """ | |
| Gradio ChatInterface๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ด UI๋ฅผ ๋ง๋ญ๋๋ค. | |
| """ | |
| chatbot = gr.ChatInterface( | |
| respond, | |
| type="messages", # Gradio 4.x ์ด์์ ์ต์ ๋ฉ์์ง ํ์ ์ฌ์ฉ | |
| additional_inputs_accordion="โ๏ธ ๋งค๊ฐ๋ณ์ ์ค์ ", | |
| additional_inputs=[ | |
| gr.Textbox( | |
| value="You are Qwen2.5-Coder, created by Alibaba Cloud. You are a helpful assistant specialized in coding and programming.", | |
| label="System message" | |
| ), | |
| gr.Slider( | |
| minimum=1, | |
| maximum=4096, | |
| value=1024, | |
| step=1, | |
| label="Max new tokens" | |
| ), | |
| gr.Slider( | |
| minimum=0.1, | |
| maximum=4.0, | |
| value=0.7, | |
| step=0.1, | |
| label="Temperature" | |
| ), | |
| gr.Slider( | |
| minimum=0.1, | |
| maximum=1.0, | |
| value=0.95, | |
| step=0.05, | |
| label="Top-p (nucleus sampling)", | |
| ), | |
| ], | |
| examples=[ | |
| ["PyTorch๋ก ๊ฐ๋จํ CNN ๋ชจ๋ธ์ ๋ง๋ค์ด์ค."], | |
| ["์ด ํ์ด์ฌ ์ฝ๋๋ฅผ ์ต์ ํํด์ค:\n\n```python\nfor i in range(len(my_list)):\n print(my_list[i])\n```"], | |
| ["FastAPI๋ก 'hello world'๋ฅผ ์ถ๋ ฅํ๋ API ์๋ํฌ์ธํธ๋ฅผ ๋ง๋ค์ด์ค."], | |
| ], | |
| cache_examples=False, # ์์ ์บ์ฑ ๋นํ์ฑํ (๋ฉ๋ชจ๋ฆฌ ์ ์ฝ) | |
| ) | |
| # Gradio Blocks๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ด์์ ๊ตฌ์ฑ | |
| with gr.Blocks(theme=gr.themes.Soft(), title="๋๋ง์ AI ์ฝ๋ ๋ฆฌ๋") as demo: | |
| gr.Markdown("# ๐ค ๋๋ง์ AI ์ฝ๋ ๋ฆฌ๋ (Qwen2.5-Coder)") | |
| gr.Markdown("์ด ์ฑ๋ด์ **Qwen2.5-Coder-7B-Instruct** ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ถ์ํฉ๋๋ค.") | |
| chatbot.render() | |
| if __name__ == "__main__": | |
| demo.launch() | |