初始化项目,由ModelHub XC社区提供模型
Model: thefabdev/llama-3-docker-ft Source: Original Platform
This commit is contained in:
36
.gitattributes
vendored
Normal file
36
.gitattributes
vendored
Normal file
@@ -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
|
||||||
92
README.md
Normal file
92
README.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
---
|
||||||
|
library_name: transformers
|
||||||
|
base_model: meta-llama/Meta-Llama-3-8B-Instruct
|
||||||
|
license: llama3
|
||||||
|
datasets:
|
||||||
|
- MattCoddity/dockerNLcommands
|
||||||
|
language:
|
||||||
|
- en
|
||||||
|
tags:
|
||||||
|
- lora
|
||||||
|
- docker
|
||||||
|
- text-generation
|
||||||
|
pipeline_tag: text-generation
|
||||||
|
---
|
||||||
|
|
||||||
|
# llama-3-docker-ft
|
||||||
|
|
||||||
|
LoRA fine-tune of `meta-llama/Meta-Llama-3-8B-Instruct` that translates natural-language
|
||||||
|
requests into Docker CLI commands. Merged adapter weights (base + LoRA), not an
|
||||||
|
adapter-only checkpoint.
|
||||||
|
|
||||||
|
This is a learning-lab artifact ([source notebook and writeup](https://github.com/Fakorede/llm-alignment-lab/tree/main/01_lora_sft)),
|
||||||
|
not a production model. Treat it as a first fine-tuning exercise, not a benchmarked release.
|
||||||
|
|
||||||
|
## Model Details
|
||||||
|
|
||||||
|
- **Base model:** `meta-llama/Meta-Llama-3-8B-Instruct`, loaded in 8-bit (`BitsAndBytesConfig(load_in_8bit=True)`)
|
||||||
|
- **Fine-tuning method:** LoRA (`peft`), `r=16`, `lora_alpha=32`, dropout `0.05`,
|
||||||
|
targeting `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`
|
||||||
|
(41.9M trainable params, 0.52% of 8.07B total)
|
||||||
|
- **Merged:** LoRA adapter merged into the base weights before push (`merge_and_unload()`)
|
||||||
|
- **License:** inherits the [Llama 3 Community License](https://llama.meta.com/llama3/license/) from the base model
|
||||||
|
|
||||||
|
## Training Data
|
||||||
|
|
||||||
|
[`MattCoddity/dockerNLcommands`](https://huggingface.co/datasets/MattCoddity/dockerNLcommands),
|
||||||
|
an instruction/input/output dataset pairing natural-language requests with the
|
||||||
|
corresponding Docker CLI command. Split 80/20 train/validation (seed 42).
|
||||||
|
|
||||||
|
## Training Procedure
|
||||||
|
|
||||||
|
`transformers.Trainer` + `TrainingArguments`: batch size 2, gradient accumulation 4
|
||||||
|
(effective batch size 8), `paged_adamw_8bit`, learning rate `2e-4`, 2 epochs (484 steps),
|
||||||
|
fp16, warmup steps 5, weight decay 0.01.
|
||||||
|
|
||||||
|
### Results
|
||||||
|
|
||||||
|
| Metric | Value |
|
||||||
|
|---|---|
|
||||||
|
| Train loss (last logged step) | 0.307 |
|
||||||
|
| Train loss (run average) | 0.461 |
|
||||||
|
| Eval loss | 0.341 |
|
||||||
|
| Train runtime | ~2738s (single A100 80GB) |
|
||||||
|
|
||||||
|
## Uses
|
||||||
|
|
||||||
|
**Intended use:** translating short, single-turn natural-language instructions about
|
||||||
|
containers/images into a Docker CLI command. Example:
|
||||||
|
|
||||||
|
\`\`\`python
|
||||||
|
import transformers
|
||||||
|
import torch
|
||||||
|
|
||||||
|
pipeline = transformers.pipeline(
|
||||||
|
"text-generation",
|
||||||
|
model="thefabdev/llama-3-docker-ft",
|
||||||
|
model_kwargs={"torch_dtype": torch.bfloat16},
|
||||||
|
device_map="auto",
|
||||||
|
)
|
||||||
|
|
||||||
|
messages = [
|
||||||
|
{"role": "system", "content": "You are a helpful assistant. Translate this sentence in docker command"},
|
||||||
|
{"role": "user", "content": "Display the information of the last 4 containers."},
|
||||||
|
]
|
||||||
|
|
||||||
|
result = pipeline(messages, max_new_tokens=256, temperature=0.25, top_p=1, repetition_penalty=1.2)
|
||||||
|
print(result[0]["generated_text"][-1]["content"])
|
||||||
|
# docker ps --last 4
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
**Out of scope:** general-purpose assistant use, multi-turn conversation, any
|
||||||
|
command generation where correctness/safety of the resulting shell command isn't
|
||||||
|
independently verified before execution. Generated commands are not validated for
|
||||||
|
safety and should not be run against production systems without review.
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
- Fine-tuned on a single small, narrow dataset (Docker CLI only), will not generalize
|
||||||
|
to other CLIs or general instruction-following.
|
||||||
|
- Trained for 2 epochs on ~800 examples; not evaluated against a held-out benchmark
|
||||||
|
beyond the validation split loss above.
|
||||||
|
- No safety/red-teaming evaluation has been performed on this model.
|
||||||
5
chat_template.jinja
Normal file
5
chat_template.jinja
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{% set loop_messages = messages %}{% for message in loop_messages %}{% set content = '<|start_header_id|>' + message['role'] + '<|end_header_id|>
|
||||||
|
|
||||||
|
'+ message['content'] | trim + '<|eot_id|>' %}{% if loop.index0 == 0 %}{% set content = bos_token + content %}{% endif %}{{ content }}{% endfor %}{% if add_generation_prompt %}{{ '<|start_header_id|>assistant<|end_header_id|>
|
||||||
|
|
||||||
|
' }}{% endif %}
|
||||||
32
config.json
Normal file
32
config.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"architectures": [
|
||||||
|
"LlamaForCausalLM"
|
||||||
|
],
|
||||||
|
"attention_bias": false,
|
||||||
|
"attention_dropout": 0.0,
|
||||||
|
"bos_token_id": 128000,
|
||||||
|
"dtype": "bfloat16",
|
||||||
|
"eos_token_id": 128009,
|
||||||
|
"head_dim": 128,
|
||||||
|
"hidden_act": "silu",
|
||||||
|
"hidden_size": 4096,
|
||||||
|
"initializer_range": 0.02,
|
||||||
|
"intermediate_size": 14336,
|
||||||
|
"max_position_embeddings": 8192,
|
||||||
|
"mlp_bias": false,
|
||||||
|
"model_type": "llama",
|
||||||
|
"num_attention_heads": 32,
|
||||||
|
"num_hidden_layers": 32,
|
||||||
|
"num_key_value_heads": 8,
|
||||||
|
"pad_token_id": null,
|
||||||
|
"pretraining_tp": 1,
|
||||||
|
"rms_norm_eps": 1e-05,
|
||||||
|
"rope_parameters": {
|
||||||
|
"rope_theta": 500000.0,
|
||||||
|
"rope_type": "default"
|
||||||
|
},
|
||||||
|
"tie_word_embeddings": false,
|
||||||
|
"transformers_version": "5.13.1",
|
||||||
|
"use_cache": true,
|
||||||
|
"vocab_size": 128256
|
||||||
|
}
|
||||||
12
generation_config.json
Normal file
12
generation_config.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"bos_token_id": 128000,
|
||||||
|
"do_sample": true,
|
||||||
|
"eos_token_id": [
|
||||||
|
128001,
|
||||||
|
128009
|
||||||
|
],
|
||||||
|
"max_length": 4096,
|
||||||
|
"temperature": 0.6,
|
||||||
|
"top_p": 0.9,
|
||||||
|
"transformers_version": "5.13.1"
|
||||||
|
}
|
||||||
3
model.safetensors
Normal file
3
model.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:373197272b4f16a4b6b13cca0d0f71c3f0900b31a3135545ea95e01c84c06f76
|
||||||
|
size 16060556616
|
||||||
3
tokenizer.json
Normal file
3
tokenizer.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:3c5cf44023714fb39b05e71e425f8d7b92805ff73f7988b083b8c87f0bf87393
|
||||||
|
size 17209961
|
||||||
16
tokenizer_config.json
Normal file
16
tokenizer_config.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"backend": "tokenizers",
|
||||||
|
"bos_token": "<|begin_of_text|>",
|
||||||
|
"clean_up_tokenization_spaces": true,
|
||||||
|
"eos_token": "<|eot_id|>",
|
||||||
|
"is_local": false,
|
||||||
|
"local_files_only": false,
|
||||||
|
"model_input_names": [
|
||||||
|
"input_ids",
|
||||||
|
"attention_mask"
|
||||||
|
],
|
||||||
|
"model_max_length": 1000000000000000019884624838656,
|
||||||
|
"pad_token": "<|end_of_text|>",
|
||||||
|
"padding_size": "left",
|
||||||
|
"tokenizer_class": "TokenizersBackend"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user