| | --- |
| | license: apache-2.0 |
| | datasets: |
| | - mlabonne/Evol-Instruct-Python-26k |
| | pipeline_tag: text-generation |
| | --- |
| | # 🦙💻 PyLlama-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-26k). |
| |
|
| | ## 🔧 Training |
| |
|
| | It was trained on an RTX 3090 in 9h 52m 34s 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: PyLlama-7b |
| | |
| | load_in_8bit: false |
| | load_in_4bit: true |
| | strict: false |
| | |
| | datasets: |
| | - path: mlabonne/Evol-Instruct-Python-26k |
| | 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: |
| |
|
| | [TO ADD] |
| |
|
| | [<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/PyLlama-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']}") |
| | ``` |