Vilyam888 commited on
Commit
1eb0ebf
·
verified ·
1 Parent(s): ad9d88f

Upload folder using huggingface_hub

Browse files
Files changed (4) hide show
  1. README.md +11 -1
  2. README_SPACE.md +27 -0
  3. app.py +126 -0
  4. requirements_gradio.txt +5 -0
README.md CHANGED
@@ -36,7 +36,17 @@ Fine-tuned версия модели Qwen2.5-Coder-3B-Instruct для анали
36
  3. Введите ваш запрос в текстовое поле виджета
37
  4. Нажмите "Compute" для получения ответа
38
 
39
- **Примечание:** Если опция "Inference" не отображается в меню "Use this model", используйте виджет на странице модели или один из вариантов ниже.
 
 
 
 
 
 
 
 
 
 
40
 
41
  ### Вариант 2: Использование локально (Python)
42
 
 
36
  3. Введите ваш запрос в текстовое поле виджета
37
  4. Нажмите "Compute" для получения ответа
38
 
39
+ ### Вариант 1.5: Создайте Gradio Space (если Inference API недоступен)
40
+
41
+ Если опция "Inference" не отображается в меню "Use this model", создайте интерактивный Gradio Space:
42
+
43
+ 1. Перейдите на https://huggingface.co/spaces
44
+ 2. Нажмите "Create new Space"
45
+ 3. Выберите SDK: **Gradio**
46
+ 4. Загрузите файлы `app.py` и `requirements.txt` из этой модели
47
+ 5. Space автоматически создаст интерактивный интерфейс!
48
+
49
+ Подробные инструкции в файле `README_SPACE.md`
50
 
51
  ### Вариант 2: Использование локально (Python)
52
 
README_SPACE.md ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Как создать Gradio Space для интерактивного использования
2
+
3
+ Если опция "Inference" не появляется в меню "Use this model", создайте Gradio Space:
4
+
5
+ ## Шаг 1: Создайте новый Space на Hugging Face
6
+
7
+ 1. Перейдите на https://huggingface.co/spaces
8
+ 2. Нажмите "Create new Space"
9
+ 3. Заполните:
10
+ - **Space name**: `code-analyzer-demo` (или любое другое имя)
11
+ - **SDK**: выберите **Gradio**
12
+ - **Hardware**: выберите **CPU Basic** (бесплатно) или **GPU** (если доступно)
13
+ - **Visibility**: Public
14
+
15
+ ## Шаг 2: Загрузите файлы
16
+
17
+ Загрузите в Space следующие файлы:
18
+ - `app.py` (из этой папки)
19
+ - `requirements_gradio.txt` (переименуйте в `requirements.txt`)
20
+
21
+ ## Шаг 3: Дождитесь запуска
22
+
23
+ Space автоматически запустится и создаст интерактивный интерфейс для вашей модели!
24
+
25
+ ## Альтернатива: Используйте виджет на странице модели
26
+
27
+ На странице модели должен быть виджет внизу страницы, даже если опция "Inference" не в меню.
app.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Gradio Space для интерактивного использования модели Code Analyzer
3
+ Загрузите этот файл в Hugging Face Space для создания интерактивного интерфейса
4
+ """
5
+ import gradio as gr
6
+ from transformers import AutoModelForCausalLM, AutoTokenizer
7
+ import torch
8
+
9
+ # Загрузка модели (будет выполнена при первом запуске)
10
+ MODEL_NAME = "Vilyam888/Code_analyze.1.0"
11
+
12
+ def load_model():
13
+ """Загружает модель один раз при старте"""
14
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True)
15
+ model = AutoModelForCausalLM.from_pretrained(
16
+ MODEL_NAME,
17
+ torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.float32,
18
+ device_map="auto",
19
+ trust_remote_code=True
20
+ )
21
+ return model, tokenizer
22
+
23
+ # Глобальные переменные для модели
24
+ model, tokenizer = None, None
25
+
26
+ def analyze_code(question):
27
+ """Генерирует ответ на вопрос"""
28
+ global model, tokenizer
29
+
30
+ if model is None or tokenizer is None:
31
+ return "⏳ Загрузка модели... Пожалуйста, подождите."
32
+
33
+ if not question.strip():
34
+ return "Пожалуйста, введите вопрос."
35
+
36
+ try:
37
+ # Форматирование в стиле обучения
38
+ text = f"{question}\n\nОтвет:\n"
39
+
40
+ # Токенизация
41
+ inputs = tokenizer(text, return_tensors="pt").to(model.device)
42
+
43
+ # Генерация ответа
44
+ with torch.no_grad():
45
+ outputs = model.generate(
46
+ **inputs,
47
+ max_new_tokens=512,
48
+ temperature=0.7,
49
+ top_p=0.8,
50
+ top_k=20,
51
+ repetition_penalty=1.05,
52
+ do_sample=True,
53
+ pad_token_id=tokenizer.eos_token_id
54
+ )
55
+
56
+ # Декодирование ответа
57
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
58
+
59
+ # Извлечение только ответа
60
+ if "Ответ:" in response:
61
+ answer = response.split("Ответ:")[-1].strip()
62
+ else:
63
+ answer = response
64
+
65
+ return answer
66
+ except Exception as e:
67
+ return f"❌ Ошибка: {str(e)}"
68
+
69
+ # Создание Gradio интерфейса
70
+ with gr.Blocks(title="Code Analyzer Model", theme=gr.themes.Soft()) as demo:
71
+ gr.Markdown("""
72
+ # 🔍 Code Analyzer Model
73
+
74
+ Fine-tuned модель для анализа кода и ответов на вопросы о программировании.
75
+
76
+ **Примеры вопросов:**
77
+ - Проанализируй этот код: `def hello(): print('Hello, World!')`
78
+ - Объясни, что делает эта функция: `def factorial(n): ...`
79
+ - Найди ошибку в коде: `def divide(a, b): return a / b`
80
+ """)
81
+
82
+ with gr.Row():
83
+ with gr.Column():
84
+ question_input = gr.Textbox(
85
+ label="Ваш вопрос",
86
+ placeholder="Введите вопрос о коде...",
87
+ lines=5
88
+ )
89
+ submit_btn = gr.Button("Анализировать", variant="primary")
90
+
91
+ with gr.Column():
92
+ answer_output = gr.Textbox(
93
+ label="Ответ модели",
94
+ lines=10,
95
+ interactive=False
96
+ )
97
+
98
+ # Примеры
99
+ gr.Examples(
100
+ examples=[
101
+ ["Проанализируй этот код:\ndef hello():\n print('Hello, World!')"],
102
+ ["Объясни, что делает эта функция:\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)"],
103
+ ["Найди ошибку в коде:\ndef divide(a, b):\n return a / b\n\nresult = divide(10, 0)"],
104
+ ],
105
+ inputs=question_input
106
+ )
107
+
108
+ # Загрузка модели при старте
109
+ demo.load(load_model, outputs=None)
110
+
111
+ # Обработчик кнопки
112
+ submit_btn.click(
113
+ fn=analyze_code,
114
+ inputs=question_input,
115
+ outputs=answer_output
116
+ )
117
+
118
+ # Обработчик Enter
119
+ question_input.submit(
120
+ fn=analyze_code,
121
+ inputs=question_input,
122
+ outputs=answer_output
123
+ )
124
+
125
+ if __name__ == "__main__":
126
+ demo.launch()
requirements_gradio.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio>=4.0.0
2
+ transformers>=5.0.0
3
+ torch>=2.0.0
4
+ accelerate
5
+ sentencepiece