nmysore commited on
Commit
b692662
·
verified ·
1 Parent(s): 16cab96

Upload folder using huggingface_hub

Browse files
Dockerfile CHANGED
@@ -1,25 +1,4 @@
1
- # Stage 1: Merge LoRA adapter into base model (CPU only)
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
- }