131 lines
2.8 KiB
Markdown
131 lines
2.8 KiB
Markdown
---
|
|
license: apache-2.0
|
|
datasets:
|
|
- mlabonne/Evol-Instruct-Python-1k
|
|
pipeline_tag: text-generation
|
|
---
|
|
# 🦙💻 EvolCodeLlama-7b
|
|
|
|
📝 [Article](https://medium.com/@mlabonne/a-beginners-guide-to-llm-fine-tuning-4bae7d4da672)
|
|
|
|
<center><img src="https://i.imgur.com/5m7OJQU.png" width="300"></center>
|
|
|
|
This is a [`codellama/CodeLlama-7b-hf`](https://huggingface.co/codellama/CodeLlama-7b-hf) model fine-tuned using QLoRA (4-bit precision) on the [`mlabonne/Evol-Instruct-Python-1k`](https://huggingface.co/datasets/mlabonne/Evol-Instruct-Python-1k).
|
|
|
|
## 🔧 Training
|
|
|
|
It was trained on an RTX 3090 in 1h 11m 44s with the following configuration file:
|
|
|
|
```yaml
|
|
base_model: codellama/CodeLlama-7b-hf
|
|
base_model_config: codellama/CodeLlama-7b-hf
|
|
model_type: LlamaForCausalLM
|
|
tokenizer_type: LlamaTokenizer
|
|
is_llama_derived_model: true
|
|
hub_model_id: EvolCodeLlama-7b
|
|
|
|
load_in_8bit: false
|
|
load_in_4bit: true
|
|
strict: false
|
|
|
|
datasets:
|
|
- path: mlabonne/Evol-Instruct-Python-1k
|
|
type: alpaca
|
|
dataset_prepared_path: last_run_prepared
|
|
val_set_size: 0.02
|
|
output_dir: ./qlora-out
|
|
|
|
adapter: qlora
|
|
lora_model_dir:
|
|
|
|
sequence_len: 2048
|
|
sample_packing: true
|
|
|
|
lora_r: 32
|
|
lora_alpha: 16
|
|
lora_dropout: 0.05
|
|
lora_target_modules:
|
|
lora_target_linear: true
|
|
lora_fan_in_fan_out:
|
|
|
|
wandb_project: axolotl
|
|
wandb_entity:
|
|
wandb_watch:
|
|
wandb_run_id:
|
|
wandb_log_model:
|
|
|
|
gradient_accumulation_steps: 1
|
|
micro_batch_size: 10
|
|
num_epochs: 3
|
|
optimizer: paged_adamw_32bit
|
|
lr_scheduler: cosine
|
|
learning_rate: 0.0002
|
|
|
|
train_on_inputs: false
|
|
group_by_length: false
|
|
bf16: true
|
|
fp16: false
|
|
tf32: false
|
|
|
|
gradient_checkpointing: true
|
|
early_stopping_patience:
|
|
resume_from_checkpoint:
|
|
local_rank:
|
|
logging_steps: 1
|
|
xformers_attention:
|
|
flash_attention: true
|
|
|
|
warmup_steps: 100
|
|
eval_steps: 0.01
|
|
save_strategy: epoch
|
|
save_steps:
|
|
debug:
|
|
deepspeed:
|
|
weight_decay: 0.0
|
|
fsdp:
|
|
fsdp_config:
|
|
special_tokens:
|
|
bos_token: "<s>"
|
|
eos_token: "</s>"
|
|
unk_token: "<unk>"
|
|
```
|
|
|
|
Here are the loss curves:
|
|
|
|

|
|
|
|
It is mainly designed for educational purposes, not for inference.
|
|
|
|
[<img src="https://raw.githubusercontent.com/OpenAccess-AI-Collective/axolotl/main/image/axolotl-badge-web.png" alt="Built with Axolotl" width="200" height="32"/>](https://github.com/OpenAccess-AI-Collective/axolotl)
|
|
|
|
## 💻 Usage
|
|
|
|
``` python
|
|
# pip install transformers accelerate
|
|
|
|
from transformers import AutoTokenizer
|
|
import transformers
|
|
import torch
|
|
|
|
model = "mlabonne/EvolCodeLlama-7b"
|
|
prompt = "Your prompt"
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model)
|
|
pipeline = transformers.pipeline(
|
|
"text-generation",
|
|
model=model,
|
|
torch_dtype=torch.float16,
|
|
device_map="auto",
|
|
)
|
|
|
|
sequences = pipeline(
|
|
f'{prompt}',
|
|
do_sample=True,
|
|
top_k=10,
|
|
num_return_sequences=1,
|
|
eos_token_id=tokenizer.eos_token_id,
|
|
max_length=200,
|
|
)
|
|
for seq in sequences:
|
|
print(f"Result: {seq['generated_text']}")
|
|
``` |