walk-run-fly commited on
Commit
3a91d51
ยท
verified ยท
1 Parent(s): 11d1c92

upload init setting(app.py, Dockerfile)

Browse files
Files changed (2) hide show
  1. Dockerfile +17 -0
  2. app.py +73 -0
Dockerfile ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11-slim
2
+
3
+ RUN apt-get update && \
4
+ apt-get install -y --no-install-recommends build-essential cmake && \
5
+ rm -rf /var/lib/apt/lists/*
6
+
7
+ ENV CMAKE_BUILD_PARALLEL_LEVEL=4
8
+ ENV CMAKE_ARGS="-DLLAMA_NATIVE=OFF"
9
+
10
+ RUN pip install --no-cache-dir "llama-cpp-python==0.3.16" && \
11
+ pip install --no-cache-dir gradio huggingface_hub
12
+
13
+ WORKDIR /app
14
+ COPY app.py .
15
+
16
+ EXPOSE 7860
17
+ CMD ["python", "app.py"]
app.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from llama_cpp import Llama
3
+
4
+ # โœ๏ธ ์•„๋ž˜ ๋‘ ์ค„์„ ๋ณธ์ธ์˜ ๋ชจ๋ธ ์ •๋ณด๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”
5
+ # ํŒŒ์ธํŠœ๋‹ ๋ชจ๋ธ: "YOUR_USERNAME/qwen3-4b-ft-gguf"
6
+ # ๊ณต๊ฐœ ๋ชจ๋ธ ์˜ˆ์‹œ: "unsloth/Qwen3-0.6B-GGUF" (ํ…Œ์ŠคํŠธ์šฉ)
7
+ REPO_ID = "unsloth/Qwen3-4B-GGUF" # โœ๏ธ HF Hub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ID
8
+ FILENAME = "Qwen3-4B-Q4_K_M.gguf" # โœ๏ธ ํŒŒ์ผ๋ช… (.gguf ํ™•์žฅ์ž ํ•„์ˆ˜)
9
+
10
+ # โœ๏ธ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ โ€” ์ฑ—๋ด‡์˜ ์—ญํ• ๊ณผ ๋งํˆฌ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค
11
+ SYSTEM_PROMPT = "๋‹น์‹ ์€ ์นœ์ ˆํ•œ ํ•œ๊ตญ์–ด AI ์–ด์‹œ์Šคํ„ดํŠธ์ž…๋‹ˆ๋‹ค."
12
+
13
+ # โš ๏ธ ๋ชจ๋ธ์„ ์•ฑ ์‹œ์ž‘ ์‹œ ๋ฐ”๋กœ ๋กœ๋”ฉํ•˜๋ฉด HF Spaces ํ—ฌ์Šค์ฒดํฌ(30๋ถ„) ํƒ€์ž„์•„์›ƒ ๋ฐœ์ƒ
14
+ # โ†’ ํ•ด๊ฒฐ: ๋ชจ๋ธ ๋กœ๋”ฉ์„ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€ ์‹œ์ ์œผ๋กœ ์ง€์—ฐ (Lazy Loading)
15
+ llm = None
16
+
17
+ def get_model():
18
+ """
19
+ ์ฒซ ํ˜ธ์ถœ ์‹œ์—๋งŒ ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œ + ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
20
+ ์ดํ›„ ํ˜ธ์ถœ์—์„œ๋Š” ์ด๋ฏธ ๋กœ๋”ฉ๋œ ๋ชจ๋ธ์„ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
21
+ - from_pretrained: hf_hub_download + Llama ์ดˆ๊ธฐํ™”๋ฅผ ํ•œ ์ค„๋กœ ์ฒ˜๋ฆฌ
22
+ - n_ctx: ์ปจํ…์ŠคํŠธ ๊ธธ์ด (๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด๋ฅผ ์œ„ํ•ด ์ž‘๊ฒŒ ์„ค์ •)
23
+ - n_threads: CPU Basic = 2 vCPU์— ๋งž์ถค
24
+ """
25
+ global llm
26
+ if llm is None:
27
+ llm = Llama.from_pretrained(
28
+ repo_id=REPO_ID,
29
+ filename=FILENAME,
30
+ n_ctx=2048, # โœ๏ธ ์ปจํ…์ŠคํŠธ ๊ธธ์ด (๋ชจ๋ธ ์ตœ๋Œ€: 40960, ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ ์œ„ํ•ด 2048)
31
+ n_threads=2, # โœ๏ธ CPU Basic = 2 vCPU
32
+ verbose=False, # ๋กœ๋”ฉ ์‹œ ์ƒ์„ธ ๋กœ๊ทธ ์ˆจ๊น€
33
+ )
34
+ return llm
35
+
36
+ def respond(message, history):
37
+ """
38
+ ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์œผ๋กœ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
39
+ - message: ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ
40
+ - history: ์ด์ „ ๋Œ€ํ™” ๋‚ด์—ญ (Gradio ChatInterface๊ฐ€ ์ž๋™ ๊ด€๋ฆฌ)
41
+ """
42
+ # ์ฒซ ํ˜ธ์ถœ ์‹œ ๋ชจ๋ธ ๋กœ๋”ฉ (1~2๋ถ„ ์†Œ์š”๋  ์ˆ˜ ์žˆ์Œ)
43
+ model = get_model()
44
+
45
+ # ๋Œ€ํ™” ๋ฉ”์‹œ์ง€ ๊ตฌ์„ฑ: ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ + ์ด์ „ ๋Œ€ํ™” + ํ˜„์žฌ ์ž…๋ ฅ
46
+ messages = [{"role": "system", "content": SYSTEM_PROMPT}]
47
+ for msg in history:
48
+ messages.append(msg)
49
+ messages.append({"role": "user", "content": message})
50
+
51
+ # ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์œผ๋กœ ํ† ํฐ์„ ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ถœ๋ ฅ
52
+ response = ""
53
+ for chunk in model.create_chat_completion(
54
+ messages=messages,
55
+ temperature=0.7, # โœ๏ธ ์ฐฝ์˜์„ฑ ์กฐ์ ˆ (0.0=๊ฒฐ์ •์ , 1.0=์ฐฝ์˜์ )
56
+ max_tokens=512, # โœ๏ธ ์ตœ๋Œ€ ์‘๋‹ต ๊ธธ์ด
57
+ stream=True, # ์ŠคํŠธ๋ฆฌ๋ฐ ํ™œ์„ฑํ™”
58
+ ):
59
+ delta = chunk["choices"][0]["delta"].get("content", "")
60
+ response += delta
61
+ yield response # Gradio์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „๋‹ฌ
62
+
63
+ # โœ๏ธ Gradio ChatInterface: ์ฑ—๋ด‡ UI๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
64
+ demo = gr.ChatInterface(
65
+ fn=respond,
66
+ title="Qwen3 GGUF ์ฑ—๋ด‡", # โœ๏ธ ์ œ๋ชฉ
67
+ description="์ฒซ ์‘๋‹ต ์‹œ ๋ชจ๋ธ์„ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค (1~2๋ถ„ ์†Œ์š”)", # โœ๏ธ ์„ค๋ช…
68
+ examples=["์•ˆ๋…•ํ•˜์„ธ์š”!", "ํŒŒ์ด์ฌ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?"], # โœ๏ธ ์˜ˆ์‹œ ์งˆ๋ฌธ
69
+ )
70
+
71
+ # server_name="0.0.0.0": ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉ (Docker ํ•„์ˆ˜)
72
+ # server_port=7860: HF Spaces ๊ธฐ๋ณธ ํฌํŠธ
73
+ demo.launch(server_name="0.0.0.0", server_port=7860)