--- 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 } } ```