|
--- |
|
tags: |
|
- axolot |
|
- code |
|
- coding |
|
- Tinyllama |
|
- axolot |
|
model-index: |
|
- name: TinyLlama-1431k-python-coder |
|
results: [] |
|
license: apache-2.0 |
|
language: |
|
- code |
|
datasets: |
|
- iamtarun/python_code_instructions_18k_alpaca |
|
pipeline_tag: text-generation |
|
--- |
|
|
|
|
|
# TinyLlaMa 1.1B 1431k 4-bit Python Coder 👩💻 |
|
|
|
**TinyLlaMa 1.1B** fine-tuned on the **python_code_instructions_18k_alpaca Code instructions dataset** by using the **Axolot** library in 4-bit with [PEFT](https://github.com/huggingface/peft) library. |
|
|
|
## Pretrained description |
|
|
|
[TinyLlama-1.1B](https://huggingface.co/TinyLlama/TinyLlama-1.1B-intermediate-step-1431k-3T) |
|
|
|
The [TinyLlama project](https://github.com/jzhang38/TinyLlama) aims to pretrain a 1.1B Llama model on 3 trillion tokens. With some proper optimization, they can achieve this within a span of "just" 90 days using 16 A100-40G GPUs 🚀🚀. |
|
|
|
They adopted exactly the same architecture and tokenizer as Llama 2. This means TinyLlama can be plugged and played in many open-source projects built upon Llama. Besides, TinyLlama is compact with only 1.1B parameters. This compactness allows it to cater to a multitude of applications demanding a restricted computation and memory footprint. |
|
|
|
## Training data |
|
|
|
[python_code_instructions_18k_alpaca](https://huggingface.co/datasets/iamtarun/python_code_instructions_18k_alpaca) |
|
|
|
The dataset contains problem descriptions and code in python language. This dataset is taken from sahil2801/code_instructions_120k, which adds a prompt column in alpaca style. |
|
|
|
### Training hyperparameters |
|
|
|
The following `axolot` configuration was used during training: |
|
|
|
- load_in_8bit: false |
|
- load_in_4bit: true |
|
- strict: false |
|
|
|
- datasets: |
|
- path: iamtarun/python_code_instructions_18k_alpaca |
|
type: alpaca |
|
- dataset_prepared_path: |
|
- val_set_size: 0.05 |
|
- output_dir: ./qlora-out |
|
|
|
- adapter: qlora |
|
- sequence_len: 1096 |
|
- sample_packing: true |
|
- pad_to_sequence_len: true |
|
- lora_r: 32 |
|
- lora_alpha: 16 |
|
- lora_dropout: 0.05 |
|
- lora_target_modules: |
|
- lora_target_linear: true |
|
- lora_fan_in_fan_out: |
|
- gradient_accumulation_steps: 1 |
|
- micro_batch_size: 1 |
|
- num_epochs: 2 |
|
- max_steps: |
|
- optimizer: paged_adamw_32bit |
|
- lr_scheduler: cosine |
|
- learning_rate: 0.0002 |
|
- train_on_inputs: false |
|
- group_by_length: false |
|
- bf16: false |
|
- fp16: true |
|
- tf32: false |
|
- gradient_checkpointing: true |
|
- logging_steps: 10 |
|
- flash_attention: false |
|
- warmup_steps: 10 |
|
- weight_decay: 0.0 |
|
|
|
### Framework versions |
|
- torch=="2.1.2" |
|
- flash-attn=="2.5.0" |
|
- deepspeed=="0.13.1" |
|
- axolotl=="0.4.0" |
|
|
|
|
|
### Example of usage |
|
|
|
```py |
|
import torch |
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
model_id = "edumunozsala/TinyLlama-1431k-python-coder" |
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id) |
|
|
|
model = AutoModelForCausalLM.from_pretrained(model_id, load_in_4bit=True, torch_dtype=torch.float16, |
|
device_map="auto") |
|
|
|
instruction="Write a Python function to display the first and last elements of a list." |
|
input="" |
|
|
|
prompt = f"""### Instruction: |
|
Use the Task below and the Input given to write the Response, which is a programming code that can solve the Task. |
|
|
|
### Task: |
|
{instruction} |
|
|
|
### Input: |
|
{input} |
|
|
|
### Response: |
|
""" |
|
|
|
input_ids = tokenizer(prompt, return_tensors="pt", truncation=True).input_ids.cuda() |
|
# with torch.inference_mode(): |
|
outputs = model.generate(input_ids=input_ids, max_new_tokens=100, do_sample=True, top_p=0.9,temperature=0.3) |
|
|
|
print(f"Prompt:\n{prompt}\n") |
|
print(f"Generated instruction:\n{tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0][len(prompt):]}") |
|
|
|
``` |
|
|
|
### Citation |
|
|
|
``` |
|
@misc {edumunozsala_2023, |
|
author = { {Eduardo Muñoz} }, |
|
title = { TinyLlama-1431k-python-coder }, |
|
year = 2024, |
|
url = { https://huggingface.co/edumunozsala/TinyLlama-1431k-python-coder }, |
|
publisher = { Hugging Face } |
|
} |
|
``` |