|
--- |
|
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: |
|
|
|
![](https://i.imgur.com/zrBq01N.png) |
|
|
|
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']}") |
|
``` |