From 882b4bfe936d392aa63c8a14841673b86afecb88 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sat, 25 Jul 2026 17:57:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: koreallmdev/8bcustom-model Source: Original Platform --- .gitattributes | 36 ++ PUBLIC_RELEASE_STATUS.json | 12 + README.md | 250 +++++++++++++ chat_template.jinja | 6 + config.json | 61 +++ generation_config.json | 14 + merge_meta.json | 8 + model-00001-of-00004.safetensors | 3 + model-00002-of-00004.safetensors | 3 + model-00003-of-00004.safetensors | 3 + model-00004-of-00004.safetensors | 3 + model.safetensors.index.json | 347 ++++++++++++++++++ .../LORA_STABLE_POLICY_TEMPLATE.txt | 25 ++ .../OPENWEBUI_BASE_SYSTEM_PROMPT.txt | 5 + .../OPENWEBUI_LINUX_GUARDED_PROMPT.txt | 4 + .../OPENWEBUI_VLLM_MEDIUM_PROMPT.txt | 4 + runtime_policy/RUNTIME_ROUTER_RULES.md | 95 +++++ tokenizer.json | 3 + tokenizer_config.json | 19 + 19 files changed, 901 insertions(+) create mode 100644 .gitattributes create mode 100644 PUBLIC_RELEASE_STATUS.json create mode 100644 README.md create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 merge_meta.json create mode 100644 model-00001-of-00004.safetensors create mode 100644 model-00002-of-00004.safetensors create mode 100644 model-00003-of-00004.safetensors create mode 100644 model-00004-of-00004.safetensors create mode 100644 model.safetensors.index.json create mode 100644 runtime_policy/LORA_STABLE_POLICY_TEMPLATE.txt create mode 100644 runtime_policy/OPENWEBUI_BASE_SYSTEM_PROMPT.txt create mode 100644 runtime_policy/OPENWEBUI_LINUX_GUARDED_PROMPT.txt create mode 100644 runtime_policy/OPENWEBUI_VLLM_MEDIUM_PROMPT.txt create mode 100644 runtime_policy/RUNTIME_ROUTER_RULES.md create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52373fe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/PUBLIC_RELEASE_STATUS.json b/PUBLIC_RELEASE_STATUS.json new file mode 100644 index 0000000..42cd31d --- /dev/null +++ b/PUBLIC_RELEASE_STATUS.json @@ -0,0 +1,12 @@ +{ + "model_name": "8bcustom-model", + "previous_public_name": "7bcustom-model", + "served_model_name": "dgx-stable-current", + "hf_repo_id": "koreallmdev/8bcustom-model", + "runtime": "vLLM OpenAI-compatible API", + "openwebui_compatible": true, + "model_class": "8B-class", + "benchmark_decision": "DEPLOY_CANDIDATE", + "stable_changed": false, + "corrected_title_at": "20260623_214256" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..6475058 --- /dev/null +++ b/README.md @@ -0,0 +1,250 @@ +--- +license: other +pipeline_tag: text-generation +tags: +- text-generation +- coding +- korean +- vllm +- open-webui +- local-llm +- lora +- qwen +- 8b +language: +- ko +- en +--- + + + +# Legacy / Experimental Release + +This repository is kept public as part of the development portfolio. + +Latest production release: + +https://huggingface.co/koreallmdev/qwen2-5-14b-korean-coding-assistant-gguf + +최신 공개 운영 모델은 아래 repo를 사용하세요. + +```text +koreallmdev/qwen2-5-14b-korean-coding-assistant-gguf +``` + + + + +--- + +# 8bcustom-model + +**8bcustom-model** is an 8B-class local coding assistant model/runtime release built for Korean developers who need practical help with Linux, Docker, vLLM, Open-WebUI, CUDA, JSONL datasets, and LoRA workflows. + +This repository is part of a DGX AI Factory-style local LLM deployment project: data preparation, LoRA repair, model merge, vLLM serving, Open-WebUI integration, systemd autostart, benchmarking, and Hugging Face release packaging. + +## What this model is for + +This model is designed as a practical development assistant for: + +- Linux command troubleshooting +- Docker and service deployment +- vLLM OpenAI-compatible serving +- Open-WebUI connection setup +- CUDA/PyTorch environment checks +- JSONL dataset validation +- LoRA training and repair workflows +- Korean step-by-step developer support + +The target behavior is direct, procedural, and operational: diagnose the problem, provide exact commands, and explain the result clearly in Korean honorific style. + +## Validated local runtime + +The model was validated in a local production-style runtime: + +| Component | Status | +|---|---| +| vLLM OpenAI-compatible API | Working | +| Open-WebUI integration | Working | +| systemd autostart | Working | +| Local model name | `dgx-stable-current` | +| Public release name | `8bcustom-model` | +| Hugging Face public repo | `koreallmdev/8bcustom-model` | + +## Benchmark summary + +The final deployment benchmark used a router/template runtime hardening layer for operational reliability. + +| Metric | Result | +|---|---:| +| Average score | 97.75 | +| Pass ≥ 70 | 20 / 20 | +| Strong ≥ 85 | 20 / 20 | +| Critical failures | 0 | +| Decision | DEPLOY_CANDIDATE | + +The benchmark focused on practical developer operations such as Linux, Docker, CUDA checks, vLLM serving, JSONL validation, FastAPI, systemd troubleshooting, LoRA policy, and Korean response quality. + +## Runtime policy + +For production usage, the local deployment uses a hybrid approach: + +- General coding questions: model generation +- Linux/vLLM/CUDA/systemd known operational routes: guarded templates +- LoRA/stable/rejected model policy: fixed policy templates +- CJK leakage and style regressions: post-check and route hardening + +This approach keeps the model useful for open-ended coding while making high-risk operational answers more deterministic. + +## Quick start with vLLM + +After downloading the model files, you can serve the model with vLLM: + +```bash +python -m vllm.entrypoints.openai.api_server \ + --model ./ \ + --served-model-name 8bcustom-model \ + --dtype float16 \ + --host 0.0.0.0 \ + --port 8000 \ + --max-model-len 1536 \ + --gpu-memory-utilization 0.50 \ + --max-num-seqs 8 +``` + +Check the model endpoint: + +```bash +curl http://127.0.0.1:8000/v1/models +``` + +Send a test request: + +```bash +curl http://127.0.0.1:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "8bcustom-model", + "messages": [ + { + "role": "user", + "content": "Docker 컨테이너가 실행 중인지 확인하는 명령어를 알려주세요." + } + ], + "temperature": 0.2, + "max_tokens": 300 + }' +``` + +## Open-WebUI connection + +For Open-WebUI, add an OpenAI-compatible API connection. + +If Open-WebUI runs in Docker: + +```text +Base URL: http://host.docker.internal:8000/v1 +API Key : dummy +Model : 8bcustom-model +``` + +If you use the local deployment name from the original DGX runtime: + +```text +Model: dgx-stable-current +``` + +If `host.docker.internal` does not work in your Docker environment, try: + +```text +Base URL: http://172.17.0.1:8000/v1 +``` + +## Example prompts + +Korean developer support: + +```text +Ubuntu에서 8000 포트를 사용 중인 프로세스를 확인하고 종료하는 절차를 알려주세요. +``` + +vLLM troubleshooting: + +```text +vLLM 서버가 Open-WebUI에 모델을 표시하지 못할 때 확인해야 할 순서를 알려주세요. +``` + +LoRA workflow: + +```text +LoRA adapter를 merge한 뒤 vLLM에서 서빙하기 전 확인해야 할 파일 목록을 알려주세요. +``` + +Dataset validation: + +```text +JSONL 학습 데이터에서 깨진 JSON과 중복 instruction을 검사하는 Python 스크립트를 만들어주세요. +``` + +## Intended use + +This release is intended for: + +- Local developer assistants +- On-premise coding assistant experiments +- vLLM/Open-WebUI deployment practice +- Korean-language coding support +- LoRA and dataset pipeline testing + +## Out-of-scope use + +This model is not intended to be treated as a fully audited security, legal, medical, or financial advisor. Operational outputs should be reviewed before applying them to production systems. + +## Deployment notes + +The original local deployment used: + +```text +Local served model name: dgx-stable-current +Open-WebUI URL : http://127.0.0.1:3000 +vLLM URL : http://127.0.0.1:8000/v1 +Open-WebUI Base URL : http://host.docker.internal:8000/v1 +``` + +The public release name is: + +```text +8bcustom-model +``` + +## Project highlights + +This project demonstrates an end-to-end local LLM workflow: + +1. Dataset filtering and repair +2. LoRA candidate testing +3. Regression rejection +4. Stable adapter preservation +5. Model merge for vLLM +6. Open-WebUI integration +7. systemd autostart +8. Private backup upload +9. Public Hugging Face release +10. Runtime route/template hardening + +## Collaboration + +This repository can be used as a portfolio reference for: + +- Local LLM deployment +- vLLM serving +- Open-WebUI integration +- Korean coding assistant customization +- LoRA fine-tuning and repair workflows +- On-premise AI assistant setup + +For collaboration, please contact through the Hugging Face profile associated with this repository. + +## Disclaimer + +This is an experimental local LLM deployment release. Validate outputs before use in production environments. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..a4c0b59 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,6 @@ +{% for message in messages %}{% if loop.first and messages[0]['role'] != 'system' %}{{ '<|im_start|>system +You are a helpful assistant.<|im_end|> +' }}{% endif %}{{'<|im_start|>' + message['role'] + ' +' + message['content'] + '<|im_end|>' + ' +'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant +' }}{% endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..cc94e8e --- /dev/null +++ b/config.json @@ -0,0 +1,61 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "float16", + "eos_token_id": 151645, + "hidden_act": "silu", + "hidden_size": 3584, + "initializer_range": 0.02, + "intermediate_size": 18944, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 28, + "model_type": "qwen2", + "num_attention_heads": 28, + "num_hidden_layers": 28, + "num_key_value_heads": 4, + "pad_token_id": null, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000.0, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": false, + "transformers_version": "5.12.1", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 152064 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..fee66e8 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "pad_token_id": 151643, + "repetition_penalty": 1.05, + "temperature": 0.7, + "top_k": 20, + "top_p": 0.8, + "transformers_version": "5.12.1" +} diff --git a/merge_meta.json b/merge_meta.json new file mode 100644 index 0000000..f1367e9 --- /dev/null +++ b/merge_meta.json @@ -0,0 +1,8 @@ +{ + "base_model": "Qwen/Qwen2-7B-Instruct", + "stable_adapter": "/home/saul9523/dgx_ai_factory/06_train/lora_quality_v5_643_repair", + "merged_model": "/home/saul9523/dgx_ai_factory/86_vllm_models/merged_current_stable_repair_20260623_190058", + "created_at": "20260623_190058", + "purpose": "vLLM standalone HF model from current_stable_repair", + "stable_changed": false +} \ No newline at end of file diff --git a/model-00001-of-00004.safetensors b/model-00001-of-00004.safetensors new file mode 100644 index 0000000..7020485 --- /dev/null +++ b/model-00001-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2fde0eb6a2592643eaa465ef9dc3fe9ee820039b49c001e6dbcfa6d39cd2247 +size 3989398504 diff --git a/model-00002-of-00004.safetensors b/model-00002-of-00004.safetensors new file mode 100644 index 0000000..20d7565 --- /dev/null +++ b/model-00002-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8ad0522c49eb843dd3cca844d732823e1494155bcdc8f4ac049cb63eed868b +size 3919792504 diff --git a/model-00003-of-00004.safetensors b/model-00003-of-00004.safetensors new file mode 100644 index 0000000..b6d6118 --- /dev/null +++ b/model-00003-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aa78756d81f46a9a6196fd372d162cdc1d74b4c5fd1b4b15ecae558def87f97 +size 3864726312 diff --git a/model-00004-of-00004.safetensors b/model-00004-of-00004.safetensors new file mode 100644 index 0000000..87f9f97 --- /dev/null +++ b/model-00004-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cbdd38314bf941fd4156e0381fa2bb819aca7b0e075a5065245b7776aebe3fa +size 3457354168 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..d55268e --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,347 @@ +{ + "metadata": { + "total_parameters": 7615616512, + "total_size": 15231233024 + }, + "weight_map": { + "lm_head.weight": "model-00001-of-00004.safetensors", + "model.embed_tokens.weight": "model-00001-of-00004.safetensors", + "model.layers.0.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.10.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.12.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.13.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.14.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.15.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.16.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.17.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.18.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.19.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.2.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.20.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.20.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.21.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.22.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.23.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.24.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.25.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.26.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.27.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.3.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.3.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.3.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.4.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.5.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.6.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.7.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.norm.weight": "model-00004-of-00004.safetensors" + } +} diff --git a/runtime_policy/LORA_STABLE_POLICY_TEMPLATE.txt b/runtime_policy/LORA_STABLE_POLICY_TEMPLATE.txt new file mode 100644 index 0000000..2c7cfe1 --- /dev/null +++ b/runtime_policy/LORA_STABLE_POLICY_TEMPLATE.txt @@ -0,0 +1,25 @@ +LoRA adapter 학습 결과를 바로 stable로 바꾸면 안 됩니다. + +이유는 새 adapter가 일부 질문에서는 좋아 보여도, 다른 항목에서 회귀할 수 있기 때문입니다. 특히 한국어 존댓말, 명령어 형식, CJK 누출, 필수 키워드 포함 여부는 별도로 확인해야 합니다. + +검증 순서는 다음과 같습니다. + +1. smoke test를 먼저 실행합니다. + - 짧은 핵심 질문으로 기본 동작을 확인합니다. + - CJK 누출, 과도하게 짧은 답변, 필수 명령어 누락이 있으면 다음 단계로 가지 않습니다. + +2. smoke test를 통과한 adapter만 benchmark를 실행합니다. + - 기존 stable adapter와 같은 기준으로 비교합니다. + - 평균 점수만 보지 말고 pass_70_plus, strong_85_plus, CJK flags를 같이 봅니다. + +3. benchmark 결과가 기존 stable보다 확실히 좋아야 합니다. + - 기준을 통과하지 못하면 stable로 승격하지 않습니다. + - 애매한 결과는 hold candidate로 둡니다. + +4. 실패한 adapter는 rejected로 분리합니다. + - CJK 누출이나 점수 회귀가 있으면 rejected 처리합니다. + - rejected adapter에서 추가 학습을 이어가면 회귀가 누적될 수 있습니다. + +5. stable 승격은 마지막에만 합니다. + - smoke test와 benchmark를 모두 통과한 뒤에만 current_stable_repair를 변경합니다. + - 통과하지 못하면 기존 stable을 유지합니다. diff --git a/runtime_policy/OPENWEBUI_BASE_SYSTEM_PROMPT.txt b/runtime_policy/OPENWEBUI_BASE_SYSTEM_PROMPT.txt new file mode 100644 index 0000000..23a2994 --- /dev/null +++ b/runtime_policy/OPENWEBUI_BASE_SYSTEM_PROMPT.txt @@ -0,0 +1,5 @@ +한국어 존댓말로 답변하는 코딩 개발 비서입니다. +명령어와 설명을 구분해서 답변하세요. +사용자가 터미널에 붙여넣을 명령어는 코드블록에 따로 넣으세요. +로그와 명령어를 섞지 마세요. +모르는 내용은 추측하지 말고 확인 명령어를 먼저 제시하세요. diff --git a/runtime_policy/OPENWEBUI_LINUX_GUARDED_PROMPT.txt b/runtime_policy/OPENWEBUI_LINUX_GUARDED_PROMPT.txt new file mode 100644 index 0000000..a600537 --- /dev/null +++ b/runtime_policy/OPENWEBUI_LINUX_GUARDED_PROMPT.txt @@ -0,0 +1,4 @@ +한국어 존댓말로 답변하세요. +Linux 명령어는 ASCII 문자로만 작성하세요. +답변은 짧은 설명과 명령어 코드블록으로 구성하세요. +추상 경로가 필요하면 /home/saul9523/dgx_ai_factory 같은 실제 예시 경로를 사용하세요. diff --git a/runtime_policy/OPENWEBUI_VLLM_MEDIUM_PROMPT.txt b/runtime_policy/OPENWEBUI_VLLM_MEDIUM_PROMPT.txt new file mode 100644 index 0000000..5ecf731 --- /dev/null +++ b/runtime_policy/OPENWEBUI_VLLM_MEDIUM_PROMPT.txt @@ -0,0 +1,4 @@ +한국어 존댓말로 답변하는 vLLM 운영 비서입니다. +vLLM 실행 예시는 python -m vllm.entrypoints.openai.api_server 형식을 우선 사용하세요. +답변에는 실행 명령어 코드블록과 확인 방법을 함께 포함하세요. +OpenAI 호환 API 확인에는 /v1/models 또는 /v1/chat/completions 확인 명령어를 사용하세요. diff --git a/runtime_policy/RUNTIME_ROUTER_RULES.md b/runtime_policy/RUNTIME_ROUTER_RULES.md new file mode 100644 index 0000000..69b1d21 --- /dev/null +++ b/runtime_policy/RUNTIME_ROUTER_RULES.md @@ -0,0 +1,95 @@ +# DGX Runtime Router Rules + +## 최종 통과 정책 + +93단계에서 `router + template runtime` 방식이 통과했습니다. + +- passed: 6/6 +- decision: VLLM_API_ROUTER_TEMPLATE_SMOKE_PASS +- model: dgx-stable-current +- stable 변경: 없음 + +## 라우팅 원칙 + +일반 질문은 모델에게 자유 생성시켜도 됩니다. +하지만 검증 정책처럼 정답이 정해진 항목은 모델에게 자유 생성시키지 말고 템플릿으로 응답합니다. + +## Route A: base prompt + +대상: +- FastAPI +- Docker +- 일반 Python +- 일반 오류 분석 +- 일반 파일/폴더 명령 + +사용 파일: +- OPENWEBUI_BASE_SYSTEM_PROMPT.txt + +## Route B: Linux guarded prompt + +대상: +- df +- du +- ps +- grep +- ss +- journalctl +- systemctl +- Ubuntu 디스크/프로세스/포트 확인 + +사용 파일: +- OPENWEBUI_LINUX_GUARDED_PROMPT.txt + +주의: +- 추상 경로 대신 실제 예시 경로를 사용합니다. +- 명령어는 ASCII로 작성합니다. + +## Route C: vLLM medium prompt + +대상: +- vLLM 실행 +- OpenAI 호환 API +- /v1/models +- /v1/chat/completions +- api_server +- gpu-memory-utilization +- max-model-len +- max-num-seqs + +사용 파일: +- OPENWEBUI_VLLM_MEDIUM_PROMPT.txt + +핵심: +- `python -m vllm.entrypoints.openai.api_server` 형식을 우선 사용합니다. +- 8000 포트 확인 명령을 포함합니다. + +## Route D: LoRA stable policy template + +대상 키워드: +- LoRA +- adapter +- stable +- current_stable_repair +- smoke test +- benchmark +- rejected +- hold candidate +- 승격 +- 회귀 +- CJK 누출 + +사용 파일: +- LORA_STABLE_POLICY_TEMPLATE.txt + +핵심: +- 이 항목은 모델 자유 생성 금지입니다. +- 고정 템플릿을 반환합니다. +- 이유: 모델이 LoRA 정의와 검증 절차를 잘못 생성하거나 CJK drift를 낼 수 있습니다. + +## 현재 운영 상태 + +- production model served by vLLM: dgx-stable-current +- merged model path source: 86_vllm_models/latest_merged_current_stable_repair_path.txt +- stable adapter: 06_train/current_stable_repair +- runtime policy: router_template_runtime diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..408c9fb --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f722bc04c884e2fe1525fdcd85a1293a8499b6e620c1ac7c083c49632305fb +size 11418262 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..58a98cb --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,19 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>" + ], + "is_local": false, + "local_files_only": false, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}