Upload folder using huggingface_hub
Browse files- Dockerfile +2 -24
- adapter_config.json +0 -41
- adapter_model.safetensors +0 -3
- merge_and_save.py +0 -38
- tokenizer.json +0 -0
- tokenizer_config.json +0 -12
Dockerfile
CHANGED
|
@@ -1,25 +1,4 @@
|
|
| 1 |
-
|
| 2 |
-
FROM python:3.11-slim AS merger
|
| 3 |
-
|
| 4 |
-
RUN pip install --no-cache-dir \
|
| 5 |
-
torch==2.5.1 --index-url https://download.pytorch.org/whl/cpu \
|
| 6 |
-
&& pip install --no-cache-dir \
|
| 7 |
-
transformers==4.51.3 \
|
| 8 |
-
peft==0.18.1 \
|
| 9 |
-
safetensors \
|
| 10 |
-
accelerate
|
| 11 |
-
|
| 12 |
-
COPY adapter_config.json /adapter/
|
| 13 |
-
COPY adapter_model.safetensors /adapter/
|
| 14 |
-
COPY tokenizer.json /adapter/
|
| 15 |
-
COPY tokenizer_config.json /adapter/
|
| 16 |
-
|
| 17 |
-
COPY merge_and_save.py /merge_and_save.py
|
| 18 |
-
|
| 19 |
-
RUN python /merge_and_save.py
|
| 20 |
-
|
| 21 |
-
# Stage 2: Lightweight runtime (CPU — free tier on HF Spaces)
|
| 22 |
-
FROM python:3.11-slim AS runtime
|
| 23 |
|
| 24 |
RUN pip install --no-cache-dir \
|
| 25 |
torch==2.5.1 --index-url https://download.pytorch.org/whl/cpu \
|
|
@@ -32,11 +11,10 @@ RUN pip install --no-cache-dir \
|
|
| 32 |
|
| 33 |
RUN useradd -m -u 1000 appuser
|
| 34 |
|
| 35 |
-
COPY --from=merger --chown=1000:1000 /merged_model /model
|
| 36 |
COPY --chown=1000:1000 server.py /app/server.py
|
| 37 |
|
| 38 |
USER appuser
|
| 39 |
-
ENV MODEL_DIR=/model
|
| 40 |
EXPOSE 7860
|
| 41 |
|
| 42 |
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "7860", "--app-dir", "/app"]
|
|
|
|
| 1 |
+
FROM python:3.11-slim
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
RUN pip install --no-cache-dir \
|
| 4 |
torch==2.5.1 --index-url https://download.pytorch.org/whl/cpu \
|
|
|
|
| 11 |
|
| 12 |
RUN useradd -m -u 1000 appuser
|
| 13 |
|
|
|
|
| 14 |
COPY --chown=1000:1000 server.py /app/server.py
|
| 15 |
|
| 16 |
USER appuser
|
| 17 |
+
ENV MODEL_DIR=nmysore/seng-model
|
| 18 |
EXPOSE 7860
|
| 19 |
|
| 20 |
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "7860", "--app-dir", "/app"]
|
adapter_config.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"alora_invocation_tokens": null,
|
| 3 |
-
"alpha_pattern": {},
|
| 4 |
-
"arrow_config": null,
|
| 5 |
-
"auto_mapping": null,
|
| 6 |
-
"base_model_name_or_path": "gpt2-large",
|
| 7 |
-
"bias": "none",
|
| 8 |
-
"corda_config": null,
|
| 9 |
-
"ensure_weight_tying": false,
|
| 10 |
-
"eva_config": null,
|
| 11 |
-
"exclude_modules": null,
|
| 12 |
-
"fan_in_fan_out": true,
|
| 13 |
-
"inference_mode": true,
|
| 14 |
-
"init_lora_weights": true,
|
| 15 |
-
"layer_replication": null,
|
| 16 |
-
"layers_pattern": null,
|
| 17 |
-
"layers_to_transform": null,
|
| 18 |
-
"loftq_config": {},
|
| 19 |
-
"lora_alpha": 32,
|
| 20 |
-
"lora_bias": false,
|
| 21 |
-
"lora_dropout": 0.05,
|
| 22 |
-
"megatron_config": null,
|
| 23 |
-
"megatron_core": "megatron.core",
|
| 24 |
-
"modules_to_save": null,
|
| 25 |
-
"peft_type": "LORA",
|
| 26 |
-
"peft_version": "0.18.1",
|
| 27 |
-
"qalora_group_size": 16,
|
| 28 |
-
"r": 16,
|
| 29 |
-
"rank_pattern": {},
|
| 30 |
-
"revision": null,
|
| 31 |
-
"target_modules": [
|
| 32 |
-
"c_proj",
|
| 33 |
-
"c_attn"
|
| 34 |
-
],
|
| 35 |
-
"target_parameters": null,
|
| 36 |
-
"task_type": "CAUSAL_LM",
|
| 37 |
-
"trainable_token_indices": null,
|
| 38 |
-
"use_dora": false,
|
| 39 |
-
"use_qalora": false,
|
| 40 |
-
"use_rslora": false
|
| 41 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adapter_model.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:3be1c1ea2eba9b7ba1303c969b4ba41dcc6cb1fc2bb1aeec66653167d904745a
|
| 3 |
-
size 32468368
|
|
|
|
|
|
|
|
|
|
|
|
merge_and_save.py
DELETED
|
@@ -1,38 +0,0 @@
|
|
| 1 |
-
"""Merge LoRA adapter into gpt2-large base model and save.
|
| 2 |
-
|
| 3 |
-
Runs at Docker build time (CPU only). The merged model eliminates the
|
| 4 |
-
PEFT dependency at runtime, simplifying the serving image.
|
| 5 |
-
"""
|
| 6 |
-
|
| 7 |
-
import torch
|
| 8 |
-
from peft import PeftModel
|
| 9 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 10 |
-
|
| 11 |
-
ADAPTER_DIR = "/adapter"
|
| 12 |
-
OUTPUT_DIR = "/merged_model"
|
| 13 |
-
BASE_MODEL = "gpt2-large"
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
def main():
|
| 17 |
-
print(f"Loading base model: {BASE_MODEL}")
|
| 18 |
-
base_model = AutoModelForCausalLM.from_pretrained(
|
| 19 |
-
BASE_MODEL, torch_dtype=torch.float32
|
| 20 |
-
)
|
| 21 |
-
|
| 22 |
-
print(f"Loading LoRA adapter from: {ADAPTER_DIR}")
|
| 23 |
-
model = PeftModel.from_pretrained(base_model, ADAPTER_DIR)
|
| 24 |
-
|
| 25 |
-
print("Merging adapter into base model...")
|
| 26 |
-
model = model.merge_and_unload()
|
| 27 |
-
|
| 28 |
-
print(f"Saving merged model to: {OUTPUT_DIR}")
|
| 29 |
-
model.save_pretrained(OUTPUT_DIR)
|
| 30 |
-
|
| 31 |
-
tokenizer = AutoTokenizer.from_pretrained(ADAPTER_DIR)
|
| 32 |
-
tokenizer.save_pretrained(OUTPUT_DIR)
|
| 33 |
-
|
| 34 |
-
print("Merge complete.")
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
if __name__ == "__main__":
|
| 38 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tokenizer.json
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer_config.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"add_prefix_space": false,
|
| 3 |
-
"backend": "tokenizers",
|
| 4 |
-
"bos_token": "<|endoftext|>",
|
| 5 |
-
"eos_token": "<|endoftext|>",
|
| 6 |
-
"errors": "replace",
|
| 7 |
-
"is_local": false,
|
| 8 |
-
"model_max_length": 1024,
|
| 9 |
-
"pad_token": "<|endoftext|>",
|
| 10 |
-
"tokenizer_class": "GPT2Tokenizer",
|
| 11 |
-
"unk_token": "<|endoftext|>"
|
| 12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|