geulpu 0.5.1__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geulpu/__init__.py +13 -0
- geulpu/__main__.py +91 -0
- geulpu/app/GeulPU.exe +0 -0
- geulpu/app/LICENSE +21 -0
- geulpu/app/README.txt +87 -0
- geulpu/app/bin/device-cuda.exe +0 -0
- geulpu/app/bin/device-vulkan.exe +0 -0
- geulpu/app/bin/diag-cuda.exe +0 -0
- geulpu/app/bin/diag-vulkan.exe +0 -0
- geulpu/app/bin/kernel-gen.exe +0 -0
- geulpu/app/bin/ptx-backend.exe +0 -0
- geulpu/app/bin/server-cuda.exe +0 -0
- geulpu/app/bin/server-vulkan.exe +0 -0
- geulpu/app/bin/spirv-backend.exe +0 -0
- geulpu/app/data/crosscheck/expected.json +284 -0
- geulpu/app/data/crosscheck/requests.json +1504 -0
- geulpu/app/data/models.json +246 -0
- geulpu/app/kernels/diag-vulkan-coop-16x16x16.spvs +0 -0
- geulpu/app/kernels/diag-vulkan-coop-16x16x32.spvs +0 -0
- geulpu/app/kernels/diag-vulkan-coop-16x8x32.spvs +0 -0
- geulpu/app/kernels/diag-vulkan.spvs +0 -0
- geulpu/app/kernels/diag.ptx +1150 -0
- geulpu/app/version.json +35 -0
- geulpu/app/web/app.css +884 -0
- geulpu/app/web/app.js +5094 -0
- geulpu/app/web/favicon.svg +1 -0
- geulpu/app/web/index.html +73 -0
- geulpu-0.5.1.dist-info/METADATA +55 -0
- geulpu-0.5.1.dist-info/RECORD +32 -0
- geulpu-0.5.1.dist-info/WHEEL +4 -0
- geulpu-0.5.1.dist-info/entry_points.txt +2 -0
- geulpu-0.5.1.dist-info/licenses/LICENSE +21 -0
geulpu/__init__.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""GeulPU — 내 PC 의 그래픽카드로 돌리는 AI 채팅(글(geul) 언어로 쓴 엔진). PyPI 꾸러미의 실행기.
|
|
2
|
+
|
|
3
|
+
이 꾸러미는 GitHub 릴리스의 앱(GeulPU-<판>-windows-x64.zip 의 폴더)을 `geulpu/app/` 에 그대로 담고, `geulpu` 명령이 그 GeulPU.exe 를
|
|
4
|
+
실행한다. 모델 · 이 GPU 용 커널 · 결과 · 설정은 앱이 %USERPROFILE%\\GeulPU(또는 GEULPU_HOME)에 둔다 — 설치 폴더에는 쓰지 않는다.
|
|
5
|
+
"""
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
__version__ = "0.5.1" # 휠을 만들 때 앱의 판으로 바꿔 쓴다(도구/pypi/휠만들기.py)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def app_dir():
|
|
12
|
+
"""꾸러미에 든 앱 폴더(GeulPU.exe · bin · kernels · web · data)."""
|
|
13
|
+
return os.path.join(os.path.dirname(os.path.abspath(__file__)), "app")
|
geulpu/__main__.py
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""`geulpu` 명령(그리고 `python -m geulpu`) — 꾸러미에 든 GeulPU.exe 를 받은 인자 그대로 실행한다.
|
|
2
|
+
|
|
3
|
+
geulpu # 앱을 띄우고 브라우저에 http://127.0.0.1:44544 를 연다
|
|
4
|
+
geulpu --포트 44600 # 다른 포트
|
|
5
|
+
geulpu --자료 D:\\GeulPU # 자료 폴더(기본 %USERPROFILE%\\GeulPU — 환경 변수 GEULPU_HOME 으로도)
|
|
6
|
+
geulpu --열지않음 # 브라우저를 열지 않는다
|
|
7
|
+
|
|
8
|
+
앱은 이 콘솔을 그대로 쓴다(창을 닫거나 Ctrl+C 면 앱이 끝난다). 실행기는 Ctrl+C 를 앱에 맡기고 앱이 끝나기를 기다려 그 종료 코드를
|
|
9
|
+
돌려주며, 앱이 바꾼 콘솔의 코드 페이지를 되돌린다. 환경 변수 GEULPU_INSTALL(pip · pipx · uv — 이 꾸러미가 깔린 자리로 가림)을 넘겨
|
|
10
|
+
앱이 새 버전 알림에 그 설치 도구의 업데이트 명령을 보이게 한다.
|
|
11
|
+
"""
|
|
12
|
+
import os
|
|
13
|
+
import platform
|
|
14
|
+
import signal
|
|
15
|
+
import subprocess
|
|
16
|
+
import sys
|
|
17
|
+
|
|
18
|
+
from . import __version__, app_dir
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def 설치방식():
|
|
22
|
+
"""이 꾸러미를 깐 도구 — pipx(…\\pipx\\…\\venvs\\…) · uv(…\\uv\\tools\\…) · 그 밖은 pip"""
|
|
23
|
+
조각 = os.path.normcase(os.path.abspath(sys.prefix)).replace("\\", "/").split("/")
|
|
24
|
+
if "pipx" in 조각 and "venvs" in 조각:
|
|
25
|
+
return "pipx"
|
|
26
|
+
if "uv" in 조각 and "tools" in 조각:
|
|
27
|
+
return "uv"
|
|
28
|
+
return "pip"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def 코드페이지():
|
|
32
|
+
"""지금 콘솔의 (입력, 출력) 코드 페이지 — 콘솔이 없으면 None"""
|
|
33
|
+
try:
|
|
34
|
+
import ctypes
|
|
35
|
+
k = ctypes.windll.kernel32
|
|
36
|
+
cp = (k.GetConsoleCP(), k.GetConsoleOutputCP())
|
|
37
|
+
return cp if all(cp) else None
|
|
38
|
+
except Exception:
|
|
39
|
+
return None
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def 코드페이지되돌리기(cp):
|
|
43
|
+
if not cp:
|
|
44
|
+
return
|
|
45
|
+
try:
|
|
46
|
+
import ctypes
|
|
47
|
+
k = ctypes.windll.kernel32
|
|
48
|
+
k.SetConsoleCP(cp[0])
|
|
49
|
+
k.SetConsoleOutputCP(cp[1])
|
|
50
|
+
except Exception:
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def main(argv=None):
|
|
55
|
+
args = list(sys.argv[1:] if argv is None else argv)
|
|
56
|
+
if args[:1] in (["--version"], ["-V"]):
|
|
57
|
+
print(f"geulpu {__version__}")
|
|
58
|
+
return 0
|
|
59
|
+
if sys.platform != "win32" or platform.machine().lower() not in ("amd64", "x86_64"):
|
|
60
|
+
sys.stderr.write("GeulPU 의 PyPI 꾸러미는 지금 Windows x64 만 담습니다 — 다른 환경은 소스에서 빌드하세요"
|
|
61
|
+
"(https://github.com/wwoosshh/GeulPUv2#소스에서-빌드하기).\n"
|
|
62
|
+
"The GeulPU package currently ships Windows x64 only; build from source elsewhere.\n")
|
|
63
|
+
return 2
|
|
64
|
+
exe = os.path.join(app_dir(), "GeulPU.exe")
|
|
65
|
+
if not os.path.isfile(exe):
|
|
66
|
+
sys.stderr.write(f"GeulPU.exe 가 없습니다: {exe}\n백신이 격리했다면 되돌린 뒤, 아니면 꾸러미를 다시 설치하세요"
|
|
67
|
+
"(pip install --force-reinstall geulpu).\n")
|
|
68
|
+
return 2
|
|
69
|
+
env = dict(os.environ)
|
|
70
|
+
env["GEULPU_INSTALL"] = 설치방식()
|
|
71
|
+
# Ctrl+C 는 같은 콘솔의 앱도 받는다 — 실행기는 무시하고 앱이 스스로 끝나기를 기다린다(앱을 억지로 죽여 서버가 남지 않게)
|
|
72
|
+
try:
|
|
73
|
+
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
|
74
|
+
except (ValueError, OSError):
|
|
75
|
+
pass
|
|
76
|
+
cp = 코드페이지()
|
|
77
|
+
try:
|
|
78
|
+
# 절대 경로 · 셸 없이(현재 폴더의 다른 GeulPU.exe 가 잡히지 않게). 작업 폴더는 그대로 — 앱은 자기 폴더를 실행 파일의 자리로 찾고,
|
|
79
|
+
# --자료 의 상대 경로는 셸 기준이다
|
|
80
|
+
p = subprocess.Popen([exe] + args, env=env, shell=False)
|
|
81
|
+
except OSError as e:
|
|
82
|
+
sys.stderr.write(f"GeulPU.exe 를 실행하지 못했습니다: {e}\n")
|
|
83
|
+
return 2
|
|
84
|
+
try:
|
|
85
|
+
return p.wait()
|
|
86
|
+
finally:
|
|
87
|
+
코드페이지되돌리기(cp)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
if __name__ == "__main__":
|
|
91
|
+
sys.exit(main())
|
geulpu/app/GeulPU.exe
ADDED
|
Binary file
|
geulpu/app/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 wwoosshh
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
geulpu/app/README.txt
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
GeulPU — 내 PC의 그래픽카드로 돌리는 AI 채팅 (Windows x64)
|
|
2
|
+
GeulPU — local AI chat on your own graphics card (Windows x64)
|
|
3
|
+
|
|
4
|
+
English below.
|
|
5
|
+
|
|
6
|
+
==== 한국어 ====
|
|
7
|
+
|
|
8
|
+
시작하기
|
|
9
|
+
1. 이 폴더를 원하는 곳에 압축 해제합니다(예: C:\GeulPU). 경로에 한글이 있어도 됩니다.
|
|
10
|
+
2. GeulPU.exe를 실행하면 브라우저에 http://127.0.0.1:44544 가 열립니다.
|
|
11
|
+
- "Windows의 PC 보호" 창이 뜨면 [추가 정보] → [실행]을 누르세요(서명하지 않은 실행 파일이라 나타납니다).
|
|
12
|
+
- 검은 창(GeulPU)을 닫으면 앱이 종료됩니다.
|
|
13
|
+
3. [모델] → [모델 찾기]에서 모델을 고르고, 오른쪽 파일 목록에서 [다운로드]를 누릅니다. 처음이라면 'GeulPU 확인됨'
|
|
14
|
+
표시가 있는 모델(직접 돌려 본 파일)이 좋습니다. 이미 있는 GGUF 파일은 [GGUF 파일 추가]로 넣습니다.
|
|
15
|
+
4. [채팅]에서 모델을 고르고 메시지를 보냅니다. 처음 한 번은 이 GPU에 맞는 커널을 만드느라 1~3분 걸릴 수 있습니다.
|
|
16
|
+
Qwen3의 생각을 끄려면 오른쪽 위 [생성 설정] → '생각 과정 쓰기'를 끕니다.
|
|
17
|
+
5. [벤치마크]에서 하드웨어 진단 · 속도 측정 · 재현성 검증(기준 PC와 비트 단위로 같은지)을 실행하고, 결과를 zip으로
|
|
18
|
+
내보낼 수 있습니다.
|
|
19
|
+
6. 답 아래의 플라스크 단추(연구 패널)로 토큰마다의 확률 · 대안을 보고, 어느 걸음에서 다른 토큰으로 갈래를 내거나 다른
|
|
20
|
+
모델 · 프롬프트로 같은 답을 점수 매겨 견줍니다. 같은 값은 어느 PC · GPU에서 셈해도 비트까지 같습니다.
|
|
21
|
+
화면 그림과 함께 따라 하는 안내서: https://github.com/wwoosshh/GeulPUv2/blob/main/연구자안내.md
|
|
22
|
+
화면은 브라우저 언어를 따릅니다(한국어가 아니면 영어). [설정] → '언어 · Language'에서 바꿀 수 있습니다.
|
|
23
|
+
|
|
24
|
+
필요한 것
|
|
25
|
+
- Windows 10 / 11(64비트), 최신 그래픽 드라이버.
|
|
26
|
+
- NVIDIA RTX 30 시리즈 이상은 CUDA로, 그 밖의 GPU(AMD 등)는 Vulkan으로 실행합니다.
|
|
27
|
+
- 그래픽 메모리: 작은 모델(Qwen3-1.7B · Llama-3.2-3B) 6 GB, 7B · 8B는 8 GB(Q4_K_M) · 12 GB(Q8_0), 14B는 12 GB 이상.
|
|
28
|
+
- 인터넷은 모델을 찾고 받을 때와 새 버전을 확인할 때만 씁니다.
|
|
29
|
+
|
|
30
|
+
지원하는 모델
|
|
31
|
+
Qwen3(1.7B · 8B · 14B), Qwen2.5 · Qwen2.5-Coder · DeepSeek-R1-Distill-Qwen(1.5B 이상), Llama 3.1 · 3.2(3B · 8B) ·
|
|
32
|
+
Mistral 7B v0.3과 그 미세조정 모델(같은 대화 틀) —
|
|
33
|
+
GGUF Q8_0 · Q4_K_M · Q5_K_M · Q6_K. 윈도의 AMD는 지금 Q8_0(과 순수 Q4_0) 파일만 실행합니다.
|
|
34
|
+
|
|
35
|
+
데이터
|
|
36
|
+
모델 · 이 GPU용 커널 · 결과 · 설정은 %USERPROFILE%\GeulPU에 저장됩니다(버전을 바꿔도 그대로). 위치를 바꾸려면
|
|
37
|
+
GEULPU_HOME 환경 변수를 지정하세요. 문제가 생기면 그 안의 '기록' 폴더를 봅니다.
|
|
38
|
+
다른 프로그램은 http://127.0.0.1:44544/v1 (OpenAI 호환 API)로 쓸 수 있습니다 — 이 PC 안에서만 접속됩니다.
|
|
39
|
+
|
|
40
|
+
새 버전 · 삭제
|
|
41
|
+
앱 화면이 GitHub의 최신 릴리스를 알려 줍니다. 앱을 끄고 새 zip을 압축 해제해 그 GeulPU.exe를 실행하면 됩니다
|
|
42
|
+
(모델은 다시 받지 않습니다). 삭제는 이 폴더를 지우면 되고, 받은 모델까지 지우려면 %USERPROFILE%\GeulPU도 지웁니다.
|
|
43
|
+
파일별 SHA-256은 version.json에, zip의 SHA-256은 릴리스의 SHA256SUMS.txt에 있습니다.
|
|
44
|
+
|
|
45
|
+
자세한 안내 · 소스: https://github.com/wwoosshh/GeulPUv2
|
|
46
|
+
|
|
47
|
+
==== English ====
|
|
48
|
+
|
|
49
|
+
Getting started
|
|
50
|
+
1. Extract this folder anywhere (for example C:\GeulPU).
|
|
51
|
+
2. Run GeulPU.exe; your browser opens http://127.0.0.1:44544.
|
|
52
|
+
- If "Windows protected your PC" appears, click More info -> Run anyway (the executable is not code-signed).
|
|
53
|
+
- Closing the black console window (GeulPU) quits the app.
|
|
54
|
+
3. Open Models -> Find models, pick a model and click Download on a file in the list on the right. Models marked
|
|
55
|
+
"Verified by GeulPU" (files GeulPU has run itself) are a good start. Add GGUF files you already have with
|
|
56
|
+
"Add a GGUF file".
|
|
57
|
+
4. In Chat, pick the model and send a message. The first time, building kernels for your GPU can take 1-3 minutes.
|
|
58
|
+
To turn Qwen3's thinking off: Generation settings (top right) -> switch off Thinking.
|
|
59
|
+
5. Benchmark runs a hardware diagnosis, a speed test and a reproducibility check (bit-for-bit against the reference PC);
|
|
60
|
+
results export as a zip.
|
|
61
|
+
6. The flask button under an answer (research panel) shows each token's probability and alternatives; branch with
|
|
62
|
+
another token at any step, or score the same answer with another model or prompt. The values are bit-identical
|
|
63
|
+
on any PC or GPU. Step-by-step guide with screenshots: https://github.com/wwoosshh/GeulPUv2/blob/main/docs/research-guide.md
|
|
64
|
+
The screens follow your browser's language (English unless it prefers Korean); change it in Settings -> Language.
|
|
65
|
+
|
|
66
|
+
Requirements
|
|
67
|
+
- Windows 10 / 11 (64-bit) and an up-to-date graphics driver.
|
|
68
|
+
- NVIDIA RTX 30 series or newer runs on CUDA; other GPUs (AMD, ...) run on Vulkan.
|
|
69
|
+
- Graphics memory: 6 GB for small models (Qwen3-1.7B, Llama-3.2-3B), 8 GB (Q4_K_M) or 12 GB (Q8_0) for 7B / 8B, 12 GB or more for 14B.
|
|
70
|
+
- The internet is used only to find and download models and to check for new versions.
|
|
71
|
+
|
|
72
|
+
Supported models
|
|
73
|
+
Qwen3 (1.7B, 8B, 14B), Qwen2.5, Qwen2.5-Coder, DeepSeek-R1-Distill-Qwen (1.5B and up), Llama 3.1 / 3.2 (3B, 8B) and
|
|
74
|
+
Mistral 7B v0.3, and their fine-tunes (with the same chat templates) —
|
|
75
|
+
GGUF Q8_0, Q4_K_M, Q5_K_M, Q6_K. AMD on Windows currently runs Q8_0 (and pure Q4_0) files only.
|
|
76
|
+
|
|
77
|
+
Data
|
|
78
|
+
Models, kernels built for this GPU, results and settings live in %USERPROFILE%\GeulPU (kept across versions); set the
|
|
79
|
+
GEULPU_HOME environment variable to move it. Logs are in its 기록 (logs) folder.
|
|
80
|
+
Other programs can use http://127.0.0.1:44544/v1 (OpenAI-compatible API) — reachable from this PC only.
|
|
81
|
+
|
|
82
|
+
Updates and uninstall
|
|
83
|
+
The app shows when GitHub has a newer release. Quit the app, extract the new zip and run its GeulPU.exe (models are kept).
|
|
84
|
+
To uninstall, delete this folder; to delete the downloaded models too, also delete %USERPROFILE%\GeulPU.
|
|
85
|
+
Per-file SHA-256 values are in version.json; the zip's SHA-256 is in the release's SHA256SUMS.txt.
|
|
86
|
+
|
|
87
|
+
Full guide and source: https://github.com/wwoosshh/GeulPUv2 (English: README.en.md)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|