sdfsdh commited on
Commit
fc38f0a
ยท
verified ยท
1 Parent(s): 75ad386

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +128 -33
src/streamlit_app.py CHANGED
@@ -1,11 +1,12 @@
1
  import streamlit as st
2
  import torch
3
  from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
4
- import gdown
5
  import zipfile
6
  import os
7
  import tempfile
8
  import json
 
 
9
 
10
  # ํŽ˜์ด์ง€ ์„ค์ •
11
  st.set_page_config(
@@ -17,6 +18,114 @@ st.set_page_config(
17
  # ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ํŒŒ์ผ ID
18
  GDRIVE_FILE_ID = "1RilOqw77G_Kr9_Cl6kR2UTuBa3uvDWQ8"
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  @st.cache_resource
21
  def download_and_load_model():
22
  """๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋กœ๋“œ"""
@@ -26,42 +135,27 @@ def download_and_load_model():
26
  zip_path = os.path.join(temp_dir, "koalpaca_cpu_deployment.zip")
27
  extract_path = os.path.join(temp_dir, "koalpaca_cpu_deployment")
28
 
29
- # ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋‹ค์šด๋กœ๋“œ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ•ด๊ฒฐ์ฑ… ์ ์šฉ)
30
- st.info("๐Ÿ“ฅ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ ์ค‘...")
31
 
32
- # ๋ฐฉ๋ฒ• 1: confirm=t ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€ (๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ๏ฟฝ๏ฟฝ๏ฟฝ)
33
- download_url = f"https://drive.google.com/uc?id={GDRIVE_FILE_ID}&confirm=t"
34
 
35
- try:
36
- # fuzzy=True์™€ use_cookies=True ์˜ต์…˜ ์ถ”๊ฐ€
37
- gdown.download(
38
- download_url,
39
- zip_path,
40
- quiet=False,
41
- fuzzy=True,
42
- use_cookies=True
43
- )
44
- except Exception as e1:
45
- st.warning(f"์ฒซ ๋ฒˆ์งธ ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ• ์‹คํŒจ: {e1}")
46
- try:
47
- # ๋ฐฉ๋ฒ• 2: ํŒŒ์ผ ID๋งŒ ์‚ฌ์šฉ
48
- st.info("๋Œ€์•ˆ ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ• ์‹œ๋„ ์ค‘...")
49
- gdown.download(
50
- id=GDRIVE_FILE_ID,
51
- output=zip_path,
52
- quiet=False
53
- )
54
- except Exception as e2:
55
- st.error(f"๋‘ ๋ฒˆ์งธ ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•๋„ ์‹คํŒจ: {e2}")
56
- # ๋ฐฉ๋ฒ• 3: ์ง์ ‘ URL ๊ตฌ์„ฑ
57
- st.info("์ตœ์ข… ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ• ์‹œ๋„ ์ค‘...")
58
- import urllib.request
59
- direct_url = f"https://drive.google.com/uc?export=download&id={GDRIVE_FILE_ID}"
60
- urllib.request.urlretrieve(direct_url, zip_path)
61
 
62
  # ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ™•์ธ
63
- if not os.path.exists(zip_path):
64
- raise FileNotFoundError("๋ชจ๋ธ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.")
65
 
66
  st.success(f"โœ… ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ: {os.path.getsize(zip_path) / 1024**3:.2f}GB")
67
 
@@ -188,6 +282,7 @@ def main():
188
  1. ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ํŒŒ์ผ ๊ถŒํ•œ์„ '๋งํฌ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž'๋กœ ์„ค์ •
189
  2. ํŒŒ์ผ ID๊ฐ€ ์ •ํ™•ํ•œ์ง€ ํ™•์ธ
190
  3. ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ
 
191
  """)
192
  return
193
 
 
1
  import streamlit as st
2
  import torch
3
  from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
 
4
  import zipfile
5
  import os
6
  import tempfile
7
  import json
8
+ import urllib.request
9
+ import requests
10
 
11
  # ํŽ˜์ด์ง€ ์„ค์ •
12
  st.set_page_config(
 
18
  # ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ํŒŒ์ผ ID
19
  GDRIVE_FILE_ID = "1RilOqw77G_Kr9_Cl6kR2UTuBa3uvDWQ8"
20
 
21
+ def download_from_google_drive(file_id, destination):
22
+ """๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜ ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ๋‹ค์šด๋กœ๋“œ ํ•จ์ˆ˜"""
23
+ try:
24
+ # ๋ฐฉ๋ฒ• 1: confirm=t ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ [3], [5]์—์„œ ํ™•์ธ)
25
+ st.info("๐Ÿ“ฅ ๋ฐฉ๋ฒ• 1: confirm=t ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋‹ค์šด๋กœ๋“œ ์‹œ๋„...")
26
+ url = f"https://drive.google.com/uc?export=download&id={file_id}&confirm=t"
27
+
28
+ response = requests.get(url, stream=True)
29
+ if response.status_code == 200:
30
+ with open(destination, 'wb') as f:
31
+ for chunk in response.iter_content(chunk_size=8192):
32
+ f.write(chunk)
33
+ return True
34
+
35
+ # ๋ฐฉ๋ฒ• 2: ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค๋‹จ๊ณ„ ๋‹ค์šด๋กœ๋“œ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ [5]์—์„œ ํ™•์ธ)
36
+ st.info("๐Ÿ“ฅ ๋ฐฉ๋ฒ• 2: ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ๋‹ค์šด๋กœ๋“œ ์‹œ๋„...")
37
+ session = requests.Session()
38
+
39
+ # ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์œผ๋กœ ์ฟ ํ‚ค ํš๋“
40
+ response = session.get(f"https://drive.google.com/uc?export=download&id={file_id}")
41
+
42
+ # ํ™•์ธ ํ† ํฐ ์ถ”์ถœ
43
+ for key, value in response.cookies.items():
44
+ if key.startswith('download_warning'):
45
+ token = value
46
+ break
47
+ else:
48
+ token = 't' # ๊ธฐ๋ณธ๊ฐ’
49
+
50
+ # ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์œผ๋กœ ์‹ค์ œ ๋‹ค์šด๋กœ๋“œ
51
+ params = {'export': 'download', 'id': file_id, 'confirm': token}
52
+ response = session.get("https://drive.google.com/uc", params=params, stream=True)
53
+
54
+ if response.status_code == 200:
55
+ with open(destination, 'wb') as f:
56
+ for chunk in response.iter_content(chunk_size=8192):
57
+ f.write(chunk)
58
+ return True
59
+
60
+ # ๋ฐฉ๋ฒ• 3: urllib ์‚ฌ์šฉ
61
+ st.info("๐Ÿ“ฅ ๋ฐฉ๋ฒ• 3: urllib๋กœ ๋‹ค์šด๋กœ๋“œ ์‹œ๋„...")
62
+ urllib.request.urlretrieve(
63
+ f"https://drive.google.com/uc?export=download&id={file_id}&confirm=t",
64
+ destination
65
+ )
66
+ return True
67
+
68
+ except Exception as e:
69
+ st.error(f"๋‹ค์šด๋กœ๋“œ ์‹คํŒจ: {e}")
70
+ return False
71
+
72
+ def try_gdown_download(file_id, destination):
73
+ """gdown์„ ์‚ฌ์šฉํ•œ ๋‹ค์šด๋กœ๋“œ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ•ด๊ฒฐ์ฑ… ์ ์šฉ)"""
74
+ try:
75
+ # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ [4]์—์„œ ํ™•์ธ: ์ฟ ํ‚ค ํŒŒ์ผ ์‚ญ์ œ
76
+ import gdown
77
+
78
+ # ์ฟ ํ‚ค ํŒŒ์ผ ๊ฒฝ๋กœ๋“ค
79
+ cookie_paths = [
80
+ os.path.expanduser("~/.cache/gdown/cookies.txt"),
81
+ os.path.expanduser("~/.cache/gdown/cookies.json"),
82
+ ]
83
+
84
+ # ๊ธฐ์กด ์ฟ ํ‚ค ํŒŒ์ผ ์‚ญ์ œ
85
+ for cookie_path in cookie_paths:
86
+ if os.path.exists(cookie_path):
87
+ os.remove(cookie_path)
88
+ st.info(f"๐Ÿ—‘๏ธ ๊ธฐ์กด ์ฟ ํ‚ค ํŒŒ์ผ ์‚ญ์ œ: {cookie_path}")
89
+
90
+ # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ [4]์—์„œ ํ™•์ธ: gdown 4.6.0 ๋ฒ„์ „ ์‚ฌ์šฉ ๊ถŒ์žฅ
91
+ st.info("๐Ÿ“ฅ gdown์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ์‹œ๋„...")
92
+
93
+ # ๋ฐฉ๋ฒ• 1: ID๋งŒ ์‚ฌ์šฉ
94
+ try:
95
+ gdown.download(id=file_id, output=destination, quiet=False)
96
+ return True
97
+ except:
98
+ pass
99
+
100
+ # ๋ฐฉ๋ฒ• 2: confirm=t ์ถ”๊ฐ€ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ [6]์—์„œ ํ™•์ธ)
101
+ try:
102
+ gdown.download(f"{file_id}&confirm=t", output=destination, quiet=False)
103
+ return True
104
+ except:
105
+ pass
106
+
107
+ # ๋ฐฉ๋ฒ• 3: use_cookies=True ์˜ต์…˜ (๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ [6]์—์„œ ํ™•์ธ)
108
+ try:
109
+ gdown.download(
110
+ f"https://drive.google.com/uc?id={file_id}",
111
+ output=destination,
112
+ quiet=False,
113
+ fuzzy=True,
114
+ use_cookies=True
115
+ )
116
+ return True
117
+ except:
118
+ pass
119
+
120
+ return False
121
+
122
+ except ImportError:
123
+ st.warning("gdown์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋Œ€์•ˆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.")
124
+ return False
125
+ except Exception as e:
126
+ st.warning(f"gdown ๋‹ค์šด๋กœ๋“œ ์‹คํŒจ: {e}")
127
+ return False
128
+
129
  @st.cache_resource
130
  def download_and_load_model():
131
  """๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋กœ๋“œ"""
 
135
  zip_path = os.path.join(temp_dir, "koalpaca_cpu_deployment.zip")
136
  extract_path = os.path.join(temp_dir, "koalpaca_cpu_deployment")
137
 
138
+ st.info("๐Ÿ“ฅ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ ์‹œ์ž‘...")
 
139
 
140
+ # ๋‹ค์šด๋กœ๋“œ ์‹œ๋„ (์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•)
141
+ download_success = False
142
 
143
+ # 1. gdown ์‹œ๋„
144
+ if try_gdown_download(GDRIVE_FILE_ID, zip_path):
145
+ download_success = True
146
+ st.success("โœ… gdown์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ์„ฑ๊ณต!")
147
+
148
+ # 2. requests ๊ธฐ๋ฐ˜ ๋‹ค์šด๋กœ๋“œ ์‹œ๋„
149
+ elif download_from_google_drive(GDRIVE_FILE_ID, zip_path):
150
+ download_success = True
151
+ st.success("โœ… requests๋กœ ๋‹ค์šด๋กœ๋“œ ์„ฑ๊ณต!")
152
+
153
+ if not download_success:
154
+ raise Exception("๋ชจ๋“  ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
  # ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ™•์ธ
157
+ if not os.path.exists(zip_path) or os.path.getsize(zip_path) < 1024:
158
+ raise FileNotFoundError("๋‹ค์šด๋กœ๋“œ๋œ ํŒŒ์ผ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.")
159
 
160
  st.success(f"โœ… ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ: {os.path.getsize(zip_path) / 1024**3:.2f}GB")
161
 
 
282
  1. ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ํŒŒ์ผ ๊ถŒํ•œ์„ '๋งํฌ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž'๋กœ ์„ค์ •
283
  2. ํŒŒ์ผ ID๊ฐ€ ์ •ํ™•ํ•œ์ง€ ํ™•์ธ
284
  3. ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ
285
+ 4. gdown ์ฟ ํ‚ค ๋ฌธ์ œ๋Š” ์ž๋™์œผ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค
286
  """)
287
  return
288