Spaces:
Restarting on CPU Upgrade

File size: 3,926 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
129
130
131
132
133
"""
EXAONE-3.0-7.8B-Instruct๋ฅผ Ollama์— ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ
ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
"""

import os
import subprocess
import json
import sys

# ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๋ฅผ 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 ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ๊ด€๋ฆฌ ํŽ˜์ด์ง€์—์„œ ํ† ํฐ์„ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.")

def create_simple_modelfile():
    """๊ฐ„๋‹จํ•œ Modelfile ์ƒ์„ฑ (๋กœ์ปฌ ๊ฒฝ๋กœ ๋Œ€์‹  ๋ชจ๋ธ ์ด๋ฆ„๋งŒ ์‚ฌ์šฉ)"""
    modelfile_content = """# EXAONE-3.0-7.8B-Instruct ๋ชจ๋ธ ์„ค์ •
# ์ฐธ๊ณ : Ollama๊ฐ€ Hugging Face ๋ชจ๋ธ์„ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
# ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 4096

SYSTEM \"\"\"You are EXAONE, a helpful AI assistant developed by LG AI Research. 
You can communicate in both Korean and English.\"\"\"
"""
    
    with open("EXAONE-3.0-7.8B-Instruct.modelfile", "w", encoding="utf-8") as f:
        f.write(modelfile_content)
    
    print("[OK] Modelfile ์ƒ์„ฑ ์™„๋ฃŒ")

def check_model_availability():
    """๋ชจ๋ธ์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ"""
    try:
        result = subprocess.run(['ollama', 'list'], 
                              capture_output=True, text=True, timeout=5)
        if 'EXAONE' in result.stdout or 'exaone' in result.stdout.lower():
            print("[INFO] EXAONE ๋ชจ๋ธ์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.")
            return True
        return False
    except Exception as e:
        print(f"[WARNING] ๋ชจ๋ธ ํ™•์ธ ์ค‘ ์˜ค๋ฅ˜: {e}")
        return False

def main():
    print("\n" + "=" * 60)
    print("EXAONE-3.0-7.8B-Instruct Ollama ์ถ”๊ฐ€ ์‹œ๋„")
    print("=" * 60)
    
    # ํ† ํฐ ์„ค์ •
    os.environ['HUGGINGFACE_HUB_TOKEN'] = HF_TOKEN
    print(f"[OK] Hugging Face ํ† ํฐ ์„ค์ • ์™„๋ฃŒ")
    
    # ๋ชจ๋ธ ํ™•์ธ
    if check_model_availability():
        print("\n๋ชจ๋ธ์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.")
        return
    
    print("\nํ˜„์žฌ Ollama ๋ฒ„์ „์—์„œ๋Š” Hugging Face ๋ชจ๋ธ์„ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")
    print("\n๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ณด์„ธ์š”:")
    print("\n1. Ollama๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ")
    print("   https://ollama.ai/download")
    
    print("\n2. ์ˆ˜๋™์œผ๋กœ ๋ชจ๋ธ ์ •๋ณด ํ™•์ธ")
    print("   ํ˜„์žฌ Ollama ๋ฒ„์ „ ํ™•์ธ: ollama --version")
    print("   ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ํ™•์ธ: ollama list")
    
    print("\n3. EXAONE ๋ชจ๋ธ์˜ GGUF ๋ฒ„์ „ ์ฐพ๊ธฐ")
    print("   Hugging Face์—์„œ GGUF ํ˜•์‹์˜ ๋ชจ๋ธ์„ ์ฐพ์•„๋ณด์„ธ์š”.")
    
    print("\n" + "=" * 60)
    print("์ฐธ๊ณ : ํ˜„์žฌ Ollama 0.13.0์€ Hugging Face ๋ชจ๋ธ ์ง์ ‘ ์ง€์›์ด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.")
    print("=" * 60)

if __name__ == "__main__":
    main()