File size: 3,744 Bytes
d54e6a9 208adf4 d54e6a9 208adf4 eb70b46 208adf4 d54e6a9 b834258 c2280e3 d234e06 04600a5 59f2d9e 04600a5 ae31891 04600a5 d234e06 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
"""
EXAONE-3.0-7.8B-Instruct ๋ชจ๋ธ์ Hugging Face์์ ๋ค์ด๋ก๋ํ๊ณ
Ollama์์ ์ฌ์ฉํ ์ ์๋๋ก ์ค๋นํ๋ ์คํฌ๋ฆฝํธ
"""
import os
import sys
from huggingface_hub import snapshot_download, login
# ํ๋ก์ ํธ ๋ฃจํธ๋ฅผ Python ๊ฒฝ๋ก์ ์ถ๊ฐ
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def get_huggingface_token():
"""
Hugging Face ํ ํฐ ๊ฐ์ ธ์ค๊ธฐ (ํ๊ฒฝ ๋ณ์ ์ฐ์ , ์์ผ๋ฉด DB์์)
Google API ํค ๊ด๋ฆฌ ๋ฐฉ์๊ณผ ๋์ผํ ํจํด
"""
# ํ๊ฒฝ ๋ณ์์์ ๋จผ์ ํ์ธ
token = os.getenv('HUGGINGFACE_HUB_TOKEN', '').strip()
if not token:
token = os.getenv('HF_TOKEN', '').strip()
if token:
print(f"[Hugging Face] ํ๊ฒฝ ๋ณ์์์ ํ ํฐ ๊ฐ์ ธ์ด (๊ธธ์ด: {len(token)}์)")
return token
# DB์์ ๊ฐ์ ธ์ค๊ธฐ (์ํ ์ฐธ์กฐ ๋ฐฉ์ง๋ฅผ ์ํด ์ฌ๊ธฐ์ ์ํฌํธ)
try:
from app.database import SystemConfig
token = SystemConfig.get_config('huggingface_token', '').strip()
if token:
print(f"[Hugging Face] DB์์ ํ ํฐ ๊ฐ์ ธ์ด (๊ธธ์ด: {len(token)}์)")
return token
except Exception as e:
print(f"[Hugging Face] DB์์ ํ ํฐ ์กฐํ ์คํจ (ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ): {e}")
return ''
# Hugging Face ํ ํฐ ๊ฐ์ ธ์ค๊ธฐ
HF_TOKEN = get_huggingface_token()
if not HF_TOKEN:
raise ValueError("HUGGINGFACE_HUB_TOKEN ๋๋ HF_TOKEN ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋, ๊ด๋ฆฌ ํ์ด์ง์์ ํ ํฐ์ ์ค์ ํด์ฃผ์ธ์.")
MODEL_NAME = "LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct"
def download_model():
"""Hugging Face์์ ๋ชจ๋ธ ๋ค์ด๋ก๋"""
print("=" * 60)
print("EXAONE-3.0-7.8B-Instruct ๋ชจ๋ธ ๋ค์ด๋ก๋")
print("=" * 60)
# Hugging Face ๋ก๊ทธ์ธ
try:
login(token=HF_TOKEN)
print("[OK] Hugging Face ๋ก๊ทธ์ธ ์ฑ๊ณต")
except Exception as e:
print(f"[ERROR] Hugging Face ๋ก๊ทธ์ธ ์คํจ: {e}")
return False
# ๋ชจ๋ธ ๋ค์ด๋ก๋
try:
print(f"\n๋ชจ๋ธ ๋ค์ด๋ก๋ ์์: {MODEL_NAME}")
print("์ฃผ์: ๋ชจ๋ธ ํฌ๊ธฐ๊ฐ ์ฝ 15GB์ด๋ฏ๋ก ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค...")
download_path = snapshot_download(
repo_id=MODEL_NAME,
token=HF_TOKEN,
local_dir="./models/EXAONE-3.0-7.8B-Instruct",
local_dir_use_symlinks=False
)
print(f"\n[OK] ๋ชจ๋ธ ๋ค์ด๋ก๋ ์๋ฃ!")
print(f"์ ์ฅ ์์น: {download_path}")
return True
except Exception as e:
print(f"[ERROR] ๋ชจ๋ธ ๋ค์ด๋ก๋ ์คํจ: {e}")
return False
if __name__ == "__main__":
import sys
print("\n์ด ์คํฌ๋ฆฝํธ๋ EXAONE ๋ชจ๋ธ์ Hugging Face์์ ๋ค์ด๋ก๋ํฉ๋๋ค.")
print("๋ค์ด๋ก๋๋ ๋ชจ๋ธ์ Ollama์์ ์ง์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ,")
print("GGUF ํ์์ผ๋ก ๋ณํํ๋ ์ถ๊ฐ ์์
์ด ํ์ํฉ๋๋ค.")
print("\n์ฐธ๊ณ : Ollama๋ ์ผ๋ฐ์ ์ผ๋ก GGUF ํ์์ ๋ชจ๋ธ๋ง ์ง์ํฉ๋๋ค.")
response = input("\n๊ณ์ํ์๊ฒ ์ต๋๊น? (y/n): ")
if response.lower() != 'y':
print("๋ค์ด๋ก๋๋ฅผ ์ทจ์ํ์ต๋๋ค.")
sys.exit(0)
success = download_model()
if success:
print("\n" + "=" * 60)
print("๋ค์ด๋ก๋ ์๋ฃ!")
print("=" * 60)
print("\n๋ค์ ๋จ๊ณ:")
print("1. llama.cpp๋ฅผ ์ฌ์ฉํ์ฌ GGUF ํ์์ผ๋ก ๋ณํ")
print("2. ๋ณํ๋ ๋ชจ๋ธ์ Ollama์ ์ถ๊ฐ")
print("\n์์ธํ ๋ด์ฉ์ EXAONE_์ค์น_๊ฐ์ด๋.md๋ฅผ ์ฐธ๊ณ ํ์ธ์.")
print("=" * 60)
else:
print("\n๋ค์ด๋ก๋์ ์คํจํ์ต๋๋ค.")
|