chore(repo): add LICENSE, CI workflow, and untrack local config
Public-repo hygiene now that the project is hosted on Forgejo: - LICENSE: add the MIT text that pyproject.toml already declares. - .forgejo/workflows/ci.yml: run the pytest suite on push/PR against Python 3.10 and 3.12, so regressions (e.g. the healthcheck port bug) get caught automatically. - Untrack llama.cpp.config and gitignore it: it is a machine-specific runtime config that may later hold an api_key. The tracked template remains llama.cpp.config.example (copy it to get started). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d5a69e8bf8
commit
d72361cbae
4 changed files with 52 additions and 79 deletions
27
.forgejo/workflows/ci.yml
Normal file
27
.forgejo/workflows/ci.yml
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
# requires-python = ">=3.10"; test the floor and a recent version.
|
||||||
|
python-version: ["3.10", "3.12"]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
|
||||||
|
- name: Install package with dev extras
|
||||||
|
run: pip install -e ".[dev]"
|
||||||
|
|
||||||
|
- name: Run test suite
|
||||||
|
run: pytest -q
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -19,3 +19,7 @@ venv/
|
||||||
|
|
||||||
# Runtime lock files
|
# Runtime lock files
|
||||||
*.lock
|
*.lock
|
||||||
|
|
||||||
|
# Local runtime config (machine-specific; may hold an api_key).
|
||||||
|
# The tracked template is llama.cpp.config.example — copy it to get started.
|
||||||
|
llama.cpp.config
|
||||||
|
|
|
||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Dieter Schlueter
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
# llama.cpp.config.example
|
|
||||||
#
|
|
||||||
# Copy this file to llama.cpp.config and adjust it for your host before
|
|
||||||
# running llamacppctl. See docs/SECURITY_AND_OPERATIONS.md for details on
|
|
||||||
# every field and on the security model for --system-url/--prompt-url.
|
|
||||||
#
|
|
||||||
# Section types:
|
|
||||||
# [default] global defaults, merged over the built-in fallbacks
|
|
||||||
# [model.<name>] a model profile, selected via --profile <name>
|
|
||||||
# [prompt.<name>] a system-prompt profile, selected via --system-prompt-profile <name>
|
|
||||||
#
|
|
||||||
# container_name is MANDATORY and must be unique per profile you intend to
|
|
||||||
# run concurrently: it is the single identity anchor for Docker naming,
|
|
||||||
# locking (--change), and --stop/--check targeting.
|
|
||||||
|
|
||||||
[default]
|
|
||||||
image = ghcr.io/ggml-org/llama.cpp:server-cuda
|
|
||||||
hf_home = ${HF_HOME}
|
|
||||||
model_path = models/qwen3/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf
|
|
||||||
container_name = llama_cpp_server
|
|
||||||
host_port = 8001
|
|
||||||
container_port = 8000
|
|
||||||
model_alias = default_llm
|
|
||||||
gpu_device = 1
|
|
||||||
restart_policy = unless-stopped
|
|
||||||
# Groß-Profil für literarische Texte / durchdachte Reden: volles
|
|
||||||
# 256k-Kontextfenster (= n_ctx_train des Modells) und sehr lange Antworten.
|
|
||||||
# Empirisch gemessen passt der q4_0-KV-Cache dafür knapp auf EINE 24-GB-3090
|
|
||||||
# (~22,6 GB inkl. 21-GB-Modell). Bei Bedarf auf 131072/65536 senken.
|
|
||||||
ctx_size = 262144
|
|
||||||
n_predict = 32768
|
|
||||||
temp = 0.65
|
|
||||||
top_p = 0.80
|
|
||||||
top_k = 20
|
|
||||||
min_p = 0.01
|
|
||||||
repeat_penalty = 1.05
|
|
||||||
main_gpu = 0
|
|
||||||
ngl = 999
|
|
||||||
fa = true
|
|
||||||
kv_unified = true
|
|
||||||
jinja = true
|
|
||||||
reasoning = on
|
|
||||||
no_context_shift = true
|
|
||||||
cache_type_k = q4_0
|
|
||||||
cache_type_v = q4_0
|
|
||||||
batch_size = 1024
|
|
||||||
ubatch_size = 512
|
|
||||||
parallel = 1
|
|
||||||
cont_batching = true
|
|
||||||
health_endpoint = /health
|
|
||||||
models_endpoint = /v1/models
|
|
||||||
chat_endpoint = /v1/chat/completions
|
|
||||||
timeout = 300
|
|
||||||
poll_interval = 2
|
|
||||||
# Chat-Antwortbudget (Reasoning-Modell braucht viel; für lange Texte hoch):
|
|
||||||
max_tokens = 32768
|
|
||||||
# chat_temperature leer lassen -> Server-Temp (temp oben) gilt.
|
|
||||||
chat_temperature =
|
|
||||||
|
|
||||||
# Modell-Profile: erben ALLES aus [default] (Port 8001, Container
|
|
||||||
# llama_cpp_server, Alias default_llm, gpu_device 1, ctx_size 262144) und
|
|
||||||
# überschreiben NUR das Modell. Es läuft also immer ein Modell auf dem
|
|
||||||
# Standard-Port; --start/--change tauscht es aus. Wer Modelle GLEICHZEITIG
|
|
||||||
# betreiben will, gibt dem Profil zusätzlich einen eigenen container_name +
|
|
||||||
# host_port (Muster siehe llama.cpp.config.example).
|
|
||||||
[model.carnice]
|
|
||||||
model_path = models/qwen3/Carnice-Qwen3.6-MoE-35B-A3B-Q4_K_M.gguf
|
|
||||||
|
|
||||||
[model.qwen27b]
|
|
||||||
model_path = models/qwen3/Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-IQ4_XS.gguf
|
|
||||||
|
|
||||||
[model.qwopus]
|
|
||||||
model_path = models/qwen3/Qwopus3.6-35B-A3B-v1-Q4_K_M.gguf
|
|
||||||
|
|
||||||
[prompt.concise]
|
|
||||||
system_prompt = Du antwortest kurz, präzise und technisch.
|
|
||||||
|
|
||||||
[prompt.coding]
|
|
||||||
system_prompt = Du bist ein erfahrener Linux-, Python- und LLM-Infrastruktur-Engineer.
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue