TruVlad commited on
Commit
ff7f049
·
verified ·
1 Parent(s): 49f8c52
Files changed (1) hide show
  1. app.py +83 -0
app.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #Flask-APScheduler
2
+ from flask_basicauth import BasicAuth
3
+ from datetime import datetime
4
+ from flask_apscheduler import APScheduler
5
+
6
+ from flask import Flask
7
+ from flsak import request
8
+
9
+ model_name = "inclusionAI/Ring-mini-2.0"
10
+ print(f"load model {model_name}")
11
+ model = AutoModelForCausalLM.from_pretrained(
12
+ model_name,
13
+ torch_dtype="auto",
14
+ device_map="auto",
15
+ trust_remote_code=True
16
+ )
17
+
18
+ print(f"load tokenizer {model_name}")
19
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
20
+
21
+ app = Flask(__name__)
22
+
23
+ # prompt = "Напиши стих про шинное обучение"
24
+ # print(response)
25
+ import torch
26
+ from qwen_asr import Qwen3ASRModel
27
+
28
+ model = Qwen3ASRModel.from_pretrained(
29
+ "Qwen/Qwen3-ASR-1.7B",
30
+ dtype=torch.bfloat16,
31
+ device_map="cuda:0",
32
+ # device_map="cpu",
33
+ # attn_implementation="flash_attention_2",
34
+ max_inference_batch_size=32, # Batch size limit for inference. -1 means unlimited. Smaller values can help avoid OOM.
35
+ max_new_tokens=256, # Maximum number of tokens to generate. Set a larger value for long audio input.
36
+ )
37
+ import datetime
38
+ start=datetime.datetime.now()
39
+ results = model.transcribe(
40
+ audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav",
41
+ language=None, # set "English" to force the language
42
+ )
43
+
44
+ # Чтобы защитить паролем конечную точку задания:
45
+ # @basic_auth.required
46
+
47
+ basic_auth = BasicAuth(app)
48
+ app.config['BASIC_AUTH_REALM'] = 'realm'
49
+ app.config['BASIC_AUTH_USERNAME'] = 'vova'
50
+ app.config['BASIC_AUTH_PASSWORD'] = 'vova'
51
+
52
+ print(f"Flask app")
53
+ # Главная страница
54
+ @app.route("/", methods=['POST', 'GET']) #
55
+ @basic_auth.required
56
+ def root():
57
+ if request.args.get('logs'): #logs=container ?logs=container&__theme=system
58
+ return f"<h1>Главная logs</h1>"
59
+ else:
60
+ return f"<h1>Главная страница</h1><p>Добро пожаловать!</p><p>current model {model_name}</p>"
61
+
62
+ # Страница "О нас"
63
+ @app.route("/about")
64
+ def about():
65
+ return "<h1>О нас</h1><p>Мы изучаем Flask!</p>"
66
+
67
+
68
+ # Страница "Контакты"
69
+ @app.route("/contact")
70
+ @basic_auth.required
71
+ def contact():
72
+ import datetime
73
+ start=datetime.datetime.now()
74
+ results = model.transcribe(
75
+ audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav",
76
+ language=None, # set "English" to force the language)
77
+ print(f'duration {datetime.datetime.now()-start}')
78
+ print(results[0].language)
79
+ print(results[0].text)
80
+ return f"<h1>Контакты</h1><p>duration {datetime.datetime.now()-start}</p><p>results[0].text</p>"
81
+
82
+ if __name__ == "__main__":
83
+ app.run(debug=False, host='0.0.0.0', port=7860) root@telebot1:/opt/HF/TruVlad/flaskapi#